From 8fd5bfd56567b51efa48e2eac26278bfacbf275a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 22 Jun 2025 22:08:19 +0800 Subject: [PATCH 001/619] Fix inverted "Adaptor containers" in "C++ standard library header files" topic --- docs/standard-library/cpp-standard-library-header-files.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/cpp-standard-library-header-files.md b/docs/standard-library/cpp-standard-library-header-files.md index a0eaf3e4630..0a715110332 100644 --- a/docs/standard-library/cpp-standard-library-header-files.md +++ b/docs/standard-library/cpp-standard-library-header-files.md @@ -58,7 +58,7 @@ Header files for the C++ standard library and extensions, by category. |Sequence containers|[``](array.md), [``](deque.md), [``](forward-list.md), [``](list.md), [``](vector.md)| |Ordered associative containers| [``](map.md), [``](set.md)| |Unordered associative containers|[``](unordered-map.md), [``](unordered-set.md)| -|Adaptor containers|[``](queue.md), [``](stack.md)| +|Container adaptors|[``](queue.md), [``](stack.md)| |[Errors and exception handling](../cpp/errors-and-exception-handling-modern-cpp.md)|[``](exception.md), [``](stdexcept.md), [``](system-error.md)| |[I/O and formatting](../text/string-and-i-o-formatting-modern-cpp.md)|[``](filesystem.md), [``](fstream.md), [``](iomanip.md), [``](ios.md), [``](iosfwd.md), [``](iostream.md), [``](istream.md), [``](ostream.md), [``](sstream.md), [``](streambuf.md), [``](strstream.md)| |Iterators|[``](iterator.md)| From 962e9ebd5624fa0a0361ec2af7c3657cb52c887c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 22 Jun 2025 22:14:48 +0800 Subject: [PATCH 002/619] Update superscript entries in "C++ standard library header files" topic --- docs/standard-library/cpp-standard-library-header-files.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/cpp-standard-library-header-files.md b/docs/standard-library/cpp-standard-library-header-files.md index 0a715110332..0472fb61227 100644 --- a/docs/standard-library/cpp-standard-library-header-files.md +++ b/docs/standard-library/cpp-standard-library-header-files.md @@ -41,9 +41,11 @@ Header files for the C++ standard library and extensions, by category. 11 Added in the C++11 standard.\ 14 Added in the C++14 standard.\ 17 Added in the C++17 standard.\ -20 Added in the draft C++20 standard.\ +20 Added in the C++20 standard.\ +23 Added in the C++23 standard.\ +26 Added in the draft C++26 standard.\ a Deprecated in the C++17 standard.\ -b Removed in the draft C++20 standard.\ +b Removed in the C++20 standard.\ c Deprecated in the C++98 standard. ::: moniker-end From 3c4f9b1abab29cc4b7c1baac1690a5ae8af98a35 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 22 Jun 2025 22:15:46 +0800 Subject: [PATCH 003/619] Resolve incorrect `` header in "C++ standard library header files" topic --- docs/standard-library/cpp-standard-library-header-files.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/cpp-standard-library-header-files.md b/docs/standard-library/cpp-standard-library-header-files.md index 0472fb61227..80d71c4feb2 100644 --- a/docs/standard-library/cpp-standard-library-header-files.md +++ b/docs/standard-library/cpp-standard-library-header-files.md @@ -28,7 +28,7 @@ Header files for the C++ standard library and extensions, by category. | General utilities | [``](any.md)17, [``](bit.md)20, [``](bitset.md), [``](cstdlib.md), [``](execution.md)17, [``](functional.md), [``](memory.md), [``](memory-resource.md)17, [``](optional.md)17, [``](ratio.md)11, [``](scoped-allocator.md)11, [``](tuple.md)11, [``](type-traits.md)11, [``](typeindex.md)11, [``](utility.md), [``](variant.md)17 | | [I/O and formatting](../text/string-and-i-o-formatting-modern-cpp.md) | [``](cinttypes.md)11, [``](cstdio.md), [``](filesystem.md)17, [``](fstream.md), [``](iomanip.md), [``](ios.md), [``](iosfwd.md), [``](iostream.md), [``](istream.md), [``](ostream.md), [``](sstream.md), [``](streambuf.md), [``](strstream.md)c, ``20 | | Iterators | [``](iterator.md) | -| Language support | [``](cfloat.md), [``](climits.md), [``](codecvt.md)11 a, ``20, ``20, ``20, [``](csetjmp.md), [``](csignal.md), [``](cstdarg.md), [``](cstddef.md), [``](cstdint.md)11, [``](cstdlib.md), [``](exception.md), [``](initializer-list.md)11, [``](limits.md), [``](new.md), [``](typeinfo.md), ``20 | +| Language support | [``](cfloat.md), [``](climits.md), [``](codecvt.md)11 a, ``20, ``26, ``20, [``](csetjmp.md), [``](csignal.md), [``](cstdarg.md), [``](cstddef.md), [``](cstdint.md)11, [``](cstdlib.md), [``](exception.md), [``](initializer-list.md)11, [``](limits.md), [``](new.md), [``](typeinfo.md), ``20 | | Localization | [``](clocale.md), [``](codecvt.md)11 a, [``](cvt-wbuffer.md), [``](cvt-wstring.md), [``](locale.md) | | Math and numerics | [``](bit.md)20, [``](cfenv.md)11, [``](cmath.md), [``](complex.md), [``](cstdlib.md), [``](limits.md), [``](numeric.md), [``](random.md)11, [``](ratio.md)11, [``](valarray.md) | | [Memory management](../cpp/smart-pointers-modern-cpp.md) | [``](allocators-header.md), [``](memory.md), [``](memory-resource.md)17, [``](new.md), [``](scoped-allocator.md)11 | From 5d16576bdcd39d097ea02ad73e2586857d38e6ee Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 22 Jun 2025 23:09:02 +0800 Subject: [PATCH 004/619] Add bunch of new headers in "C++ standard library header files" topic --- .../cpp-standard-library-header-files.md | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/docs/standard-library/cpp-standard-library-header-files.md b/docs/standard-library/cpp-standard-library-header-files.md index 80d71c4feb2..8244417e501 100644 --- a/docs/standard-library/cpp-standard-library-header-files.md +++ b/docs/standard-library/cpp-standard-library-header-files.md @@ -18,24 +18,25 @@ Header files for the C++ standard library and extensions, by category. | Atomic operations | [``](atomic.md)11 | | C library wrappers | [``](cassert.md), [``](ccomplex.md)11 a b, [``](cctype.md), [``](cerrno.md), [``](cfenv.md)11, [``](cfloat.md), [``](cinttypes.md)11, [``](ciso646.md)b, [``](climits.md), [``](clocale.md), [``](cmath.md), [``](csetjmp.md), [``](csignal.md), [``](cstdalign.md)11 a b, [``](cstdarg.md), [``](cstdbool.md)11 a b, [``](cstddef.md), [``](cstdint.md)11, [``](cstdio.md), [``](cstdlib.md), [``](cstring.md), [``](ctgmath.md)11 a b, [``](ctime.md), [``](cuchar.md)11, [``](cwchar.md), [``](cwctype.md) | | Concepts | ``20 | -| [Containers](stl-containers.md) | | -| Sequence containers | [``](array.md)11, [``](deque.md), [``](forward-list.md)11, [``](list.md), [``](vector.md) | +| [Containers](stl-containers.md) | ``26 | +| Sequence containers | [``](array.md)11, [``](deque.md), [``](forward-list.md)11, ``26, [``](list.md), [``](vector.md) | | Ordered associative containers| [``](map.md), [``](set.md) | | Unordered associative containers | [``](unordered-map.md)11, [``](unordered-set.md)11 | -| Container adaptors | [``](queue.md), [``](stack.md) | -| Container views | [``](span.md)20 | +| Container adaptors | ``23, ``23, [``](queue.md), [``](stack.md) | +| Container views | ``23, [``](span.md)20 | +| Diagnostics | ``26, ``23 | | [Errors and exception handling](../cpp/errors-and-exception-handling-modern-cpp.md) | [``](cassert.md), [``](exception.md), [``](stdexcept.md), [``](system-error.md)11 | -| General utilities | [``](any.md)17, [``](bit.md)20, [``](bitset.md), [``](cstdlib.md), [``](execution.md)17, [``](functional.md), [``](memory.md), [``](memory-resource.md)17, [``](optional.md)17, [``](ratio.md)11, [``](scoped-allocator.md)11, [``](tuple.md)11, [``](type-traits.md)11, [``](typeindex.md)11, [``](utility.md), [``](variant.md)17 | -| [I/O and formatting](../text/string-and-i-o-formatting-modern-cpp.md) | [``](cinttypes.md)11, [``](cstdio.md), [``](filesystem.md)17, [``](fstream.md), [``](iomanip.md), [``](ios.md), [``](iosfwd.md), [``](iostream.md), [``](istream.md), [``](ostream.md), [``](sstream.md), [``](streambuf.md), [``](strstream.md)c, ``20 | +| General utilities | [``](any.md)17, [``](bit.md)20, [``](bitset.md), [``](cstdlib.md), [``](execution.md)17, ``23, [``](functional.md), [``](memory.md), [``](memory-resource.md)17, [``](optional.md)17, [``](ratio.md)11, [``](scoped-allocator.md)11, [``](tuple.md)11, [``](type-traits.md)11, [``](typeindex.md)11, [``](utility.md), [``](variant.md)17 | +| [I/O and formatting](../text/string-and-i-o-formatting-modern-cpp.md) | [``](cinttypes.md)11, [``](cstdio.md), [``](filesystem.md)17, ``20, [``](fstream.md), [``](iomanip.md), [``](ios.md), [``](iosfwd.md), [``](iostream.md), [``](istream.md), [``](ostream.md), ``23, ``23, [``](sstream.md), [``](streambuf.md), [``](strstream.md)c, ``20 | | Iterators | [``](iterator.md) | -| Language support | [``](cfloat.md), [``](climits.md), [``](codecvt.md)11 a, ``20, ``26, ``20, [``](csetjmp.md), [``](csignal.md), [``](cstdarg.md), [``](cstddef.md), [``](cstdint.md)11, [``](cstdlib.md), [``](exception.md), [``](initializer-list.md)11, [``](limits.md), [``](new.md), [``](typeinfo.md), ``20 | +| Language support | [``](cfloat.md), [``](climits.md), [``](codecvt.md)11 a, ``20, ``26, ``20, [``](csetjmp.md), [``](csignal.md), [``](cstdarg.md), [``](cstddef.md), [``](cstdint.md)11, [``](cstdlib.md), [``](exception.md), [``](initializer-list.md)11, [``](limits.md), [``](new.md), ``20, ``23, [``](typeinfo.md), ``20 | | Localization | [``](clocale.md), [``](codecvt.md)11 a, [``](cvt-wbuffer.md), [``](cvt-wstring.md), [``](locale.md) | -| Math and numerics | [``](bit.md)20, [``](cfenv.md)11, [``](cmath.md), [``](complex.md), [``](cstdlib.md), [``](limits.md), [``](numeric.md), [``](random.md)11, [``](ratio.md)11, [``](valarray.md) | -| [Memory management](../cpp/smart-pointers-modern-cpp.md) | [``](allocators-header.md), [``](memory.md), [``](memory-resource.md)17, [``](new.md), [``](scoped-allocator.md)11 | -| Multithreading | [``](atomic.md)11, [``](condition-variable.md)11, [``](future.md)11, [``](mutex.md)11, [``](shared-mutex.md)14, [``](thread.md)11 | -| Ranges | [``](ranges.md)20 | +| Math and numerics | [``](bit.md)20, [``](cfenv.md)11, [``](cmath.md), [``](complex.md), [``](cstdlib.md), [``](limits.md), ``26, ``20, [``](numeric.md), [``](random.md)11, [``](ratio.md)11, ``26, [``](valarray.md) | +| [Memory management](../cpp/smart-pointers-modern-cpp.md) | [``](allocators-header.md), ``26, [``](memory.md), [``](memory-resource.md)17, [``](new.md), [``](scoped-allocator.md)11 | +| Multithreading | [``](atomic.md)11, ``20, [``](condition-variable.md)11, [``](future.md)11, ``20, [``](mutex.md)11, ``26, ``20, [``](shared-mutex.md)14, ``20, [``](thread.md)11 | +| Ranges | ``23, [``](ranges.md)20 | | Regular expressions | [``](regex.md)11 | -| Strings and character data | [``](charconv.md)17, [``](cctype.md), [``](cstdlib.md), [``](cstring.md), [``](cuchar.md)11, [``](cwchar.md), [``](cwctype.md), [``](regex.md)11, [``](string.md), [``](string-view.md)17 | +| Strings and character data | [``](charconv.md)17, [``](cctype.md), [``](cstdlib.md), [``](cstring.md), [``](cuchar.md)11, [``](cwchar.md), [``](cwctype.md), [``](regex.md)11, [``](string.md), [``](string-view.md)17, ``26 | | Time | [``](chrono.md)11, [``](ctime.md) | 11 Added in the C++11 standard.\ From 7c5ae5735b24cd307ea226318376436ddb58f160 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 22 Jun 2025 23:09:34 +0800 Subject: [PATCH 005/619] Update `ms.date` for "C++ standard library header files" topic --- docs/standard-library/cpp-standard-library-header-files.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/cpp-standard-library-header-files.md b/docs/standard-library/cpp-standard-library-header-files.md index 8244417e501..0f56590a4ea 100644 --- a/docs/standard-library/cpp-standard-library-header-files.md +++ b/docs/standard-library/cpp-standard-library-header-files.md @@ -1,7 +1,7 @@ --- title: "C++ standard library header files" description: "C++ standard library header files, categorized" -ms.date: 08/31/2020 +ms.date: 06/22/2025 helpviewer_keywords: ["header files, C++ Standard Library", "C++ Standard Library, header files"] --- # C++ standard library header files From 55a4444bc5078da4c9e19372984f434b4412af8e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 9 Jul 2025 18:56:11 +0800 Subject: [PATCH 006/619] Add properties and options in "C/C++ Property Pages" topic --- docs/build/reference/c-cpp-prop-page.md | 48 ++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/docs/build/reference/c-cpp-prop-page.md b/docs/build/reference/c-cpp-prop-page.md index 4f92e38d17f..39752e27012 100644 --- a/docs/build/reference/c-cpp-prop-page.md +++ b/docs/build/reference/c-cpp-prop-page.md @@ -56,6 +56,10 @@ Specifies the type of debugging information generated by the compiler. This pro Adds supporting code for enabling [Just My Code](/visualstudio/debugger/just-my-code) debugging in this compilation unit. Sets [`/JMC`](jmc.md). +### Support C++ Dynamic Debugging + +(Preview) Sets compiler flag [`/dynamicdeopt`](dynamic-deopt.md) to turn on [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging). Place deoptimized breakpoints and step in anywhere with on-demand function deoptimization. Use this mode for debugging optimized code. + ### Common Language RunTime Support Use the .NET runtime service. This switch is incompatible with some other switches; see the documentation on the [`/clr`](clr-common-language-runtime-compilation.md) family of switches for details. @@ -118,6 +122,10 @@ Enable multi-processor compilation. Sets the [`/MP`](mp-build-with-multiple-proc Compiles and links the program with AddressSanitizer instrumentation. This property currently supports x86 and x64 target builds. Sets the [`/fsanitize`](fsanitize.md) compiler option. +### Enable Fuzzer Support (Experimental) + +Compiles programs with the Fuzzer. Enable AddressSanitizer for best results. Currently available for x86 and x64 builds. Sets [`/fsanitize=fuzzer`](fsanitize.md). + ## C/C++ Optimization Properties ### Optimization @@ -199,6 +207,10 @@ Preprocess without #line directives. Suppresses comment strip from source code; requires setting at least one of the **Preprocessing** options. Sets [`/C`](c-preserve-comments-during-preprocessing.md). +### Use Standard Conforming Preprocessor + +Use a standard conforming preprocessor ([`/Zc:preprocessor`](zc-preprocessor.md)). Currently implied by [`/std:c11`](std-specify-language-standard-version.md) and later versions. To use legacy preprocessor set this property to 'No'. + ## C/C++ Code Generation Properties ### Enable String Pooling @@ -298,6 +310,10 @@ Enable use of instructions found on processors that support enhanced instruction - **No Enhanced Instructions** - No Enhanced Instructions. Sets **`/arch:IA32`** - **Not Set** - Not Set. +### Enable Vector Length + +Enable choosing vector length for [`/arch:AVX512`](arch-x86.md) and [`/arch:AVX10.x`](arch-x86.md) flags. Allowed values are 256 and 512 bits (X86/X64). + ### Floating Point Model Sets the floating point model. Sets [`/fp:precise`, `/fp:strict`, `/fp:fast`](fp-specify-floating-point-behavior.md). @@ -325,6 +341,18 @@ Spectre mitigations for CVE 2017-5753. Sets [`/Qspectre`](qspectre.md). - **Enabled** - Enable Spectre mitigation feature for CVE 2017-5753 - **Disabled** - Not Set. +### Enable Intel JCC Erratum Mitigation + +Software mitigation for the performance impact caused by the Intel JCC erratum microcode update. Sets [`/QIntel-jcc-erratum`](qintel-jcc-erratum.md). + +### Enable EH Continuation Metadata + +Generates a sorted list of all the valid exception handling continuation targets for a binary, used during runtime for RIP validation. Currently available for x64 builds. Sets [`/guard:ehcont`](guard-enable-eh-continuation-metadata.md). + +### Enable Signed Returns + +Enables signed returns which help detect and prevent attempts to dispatch to illegal blocks from function returns. Currently available for ARM64 builds. Sets `/guard:signret`. + ## C/C++ Language Properties ### Disable Language Extensions @@ -365,7 +393,8 @@ Determines the C++ language standard that the compiler enables. The default valu - **ISO C++14 Standard (/std:c++14)** - **ISO C++17 Standard (/std:c++17)** - **ISO C++20 Standard (/std:c++20)** -- **Preview - Features from the Latest C++ Working Draft (/std:c++latest)** +- **Preview - ISO C++23 Standard (/std:c++23preview)** +- **Preview - Features from the Latest C++ Working Draft (/std:c++latest)** ### C Language Standard @@ -376,6 +405,7 @@ Determines the C language standard that the compiler enables. The default value - **Default (Legacy MSVC)** - **ISO C11 Standard (/std:c11)** - **ISO C17 (2018) Standard (/std:c17)** +- **Preview - Features from the Latest C Working Draft (/std:clatest)** ### Conformance mode @@ -435,6 +465,14 @@ Causes the output file to be created in UTF-8 format. Specifies relative path or name for ASM listing file; can be file or directory name. Sets [`/Fa`](fa-fa-listing-file.md). +### Module Output File Name + +Module or header unit output (BMI) file location; can be file or directory name. Sets [`/ifcOutput[name]`](ifc-output.md). + +### Module Dependencies File Name + +Specifies the path and/or name of the generated module dependencies file. Sets [`/scanDependencies[path]`](scandependencies.md). + ### Object File Name Specifies a name to override the default object file name; can be file or directory name. Sets [`/Fo`](fo-object-file-name.md). @@ -451,6 +489,14 @@ Specifies that the compiler should generate XML documentation comment files (.XD Specifies the name of the generated XML documentation files; can be file or directory name. Sets [`/doc:`\](doc-process-documentation-comments-c-cpp.md). +### Generate Source Dependencies File + +Generates a json file with the list of all files the compiler used for the compilation of the source. Sets [`/sourceDependencies`](sourcedependencies.md). + +### Source Dependencies File Name + +Specifies the path and/or name of the generated source dependencies file. Sets [`/sourceDependencies[path]`](sourcedependencies.md). + ## C/C++ Browse Information Properties ### Enable Browse Information From 134a4915a3c52dceb0ab95b16193844d39ffe53d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 9 Jul 2025 18:59:46 +0800 Subject: [PATCH 007/619] Standardize level 2 headings in "C/C++ Property Pages" topic --- docs/build/reference/c-cpp-prop-page.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/c-cpp-prop-page.md b/docs/build/reference/c-cpp-prop-page.md index 39752e27012..fb40bf2a4aa 100644 --- a/docs/build/reference/c-cpp-prop-page.md +++ b/docs/build/reference/c-cpp-prop-page.md @@ -507,7 +507,7 @@ Specifies level of browse information in *`.bsc`* file. Sets [`/FR`](fr-fr-creat Specifies optional name for browser information file. Sets [`/FR`\](fr-fr-create-dot-sbr-file.md). -## External Includes +## C/C++ External Includes Properties ### Treat Files Included with Angle Brackets as External From 8e875c3e9839fc0cbb9e5c840cea02ee38cb9c7c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 9 Jul 2025 19:08:03 +0800 Subject: [PATCH 008/619] Add "external-includes" anchor in "C/C++ Property Pages" topic --- docs/build/reference/c-cpp-prop-page.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/c-cpp-prop-page.md b/docs/build/reference/c-cpp-prop-page.md index fb40bf2a4aa..aaec4a7fab5 100644 --- a/docs/build/reference/c-cpp-prop-page.md +++ b/docs/build/reference/c-cpp-prop-page.md @@ -507,7 +507,7 @@ Specifies level of browse information in *`.bsc`* file. Sets [`/FR`](fr-fr-creat Specifies optional name for browser information file. Sets [`/FR`\](fr-fr-create-dot-sbr-file.md). -## C/C++ External Includes Properties +## C/C++ External Includes Properties ### Treat Files Included with Angle Brackets as External From 5fa546c94c78aa340127d29457d4593d57ff66bf Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 11 Jul 2025 16:51:18 +0800 Subject: [PATCH 009/619] Add properties in "Linker Property Pages" topic --- docs/build/reference/linker-property-pages.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/build/reference/linker-property-pages.md b/docs/build/reference/linker-property-pages.md index 27a8a52d11c..316eb3ed75d 100644 --- a/docs/build/reference/linker-property-pages.md +++ b/docs/build/reference/linker-property-pages.md @@ -37,6 +37,10 @@ The [`/VERSION`](version-version-information.md) option tells the linker to put Enables incremental linking. ([`/INCREMENTAL, /INCREMENTAL:NO`](incremental-link-incrementally.md)) +### Incremental Link Database File + +Specifies incremental link database file location. ([`/ILK:[name]`](ilk-name-incremental-database-file.md)) + ### Suppress Startup Banner The [`/NOLOGO`](nologo-suppress-startup-banner-linker.md) option prevents display of the copyright message and version number. @@ -223,6 +227,10 @@ The [`/MAPINFO`](mapinfo-include-information-in-mapfile.md) option tells the lin [`/ASSEMBLYDEBUG`](assemblydebug-add-debuggableattribute.md) emits the `DebuggableAttribute` attribute with debug information tracking and disables JIT optimizations. +### Support C++ Dynamic Debugging + +(Preview) Set linker flag [`/DYNAMICDEOPT`](dynamic-deopt-linker.md) to turn on [C++ Dynamic Debugging](/visualstudio/debugger/cpp-dynamic-debugging). Place deoptimized breakpoints and step in anywhere with on-demand function deoptimization. Use this mode for debugging optimized code. + ## System Property Page ### SubSystem @@ -319,6 +327,10 @@ Specifies link-time code generation. ([`/LTCG`](ltcg-link-time-code-generation.m - **Profile Guided Optimization - Optimization** - Specifies that the linker should use the profile data created after running the instrumented binary to create an optimized image. - **Profile Guided Optimization - Update** - Allows and tracks list of input files to be added or modified from what was specified in the `:PGINSTRUMENT` phase. +### Link Time Code Generation Object File + +Specifies *`.iobj`* file location. ([`/LTCGOUT:[name]`](ltcgout.md)) + ## Embedded IDL Property Page ### MIDL Commands @@ -504,6 +516,10 @@ The [`/ALIGN`](align-section-alignment.md) option specifies the alignment of eac - **Disabled** - Disable **`/CLRSupportLastError`**. - **System DLLs Only** - Enable **`/CLRSupportLastError`** for system DLLs only. +### CET Shadow Stack Compatible + +Specifies whether to mark an executable image as compatible with Control-flow Enforcement Technology (CET) Shadow Stack. ([`/CETCOMPAT`](cetcompat.md)) + ### Image Has Safe Exception Handlers When [`/SAFESEH`](safeseh-image-has-safe-exception-handlers.md) is specified, the linker will only produce an image if it can also produce a table of the image's safe exception handlers. This table specifies for the operating system which exception handlers are valid for the image. From 95ee0740fbfb76c7e33c7d13f95b20d5dba37bde Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 22 Jul 2025 22:03:12 +0800 Subject: [PATCH 010/619] Add "Remarks" and "Example" headings in C4324 warning reference --- .../compiler-warnings/compiler-warning-level-4-c4324.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md index f2f4076e29a..883f7ca1807 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md @@ -9,8 +9,12 @@ helpviewer_keywords: ["C4324"] > '*structname*': structure was padded due to alignment specifier +## Remarks + Padding was added at the end of a structure because you specified an alignment specifier, such as [__declspec(align)](../../cpp/align-cpp.md). +## Example + For example, the following code generates C4324: ```cpp From 51f5892904b1f11563cb5043114be9359732d9d6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 22 Jul 2025 22:11:30 +0800 Subject: [PATCH 011/619] Update C4324 warning message --- .../compiler-warnings/compiler-warning-level-4-c4324.md | 2 +- .../compiler-warnings/compiler-warnings-c4200-through-c4399.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md index 883f7ca1807..3d6858e59f8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4324"] --- # Compiler Warning (level 4) C4324 -> '*structname*': structure was padded due to alignment specifier +> '*type*': structure was padded due to alignment specifier ## Remarks diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md index 08698aef3ad..e2115eba561 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md @@ -113,7 +113,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |Compiler warning (level 1) C4321|automatically generating an IID for interface '*interface*'| |Compiler warning (level 1) C4322|automatically generating a CLSID for class '*class*'| |Compiler warning (level 1) C4323|re-using registered CLSID for class '*class*'| -|[Compiler warning (level 4) C4324](compiler-warning-level-4-c4324.md)|'*structname*': structure was padded due to alignment specifier| +|[Compiler warning (level 4) C4324](compiler-warning-level-4-c4324.md)|'*type*': structure was padded due to alignment specifier| |[Compiler warning (level 1) C4325](compiler-warning-level-1-c4325.md)|attributes for standard section '*section*' ignored| |[Compiler warning (level 1) C4326](compiler-warning-level-1-c4326.md)|return type of '*function*' should be '*type1*' instead of '*type2*'| |Compiler warning C4327|'*assignment*': indirection alignment of LHS ('*alignment1*') is greater than RHS ('*alignment2*')| From f0aa1f53a5862e26692355fc13af9903abe2b13f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 22 Jul 2025 22:16:55 +0800 Subject: [PATCH 012/619] Add details to remarks in C4324 warning reference --- .../compiler-warnings/compiler-warning-level-4-c4324.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md index 3d6858e59f8..a7bb362f2e7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C4324"] ## Remarks -Padding was added at the end of a structure because you specified an alignment specifier, such as [__declspec(align)](../../cpp/align-cpp.md). +Padding was added at the end of a class/struct/union because you specified an alignment specifier, such as [`alignas`](../../cpp/alignas-specifier.md) or [`__declspec(align)`](../../cpp/align-cpp.md). ## Example From ebbeb2497c913f46ba5fee01725f235614d718a5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 22 Jul 2025 22:37:23 +0800 Subject: [PATCH 013/619] Improve example in C4324 warning reference --- .../compiler-warning-level-4-c4324.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md index a7bb362f2e7..effab81827e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md @@ -15,17 +15,21 @@ Padding was added at the end of a class/struct/union because you specified an al ## Example -For example, the following code generates C4324: +For example, `S1` and `S2` generates C4324 because padding is added when the specified alignment is greater than the default alignment of `1` and `4` respectively: ```cpp // C4324.cpp -// compile with: /W4 -struct __declspec(align(32)) A +// compile with: /W4 /c + +struct alignas(4) S1 {}; // C4324 + +struct alignas(8) S2 { - char a; + int i; }; // C4324 -int main() +struct alignas(4) S3 { -} + int i; +}; // OK ``` From 683a6350d2623b00fa8a88c08c58e37489632715 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 22 Jul 2025 22:38:21 +0800 Subject: [PATCH 014/619] Update metadata in C4324 warning reference --- .../compiler-warnings/compiler-warning-level-4-c4324.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md index effab81827e..5aed86571e3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 4) C4324" title: "Compiler Warning (level 4) C4324" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 4) C4324" +ms.date: 07/22/2025 f1_keywords: ["C4324"] helpviewer_keywords: ["C4324"] --- From 669f966db3cf4a3f30dc574523bf54266189730e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 15:52:36 +0800 Subject: [PATCH 015/619] Add backticks in "Dynamically Determining Columns Returned to the Consumer" --- ...ically-determining-columns-returned-to-the-consumer.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md b/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md index 9ae135a598a..3233a847e10 100644 --- a/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md +++ b/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md @@ -7,9 +7,9 @@ ms.assetid: 58522b7a-894e-4b7d-a605-f80e900a7f5f --- # Dynamically Determining Columns Returned to the Consumer -The PROVIDER_COLUMN_ENTRY macros normally handle the `IColumnsInfo::GetColumnsInfo` call. However, because a consumer might choose to use bookmarks, the provider must be able to change the columns returned depending on whether the consumer asks for a bookmark. +The `PROVIDER_COLUMN_ENTRY` macros normally handle the `IColumnsInfo::GetColumnsInfo` call. However, because a consumer might choose to use bookmarks, the provider must be able to change the columns returned depending on whether the consumer asks for a bookmark. -To handle the `IColumnsInfo::GetColumnsInfo` call, delete the PROVIDER_COLUMN_MAP, which defines a function `GetColumnInfo`, from the `CCustomWindowsFile` user record in *Custom*RS.h and replace it with the definition for your own `GetColumnInfo` function: +To handle the `IColumnsInfo::GetColumnsInfo` call, delete the `PROVIDER_COLUMN_MAP`, which defines a function `GetColumnInfo`, from the `CCustomWindowsFile` user record in *Custom*RS.h and replace it with the definition for your own `GetColumnInfo` function: ```cpp //////////////////////////////////////////////////////////////////////// @@ -36,7 +36,7 @@ Next, implement the `GetColumnInfo` function in *Custom*RS.cpp, as shown in the `GetColumnInfo` checks first to see if the OLE DB property `DBPROP_BOOKMARKS` is set. To get the property, `GetColumnInfo` uses a pointer (`pRowset`) to the rowset object. The `pThis` pointer represents the class that created the rowset, which is the class where the property map is stored. `GetColumnInfo` typecasts the `pThis` pointer to an `RCustomRowset` pointer. -To check for the `DBPROP_BOOKMARKS` property, `GetColumnInfo` uses the `IRowsetInfo` interface, which you can get by calling `QueryInterface` on the `pRowset` interface. As an alternative, you can use an ATL [CComQIPtr](../../atl/reference/ccomqiptr-class.md) method instead. +To check for the `DBPROP_BOOKMARKS` property, `GetColumnInfo` uses the `IRowsetInfo` interface, which you can get by calling `QueryInterface` on the `pRowset` interface. As an alternative, you can use an ATL [`CComQIPtr`](../../atl/reference/ccomqiptr-class.md) method instead. ```cpp //////////////////////////////////////////////////////////////////// @@ -97,7 +97,7 @@ ATLCOLUMNINFO* CCustomWindowsFile::GetColumnInfo(void* pThis, ULONG* pcCols) } ``` -This example uses a static array to hold the column information. If the consumer doesn't want the bookmark column, one entry in the array is unused. To handle the information, you create two array macros: ADD_COLUMN_ENTRY and ADD_COLUMN_ENTRY_EX. ADD_COLUMN_ENTRY_EX takes an extra parameter, *flags*, that is needed if you designate a bookmark column. +This example uses a static array to hold the column information. If the consumer doesn't want the bookmark column, one entry in the array is unused. To handle the information, you create two array macros: `ADD_COLUMN_ENTRY` and `ADD_COLUMN_ENTRY_EX`. `ADD_COLUMN_ENTRY_EX` takes an extra parameter, *`flags`*, that is needed if you designate a bookmark column. ```cpp //////////////////////////////////////////////////////////////////////// From cdd96ad17fa2271513b474d65f5b7fc4cd5353bf Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 15:55:28 +0800 Subject: [PATCH 016/619] Fix trailing spaces syntax errors in "Dynamically Determining Columns Returned to the Consumer" --- ...mining-columns-returned-to-the-consumer.md | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md b/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md index 3233a847e10..1dad936b131 100644 --- a/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md +++ b/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md @@ -103,29 +103,29 @@ This example uses a static array to hold the column information. If the consumer //////////////////////////////////////////////////////////////////////// // CustomRS.h -#define ADD_COLUMN_ENTRY(ulCols, name, ordinal, colSize, type, precision, scale, guid, dataClass, member) \ - _rgColumns[ulCols].pwszName = (LPOLESTR)name; \ - _rgColumns[ulCols].pTypeInfo = (ITypeInfo*)NULL; \ - _rgColumns[ulCols].iOrdinal = (ULONG)ordinal; \ - _rgColumns[ulCols].dwFlags = 0; \ - _rgColumns[ulCols].ulColumnSize = (ULONG)colSize; \ - _rgColumns[ulCols].wType = (DBTYPE)type; \ - _rgColumns[ulCols].bPrecision = (BYTE)precision; \ - _rgColumns[ulCols].bScale = (BYTE)scale; \ - _rgColumns[ulCols].cbOffset = offsetof(dataClass, member); +#define ADD_COLUMN_ENTRY(ulCols, name, ordinal, colSize, type, precision, scale, guid, dataClass, member) \ + _rgColumns[ulCols].pwszName = (LPOLESTR)name; \ + _rgColumns[ulCols].pTypeInfo = (ITypeInfo*)NULL; \ + _rgColumns[ulCols].iOrdinal = (ULONG)ordinal; \ + _rgColumns[ulCols].dwFlags = 0; \ + _rgColumns[ulCols].ulColumnSize = (ULONG)colSize; \ + _rgColumns[ulCols].wType = (DBTYPE)type; \ + _rgColumns[ulCols].bPrecision = (BYTE)precision; \ + _rgColumns[ulCols].bScale = (BYTE)scale; \ + _rgColumns[ulCols].cbOffset = offsetof(dataClass, member); -#define ADD_COLUMN_ENTRY_EX(ulCols, name, ordinal, colSize, type, precision, scale, guid, dataClass, member, flags) \ - _rgColumns[ulCols].pwszName = (LPOLESTR)name; \ - _rgColumns[ulCols].pTypeInfo = (ITypeInfo*)NULL; \ - _rgColumns[ulCols].iOrdinal = (ULONG)ordinal; \ - _rgColumns[ulCols].dwFlags = flags; \ - _rgColumns[ulCols].ulColumnSize = (ULONG)colSize; \ - _rgColumns[ulCols].wType = (DBTYPE)type; \ - _rgColumns[ulCols].bPrecision = (BYTE)precision; \ - _rgColumns[ulCols].bScale = (BYTE)scale; \ - _rgColumns[ulCols].cbOffset = offsetof(dataClass, member); \ - memset(&(_rgColumns[ulCols].columnid), 0, sizeof(DBID)); \ - _rgColumns[ulCols].columnid.uName.pwszName = (LPOLESTR)name; +#define ADD_COLUMN_ENTRY_EX(ulCols, name, ordinal, colSize, type, precision, scale, guid, dataClass, member, flags) \ + _rgColumns[ulCols].pwszName = (LPOLESTR)name; \ + _rgColumns[ulCols].pTypeInfo = (ITypeInfo*)NULL; \ + _rgColumns[ulCols].iOrdinal = (ULONG)ordinal; \ + _rgColumns[ulCols].dwFlags = flags; \ + _rgColumns[ulCols].ulColumnSize = (ULONG)colSize; \ + _rgColumns[ulCols].wType = (DBTYPE)type; \ + _rgColumns[ulCols].bPrecision = (BYTE)precision; \ + _rgColumns[ulCols].bScale = (BYTE)scale; \ + _rgColumns[ulCols].cbOffset = offsetof(dataClass, member); \ + memset(&(_rgColumns[ulCols].columnid), 0, sizeof(DBID)); \ + _rgColumns[ulCols].columnid.uName.pwszName = (LPOLESTR)name; ``` In the `GetColumnInfo` function, the bookmark macro is used like this: From 813a7d8f14ca17e7db30260866fb8f4c9625b72e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 15:57:34 +0800 Subject: [PATCH 017/619] Remove unneeded spaces in "Dynamically Determining Columns Returned to the Consumer" --- ...mining-columns-returned-to-the-consumer.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md b/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md index 1dad936b131..5cf5dd2434b 100644 --- a/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md +++ b/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md @@ -23,7 +23,7 @@ public: TCHAR szText[iSize]; TCHAR szCommand2[iSize]; TCHAR szText2[iSize]; - + static ATLCOLUMNINFO* GetColumnInfo(void* pThis, ULONG* pcCols); bool operator==(const CCustomWindowsFile& am) { @@ -45,27 +45,27 @@ ATLCOLUMNINFO* CCustomWindowsFile::GetColumnInfo(void* pThis, ULONG* pcCols) { static ATLCOLUMNINFO _rgColumns[5]; ULONG ulCols = 0; - + // Check the property flag for bookmarks; if it is set, set the zero // ordinal entry in the column map with the bookmark information. CCustomRowset* pRowset = (CCustomRowset*) pThis; CComQIPtr spRowsetProps = pRowset; - + CDBPropIDSet set(DBPROPSET_ROWSET); set.AddPropertyID(DBPROP_BOOKMARKS); DBPROPSET* pPropSet = NULL; ULONG ulPropSet = 0; HRESULT hr; - + if (spRowsetProps) hr = spRowsetProps->GetProperties(1, &set, &ulPropSet, &pPropSet); - + if (pPropSet) { CComVariant var = pPropSet->rgProperties[0].vValue; CoTaskMemFree(pPropSet->rgProperties); CoTaskMemFree(pPropSet); - + if (SUCCEEDED(hr) && (var.boolVal == VARIANT_TRUE)) { ADD_COLUMN_ENTRY_EX(ulCols, OLESTR("Bookmark"), 0, sizeof(DWORD), @@ -74,7 +74,7 @@ ATLCOLUMNINFO* CCustomWindowsFile::GetColumnInfo(void* pThis, ULONG* pcCols) ulCols++; } } - + // Next, set the other columns up. ADD_COLUMN_ENTRY(ulCols, OLESTR("Command"), 1, 256, DBTYPE_STR, 0xFF, 0xFF, GUID_NULL, CCustomWindowsFile, szCommand) @@ -82,17 +82,17 @@ ATLCOLUMNINFO* CCustomWindowsFile::GetColumnInfo(void* pThis, ULONG* pcCols) ADD_COLUMN_ENTRY(ulCols, OLESTR("Text"), 2, 256, DBTYPE_STR, 0xFF, 0xFF, GUID_NULL, CCustomWindowsFile, szText) ulCols++; - + ADD_COLUMN_ENTRY(ulCols, OLESTR("Command2"), 3, 256, DBTYPE_STR, 0xFF, 0xFF, GUID_NULL, CCustomWindowsFile, szCommand2) ulCols++; ADD_COLUMN_ENTRY(ulCols, OLESTR("Text2"), 4, 256, DBTYPE_STR, 0xFF, 0xFF, GUID_NULL, CCustomWindowsFile, szText2) ulCols++; - + if (pcCols != NULL) *pcCols = ulCols; - + return _rgColumns; } ``` @@ -100,9 +100,9 @@ ATLCOLUMNINFO* CCustomWindowsFile::GetColumnInfo(void* pThis, ULONG* pcCols) This example uses a static array to hold the column information. If the consumer doesn't want the bookmark column, one entry in the array is unused. To handle the information, you create two array macros: `ADD_COLUMN_ENTRY` and `ADD_COLUMN_ENTRY_EX`. `ADD_COLUMN_ENTRY_EX` takes an extra parameter, *`flags`*, that is needed if you designate a bookmark column. ```cpp -//////////////////////////////////////////////////////////////////////// -// CustomRS.h - +//////////////////////////////////////////////////////////////////////// +// CustomRS.h + #define ADD_COLUMN_ENTRY(ulCols, name, ordinal, colSize, type, precision, scale, guid, dataClass, member) \ _rgColumns[ulCols].pwszName = (LPOLESTR)name; \ _rgColumns[ulCols].pTypeInfo = (ITypeInfo*)NULL; \ @@ -113,7 +113,7 @@ This example uses a static array to hold the column information. If the consumer _rgColumns[ulCols].bPrecision = (BYTE)precision; \ _rgColumns[ulCols].bScale = (BYTE)scale; \ _rgColumns[ulCols].cbOffset = offsetof(dataClass, member); - + #define ADD_COLUMN_ENTRY_EX(ulCols, name, ordinal, colSize, type, precision, scale, guid, dataClass, member, flags) \ _rgColumns[ulCols].pwszName = (LPOLESTR)name; \ _rgColumns[ulCols].pTypeInfo = (ITypeInfo*)NULL; \ From b01130388d97049a383b125cb5cd387540bba2f4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 15:59:09 +0800 Subject: [PATCH 018/619] Simplify redundant links and remove `br` element in "Dynamically Determining Columns Returned to the Consumer" --- ...ynamically-determining-columns-returned-to-the-consumer.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md b/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md index 5cf5dd2434b..1df579c68fa 100644 --- a/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md +++ b/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md @@ -136,8 +136,8 @@ ADD_COLUMN_ENTRY_EX(ulCols, OLESTR("Bookmark"), 0, sizeof(DWORD), DBCOLUMNFLAGS_ISBOOKMARK) ``` -You can now compile and run the enhanced provider. To test the provider, modify the test consumer as described in [Implementing a Simple Consumer](../../data/oledb/implementing-a-simple-consumer.md). Run the test consumer with the provider and verify that the test consumer retrieves the proper strings from the provider. +You can now compile and run the enhanced provider. To test the provider, modify the test consumer as described in [Implementing a Simple Consumer](implementing-a-simple-consumer.md). Run the test consumer with the provider and verify that the test consumer retrieves the proper strings from the provider. ## See also -[Enhancing the Simple Read-Only Provider](../../data/oledb/enhancing-the-simple-read-only-provider.md)
+[Enhancing the Simple Read-Only Provider](enhancing-the-simple-read-only-provider.md) From 5fa0a6d64f68d6b2e24860d18a2ff4c701320662 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 16:03:25 +0800 Subject: [PATCH 019/619] Update metadata in "Dynamically Determining Columns Returned to the Consumer" --- ...namically-determining-columns-returned-to-the-consumer.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md b/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md index 1df579c68fa..14175fae5ef 100644 --- a/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md +++ b/docs/data/oledb/dynamically-determining-columns-returned-to-the-consumer.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Dynamically Determining Columns Returned to the Consumer" title: "Dynamically Determining Columns Returned to the Consumer" -ms.date: "10/26/2018" +description: "Learn more about: Dynamically Determining Columns Returned to the Consumer" +ms.date: 10/26/2018 helpviewer_keywords: ["bookmarks [C++], dynamically determining columns", "dynamically determining columns [C++]"] -ms.assetid: 58522b7a-894e-4b7d-a605-f80e900a7f5f --- # Dynamically Determining Columns Returned to the Consumer From 60901939ba2ae298b932926b4239d18f460c381a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 16:40:47 +0800 Subject: [PATCH 020/619] Add blockquotes and update C2469 error message --- docs/error-messages/compiler-errors-1/compiler-error-c2469.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md index 46ce44d6ee3..d1ac4279e5c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md @@ -8,7 +8,7 @@ ms.assetid: 3814bdff-581a-4d3e-8b47-8de6887cea69 --- # Compiler Error C2469 -'operator': cannot allocate 'type' object +> '`new`': cannot allocate '`void`' objects An operator was passed an invalid type. From 7c39f00f34fb1b1361894637ea2e923b901b9e4f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 16:43:11 +0800 Subject: [PATCH 021/619] Add "Remarks" heading in C2469 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2469.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md index d1ac4279e5c..3464cd12422 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md @@ -10,6 +10,8 @@ ms.assetid: 3814bdff-581a-4d3e-8b47-8de6887cea69 > '`new`': cannot allocate '`void`' objects +## Remarks + An operator was passed an invalid type. The following sample generates C2469: From 6a33584d2768d1ef4e4d640021780907a3671949 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 16:52:00 +0800 Subject: [PATCH 022/619] Overhaul example in C2469 error reference --- .../compiler-errors-1/compiler-error-c2469.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md index 3464cd12422..e24b9e7ab90 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md @@ -14,12 +14,16 @@ ms.assetid: 3814bdff-581a-4d3e-8b47-8de6887cea69 An operator was passed an invalid type. -The following sample generates C2469: +## Example: Wrong allocation type + +Check if you meant to allocate `void` or some other type, such as `int`: ```cpp -// C2469.cpp -int main() { - int *i = new void; // C2469 - int *i = new int; // OK +// C2469_wrong_allocation_type.cpp + +int main() +{ + int* ptr1 = new void; // C2469 + int* ptr2 = new int; // OK } ``` From b6e51eae92bb0cc742d1aca318eb0c78d93f9cfb Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 17:02:00 +0800 Subject: [PATCH 023/619] Add new "Allocate untyped memory" example in C2469 error reference --- .../compiler-errors-1/compiler-error-c2469.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md index e24b9e7ab90..a2a397de8d2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md @@ -27,3 +27,17 @@ int main() int* ptr2 = new int; // OK } ``` + +## Example: Allocate untyped memory + +If you meant to allocate untyped memory, use `::operator new` instead: + +```cpp +// C2469_allocate_untyped_memory.cpp + +int main() +{ + void* ptr1 = new void; // C2469 + void* ptr2 = ::operator new(4); // OK +} +``` From eaa3c7e3944d7d1283d3b7c9a8a51a6c602a72d7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 17:03:27 +0800 Subject: [PATCH 024/619] Update remarks in C2469 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2469.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md index a2a397de8d2..ad0c366f2de 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md @@ -12,7 +12,7 @@ ms.assetid: 3814bdff-581a-4d3e-8b47-8de6887cea69 ## Remarks -An operator was passed an invalid type. +The [`new` operator](../../cpp/new-operator-cpp.md) was passed an invalid type. ## Example: Wrong allocation type From 72165c32f5bb6a6d7d12af15b0a783c23acf39f7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 17:04:11 +0800 Subject: [PATCH 025/619] Update metadata in C2469 error reference --- .../error-messages/compiler-errors-1/compiler-error-c2469.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md index ad0c366f2de..836e2ea2623 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C2469" title: "Compiler Error C2469" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C2469" +ms.date: 07/23/2025 f1_keywords: ["C2469"] helpviewer_keywords: ["C2469"] -ms.assetid: 3814bdff-581a-4d3e-8b47-8de6887cea69 --- # Compiler Error C2469 From e86f793296a089e32253019d0bffdd2b479beb48 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 18:11:44 +0800 Subject: [PATCH 026/619] Fix wrong sentence that implies `delete[]` can be used in place of `delete` in "Raw pointers (C++)" --- docs/cpp/raw-pointers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/raw-pointers.md b/docs/cpp/raw-pointers.md index c12c7051c64..babfbd1ea04 100644 --- a/docs/cpp/raw-pointers.md +++ b/docs/cpp/raw-pointers.md @@ -19,7 +19,7 @@ A pointer can also be *dereferenced* to retrieve the value of the object that it int j = *p; // dereference p to retrieve the value at its address ``` -A pointer can point to a typed object or to **`void`**. When a program allocates an object on the [heap](https://wikipedia.org/wiki/Heap) in memory, it receives the address of that object in the form of a pointer. Such pointers are called *owning pointers*. An owning pointer (or a copy of it) must be used to explicitly free the heap-allocated object when it's no longer needed. Failure to free the memory results in a *memory leak*, and renders that memory location unavailable to any other program on the machine. Memory allocated using **`new`** must be freed by using **`delete`** (or **`delete[]`**). For more information, see [`new` and `delete` operators](new-and-delete-operators.md). +A pointer can point to a typed object or to **`void`**. When a program allocates an object on the [heap](https://wikipedia.org/wiki/Heap) in memory, it receives the address of that object in the form of a pointer. Such pointers are called *owning pointers*. An owning pointer (or a copy of it) must be used to explicitly free the heap-allocated object when it's no longer needed. Failure to free the memory results in a *memory leak*, and renders that memory location unavailable to any other program on the machine. Memory allocated with **`new`** must be freed using **`delete`**, and memory allocated with **`new[]`** must be freed using **`delete[]`**. For more information, see [`new` and `delete` operators](new-and-delete-operators.md). ```cpp MyClass* mc = new MyClass(); // allocate object on the heap From e720bf9884cf492a38334363027f4fff1736cbac Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 18:21:59 +0800 Subject: [PATCH 027/619] Remove sentence that implies pointer arithmetic on `void*` is allowed in "Raw pointers (C++)" --- docs/cpp/raw-pointers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/raw-pointers.md b/docs/cpp/raw-pointers.md index babfbd1ea04..f6d8d4aed47 100644 --- a/docs/cpp/raw-pointers.md +++ b/docs/cpp/raw-pointers.md @@ -156,7 +156,7 @@ int main() } ``` -Certain arithmetic operations can be used on non-`const` pointers to make them point to another memory location. Pointers are incremented and decremented using the **`++`**, **`+=`**, **`-=`** and **`--`** operators. This technique can be used in arrays and is especially useful in buffers of untyped data. A `void*` gets incremented by the size of a **`char`** (1 byte). A typed pointer gets incremented by size of the type it points to. +Certain arithmetic operations can be used on non-`const` pointers to make them point to another memory location. Pointers are incremented and decremented using the **`++`**, **`+=`**, **`-=`** and **`--`** operators. This technique can be used in arrays and is especially useful in buffers of untyped data. A typed pointer gets incremented by size of the type it points to. The following example demonstrates how pointer arithmetic can be used to access individual pixels in a bitmap on Windows. Note the use of **`new`** and **`delete`**, and the dereference operator. From 66d88ddfb744e93e3c406c0ce9bcb23ab508f98c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 18:31:29 +0800 Subject: [PATCH 028/619] Add 2 `Output` code blocks in "Raw pointers (C++)" --- docs/cpp/raw-pointers.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/cpp/raw-pointers.md b/docs/cpp/raw-pointers.md index f6d8d4aed47..5b00104653c 100644 --- a/docs/cpp/raw-pointers.md +++ b/docs/cpp/raw-pointers.md @@ -156,6 +156,10 @@ int main() } ``` +```Output +1 2 3 4 5 +``` + Certain arithmetic operations can be used on non-`const` pointers to make them point to another memory location. Pointers are incremented and decremented using the **`++`**, **`+=`**, **`-=`** and **`--`** operators. This technique can be used in arrays and is especially useful in buffers of untyped data. A typed pointer gets incremented by size of the type it points to. The following example demonstrates how pointer arithmetic can be used to access individual pixels in a bitmap on Windows. Note the use of **`new`** and **`delete`**, and the dereference operator. @@ -332,6 +336,11 @@ int main() } ``` +```Output +hello world from MSVC +Good morning and hello world from MSVC +``` + ## See also [Smart pointers](smart-pointers-modern-cpp.md)\ From e0c3d3fd6cf87ca3bc5393f4d259cffa931b9046 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 18:34:23 +0800 Subject: [PATCH 029/619] Use idiomatic usage of `delete` in "Raw pointers (C++)" --- docs/cpp/raw-pointers.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/cpp/raw-pointers.md b/docs/cpp/raw-pointers.md index 5b00104653c..743e7f30384 100644 --- a/docs/cpp/raw-pointers.md +++ b/docs/cpp/raw-pointers.md @@ -119,8 +119,8 @@ int main() func_B(*pmc); pmc->print(); // "Erika, 3" (original not modified by function) - delete(pmc); // don't forget to give memory back to operating system! - // delete(pmc2); //crash! memory location was already deleted + delete pmc; // don't forget to give memory back to operating system! + // delete pmc2; //crash! memory location was already deleted } ``` @@ -268,7 +268,7 @@ int main() void* p = static_cast(mc); MyClass* mc2 = static_cast(p); std::cout << mc2->name << std::endl; // "Marian" - delete(mc); + delete mc; // use operator new to allocate untyped memory block void* pvoid = operator new(1000); From c3195c9abd56b46f616126b7ffdf54d4ddba8e40 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 23 Jul 2025 18:38:42 +0800 Subject: [PATCH 030/619] Fix incorrect delimiter in output comments for example in "Raw pointers (C++)" --- docs/cpp/raw-pointers.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/cpp/raw-pointers.md b/docs/cpp/raw-pointers.md index 743e7f30384..3c4d07c50e6 100644 --- a/docs/cpp/raw-pointers.md +++ b/docs/cpp/raw-pointers.md @@ -78,7 +78,7 @@ void func_B(MyClass mc) // This statement modifies only the local copy of mc. mc.num = 21; std::cout << "Local copy of mc:"; - mc.print(); // "Erika, 21" + mc.print(); // "Erika:21" } int main() @@ -99,25 +99,25 @@ int main() MyClass* pcopy = &mc; // Use the -> operator to access the object's public members - pmc->print(); // "Nick, 108" + pmc->print(); // "Nick:108" // Copy the pointer. Now pmc and pmc2 point to same object! MyClass* pmc2 = pmc; // Use copied pointer to modify the original object pmc2->name = "Erika"; - pmc->print(); // "Erika, 108" - pmc2->print(); // "Erika, 108" + pmc->print(); // "Erika:108" + pmc2->print(); // "Erika:108" // Pass the pointer to a function. func_A(pmc); - pmc->print(); // "Erika, 3" - pmc2->print(); // "Erika, 3" + pmc->print(); // "Erika:3" + pmc2->print(); // "Erika:3" // Dereference the pointer and pass a copy // of the pointed-to object to a function func_B(*pmc); - pmc->print(); // "Erika, 3" (original not modified by function) + pmc->print(); // "Erika:3" (original not modified by function) delete pmc; // don't forget to give memory back to operating system! // delete pmc2; //crash! memory location was already deleted From d66c16021d6a82a9687a933123d6d86a7d16edc8 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 25 Jul 2025 16:36:26 +0800 Subject: [PATCH 031/619] Add missing class-key for `name`s in standard library `toc.yml` --- docs/standard-library/toc.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/standard-library/toc.yml b/docs/standard-library/toc.yml index da060708822..e5c8a462f58 100644 --- a/docs/standard-library/toc.yml +++ b/docs/standard-library/toc.yml @@ -149,7 +149,7 @@ items: href: chrono-operators.md - name: literals href: chrono-literals.md - - name: ambiguous_local_time + - name: ambiguous_local_time class href: ambiguous-local-time.md - name: choose enum href: choose-enum.md @@ -173,7 +173,7 @@ items: href: high-resolution-clock-struct.md - name: is_clock struct href: is-clock-struct.md - - name: last_spec + - name: last_spec struct href: last-spec-struct.md - name: leap_second class href: leap-second-class.md @@ -193,7 +193,7 @@ items: href: month-weekday-class.md - name: month_weekday_last class href: month-weekday-last-class.md - - name: nonexistent_local_time + - name: nonexistent_local_time class href: nonexistent-local-time.md - name: steady_clock struct href: steady-clock-struct.md @@ -219,7 +219,7 @@ items: href: utc-clock-class.md - name: weekday class href: weekday-class.md - - name: weekday_indexed + - name: weekday_indexed class href: weekdayindexed-class.md - name: weekday_last class href: weekdaylast-class.md @@ -256,11 +256,11 @@ items: href: codecvt.md - name: enums href: codecvt-enums.md - - name: codecvt_utf8 + - name: codecvt_utf8 class href: codecvt-utf8-class.md - - name: codecvt_utf8_utf16 + - name: codecvt_utf8_utf16 class href: codecvt-utf8-utf16-class.md - - name: codecvt_utf16 + - name: codecvt_utf16 class href: codecvt-utf16-class.md - name: expanded: false @@ -980,7 +980,7 @@ items: href: transform-view-class.md - name: values_view class href: values-view-class.md - - name: view_interface + - name: view_interface class href: view-interface.md - name: alias templates href: ranges-alias-templates.md From 03fa38b507ff0612cfbf66af11f497d3ed1bf3c4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 25 Jul 2025 16:56:16 +0800 Subject: [PATCH 032/619] Elide even more manual table of contents --- ...rrency-direct3d-namespace-functions-amp.md | 37 ----- ...ncurrency-fast-math-namespace-functions.md | 76 ---------- ...y-graphics-direct3d-namespace-functions.md | 16 -- .../concurrency-namespace-functions-amp.md | 32 ---- .../concurrency-namespace-operators-amp.md | 18 --- ...rrency-precise-math-namespace-functions.md | 142 ------------------ .../concurrency-namespace-constants1.md | 27 ---- .../reference/concurrency-namespace-enums.md | 23 --- .../concurrency-namespace-functions.md | 53 ------- .../concurrency-namespace-operators.md | 19 --- docs/standard-library/allocators-functions.md | 16 -- 11 files changed, 459 deletions(-) diff --git a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md b/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md index d0a6ddd7c47..8559395f202 100644 --- a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md +++ b/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md @@ -6,43 +6,6 @@ f1_keywords: ["amp/Concurrency::direct3d::abs", "amp/Concurrency::direct3d::coun --- # Concurrency::direct3d namespace functions (AMP) -:::row::: - :::column span=""::: - [abs](#abs)\ - [clamp](#clamp)\ - [countbits](#countbits)\ - [create_accelerator_view](#create_accelerator_view)\ - [d3d_access_lock](#d3d_access_lock)\ - [d3d_access_try_lock](#d3d_access_try_lock)\ - [d3d_access_unlock](#d3d_access_unlock) - :::column-end::: - :::column span=""::: - [firstbithigh](#firstbithigh)\ - [firstbitlow](#firstbitlow)\ - [get_buffer](#get_buffer)\ - [get_device](#get_device)\ - [imax](#imax)\ - [imin](#imin)\ - [is_timeout_disabled](#is_timeout_disabled) - :::column-end::: - :::column span=""::: - [mad](#mad)\ - [make_array](#make_array)\ - [noise](#noise)\ - [radians](#radians)\ - [rcp](#rcp)\ - [reversebits](#reversebits) - :::column-end::: - :::column span=""::: - [saturate](#saturate)\ - [sign](#sign)\ - [smoothstep](#smoothstep)\ - [step](#step)\ - [umax](#umax)\ - [umin](#umin) - :::column-end::: -:::row-end::: - ## Requirements **Header:** amp.h diff --git a/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md b/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md index dea78f5cd4d..253a4d5c69c 100644 --- a/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md +++ b/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md @@ -7,82 +7,6 @@ ms.assetid: f5763d62-795b-4de6-a7a5-c7115f158708 --- # Concurrency::fast_math namespace functions -:::row::: - :::column span=""::: - [`acos`](#acos)\ - [`acosf`](#acosf)\ - [`asin`](#asin)\ - [`asinf`](#asinf)\ - [`atan`](#atan)\ - [`atan2`](#atan2)\ - [`atan2f`](#atan2f)\ - [`atanf`](#atanf)\ - [`ceil`](#ceil)\ - [`ceilf`](#ceilf)\ - [`cos`](#cos)\ - [`cosf`](#cosf)\ - [`cosh`](#cosh)\ - [`coshf`](#coshf)\ - [`exp`](#exp)\ - [`exp2`](#exp2)\ - [`exp2f`](#exp2f) - :::column-end::: - :::column span=""::: - [`expf`](#expf)\ - [`fabs`](#fabs)\ - [`fabsf`](#fabsf)\ - [`floor`](#floor)\ - [`floorf`](#floorf)\ - [`fmax`](#fmax)\ - [`fmaxf`](#fmaxf)\ - [`fmin`](#fmin)\ - [`fminf`](#fminf)\ - [`fmod`](#fmod)\ - [`fmodf`](#fmodf)\ - [`frexp`](#frexp)\ - [`frexpf`](#frexpf)\ - [`isfinite`](#isfinite)\ - [`isinf`](#isinf)\ - [`isnan`](#isnan) - :::column-end::: - :::column span=""::: - [`ldexp`](#ldexp)\ - [`ldexpf`](#ldexpf)\ - [`log`](#log)\ - [`log10`](#log10)\ - [`log10f`](#log10f)\ - [`log2`](#log2)\ - [`log2f`](#log2f)\ - [`logf`](#logf)\ - [`modf`](#modf)\ - [`modff`](#modff)\ - [`pow`](#pow)\ - [`powf`](#powf)\ - [`round`](#round)\ - [`roundf`](#roundf)\ - [`rsqrt`](#rsqrt)\ - [`rsqrtf`](#rsqrtf) - :::column-end::: - :::column span=""::: - [`signbit`](#signbit)\ - [`signbitf`](#signbitf)\ - [`sin`](#sin)\ - [`sincos`](#sincos)\ - [`sincosf`](#sincosf)\ - [`sinf`](#sinf)\ - [`sinh`](#sinh)\ - [`sinhf`](#sinhf)\ - [`sqrt`](#sqrt)\ - [`sqrtf`](#sqrtf)\ - [`tan`](#tan)\ - [`tanf`](#tanf)\ - [`tanh`](#tanh)\ - [`tanhf`](#tanhf)\ - [`trunc`](#trunc)\ - [`truncf`](#truncf) - :::column-end::: -:::row-end::: - ## acos Calculates the arccosine of the argument diff --git a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md b/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md index 946f6478c8f..41572910b76 100644 --- a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md +++ b/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md @@ -7,22 +7,6 @@ ms.assetid: 11ee1d42-333e-4ae9-95ac-4cf68c06d13d --- # Concurrency::graphics::direct3d namespace functions -:::row::: - :::column span=""::: - [`get_sampler`](#get_sampler)\ - [`get_texture`](#get_texture) - :::column-end::: - :::column span=""::: - [`make_sampler`](#make_sampler) - :::column-end::: - :::column span=""::: - [`make_texture`](#make_texture) - :::column-end::: - :::column span=""::: - [`msad4`](#msad4) - :::column-end::: -:::row-end::: - ## get_sampler Get the D3D sampler state interface on the given accelerator view that represents the specified sampler object. diff --git a/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md b/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md index 5020d2c580b..959587d4204 100644 --- a/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md +++ b/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md @@ -7,38 +7,6 @@ ms.assetid: 2bef0985-cb90-4ece-90b9-66529aec73c9 --- # Concurrency namespace functions (AMP) -:::row::: - :::column span=""::: - [`all_memory_fence`](#all_memory_fence)\ - [`amp_uninitialize`](#amp_uninitialize)\ - [`atomic_compare_exchange`](#atomic_compare_exchange)\ - [`atomic_exchange`](#atomic_exchange)\ - [`atomic_fetch_add`](#atomic_fetch_add)\ - [`atomic_fetch_and`](#atomic_fetch_and) - :::column-end::: - :::column span=""::: - [`atomic_fetch_dec`](#atomic_fetch_dec)\ - [`atomic_fetch_inc`](#atomic_fetch_inc)\ - [`atomic_fetch_max`](#atomic_fetch_max)\ - [`atomic_fetch_min`](#atomic_fetch_min)\ - [`atomic_fetch_or`](#atomic_fetch_or) - :::column-end::: - :::column span=""::: - [`atomic_fetch_sub`](#atomic_fetch_sub)\ - [`atomic_fetch_xor`](#atomic_fetch_xor)\ - [`copy`](#copy)\ - [`copy_async`](#copy_async)\ - [`direct3d_abort`](#direct3d_abort) - :::column-end::: - :::column span=""::: - [`direct3d_errorf`](#direct3d_errorf)\ - [`direct3d_printf`](#direct3d_printf)\ - [`global_memory_fence`](#global_memory_fence)\ - [`parallel_for_each`](#parallel_for_each)\ - [`tile_static_memory_fence`](#tile_static_memory_fence) - :::column-end::: -:::row-end::: - ## all_memory_fence Blocks execution of all threads in a tile until all memory accesses have been completed. This ensures that all memory accesses are visible to other threads in the thread tile, and are executed in program order. diff --git a/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md b/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md index 3275296c1f8..c07c4f840f0 100644 --- a/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md +++ b/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md @@ -6,24 +6,6 @@ ms.assetid: 77f1ae17-1eb2-480d-8fe5-66d4c24bb91e --- # Concurrency namespace operators (AMP) -:::row::: - :::column span=""::: - [`operator==`](#operator_eq_eq)\ - [`operator!=`](#operator_neq) - :::column-end::: - :::column span=""::: - [`operator+`](#operator_add)\ - [`operator-`](#operator-) - :::column-end::: - :::column span=""::: - [`operator*`](#operator_star)\ - [`operator/`](#operator_div) - :::column-end::: - :::column span=""::: - [`operator%`](#operator_mod) - :::column-end::: -:::row-end::: - ## operator== Determines whether the specified arguments are equal. diff --git a/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md b/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md index fba9b56557b..018b1375634 100644 --- a/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md +++ b/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md @@ -6,148 +6,6 @@ f1_keywords: ["amp_math/Concurrency::precise_math::acos", "amp_math/Concurrency: --- # Concurrency::precise_math namespace functions -:::row::: - :::column span=""::: - [`acos`](#acos)\ - [`acosf`](#acosf)\ - [`acosh`](#acosh)\ - [`acoshf`](#acoshf)\ - [`asin`](#asin)\ - [`asinf`](#asinf)\ - [`asinh`](#asinh)\ - [`asinhf`](#asinhf)\ - [`atan`](#atan)\ - [`atan2`](#atan2)\ - [`atan2f`](#atan2f)\ - [`atanf`](#atanf)\ - [`atanh`](#atanh)\ - [`atanhf`](#atanhf)\ - [`cbrt`](#cbrt)\ - [`cbrtf`](#cbrtf)\ - [`ceil`](#ceil)\ - [`ceilf`](#ceilf)\ - [`copysign`](#copysign)\ - [`copysignf`](#copysignf)\ - [`cos`](#cos)\ - [`cosf`](#cosf)\ - [`cosh`](#cosh)\ - [`coshf`](#coshf)\ - [`cospi`](#cospi)\ - [`cospif`](#cospif)\ - [`erf`](#erf)\ - [`erfc`](#erfc)\ - [`erfcf`](#erfcf)\ - [`erfcinv`](#erfcinv)\ - [`erfcinvf`](#erfcinvf)\ - [`erff`](#erff)\ - [`erfinv`](#erfinv) - :::column-end::: - :::column span=""::: - [`erfinvf`](#erfinvf)\ - [`exp`](#exp)\ - [`exp10`](#exp10)\ - [`exp10f`](#exp10f)\ - [`exp2`](#exp2)\ - [`exp2f`](#exp2f)\ - [`expf`](#expf)\ - [`expm1`](#expm1)\ - [`expm1f`](#expm1f)\ - [`fabs`](#fabs)\ - [`fabsf`](#fabsf)\ - [`floor`](#floor)\ - [`fdim`](#fdim)\ - [`fdimf`](#fdimf)|\ - [`floorf`](#floorf)\ - [`fma`](#fma)\ - [`fmaf`](#fmaf)\ - [`fmax`](#fmax)\ - [`fmaxf`](#fmaxf)\ - [`fmin`](#fmin)\ - [`fminf`](#fminf)\ - [`fmod`](#fmod)\ - [`fmodf`](#fmodf)\ - [`fpclassify`](#fpclassify)\ - [`frexp`](#frexp)\ - [`frexpf`](#frexpf)\ - [`hypot`](#hypot)\ - [`hypotf`](#hypotf)\ - [`ilogb`](#ilogb)\ - [`ilogbf`](#ilogbf)\ - [`isfinite`](#isfinite)\ - [`isinf`](#isinf)\ - [`isnan`](#isnan) - :::column-end::: - :::column span=""::: - [`isnormal`](#isnormal)\ - [`ldexp`](#ldexp)\ - [`ldexpf`](#ldexpf)\ - [`lgamma`](#lgamma)\ - [`lgammaf`](#lgammaf)\ - [`log`](#log)\ - [`log10`](#log10)\ - [`log10f`](#log10f)\ - [`log1p`](#log1p)\ - [`log1pf`](#log1pf)\ - [`log2`](#log2)\ - [`log2f`](#log2f)\ - [`logb`](#logb)\ - [`logbf`](#logbf)\ - [`logf`](#logf)\ - [`modf`](#modf)\ - [`modff`](#modff)\ - [`nan`](#nan)\ - [`nanf`](#nanf)\ - [`nearbyint`](#nearbyint)\ - [`nearbyintf`](#nearbyintf)\ - [`nextafter`](#nextafter)\ - [`nextafterf`](#nextafterf)\ - [`phi`](#phi)\ - [`phif`](#phif)\ - [`pow`](#pow)\ - [`powf`](#powf)\ - [`probit`](#probit)\ - [`probitf`](#probitf)\ - [`rcbrt`](#rcbrt)\ - [`rcbrtf`](#rcbrtf)\ - [`remainder`](#remainder)\ - [`remainderf`](#remainderf) - :::column-end::: - :::column span=""::: - [`remquo`](#remquo)\ - [`remquof`](#remquof)\ - [`round`](#round)\ - [`roundf`](#roundf)\ - [`rsqrt`](#rsqrt)\ - [`rsqrtf`](#rsqrtf)\ - [`scalb`](#scalb)\ - [`scalbf`](#scalbf)\ - [`scalbn`](#scalbn)\ - [`scalbnf`](#scalbnf)\ - [`signbit`](#signbit)\ - [`signbitf`](#signbitf)\ - [`sin`](#sin)\ - [`sincos`](#sincos)\ - [`sincosf`](#sincosf)\ - [`sinf`](#sinf)\ - [`sinh`](#sinh)\ - [`sinhf`](#sinhf)\ - [`sinpi`](#sinpi)\ - [`sinpif`](#sinpif)\ - [`sqrt`](#sqrt)\ - [`sqrtf`](#sqrtf)\ - [`tan`](#tan)\ - [`tanf`](#tanf)\ - [`tanh`](#tanh)\ - [`tanhf`](#tanhf)\ - [`tanpi`](#tanpi)\ - [`tanpif`](#tanpif)\ - [`tgamma`](#tgamma)\ - [`tgammaf`](#tgammaf)\ - [`trunc`](#trunc)\ - [`truncf`](#truncf) - :::column-end::: -:::row-end::: - ## acos Calculates the arccosine of the argument diff --git a/docs/parallel/concrt/reference/concurrency-namespace-constants1.md b/docs/parallel/concrt/reference/concurrency-namespace-constants1.md index 2cad1ace3d7..ae84ce905fe 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-constants1.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-constants1.md @@ -7,33 +7,6 @@ ms.assetid: 6f81fc4c-b10c-479e-8717-9c292360d5a0 --- # concurrency namespace constants -:::row::: - :::column span=""::: - [`AgentEventGuid`](#agenteventguid)\ - [`CONCRT_RM_VERSION_1`](#concrt_rm_version_1)\ - [`COOPERATIVE_TIMEOUT_INFINITE`](#cooperative_timeout_infinite)\ - [`COOPERATIVE_WAIT_TIMEOUT`](#cooperative_wait_timeout)\ - [`ChoreEventGuid`](#choreeventguid)\ - [`ConcRTEventGuid`](#concrteventguid) - :::column-end::: - :::column span=""::: - [`ConcRT_ProviderGuid`](#concrt_providerguid)\ - [`ContextEventGuid`](#contexteventguid)\ - [`INHERIT_THREAD_PRIORITY`](#inherit_thread_priority)\ - [`LockEventGuid`](#lockeventguid)\ - [`MaxExecutionResources`](#maxexecutionresources)\ - [`PPLParallelForEventGuid`](#pplparallelforeventguid) - :::column-end::: - :::column span=""::: - [`PPLParallelForeachEventGuid`](#pplparallelforeacheventguid)\ - [`PPLParallelInvokeEventGuid`](#pplparallelinvokeeventguid)\ - [`ResourceManagerEventGuid`](#resourcemanagereventguid)\ - [`ScheduleGroupEventGuid`](#schedulegroupeventguid)\ - [`SchedulerEventGuid`](#schedulereventguid)\ - [`VirtualProcessorEventGuid`](#virtualprocessoreventguid) - :::column-end::: -:::row-end::: - ## AgentEventGuid A category GUID ({B9B5B78C-0713-4898-A21A-C67949DCED07}) describing ETW events fired by the Agents library in the Concurrency Runtime. diff --git a/docs/parallel/concrt/reference/concurrency-namespace-enums.md b/docs/parallel/concrt/reference/concurrency-namespace-enums.md index 6d6ed28540c..0fc4dcfa590 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-enums.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-enums.md @@ -7,29 +7,6 @@ ms.assetid: a40e3b2d-ad21-4229-9880-2cfa84f7ab8f --- # concurrency namespace enums -:::row::: - :::column span=""::: - [`agent_status`](#agent_status)\ - [`Agents_EventType`](#agents_eventtype)\ - [`ConcRT_EventType`](#concrt_eventtype)\ - [`Concrt_TraceFlags`](#concrt_traceflags)\ - [`CriticalRegionType`](#criticalregiontype) - :::column-end::: - :::column span=""::: - [`DynamicProgressFeedbackType`](#dynamicprogressfeedbacktype)\ - [`join_type`](#join_type)\ - [`message_status`](#message_status)\ - [`PolicyElementKey`](#policyelementkey)\ - [`SchedulerType`](#schedulertype) - :::column-end::: - :::column span=""::: - [`SchedulingProtocolType`](#schedulingprotocoltype)\ - [`SwitchingProxyState`](#switchingproxystate)\ - [`task_group_status`](#task_group_status)\ - [`WinRTInitializationType`](#winrtinitializationtype) - :::column-end::: -:::row-end::: - ## agent_status Enumeration The valid states for an `agent`. diff --git a/docs/parallel/concrt/reference/concurrency-namespace-functions.md b/docs/parallel/concrt/reference/concurrency-namespace-functions.md index 10f4a1627f6..c1da629a135 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-functions.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-functions.md @@ -6,59 +6,6 @@ f1_keywords: ["concrt/concurrency::Alloc", "concrt/concurrency::DisableTracing", --- # concurrency namespace functions -:::row::: - :::column span=""::: - [`Alloc`](#alloc)\ - [`asend`](#asend)\ - [`cancel_current_task`](#cancel_current_task)\ - [`clear`](#clear)\ - [`create_async`](#create_async)\ - [`create_task`](#create_task)\ - [`CreateResourceManager`](#createresourcemanager)\ - [`DisableTracing`](#disabletracing)\ - [`EnableTracing`](#enabletracing)\ - [`Free`](#free)\ - [`get_ambient_scheduler`](#get_ambient_scheduler)\ - [`GetExecutionContextId`](#getexecutioncontextid)\ - [`GetOSVersion`](#getosversion)\ - [`GetProcessorCount`](#getprocessorcount)\ - [`GetProcessorNodeCount`](#getprocessornodecount) - :::column-end::: - :::column span=""::: - [`GetSchedulerId`](#getschedulerid)\ - [`internal_assign_iterators`](#internal_assign_iterators)\ - [`interruption_point`](#interruption_point)\ - [`is_current_task_group_canceling`](#is_current_task_group_canceling)\ - [`make_choice`](#make_choice)\ - [`make_greedy_join`](#make_greedy_join)\ - [`make_join`](#make_join)\ - [`make_task`](#make_task)\ - [`parallel_buffered_sort`](#parallel_buffered_sort)\ - [`parallel_for_each`](#parallel_for_each)\ - [`parallel_for`](#parallel_for)\ - [`parallel_invoke`](#parallel_invoke)\ - [`parallel_radixsort`](#parallel_radixsort)\ - [`parallel_reduce`](#parallel_reduce)\ - [`parallel_sort`](#parallel_sort) - :::column-end::: - :::column span=""::: - [`parallel_transform`](#parallel_transform)\ - [`receive`](#receive)\ - [`run_with_cancellation_token`](#run_with_cancellation_token)\ - [`send`](#send)\ - [`set_ambient_scheduler`](#set_ambient_scheduler)\ - [`set_task_execution_resources`](#set_task_execution_resources)\ - [`swap`](#swap)\ - [`task_from_exception`](#task_from_exception)\ - [`task_from_result`](#task_from_result)\ - [`Trace_agents_register_name`](#trace_agents_register_name)\ - [`try_receive`](#try_receive)\ - [`wait`](#wait)\ - [`when_all`](#when_all)\ - [`when_any`](#when_any) - :::column-end::: -:::row-end::: - ## Alloc Allocates a block of memory of the size specified from the Concurrency Runtime Caching Suballocator. diff --git a/docs/parallel/concrt/reference/concurrency-namespace-operators.md b/docs/parallel/concrt/reference/concurrency-namespace-operators.md index d3deea034e0..7363e2e6e6b 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-operators.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-operators.md @@ -7,25 +7,6 @@ ms.assetid: 8e373f23-fc8e-49f7-82e6-ba0c57b822f8 --- # concurrency namespace Operators -:::row::: - :::column span=""::: - [`operator||`](#operator_lor)\ - [`operator&&`](#operator_amp_amp) - :::column-end::: - :::column span=""::: - [`operator==`](#operator_eq_eq)\ - [`operator!=`](#operator_neq) - :::column-end::: - :::column span=""::: - [`operator<`](#operator_lt)\ - [`operator<=`](#operator_lt_eq) - :::column-end::: - :::column span=""::: - [`operator>`](#operator_gt)\ - [`operator>=`](#operator_gt_eq) - :::column-end::: -:::row-end::: - ## `operator||` Operator Creates a task that will complete successfully when either of the tasks supplied as arguments completes successfully. diff --git a/docs/standard-library/allocators-functions.md b/docs/standard-library/allocators-functions.md index fafefa60342..cf3f7def1bb 100644 --- a/docs/standard-library/allocators-functions.md +++ b/docs/standard-library/allocators-functions.md @@ -7,22 +7,6 @@ helpviewer_keywords: ["std::ALLOCATOR_DECL [C++]", "std::CACHE_CHUNKLIST [C++]", --- # `` macros -:::row::: - :::column span=""::: - [`ALLOCATOR_DECL`](#allocator_decl)\ - [`CACHE_CHUNKLIST`](#cache_chunklist) - :::column-end::: - :::column span=""::: - [`CACHE_FREELIST`](#cache_freelist) - :::column-end::: - :::column span=""::: - [`CACHE_SUBALLOC`](#cache_suballoc) - :::column-end::: - :::column span=""::: - [`SYNC_DEFAULT`](#sync_default) - :::column-end::: -:::row-end::: - ## ALLOCATOR_DECL Yields an allocator class template. From c532a45a8137962d6b64002b291cb552c6c49048 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 25 Jul 2025 17:19:02 +0800 Subject: [PATCH 033/619] Add needed leading sentence in some references --- .../reference/concurrency-direct3d-namespace-functions-amp.md | 2 ++ .../amp/reference/concurrency-fast-math-namespace-functions.md | 2 ++ .../concurrency-graphics-direct3d-namespace-functions.md | 2 ++ .../amp/reference/concurrency-namespace-functions-amp.md | 2 ++ .../amp/reference/concurrency-namespace-operators-amp.md | 2 ++ .../reference/concurrency-precise-math-namespace-functions.md | 2 ++ .../concrt/reference/concurrency-namespace-constants1.md | 2 ++ docs/parallel/concrt/reference/concurrency-namespace-enums.md | 2 ++ .../concrt/reference/concurrency-namespace-functions.md | 2 ++ .../concrt/reference/concurrency-namespace-operators.md | 2 ++ docs/standard-library/allocators-functions.md | 2 ++ 11 files changed, 22 insertions(+) diff --git a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md b/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md index 8559395f202..f6d6c2abb14 100644 --- a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md +++ b/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md @@ -6,6 +6,8 @@ f1_keywords: ["amp/Concurrency::direct3d::abs", "amp/Concurrency::direct3d::coun --- # Concurrency::direct3d namespace functions (AMP) +The following functions are defined in the `Concurrency::direct3d` namespace (AMP): + ## Requirements **Header:** amp.h diff --git a/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md b/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md index 253a4d5c69c..f701e475aa9 100644 --- a/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md +++ b/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md @@ -7,6 +7,8 @@ ms.assetid: f5763d62-795b-4de6-a7a5-c7115f158708 --- # Concurrency::fast_math namespace functions +The following functions are available in the `Concurrency::fast_math` namespace: + ## acos Calculates the arccosine of the argument diff --git a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md b/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md index 41572910b76..5a8df144ed7 100644 --- a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md +++ b/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md @@ -7,6 +7,8 @@ ms.assetid: 11ee1d42-333e-4ae9-95ac-4cf68c06d13d --- # Concurrency::graphics::direct3d namespace functions +The following functions are available in the `Concurrency::graphics::direct3d` namespace: + ## get_sampler Get the D3D sampler state interface on the given accelerator view that represents the specified sampler object. diff --git a/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md b/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md index 959587d4204..750f6cbe970 100644 --- a/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md +++ b/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md @@ -7,6 +7,8 @@ ms.assetid: 2bef0985-cb90-4ece-90b9-66529aec73c9 --- # Concurrency namespace functions (AMP) +The following functions are defined in the `Concurrency` namespace (AMP): + ## all_memory_fence Blocks execution of all threads in a tile until all memory accesses have been completed. This ensures that all memory accesses are visible to other threads in the thread tile, and are executed in program order. diff --git a/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md b/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md index c07c4f840f0..39bcedd8471 100644 --- a/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md +++ b/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md @@ -6,6 +6,8 @@ ms.assetid: 77f1ae17-1eb2-480d-8fe5-66d4c24bb91e --- # Concurrency namespace operators (AMP) +The following operators are defined in the `Concurrency` namespace (AMP): + ## operator== Determines whether the specified arguments are equal. diff --git a/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md b/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md index 018b1375634..4c85696fdd1 100644 --- a/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md +++ b/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md @@ -6,6 +6,8 @@ f1_keywords: ["amp_math/Concurrency::precise_math::acos", "amp_math/Concurrency: --- # Concurrency::precise_math namespace functions +The following functions are available in the `Concurrency::precise_math` namespace: + ## acos Calculates the arccosine of the argument diff --git a/docs/parallel/concrt/reference/concurrency-namespace-constants1.md b/docs/parallel/concrt/reference/concurrency-namespace-constants1.md index ae84ce905fe..e38ca37ff0f 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-constants1.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-constants1.md @@ -7,6 +7,8 @@ ms.assetid: 6f81fc4c-b10c-479e-8717-9c292360d5a0 --- # concurrency namespace constants +The following constants are defined in the `concurrency` namespace: + ## AgentEventGuid A category GUID ({B9B5B78C-0713-4898-A21A-C67949DCED07}) describing ETW events fired by the Agents library in the Concurrency Runtime. diff --git a/docs/parallel/concrt/reference/concurrency-namespace-enums.md b/docs/parallel/concrt/reference/concurrency-namespace-enums.md index 0fc4dcfa590..795c63a6622 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-enums.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-enums.md @@ -7,6 +7,8 @@ ms.assetid: a40e3b2d-ad21-4229-9880-2cfa84f7ab8f --- # concurrency namespace enums +The following enumerations are available in the `concurrency` namespace: + ## agent_status Enumeration The valid states for an `agent`. diff --git a/docs/parallel/concrt/reference/concurrency-namespace-functions.md b/docs/parallel/concrt/reference/concurrency-namespace-functions.md index c1da629a135..b8309f264f3 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-functions.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-functions.md @@ -6,6 +6,8 @@ f1_keywords: ["concrt/concurrency::Alloc", "concrt/concurrency::DisableTracing", --- # concurrency namespace functions +The following functions are available in the `concurrency` namespace: + ## Alloc Allocates a block of memory of the size specified from the Concurrency Runtime Caching Suballocator. diff --git a/docs/parallel/concrt/reference/concurrency-namespace-operators.md b/docs/parallel/concrt/reference/concurrency-namespace-operators.md index 7363e2e6e6b..b11f01cf1ad 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-operators.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-operators.md @@ -7,6 +7,8 @@ ms.assetid: 8e373f23-fc8e-49f7-82e6-ba0c57b822f8 --- # concurrency namespace Operators +The following operators are available in the `concurrency` namespace: + ## `operator||` Operator Creates a task that will complete successfully when either of the tasks supplied as arguments completes successfully. diff --git a/docs/standard-library/allocators-functions.md b/docs/standard-library/allocators-functions.md index cf3f7def1bb..47258c46189 100644 --- a/docs/standard-library/allocators-functions.md +++ b/docs/standard-library/allocators-functions.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["std::ALLOCATOR_DECL [C++]", "std::CACHE_CHUNKLIST [C++]", --- # `` macros +The `` header provides the following macros: + ## ALLOCATOR_DECL Yields an allocator class template. From fc86262b716f70d1e47e98be077b400c46b69a94 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 25 Jul 2025 17:23:08 +0800 Subject: [PATCH 034/619] Update metadata in some parallel programming references --- .../concurrency-direct3d-namespace-functions-amp.md | 2 +- .../reference/concurrency-fast-math-namespace-functions.md | 5 ++--- .../concurrency-graphics-direct3d-namespace-functions.md | 5 ++--- .../amp/reference/concurrency-namespace-functions-amp.md | 5 ++--- .../amp/reference/concurrency-namespace-operators-amp.md | 5 ++--- .../concrt/reference/concurrency-namespace-constants1.md | 5 ++--- .../parallel/concrt/reference/concurrency-namespace-enums.md | 5 ++--- .../concrt/reference/concurrency-namespace-operators.md | 5 ++--- 8 files changed, 15 insertions(+), 22 deletions(-) diff --git a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md b/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md index f6d6c2abb14..4576e407e43 100644 --- a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md +++ b/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md @@ -1,7 +1,7 @@ --- title: "Concurrency::direct3d namespace functions (AMP)" description: "Learn more about: Concurrency::direct3d namespace functions (AMP)" -ms.date: "08/31/2018" +ms.date: 08/31/2018 f1_keywords: ["amp/Concurrency::direct3d::abs", "amp/Concurrency::direct3d::countbits", "amp/Concurrency::direct3d::create_accelerator_view", "amp/Concurrency::direct3d::d3d_access_lock", "amp/Concurrency::direct3d::d3d_access_unlock", "amp/Concurrency::direct3d::firstbithigh", "amp/Concurrency::direct3d::get_buffer", "amp/Concurrency::direct3d::get_device", "amp/Concurrency::direct3d::imax", "amp/Concurrency::direct3d::is_timeout_disabled", "amp/Concurrency::direct3d::mad", "amp/Concurrency::direct3d::noise", "amp/Concurrency::direct3d::radians", "amp/Concurrency::direct3d::reversebits", "amp/Concurrency::direct3d::saturate", "amp/Concurrency::direct3d::smoothstep", "amp/Concurrency::direct3d::step", "amp/Concurrency::direct3d::umin"] --- # Concurrency::direct3d namespace functions (AMP) diff --git a/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md b/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md index f701e475aa9..3bbf140a6af 100644 --- a/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md +++ b/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Concurrency::fast_math namespace functions" title: "Concurrency::fast_math namespace functions" -ms.date: "11/04/2016" +description: "Learn more about: Concurrency::fast_math namespace functions" +ms.date: 11/04/2016 f1_keywords: ["amp_math/Concurrency::fast_math::acos", "amp_math/Concurrency::fast_math::asin", "amp_math/Concurrency::fast_math::asinf", "amp_math/Concurrency::fast_math::atan2", "amp_math/Concurrency::fast_math::atan2f", "amp_math/Concurrency::fast_math::ceil", "amp_math/Concurrency::fast_math::ceilf", "amp_math/Concurrency::fast_math::cosf", "amp_math/Concurrency::fast_math::cosh", "amp_math/Concurrency::fast_math::exp", "amp_math/Concurrency::fast_math::exp2", "amp_math/Concurrency::fast_math::expf", "amp_math/Concurrency::fast_math::fabs", "amp_math/Concurrency::fast_math::floor", "amp_math/Concurrency::fast_math::floorf", "amp_math/Concurrency::fast_math::fmaxf", "amp_math/Concurrency::fast_math::fmin", "amp_math/Concurrency::fast_math::fmod", "amp_math/Concurrency::fast_math::fmodf", "amp_math/Concurrency::fast_math::frexpf", "amp_math/Concurrency::fast_math::isfinite", "amp_math/Concurrency::fast_math::isnan", "amp_math/Concurrency::fast_math::ldexp", "amp_math/Concurrency::fast_math::log", "amp_math/Concurrency::fast_math::log10", "amp_math/Concurrency::fast_math::log2", "amp_math/Concurrency::fast_math::log2f", "amp_math/Concurrency::fast_math::modf", "amp_math/Concurrency::fast_math::modff", "amp_math/Concurrency::fast_math::powf", "amp_math/Concurrency::fast_math::round", "amp_math/Concurrency::fast_math::rsqrt", "amp_math/Concurrency::fast_math::rsqrtf", "amp_math/Concurrency::fast_math::signbitf", "amp_math/Concurrency::fast_math::sin", "amp_math/Concurrency::fast_math::sincosf", "amp_math/Concurrency::fast_math::sinf", "amp_math/Concurrency::fast_math::sinhf", "amp_math/Concurrency::fast_math::sqrt", "amp_math/Concurrency::fast_math::tan", "amp_math/Concurrency::fast_math::tanf", "amp_math/Concurrency::fast_math::tanhf", "amp_math/Concurrency::fast_math::trunc"] -ms.assetid: f5763d62-795b-4de6-a7a5-c7115f158708 --- # Concurrency::fast_math namespace functions diff --git a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md b/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md index 5a8df144ed7..cea85945655 100644 --- a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md +++ b/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Concurrency::graphics::direct3d namespace functions" title: "Concurrency::graphics::direct3d namespace functions" -ms.date: "11/04/2016" +description: "Learn more about: Concurrency::graphics::direct3d namespace functions" +ms.date: 11/04/2016 f1_keywords: ["amp_graphics/Concurrency::graphics::direct3d::get_sampler", "amp_graphics/Concurrency::graphics::direct3d::make_sampler", "amp_graphics/Concurrency::graphics::direct3d::make_texture"] -ms.assetid: 11ee1d42-333e-4ae9-95ac-4cf68c06d13d --- # Concurrency::graphics::direct3d namespace functions diff --git a/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md b/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md index 750f6cbe970..ebc67e6ab11 100644 --- a/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md +++ b/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Concurrency namespace functions (AMP)" title: "Concurrency namespace functions (AMP)" -ms.date: "11/04/2016" +description: "Learn more about: Concurrency namespace functions (AMP)" +ms.date: 11/04/2016 f1_keywords: ["amp/Concurrency::all_memory_fence", "amp/Concurrency::atomic_compare_exchange", "amp/Concurrency::atomic_fetch_dec", "amp/Concurrency::atomic_fetch_max", "amp/Concurrency::atomic_fetch_min", "amp/Concurrency::copy", "amp/Concurrency::direct3d_abort", "amp/Concurrency::direct3d_printf", "amp/Concurrency::global_memory_fence", "amp/Concurrency::tile_static_memory_fence"] -ms.assetid: 2bef0985-cb90-4ece-90b9-66529aec73c9 --- # Concurrency namespace functions (AMP) diff --git a/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md b/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md index 39bcedd8471..fff2ed01733 100644 --- a/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md +++ b/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: Concurrency namespace operators (AMP)" title: "Concurrency namespace operators (AMP)" -ms.date: "11/04/2016" -ms.assetid: 77f1ae17-1eb2-480d-8fe5-66d4c24bb91e +description: "Learn more about: Concurrency namespace operators (AMP)" +ms.date: 11/04/2016 --- # Concurrency namespace operators (AMP) diff --git a/docs/parallel/concrt/reference/concurrency-namespace-constants1.md b/docs/parallel/concrt/reference/concurrency-namespace-constants1.md index e38ca37ff0f..38f2288982e 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-constants1.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-constants1.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: concurrency namespace constants" title: "concurrency namespace constants" -ms.date: "11/04/2016" +description: "Learn more about: concurrency namespace constants" +ms.date: 11/04/2016 f1_keywords: ["concrt/concurrency::AgentEventGuid", "concrt/concurrency::COOPERATIVE_TIMEOUT_INFINITE", "concrt/concurrency::COOPERATIVE_WAIT_TIMEOUT", "concrt/concurrency::ConcRTEventGuid", "concrt/concurrency::ConcRT_ProviderGuid", "concrt/concurrency::INHERIT_THREAD_PRIORITY", "concrt/concurrency::LockEventGuid", "concrt/concurrency::PPLParallelForEventGuid", "concrt/concurrency::PPLParallelForeachEventGuid", "concrt/concurrency::ResourceManagerEventGuid", "concrt/concurrency::ScheduleGroupEventGuid", "concrt/concurrency::VirtualProcessorEventGuid"] -ms.assetid: 6f81fc4c-b10c-479e-8717-9c292360d5a0 --- # concurrency namespace constants diff --git a/docs/parallel/concrt/reference/concurrency-namespace-enums.md b/docs/parallel/concrt/reference/concurrency-namespace-enums.md index 795c63a6622..c3502ea9299 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-enums.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-enums.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: concurrency namespace enums" title: "concurrency namespace enums" -ms.date: "11/04/2016" +description: "Learn more about: concurrency namespace enums" +ms.date: 11/04/2016 f1_keywords: ["CONCRT/concurrency::Agents_EventType", "CONCRT/concurrency::Concrt_TraceFlags", "CONCRT/concurrency::CriticalRegionType", "CONCRT/concurrency::PolicyElementKey", "CONCRT/concurrency::SchedulerType", "CONCRT/concurrency::SwitchingProxyState", "CONCRT/concurrency::WinRTInitializationType", "CONCRT/concurrency::join_type", "CONCRT/concurrency::message_status Enumeration"] -ms.assetid: a40e3b2d-ad21-4229-9880-2cfa84f7ab8f --- # concurrency namespace enums diff --git a/docs/parallel/concrt/reference/concurrency-namespace-operators.md b/docs/parallel/concrt/reference/concurrency-namespace-operators.md index b11f01cf1ad..cb9e6005079 100644 --- a/docs/parallel/concrt/reference/concurrency-namespace-operators.md +++ b/docs/parallel/concrt/reference/concurrency-namespace-operators.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: concurrency namespace Operators" title: "concurrency namespace Operators" -ms.date: "11/04/2016" +description: "Learn more about: concurrency namespace Operators" +ms.date: 11/04/2016 f1_keywords: ["concrt/concurrency::operator!=", "concrt/concurrency::operator&&"] -ms.assetid: 8e373f23-fc8e-49f7-82e6-ba0c57b822f8 --- # concurrency namespace Operators From fd548217e31c6c6bcd5ba8911cd33c3942badcae Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 25 Jul 2025 18:38:18 +0800 Subject: [PATCH 035/619] Change "compliant" wording to "conforming" --- docs/c-runtime-library/reference/abort.md | 2 +- docs/c-runtime-library/reference/set-abort-behavior.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/c-runtime-library/reference/abort.md b/docs/c-runtime-library/reference/abort.md index 436a39de910..70885616878 100644 --- a/docs/c-runtime-library/reference/abort.md +++ b/docs/c-runtime-library/reference/abort.md @@ -46,7 +46,7 @@ By default, in non-debug builds of desktop or console apps, **`abort`** then inv If the Windows error reporting handler isn't invoked, then **`abort`** calls [`_exit`](exit-exit-exit.md) to terminate the process with exit code 3 and returns control to the parent process or the operating system. `_exit` doesn't flush stream buffers or do `atexit`/`_onexit` processing. -For Windows compatibility reasons, when **`abort`** calls `_exit`, it may invoke the Windows [`ExitProcess`](/windows/win32/api/processthreadsapi/nf-processthreadsapi-exitprocess) API, which in turn allows DLL termination routines to run. Destructors aren't run in the executable, but the same may not be true of DLLs loaded in the executable's process space. This behavior doesn't strictly conform to the C++ standard. To immediately terminate a process including any DLLs, use the Windows [`TerminateProcess`](/windows/desktop/api/processthreadsapi/nf-processthreadsapi-terminateprocess) API. You can also register an abort signal handler that invokes `TerminateProcess` for standard-compliant behavior. Compliant behavior may come at some cost in Windows compatibility. +For Windows compatibility reasons, when **`abort`** calls `_exit`, it may invoke the Windows [`ExitProcess`](/windows/win32/api/processthreadsapi/nf-processthreadsapi-exitprocess) API, which in turn allows DLL termination routines to run. Destructors aren't run in the executable, but the same may not be true of DLLs loaded in the executable's process space. This behavior doesn't strictly conform to the C++ standard. To immediately terminate a process including any DLLs, use the Windows [`TerminateProcess`](/windows/desktop/api/processthreadsapi/nf-processthreadsapi-terminateprocess) API. You can also register an abort signal handler that invokes `TerminateProcess` for standard-conforming behavior. Conforming behavior may come at some cost in Windows compatibility. For more information about CRT debugging, see [CRT debugging techniques](../crt-debugging-techniques.md). diff --git a/docs/c-runtime-library/reference/set-abort-behavior.md b/docs/c-runtime-library/reference/set-abort-behavior.md index 957edb74302..c914fb9de23 100644 --- a/docs/c-runtime-library/reference/set-abort-behavior.md +++ b/docs/c-runtime-library/reference/set-abort-behavior.md @@ -41,7 +41,7 @@ The old value of the flags. There are two [`abort`](abort.md) flags: `_WRITE_ABORT_MSG` and `_CALL_REPORTFAULT`. `_WRITE_ABORT_MSG` determines whether a helpful text message is printed when a program is abnormally terminated. The message states that the application has called the `abort` function. The default behavior is to print the message. `_CALL_REPORTFAULT`, if set, invokes the Windows Error Reporting Service mechanism (formerly known as Dr. Watson) to report failures to Microsoft when `abort` is called. By default, crash dump reporting is enabled in non-DEBUG builds. If the Windows error reporting handler isn't invoked, then `abort` calls [`_exit`](exit-exit-exit.md) to terminate the process with exit code 3 and returns control to the parent process or the operating system. `_exit` doesn't flush stream buffers or do `atexit`/`_onexit` processing. -For Windows compatibility reasons, when `abort` calls `_exit`, it may invoke the Windows [`ExitProcess`](/windows/win32/api/processthreadsapi/nf-processthreadsapi-exitprocess) API, which in turn allows DLL termination routines to run. Destructors aren't run in the executable, but the same may not be true of DLLs loaded in the executable's process space. This behavior doesn't strictly conform to the C++ standard. To immediately terminate a process including any DLLs, use the Windows [`TerminateProcess`](/windows/desktop/api/processthreadsapi/nf-processthreadsapi-terminateprocess) API. You can also register an abort signal handler that invokes `TerminateProcess` for standard-compliant behavior. Compliant behavior may come at some cost in Windows compatibility. +For Windows compatibility reasons, when `abort` calls `_exit`, it may invoke the Windows [`ExitProcess`](/windows/win32/api/processthreadsapi/nf-processthreadsapi-exitprocess) API, which in turn allows DLL termination routines to run. Destructors aren't run in the executable, but the same may not be true of DLLs loaded in the executable's process space. This behavior doesn't strictly conform to the C++ standard. To immediately terminate a process including any DLLs, use the Windows [`TerminateProcess`](/windows/desktop/api/processthreadsapi/nf-processthreadsapi-terminateprocess) API. You can also register an abort signal handler that invokes `TerminateProcess` for standard-conforming behavior. Conforming behavior may come at some cost in Windows compatibility. By default, this function's global state is scoped to the application. To change it, see [Global state in the CRT](../global-state.md). From 94f4a6a54054ac460546b00fb004d330c9d472ae Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 25 Jul 2025 18:39:33 +0800 Subject: [PATCH 036/619] Update metadata in `_set_abort_behavior` reference --- docs/c-runtime-library/reference/set-abort-behavior.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/reference/set-abort-behavior.md b/docs/c-runtime-library/reference/set-abort-behavior.md index c914fb9de23..dc00ccec9be 100644 --- a/docs/c-runtime-library/reference/set-abort-behavior.md +++ b/docs/c-runtime-library/reference/set-abort-behavior.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: _set_abort_behavior" title: "_set_abort_behavior" +description: "Learn more about: _set_abort_behavior" ms.date: 07/07/2022 api_name: ["_set_abort_behavior", "_o__set_abort_behavior"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"] From 5fba2f4f18c597b51d2d0a68636aba1e9cd59595 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 27 Jul 2025 18:31:20 +0800 Subject: [PATCH 037/619] Add "Remarks" heading in C4235 warning reference --- .../compiler-warnings/compiler-warning-level-4-c4235.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md index b555d0df57e..736ff9fbd1f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md @@ -9,6 +9,8 @@ helpviewer_keywords: ["C4235"] > nonstandard extension used: '*keyword*' keyword not supported on this architecture +## Remarks + The compiler doesn't support the keyword you used on the architecture your build is targeting. This warning is always issued as an error. Use the [warning](../../preprocessor/warning.md) pragma to disable. From a4b8091208f9f0394c882bef871d888a0a8cea25 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 27 Jul 2025 18:40:50 +0800 Subject: [PATCH 038/619] Extend remarks in C4235 warning reference --- .../compiler-warnings/compiler-warning-level-4-c4235.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md index 736ff9fbd1f..3a58dd4bec8 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md @@ -11,6 +11,6 @@ helpviewer_keywords: ["C4235"] ## Remarks -The compiler doesn't support the keyword you used on the architecture your build is targeting. +The compiler doesn't support the keyword you used on the architecture your build is targeting. For example, the [`__asm`](../../assembler/inline/asm.md) keyword is not supported in x64 builds. This warning is always issued as an error. Use the [warning](../../preprocessor/warning.md) pragma to disable. From a0da34ab27f4f83b428f26c702612f80fe152bbd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 27 Jul 2025 18:52:32 +0800 Subject: [PATCH 039/619] Add example in C4235 warning reference --- .../compiler-warning-level-4-c4235.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md index 3a58dd4bec8..1af307e236d 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md @@ -14,3 +14,17 @@ helpviewer_keywords: ["C4235"] The compiler doesn't support the keyword you used on the architecture your build is targeting. For example, the [`__asm`](../../assembler/inline/asm.md) keyword is not supported in x64 builds. This warning is always issued as an error. Use the [warning](../../preprocessor/warning.md) pragma to disable. + +## Example + +The following example generates C4235 as the [Inline Assembler](../../assembler/inline/inline-assembler.md) is only supported on x86: + +```cpp +// C4235.cpp +// processor: x64 + +int main() +{ + __asm nop // C4235 +} +``` From 3c6dea46c66a52392701c110d12d4bd720770582 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 27 Jul 2025 18:54:11 +0800 Subject: [PATCH 040/619] Update metadata in C4235 warning reference --- .../compiler-warnings/compiler-warning-level-4-c4235.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md index 1af307e236d..5cb82b34371 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1, Error) C4235" title: "Compiler Warning (level 1, Error) C4235" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1, Error) C4235" +ms.date: 07/27/2025 f1_keywords: ["C4235"] helpviewer_keywords: ["C4235"] --- From dd09025c0f870ac428fd5480c12d7aa2849e1a7b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 27 Jul 2025 21:30:53 +0800 Subject: [PATCH 041/619] Normalize single space before `sup` element in "Keywords (C++)" topic --- docs/cpp/keywords-cpp.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/cpp/keywords-cpp.md b/docs/cpp/keywords-cpp.md index 0bb5fff6c04..e68b54476ca 100644 --- a/docs/cpp/keywords-cpp.md +++ b/docs/cpp/keywords-cpp.md @@ -166,11 +166,11 @@ The **`__based`** keyword has limited uses for 32-bit and 64-bit target compilat [`__m64`](m64.md)\ [`__multiple_inheritance`](inheritance-keywords.md) e\ [`__ptr32`](ptr32-ptr64.md) e\ - [`__ptr64`](ptr32-ptr64.md)e\ + [`__ptr64`](ptr32-ptr64.md) e\ [`__raise`](raise.md)\ [`__restrict`](extension-restrict.md) e\ - [`__single_inheritance`](inheritance-keywords.md)e\ - [`__sptr`](sptr-uptr.md)e\ + [`__single_inheritance`](inheritance-keywords.md) e\ + [`__sptr`](sptr-uptr.md) e\ [`__stdcall`](stdcall.md) e :::column-end::: :::column::: From 743d5b40c0258812f638b94749dd387d222513fd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 27 Jul 2025 21:34:02 +0800 Subject: [PATCH 042/619] Nits for "Keywords (C++)" topic --- docs/cpp/keywords-cpp.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/cpp/keywords-cpp.md b/docs/cpp/keywords-cpp.md index e68b54476ca..8d9269c07fb 100644 --- a/docs/cpp/keywords-cpp.md +++ b/docs/cpp/keywords-cpp.md @@ -115,9 +115,9 @@ Keywords are predefined reserved identifiers that have special meanings. They ca :::column-end::: :::row-end::: -a The Microsoft-specific **`__asm`** keyword replaces C++ **`asm`** syntax. **`asm`** is reserved for compatibility with other C++ implementations, but not implemented. Use **`__asm`** for inline assembly on x86 targets. Microsoft C++ doesn't support Inline assembly for other targets. +a The Microsoft-specific **`__asm`** keyword replaces C++ **`asm`** syntax. **`asm`** is reserved for compatibility with other C++ implementations, but not implemented. Use **`__asm`** for inline assembly on x86 targets. Microsoft C++ doesn't support inline assembly for other targets. -b The extended operator synonyms are keywords when [`/permissive-`](../build/reference/permissive-standards-conformance.md) or [`/Za` \(Disable language extensions)](../build/reference/za-ze-disable-language-extensions.md) is specified. They aren't keywords when Microsoft extensions are enabled. +b The extended operator synonyms are keywords when [`/permissive-`](../build/reference/permissive-standards-conformance.md) or [`/Za` (Disable language extensions)](../build/reference/za-ze-disable-language-extensions.md) is specified. They aren't keywords when Microsoft extensions are enabled. c Supported when [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) or later (such as **`/std:c++latest`**) is specified. @@ -125,7 +125,7 @@ Keywords are predefined reserved identifiers that have special meanings. They ca In C++, identifiers that contain two consecutive underscores are reserved for compiler implementations. The Microsoft convention is to precede Microsoft-specific keywords with double underscores. These words can't be used as identifier names. -Microsoft extensions are enabled by default. To ensure that your programs are fully portable, you can disable Microsoft extensions by specifying the [`/permissive-`](../build/reference/permissive-standards-conformance.md) or [`/Za` \(Disable language extensions)](../build/reference/za-ze-disable-language-extensions.md) option during compilation. These options disable some Microsoft-specific keywords. +Microsoft extensions are enabled by default. To ensure that your programs are fully portable, you can disable Microsoft extensions by specifying the [`/permissive-`](../build/reference/permissive-standards-conformance.md) or [`/Za` (Disable language extensions)](../build/reference/za-ze-disable-language-extensions.md) option during compilation. These options disable some Microsoft-specific keywords. When Microsoft extensions are enabled, you can use the Microsoft-specific keywords in your programs. For ANSI conformance, these keywords are prefaced by a double underscore. For backward compatibility, single-underscore versions of many of the double-underscored keywords are supported. The **`__cdecl`** keyword is available with no leading underscore. @@ -191,7 +191,7 @@ The **`__based`** keyword has limited uses for 32-bit and 64-bit target compilat e For backward compatibility with previous versions, these keywords are available both with two leading underscores and a single leading underscore when Microsoft extensions are enabled (the default). -## Microsoft keywords in __declspec modifiers +## Microsoft keywords in `__declspec` modifiers These identifiers are extended attributes for the **`__declspec`** modifier. They're considered keywords within that context. From 5b9c9f65793451597d13f29ea0434d548a8759ef Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 27 Jul 2025 21:55:14 +0800 Subject: [PATCH 043/619] Fix wrong language for `Output` code blocks --- docs/cpp/rvalue-reference-declarator-amp-amp.md | 6 +++--- docs/cpp/scope-visual-cpp.md | 2 +- .../using-insertion-operators-and-controlling-format.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/cpp/rvalue-reference-declarator-amp-amp.md b/docs/cpp/rvalue-reference-declarator-amp-amp.md index c9dd311f112..2040d7e97c6 100644 --- a/docs/cpp/rvalue-reference-declarator-amp-amp.md +++ b/docs/cpp/rvalue-reference-declarator-amp-amp.md @@ -223,7 +223,7 @@ int main() This example produces the following output: -```cpp +```Output In g(const MemoryBlock&). In g(MemoryBlock&&). ``` @@ -266,7 +266,7 @@ int main() This example produces the following output: -```cpp +```Output In g(const MemoryBlock&). In g(MemoryBlock&&). ``` @@ -360,7 +360,7 @@ int main() This example produces the following output: -```cpp +```Output print: first print: second print: third diff --git a/docs/cpp/scope-visual-cpp.md b/docs/cpp/scope-visual-cpp.md index 6a735944423..1dbf86194d5 100644 --- a/docs/cpp/scope-visual-cpp.md +++ b/docs/cpp/scope-visual-cpp.md @@ -34,7 +34,7 @@ Block scope and name hiding The output from the program shown in the figure is: -```cpp +```Output i = 0 i = 7 j = 9 diff --git a/docs/standard-library/using-insertion-operators-and-controlling-format.md b/docs/standard-library/using-insertion-operators-and-controlling-format.md index e61172bb4dd..5ab72a90d66 100644 --- a/docs/standard-library/using-insertion-operators-and-controlling-format.md +++ b/docs/standard-library/using-insertion-operators-and-controlling-format.md @@ -165,7 +165,7 @@ Stan 4358.2 If you change the `ios::fixed` flag to `ios::scientific`, the program prints this: -```cpp +```Output Zoot 1.2e+00 Jimmy 3.5e+01 Al 6.5e+02 From f8cd8f85f27ba89bffb59121c41a2e3c8da767bc Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 27 Jul 2025 21:56:43 +0800 Subject: [PATCH 044/619] Update metadata in 3 topics --- docs/cpp/rvalue-reference-declarator-amp-amp.md | 3 +-- docs/cpp/scope-visual-cpp.md | 5 ++--- .../using-insertion-operators-and-controlling-format.md | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/cpp/rvalue-reference-declarator-amp-amp.md b/docs/cpp/rvalue-reference-declarator-amp-amp.md index 2040d7e97c6..441521e11c2 100644 --- a/docs/cpp/rvalue-reference-declarator-amp-amp.md +++ b/docs/cpp/rvalue-reference-declarator-amp-amp.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Rvalue reference declarator: &&" title: "Rvalue reference declarator: &&" +description: "Learn more about: Rvalue reference declarator: &&" ms.date: 09/27/2022 f1_keywords: ["&&"] helpviewer_keywords: ["&& rvalue reference declarator"] -ms.assetid: eab0ce3a-c5a3-4992-aa70-6a8ab1f7491d --- # Rvalue reference declarator: `&&` diff --git a/docs/cpp/scope-visual-cpp.md b/docs/cpp/scope-visual-cpp.md index 1dbf86194d5..3e160bde303 100644 --- a/docs/cpp/scope-visual-cpp.md +++ b/docs/cpp/scope-visual-cpp.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Scope (C++)" title: "Scope (C++)" -ms.date: "11/19/2018" +description: "Learn more about: Scope (C++)" +ms.date: 11/19/2018 helpviewer_keywords: ["classes [C++], scope", "scope [C++]", "function prototypes [C++], scope", "class scope", "prototype scope", "functions [C++], scope", "scope, C++ names"] -ms.assetid: 81fecbb0-338b-4325-8332-49f33e716352 --- # Scope (C++) diff --git a/docs/standard-library/using-insertion-operators-and-controlling-format.md b/docs/standard-library/using-insertion-operators-and-controlling-format.md index 5ab72a90d66..359347be9f4 100644 --- a/docs/standard-library/using-insertion-operators-and-controlling-format.md +++ b/docs/standard-library/using-insertion-operators-and-controlling-format.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Using Insertion Operators and Controlling Format" title: "Using Insertion Operators and Controlling Format" +description: "Learn more about: Using Insertion Operators and Controlling Format" ms.date: 10/07/2021 helpviewer_keywords: ["insertion operators"] --- From ec0828690f69304bdeea0e5b0ab369297ad1a617 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 29 Jul 2025 00:40:18 +0800 Subject: [PATCH 045/619] Fix missing trailing underscore for SAL annotations --- docs/c-runtime-library/sal-annotations.md | 2 +- .../annotating-function-parameters-and-return-values.md | 2 +- docs/code-quality/c26116.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/c-runtime-library/sal-annotations.md b/docs/c-runtime-library/sal-annotations.md index 3b7f7b24999..963ba6fc611 100644 --- a/docs/c-runtime-library/sal-annotations.md +++ b/docs/c-runtime-library/sal-annotations.md @@ -8,7 +8,7 @@ ms.assetid: 81893638-010c-41a0-9cb3-666fe360f3e0 --- # SAL annotations -If you examine the library header files, you may notice some unusual annotations, for example, `_In_z` and `_Out_z_cap_(_Size)`. These annotations are examples of the Microsoft source-code annotation language (SAL). SAL provides a set of annotations to describe how a function uses its parameters and return type. For example, it indicates the assumptions it makes about them and the guarantees it makes on finishing. The header file \ defines the annotations. +If you examine the library header files, you may notice some unusual annotations, for example, `_In_z_` and `_Out_z_cap_(_Size)`. These annotations are examples of the Microsoft source-code annotation language (SAL). SAL provides a set of annotations to describe how a function uses its parameters and return type. For example, it indicates the assumptions it makes about them and the guarantees it makes on finishing. The header file \ defines the annotations. For more information about using SAL annotations in Visual Studio, see [Using SAL annotations to reduce C/C++ code defects](../code-quality/using-sal-annotations-to-reduce-c-cpp-code-defects.md). diff --git a/docs/code-quality/annotating-function-parameters-and-return-values.md b/docs/code-quality/annotating-function-parameters-and-return-values.md index 5c0a0531f02..468dd6d9281 100644 --- a/docs/code-quality/annotating-function-parameters-and-return-values.md +++ b/docs/code-quality/annotating-function-parameters-and-return-values.md @@ -102,7 +102,7 @@ f1_keywords: - "_In_" - "_Inout_updates_bytes_" - "_In_reads_to_ptr_z_" - - "_Ret_writes_bytes_to_maybenull" + - "_Ret_writes_bytes_to_maybenull_" - "_Outptr_opt_result_nullonfailure_" - "_In_reads_to_ptr_" - "_Outptr_result_buffer_" diff --git a/docs/code-quality/c26116.md b/docs/code-quality/c26116.md index 5282963f532..b47e491bf8c 100644 --- a/docs/code-quality/c26116.md +++ b/docs/code-quality/c26116.md @@ -10,11 +10,11 @@ ms.assetid: 43e99d2c-405e-4913-b6bd-47f5858b2877 > Failing to acquire or to hold lock '*lock*' in '*func*'. -Enforcement of syntactically scoped lock *acquire* and lock *release* pairs in C/C++ programs isn't performed by the language. A function may introduce a locking side effect by making an observable modification to the concurrency state. For example, a lock wrapper function increments the number of lock acquisitions, or lock count, for a given lock. You can annotate a function that has a side effect from a lock acquire or lock release by using `_Acquires_lock_` or `_Requires_lock_held`, respectively. Without such annotations, a function is expected not to change any lock count after it returns. If acquires and releases aren't balanced, they're considered to be *orphaned*. Warning C26116 is issued when a function has been annotated with `_Acquires_lock_`, but it doesn't acquire a lock, or when a function is annotated with `_Requires_lock_held` and releases the lock. +Enforcement of syntactically scoped lock *acquire* and lock *release* pairs in C/C++ programs isn't performed by the language. A function may introduce a locking side effect by making an observable modification to the concurrency state. For example, a lock wrapper function increments the number of lock acquisitions, or lock count, for a given lock. You can annotate a function that has a side effect from a lock acquire or lock release by using `_Acquires_lock_` or `_Requires_lock_held_`, respectively. Without such annotations, a function is expected not to change any lock count after it returns. If acquires and releases aren't balanced, they're considered to be *orphaned*. Warning C26116 is issued when a function has been annotated with `_Acquires_lock_`, but it doesn't acquire a lock, or when a function is annotated with `_Requires_lock_held_` and releases the lock. ## Example -The following example generates warning C26116 because the function `DoesNotLock` was annotated with `_Acquires_lock_` but doesn't acquire it. The function `DoesNotHoldLock` generates the warning because it's annotated with `_Requires_lock_held` and doesn't hold it. +The following example generates warning C26116 because the function `DoesNotLock` was annotated with `_Acquires_lock_` but doesn't acquire it. The function `DoesNotHoldLock` generates the warning because it's annotated with `_Requires_lock_held_` and doesn't hold it. ```cpp typedef struct _DATA From 6ddbbd2c28307b8b884a9c65a8b52932d0ba2d39 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 29 Jul 2025 00:42:48 +0800 Subject: [PATCH 046/619] Update metadata in 3 topics --- docs/c-runtime-library/sal-annotations.md | 3 +-- .../annotating-function-parameters-and-return-values.md | 3 +-- docs/code-quality/c26116.md | 3 +-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/c-runtime-library/sal-annotations.md b/docs/c-runtime-library/sal-annotations.md index 963ba6fc611..5c145f5c570 100644 --- a/docs/c-runtime-library/sal-annotations.md +++ b/docs/c-runtime-library/sal-annotations.md @@ -1,10 +1,9 @@ --- title: "SAL Annotations" description: "A brief description of the Microsoft source-code annotation language (SAL)." -ms.date: "11/04/2016" +ms.date: 11/04/2016 ms.topic: "concept-article" helpviewer_keywords: ["__z annotation", "ref annotation", "_opt annotation", "__checkreturn annotatioin", "__deref_opt annotation", "deref_opt annotation", "__deref annotation", "__in annotation", "annotations [C++]", "z annotation", "_inout annotation", "__ref annotation", "full annotation", "_in annotation", "_ref annotation", "__out annotation", "_ecount annotation", "SAL annotations", "__opt annotation", "inout annotation", "in annotation", "_CA_SHOULD_CHECK_RETURN", "__bcount annotation", "_full annotation", "_bcount annotation", "deref annotation", "part annotation", "_out annotation", "__nz annotation", "__part annotation", "opt annotation", "__full annotation", "_nz annotation", "_z annotation", "out annotation", "__ecount annotation", "__inout annotation", "SAL annotations, _CA_SHOULD_CHECK_RETURN", "_deref_opt annotation", "_deref annotation", "nz annotation", "_part annotation", "ecount annotation", "bcount annotation"] -ms.assetid: 81893638-010c-41a0-9cb3-666fe360f3e0 --- # SAL annotations diff --git a/docs/code-quality/annotating-function-parameters-and-return-values.md b/docs/code-quality/annotating-function-parameters-and-return-values.md index 468dd6d9281..2514f7ef61b 100644 --- a/docs/code-quality/annotating-function-parameters-and-return-values.md +++ b/docs/code-quality/annotating-function-parameters-and-return-values.md @@ -1,5 +1,5 @@ --- -title: Annotating function parameters and return values +title: "Annotating function parameters and return values" description: "Reference guide to function parameter and return value annotations." ms.date: 10/15/2019 ms.topic: "concept-article" @@ -123,7 +123,6 @@ f1_keywords: - "_Scanf_format_string_" - "_Scanf_s_format_string_" - "_Printf_format_string_" -ms.assetid: 82826a3d-0c81-421c-8ffe-4072555dca3a --- # Annotating function parameters and return values diff --git a/docs/code-quality/c26116.md b/docs/code-quality/c26116.md index b47e491bf8c..b6d60a75544 100644 --- a/docs/code-quality/c26116.md +++ b/docs/code-quality/c26116.md @@ -1,10 +1,9 @@ --- +title: "Warning C26116" description: "Learn more about: Warning C26116" -title: Warning C26116 ms.date: 11/04/2016 f1_keywords: ["C26116"] helpviewer_keywords: ["C26116"] -ms.assetid: 43e99d2c-405e-4913-b6bd-47f5858b2877 --- # Warning C26116 From 041cc0fa271055a42891d23288f0ce3a40492d8b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:25:38 +0800 Subject: [PATCH 047/619] Add leading sentence in `` functions reference --- docs/standard-library/thread-functions.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index eea1f7215e9..290e9064dbc 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -8,6 +8,8 @@ helpviewer_keywords: ["std::get_id [C++]", "std::sleep_for [C++]", "std::sleep_u --- # `` functions +The `` header provides the following functions: + ## get_id Uniquely identifies the current thread of execution. From 56f1e26612b58ba39855a93c291f74ef5c4da9cd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:28:18 +0800 Subject: [PATCH 048/619] Add backticks in `` functions reference --- docs/standard-library/thread-functions.md | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index 290e9064dbc..4d7f97442ae 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["std::get_id [C++]", "std::sleep_for [C++]", "std::sleep_u The `` header provides the following functions: -## get_id +## `get_id` Uniquely identifies the current thread of execution. @@ -20,9 +20,9 @@ thread::id this_thread::get_id() noexcept; ### Return Value -An object of type [thread::id](../standard-library/thread-class.md) that uniquely identifies the current thread of execution. +An object of type [`thread::id`](../standard-library/thread-class.md) that uniquely identifies the current thread of execution. -## sleep_for +## `sleep_for` Blocks the calling thread. @@ -34,14 +34,14 @@ inline void sleep_for(const chrono::duration& Rel_time); ### Parameters -*Rel_time*\ -A [duration](../standard-library/duration-class.md) object that specifies a time interval. +*`Rel_time`*\ +A [`duration`](../standard-library/duration-class.md) object that specifies a time interval. ### Remarks -The function blocks the calling thread for at least the time that's specified by *Rel_time*. This function does not throw any exceptions. +The function blocks the calling thread for at least the time that's specified by *`Rel_time`*. This function does not throw any exceptions. -## sleep_until +## `sleep_until` Blocks the calling thread at least until the specified time. @@ -54,14 +54,14 @@ void sleep_until(const xtime *Abs_time); ### Parameters -*Abs_time*\ +*`Abs_time`*\ Represents a point in time. ### Remarks This function does not throw any exceptions. -## swap +## `swap` Swaps the states of two `thread` objects. @@ -71,17 +71,17 @@ void swap(thread& Left, thread& Right) noexcept; ### Parameters -*Left*\ +*`Left`*\ The left `thread` object. -*Right*\ +*`Right`*\ The right `thread` object. ### Remarks The function calls `Left.swap(Right)`. -## yield +## `yield` Signals the operating system to run other threads, even if the current thread would ordinarily continue to run. @@ -91,4 +91,4 @@ inline void yield() noexcept; ## See also -[\](../standard-library/thread.md) +[``](../standard-library/thread.md) From ffbcdd6d905c9e057c1b1c5b7c47d639627a18cd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:29:58 +0800 Subject: [PATCH 049/619] Simplify and improve links in `` functions reference --- docs/standard-library/thread-functions.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index 4d7f97442ae..7a69dbea319 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -20,7 +20,7 @@ thread::id this_thread::get_id() noexcept; ### Return Value -An object of type [`thread::id`](../standard-library/thread-class.md) that uniquely identifies the current thread of execution. +An object of type [`thread::id`](thread-class.md#id_class) that uniquely identifies the current thread of execution. ## `sleep_for` @@ -35,7 +35,7 @@ inline void sleep_for(const chrono::duration& Rel_time); ### Parameters *`Rel_time`*\ -A [`duration`](../standard-library/duration-class.md) object that specifies a time interval. +A [`duration`](duration-class.md) object that specifies a time interval. ### Remarks @@ -91,4 +91,4 @@ inline void yield() noexcept; ## See also -[``](../standard-library/thread.md) +[``](thread.md) From a7e44972b0f473d50acf6986e31403bee101c32f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:37:00 +0800 Subject: [PATCH 050/619] Add basic example for `std::this_thread::get_id` in `` functions reference --- docs/standard-library/thread-functions.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index 7a69dbea319..ae8de116851 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -22,6 +22,23 @@ thread::id this_thread::get_id() noexcept; An object of type [`thread::id`](thread-class.md#id_class) that uniquely identifies the current thread of execution. +### Example + +```cpp +#include +#include + +int main() +{ + std::thread::id current_thread_id = std::this_thread::get_id(); + std::cout << "Current thread id: " << current_thread_id; +} +``` + +```Output +Current thread id: 16196 +``` + ## `sleep_for` Blocks the calling thread. From 0b4c1b4927a1b946daf17dcc78abbcaf26715438 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:46:51 +0800 Subject: [PATCH 051/619] Update syntax in `` functions reference --- docs/standard-library/thread-functions.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index ae8de116851..6f5cae74d5d 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -44,9 +44,8 @@ Current thread id: 16196 Blocks the calling thread. ```cpp -template -inline void sleep_for(const chrono::duration& Rel_time); +template +void this_thread::sleep_for(const chrono::duration& Rel_time); ``` ### Parameters @@ -64,9 +63,7 @@ Blocks the calling thread at least until the specified time. ```cpp template -void sleep_until(const chrono::time_point& Abs_time); - -void sleep_until(const xtime *Abs_time); +void this_thread::sleep_until(const chrono::time_point& Abs_time); ``` ### Parameters @@ -103,7 +100,7 @@ The function calls `Left.swap(Right)`. Signals the operating system to run other threads, even if the current thread would ordinarily continue to run. ```cpp -inline void yield() noexcept; +inline void this_thread::yield() noexcept; ``` ## See also From d813e3922814006c9a0cb34c5bbc01a280ea67f5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 18:50:42 +0800 Subject: [PATCH 052/619] Update metadata in `` functions reference --- docs/standard-library/thread-functions.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index 6f5cae74d5d..2cba283ccc7 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: functions" title: " functions" -ms.date: "11/04/2016" +description: "Learn more about: functions" +ms.date: 11/04/2016 f1_keywords: ["thread/std::get_id", "thread/std::sleep_for", "thread/std::sleep_until", "thread/std::swap", "thread/std::yield"] -ms.assetid: bb1aa1ef-fe3f-4e2c-8b6e-e22dbf2f5a19 helpviewer_keywords: ["std::get_id [C++]", "std::sleep_for [C++]", "std::sleep_until [C++]", "std::swap [C++]", "std::yield [C++]"] --- # `` functions From fea358f514b94142dd4c2e62f935b8d7d89de1c0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:15:02 +0800 Subject: [PATCH 053/619] Add mention of `/LDd` in `_DEBUG` macro reference --- docs/c-runtime-library/debug.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/debug.md b/docs/c-runtime-library/debug.md index 049cce0df2b..bbfddedf121 100644 --- a/docs/c-runtime-library/debug.md +++ b/docs/c-runtime-library/debug.md @@ -7,7 +7,7 @@ ms.assetid: a9901568-4846-4731-a404-399d947e2e7a --- # `_DEBUG` -The compiler defines `_DEBUG` when you specify the /MTd or /MDd option. These options specify debug versions of the C run-time library. +The compiler defines `_DEBUG` when you specify the /MTd, /MDd, or /LDd option. These options specify debug versions of the C run-time library. For more information, see [CRT debugging techniques](./crt-debugging-techniques.md). From 68fef1a903d88e08457389044101158da281000a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:16:05 +0800 Subject: [PATCH 054/619] Add backticks in `_DEBUG` macro reference --- docs/c-runtime-library/debug.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/debug.md b/docs/c-runtime-library/debug.md index bbfddedf121..cad5919065c 100644 --- a/docs/c-runtime-library/debug.md +++ b/docs/c-runtime-library/debug.md @@ -7,7 +7,7 @@ ms.assetid: a9901568-4846-4731-a404-399d947e2e7a --- # `_DEBUG` -The compiler defines `_DEBUG` when you specify the /MTd, /MDd, or /LDd option. These options specify debug versions of the C run-time library. +The compiler defines `_DEBUG` when you specify the `/MTd`, `/MDd`, or `/LDd` option. These options specify debug versions of the C run-time library. For more information, see [CRT debugging techniques](./crt-debugging-techniques.md). From 26d3f78a7609912c83c026d50c0473a3a88f7c49 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:19:21 +0800 Subject: [PATCH 055/619] Simplify and add links in `_DEBUG` macro reference --- docs/c-runtime-library/debug.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/c-runtime-library/debug.md b/docs/c-runtime-library/debug.md index cad5919065c..b2c59938525 100644 --- a/docs/c-runtime-library/debug.md +++ b/docs/c-runtime-library/debug.md @@ -7,10 +7,11 @@ ms.assetid: a9901568-4846-4731-a404-399d947e2e7a --- # `_DEBUG` -The compiler defines `_DEBUG` when you specify the `/MTd`, `/MDd`, or `/LDd` option. These options specify debug versions of the C run-time library. +The compiler defines `_DEBUG` when you specify the [`/MTd`](../build/reference/md-mt-ld-use-run-time-library.md), [`/MDd`](../build/reference/md-mt-ld-use-run-time-library.md), or [`/LDd`](../build/reference/md-mt-ld-use-run-time-library.md) option. These options specify debug versions of the C run-time library. -For more information, see [CRT debugging techniques](./crt-debugging-techniques.md). +For more information, see [CRT debugging techniques](crt-debugging-techniques.md). ## See also -[Control flags](./control-flags.md) +[Control flags](control-flags.md)\ +[Predefined macros](../preprocessor/predefined-macros.md) From 84740f300d35ff663660c758cbe65c1d6236b786 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:19:54 +0800 Subject: [PATCH 056/619] Update metadata in `_DEBUG` macro reference --- docs/c-runtime-library/debug.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/c-runtime-library/debug.md b/docs/c-runtime-library/debug.md index b2c59938525..f3d187ab4ff 100644 --- a/docs/c-runtime-library/debug.md +++ b/docs/c-runtime-library/debug.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: _DEBUG" title: "_DEBUG" -ms.date: "11/04/2016" +description: "Learn more about: _DEBUG" +ms.date: 11/04/2016 helpviewer_keywords: ["DEBUG macro", "_DEBUG macro"] -ms.assetid: a9901568-4846-4731-a404-399d947e2e7a --- # `_DEBUG` From cd51765cf374643005f26f8b9fe13fa3949d9740 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:07:23 +0800 Subject: [PATCH 057/619] Adjust link text in ASan `memcpy-param-overlap` error reference --- docs/sanitizers/error-memcpy-param-overlap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/error-memcpy-param-overlap.md b/docs/sanitizers/error-memcpy-param-overlap.md index 5c5c46173de..e8b4d0b5062 100644 --- a/docs/sanitizers/error-memcpy-param-overlap.md +++ b/docs/sanitizers/error-memcpy-param-overlap.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["memcpy-param-overlap error", "AddressSanitizer error memc > Address Sanitizer Error: memcpy-param-overlap > [!NOTE] -> The `/Oi` flag is required to reliably detect `memcpy-param-overlap` errors. This flag tells the compiler to treat `memcpy` and other functions as intrinsics, which is necessary because some versions of the standard library implement them as such. Since ASan is a dynamic analysis tool, it can only detect errors with an observable runtime effect. Note that when `/O2` is also set, ASan may not be able to reliably detect `memcpy-param-overlap` errors because the intrinsic variant of these functions isn't guaranteed to be used. For more information, see [`/Oi` docs](../build/reference/oi-generate-intrinsic-functions.md). +> The `/Oi` flag is required to reliably detect `memcpy-param-overlap` errors. This flag tells the compiler to treat `memcpy` and other functions as intrinsics, which is necessary because some versions of the standard library implement them as such. Since ASan is a dynamic analysis tool, it can only detect errors with an observable runtime effect. Note that when `/O2` is also set, ASan may not be able to reliably detect `memcpy-param-overlap` errors because the intrinsic variant of these functions isn't guaranteed to be used. For more information, see [`/Oi` (Generate Intrinsic Functions)](../build/reference/oi-generate-intrinsic-functions.md). The CRT function [`memcpy`](../c-runtime-library/reference/memcpy-wmemcpy.md) **doesn't support** overlapping memory. The CRT provides an alternative to `memcpy` that does support overlapping memory: [`memmove`](../c-runtime-library/reference/memmove-wmemmove.md). From 7144f8afc4419ebe73ead6937189fa79fb0ff36d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:28:20 +0800 Subject: [PATCH 058/619] Tweak descriptions in `errno` constants reference --- docs/c-runtime-library/errno-constants.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/c-runtime-library/errno-constants.md b/docs/c-runtime-library/errno-constants.md index 57db146f7bd..13b8fa3f675 100644 --- a/docs/c-runtime-library/errno-constants.md +++ b/docs/c-runtime-library/errno-constants.md @@ -34,7 +34,7 @@ The following `errno` values are supported: | `EDEADLK` | Resource deadlock would occur. | 36 | | `EDEADLOCK` | Same as `EDEADLK` for compatibility with older Microsoft C versions. | 36 | | `EDOM` | Math argument. The argument to a math function isn't in the domain of the function. | 33 | -| `EEXIST` | Files exists. An attempt has been made to create a file that already exists. For example, the `_O_CREAT` and `_O_EXCL` flags are specified in an `_open` call, but the named file already exists. | 17 | +| `EEXIST` | File exists. An attempt has been made to create a file that already exists. For example, the `_O_CREAT` and `_O_EXCL` flags are specified in an `_open` call, but the named file already exists. | 17 | | `EFAULT` | Bad address. | 14 | | `EFBIG` | File too large. | 27 | | `EILSEQ` | Illegal sequence of bytes (for example, in an `MBCS` string). | 42 | @@ -50,7 +50,7 @@ The following `errno` values are supported: | `ENOENT` | No such file or directory. The specified file or directory doesn't exist or can't be found. This message can occur whenever a specified file doesn't exist or a component of a path doesn't specify an existing directory. | 2 | | `ENOEXEC` | Exec format error. An attempt was made to execute a file that isn't executable or that has an invalid executable-file format. | 8 | | `ENOLCK` | No locks available. | 39 | -| `ENOMEM` | Not enough memory is available for the attempted operator. For example, this message can occur when insufficient memory is available to execute a child process, or when the allocation request in a `_getcwd` call can't be satisfied. | 12 | +| `ENOMEM` | Not enough memory is available for the attempted operation. For example, this message can occur when insufficient memory is available to execute a child process, or when the allocation request in a `_getcwd` call can't be satisfied. | 12 | | `ENOSPC` | No space left on device. No more space for writing is available on the device (for example, when the disk is full). | 28 | | `ENOSYS` | Function not supported. | 40 | | `ENOTDIR` | Not a directory. | 20 | @@ -60,7 +60,7 @@ The following `errno` values are supported: | `EPERM` | Operation not permitted. | 1 | | `EPIPE` | Broken pipe. | 32 | | `ERANGE` | Result too large. An argument to a math function is too large, resulting in partial or total loss of significance in the result. This error can also occur in other functions when an argument is larger than expected (for example, when the *`buffer`* argument to `_getcwd` is longer than expected). | 34 | -| `EROFS` | Read only file system. | 30 | +| `EROFS` | Read-only file system. | 30 | | `ESPIPE` | Invalid seek. | 29 | | `ESRCH` | No such process. | 3 | | `EXDEV` | Cross-device link. An attempt was made to move a file to a different device (using the `rename` function). | 18 | @@ -84,8 +84,8 @@ The following values are supported for compatibility with POSIX: | `EIDRM` | Identifier removed. | 111 | | `EINPROGRESS` | Operation in progress. | 112 | | `EISCONN` | Already connected. | 113 | -| `ELOOP` | Too many symbolic link levels. | 114 | -| `EMSGSIZE` | Message size. | 115 | +| `ELOOP` | Too many levels of symbolic links. | 114 | +| `EMSGSIZE` | Message too long. | 115 | | `ENETDOWN` | Network down. | 116 | | `ENETRESET` | Network reset. | 117 | | `ENETUNREACH` | Network unreachable. | 118 | From 3e864b8f08b351042ca8e671d68b9a2c1641ac32 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:31:12 +0800 Subject: [PATCH 059/619] Clean up unneeded `./` link prefix in `errno` constants reference --- docs/c-runtime-library/errno-constants.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/c-runtime-library/errno-constants.md b/docs/c-runtime-library/errno-constants.md index 13b8fa3f675..9da8594cefc 100644 --- a/docs/c-runtime-library/errno-constants.md +++ b/docs/c-runtime-library/errno-constants.md @@ -15,11 +15,11 @@ helpviewer_keywords: ["E2BIG constant", "EACCES constant", "EAGAIN constant", "E ## Remarks -The `errno` constants are values assigned to [`errno`](./errno-doserrno-sys-errlist-and-sys-nerr.md) for various error conditions. +The `errno` constants are values assigned to [`errno`](errno-doserrno-sys-errlist-and-sys-nerr.md) for various error conditions. `ERRNO.H` contains the definitions of the `errno` values. However, not all the definitions given in `ERRNO.H` are used in 32-bit Windows operating systems. Some of the values in `ERRNO.H` are present to maintain compatibility with the UNIX family of operating systems. The `errno` values in a 32-bit Windows operating system are a subset of the values for `errno` in UNIX systems. -The `errno` value isn't necessarily the same as the actual error code returned by a system call from the Windows operating system. To access the actual operating system error code, use the [`_doserrno`](./errno-doserrno-sys-errlist-and-sys-nerr.md) variable, which contains this value. +The `errno` value isn't necessarily the same as the actual error code returned by a system call from the Windows operating system. To access the actual operating system error code, use the [`_doserrno`](errno-doserrno-sys-errlist-and-sys-nerr.md) variable, which contains this value. The following `errno` values are supported: @@ -64,7 +64,7 @@ The following `errno` values are supported: | `ESPIPE` | Invalid seek. | 29 | | `ESRCH` | No such process. | 3 | | `EXDEV` | Cross-device link. An attempt was made to move a file to a different device (using the `rename` function). | 18 | -| `STRUNCATE` | A string copy or concatenation resulted in a truncated string. See [`_TRUNCATE`](./truncate.md). | 80 | +| `STRUNCATE` | A string copy or concatenation resulted in a truncated string. See [`_TRUNCATE`](truncate.md). | 80 | The following values are supported for compatibility with POSIX: @@ -114,4 +114,4 @@ The following values are supported for compatibility with POSIX: ## See also -[Global constants](./global-constants.md) +[Global constants](global-constants.md) From d348684dd6128802b1c20f7a51147b0f235f2ea8 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:32:11 +0800 Subject: [PATCH 060/619] Move `title` metadata above `description` in `errno` constants reference --- docs/c-runtime-library/errno-constants.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/errno-constants.md b/docs/c-runtime-library/errno-constants.md index 9da8594cefc..20b1f808cd2 100644 --- a/docs/c-runtime-library/errno-constants.md +++ b/docs/c-runtime-library/errno-constants.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: errno constants" title: "errno constants" +description: "Learn more about: errno constants" ms.date: 04/26/2021 f1_keywords: ["E2BIG", "EACCES", "EAGAIN", "EBADF", "EBUSY", "ECHILD", "EDEADLK", "EDEADLOCK", "EDOM", "EEXIST", "EFAULT", "EFBIG", "EILSEQ", "EINTR", "EINVAL", "EIO", "EISDIR", "EMFILE", "EMLINK", "ENAMETOOLONG", "ENFILE", "ENODEV", "ENOENT", "ENOEXEC", "ENOLCK", "ENOMEM", "ENOSPC", "ENOSYS", "ENOTDIR", "ENOTEMPTY", "ENOTTY", "ENXIO", "EPERM", "EPIPE", "ERANGE", "EROFS", "ESPIPE", "ESRCH", "EXDEV", "STRUNCATE", "EADDRINUSE", "EADDRNOTAVAIL", "EAFNOSUPPORT", "EALREADY", "EBADMSG", "ECANCELED", "ECONNABORTED", "ECONNREFUSED", "ECONNRESET", "EDESTADDRREQ", "EHOSTUNREACH", "EIDRM", "EINPROGRESS", "EISCONN", "ELOOP", "EMSGSIZE", "ENETDOWN", "ENETRESET", "ENETUNREACH", "ENOBUFS", "ENODATA", "ENOLINK", "ENOMSG", "ENOPROTOOPT", "ENOSR", "ENOSTR", "ENOTCONN", "ENOTRECOVERABLE", "ENOTSOCK", "ENOTSUP", "EOPNOTSUPP", "EOTHER", "EOVERFLOW", "EOWNERDEAD", "EPROTO", "EPROTONOSUPPORT", "EPROTOTYPE", "ETIME", "ETIMEDOUT", "ETXTBSY", "EWOULDBLOCK"] helpviewer_keywords: ["E2BIG constant", "EACCES constant", "EAGAIN constant", "EBADF constant", "EBUSY constant", "ECHILD constant", "EDEADLK constant", "EDEADLOCK constant", "EDOM constant", "EEXIST constant", "EFAULT constant", "EFBIG constant", "EILSEQ constant", "EINTR constant", "EINVAL constant", "EIO constant", "EISDIR constant", "EMFILE constant", "EMLINK constant", "ENAMETOOLONG constant", "ENFILE constant", "ENODEV constant", "ENOENT constant", "ENOEXEC constant", "ENOLCK constant", "ENOMEM constant", "ENOSPC constant", "ENOSYS constant", "ENOTDIR constant", "ENOTEMPTY constant", "ENOTTY constant", "ENXIO constant", "EPERM constant", "EPIPE constant", "ERANGE constant", "EROFS constant", "ESPIPE constant", "ESRCH constant", "EXDEV constant", "STRUNCATE constant", "EADDRINUSE constant", "EADDRNOTAVAIL constant", "EAFNOSUPPORT constant", "EALREADY constant", "EBADMSG constant", "ECANCELED constant", "ECONNABORTED constant", "ECONNREFUSED constant", "ECONNRESET constant", "EDESTADDRREQ constant", "EHOSTUNREACH constant", "EIDRM constant", "EINPROGRESS constant", "EISCONN constant", "ELOOP constant", "EMSGSIZE constant", "ENETDOWN constant", "ENETRESET constant", "ENETUNREACH constant", "ENOBUFS constant", "ENODATA constant", "ENOLINK constant", "ENOMSG constant", "ENOPROTOOPT constant", "ENOSR constant", "ENOSTR constant", "ENOTCONN constant", "ENOTRECOVERABLE constant", "ENOTSOCK constant", "ENOTSUP constant", "EOPNOTSUPP constant", "EOTHER constant", "EOVERFLOW constant", "EOWNERDEAD constant", "EPROTO constant", "EPROTONOSUPPORT constant", "EPROTOTYPE constant", "ETIME constant", "ETIMEDOUT constant", "ETXTBSY constant", "EWOULDBLOCK constant"] From 8bd2bc7d00fe379d40a4816ad5711b3cc159c9cc Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:56:20 +0800 Subject: [PATCH 061/619] Convert Expression evaluator errors list into a table --- ...valuator-errors-cxx0000-through-cxx0072.md | 136 +++++++++--------- 1 file changed, 69 insertions(+), 67 deletions(-) diff --git a/docs/error-messages/tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md b/docs/error-messages/tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md index 3347b385f8a..2b8aac4220d 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md +++ b/docs/error-messages/tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md @@ -12,73 +12,75 @@ This section is a reference to the errors generated by the debugger and diagnost ## Expression evaluator error messages -[Expression evaluator error CXX0000](expression-evaluator-error-cxx0000.md) \ -[Expression evaluator error CXX0001](expression-evaluator-error-cxx0001.md) \ -[Expression evaluator error CXX0002](expression-evaluator-error-cxx0002.md) \ -[Expression evaluator error CXX0004](expression-evaluator-error-cxx0004.md) \ -[Expression evaluator error CXX0005](expression-evaluator-error-cxx0005.md) \ -[Expression evaluator error CXX0006](expression-evaluator-error-cxx0006.md) \ -[Expression evaluator error CXX0007](expression-evaluator-error-cxx0007.md) \ -[Expression evaluator error CXX0008](expression-evaluator-error-cxx0008.md) \ -[Expression evaluator error CXX0009](expression-evaluator-error-cxx0009.md) \ -[Expression evaluator error CXX0010](expression-evaluator-error-cxx0010.md) \ -[Expression evaluator error CXX0011](expression-evaluator-error-cxx0011.md) \ -[Expression evaluator error CXX0012](expression-evaluator-error-cxx0012.md) \ -[Expression evaluator error CXX0013](expression-evaluator-error-cxx0013.md) \ -[Expression evaluator error CXX0014](expression-evaluator-error-cxx0014.md) \ -[Expression evaluator error CXX0015](expression-evaluator-error-cxx0015.md) \ -[Expression evaluator error CXX0016](expression-evaluator-error-cxx0016.md) \ -[Expression evaluator error CXX0017](expression-evaluator-error-cxx0017.md) \ -[Expression evaluator error CXX0018](expression-evaluator-error-cxx0018.md) \ -[Expression evaluator error CXX0019](expression-evaluator-error-cxx0019.md) \ -[Expression evaluator error CXX0020](expression-evaluator-error-cxx0020.md) \ -[Expression evaluator error CXX0021](expression-evaluator-error-cxx0021.md) \ -[Expression evaluator error CXX0022](expression-evaluator-error-cxx0022.md) \ -[Expression evaluator error CXX0023](expression-evaluator-error-cxx0023.md) \ -[Expression evaluator error CXX0024](expression-evaluator-error-cxx0024.md) \ -[Expression evaluator error CXX0025](expression-evaluator-error-cxx0025.md) \ -[Expression evaluator error CXX0026](expression-evaluator-error-cxx0026.md) \ -[Expression evaluator error CXX0027](expression-evaluator-error-cxx0027.md) \ -[Expression evaluator error CXX0028](expression-evaluator-error-cxx0028.md) \ -[Expression evaluator error CXX0029](expression-evaluator-error-cxx0029.md) \ -[Expression evaluator error CXX0030](expression-evaluator-error-cxx0030.md) \ -[Expression evaluator error CXX0031](expression-evaluator-error-cxx0031.md) \ -[Expression evaluator error CXX0032](expression-evaluator-error-cxx0032.md) \ -[Expression evaluator error CXX0033](expression-evaluator-error-cxx0033.md) \ -[Expression evaluator error CXX0034](expression-evaluator-error-cxx0034.md) \ -[Expression evaluator error CXX0036](expression-evaluator-error-cxx0036.md) \ -[Expression evaluator error CXX0037](expression-evaluator-error-cxx0037.md) \ -[Expression evaluator error CXX0038](expression-evaluator-error-cxx0038.md) \ -[Expression evaluator error CXX0039](expression-evaluator-error-cxx0039.md) \ -[Expression evaluator error CXX0040](expression-evaluator-error-cxx0040.md) \ -[Expression evaluator error CXX0041](expression-evaluator-error-cxx0041.md) \ -[Expression evaluator error CXX0043](expression-evaluator-error-cxx0043.md) \ -[Expression evaluator error CXX0044](expression-evaluator-error-cxx0044.md) \ -[Expression evaluator error CXX0045](expression-evaluator-error-cxx0045.md) \ -[Expression evaluator error CXX0046](expression-evaluator-error-cxx0046.md) \ -[Expression evaluator error CXX0047](expression-evaluator-error-cxx0047.md) \ -[Expression evaluator error CXX0048](expression-evaluator-error-cxx0048.md) \ -[Expression evaluator error CXX0049](expression-evaluator-error-cxx0049.md) \ -[Expression evaluator error CXX0050](expression-evaluator-error-cxx0050.md) \ -[Expression evaluator error CXX0051](expression-evaluator-error-cxx0051.md) \ -[Expression evaluator error CXX0052](expression-evaluator-error-cxx0052.md) \ -[Expression evaluator error CXX0053](expression-evaluator-error-cxx0053.md) \ -[Expression evaluator error CXX0054](expression-evaluator-error-cxx0054.md) \ -[Expression evaluator error CXX0055](expression-evaluator-error-cxx0055.md) \ -[Expression evaluator error CXX0056](expression-evaluator-error-cxx0056.md) \ -[Expression evaluator error CXX0057](expression-evaluator-error-cxx0057.md) \ -[Expression evaluator error CXX0058](expression-evaluator-error-cxx0058.md) \ -[Expression evaluator error CXX0059](expression-evaluator-error-cxx0059.md) \ -[Expression evaluator error CXX0060](expression-evaluator-error-cxx0060.md) \ -[Expression evaluator error CXX0061](expression-evaluator-error-cxx0061.md) \ -[Expression evaluator error CXX0062](expression-evaluator-error-cxx0062.md) \ -[Expression evaluator error CXX0063](expression-evaluator-error-cxx0063.md) \ -[Expression evaluator error CXX0064](expression-evaluator-error-cxx0064.md) \ -[Expression evaluator error CXX0065](expression-evaluator-error-cxx0065.md) \ -[Expression evaluator error CXX0066](expression-evaluator-error-cxx0066.md) \ -[Expression evaluator error CXX0067](expression-evaluator-error-cxx0067.md) \ -[Expression evaluator error CXX0069](expression-evaluator-error-cxx0069.md) \ -[Expression evaluator error CXX0072](expression-evaluator-error-cxx0072.md) +| Error | Message | +|--|--| +| [Expression evaluator error CXX0000](expression-evaluator-error-cxx0000.md) | no error condition | +| [Expression evaluator error CXX0001](expression-evaluator-error-cxx0001.md) | exception executing user function | +| [Expression evaluator error CXX0002](expression-evaluator-error-cxx0002.md) | error accessing user memory | +| [Expression evaluator error CXX0004](expression-evaluator-error-cxx0004.md) | syntax error | +| [Expression evaluator error CXX0005](expression-evaluator-error-cxx0005.md) | operator not supported | +| [Expression evaluator error CXX0006](expression-evaluator-error-cxx0006.md) | missing left parenthesis | +| [Expression evaluator error CXX0007](expression-evaluator-error-cxx0007.md) | missing right parenthesis | +| [Expression evaluator error CXX0008](expression-evaluator-error-cxx0008.md) | missing " at end of string | +| [Expression evaluator error CXX0009](expression-evaluator-error-cxx0009.md) | missing ' after character constant | +| [Expression evaluator error CXX0010](expression-evaluator-error-cxx0010.md) | missing left bracket | +| [Expression evaluator error CXX0011](expression-evaluator-error-cxx0011.md) | missing right bracket | +| [Expression evaluator error CXX0012](expression-evaluator-error-cxx0012.md) | missing left curly brace | +| [Expression evaluator error CXX0013](expression-evaluator-error-cxx0013.md) | missing operator | +| [Expression evaluator error CXX0014](expression-evaluator-error-cxx0014.md) | missing operand | +| [Expression evaluator error CXX0015](expression-evaluator-error-cxx0015.md) | expression too complex (stack overflow) | +| [Expression evaluator error CXX0016](expression-evaluator-error-cxx0016.md) | constant too big | +| [Expression evaluator error CXX0017](expression-evaluator-error-cxx0017.md) | symbol not found | +| [Expression evaluator error CXX0018](expression-evaluator-error-cxx0018.md) | bad register name | +| [Expression evaluator error CXX0019](expression-evaluator-error-cxx0019.md) | bad type cast | +| [Expression evaluator error CXX0020](expression-evaluator-error-cxx0020.md) | operand types bad for this operation | +| [Expression evaluator error CXX0021](expression-evaluator-error-cxx0021.md) | struct or union used as scalar | +| [Expression evaluator error CXX0022](expression-evaluator-error-cxx0022.md) | function call before _main | +| [Expression evaluator error CXX0023](expression-evaluator-error-cxx0023.md) | bad radix | +| [Expression evaluator error CXX0024](expression-evaluator-error-cxx0024.md) | operation needs l-value | +| [Expression evaluator error CXX0025](expression-evaluator-error-cxx0025.md) | operator needs struct/union | +| [Expression evaluator error CXX0026](expression-evaluator-error-cxx0026.md) | bad format string | +| [Expression evaluator error CXX0027](expression-evaluator-error-cxx0027.md) | tp addr not l-value | +| [Expression evaluator error CXX0028](expression-evaluator-error-cxx0028.md) | not struct/union element | +| [Expression evaluator error CXX0029](expression-evaluator-error-cxx0029.md) | not struct pointer | +| [Expression evaluator error CXX0030](expression-evaluator-error-cxx0030.md) | expression not evaluatable | +| [Expression evaluator error CXX0031](expression-evaluator-error-cxx0031.md) | expression not expandable | +| [Expression evaluator error CXX0032](expression-evaluator-error-cxx0032.md) | divide by 0 | +| [Expression evaluator error CXX0033](expression-evaluator-error-cxx0033.md) | error in OMF type information | +| [Expression evaluator error CXX0034](expression-evaluator-error-cxx0034.md) | types incompatible with operator | +| [Expression evaluator error CXX0036](expression-evaluator-error-cxx0036.md) | bad context {...} specification | +| [Expression evaluator error CXX0037](expression-evaluator-error-cxx0037.md) | out of memory | +| [Expression evaluator error CXX0038](expression-evaluator-error-cxx0038.md) | function argument count and/or type mismatch | +| [Expression evaluator error CXX0039](expression-evaluator-error-cxx0039.md) | symbol is ambiguous | +| [Expression evaluator error CXX0040](expression-evaluator-error-cxx0040.md) | function requires implicit conversion | +| [Expression evaluator error CXX0041](expression-evaluator-error-cxx0041.md) | class element must be static member or member function | +| [Expression evaluator error CXX0043](expression-evaluator-error-cxx0043.md) | this pointer used outside member function | +| [Expression evaluator error CXX0044](expression-evaluator-error-cxx0044.md) | use of _based(void) pointer requires :> operator | +| [Expression evaluator error CXX0045](expression-evaluator-error-cxx0045.md) | not a function | +| [Expression evaluator error CXX0046](expression-evaluator-error-cxx0046.md) | argument list required for member function | +| [Expression evaluator error CXX0047](expression-evaluator-error-cxx0047.md) | argument list does not match a function | +| [Expression evaluator error CXX0048](expression-evaluator-error-cxx0048.md) | calling sequence not supported | +| [Expression evaluator error CXX0049](expression-evaluator-error-cxx0049.md) | obsolete OMF - please relink program | +| [Expression evaluator error CXX0050](expression-evaluator-error-cxx0050.md) | left side of :: must be class/struct/union | +| [Expression evaluator error CXX0051](expression-evaluator-error-cxx0051.md) | more than one overloaded symbol specified in breakpoint | +| [Expression evaluator error CXX0052](expression-evaluator-error-cxx0052.md) | member function not present | +| [Expression evaluator error CXX0053](expression-evaluator-error-cxx0053.md) | nonfunction symbol match while binding breakpoints | +| [Expression evaluator error CXX0054](expression-evaluator-error-cxx0054.md) | register in breakpoint expression illegal | +| [Expression evaluator error CXX0055](expression-evaluator-error-cxx0055.md) | ambiguous symbol in context operator | +| [Expression evaluator error CXX0056](expression-evaluator-error-cxx0056.md) | error in line number | +| [Expression evaluator error CXX0057](expression-evaluator-error-cxx0057.md) | no code at line number | +| [Expression evaluator error CXX0058](expression-evaluator-error-cxx0058.md) | overloaded operator not found | +| [Expression evaluator error CXX0059](expression-evaluator-error-cxx0059.md) | left operand is class not a function name | +| [Expression evaluator error CXX0060](expression-evaluator-error-cxx0060.md) | register is not available | +| [Expression evaluator error CXX0061](expression-evaluator-error-cxx0061.md) | function nesting depth exceeded | +| [Expression evaluator error CXX0062](expression-evaluator-error-cxx0062.md) | constructor calls not supported | +| [Expression evaluator error CXX0063](expression-evaluator-error-cxx0063.md) | overloaded operator -> not supported | +| [Expression evaluator error CXX0064](expression-evaluator-error-cxx0064.md) | can't set breakpoint on bound virtual member function | +| [Expression evaluator error CXX0065](expression-evaluator-error-cxx0065.md) | variable needs stack frame | +| [Expression evaluator error CXX0066](expression-evaluator-error-cxx0066.md) | static member not present | +| [Expression evaluator error CXX0067](expression-evaluator-error-cxx0067.md) | function evaluation not supported | +| [Expression evaluator error CXX0069](expression-evaluator-error-cxx0069.md) | variable needs stack frame | +| [Expression evaluator error CXX0072](expression-evaluator-error-cxx0072.md) | Error: type information missing or unknown | ## See also From c053abc0847aadc1641b258ea70a64396420ad3e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:57:28 +0800 Subject: [PATCH 062/619] Simplify superfluous relative links in "Expression evaluator errors (CXXxxxx)" --- .../expression-evaluator-errors-cxx0000-through-cxx0072.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md b/docs/error-messages/tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md index 2b8aac4220d..8132169f9f6 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md +++ b/docs/error-messages/tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md @@ -8,7 +8,7 @@ ms.assetid: a47a9866-7fb2-4b21-978c-2b77402c7105 This section is a reference to the errors generated by the debugger and diagnostics tools. These tools generate errors of the form CXX*xxxx* or CAN*xxxx*, where *xxxx* is a four-digit number. -[!INCLUDE[error-boilerplate](../../error-messages/includes/error-boilerplate.md)] +[!INCLUDE[error-boilerplate](../includes/error-boilerplate.md)] ## Expression evaluator error messages From 6ee25957250e3ab7ade5152123ac441a00122999 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:59:36 +0800 Subject: [PATCH 063/619] Update metadata in "Expression evaluator errors (CXXxxxx)" --- .../expression-evaluator-errors-cxx0000-through-cxx0072.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md b/docs/error-messages/tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md index 8132169f9f6..a35f769cf05 100644 --- a/docs/error-messages/tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md +++ b/docs/error-messages/tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: Expression evaluator errors (CXXxxxx)" title: "Expression evaluator errors" -ms.date: "04/16/2019" -ms.assetid: a47a9866-7fb2-4b21-978c-2b77402c7105 +description: "Learn more about: Expression evaluator errors (CXXxxxx)" +ms.date: 04/16/2019 --- # Expression evaluator errors (CXXxxxx) From 747deb3672c5e87120e92e04ae399ef069a36bed Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 18:06:51 +0800 Subject: [PATCH 064/619] Add new C4862 in "Microsoft C/C++ compiler warnings C4800 through C4999" --- .../compiler-warnings-c4800-through-c4999.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md index 604fdbc580c..3ac4f3718a5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md @@ -2,8 +2,8 @@ title: "Microsoft C/C++ compiler (MSVC) warnings C4800 through C4999" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C4800 through C4999." ms.date: 04/17/2024 -f1_keywords: ["C4801", "C4808", "C4809", "C4815", "C4826", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"] -helpviewer_keywords: ["C4801", "C4808", "C4809", "C4815", "C4826", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"] +f1_keywords: ["C4801", "C4808", "C4809", "C4815", "C4826", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4862", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"] +helpviewer_keywords: ["C4801", "C4808", "C4809", "C4815", "C4826", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4862", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"] --- # Microsoft C/C++ compiler warnings C4800 through C4999 @@ -63,6 +63,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages | Compiler warning (level 4) C4859 | '*value*' is not a valid argument for '`/presetWarn`': it must be a decimal value > 0. Command-line flag ignored | | Compiler warning (level 4) C4860 | '*object name*': compiler zero initialized '*number*' bytes of storage | | Compiler warning (level 4) C4861 | compiler zero initialized '*number*' bytes of storage | +| Compiler warning (level 1) C4862 | justification property is not allowed with more than one warning number | | [Compiler warning (level 4) C4866](c4866.md) | compiler may not enforce left-to-right evaluation order for call to *operator_name* | | [Compiler warning (level 1, error) C4867](compiler-warning-c4867.md) |'*function name*': non-standard syntax; use '`&`' to create a pointer to member| | [Compiler warning (level 4) C4868](compiler-warning-c4868.md) | '*file*(*line_number*)' compiler may not enforce left-to-right evaluation order in braced initialization list | From 73e4301ded999717b61d9476ba999d3e23d6a8d6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 18:11:24 +0800 Subject: [PATCH 065/619] Add boilerplate for version 17.14 in "Compiler Warnings by compiler version" --- .../compiler-warnings-by-compiler-version.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md index f68e772b833..75ab891de43 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md @@ -12,6 +12,7 @@ These versions of the compiler introduced new warnings: | Product | Compiler version number | |--|--| +| Visual Studio 2022 version 17.14 | 19.44 | | Visual Studio 2022 version 17.13 | 19.43 | | Visual Studio 2022 version 17.12 | 19.42 | | Visual Studio 2022 version 17.11 | 19.41 | @@ -63,6 +64,13 @@ The following sections list the warnings introduced by each version of Visual C+ ::: moniker range=">= msvc-170" +## Warnings introduced in Visual Studio 2022 version 17.14 (compiler version 19.44) + +These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.43`**. + +| Warning | Message | +|--|--| + ## Warnings introduced in Visual Studio 2022 version 17.13 (compiler version 19.43) These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.42`**. From 5d5bfd762fb0ee6cd8472c85dec78bb093fa33a3 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 18:12:48 +0800 Subject: [PATCH 066/619] Add new C4862 in "Compiler Warnings by compiler version" --- .../compiler-warnings/compiler-warnings-by-compiler-version.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md index 75ab891de43..d5706dfc19c 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md @@ -70,6 +70,7 @@ These warnings, and all warnings in later versions, are suppressed by using the | Warning | Message | |--|--| +| C4862 | justification property is not allowed with more than one warning number | ## Warnings introduced in Visual Studio 2022 version 17.13 (compiler version 19.43) From 68ef6ad6315e7a5fa8bee80f2a30cf8a7f25d03a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 18:50:45 +0800 Subject: [PATCH 067/619] Convert Resource compiler errors and warnings list into a table --- ...e-compiler-errors-rc1000-through-rc4413.md | 152 +++++++++--------- 1 file changed, 79 insertions(+), 73 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md index bc1f2f17fe6..609527c192b 100644 --- a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md +++ b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md @@ -11,85 +11,91 @@ This section is a reference to the errors generated by the resource compiler. Re ## Resource compiler fatal errors -[Resource compiler fatal error RC1002](resource-compiler-fatal-error-rc1002.md) \ -[Resource compiler fatal error RC1004](resource-compiler-fatal-error-rc1004.md) \ -[Resource compiler fatal error RC1009](resource-compiler-fatal-error-rc1009.md) \ -[Resource compiler fatal error RC1011](resource-compiler-fatal-error-rc1011.md) \ -[Resource compiler fatal error RC1015](resource-compiler-fatal-error-rc1015.md) \ -[Resource compiler fatal error RC1017](resource-compiler-fatal-error-rc1017.md) \ -[Resource compiler fatal error RC1018](resource-compiler-fatal-error-rc1018.md) \ -[Resource compiler fatal error RC1019](resource-compiler-fatal-error-rc1019.md) \ -[Resource compiler fatal error RC1020](resource-compiler-fatal-error-rc1020.md) \ -[Resource compiler fatal error RC1021](resource-compiler-fatal-error-rc1021.md) \ -[Resource compiler fatal error RC1022](resource-compiler-fatal-error-rc1022.md) \ -[Resource compiler fatal error RC1047](resource-compiler-fatal-error-rc1047.md) \ -[Resource compiler fatal error RC1052](resource-compiler-fatal-error-rc1052.md) \ -[Resource compiler fatal error RC1067](resource-compiler-fatal-error-rc1067.md) \ -[Resource compiler fatal error RC1101](resource-compiler-fatal-error-rc1101.md) \ -[Resource compiler fatal error RC1102](resource-compiler-fatal-error-rc1102.md) \ -[Resource compiler fatal error RC1105](resource-compiler-fatal-error-rc1105.md) \ -[Resource compiler fatal error RC1109](resource-compiler-fatal-error-rc1109.md) \ -[Resource compiler fatal error RC1116](resource-compiler-fatal-error-rc1116.md) \ -[Resource compiler fatal error RC1120](resource-compiler-fatal-error-rc1120.md) \ -[Resource compiler fatal error RC1121](resource-compiler-fatal-error-rc1121.md) \ -[Resource compiler fatal error RC1203](resource-compiler-fatal-error-rc1203.md) \ -[Resource compiler fatal error RC1205](resource-compiler-fatal-error-rc1205.md) \ -[Resource compiler fatal error RC1208](resource-compiler-fatal-error-rc1208.md) \ -[Resource compiler fatal error RW1004](resource-compiler-fatal-error-rw1004.md) \ -[Resource compiler fatal error RW1009](resource-compiler-fatal-error-rw1009.md) \ -[Resource compiler fatal error RW1016](resource-compiler-fatal-error-rw1016.md) \ -[Resource compiler fatal error RW1022](resource-compiler-fatal-error-rw1022.md) \ -[Resource compiler fatal error RW1023](resource-compiler-fatal-error-rw1023.md) \ -[Resource compiler fatal error RW1025](resource-compiler-fatal-error-rw1025.md) \ -[Resource compiler fatal error RW1030](resource-compiler-fatal-error-rw1030.md) +| Error | Message | +|--|--| +| [Resource compiler fatal error RC1002](resource-compiler-fatal-error-rc1002.md) | out of heap space | +| [Resource compiler fatal error RC1004](resource-compiler-fatal-error-rc1004.md) | unexpected end of file found | +| [Resource compiler fatal error RC1009](resource-compiler-fatal-error-rc1009.md) | compiler limit : macros too deeply nested 'macro' | +| [Resource compiler fatal error RC1011](resource-compiler-fatal-error-rc1011.md) | compiler limit : 'identifier' : macro definition too big | +| [Resource compiler fatal error RC1015](resource-compiler-fatal-error-rc1015.md) | cannot open include file 'filename' | +| [Resource compiler fatal error RC1017](resource-compiler-fatal-error-rc1017.md) | invalid integer constant expression | +| [Resource compiler fatal error RC1018](resource-compiler-fatal-error-rc1018.md) | unexpected '#elif' | +| [Resource compiler fatal error RC1019](resource-compiler-fatal-error-rc1019.md) | unexpected '#else' | +| [Resource compiler fatal error RC1020](resource-compiler-fatal-error-rc1020.md) | unexpected '#endif' | +| [Resource compiler fatal error RC1021](resource-compiler-fatal-error-rc1021.md) | invalid preprocessor command 'string' | +| [Resource compiler fatal error RC1022](resource-compiler-fatal-error-rc1022.md) | expected '#endif' | +| [Resource compiler fatal error RC1047](resource-compiler-fatal-error-rc1047.md) | "too many option options, 'string'" | +| [Resource compiler fatal error RC1052](resource-compiler-fatal-error-rc1052.md) | compiler limit : #if or #ifdef blocks nested too deeply | +| [Resource compiler fatal error RC1067](resource-compiler-fatal-error-rc1067.md) | compiler limit : identifier overflowed internal buffer | +| [Resource compiler fatal error RC1101](resource-compiler-fatal-error-rc1101.md) | no resource binary filename specified | +| [Resource compiler fatal error RC1102](resource-compiler-fatal-error-rc1102.md) | internal error : too many arguments to RCPP | +| [Resource compiler fatal error RC1105](resource-compiler-fatal-error-rc1105.md) | invalid switch, option: too many /d switches | +| [Resource compiler fatal error RC1109](resource-compiler-fatal-error-rc1109.md) | error creating resource-name | +| [Resource compiler fatal error RC1116](resource-compiler-fatal-error-rc1116.md) | RC terminating after preprocessor errors | +| [Resource compiler fatal error RC1120](resource-compiler-fatal-error-rc1120.md) | out of memory, needed number bytes | +| [Resource compiler fatal error RC1121](resource-compiler-fatal-error-rc1121.md) | I/O error reading file | +| [Resource compiler fatal error RC1203](resource-compiler-fatal-error-rc1203.md) | invalid hexadecimal default language ID specified. | +| [Resource compiler fatal error RC1205](resource-compiler-fatal-error-rc1205.md) | invalid code page | +| [Resource compiler fatal error RC1208](resource-compiler-fatal-error-rc1208.md) | input file has .RES extension | +| [Resource compiler fatal error RW1004](resource-compiler-fatal-error-rw1004.md) | Unexpected end of file | +| [Resource compiler fatal error RW1009](resource-compiler-fatal-error-rw1009.md) | Error creating resource-name | +| [Resource compiler fatal error RW1016](resource-compiler-fatal-error-rw1016.md) | RC terminating after preprocessor errors | +| [Resource compiler fatal error RW1022](resource-compiler-fatal-error-rw1022.md) | I/O error writing file | +| [Resource compiler fatal error RW1023](resource-compiler-fatal-error-rw1023.md) | I/O error writing file, drive full | +| [Resource compiler fatal error RW1025](resource-compiler-fatal-error-rw1025.md) | Out of far heap memory | +| [Resource compiler fatal error RW1030](resource-compiler-fatal-error-rw1030.md) | Output Error | ## Resource compiler errors -[Resource compiler error RC2001](resource-compiler-error-rc2001.md) \ -[Resource compiler error RC2007](resource-compiler-error-rc2007.md) \ -[Resource compiler error RC2015](resource-compiler-error-rc2015.md) \ -[Resource compiler error RC2017](resource-compiler-error-rc2017.md) \ -[Resource compiler error RC2101](resource-compiler-error-rc2101.md) \ -[Resource compiler error RC2103](resource-compiler-error-rc2103.md) \ -[Resource compiler error RC2104](resource-compiler-error-rc2104.md) \ -[Resource compiler error RC2107](resource-compiler-error-rc2107.md) \ -[Resource compiler error RC2109](resource-compiler-error-rc2109.md) \ -[Resource compiler error RC2111](resource-compiler-error-rc2111.md) \ -[Resource compiler error RC2112](resource-compiler-error-rc2112.md) \ -[Resource compiler error RC2113](resource-compiler-error-rc2113.md) \ -[Resource compiler error RC2114](resource-compiler-error-rc2114.md) \ -[Resource compiler error RC2116](resource-compiler-error-rc2116.md) \ -[Resource compiler error RC2122](resource-compiler-error-rc2122.md) \ -[Resource compiler error RC2124](resource-compiler-error-rc2124.md) \ -[Resource compiler error RC2127](resource-compiler-error-rc2127.md) \ -[Resource compiler error RC2135](resource-compiler-error-rc2135.md) \ -[Resource compiler error RC2144](resource-compiler-error-rc2144.md) \ -[Resource compiler error RC2147](resource-compiler-error-rc2147.md) \ -[Resource compiler error RC2148](resource-compiler-error-rc2148.md) \ -[Resource compiler error RC2151](resource-compiler-error-rc2151.md) \ -[Resource compiler error RC2152](resource-compiler-error-rc2152.md) \ -[Resource compiler error RC2162](resource-compiler-error-rc2162.md) \ -[Resource compiler error RC2163](resource-compiler-error-rc2163.md) \ -[Resource compiler error RC2164](resource-compiler-error-rc2164.md) \ -[Resource compiler error RC2165](resource-compiler-error-rc2165.md) \ -[Resource compiler error RC2167](resource-compiler-error-rc2167.md) \ -[Resource compiler error RC2169](resource-compiler-error-rc2169.md) \ -[Resource compiler error RC2170](resource-compiler-error-rc2170.md) \ -[Resource compiler error RC2171](resource-compiler-error-rc2171.md) \ -[Resource compiler error RC2175](resource-compiler-error-rc2175.md) \ -[Resource compiler error RW2001](resource-compiler-error-rw2001.md) \ -[Resource compiler error RW2002](resource-compiler-error-rw2002.md) \ -[Resource compiler error RW2003](resource-compiler-error-rw2003.md) +| Error | Message | +|--|--| +| [Resource compiler error RC2001](resource-compiler-error-rc2001.md) | newline in constant | +| [Resource compiler error RC2007](resource-compiler-error-rc2007.md) | #define syntax | +| [Resource compiler error RC2015](resource-compiler-error-rc2015.md) | too many chars in constant | +| [Resource compiler error RC2017](resource-compiler-error-rc2017.md) | illegal escape sequence | +| [Resource compiler error RC2101](resource-compiler-error-rc2101.md) | Invalid directive in preprocessed RC file | +| [Resource compiler error RC2103](resource-compiler-error-rc2103.md) | unexpected end of file in string literal | +| [Resource compiler error RC2104](resource-compiler-error-rc2104.md) | undefined keyword or key name: key | +| [Resource compiler error RC2107](resource-compiler-error-rc2107.md) | expected numeric command value | +| [Resource compiler error RC2109](resource-compiler-error-rc2109.md) | expected numerical dialog constant | +| [Resource compiler error RC2111](resource-compiler-error-rc2111.md) | invalid control type | +| [Resource compiler error RC2112](resource-compiler-error-rc2112.md) | BEGIN expected in dialog | +| [Resource compiler error RC2113](resource-compiler-error-rc2113.md) | END expected in dialog | +| [Resource compiler error RC2114](resource-compiler-error-rc2114.md) | expected control class name | +| [Resource compiler error RC2116](resource-compiler-error-rc2116.md) | expecting number for ID | +| [Resource compiler error RC2122](resource-compiler-error-rc2122.md) | unknown menu subtype | +| [Resource compiler error RC2124](resource-compiler-error-rc2124.md) | empty menus not allowed | +| [Resource compiler error RC2127](resource-compiler-error-rc2127.md) | version WORDs separated by commas expected | +| [Resource compiler error RC2135](resource-compiler-error-rc2135.md) | file not found: filename | +| [Resource compiler error RC2144](resource-compiler-error-rc2144.md) | PRIMARY LANGUAGE ID not a number | +| [Resource compiler error RC2147](resource-compiler-error-rc2147.md) | SUBLANGUAGE ID not a number | +| [Resource compiler error RC2148](resource-compiler-error-rc2148.md) | SUBLANGUAGE ID too large | +| [Resource compiler error RC2151](resource-compiler-error-rc2151.md) | cannot re-use string constants | +| [Resource compiler error RC2152](resource-compiler-error-rc2152.md) | invalid control character | +| [Resource compiler error RC2162](resource-compiler-error-rc2162.md) | expected macro formal parameter | +| [Resource compiler error RC2163](resource-compiler-error-rc2163.md) | accelerator type required [ASCII or VIRTKEY] | +| [Resource compiler error RC2164](resource-compiler-error-rc2164.md) | unexpected value in RCDATA | +| [Resource compiler error RC2165](resource-compiler-error-rc2165.md) | string not found in DLGINCLUDE statement | +| [Resource compiler error RC2167](resource-compiler-error-rc2167.md) | unrecognized VERSIONINFO field; BEGIN or comma expected | +| [Resource compiler error RC2169](resource-compiler-error-rc2169.md) | resource file filename is not in 2.03 format | +| [Resource compiler error RC2170](resource-compiler-error-rc2170.md) | bitmap file filename is not in 3.00 format | +| [Resource compiler error RC2171](resource-compiler-error-rc2171.md) | unknown DIB header format | +| [Resource compiler error RC2175](resource-compiler-error-rc2175.md) | resource file filename is not in 3.00 format | +| [Resource compiler error RW2001](resource-compiler-error-rw2001.md) | Invalid directive in preprocessed RC file | +| [Resource compiler error RW2002](resource-compiler-error-rw2002.md) | Parsing error | +| [Resource compiler error RW2003](resource-compiler-error-rw2003.md) | Generation Error | ## Resource compiler warnings -[Resource compiler warning RC4002](resource-compiler-warning-rc4002.md) \ -[Resource compiler warning RC4005](resource-compiler-warning-rc4005.md) \ -[Resource compiler warning RC4093](resource-compiler-warning-rc4093.md) \ -[Resource compiler warning RC4214](resource-compiler-warning-rc4214.md) \ -[Resource compiler warning RW4001](resource-compiler-warning-rw4001.md) \ -[Resource compiler warning RW4003](resource-compiler-warning-rw4003.md) \ -[Resource compiler warning RW4004](resource-compiler-warning-rw4004.md) +| Warning | Message | +|--|--| +| [Resource compiler warning RC4002](resource-compiler-warning-rc4002.md) | too many actual parameters for macro 'identifier' | +| [Resource compiler warning RC4005](resource-compiler-warning-rc4005.md) | 'identifier' : macro redefinition | +| [Resource compiler warning RC4093](resource-compiler-warning-rc4093.md) | unescaped newline in character constant in inactive code | +| [Resource compiler warning RC4214](resource-compiler-warning-rc4214.md) | Codepage not valid : ignored | +| [Resource compiler warning RW4001](resource-compiler-warning-rw4001.md) | .EXE processing options (/L /M /P /T /K /E /31 or /30) | +| [Resource compiler warning RW4003](resource-compiler-warning-rw4003.md) | SHIFT or CONTROL used without VIRTKEY | +| [Resource compiler warning RW4004](resource-compiler-warning-rw4004.md) | ASCII character not equivalent to virtual key code | ## See also From 960895dd473839a1f1de7559c64bc39b542b4253 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 18:51:59 +0800 Subject: [PATCH 068/619] Simplify superfluous relative links in "Resource compiler errors and warnings (RCxxxx, RWxxxx)" --- .../resource-compiler-errors-rc1000-through-rc4413.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md index 609527c192b..13c91af718c 100644 --- a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md +++ b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md @@ -7,7 +7,7 @@ ms.date: "04/17/2019" This section is a reference to the errors generated by the resource compiler. Resource compiler errors and warnings have the form RC*xxxx* or RW*xxxx*, where *xxxx* is a four-digit number. -[!INCLUDE[error-boilerplate](../../error-messages/includes/error-boilerplate.md)] +[!INCLUDE[error-boilerplate](../includes/error-boilerplate.md)] ## Resource compiler fatal errors From f13676e8a1411a0735ad8c6d9c0f8528fec5b85f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 18:53:00 +0800 Subject: [PATCH 069/619] Remove double quotes for `ms.date` in "Resource compiler errors and warnings (RCxxxx, RWxxxx)" --- .../resource-compiler-errors-rc1000-through-rc4413.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md index 13c91af718c..00125ae5b55 100644 --- a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md +++ b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md @@ -1,7 +1,7 @@ --- title: "Resource compiler errors and warnings" description: "Learn more about: Resource compiler errors and warnings (RCxxxx, RWxxxx)" -ms.date: "04/17/2019" +ms.date: 04/17/2019 --- # Resource compiler errors and warnings (RCxxxx, RWxxxx) From 92eb29ea67188c418a74ddb3896d068f8ed72a6f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:02:44 +0800 Subject: [PATCH 070/619] Remove space before closing parenthesis in title of "Namespaces and Type Visibility (C++/CX)" topic --- docs/cppcx/namespaces-and-type-visibility-c-cx.md | 6 +++--- docs/cppcx/toc.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/cppcx/namespaces-and-type-visibility-c-cx.md b/docs/cppcx/namespaces-and-type-visibility-c-cx.md index 83ed1947d70..2b6464f1268 100644 --- a/docs/cppcx/namespaces-and-type-visibility-c-cx.md +++ b/docs/cppcx/namespaces-and-type-visibility-c-cx.md @@ -1,10 +1,10 @@ --- -description: "Learn more about: Namespaces and Type Visibility (C++/CX )" -title: "Namespaces and Type Visibility (C++/CX )" +description: "Learn more about: Namespaces and Type Visibility (C++/CX)" +title: "Namespaces and Type Visibility (C++/CX)" ms.date: "12/30/2016" ms.assetid: cbc01a3a-3b69-4ded-9c42-ecbf0fd0a00e --- -# Namespaces and Type Visibility (C++/CX ) +# Namespaces and Type Visibility (C++/CX) A namespace is a standard C++ construct for grouping types that have related functionality and for preventing name collisions in libraries. The Windows Runtime type system requires that all public Windows Runtime types, including those in your own code, must be declared in a namespace at namespace scope. Public types that are declared at global scope or nested inside another class will cause a compile-time error. diff --git a/docs/cppcx/toc.yml b/docs/cppcx/toc.yml index edc76e601e7..12708f934f9 100644 --- a/docs/cppcx/toc.yml +++ b/docs/cppcx/toc.yml @@ -13,7 +13,7 @@ items: items: - name: Type system overview href: ../cppcx/type-system-c-cx.md - - name: Namespaces and type visibility (C++/CX ) + - name: Namespaces and type visibility (C++/CX) href: ../cppcx/namespaces-and-type-visibility-c-cx.md - name: Fundamental types href: ../cppcx/fundamental-types-c-cx.md From 7a381737e5cf326f4bad424e3765f4f472f61682 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:06:18 +0800 Subject: [PATCH 071/619] Add backticks in "Namespaces and Type Visibility (C++/CX)" topic --- docs/cppcx/namespaces-and-type-visibility-c-cx.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/cppcx/namespaces-and-type-visibility-c-cx.md b/docs/cppcx/namespaces-and-type-visibility-c-cx.md index 2b6464f1268..75e446358ff 100644 --- a/docs/cppcx/namespaces-and-type-visibility-c-cx.md +++ b/docs/cppcx/namespaces-and-type-visibility-c-cx.md @@ -8,7 +8,7 @@ ms.assetid: cbc01a3a-3b69-4ded-9c42-ecbf0fd0a00e A namespace is a standard C++ construct for grouping types that have related functionality and for preventing name collisions in libraries. The Windows Runtime type system requires that all public Windows Runtime types, including those in your own code, must be declared in a namespace at namespace scope. Public types that are declared at global scope or nested inside another class will cause a compile-time error. -A .winmd file must have the same name that the root namespace has. For example, a class that's named A.B.C.MyClass can be instantiated only if it's defined in a metadata file that's named A.winmd or A.B.winmd or A.B.C.winmd. The name of the executable is not required to match the .winmd file name. +A `.winmd` file must have the same name that the root namespace has. For example, a class that's named `A.B.C.MyClass` can be instantiated only if it's defined in a metadata file that's named `A.winmd` or `A.B.winmd` or `A.B.C.winmd`. The name of the executable is not required to match the `.winmd` file name. ## Type visibility @@ -34,7 +34,7 @@ Use the following access modifiers to control both metadata visibility and sourc ## Windows Runtime namespaces -The Windows API consists of types that are declared in the Windows::\* namespaces. These namespaces are reserved for Windows, and types cannot be added to them. In the **Object Browser**, you can view these namespaces in the windows.winmd file. For documentation about these namespaces, see [Windows API](/uwp/api/). +The Windows API consists of types that are declared in the `Windows::*` namespaces. These namespaces are reserved for Windows, and types cannot be added to them. In the **Object Browser**, you can view these namespaces in the `windows.winmd` file. For documentation about these namespaces, see [Windows API](/uwp/api/). ## C++/CX namespaces @@ -44,7 +44,7 @@ The C++/CX define certain types in these namespaces as part of the projection of |--|--| | default | Contains the built-in numeric and char16 types. These types are in scope in every namespace and a **`using`** statement is never required. | | `Platform` | Contains primarily public types that correspond to Windows Runtime types such as `Array`, `String`, `Guid`, and `Boolean`. Also includes specialized helper types such as `Platform::Agile` and `Platform::Box`. | -| `Platform::Collections` | Contains the concrete collection classes that implement the Windows Runtime collection interfaces `IVector`, `IMap`, and so on. These types are defined in a header file, collection.h, not in platform.winmd. | +| `Platform::Collections` | Contains the concrete collection classes that implement the Windows Runtime collection interfaces `IVector`, `IMap`, and so on. These types are defined in a header file, `collection.h`, not in `platform.winmd`. | | `Platform::Details` | Contains types that are used by the compiler and are not meant for public consumption. | ## See also From 01bbdb8bad8dd994a20000646093a7f663880121 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:08:38 +0800 Subject: [PATCH 072/619] Clean up redundant relative link in "Namespaces and Type Visibility (C++/CX)" topic --- docs/cppcx/namespaces-and-type-visibility-c-cx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cppcx/namespaces-and-type-visibility-c-cx.md b/docs/cppcx/namespaces-and-type-visibility-c-cx.md index 75e446358ff..c45561ec688 100644 --- a/docs/cppcx/namespaces-and-type-visibility-c-cx.md +++ b/docs/cppcx/namespaces-and-type-visibility-c-cx.md @@ -49,4 +49,4 @@ The C++/CX define certain types in these namespaces as part of the projection of ## See also -[Type System (C++/CX)](../cppcx/type-system-c-cx.md) +[Type System (C++/CX)](type-system-c-cx.md) From 47ff16f7fac36ea5d5815145d5ea149b8245cc37 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:12:34 +0800 Subject: [PATCH 073/619] Fix comma in "Namespaces and Type Visibility (C++/CX)" topic --- docs/cppcx/namespaces-and-type-visibility-c-cx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cppcx/namespaces-and-type-visibility-c-cx.md b/docs/cppcx/namespaces-and-type-visibility-c-cx.md index c45561ec688..5b6c19d2af6 100644 --- a/docs/cppcx/namespaces-and-type-visibility-c-cx.md +++ b/docs/cppcx/namespaces-and-type-visibility-c-cx.md @@ -15,7 +15,7 @@ A `.winmd` file must have the same name that the root namespace has. For example In a namespace, Windows Runtime types—unlike standard C++ types—have either private or public accessibility. By default, the accessibility is private. Only a public type is visible to metadata and is therefore consumable from apps and components that might be written in languages other than C++. In general, the rules for visible types are more restrictive than the rules for non-visible types because visible types cannot expose C++-specific concepts that are not supported in .NET languages or JavaScript. > [!NOTE] -> Metadata is only consumed at run time by .NET languages and JavaScript. When a C++ app or component is talking to another C++ app or component—this includes Windows components ,which are all written in C++—then no run-time consumption of metadata is required. +> Metadata is only consumed at run time by .NET languages and JavaScript. When a C++ app or component is talking to another C++ app or component—this includes Windows components, which are all written in C++—then no run-time consumption of metadata is required. ## Member accessibility and visibility From 0d97ec6c2c6872f19ecef0765f43ca2252680b1e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 2 Aug 2025 22:13:04 +0800 Subject: [PATCH 074/619] Update metadata in "Namespaces and Type Visibility (C++/CX)" topic --- docs/cppcx/namespaces-and-type-visibility-c-cx.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/cppcx/namespaces-and-type-visibility-c-cx.md b/docs/cppcx/namespaces-and-type-visibility-c-cx.md index 5b6c19d2af6..c225de9e734 100644 --- a/docs/cppcx/namespaces-and-type-visibility-c-cx.md +++ b/docs/cppcx/namespaces-and-type-visibility-c-cx.md @@ -1,8 +1,7 @@ --- -description: "Learn more about: Namespaces and Type Visibility (C++/CX)" title: "Namespaces and Type Visibility (C++/CX)" -ms.date: "12/30/2016" -ms.assetid: cbc01a3a-3b69-4ded-9c42-ecbf0fd0a00e +description: "Learn more about: Namespaces and Type Visibility (C++/CX)" +ms.date: 12/30/2016 --- # Namespaces and Type Visibility (C++/CX) From 4b080d8c3cfc163e9a858112988cc1c52f01ac68 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 3 Aug 2025 18:24:16 +0800 Subject: [PATCH 075/619] Add missing `f1_keywords` and `helpviewer_keywords` in "Microsoft C/C++ compiler warnings C5200 through C5399" --- .../compiler-warnings-c5200-through-c5399.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md index 1b66790fb1e..0bebc97caa6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md @@ -2,8 +2,8 @@ title: "Microsoft C/C++ compiler (MSVC) compiler warnings C5200 through C5399" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C5200 through C5399." ms.date: 04/19/2024 -f1_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5300", "C5303", "C5304", "C5305"] -helpviewer_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5300", "C5303", "C5304", "C5305"] +f1_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5276", "C5277", "C5278", "C5279", "C5280", "C5281", "C5282", "C5283", "C5284", "C5285", "C5286", "C5287", "C5300", "C5303", "C5304", "C5305", "C5306", "C5307", "C5308", "C5309"] +helpviewer_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5276", "C5277", "C5278", "C5279", "C5280", "C5281", "C5282", "C5283", "C5284", "C5285", "C5286", "C5287", "C5300", "C5303", "C5304", "C5305", "C5306", "C5307", "C5308", "C5309"] --- # Microsoft C/C++ compiler warnings C5200 through C5399 From e05af0fcc984a26fb89dabe0f7abebf7aa6ee455 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 4 Aug 2025 23:46:52 +0800 Subject: [PATCH 076/619] Fix wrong Visual Studio year in "Use the Microsoft C++ toolset from the command line" topic --- docs/build/building-on-the-command-line.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 7b4a452f29b..00e62ede30d 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -89,7 +89,7 @@ If you prefer to set the build environment in an existing command prompt window, ::: moniker range=">= msvc-170" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2019, the typical installation location on a 64-bit system is in *`\Program Files\Microsoft Visual Studio\2022\`*. The *``* may be Community, Professional, Enterprise, BuildTools, or another nickname you supplied. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2022, the typical installation location on a 64-bit system is in *`\Program Files\Microsoft Visual Studio\2022\`*. The *``* may be Community, Professional, Enterprise, BuildTools, or another nickname you supplied. ::: moniker-end ::: moniker range="= msvc-160" From 166ac40867a0c730e546624fc9fe7dd410284167 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 4 Aug 2025 23:50:09 +0800 Subject: [PATCH 077/619] Replace `
` with escapes in "Use the Microsoft C++ toolset from the command line" topic --- docs/build/building-on-the-command-line.md | 32 +++++++++++----------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 00e62ede30d..a83b6da3f9d 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -150,7 +150,7 @@ When used with no arguments, *`vcvarsall.bat`* configures the environment variab > **`vcvarsall.bat`** [*`architecture`*] [*`platform_type`*] [*`winsdk_version`*] [**`-vcvars_ver=`***`vcversion`*] [*`spectre_mode`*] -*`architecture`*
+*`architecture`*\ This optional argument specifies the host and target architecture to use. If *architecture* isn't specified, the default build environment is used. These arguments are supported: | *`architecture`* | Compiler | Host computer architecture | Build output (target) architecture | @@ -164,13 +164,13 @@ This optional argument specifies the host and target architecture to use. If *ar | `amd64_arm` or `x64_arm` | ARM on x64 cross | x64 | ARM | | `amd64_arm64` or `x64_arm64` | ARM64 on x64 cross | x64 | ARM64 | -*`platform_type`*
+*`platform_type`*\ This optional argument allows you to specify **`store`** or **`uwp`** as the platform type. By default, the environment is set to build desktop or console apps. -*`winsdk_version`*
+*`winsdk_version`*\ Optionally specifies the version of the Windows SDK to use. By default, the latest installed Windows SDK is used. To specify the Windows SDK version, you can use a full Windows SDK number such as **`10.0.10240.0`**, or specify **`8.1`** to use the Windows 8.1 SDK. -*`vcversion`*
+*`vcversion`*\ Optionally specifies the Visual Studio compiler toolset to use. By default, the environment is set to use the current Visual Studio compiler toolset. ::: moniker range=">= msvc-160" @@ -249,10 +249,10 @@ Adjust the path to reflect your Visual Studio installation directory. The vcvars To build a C/C++ project at a command prompt, Visual Studio provides these command-line tools: -[`CL`](reference/compiling-a-c-cpp-program.md)
+[`CL`](reference/compiling-a-c-cpp-program.md)\ Use the compiler (cl.exe) to compile and link source code files into apps, libraries, and DLLs. -[`Link`](reference/linking.md)
+[`Link`](reference/linking.md)\ Use the linker (link.exe) to link compiled object files and libraries into apps and DLLs. When you build on the command line, the F1 command isn't available for instant help. Instead, you can use a search engine to get information about warnings, errors, and messages. You can also download and use the offline help files. To use the search in Microsoft Learn, enter your query in the search box at the top of any article. @@ -280,36 +280,36 @@ Use NMAKE (nmake.exe) to build C++ projects by using a traditional makefile. These articles show how to build apps on the command line, and describe how to customize the command-line build environment. Some show how to use 64-bit toolsets, and target x86, x64, ARM, and ARM64 platforms. They also describe use of the command-line build tools MSBuild and NMAKE. -[Walkthrough: Compiling a native C++ program on the command line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md)
+[Walkthrough: Compiling a native C++ program on the command line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md)\ Gives an example that shows how to create and compile a C++ program on the command line. -[Walkthrough: Compile a C program on the command line](walkthrough-compile-a-c-program-on-the-command-line.md)
+[Walkthrough: Compile a C program on the command line](walkthrough-compile-a-c-program-on-the-command-line.md)\ Describes how to compile a program written in the C programming language. -[Walkthrough: Compiling a C++/CLI program on the command line](walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md)
+[Walkthrough: Compiling a C++/CLI program on the command line](walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md)\ Describes how to create and compile a C++/CLI program that uses the .NET Framework. -[Walkthrough: Compiling a C++/CX program on the command line](walkthrough-compiling-a-cpp-cx-program-on-the-command-line.md)
+[Walkthrough: Compiling a C++/CX program on the command line](walkthrough-compiling-a-cpp-cx-program-on-the-command-line.md)\ Describes how to create and compile a C++/CX program that uses the Windows Runtime. -[NMAKE reference](reference/nmake-reference.md)
+[NMAKE reference](reference/nmake-reference.md)\ Provides links to articles that describe the Microsoft Program Maintenance Utility (NMAKE.EXE). -[MSBuild on the command line - C++](msbuild-visual-cpp.md)
+[MSBuild on the command line - C++](msbuild-visual-cpp.md)\ Provides links to articles that discuss how to use msbuild.exe from the command line. ## Related sections -[/MD, /MT, /LD (Use run-time library)](reference/md-mt-ld-use-run-time-library.md)
+[/MD, /MT, /LD (Use run-time library)](reference/md-mt-ld-use-run-time-library.md)\ Describes how to use these compiler options to use a Debug or Release run-time library. -[C/C++ compiler options](reference/compiler-options.md)
+[C/C++ compiler options](reference/compiler-options.md)\ Provides links to articles that discuss the C and C++ compiler options and CL.exe. -[MSVC linker options](reference/linker-options.md)
+[MSVC linker options](reference/linker-options.md)\ Provides links to articles that discuss the linker options and LINK.exe. -[Additional MSVC build tools](reference/c-cpp-build-tools.md)
+[Additional MSVC build tools](reference/c-cpp-build-tools.md)\ Provides links to the C/C++ build tools that are included in Visual Studio. ## See also From fdcbbc6986c5b10ca67e0cccff9274bd41977ed8 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 5 Aug 2025 00:08:23 +0800 Subject: [PATCH 078/619] Add backticks and italics in "Use the Microsoft C++ toolset from the command line" topic --- docs/build/building-on-the-command-line.md | 34 +++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index a83b6da3f9d..29b269c18c1 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -81,7 +81,7 @@ The Start menu folder and shortcut names vary depending on the installed version For an even faster way to open a developer command prompt, enter *developer command prompt* in the desktop search box. Then choose the result you want. > [!NOTE] -> By default, the current working directory in a developer command prompt is the root of your Visual Studio installation in the Program Files directory. This isn't an appropriate location for your code and projects. Change the current working directory to another location before you create a project. The IDE creates projects in your user directory, typically in *%USERPROFILE%\\source\\repos*. +> By default, the current working directory in a developer command prompt is the root of your Visual Studio installation in the Program Files directory. This isn't an appropriate location for your code and projects. Change the current working directory to another location before you create a project. The IDE creates projects in your user directory, typically in *`%USERPROFILE%\source\repos`*. ## Developer command file locations @@ -112,12 +112,12 @@ The primary developer command prompt command file, *`VsDevCmd.bat`*, is located ::: moniker range=">= msvc-150" -More command files are available to set up specific build architectures. The command files available depend on the Visual Studio workloads and options you've installed. In Visual Studio 2017 and Visual Studio 2019, you'll find them in the VC\\Auxiliary\\Build subdirectory. +More command files are available to set up specific build architectures. The command files available depend on the Visual Studio workloads and options you've installed. In Visual Studio 2017 and Visual Studio 2019, you'll find them in the *`VC\Auxiliary\Build`* subdirectory. ::: moniker-end ::: moniker range="< msvc-150" -More command files are available to set up specific build architectures. The command files available depend on the Visual Studio workloads and options you've installed. In Visual Studio 2015, they're located in the VC, VC\\bin, or VC\\bin\\*architecture* subdirectories, where *architecture* is one of the native or cross-compiler options. +More command files are available to set up specific build architectures. The command files available depend on the Visual Studio workloads and options you've installed. In Visual Studio 2015, they're located in the *`VC`*, *`VC\bin`*, or *`VC\bin\`* subdirectories, where *``* is one of the native or cross-compiler options. ::: moniker-end @@ -151,7 +151,7 @@ When used with no arguments, *`vcvarsall.bat`* configures the environment variab > **`vcvarsall.bat`** [*`architecture`*] [*`platform_type`*] [*`winsdk_version`*] [**`-vcvars_ver=`***`vcversion`*] [*`spectre_mode`*] *`architecture`*\ -This optional argument specifies the host and target architecture to use. If *architecture* isn't specified, the default build environment is used. These arguments are supported: +This optional argument specifies the host and target architecture to use. If *`architecture`* isn't specified, the default build environment is used. These arguments are supported: | *`architecture`* | Compiler | Host computer architecture | Build output (target) architecture | |--|--|--|--| @@ -195,7 +195,7 @@ Leave this parameter out to use libraries without Spectre mitigations. Use the v #### To set up the build environment in an existing command prompt window -1. At the command prompt, use the CD command to change to the Visual Studio installation directory. Then, use CD again to change to the subdirectory that contains the configuration-specific command files. For Visual Studio 2019 and Visual Studio 2017, use the *VC\\Auxiliary\\Build* subdirectory. For Visual Studio 2015, use the *VC* subdirectory. +1. At the command prompt, use the `CD` command to change to the Visual Studio installation directory. Then, use `CD` again to change to the subdirectory that contains the configuration-specific command files. For Visual Studio 2019 and Visual Studio 2017, use the *`VC\Auxiliary\Build`* subdirectory. For Visual Studio 2015, use the *`VC`* subdirectory. 1. Enter the command for your preferred developer environment. For example, to build ARM code for UWP on a 64-bit platform, using the latest Windows SDK and Visual Studio compiler toolset, use this command line: @@ -243,17 +243,17 @@ The architecture-specific batch files set the *`architecture`* parameter and cal ::: moniker-end -Adjust the path to reflect your Visual Studio installation directory. The vcvarsall.bat file has additional information about specific version numbers. +Adjust the path to reflect your Visual Studio installation directory. The *`vcvarsall.bat`* file has additional information about specific version numbers. ## Command-line tools To build a C/C++ project at a command prompt, Visual Studio provides these command-line tools: [`CL`](reference/compiling-a-c-cpp-program.md)\ -Use the compiler (cl.exe) to compile and link source code files into apps, libraries, and DLLs. +Use the compiler (`cl.exe`) to compile and link source code files into apps, libraries, and DLLs. [`Link`](reference/linking.md)\ -Use the linker (link.exe) to link compiled object files and libraries into apps and DLLs. +Use the linker (`link.exe`) to link compiled object files and libraries into apps and DLLs. When you build on the command line, the F1 command isn't available for instant help. Instead, you can use a search engine to get information about warnings, errors, and messages. You can also download and use the offline help files. To use the search in Microsoft Learn, enter your query in the search box at the top of any article. @@ -262,16 +262,16 @@ When you build on the command line, the F1 command isn't available for instant h By default, the Visual Studio IDE uses native project build systems based on MSBuild. You can invoke MSBuild directly to build projects without using the IDE. You can also use the `devenv` command to use Visual Studio to build projects and solutions. Visual Studio also supports build systems based on CMake or NMake. [`MSBuild`](msbuild-visual-cpp.md)\ -Use MSBuild (msbuild.exe) and a project file (.vcxproj) to configure a build and invoke the toolset without loading the Visual Studio IDE. It's equivalent to running the **Build** project or **Build Solution** command in the Visual Studio IDE. MSBuild has advantages over the IDE when you build at the command line. You don't have to install the full IDE on all your build servers and build pipelines. You avoid the extra overhead of the IDE. MSBuild runs in containerized build environments, and supports a [binary logger](https://msbuildlog.com/). +Use MSBuild (`msbuild.exe`) and a project file (`.vcxproj`) to configure a build and invoke the toolset without loading the Visual Studio IDE. It's equivalent to running the **Build** project or **Build Solution** command in the Visual Studio IDE. MSBuild has advantages over the IDE when you build at the command line. You don't have to install the full IDE on all your build servers and build pipelines. You avoid the extra overhead of the IDE. MSBuild runs in containerized build environments, and supports a [binary logger](https://msbuildlog.com/). [`DEVENV`](/visualstudio/ide/reference/devenv-command-line-switches)\ -Use DEVENV (devenv.exe) combined with a command-line switch such as **`/Build`** or **`/Clean`** to execute certain build commands without displaying the Visual Studio IDE. +Use DEVENV (`devenv.exe`) combined with a command-line switch such as **`/Build`** or **`/Clean`** to execute certain build commands without displaying the Visual Studio IDE. [`CMake`](../build/cmake-projects-in-visual-studio.md)\ -CMake (cmake.exe) is a cross-platform, open-source tool for defining build processes that run on multiple platforms. CMake can configure and control native build tools for its supported platforms, such as MSBuild and Make. For more information about CMake, see the [CMake documentation](https://cmake.org/cmake/help/latest/index.html#). +CMake (`cmake.exe`) is a cross-platform, open-source tool for defining build processes that run on multiple platforms. CMake can configure and control native build tools for its supported platforms, such as MSBuild and Make. For more information about CMake, see the [CMake documentation](https://cmake.org/cmake/help/latest/index.html#). [`NMAKE`](reference/nmake-reference.md)\ -Use NMAKE (nmake.exe) to build C++ projects by using a traditional makefile. +Use NMAKE (`nmake.exe`) to build C++ projects by using a traditional makefile. > [!NOTE] > Starting in Visual Studio 2019 version 16.5, MSBuild and DEVENV don't use the command-line environment to control the toolset and libraries used. @@ -293,21 +293,21 @@ Describes how to create and compile a C++/CLI program that uses the .NET Framewo Describes how to create and compile a C++/CX program that uses the Windows Runtime. [NMAKE reference](reference/nmake-reference.md)\ -Provides links to articles that describe the Microsoft Program Maintenance Utility (NMAKE.EXE). +Provides links to articles that describe the Microsoft Program Maintenance Utility (`NMAKE.EXE`). [MSBuild on the command line - C++](msbuild-visual-cpp.md)\ -Provides links to articles that discuss how to use msbuild.exe from the command line. +Provides links to articles that discuss how to use `msbuild.exe` from the command line. ## Related sections -[/MD, /MT, /LD (Use run-time library)](reference/md-mt-ld-use-run-time-library.md)\ +[`/MD`, `/MT`, `/LD` (Use run-time library)](reference/md-mt-ld-use-run-time-library.md)\ Describes how to use these compiler options to use a Debug or Release run-time library. [C/C++ compiler options](reference/compiler-options.md)\ -Provides links to articles that discuss the C and C++ compiler options and CL.exe. +Provides links to articles that discuss the C and C++ compiler options and `CL.exe`. [MSVC linker options](reference/linker-options.md)\ -Provides links to articles that discuss the linker options and LINK.exe. +Provides links to articles that discuss the linker options and `LINK.exe`. [Additional MSVC build tools](reference/c-cpp-build-tools.md)\ Provides links to the C/C++ build tools that are included in Visual Studio. From ef4506c41322c79a5ed6da4a660b00968d4515bc Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 5 Aug 2025 00:18:27 +0800 Subject: [PATCH 079/619] Convert single line inline code to code block in "Use the Microsoft C++ toolset from the command line" topic --- docs/build/building-on-the-command-line.md | 28 ++++++++++++++++------ 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 29b269c18c1..fc578fa217c 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -199,7 +199,9 @@ Leave this parameter out to use libraries without Spectre mitigations. Use the v 1. Enter the command for your preferred developer environment. For example, to build ARM code for UWP on a 64-bit platform, using the latest Windows SDK and Visual Studio compiler toolset, use this command line: - `vcvarsall.bat amd64_arm uwp` + ```cmd + vcvarsall.bat amd64_arm uwp + ``` ## Create your own command prompt shortcut @@ -207,21 +209,27 @@ Leave this parameter out to use libraries without Spectre mitigations. Use the v Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2019** shortcut is something similar to: -`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"` +``` +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" +``` ::: moniker-end ::: moniker range="= msvc-150" Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2017** shortcut is something similar to: -`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"` +``` +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" +``` ::: moniker-end ::: moniker range="< msvc-150" Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **VS2015 x64 Native Tools Command Prompt** shortcut is something similar to: -`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64` +``` +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 +``` ::: moniker-end @@ -229,17 +237,23 @@ The architecture-specific batch files set the *`architecture`* parameter and cal ::: moniker range=">= msvc-160" -`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.29` +``` +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.29 +``` ::: moniker-end ::: moniker range="= msvc-150" -`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.19` +``` +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.19 +``` ::: moniker-end ::: moniker range="< msvc-150" -`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -vcvars_ver=14.0` +``` +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -vcvars_ver=14.0 +``` ::: moniker-end From e9d1cc091afea8e64230244f4be67fa791ec61e6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 5 Aug 2025 00:19:12 +0800 Subject: [PATCH 080/619] Update metadata in "Use the Microsoft C++ toolset from the command line" topic --- docs/build/building-on-the-command-line.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index fc578fa217c..ffc6dff0b5a 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -1,11 +1,10 @@ --- title: "Use the Microsoft C++ toolset from the command line" description: "Use the Microsoft C++ (MSVC) compiler toolset from the command line outside of the Visual Studio IDE." -ms.custom: "conceptual" ms.date: 04/07/2022 -helpviewer_keywords: ["command-line builds [C++]", "compiling source code [C++], command line", "builds [C++], command-line", "command line [C++], building from", "command line [C++], compilers"] -ms.assetid: 7ca9daed-a003-4162-842d-908f79058365 +ms.custom: "conceptual" ms.topic: how-to +helpviewer_keywords: ["command-line builds [C++]", "compiling source code [C++], command line", "builds [C++], command-line", "command line [C++], building from", "command line [C++], compilers"] --- # Use the Microsoft C++ toolset from the command line From a5a95ab57d839e1822a1f1aa129decdc3c916472 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:05:25 +0800 Subject: [PATCH 081/619] Add backticks in `/ZW` flag reference topic --- docs/build/reference/zw-windows-runtime-compilation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zw-windows-runtime-compilation.md b/docs/build/reference/zw-windows-runtime-compilation.md index 6bba2c712c5..e841d78b070 100644 --- a/docs/build/reference/zw-windows-runtime-compilation.md +++ b/docs/build/reference/zw-windows-runtime-compilation.md @@ -32,7 +32,7 @@ When you specify the **`/ZW`** option, the compiler supports these features: - Automatic reference-counting of Windows Runtime objects, and automatic discarding of an object when its reference count goes to zero. -Because the incremental linker doesn't support the Windows metadata included in .obj files by using the **`/ZW`** option, the deprecated [/Gm (Enable Minimal Rebuild)](gm-enable-minimal-rebuild.md) option is incompatible with **`/ZW`**. +Because the incremental linker doesn't support the Windows metadata included in `.obj` files by using the **`/ZW`** option, the deprecated [`/Gm` (Enable Minimal Rebuild)](gm-enable-minimal-rebuild.md) option is incompatible with **`/ZW`**. For more information, see [Visual C++ Language Reference](../../cppcx/visual-c-language-reference-c-cx.md). From 2eda1717e8734984bc65d8037bbd62c4237c07c1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:06:32 +0800 Subject: [PATCH 082/619] Add and update links in `/ZW` flag reference topic --- docs/build/reference/zw-windows-runtime-compilation.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build/reference/zw-windows-runtime-compilation.md b/docs/build/reference/zw-windows-runtime-compilation.md index e841d78b070..75d3bf91695 100644 --- a/docs/build/reference/zw-windows-runtime-compilation.md +++ b/docs/build/reference/zw-windows-runtime-compilation.md @@ -9,8 +9,8 @@ helpviewer_keywords: ["/ZW", "-ZW compiler option", "/ZW compiler option", "-ZW" Compiles source code to support Microsoft C++ component extensions C++/CX for the creation of Universal Windows Platform (UWP) apps. -When you use **`/ZW`** to compile, always specify **`/EHsc`** as well.\ -**`/ZW`** isn't compatible with **`/std:c++20`**. +When you use **`/ZW`** to compile, always specify [`/EHsc`](eh-exception-handling-model.md) as well.\ +**`/ZW`** isn't compatible with [`/std:c++20`](std-specify-language-standard-version.md). ## Syntax @@ -34,7 +34,7 @@ When you specify the **`/ZW`** option, the compiler supports these features: Because the incremental linker doesn't support the Windows metadata included in `.obj` files by using the **`/ZW`** option, the deprecated [`/Gm` (Enable Minimal Rebuild)](gm-enable-minimal-rebuild.md) option is incompatible with **`/ZW`**. -For more information, see [Visual C++ Language Reference](../../cppcx/visual-c-language-reference-c-cx.md). +For more information, see [C++/CX Language Reference](../../cppcx/visual-c-language-reference-c-cx.md). ## Requirements From 26c3ff3702f9250a7c74b2c038ba0c9817bfa4df Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:07:10 +0800 Subject: [PATCH 083/619] Remove empty "Requirements" section and small tweak in `/ZW` flag reference topic --- docs/build/reference/zw-windows-runtime-compilation.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/build/reference/zw-windows-runtime-compilation.md b/docs/build/reference/zw-windows-runtime-compilation.md index 75d3bf91695..a3e1564b395 100644 --- a/docs/build/reference/zw-windows-runtime-compilation.md +++ b/docs/build/reference/zw-windows-runtime-compilation.md @@ -21,7 +21,7 @@ When you use **`/ZW`** to compile, always specify [`/EHsc`](eh-exception-handlin ## Arguments -**`nostdlib`**\ +*`nostdlib`*\ Indicates that `Platform.winmd`, `Windows.Foundation.winmd`, and other default Windows metadata (`.winmd`) files aren't automatically included in the compilation. Instead, you must use the [`/FU` (Name Forced #using File)](fu-name-forced-hash-using-file.md) compiler option to explicitly specify Windows metadata files. ## Remarks @@ -36,8 +36,6 @@ Because the incremental linker doesn't support the Windows metadata included in For more information, see [C++/CX Language Reference](../../cppcx/visual-c-language-reference-c-cx.md). -## Requirements - ## See also [MSVC Compiler Options](compiler-options.md)\ From 2bf62d6d1100a851f1bff7ecb74c382f39eb2749 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:07:37 +0800 Subject: [PATCH 084/619] Remove `cpp` language from syntax code block in `/ZW` flag reference topic --- docs/build/reference/zw-windows-runtime-compilation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zw-windows-runtime-compilation.md b/docs/build/reference/zw-windows-runtime-compilation.md index a3e1564b395..95d63422396 100644 --- a/docs/build/reference/zw-windows-runtime-compilation.md +++ b/docs/build/reference/zw-windows-runtime-compilation.md @@ -14,7 +14,7 @@ When you use **`/ZW`** to compile, always specify [`/EHsc`](eh-exception-handlin ## Syntax -```cpp +``` /ZW /EHsc /ZW:nostdlib /EHsc ``` From ac9f5ffdf046d456ebf7c21241559ef590ff9e23 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:08:30 +0800 Subject: [PATCH 085/619] Clarify that `/ZW` is incompatible with `/std:c++20` or later in `/ZW` flag reference topic --- docs/build/reference/zw-windows-runtime-compilation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zw-windows-runtime-compilation.md b/docs/build/reference/zw-windows-runtime-compilation.md index 95d63422396..78f5a55ae28 100644 --- a/docs/build/reference/zw-windows-runtime-compilation.md +++ b/docs/build/reference/zw-windows-runtime-compilation.md @@ -10,7 +10,7 @@ helpviewer_keywords: ["/ZW", "-ZW compiler option", "/ZW compiler option", "-ZW" Compiles source code to support Microsoft C++ component extensions C++/CX for the creation of Universal Windows Platform (UWP) apps. When you use **`/ZW`** to compile, always specify [`/EHsc`](eh-exception-handling-model.md) as well.\ -**`/ZW`** isn't compatible with [`/std:c++20`](std-specify-language-standard-version.md). +**`/ZW`** isn't compatible with [`/std:c++20`](std-specify-language-standard-version.md) or later. ## Syntax From 8877d14ec4f58c912e0da096ed98208033be4a43 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:09:01 +0800 Subject: [PATCH 086/619] Move `title` metadata above `description` in `/ZW` flag reference topic --- docs/build/reference/zw-windows-runtime-compilation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zw-windows-runtime-compilation.md b/docs/build/reference/zw-windows-runtime-compilation.md index 78f5a55ae28..b535b3e7c78 100644 --- a/docs/build/reference/zw-windows-runtime-compilation.md +++ b/docs/build/reference/zw-windows-runtime-compilation.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: /ZW (Windows Runtime Compilation)" title: "/ZW (Windows Runtime Compilation)" +description: "Learn more about: /ZW (Windows Runtime Compilation)" ms.date: 06/22/2023 f1_keywords: ["VC.Project.VCCLCompilerTool.CompileAsWinRT", "/zw"] helpviewer_keywords: ["/ZW", "-ZW compiler option", "/ZW compiler option", "-ZW", "Windows Runtime compiler option"] From 1fa294bfc790250d7a1828c47e21dc3e36f81a9b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:14:52 +0800 Subject: [PATCH 087/619] Rectify mismatched warning link text and link --- docs/code-quality/c26498.md | 2 +- docs/code-quality/code-analysis-for-cpp-corecheck.md | 2 +- docs/preprocessor/compiler-warnings-that-are-off-by-default.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/code-quality/c26498.md b/docs/code-quality/c26498.md index 417a4254275..fe3de0e6325 100644 --- a/docs/code-quality/c26498.md +++ b/docs/code-quality/c26498.md @@ -58,6 +58,6 @@ void foo() ## See also -[C26497](c26407.md)\ +[C26497](c26497.md)\ [C26814](c26814.md)\ [Con.5: Use `constexpr` for values that can be computed at compile time](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rconst-constexpr) diff --git a/docs/code-quality/code-analysis-for-cpp-corecheck.md b/docs/code-quality/code-analysis-for-cpp-corecheck.md index 82158f2233b..a70fc634739 100644 --- a/docs/code-quality/code-analysis-for-cpp-corecheck.md +++ b/docs/code-quality/code-analysis-for-cpp-corecheck.md @@ -214,7 +214,7 @@ Do not use function style C-casts. See [C++ Core Guidelines ES.49](https://isocp [C26490 NO_REINTERPRET_CAST](c26490.md)\ Don't use `reinterpret_cast`. See [C++ Core Guidelines Type.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-reinterpretcast). -[C26491 NO_STATIC_DOWNCAST](c26490.md)\ +[C26491 NO_STATIC_DOWNCAST](c26491.md)\ Don't use `static_cast` downcasts. See [C++ Core Guidelines Type.2](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Pro-type-downcast). [C26492 NO_CONST_CAST](c26492.md)\ diff --git a/docs/preprocessor/compiler-warnings-that-are-off-by-default.md b/docs/preprocessor/compiler-warnings-that-are-off-by-default.md index 96a31c29833..04ffb783279 100644 --- a/docs/preprocessor/compiler-warnings-that-are-off-by-default.md +++ b/docs/preprocessor/compiler-warnings-that-are-off-by-default.md @@ -168,7 +168,7 @@ The following warnings are turned off by default in Visual Studio 2019 and later | C5220 (level 4) | '*member*': a non-static data member with a volatile qualified type no longer implies that
compiler generated copy/move constructors and copy/move assignment operators are not trivial 16.7 | | C5233 (level 4) | explicit lambda capture '*identifier*' is not used 16.10 | | [C5240 (level 4)](../error-messages/compiler-warnings/c5240.md) | '*attribute-name*': attribute is ignored in this syntactic position 16.10 | -| [C5243 (level 1)](../error-messages/compiler-warnings/c5247.md) | '*type-name*': using incomplete class '*class-name*' can cause potential one definition rule violation due to ABI limitation 16.10 | +| [C5243 (level 1)](../error-messages/compiler-warnings/c5243.md) | '*type-name*': using incomplete class '*class-name*' can cause potential one definition rule violation due to ABI limitation 16.10 | | C5245 (level 4) | '*function*': unreferenced function with internal linkage has been removed | | C5246 (level 1) | '*member*': the initialization of a subobject should be wrapped in braces 16.10 | | [C5247 (level 1)](../error-messages/compiler-warnings/c5247.md) | Section '*section-name*' is reserved for C++ dynamic initialization. Manually creating the section will interfere with C++ dynamic initialization and may lead to undefined behavior 16.11 | From 2584684ac54de625ddb2fa9a454d49300c7afd60 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 6 Aug 2025 18:16:07 +0800 Subject: [PATCH 088/619] Update metadata in 2 topics --- docs/code-quality/c26498.md | 2 +- docs/code-quality/code-analysis-for-cpp-corecheck.md | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/code-quality/c26498.md b/docs/code-quality/c26498.md index fe3de0e6325..7bb0edb9750 100644 --- a/docs/code-quality/c26498.md +++ b/docs/code-quality/c26498.md @@ -1,5 +1,5 @@ --- -title: Warning C26498 +title: "Warning C26498" description: "Learn more about: Warning C26498 USE_CONSTEXPR_FOR_FUNCTIONCALL" ms.date: 08/18/2020 f1_keywords: ["C26498", "USE_CONSTEXPR_FOR_FUNCTIONCALL"] diff --git a/docs/code-quality/code-analysis-for-cpp-corecheck.md b/docs/code-quality/code-analysis-for-cpp-corecheck.md index a70fc634739..c57ae64393f 100644 --- a/docs/code-quality/code-analysis-for-cpp-corecheck.md +++ b/docs/code-quality/code-analysis-for-cpp-corecheck.md @@ -1,11 +1,10 @@ --- +title: "C++ Core Guidelines checker reference" description: "Learn more about: C++ Core Guidelines checker reference" -title: C++ Core Guidelines checker reference ms.date: 03/22/2018 ms.topic: reference helpviewer_keywords: - "code analysis, C++ core check" -ms.assetid: f1429463-136e-41ed-8a75-a8dbf0b4fd89 --- # C++ Core Guidelines checker reference From 72e62e04c3c5638ee7ed43abd1a6d0f3e43f8724 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 7 Aug 2025 22:52:52 +0800 Subject: [PATCH 089/619] Fix erroneous `__Pragma` in link texts --- docs/c-language/c-pragmas.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c3295.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4789.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/c-language/c-pragmas.md b/docs/c-language/c-pragmas.md index e98dccbd721..c96cad6b4cf 100644 --- a/docs/c-language/c-pragmas.md +++ b/docs/c-language/c-pragmas.md @@ -59,7 +59,7 @@ A *pragma* instructs the compiler to perform a particular action at compile time :::column-end::: :::row-end::: -See [Pragma Directives and the `__Pragma` Keyword](../preprocessor/pragma-directives-and-the-pragma-keyword.md) for a description of the Microsoft C compiler pragmas. +See [Pragma directives and the `__pragma` and `_Pragma` keywords](../preprocessor/pragma-directives-and-the-pragma-keyword.md) for a description of the Microsoft C compiler pragmas. **END Microsoft Specific** diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3295.md b/docs/error-messages/compiler-errors-2/compiler-error-c3295.md index 422e2296b2b..96b7a98762e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3295.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3295.md @@ -10,7 +10,7 @@ ms.assetid: 83f0aa4d-0e0a-4905-9f66-fcf9991fc07a '#pragma pragma' can only be used at global or namespace scope -Some pragmas cannot be used in a function. See [Pragma Directives and the __Pragma Keyword](../../preprocessor/pragma-directives-and-the-pragma-keyword.md) for more information. +Some pragmas cannot be used in a function. See [Pragma directives and the `__pragma` and `_Pragma` keywords](../../preprocessor/pragma-directives-and-the-pragma-keyword.md) for more information. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md index 696cc4eacdf..8ebdf24fb9f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4789.md @@ -32,7 +32,7 @@ Visual C++ might generate this warning for a code path that never executes. You #pragma warning( pop ) ``` -This idiom keeps Visual C++ from generating the warning for that specific block of code. The `#pragma warning(push)` preserves the existing state before `#pragma warning(disable: 4789)` changes it. The `#pragma warning(pop)` restores the pushed state, and removes the effects of the `#pragma warning(disable:4789)`. For more information about the C++ preprocessor directive `#pragma`, see [`warning`](../../preprocessor/warning.md) and [Pragma Directives and the `__Pragma` Keyword](../../preprocessor/pragma-directives-and-the-pragma-keyword.md). +This idiom keeps Visual C++ from generating the warning for that specific block of code. The `#pragma warning(push)` preserves the existing state before `#pragma warning(disable: 4789)` changes it. The `#pragma warning(pop)` restores the pushed state, and removes the effects of the `#pragma warning(disable:4789)`. For more information about the C++ preprocessor directive `#pragma`, see [`warning`](../../preprocessor/warning.md) and [Pragma directives and the `__pragma` and `_Pragma` keywords](../../preprocessor/pragma-directives-and-the-pragma-keyword.md). The [`/sdl` (Enable Additional Security Checks)](../../build/reference/sdl-enable-additional-security-checks.md) compiler option elevates this warning to an error. From 57b51ca71b472e1cbfecc8bd09f0cef02ae20dbd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 7 Aug 2025 22:53:55 +0800 Subject: [PATCH 090/619] Update metadata in 2 topics --- docs/c-language/c-pragmas.md | 3 +-- .../error-messages/compiler-errors-2/compiler-error-c3295.md | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/c-language/c-pragmas.md b/docs/c-language/c-pragmas.md index c96cad6b4cf..bb5cb70aee4 100644 --- a/docs/c-language/c-pragmas.md +++ b/docs/c-language/c-pragmas.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: C Pragmas" title: "C Pragmas" +description: "Learn more about: C Pragmas" ms.date: 07/26/2020 helpviewer_keywords: ["pragmas, C/C++"] -ms.assetid: 3d6d36b4-d565-4632-a4cd-e39aeaded5ad --- # C Pragmas diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3295.md b/docs/error-messages/compiler-errors-2/compiler-error-c3295.md index 96b7a98762e..262bb7979b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3295.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3295.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3295" title: "Compiler Error C3295" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3295" +ms.date: 11/04/2016 f1_keywords: ["C3295"] helpviewer_keywords: ["C3295"] -ms.assetid: 83f0aa4d-0e0a-4905-9f66-fcf9991fc07a --- # Compiler Error C3295 From b66d87e0252d8f3e3161222c9f7e6b923b64f4a4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 17:19:54 +0800 Subject: [PATCH 091/619] Add backticks in `` header reference --- docs/standard-library/system-error.md | 42 +++++++++++++-------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/standard-library/system-error.md b/docs/standard-library/system-error.md index 0d12bfef30e..cb0f6967ea1 100644 --- a/docs/standard-library/system-error.md +++ b/docs/standard-library/system-error.md @@ -8,13 +8,13 @@ ms.assetid: 5e046c6e-48d9-4740-8c8a-05f3727c1215 --- # `` -Include the header \ to define the exception class `system_error` and related templates for processing low-level system errors. +Include the header `` to define the exception class `system_error` and related templates for processing low-level system errors. ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## Members @@ -22,44 +22,44 @@ Include the header \ to define the exception class `system_error` |Name|Description| |-|-| -|[generic_category](../standard-library/system-error-functions.md#generic_category)|Represents the category for generic errors.| -|[is_error_code_enum_v](../standard-library/system-error-functions.md#is_error_code_enum_v)|| -|[is_error_condition_enum_v](../standard-library/system-error-functions.md#is_error_condition_enum_v)|| -|[system_category](../standard-library/system-error-functions.md#system_category)|Represents the category for errors caused by low-level system overflows.| +|[`generic_category`](../standard-library/system-error-functions.md#generic_category)|Represents the category for generic errors.| +|[`is_error_code_enum_v`](../standard-library/system-error-functions.md#is_error_code_enum_v)|| +|[`is_error_condition_enum_v`](../standard-library/system-error-functions.md#is_error_condition_enum_v)|| +|[`system_category`](../standard-library/system-error-functions.md#system_category)|Represents the category for errors caused by low-level system overflows.| ### Functions |Name|Description| |-|-| -|[make_error_code](../standard-library/system-error-functions.md#make_error_code)|Creates an `error_code` object.| -|[make_error_condition](../standard-library/system-error-functions.md#make_error_condition)|Creates an `error_condition` object.| +|[`make_error_code`](../standard-library/system-error-functions.md#make_error_code)|Creates an `error_code` object.| +|[`make_error_condition`](../standard-library/system-error-functions.md#make_error_condition)|Creates an `error_condition` object.| ### Operators |Name|Description| |-|-| -|[operator==](../standard-library/system-error-operators.md#op_eq_eq)|Tests if the object on the left side of the operator is equal to the object on the right side.| -|[operator!=](../standard-library/system-error-operators.md#op_neq)|Tests if the object on the left side of the operator is not equal to the object on the right side.| -|[operator<](../standard-library/system-error-operators.md#op_lt)|Tests if an object is less than the object passed in for comparison.| -|[operator<<](../standard-library/system-error-operators.md#op_ostream)|| +|[`operator==`](../standard-library/system-error-operators.md#op_eq_eq)|Tests if the object on the left side of the operator is equal to the object on the right side.| +|[`operator!=`](../standard-library/system-error-operators.md#op_neq)|Tests if the object on the left side of the operator is not equal to the object on the right side.| +|[`operator<`](../standard-library/system-error-operators.md#op_lt)|Tests if an object is less than the object passed in for comparison.| +|[`operator<<`](../standard-library/system-error-operators.md#op_ostream)|| ### Enums |Name|Description| |-|-| -|[errc](../standard-library/system-error-enums.md#errc)|Provides symbolic names for all the error-code macros defined by POSIX in ``.| +|[`errc`](../standard-library/system-error-enums.md#errc)|Provides symbolic names for all the error-code macros defined by POSIX in ``.| ### Classes and Structs |Name|Description| |-|-| -|[error_category](../standard-library/error-category-class.md)|Represents the abstract, common base for objects that describes a category of error codes.| -|[error_code](../standard-library/error-code-class.md)|Represents low-level system errors that are implementation-specific.| -|[error_condition](../standard-library/error-condition-class.md)|Represents user-defined error codes.| -|[hash](../standard-library/hash-structure.md#system_error)|| -|[is_error_code_enum](../standard-library/is-error-code-enum-class.md)|Represents a type predicate that tests for the [error_code Class](../standard-library/error-code-class.md) enumeration.| -|[is_error_condition_enum](../standard-library/is-error-condition-enum-class.md)|Represents a type predicate that tests for the [error_condition Class](../standard-library/error-condition-class.md) enumeration.| -|[system_error](../standard-library/system-error-class.md)|Represents the base class for all exceptions thrown to report a low-level system overflow.| +|[`error_category`](../standard-library/error-category-class.md)|Represents the abstract, common base for objects that describes a category of error codes.| +|[`error_code`](../standard-library/error-code-class.md)|Represents low-level system errors that are implementation-specific.| +|[`error_condition`](../standard-library/error-condition-class.md)|Represents user-defined error codes.| +|[`hash`](../standard-library/hash-structure.md#system_error)|| +|[`is_error_code_enum`](../standard-library/is-error-code-enum-class.md)|Represents a type predicate that tests for the [`error_code` Class](../standard-library/error-code-class.md) enumeration.| +|[`is_error_condition_enum`](../standard-library/is-error-condition-enum-class.md)|Represents a type predicate that tests for the [`error_condition` Class](../standard-library/error-condition-class.md) enumeration.| +|[`system_error`](../standard-library/system-error-class.md)|Represents the base class for all exceptions thrown to report a low-level system overflow.| ## See also From 71995902323c61ee1bb4f40914a76dd94cdfc1de Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 17:23:17 +0800 Subject: [PATCH 092/619] Simplify redundant relative links in `` header reference --- docs/standard-library/system-error.md | 38 +++++++++++++-------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/standard-library/system-error.md b/docs/standard-library/system-error.md index cb0f6967ea1..6d13e7e1291 100644 --- a/docs/standard-library/system-error.md +++ b/docs/standard-library/system-error.md @@ -22,45 +22,45 @@ Include the header `` to define the exception class `system_error` |Name|Description| |-|-| -|[`generic_category`](../standard-library/system-error-functions.md#generic_category)|Represents the category for generic errors.| -|[`is_error_code_enum_v`](../standard-library/system-error-functions.md#is_error_code_enum_v)|| -|[`is_error_condition_enum_v`](../standard-library/system-error-functions.md#is_error_condition_enum_v)|| -|[`system_category`](../standard-library/system-error-functions.md#system_category)|Represents the category for errors caused by low-level system overflows.| +|[`generic_category`](system-error-functions.md#generic_category)|Represents the category for generic errors.| +|[`is_error_code_enum_v`](system-error-functions.md#is_error_code_enum_v)|| +|[`is_error_condition_enum_v`](system-error-functions.md#is_error_condition_enum_v)|| +|[`system_category`](system-error-functions.md#system_category)|Represents the category for errors caused by low-level system overflows.| ### Functions |Name|Description| |-|-| -|[`make_error_code`](../standard-library/system-error-functions.md#make_error_code)|Creates an `error_code` object.| -|[`make_error_condition`](../standard-library/system-error-functions.md#make_error_condition)|Creates an `error_condition` object.| +|[`make_error_code`](system-error-functions.md#make_error_code)|Creates an `error_code` object.| +|[`make_error_condition`](system-error-functions.md#make_error_condition)|Creates an `error_condition` object.| ### Operators |Name|Description| |-|-| -|[`operator==`](../standard-library/system-error-operators.md#op_eq_eq)|Tests if the object on the left side of the operator is equal to the object on the right side.| -|[`operator!=`](../standard-library/system-error-operators.md#op_neq)|Tests if the object on the left side of the operator is not equal to the object on the right side.| -|[`operator<`](../standard-library/system-error-operators.md#op_lt)|Tests if an object is less than the object passed in for comparison.| -|[`operator<<`](../standard-library/system-error-operators.md#op_ostream)|| +|[`operator==`](system-error-operators.md#op_eq_eq)|Tests if the object on the left side of the operator is equal to the object on the right side.| +|[`operator!=`](system-error-operators.md#op_neq)|Tests if the object on the left side of the operator is not equal to the object on the right side.| +|[`operator<`](system-error-operators.md#op_lt)|Tests if an object is less than the object passed in for comparison.| +|[`operator<<`](system-error-operators.md#op_ostream)|| ### Enums |Name|Description| |-|-| -|[`errc`](../standard-library/system-error-enums.md#errc)|Provides symbolic names for all the error-code macros defined by POSIX in ``.| +|[`errc`](system-error-enums.md#errc)|Provides symbolic names for all the error-code macros defined by POSIX in ``.| ### Classes and Structs |Name|Description| |-|-| -|[`error_category`](../standard-library/error-category-class.md)|Represents the abstract, common base for objects that describes a category of error codes.| -|[`error_code`](../standard-library/error-code-class.md)|Represents low-level system errors that are implementation-specific.| -|[`error_condition`](../standard-library/error-condition-class.md)|Represents user-defined error codes.| -|[`hash`](../standard-library/hash-structure.md#system_error)|| -|[`is_error_code_enum`](../standard-library/is-error-code-enum-class.md)|Represents a type predicate that tests for the [`error_code` Class](../standard-library/error-code-class.md) enumeration.| -|[`is_error_condition_enum`](../standard-library/is-error-condition-enum-class.md)|Represents a type predicate that tests for the [`error_condition` Class](../standard-library/error-condition-class.md) enumeration.| -|[`system_error`](../standard-library/system-error-class.md)|Represents the base class for all exceptions thrown to report a low-level system overflow.| +|[`error_category`](error-category-class.md)|Represents the abstract, common base for objects that describes a category of error codes.| +|[`error_code`](error-code-class.md)|Represents low-level system errors that are implementation-specific.| +|[`error_condition`](error-condition-class.md)|Represents user-defined error codes.| +|[`hash`](hash-structure.md#system_error)|| +|[`is_error_code_enum`](is-error-code-enum-class.md)|Represents a type predicate that tests for the [`error_code` Class](error-code-class.md) enumeration.| +|[`is_error_condition_enum`](is-error-condition-enum-class.md)|Represents a type predicate that tests for the [`error_condition` Class](error-condition-class.md) enumeration.| +|[`system_error`](system-error-class.md)|Represents the base class for all exceptions thrown to report a low-level system overflow.| ## See also -[Header Files Reference](../standard-library/cpp-standard-library-header-files.md) +[Header Files Reference](cpp-standard-library-header-files.md) From c6fdfafd5787c178f329525a9c2dd0edf4cb9b15 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 17:38:59 +0800 Subject: [PATCH 093/619] Add and update descriptions in `` header reference --- docs/standard-library/system-error.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/standard-library/system-error.md b/docs/standard-library/system-error.md index 6d13e7e1291..d40120a130c 100644 --- a/docs/standard-library/system-error.md +++ b/docs/standard-library/system-error.md @@ -23,16 +23,16 @@ Include the header `` to define the exception class `system_error` |Name|Description| |-|-| |[`generic_category`](system-error-functions.md#generic_category)|Represents the category for generic errors.| -|[`is_error_code_enum_v`](system-error-functions.md#is_error_code_enum_v)|| -|[`is_error_condition_enum_v`](system-error-functions.md#is_error_condition_enum_v)|| -|[`system_category`](system-error-functions.md#system_category)|Represents the category for errors caused by low-level system overflows.| +|[`is_error_code_enum_v`](system-error-functions.md#is_error_code_enum_v)|A helper variable template for the [`is_error_code_enum`](is-error-code-enum-class.md) value.| +|[`is_error_condition_enum_v`](system-error-functions.md#is_error_condition_enum_v)|A helper variable template for the [`is_error_condition_enum`](is-error-condition-enum-class.md) value.| +|[`system_category`](system-error-functions.md#system_category)|Represents the category for operating system errors.| ### Functions |Name|Description| |-|-| -|[`make_error_code`](system-error-functions.md#make_error_code)|Creates an `error_code` object.| -|[`make_error_condition`](system-error-functions.md#make_error_condition)|Creates an `error_condition` object.| +|[`make_error_code`](system-error-functions.md#make_error_code)|Creates an [`error_code`](error-code-class.md) object.| +|[`make_error_condition`](system-error-functions.md#make_error_condition)|Creates an [`error_condition`](error-condition-class.md) object.| ### Operators @@ -41,7 +41,7 @@ Include the header `` to define the exception class `system_error` |[`operator==`](system-error-operators.md#op_eq_eq)|Tests if the object on the left side of the operator is equal to the object on the right side.| |[`operator!=`](system-error-operators.md#op_neq)|Tests if the object on the left side of the operator is not equal to the object on the right side.| |[`operator<`](system-error-operators.md#op_lt)|Tests if an object is less than the object passed in for comparison.| -|[`operator<<`](system-error-operators.md#op_ostream)|| +|[`operator<<`](system-error-operators.md#op_ostream)|Inserts an [`error_code`](error-code-class.md) object into the output stream.| ### Enums @@ -56,10 +56,10 @@ Include the header `` to define the exception class `system_error` |[`error_category`](error-category-class.md)|Represents the abstract, common base for objects that describes a category of error codes.| |[`error_code`](error-code-class.md)|Represents low-level system errors that are implementation-specific.| |[`error_condition`](error-condition-class.md)|Represents user-defined error codes.| -|[`hash`](hash-structure.md#system_error)|| -|[`is_error_code_enum`](is-error-code-enum-class.md)|Represents a type predicate that tests for the [`error_code` Class](error-code-class.md) enumeration.| -|[`is_error_condition_enum`](is-error-condition-enum-class.md)|Represents a type predicate that tests for the [`error_condition` Class](error-condition-class.md) enumeration.| -|[`system_error`](system-error-class.md)|Represents the base class for all exceptions thrown to report a low-level system overflow.| +|[`hash`](hash-structure.md#system_error)|Template specializations of [`std::hash`](hash-class.md) for [`error_code`](error-code-class.md) and [`error_condition`](error-condition-class.md).| +|[`is_error_code_enum`](is-error-code-enum-class.md)|Represents a type predicate that tests for the [`error_code`](error-code-class.md) enumeration.| +|[`is_error_condition_enum`](is-error-condition-enum-class.md)|Represents a type predicate that tests for the [`error_condition`](error-condition-class.md) enumeration.| +|[`system_error`](system-error-class.md)|Represents the base class for all exceptions thrown to report a low-level system error.| ## See also From 52815894a789a320227bbdc248acaa090bfa134c Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 17:39:41 +0800 Subject: [PATCH 094/619] Update metadata in `` header reference --- docs/standard-library/system-error.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/system-error.md b/docs/standard-library/system-error.md index d40120a130c..8a633804bff 100644 --- a/docs/standard-library/system-error.md +++ b/docs/standard-library/system-error.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: " title: "" -ms.date: "03/15/2019" +description: "Learn more about: " +ms.date: 03/15/2019 f1_keywords: [""] helpviewer_keywords: ["system_error header"] -ms.assetid: 5e046c6e-48d9-4740-8c8a-05f3727c1215 --- # `` From 645bfcc28f9d2f2b0570827a46b6420662dc5d33 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 17:59:37 +0800 Subject: [PATCH 095/619] Add C6064 "See also" link in C4473 warning reference --- docs/error-messages/compiler-warnings/c4473.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/error-messages/compiler-warnings/c4473.md b/docs/error-messages/compiler-warnings/c4473.md index b10194290b8..c83108b1f7f 100644 --- a/docs/error-messages/compiler-warnings/c4473.md +++ b/docs/error-messages/compiler-warnings/c4473.md @@ -54,3 +54,7 @@ void scan_func(int a, float f) ``` In this example, **scanf_s** requires two arguments for each placeholder, one to supply the address to write to, and a second to supply the size of the first. Check the documentation for each library function for an explanation of the required arguments. + +## See also + +[C6064](../../code-quality/c6064.md) From 38fcfd60b91a772ee4822439235c0bf835fd61d0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 18:00:19 +0800 Subject: [PATCH 096/619] Update metadata in 2 warning topics --- docs/code-quality/c6064.md | 2 +- docs/error-messages/compiler-warnings/c4473.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/code-quality/c6064.md b/docs/code-quality/c6064.md index 645f77ff241..c17eeaf1c7a 100644 --- a/docs/code-quality/c6064.md +++ b/docs/code-quality/c6064.md @@ -1,6 +1,6 @@ --- +title: "Warning C6064" description: "Learn more about: Warning C6064" -title: Warning C6064 ms.date: 2/07/2023 f1_keywords: ["C6064", "MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION", "__WARNING_MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION"] helpviewer_keywords: ["C6064"] diff --git a/docs/error-messages/compiler-warnings/c4473.md b/docs/error-messages/compiler-warnings/c4473.md index c83108b1f7f..5dfe94c2862 100644 --- a/docs/error-messages/compiler-warnings/c4473.md +++ b/docs/error-messages/compiler-warnings/c4473.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4473" title: "Compiler Warning C4473" -ms.date: "02/16/2018" +description: "Learn more about: Compiler Warning (level 1) C4473" +ms.date: 02/16/2018 f1_keywords: ["C4473"] helpviewer_keywords: ["C4473"] --- From b42a72c57e5ceb90b5f7c45239c081f41d18a081 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:29:38 +0800 Subject: [PATCH 097/619] Add missing integer argument to `_cprintf_s` call for example in `_vcprintf_p` reference --- .../vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md index 99103757608..e663b4c13b2 100644 --- a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md +++ b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md @@ -112,7 +112,7 @@ int main() { int n = eprintf("parameter 2 = %2$d; parameter 1 = %1$s\r\n", "one", 222); - _cprintf_s("%d characters printed\r\n"); + _cprintf_s("%d characters printed\r\n", n); } ``` From 49044a62fa79d97d0e3aad2d251cfea50437aebb Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:37:07 +0800 Subject: [PATCH 098/619] Add backticks in `_vcprintf_p` reference --- ...cprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md index e663b4c13b2..55c2eae6a83 100644 --- a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md +++ b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md @@ -62,7 +62,7 @@ Each of these functions takes a pointer to an argument list, and then uses the ` The versions of these functions that have the `_l` suffix are identical except that they use the locale parameter that's passed in instead of the current locale. -Each *`argument`* (if any) is converted and is output according to the corresponding format specification in *`format`*. The format specification supports positional parameters so that you can specify the order in which the arguments are used in the format string. For more information, see [printf_p Positional Parameters](../printf-p-positional-parameters.md). +Each *`argument`* (if any) is converted and is output according to the corresponding format specification in *`format`*. The format specification supports positional parameters so that you can specify the order in which the arguments are used in the format string. For more information, see [`printf_p` Positional Parameters](../printf-p-positional-parameters.md). These functions don't translate line-feed characters on output into carriage return-line feed (CR-LF) combinations. @@ -73,7 +73,7 @@ These functions validate the input pointer and the format string. If *`format`* ### Generic-text routine mappings -| Tchar.h routine | `_UNICODE` and `_MBCS` not defined | `_MBCS` defined | `_UNICODE` defined | +| `Tchar.h` routine | `_UNICODE` and `_MBCS` not defined | `_MBCS` defined | `_UNICODE` defined | |---|---|---|---| | `_vtcprintf_p` | **`_vcprintf_p`** | **`_vcprintf_p`** | **`_vcwprintf_p`** | | `_vtcprintf_p_l` | **`_vcprintf_p_l`** | **`_vcprintf_p_l`** | **`_vcwprintf_p_l`** | @@ -82,8 +82,8 @@ These functions validate the input pointer and the format string. If *`format`* | Routine | Required header | |---|---| -| **`_vcprintf_p`**, **`_vcprintf_p_l`** | \ and \ | -| **`_vcwprintf_p`**, **`_vcwprintf_p_l`** | \ and \ | +| **`_vcprintf_p`**, **`_vcprintf_p_l`** | `` and `` | +| **`_vcwprintf_p`**, **`_vcwprintf_p_l`** | `` and `` | For more compatibility information, see [Compatibility](../compatibility.md). @@ -126,4 +126,4 @@ parameter 2 = 222; parameter 1 = one [Console and port I/O](../console-and-port-i-o.md)\ [`_cprintf`, `_cprintf_l`, `_cwprintf`, `_cwprintf_l`](cprintf-cprintf-l-cwprintf-cwprintf-l.md)\ [`va_arg`, `va_copy`, `va_end`, `va_start`](va-arg-va-copy-va-end-va-start.md)\ -[printf_p Positional Parameters](../printf-p-positional-parameters.md) +[`printf_p` Positional Parameters](../printf-p-positional-parameters.md) From f4836970b7a37530a935f7d0d761af8432f09cef Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:38:42 +0800 Subject: [PATCH 099/619] Update link text to "`printf_p` positional parameters" in `_vcprintf_p` reference --- .../vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md index 55c2eae6a83..870ad99d11e 100644 --- a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md +++ b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md @@ -62,7 +62,7 @@ Each of these functions takes a pointer to an argument list, and then uses the ` The versions of these functions that have the `_l` suffix are identical except that they use the locale parameter that's passed in instead of the current locale. -Each *`argument`* (if any) is converted and is output according to the corresponding format specification in *`format`*. The format specification supports positional parameters so that you can specify the order in which the arguments are used in the format string. For more information, see [`printf_p` Positional Parameters](../printf-p-positional-parameters.md). +Each *`argument`* (if any) is converted and is output according to the corresponding format specification in *`format`*. The format specification supports positional parameters so that you can specify the order in which the arguments are used in the format string. For more information, see [`printf_p` positional parameters](../printf-p-positional-parameters.md). These functions don't translate line-feed characters on output into carriage return-line feed (CR-LF) combinations. @@ -126,4 +126,4 @@ parameter 2 = 222; parameter 1 = one [Console and port I/O](../console-and-port-i-o.md)\ [`_cprintf`, `_cprintf_l`, `_cwprintf`, `_cwprintf_l`](cprintf-cprintf-l-cwprintf-cwprintf-l.md)\ [`va_arg`, `va_copy`, `va_end`, `va_start`](va-arg-va-copy-va-end-va-start.md)\ -[`printf_p` Positional Parameters](../printf-p-positional-parameters.md) +[`printf_p` positional parameters](../printf-p-positional-parameters.md) From a0ac6efce9368468bed245f36ba41308068915b1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 8 Aug 2025 23:41:23 +0800 Subject: [PATCH 100/619] Normalize example indent to 4 spaces in `_vcprintf_p` reference --- ...f-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md index 870ad99d11e..04735adbee7 100644 --- a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md +++ b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md @@ -101,18 +101,18 @@ For more compatibility information, see [Compatibility](../compatibility.md). // An error formatting function that's used to print to the console. int eprintf(const char* format, ...) { - va_list args; - va_start(args, format); - int result = _vcprintf_p(format, args); - va_end(args); - return result; + va_list args; + va_start(args, format); + int result = _vcprintf_p(format, args); + va_end(args); + return result; } int main() { - int n = eprintf("parameter 2 = %2$d; parameter 1 = %1$s\r\n", - "one", 222); - _cprintf_s("%d characters printed\r\n", n); + int n = eprintf("parameter 2 = %2$d; parameter 1 = %1$s\r\n", + "one", 222); + _cprintf_s("%d characters printed\r\n", n); } ``` From 4ca46164f7a284a5eac6aea38b1f63cb5bf6d32f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:09:56 +0800 Subject: [PATCH 101/619] Remove rogue semicolon for LWG 2729 link text in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2019" --- docs/overview/cpp-conformance-improvements-2019.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/cpp-conformance-improvements-2019.md b/docs/overview/cpp-conformance-improvements-2019.md index e3b390b72fe..e95f1e7fd5c 100644 --- a/docs/overview/cpp-conformance-improvements-2019.md +++ b/docs/overview/cpp-conformance-improvements-2019.md @@ -455,7 +455,7 @@ The `std::bitset` constructor no longer reads the ones and zeroes in reverse ord ### `std::pair::operator=` regression -We fixed a regression in the `std::pair` assignment operator introduced when implementing [LWG 2729 "Missing SFINAE on `std::pair::operator=`";](https://cplusplus.github.io/LWG/issue2729). It now correctly accepts types convertible to `std::pair` again. +We fixed a regression in the `std::pair` assignment operator introduced when implementing [LWG 2729 "Missing SFINAE on `std::pair::operator=`"](https://cplusplus.github.io/LWG/issue2729). It now correctly accepts types convertible to `std::pair` again. ### Non-deduced contexts for `add_const_t` From da3abcb1a6a906962de517cbb02956f069083055 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:12:05 +0800 Subject: [PATCH 102/619] Fix wrong error code in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2019" --- docs/overview/cpp-conformance-improvements-2019.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/cpp-conformance-improvements-2019.md b/docs/overview/cpp-conformance-improvements-2019.md index e95f1e7fd5c..1eee2500447 100644 --- a/docs/overview/cpp-conformance-improvements-2019.md +++ b/docs/overview/cpp-conformance-improvements-2019.md @@ -694,7 +694,7 @@ std::equal(std::begin(a), std::end(a), std::begin(b), std::end(b)); ### Effect of defining spaceship operator on `==` and `!=` -A definition of the spaceship operator (**`<=>`**) alone will no longer rewrite expressions involving **`==`** or **`!=`** unless the spaceship operator is marked as **`= default`** ([P1185R2](https://wg21.link/p1185r2)). The following example compiles in Visual Studio 2019 RTW and version 16.1, but produces C2678 in Visual Studio 2019 version 16.2: +A definition of the spaceship operator (**`<=>`**) alone will no longer rewrite expressions involving **`==`** or **`!=`** unless the spaceship operator is marked as **`= default`** ([P1185R2](https://wg21.link/p1185r2)). The following example compiles in Visual Studio 2019 RTW and version 16.1, but produces C2676 in Visual Studio 2019 version 16.2: ```cpp #include From e0cf03b5caaef0cd24d300c5f1672471ac7fe392 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:15:43 +0800 Subject: [PATCH 103/619] Format note alert and add period in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2019" --- docs/overview/cpp-conformance-improvements-2019.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/cpp-conformance-improvements-2019.md b/docs/overview/cpp-conformance-improvements-2019.md index 1eee2500447..fcdcabc5417 100644 --- a/docs/overview/cpp-conformance-improvements-2019.md +++ b/docs/overview/cpp-conformance-improvements-2019.md @@ -67,8 +67,8 @@ To avoid the errors, insert a space in the offending line before the final angle ### References to types with mismatched cv-qualifiers ->[!Note] -> This change only affects Visual Studio 2019 versions 16.0 through 16.8. It was reverted starting in Visual Studio 2019 version 16.9 +> [!NOTE] +> This change only affects Visual Studio 2019 versions 16.0 through 16.8. It was reverted starting in Visual Studio 2019 version 16.9. Previously, MSVC allowed direct binding of a reference from a type with mismatched cv-qualifiers below the top level. This binding could allow modification of supposedly const data referred to by the reference. From 93a81c7944d0638636a922b5c0a60519f8b425d2 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:17:49 +0800 Subject: [PATCH 104/619] Clean up double and trailing spaces in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2019" --- .../cpp-conformance-improvements-2019.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/overview/cpp-conformance-improvements-2019.md b/docs/overview/cpp-conformance-improvements-2019.md index fcdcabc5417..03fdb7fe9c9 100644 --- a/docs/overview/cpp-conformance-improvements-2019.md +++ b/docs/overview/cpp-conformance-improvements-2019.md @@ -579,8 +579,8 @@ int main() // The conversion from 'E' to the fixed underlying type 'unsigned char' is better than the // conversion from 'E' to the promoted type 'unsigned int'. f(e); - - // Error C2666. This call is ambiguous, but previously called f(unsigned int, const B&). + + // Error C2666. This call is ambiguous, but previously called f(unsigned int, const B&). f(e, B{}); } ``` @@ -885,7 +885,7 @@ The non-standard headers \ and \ have been removed. Code Two-phase name lookup requires that non-dependent names used in template bodies must be visible to the template at definition time. Previously, such names may have been found when the template is instantiated. This change makes it easier to write portable and conforming code in MSVC under the [`/permissive-`](../build/reference/permissive-standards-conformance.md) flag. -In Visual Studio 2019 version 16.4 with the **`/permissive-`** flag set, the following example produces an error, because `N::f` isn't visible when the `f` template is defined: +In Visual Studio 2019 version 16.4 with the **`/permissive-`** flag set, the following example produces an error, because `N::f` isn't visible when the `f` template is defined: ```cpp template @@ -1424,7 +1424,7 @@ In Visual Studio 2019 version 16.6 and later, the behavior of **`typedef`** decl The same restrictions are applied recursively to each nested class. The restriction is meant to ensure the simplicity of structs that have **`typedef`** names for linkage purposes. They must be simple enough that no linkage calculations are necessary before the compiler gets to the **`typedef`** name for linkage. -This change affects all standards modes of the compiler. In default (**`/std:c++14`**) and **`/std:c++17`** modes, the compiler emits warning C5208 for non-conforming code. If **`/permissive-`** is specified, the compiler emits warning C5208 as an error under **`/std:c++14`** and emits error C7626 under **`/std:c++17`**. The compiler emits error C7626 for non-conforming code when **`/std:c++20`** or **`/std:c++latest`** is specified. +This change affects all standards modes of the compiler. In default (**`/std:c++14`**) and **`/std:c++17`** modes, the compiler emits warning C5208 for non-conforming code. If **`/permissive-`** is specified, the compiler emits warning C5208 as an error under **`/std:c++14`** and emits error C7626 under **`/std:c++17`**. The compiler emits error C7626 for non-conforming code when **`/std:c++20`** or **`/std:c++latest`** is specified. The following sample shows the constructs that are no longer allowed in unnamed structs. Depending on the standards mode specified, C5208 or C7626 errors or warnings are emitted: @@ -2101,7 +2101,7 @@ The update may change program behavior that relied on an introduced temporary: int func() { int i1 = 13; int i2 = 23; - + int* iptr = &i1; int const * const& iptrcref = iptr; @@ -2110,7 +2110,7 @@ int func() { { return 1; } - + // Now change what iptr points to. // Prior to CWG 2352 iptrcref should be bound to a temporary and still points to the value 13. @@ -2151,7 +2151,7 @@ class B { template B::~B() { /* ... */ } // Before: no diagnostic. -// Now diagnoses a definition mismatch. To fix, define the implementation by +// Now diagnoses a definition mismatch. To fix, define the implementation by // using the same noexcept-specifier. For example, // B::~B() noexcept { /* ... */ } ``` @@ -2254,7 +2254,7 @@ Earlier versions of the compiler would incorrectly convert the argument of `f` f This change can also correct the chosen overload in some other situations: ```cpp -struct Base +struct Base { operator char *(); }; From f8b616e5be0e8f2695732e430ebb07cad9d8dd2a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:36:46 +0800 Subject: [PATCH 105/619] Fix wrong link to P0226R1 in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2017" --- docs/overview/cpp-conformance-improvements-2017.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/cpp-conformance-improvements-2017.md b/docs/overview/cpp-conformance-improvements-2017.md index af33b89fb3f..66d39ebad95 100644 --- a/docs/overview/cpp-conformance-improvements-2017.md +++ b/docs/overview/cpp-conformance-improvements-2017.md @@ -1457,7 +1457,7 @@ void sample(A<0> *p) ### C++17: Mathematical special functions -[P0226R1](https://wg21.link/p0220r1) Adopts previous technical specifications for Mathematical Special Functions into the standard *``* header. +[P0226R1](https://wg21.link/p0226r1) Adopts previous technical specifications for Mathematical Special Functions into the standard *``* header. ### C++17: Deduction guides for the standard library From 02dea38252a3325f88aff814f0221ff8df5edaee Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:43:40 +0800 Subject: [PATCH 106/619] Fix some typos in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2017" --- docs/overview/cpp-conformance-improvements-2017.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/overview/cpp-conformance-improvements-2017.md b/docs/overview/cpp-conformance-improvements-2017.md index 66d39ebad95..e66afb478d8 100644 --- a/docs/overview/cpp-conformance-improvements-2017.md +++ b/docs/overview/cpp-conformance-improvements-2017.md @@ -7,7 +7,7 @@ ms.subservice: "cpp-lang" --- # C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2017 -Microsoft C/C++ in Visual Studio (MSVC) makes conformance improvements and bug fixes in every release. This article lists the improvements by major release, then by version. To jump directly to the changes for a specific version, use list below **In this article**. +Microsoft C/C++ in Visual Studio (MSVC) makes conformance improvements and bug fixes in every release. This article lists the improvements by major release, then by version. To jump directly to the changes for a specific version, use the list below **In this article**. This document lists the changes in Visual Studio 2017. For a guide to the changes in Visual Studio 2022, see [C++ conformance improvements in Visual Studio 2022](cpp-conformance-improvements.md). For a guide to the changes in Visual Studio 2019, see [C++ conformance improvements in Visual Studio 2019](cpp-conformance-improvements-2019.md). For a complete list of previous conformance improvements, see [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md). @@ -805,7 +805,7 @@ In earlier versions of Visual Studio, the compiler always gave a **`constexpr`** ### Removing allocator support in `std::function` -[P0302R1](https://wg21.link/p0302r1) Prior to C++17, the class template `std::function` had several constructors that took an allocator argument. However, the use of allocators in this context was problematic, and the semantics were unclear. The problem contructors have been removed. +[P0302R1](https://wg21.link/p0302r1) Prior to C++17, the class template `std::function` had several constructors that took an allocator argument. However, the use of allocators in this context was problematic, and the semantics were unclear. The problematic constructors have been removed. ### Fixes for `not_fn()` @@ -1051,7 +1051,7 @@ When the code doesn't need to be backwards compatible, avoid the warning by remo ### `__declspec` attributes with `extern "C"` linkage -In earlier versions of Visual Studio, the compiler ignored `__declspec(...)` attributes when `__declspec(...)` was applied before the `extern "C"` linkage specification. This behavior caused code to be generated that user didn't intend, with possible runtime implications. The [C4768](../error-messages/compiler-warnings/c4768.md) warning was added in Visual Studio version 15.3, but was off by default. In Visual Studio 2017 version 15.5, the warning is enabled by default. +In earlier versions of Visual Studio, the compiler ignored `__declspec(...)` attributes when `__declspec(...)` was applied before the `extern "C"` linkage specification. This behavior caused code to be generated that the user didn't intend, with possible runtime implications. The [C4768](../error-messages/compiler-warnings/c4768.md) warning was added in Visual Studio version 15.3, but was off by default. In Visual Studio 2017 version 15.5, the warning is enabled by default. ```cpp __declspec(noinline) extern "C" HRESULT __stdcall // C4768 @@ -1632,7 +1632,7 @@ using X = __declspec(deprecated("msg")) T; // C2760: syntax error: // expected 'type specifier' ``` -To fix the error, change to code to the following (with the attribute placed before the '=' of the alias definition): +To fix the error, change the code to the following (with the attribute placed before the '=' of the alias definition): ```cpp template From 7b4b65691d639387d66e9ea08d8cd8105ba5e705 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sat, 9 Aug 2025 22:45:51 +0800 Subject: [PATCH 107/619] Clean up double and trailing spaces in "C++ Conformance improvements, behavior changes, and bug fixes in Visual Studio 2017" --- docs/overview/cpp-conformance-improvements-2017.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/overview/cpp-conformance-improvements-2017.md b/docs/overview/cpp-conformance-improvements-2017.md index e66afb478d8..21a28fc7af8 100644 --- a/docs/overview/cpp-conformance-improvements-2017.md +++ b/docs/overview/cpp-conformance-improvements-2017.md @@ -611,7 +611,7 @@ To fix the warning, put `extern "C"` first: extern "C" __declspec(noinline) HRESULT __stdcall ``` -This warning is off by default in Visual Studio 2017 version 15.3, and only impacts code compiled with **`/Wall`** **`/WX`**. Starting in Visual Studio 2017 version 15.5, it's enabled by default as a level 3 warning. +This warning is off by default in Visual Studio 2017 version 15.3, and only impacts code compiled with **`/Wall`** **`/WX`**. Starting in Visual Studio 2017 version 15.5, it's enabled by default as a level 3 warning. ### `decltype` and calls to deleted destructors @@ -1022,7 +1022,7 @@ To fix the error, remove the unused variable. ### Single-line comments -In Visual Studio 2017 version 15.5, warnings C4001 and C4179 are no longer emitted by the C compiler. Previously, they were only emitted under the **`/Za`** compiler switch. The warnings are no longer needed because single-line comments have been part of the C standard since C99. +In Visual Studio 2017 version 15.5, warnings C4001 and C4179 are no longer emitted by the C compiler. Previously, they were only emitted under the **`/Za`** compiler switch. The warnings are no longer needed because single-line comments have been part of the C standard since C99. ```cpp /* C only */ @@ -1116,7 +1116,7 @@ error C2027: use of undefined type 'S' ### `std::is_convertible` target type -`std::is_convertible` requires the target type to be a valid return type. In earlier versions of Visual Studio, the compiler incorrectly allowed abstract types, which might lead to incorrect overload resolution and unintended runtime behavior. The following code now correctly raises C2338: +`std::is_convertible` requires the target type to be a valid return type. In earlier versions of Visual Studio, the compiler incorrectly allowed abstract types, which might lead to incorrect overload resolution and unintended runtime behavior. The following code now correctly raises C2338: ```cpp #include @@ -1193,7 +1193,7 @@ The warning was added in Visual Studio 2017 version 15.3, but was off by default ### Defaulted functions and `__declspec(nothrow)` -The compiler previously allowed defaulted functions to be declared with `__declspec(nothrow)` when the corresponding base/member functions permitted exceptions. This behavior is contrary to the C++ standard and can cause undefined behavior at runtime. The standard requires such functions to be defined as deleted if there's an exception specification mismatch. Under **`/std:c++17`**, the following code raises C2280: +The compiler previously allowed defaulted functions to be declared with `__declspec(nothrow)` when the corresponding base/member functions permitted exceptions. This behavior is contrary to the C++ standard and can cause undefined behavior at runtime. The standard requires such functions to be defined as deleted if there's an exception specification mismatch. Under **`/std:c++17`**, the following code raises C2280: ```cpp struct A { @@ -1441,7 +1441,7 @@ void sample(A<0> *p) ### C++20: Avoiding unnecessary decay (partial) -[P0777R1](https://wg21.link/p0777r1) Adds differentiation between the concept of "decay" and that of simply removing const or reference qualifiers. New type trait `remove_reference_t` replaces `decay_t` in some contexts. Support for `remove_cvref_t` is implemented in Visual Studio 2019. +[P0777R1](https://wg21.link/p0777r1) Adds differentiation between the concept of "decay" and that of simply removing const or reference qualifiers. New type trait `remove_reference_t` replaces `decay_t` in some contexts. Support for `remove_cvref_t` is implemented in Visual Studio 2019. ### C++17: Parallel algorithms @@ -1613,7 +1613,7 @@ In [`/permissive-`](../build/reference/permissive-standards-conformance.md) mode ```cpp template -using X = typename T; // C7511: 'T': 'typename' keyword must be +using X = typename T; // C7511: 'T': 'typename' keyword must be // followed by a qualified name ``` From 87bd5d0ae7b07babd9da7500b675ac8f07553c79 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 18:53:01 +0800 Subject: [PATCH 108/619] Add missing `f1_keywords` and `helpviewer_keywords` in "Compiler errors C7500 through C7999" --- .../compiler-errors-2/compiler-errors-c7500-through-c7999.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md index 984ce5a3d8f..23c315e03db 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md @@ -2,8 +2,8 @@ description: "Learn more about: Compiler errors C7500 through C7999" title: "Compiler errors C7500 through C7999" ms.date: 10/13/2023 -f1_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7686", "C7700", "C7701", "C7702", "C7703", "C7704"] -helpviewer_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7686", "C7700", "C7701", "C7702", "C7703", "C7704"] +f1_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7598", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7665", "C7666", "C7667", "C7668", "C7669", "C7670", "C7671", "C7672", "C7673", "C7674", "C7675", "C7676", "C7677", "C7678", "C7679", "C7680", "C7682", "C7683", "C7684", "C7685", "C7686", "C7687", "C7689", "C7690", "C7691", "C7692", "C7693", "C7694", "C7695", "C7696", "C7697", "C7698", "C7699", "C7700", "C7701", "C7702", "C7703", "C7704", "C7705", "C7706", "C7707", "C7708", "C7709", "C7710", "C7711", "C7712", "C7713", "C7714", "C7720", "C7730", "C7731", "C7732", "C7733", "C7734", "C7735", "C7736", "C7737", "C7738", "C7739", "C7740", "C7741", "C7800", "C7801", "C7802", "C7803", "C7804", "C7806", "C7807"] +helpviewer_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7598", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7665", "C7666", "C7667", "C7668", "C7669", "C7670", "C7671", "C7672", "C7673", "C7674", "C7675", "C7676", "C7677", "C7678", "C7679", "C7680", "C7682", "C7683", "C7684", "C7685", "C7686", "C7687", "C7689", "C7690", "C7691", "C7692", "C7693", "C7694", "C7695", "C7696", "C7697", "C7698", "C7699", "C7700", "C7701", "C7702", "C7703", "C7704", "C7705", "C7706", "C7707", "C7708", "C7709", "C7710", "C7711", "C7712", "C7713", "C7714", "C7720", "C7730", "C7731", "C7732", "C7733", "C7734", "C7735", "C7736", "C7737", "C7738", "C7739", "C7740", "C7741", "C7800", "C7801", "C7802", "C7803", "C7804", "C7806", "C7807"] --- # Compiler errors C7500 through C7999 From 82f7be8af19add51898071f9943338afa6682667 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 10 Aug 2025 18:53:53 +0800 Subject: [PATCH 109/619] Move `title` metadata above `description` in "Compiler errors C7500 through C7999" --- .../compiler-errors-2/compiler-errors-c7500-through-c7999.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md index 23c315e03db..5af9b70e4ff 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler errors C7500 through C7999" title: "Compiler errors C7500 through C7999" +description: "Learn more about: Compiler errors C7500 through C7999" ms.date: 10/13/2023 f1_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7598", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7665", "C7666", "C7667", "C7668", "C7669", "C7670", "C7671", "C7672", "C7673", "C7674", "C7675", "C7676", "C7677", "C7678", "C7679", "C7680", "C7682", "C7683", "C7684", "C7685", "C7686", "C7687", "C7689", "C7690", "C7691", "C7692", "C7693", "C7694", "C7695", "C7696", "C7697", "C7698", "C7699", "C7700", "C7701", "C7702", "C7703", "C7704", "C7705", "C7706", "C7707", "C7708", "C7709", "C7710", "C7711", "C7712", "C7713", "C7714", "C7720", "C7730", "C7731", "C7732", "C7733", "C7734", "C7735", "C7736", "C7737", "C7738", "C7739", "C7740", "C7741", "C7800", "C7801", "C7802", "C7803", "C7804", "C7806", "C7807"] helpviewer_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7598", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7665", "C7666", "C7667", "C7668", "C7669", "C7670", "C7671", "C7672", "C7673", "C7674", "C7675", "C7676", "C7677", "C7678", "C7679", "C7680", "C7682", "C7683", "C7684", "C7685", "C7686", "C7687", "C7689", "C7690", "C7691", "C7692", "C7693", "C7694", "C7695", "C7696", "C7697", "C7698", "C7699", "C7700", "C7701", "C7702", "C7703", "C7704", "C7705", "C7706", "C7707", "C7708", "C7709", "C7710", "C7711", "C7712", "C7713", "C7714", "C7720", "C7730", "C7731", "C7732", "C7733", "C7734", "C7735", "C7736", "C7737", "C7738", "C7739", "C7740", "C7741", "C7800", "C7801", "C7802", "C7803", "C7804", "C7806", "C7807"] From 09f465101094373a1eaa8f9295557ac480dba3f6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 00:40:21 +0800 Subject: [PATCH 110/619] Merge and condense `mutable` remarks in C2178 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2178.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index ce0dfb543fd..37211d190e3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -11,9 +11,7 @@ helpviewer_keywords: ["C2178"] ## Remarks -A **`mutable`** specifier was used in a declaration, but the specifier is not allowed in this context. - -The **`mutable`** specifier can be applied only to names of class data members, and cannot be applied to names declared **`const`** or **`static`**, and cannot be applied to reference members. +A **`mutable`** specifier was used in a declaration, but the specifier is not allowed in this context. It can only be applied to non-static, non-const, and non-reference data members. For more information, see [Mutable Data Members](../../cpp/mutable-data-members-cpp.md). ## Example From db8eef149c6aa4e5397173c6e2d880a160b54442 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 00:53:41 +0800 Subject: [PATCH 111/619] Improve `mutable` example in C2178 error reference --- .../compiler-errors-1/compiler-error-c2178.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index 37211d190e3..71d88406979 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -13,19 +13,18 @@ helpviewer_keywords: ["C2178"] A **`mutable`** specifier was used in a declaration, but the specifier is not allowed in this context. It can only be applied to non-static, non-const, and non-reference data members. For more information, see [Mutable Data Members](../../cpp/mutable-data-members-cpp.md). -## Example +## Example: `mutable` -The following example shows how C2178 may occur, and how to fix it. +The following example shows how C2178 may occur with the **`mutable`** specifier, and how to resolve it: ```cpp -// C2178.cpp -// compile with: cl /c /W4 C2178.cpp +// C2178_mutable.cpp +// compile with: /c -class S { - mutable const int i; // C2178 - // To fix, declare either const or mutable, not both. +struct S +{ + mutable const int i; // C2178, remove mutable or const to resolve }; -mutable int x = 4; // C2178 -// To fix, remove mutable keyword +mutable int x = 4; // C2178, remove mutable to resolve ``` From 69de9153bb8df413df1f65d828ddcbd9aa6c9700 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 01:09:08 +0800 Subject: [PATCH 112/619] Add remarks on `consteval` in C2178 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2178.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index 71d88406979..c3c17849f14 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -13,6 +13,8 @@ helpviewer_keywords: ["C2178"] A **`mutable`** specifier was used in a declaration, but the specifier is not allowed in this context. It can only be applied to non-static, non-const, and non-reference data members. For more information, see [Mutable Data Members](../../cpp/mutable-data-members-cpp.md). +A **`consteval`** specifier was used on a [destructor](../../cpp/destructors-cpp.md), allocation function, or deallocation function. + ## Example: `mutable` The following example shows how C2178 may occur with the **`mutable`** specifier, and how to resolve it: From c2143792f68dcee1ec82cc9d218a523e80818cbe Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 01:15:28 +0800 Subject: [PATCH 113/619] Add `consteval` example in C2178 error reference --- .../compiler-errors-1/compiler-error-c2178.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index c3c17849f14..4482c040175 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -30,3 +30,22 @@ struct S mutable int x = 4; // C2178, remove mutable to resolve ``` + +## Example: `consteval` + +The following example shows how C2178 may occur with the **`consteval`** specifier. To resolve this error, remove all **`consteval`** specifiers: + +```cpp +// C2178_consteval.cpp +// compile with: /c /std:c++20 + +#include + +struct S +{ + consteval ~S() {} // C2178 + + consteval static void* operator new(std::size_t size); // C2178 + consteval static void operator delete(void* ptr); // C2178 +}; +``` From 7f4c5e6438ed1ee764792713d171d8fc0851cbbe Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 01:16:43 +0800 Subject: [PATCH 114/619] Update `ms.date` metadata in C2178 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2178.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index 4482c040175..4c93e6c79d6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2178" description: "Learn more about: Compiler Error C2178" -ms.date: 05/08/2017 +ms.date: 08/11/2025 f1_keywords: ["C2178"] helpviewer_keywords: ["C2178"] --- From eecc5c350906aadbbd53409ef5364927a8edffc1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 22:41:34 +0800 Subject: [PATCH 115/619] Fix wrong link destination in table of standard library references --- docs/standard-library/chrono.md | 2 +- docs/standard-library/new.md | 2 +- docs/standard-library/path-class.md | 2 +- docs/standard-library/zoned-time-class.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/chrono.md b/docs/standard-library/chrono.md index 82bc6ae8243..f2fdb6b4b75 100644 --- a/docs/standard-library/chrono.md +++ b/docs/standard-library/chrono.md @@ -44,7 +44,7 @@ Using the time-zone facilities on older versions of Windows results in a runtime | [`month` class](month-class.md) | A month of a year. For example, July. | | [`month_day` class](month-day-class.md) | A specific day of a specific month. For example, July 30. | | [`month_day_last` class](month-day-last-class.md) | The last day of a month. | -| [`month_weekday` class](month-day-last-class.md) | The nth weekday of a specific month. | +| [`month_weekday` class](month-weekday-class.md) | The nth weekday of a specific month. | | [`month_weekday_last` class](month-weekday-last-class.md) | The nth weekday of a specific month. | | [`time_point` class](time-point-class.md) | A point in time. | | [`weekday` class](weekday-class.md) | A day of the week. | diff --git a/docs/standard-library/new.md b/docs/standard-library/new.md index 79dfcd6b5b4..ef0a6dba9bf 100644 --- a/docs/standard-library/new.md +++ b/docs/standard-library/new.md @@ -33,7 +33,7 @@ Some of the functions declared in this header are replaceable. The implementatio |Name|Description| |-|-| |[new_handler](../standard-library/new-typedefs.md#new_handler)|A type that points to a function suitable for use as a new handler.| -|[hardware_constructive_interference_size](../standard-library/new-typedefs.md#hardware_destructive_interference_size)|| +|[hardware_constructive_interference_size](../standard-library/new-typedefs.md#hardware_constructive_interference_size)|| |[hardware_destructive_interference_size](../standard-library/new-typedefs.md#hardware_destructive_interference_size)|| ### Functions diff --git a/docs/standard-library/path-class.md b/docs/standard-library/path-class.md index 6e5499a4672..b358291f7fc 100644 --- a/docs/standard-library/path-class.md +++ b/docs/standard-library/path-class.md @@ -41,7 +41,7 @@ class path; |[`c_str`](#c_str)|Returns a pointer to the first character in `mypath`.| |[`clear`](#clear)|Executes `mypath.clear()`.| |[`compare`](#compare)|Returns comparison values.| -|[`concat`](#compare)|Appends the specified sequence to `mypath`, converted (but not inserting a separator) as needed.| +|[`concat`](#concat)|Appends the specified sequence to `mypath`, converted (but not inserting a separator) as needed.| |[`empty`](#empty)|Returns `mypath.empty()`.| |[`end`](#end)|Returns an end-of-sequence iterator of type `iterator`.| |[`extension`](#extension)|Returns the suffix of `filename()`.| diff --git a/docs/standard-library/zoned-time-class.md b/docs/standard-library/zoned-time-class.md index 3fbc4f7dcc1..c5b82df46cf 100644 --- a/docs/standard-library/zoned-time-class.md +++ b/docs/standard-library/zoned-time-class.md @@ -33,7 +33,7 @@ A `zoned_time` always refers to a valid time zone and represents a point in time |[`get_time_zone`](#get_time_zone) | Gets the [time_zone](time-zone-class.md) stored in this `zoned_time`. | |[`operator=`](#op_=)| Assign the value of another `zoned_time`, or another `zoned_time`'s `local_time` or `sys_time`, to this `zoned_time`.| |[`operator local_time`](#op_local_time)| Combines the `zoned_time`'s time zone with the stored time point to produce the local time in that time zone.| -|[`operator sys_time`](#op_local_time)| Gets the time stored in this `zoned_time` without applying the time zone. | +|[`operator sys_time`](#op_sys_time)| Gets the time stored in this `zoned_time` without applying the time zone. | ## Non-members From 4af37caf4aa230411d3b633deb30bb89230cf28b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 12 Aug 2025 22:44:09 +0800 Subject: [PATCH 116/619] Update metadata in 2 standard library references --- docs/standard-library/new.md | 5 ++--- docs/standard-library/path-class.md | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/new.md b/docs/standard-library/new.md index ef0a6dba9bf..09baa6795b1 100644 --- a/docs/standard-library/new.md +++ b/docs/standard-library/new.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: " title: "" -ms.date: "11/04/2016" +description: "Learn more about: " +ms.date: 11/04/2016 f1_keywords: [""] helpviewer_keywords: ["new header"] -ms.assetid: 218e2a15-34e8-4ef3-9122-1e90eccf8559 --- # `` diff --git a/docs/standard-library/path-class.md b/docs/standard-library/path-class.md index b358291f7fc..8f7edbb9c17 100644 --- a/docs/standard-library/path-class.md +++ b/docs/standard-library/path-class.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: path Class" title: "path Class" +description: "Learn more about: path Class" ms.date: 06/17/2022 f1_keywords: ["filesystem/std::experimental::filesystem::path"] --- From c099a457591c65f199e1d84c5b15d9902eaf4ccc Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 17:13:26 +0800 Subject: [PATCH 117/619] Fix wrong operator links in `` header reference --- docs/standard-library/variant.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/standard-library/variant.md b/docs/standard-library/variant.md index a61bd4e8bba..eca66c3552e 100644 --- a/docs/standard-library/variant.md +++ b/docs/standard-library/variant.md @@ -21,12 +21,12 @@ A variant object holds and manages a value. If the variant holds a value, that v |Name|Description| |-|-| -|[operator==](../standard-library/forward-list-operators.md#op_eq_eq)|Tests if the variant object on the left side of the operator is equal to the variant object on the right side.| -|[operator!=](../standard-library/forward-list-operators.md#op_neq)|Tests if the variant object on the left side of the operator is not equal to the variant object on the right side.| -|[operator<](../standard-library/forward-list-operators.md#op_lt)|Tests if the variant object on the left side of the operator is less than the variant object on the right side.| -|[operator<=](../standard-library/forward-list-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is less than or equal to the variant object on the right side.| -|[operator>](../standard-library/forward-list-operators.md#op_gt)|Tests if the variant object on the left side of the operator is greater than the variant object on the right side.| -|[operator>=](../standard-library/forward-list-operators.md#op_gt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| +|[operator==](../standard-library/variant-operators.md#op_eq_eq)|Tests if the variant object on the left side of the operator is equal to the variant object on the right side.| +|[operator!=](../standard-library/variant-operators.md#op_neq)|Tests if the variant object on the left side of the operator is not equal to the variant object on the right side.| +|[operator<](../standard-library/variant-operators.md#op_lt)|Tests if the variant object on the left side of the operator is less than the variant object on the right side.| +|[operator<=](../standard-library/variant-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is less than or equal to the variant object on the right side.| +|[operator>](../standard-library/variant-operators.md#op_gt)|Tests if the variant object on the left side of the operator is greater than the variant object on the right side.| +|[operator>=](../standard-library/variant-operators.md#op_gt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| ### Functions From 9c50ae96ca947162adf32eebb55a95b67405ddef Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 17:15:46 +0800 Subject: [PATCH 118/619] Add backticks in `` header reference --- docs/standard-library/variant.md | 42 ++++++++++++++++---------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/standard-library/variant.md b/docs/standard-library/variant.md index eca66c3552e..b13d8745e33 100644 --- a/docs/standard-library/variant.md +++ b/docs/standard-library/variant.md @@ -11,9 +11,9 @@ A variant object holds and manages a value. If the variant holds a value, that v ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## Members @@ -21,45 +21,45 @@ A variant object holds and manages a value. If the variant holds a value, that v |Name|Description| |-|-| -|[operator==](../standard-library/variant-operators.md#op_eq_eq)|Tests if the variant object on the left side of the operator is equal to the variant object on the right side.| -|[operator!=](../standard-library/variant-operators.md#op_neq)|Tests if the variant object on the left side of the operator is not equal to the variant object on the right side.| -|[operator<](../standard-library/variant-operators.md#op_lt)|Tests if the variant object on the left side of the operator is less than the variant object on the right side.| -|[operator<=](../standard-library/variant-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is less than or equal to the variant object on the right side.| -|[operator>](../standard-library/variant-operators.md#op_gt)|Tests if the variant object on the left side of the operator is greater than the variant object on the right side.| -|[operator>=](../standard-library/variant-operators.md#op_gt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| +|[`operator==`](../standard-library/variant-operators.md#op_eq_eq)|Tests if the variant object on the left side of the operator is equal to the variant object on the right side.| +|[`operator!=`](../standard-library/variant-operators.md#op_neq)|Tests if the variant object on the left side of the operator is not equal to the variant object on the right side.| +|[`operator<`](../standard-library/variant-operators.md#op_lt)|Tests if the variant object on the left side of the operator is less than the variant object on the right side.| +|[`operator<=`](../standard-library/variant-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is less than or equal to the variant object on the right side.| +|[`operator>`](../standard-library/variant-operators.md#op_gt)|Tests if the variant object on the left side of the operator is greater than the variant object on the right side.| +|[`operator>=`](../standard-library/variant-operators.md#op_gt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| ### Functions |Name|Description| |-|-| -|[get](../standard-library/variant-functions.md#get)|Gets the variant of an object.| -|[get_if](../standard-library/variant-functions.md#get_if)|Gets the variant of an object if it exists.| -|[holds_alternative](../standard-library/variant-functions.md#holds_alternative)|Return **`true`** if a variant exists.| -|[swap](../standard-library/variant-functions.md#swap)|Swaps a **variant**.| -|[visit](../standard-library/variant-functions.md#visit)|Moves to the next **variant**.| +|[`get`](../standard-library/variant-functions.md#get)|Gets the variant of an object.| +|[`get_if`](../standard-library/variant-functions.md#get_if)|Gets the variant of an object if it exists.| +|[`holds_alternative`](../standard-library/variant-functions.md#holds_alternative)|Return **`true`** if a variant exists.| +|[`swap`](../standard-library/variant-functions.md#swap)|Swaps a **variant**.| +|[`visit`](../standard-library/variant-functions.md#visit)|Moves to the next **variant**.| ### Classes |Name|Description| |-|-| -|[bad_variant_access](../standard-library/bad-variant-access-class.md)|Objects thrown to report invalid accesses to the value of a variant object.| -|[variant](../standard-library/variant.md)|An object to either hold a value of one of its alternative types, or no value.| +|[`bad_variant_access`](../standard-library/bad-variant-access-class.md)|Objects thrown to report invalid accesses to the value of a variant object.| +|[`variant`](../standard-library/variant.md)|An object to either hold a value of one of its alternative types, or no value.| ### Structs |Name|Description| |-|-| -|[hash](../standard-library/hash-structure.md)|| -|[monostate](../standard-library/monostate-structure.md)|An alternative type for a variant to make the variant type default constructible.| -|[uses_allocator](../standard-library/uses-allocator-structure.md)|| -|[variant_alternative](../standard-library/variant-alternative-structure.md)|Assists the variant objects.| -|[variant_size](../standard-library/variant-size-structure.md)|Assists the variant objects.| +|[`hash`](../standard-library/hash-structure.md)|| +|[`monostate`](../standard-library/monostate-structure.md)|An alternative type for a variant to make the variant type default constructible.| +|[`uses_allocator`](../standard-library/uses-allocator-structure.md)|| +|[`variant_alternative`](../standard-library/variant-alternative-structure.md)|Assists the variant objects.| +|[`variant_size`](../standard-library/variant-size-structure.md)|Assists the variant objects.| ### Objects |Name|Description| |-|-| -|[variant_npos](../standard-library/variant-functions.md#variant_npos)|| +|[`variant_npos`](../standard-library/variant-functions.md#variant_npos)|| ## See also From af79a0e4b8ab3b5e701804bc12b6c0bbcece8628 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 17:20:46 +0800 Subject: [PATCH 119/619] Clean up redundant relative links in `` header reference --- docs/standard-library/variant.md | 40 ++++++++++++++++---------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/standard-library/variant.md b/docs/standard-library/variant.md index b13d8745e33..79e24eb8f20 100644 --- a/docs/standard-library/variant.md +++ b/docs/standard-library/variant.md @@ -21,46 +21,46 @@ A variant object holds and manages a value. If the variant holds a value, that v |Name|Description| |-|-| -|[`operator==`](../standard-library/variant-operators.md#op_eq_eq)|Tests if the variant object on the left side of the operator is equal to the variant object on the right side.| -|[`operator!=`](../standard-library/variant-operators.md#op_neq)|Tests if the variant object on the left side of the operator is not equal to the variant object on the right side.| -|[`operator<`](../standard-library/variant-operators.md#op_lt)|Tests if the variant object on the left side of the operator is less than the variant object on the right side.| -|[`operator<=`](../standard-library/variant-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is less than or equal to the variant object on the right side.| -|[`operator>`](../standard-library/variant-operators.md#op_gt)|Tests if the variant object on the left side of the operator is greater than the variant object on the right side.| -|[`operator>=`](../standard-library/variant-operators.md#op_gt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| +|[`operator==`](variant-operators.md#op_eq_eq)|Tests if the variant object on the left side of the operator is equal to the variant object on the right side.| +|[`operator!=`](variant-operators.md#op_neq)|Tests if the variant object on the left side of the operator is not equal to the variant object on the right side.| +|[`operator<`](variant-operators.md#op_lt)|Tests if the variant object on the left side of the operator is less than the variant object on the right side.| +|[`operator<=`](variant-operators.md#op_lt_eq)|Tests if the variant object on the left side of the operator is less than or equal to the variant object on the right side.| +|[`operator>`](variant-operators.md#op_gt)|Tests if the variant object on the left side of the operator is greater than the variant object on the right side.| +|[`operator>=`](variant-operators.md#op_gt_eq)|Tests if the variant object on the left side of the operator is greater than or equal to the variant object on the right side.| ### Functions |Name|Description| |-|-| -|[`get`](../standard-library/variant-functions.md#get)|Gets the variant of an object.| -|[`get_if`](../standard-library/variant-functions.md#get_if)|Gets the variant of an object if it exists.| -|[`holds_alternative`](../standard-library/variant-functions.md#holds_alternative)|Return **`true`** if a variant exists.| -|[`swap`](../standard-library/variant-functions.md#swap)|Swaps a **variant**.| -|[`visit`](../standard-library/variant-functions.md#visit)|Moves to the next **variant**.| +|[`get`](variant-functions.md#get)|Gets the variant of an object.| +|[`get_if`](variant-functions.md#get_if)|Gets the variant of an object if it exists.| +|[`holds_alternative`](variant-functions.md#holds_alternative)|Return **`true`** if a variant exists.| +|[`swap`](variant-functions.md#swap)|Swaps a **variant**.| +|[`visit`](variant-functions.md#visit)|Moves to the next **variant**.| ### Classes |Name|Description| |-|-| -|[`bad_variant_access`](../standard-library/bad-variant-access-class.md)|Objects thrown to report invalid accesses to the value of a variant object.| -|[`variant`](../standard-library/variant.md)|An object to either hold a value of one of its alternative types, or no value.| +|[`bad_variant_access`](bad-variant-access-class.md)|Objects thrown to report invalid accesses to the value of a variant object.| +|[`variant`](variant.md)|An object to either hold a value of one of its alternative types, or no value.| ### Structs |Name|Description| |-|-| -|[`hash`](../standard-library/hash-structure.md)|| -|[`monostate`](../standard-library/monostate-structure.md)|An alternative type for a variant to make the variant type default constructible.| -|[`uses_allocator`](../standard-library/uses-allocator-structure.md)|| -|[`variant_alternative`](../standard-library/variant-alternative-structure.md)|Assists the variant objects.| -|[`variant_size`](../standard-library/variant-size-structure.md)|Assists the variant objects.| +|[`hash`](hash-structure.md)|| +|[`monostate`](monostate-structure.md)|An alternative type for a variant to make the variant type default constructible.| +|[`uses_allocator`](uses-allocator-structure.md)|| +|[`variant_alternative`](variant-alternative-structure.md)|Assists the variant objects.| +|[`variant_size`](variant-size-structure.md)|Assists the variant objects.| ### Objects |Name|Description| |-|-| -|[`variant_npos`](../standard-library/variant-functions.md#variant_npos)|| +|[`variant_npos`](variant-functions.md#variant_npos)|| ## See also -[Header Files Reference](../standard-library/cpp-standard-library-header-files.md) +[Header Files Reference](cpp-standard-library-header-files.md) From adc7a7fcb3241cad82ebf848e533e776ef14c5b5 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 17:29:28 +0800 Subject: [PATCH 120/619] Fix wrong link to `variant` class in `` header reference --- docs/standard-library/variant.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/variant.md b/docs/standard-library/variant.md index 79e24eb8f20..04f6018d139 100644 --- a/docs/standard-library/variant.md +++ b/docs/standard-library/variant.md @@ -43,7 +43,7 @@ A variant object holds and manages a value. If the variant holds a value, that v |Name|Description| |-|-| |[`bad_variant_access`](bad-variant-access-class.md)|Objects thrown to report invalid accesses to the value of a variant object.| -|[`variant`](variant.md)|An object to either hold a value of one of its alternative types, or no value.| +|[`variant`](variant-class.md)|An object to either hold a value of one of its alternative types, or no value.| ### Structs From 9577d89b457287ee15c0be792546d7fe4b6e84b6 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 18:42:46 +0800 Subject: [PATCH 121/619] Update error message in C2135 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2135.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index 4af1d4f1b40..db2f0fff8af 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2135"] --- # Compiler Error C2135 -> 'bit operator' : illegal bit field operation +> '*identifier*': you cannot apply '*operator*' to a bit-field ## Remarks From 5ec8f130db282b6e5d8e2d3be00ed3abb5cc459a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 18:47:50 +0800 Subject: [PATCH 122/619] Improve example in C2135 error reference --- .../compiler-errors-1/compiler-error-c2135.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index db2f0fff8af..48ab905e946 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -19,15 +19,16 @@ The following example generates C2135: ```cpp // C2135.cpp -struct S { - int i : 1; -}; -struct T { - int j; +struct S +{ + int bit_field : 1; + int integer; }; -int main() { - &S::i; // C2135 address of a bit field - &T::j; // OK + +int main() +{ + &S::bit_field; // C2135 + &S::integer; // OK } ``` From a656d0ce02b1f8d2e7b8346b3d2912cc0dea90e9 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:03:53 +0800 Subject: [PATCH 123/619] Augment remarks in C2135 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2135.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index 48ab905e946..899b8ac2334 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C2135"] ## Remarks -The address-of operator (`&`) cannot be applied to a bit field. +The [address-of operator (`&`)](../../cpp/address-of-operator-amp.md), [unary plus operator (`+`)](../../cpp/unary-plus-and-negation-operators-plus-and.md), [unary negation operator (`-`)](../../cpp/unary-plus-and-negation-operators-plus-and.md), [logical negation operator (`!`)](../../cpp/logical-negation-operator-exclpt.md), [one's complement operator (`~`)](../../cpp/one-s-complement-operator-tilde.md), and [indirection operator (`*`)](../../cpp/indirection-operator-star.md) cannot be applied to a bit-field in this context. ## Example From 8759fc37887b21693c3fa05ad5e50cc526238f6e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:06:20 +0800 Subject: [PATCH 124/619] Add C2104 "See also" link in C2135 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2135.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index 899b8ac2334..921540e5b9f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -32,3 +32,7 @@ int main() &S::integer; // OK } ``` + +## See also + +[C2104](compiler-error-c2104.md) From 797e67bb08dd7e4d5985d6b057038f1c1892999e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 13 Aug 2025 19:07:21 +0800 Subject: [PATCH 125/619] Update `ms.date` metadata in C2135 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2135.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index 921540e5b9f..aff3621ccb1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2135" description: "Learn more about: Compiler Error C2135" -ms.date: 11/04/2016 +ms.date: 08/13/2025 f1_keywords: ["C2135"] helpviewer_keywords: ["C2135"] --- From 6d7a8650aaea16015500c3e8887bcd8e439dc4df Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 21:05:58 +0800 Subject: [PATCH 126/619] Add blockquotes and update error message in C3083 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3083.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md index 35cefa54416..7f5871d0304 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md @@ -8,7 +8,7 @@ ms.assetid: 05ff791d-52bb-41eb-9511-3ef89d7f4710 --- # Compiler Error C3083 -'function': the symbol to the left of a '::' must be a type +> '*identifier*': the symbol to the left of a '::' must be a type A function was called incorrectly. From 80b3960228e32215cddd86e79303e70cfeb3c500 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 21:06:51 +0800 Subject: [PATCH 127/619] Add "Remarks" heading in C3083 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3083.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md index 7f5871d0304..3792c711f26 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md @@ -10,6 +10,8 @@ ms.assetid: 05ff791d-52bb-41eb-9511-3ef89d7f4710 > '*identifier*': the symbol to the left of a '::' must be a type +## Remarks + A function was called incorrectly. ## Example From 4243428b360981ffec222356fe17d310cf0b5190 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 21:28:30 +0800 Subject: [PATCH 128/619] Overhaul remarks in C3083 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3083.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md index 3792c711f26..7a86aaf4a0c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md @@ -12,7 +12,7 @@ ms.assetid: 05ff791d-52bb-41eb-9511-3ef89d7f4710 ## Remarks -A function was called incorrectly. +The qualification used is invalid. Ensure that no extra symbols were used in the qualification and that you included all required headers. ## Example From 39250ac89130c2fa3ae880c0cf2cfbe41b48e1ca Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 21:34:44 +0800 Subject: [PATCH 129/619] Fix and improve example in C3083 error reference --- .../compiler-errors-2/compiler-error-c3083.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md index 7a86aaf4a0c..fd0580e5a49 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md @@ -16,19 +16,17 @@ The qualification used is invalid. Ensure that no extra symbols were used in the ## Example -The following sample generates C3083. +The following example generates C3083: ```cpp // C3083.cpp // compile with: /c -struct N { - ~N(); -}; -struct N1 { - ~N1(); +struct S +{ + S(); }; -N::N::~N() {} // C3083 -N1::~N1() {} // OK +S::Extra::S() {} // C3083 +S::S() {} // OK ``` From 5f6fa92144dd7373e9270d16e5b283fb3d00b494 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 21:35:31 +0800 Subject: [PATCH 130/619] Update metadata in C3083 error reference --- .../error-messages/compiler-errors-2/compiler-error-c3083.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md index fd0580e5a49..8b0ec411136 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3083" title: "Compiler Error C3083" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3083" +ms.date: 08/14/2025 f1_keywords: ["C3083"] helpviewer_keywords: ["C3083"] -ms.assetid: 05ff791d-52bb-41eb-9511-3ef89d7f4710 --- # Compiler Error C3083 From 88fc24a534da13c0feaaf819ce38e0b4551ebaa0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Thu, 14 Aug 2025 22:27:17 +0800 Subject: [PATCH 131/619] Fix erroneous `template class<...` syntax in standard library references --- docs/standard-library/istream-functions.md | 3 ++- docs/standard-library/ostream-functions.md | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/istream-functions.md b/docs/standard-library/istream-functions.md index 8c6d33665e1..5b0e2c372b6 100644 --- a/docs/standard-library/istream-functions.md +++ b/docs/standard-library/istream-functions.md @@ -37,7 +37,8 @@ A stream. Skips white space in the stream. ```cpp -template class basic_istream& ws(basic_istream& _Istr); +template +basic_istream& ws(basic_istream& _Istr); ``` ### Parameters diff --git a/docs/standard-library/ostream-functions.md b/docs/standard-library/ostream-functions.md index e306c7f49e0..3721ebdd884 100644 --- a/docs/standard-library/ostream-functions.md +++ b/docs/standard-library/ostream-functions.md @@ -14,7 +14,7 @@ These are the global template functions defined in ``. For member funct Terminates a line and flushes the buffer. ```cpp -template class +template basic_ostream& endl( basic_ostream& Ostr); ``` @@ -61,7 +61,7 @@ testing Terminates a string. ```cpp -template class +template basic_ostream& ends( basic_ostream& Ostr); ``` @@ -110,7 +110,7 @@ ab c Flushes the buffer. ```cpp -template class +template basic_ostream& flush( basic_ostream& Ostr); ``` From 013292ca980791adf2d4ba55b4e4889d4bdd4bcf Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:23:20 +0800 Subject: [PATCH 132/619] Add "Remarks" heading in C3187 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3187.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index 4ef3efeedb4..67cebe86c14 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -10,6 +10,8 @@ ms.assetid: 9d2ebf55-1a6a-4087-bf5b-5274baae6351 > '`__func__`' : is only available within the body of a function +## Remarks + The predefined macro is not available outside the body of a function. To correct this error, move the macro inside the body of a function. From 59adf3ebac46a3349c44a08d456ecfc36a53608e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:27:18 +0800 Subject: [PATCH 133/619] Add link and tweak remarks in C3187 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3187.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index 67cebe86c14..8195456820c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -12,6 +12,6 @@ ms.assetid: 9d2ebf55-1a6a-4087-bf5b-5274baae6351 ## Remarks -The predefined macro is not available outside the body of a function. +The predefined identifier [`__func__`](../../cpp/func.md) is not available outside the body of a function. -To correct this error, move the macro inside the body of a function. +To correct this error, move the identifier inside the body of a function. From 6f6a2b240d9c8e4966fade4c9758a6f92ea06a39 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:42:35 +0800 Subject: [PATCH 134/619] Add example in C3187 error reference --- .../compiler-errors-2/compiler-error-c3187.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index 8195456820c..e82957b16eb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -15,3 +15,16 @@ ms.assetid: 9d2ebf55-1a6a-4087-bf5b-5274baae6351 The predefined identifier [`__func__`](../../cpp/func.md) is not available outside the body of a function. To correct this error, move the identifier inside the body of a function. + +## Example + +The following example generates C3187: + +```cpp +// C3187.cpp +// compile with: /c + +auto global = __func__; // C3187, usage in global scope + +void func(const char* f = __func__); // C3187, usage in parameter list +``` From 6ffde87dfebbc768e32977c90ac877b0663f0e16 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:50:32 +0800 Subject: [PATCH 135/619] Update error message for C3187 --- docs/error-messages/compiler-errors-2/compiler-error-c3187.md | 2 +- .../compiler-errors-2/compiler-errors-c3100-through-c3199.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index e82957b16eb..423bc277df2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -8,7 +8,7 @@ ms.assetid: 9d2ebf55-1a6a-4087-bf5b-5274baae6351 --- # Compiler Error C3187 -> '`__func__`' : is only available within the body of a function +> '`__func__`': is only available within the body of a function ## Remarks diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md index 338e4eceb9f..d9fb3719199 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md @@ -102,7 +102,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C3184 | Obsolete. | | [Compiler error C3185](compiler-error-c3185.md) | 'typeid': used on managed/WinRT type '*type*', use '*operator*' instead | | Compiler error C3186 | Obsolete. | -| [Compiler error C3187](compiler-error-c3187.md) | '*identifier*': is only available within the body of a function | +| [Compiler error C3187](compiler-error-c3187.md) | '`__func__`': is only available within the body of a function | | Compiler error C3188 | Obsolete. | | [Compiler error C3189](compiler-error-c3189.md) | 'typeid<*declarator*>': this syntax is no longer supported, use::typeid instead (Obsolete in Visual Studio 2022.) | | [Compiler error C3190](compiler-error-c3190.md) | '*declarator*' with the provided template arguments is not the explicit instantiation of any member function of '*type*' | From ac6165812a63146a1071bd3f23e272458a22d8bd Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:52:39 +0800 Subject: [PATCH 136/619] Update metadata in 2 error reference topics --- .../error-messages/compiler-errors-2/compiler-error-c3187.md | 5 ++--- .../compiler-errors-2/compiler-errors-c3100-through-c3199.md | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index 423bc277df2..f4f244b6d9b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Error C3187" title: "Compiler Error C3187" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Error C3187" +ms.date: 08/15/2025 f1_keywords: ["C3187"] helpviewer_keywords: ["C3187"] -ms.assetid: 9d2ebf55-1a6a-4087-bf5b-5274baae6351 --- # Compiler Error C3187 diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md index d9fb3719199..92e4a1b994d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3100-through-c3199.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Compiler errors C3100 Through C3199" title: "Compiler errors C3100 Through C3199" +description: "Learn more about: Compiler errors C3100 Through C3199" ms.date: 06/01/2022 f1_keywords: ["C3102", "C3105", "C3107", "C3108", "C3109", "C3111", "C3112", "C3119", "C3122", "C3123", "C3124", "C3125", "C3127", "C3128", "C3129", "C3143", "C3144", "C3146", "C3147", "C3148", "C3151", "C3158", "C3164", "C3165", "C3169", "C3177", "C3178", "C3184", "C3186", "C3188", "C3191", "C3193"] helpviewer_keywords: ["C3102", "C3105", "C3107", "C3108", "C3109", "C3111", "C3112", "C3119", "C3122", "C3123", "C3124", "C3125", "C3127", "C3128", "C3129", "C3143", "C3144", "C3146", "C3147", "C3148", "C3151", "C3158", "C3164", "C3165", "C3169", "C3177", "C3178", "C3184", "C3186", "C3188", "C3191", "C3193"] From b8cdb92469c34f627b1d06021876c92c8cb9e24d Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 15 Aug 2025 16:58:16 +0800 Subject: [PATCH 137/619] Add C2457 "See also" link in C3187 error reference --- docs/error-messages/compiler-errors-2/compiler-error-c3187.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index f4f244b6d9b..3710ca2abe3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -27,3 +27,7 @@ auto global = __func__; // C3187, usage in global scope void func(const char* f = __func__); // C3187, usage in parameter list ``` + +## See also + +[C2457](../compiler-errors-1/compiler-error-c2457.md) From 72e3d0cf0bc82bf0701f786834a3e989d9f8c63f Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 00:58:25 +0800 Subject: [PATCH 138/619] Add missing C2554 `f1_keywords` and `helpviewer_keywords` in "Compiler errors C2500 Through C2599" --- .../compiler-errors-2/compiler-errors-c2500-through-c2599.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md index d6a27711af8..5340336b562 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md @@ -2,8 +2,8 @@ title: "Compiler errors C2500 Through C2599" description: "Learn more about: Compiler errors C2500 Through C2599" ms.date: 04/21/2019 -f1_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] -helpviewer_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] +f1_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2554", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] +helpviewer_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2554", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] --- # Compiler errors C2500 Through C2599 From 3d64461339e3fd13158e2f519094879b80039223 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Mon, 18 Aug 2025 23:57:27 +0800 Subject: [PATCH 139/619] Fix some typos in `` functions reference --- docs/standard-library/algorithm-functions.md | 36 ++++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/standard-library/algorithm-functions.md b/docs/standard-library/algorithm-functions.md index b243d2c1ebb..7e55579a809 100644 --- a/docs/standard-library/algorithm-functions.md +++ b/docs/standard-library/algorithm-functions.md @@ -595,7 +595,7 @@ An output iterator addressing the position that is one past the final element in The source range must be valid and there must be sufficient space at the destination to hold all the elements being copied. -The `copy_backward` algorithm imposes more stringent requirements than that the `copy` algorithm. Both its input and output iterators must be bidirectional. +The `copy_backward` algorithm imposes more stringent requirements than the `copy` algorithm. Both its input and output iterators must be bidirectional. The `copy_backward` and [`move_backward`](algorithm-functions.md#move_backward) algorithms are the only C++ Standard Library algorithms designating the output range with an iterator pointing to the end of the destination range. @@ -908,13 +908,13 @@ int main() vector::iterator::difference_type result; result = count(v1.begin(), v1.end(), 10); - cout << "The number of 10s in v2 is: " << result << "." << endl; + cout << "The number of 10s in v1 is: " << result << "." << endl; } ``` ```Output v1 = ( 10 20 10 40 10 ) -The number of 10s in v2 is: 3. +The number of 10s in v1 is: 3. ``` ## `count_if` @@ -2149,7 +2149,7 @@ public: { } - // The function call to process the next elment + // The function call to process the next element void operator( ) ( int elem ) { num++; // Increment the element count @@ -2686,7 +2686,7 @@ int main() cout << *Iter3b << " "; cout << ")." << endl; - // To test for inclusion under an asscending order + // To test for inclusion under an ascending order // with the default binary predicate less( ) bool Result1; Result1 = includes ( v1a.begin( ), v1a.end( ), @@ -5933,7 +5933,7 @@ int main() cout << *Iter1 << " "; cout << ")." << endl; - // Partition the range with predicate greater10 + // Partition the range with predicate greater5 partition ( v1.begin( ), v1.end( ), greater5 ); cout << "The partitioned set of elements in v1 is: ( " ; for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ ) @@ -6694,7 +6694,7 @@ An input iterator addressing the position one past the final element in the rang An output iterator addressing the position of the first element in the destination range to which elements are being removed. *`pred`*\ -The unary predicate that must be satisfied is the value of an element is to be replaced. +The unary predicate that must be satisfied if the value of an element is to be replaced. ### Return value @@ -6751,7 +6751,7 @@ int main() new_end = remove_copy_if ( v1.begin( ), v1.end( ), v2.begin( ), greater6 ); - cout << "After the appliation of remove_copy_if to v1,\n " + cout << "After the application of remove_copy_if to v1,\n " << "vector v1 is left unchanged as ( " ; for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ ) cout << *Iter1 << " "; @@ -6767,7 +6767,7 @@ int main() ```Output The original vector v1 is: ( 4 7 7 7 0 5 7 1 6 9 3 7 8 2 ). -After the appliation of remove_copy_if to v1, +After the application of remove_copy_if to v1, vector v1 is left unchanged as ( 4 7 7 7 0 5 7 1 6 9 3 7 8 2 ). Vector v2 is a copy of v1 with values greater than 6 removed: ( 4 0 5 1 6 3 2 ). @@ -6804,7 +6804,7 @@ A forward iterator pointing to the position of the first element in the range fr A forward iterator pointing to the position one past the final element in the range from which elements are being removed. *`pred`*\ -The unary predicate that must be satisfied is the value of an element is to be replaced. +The unary predicate that must be satisfied if the value of an element is to be replaced. ### Return value @@ -7148,7 +7148,7 @@ An input iterator pointing to the position one past the final element in the ran An output iterator pointing to the position of the first element in the destination range to which elements are being copied. *`pred`*\ -The unary predicate that must be satisfied is the value of an element is to be replaced. +The unary predicate that must be satisfied if the value of an element is to be replaced. *`value`*\ The new value being assigned to the elements whose old value satisfies the predicate. @@ -7277,7 +7277,7 @@ A forward iterator pointing to the position of the first element in the range fr An iterator pointing to the position one past the final element in the range from which elements are being replaced. *`pred`*\ -The unary predicate that must be satisfied is the value of an element is to be replaced. +The unary predicate that must be satisfied if the value of an element is to be replaced. *`value`*\ The new value being assigned to the elements whose old value satisfies the predicate. @@ -8269,7 +8269,7 @@ int main() cout << *Iter3b << " "; cout << ")." << endl; - // To combine into a difference in asscending + // To combine into a difference in ascending // order with the default binary predicate less( ) Result1 = set_difference ( v1a.begin( ), v1a.end( ), v1b.begin( ), v1b.end( ), v1.begin( ) ); @@ -8488,7 +8488,7 @@ int main() cout << *Iter3b << " "; cout << ")." << endl; - // To combine into an intersection in asscending order with the + // To combine into an intersection in ascending order with the // default binary predicate less( ) Result1 = set_intersection ( v1a.begin( ), v1a.end( ), v1b.begin( ), v1b.end( ), v1.begin( ) ); @@ -9170,7 +9170,7 @@ Heaps have two properties: - Elements may be added or removed in logarithmic time. -After the application if this algorithm, the range it was applied to is no longer a heap. +After the application of this algorithm, the range it was applied to is no longer a heap. `sort_heap` isn't a stable sort because the relative order of equivalent elements isn't necessarily preserved. @@ -9585,7 +9585,7 @@ A forward iterator pointing to one past the final position of the second range w The ranges referenced must be valid; all pointers must be dereferenceable and within each sequence the last position is reachable from the first by incrementation. The second range has to be as large as the first range. -The complexity is linear with *last1* - *first1* swaps performed. If elements from containers of the same type are being swapped, them the `swap` member function from that container should be used, because the member function typically has constant complexity. +The complexity is linear with *last1* - *first1* swaps performed. If elements from containers of the same type are being swapped, then the `swap` member function from that container should be used, because the member function typically has constant complexity. ### Example @@ -9922,7 +9922,7 @@ int main() cout << *v1_Iter1 << " "; cout << ")." << endl; - // Remove consecutive duplicates under the binary prediate mod_equals + // Remove consecutive duplicates under the binary predicate mod_equals v1_NewEnd2 = unique ( v1.begin( ), v1_NewEnd1 , mod_equal ); cout << "Removing adjacent duplicates from vector v1 under the\n " @@ -10078,7 +10078,7 @@ int main() { for ( iv = 0 ; iv <= 7 ; iv++ ) v1.push_back( 10 ); - // Remove consecutive duplicates under the binary prediate mod_equals + // Remove consecutive duplicates under the binary predicate mod_equals v1_NewEnd2 = unique_copy ( v1.begin( ), v1.begin( ) + 14, v1.begin( ) + 14 , mod_equal ); From 03ace2f09fd358b6e1f6c42867b7b8b6ee2a3d0a Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 00:00:34 +0800 Subject: [PATCH 140/619] Clean up duplicate semicolons in `` functions reference --- docs/standard-library/algorithm-functions.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/standard-library/algorithm-functions.md b/docs/standard-library/algorithm-functions.md index 7e55579a809..3865864df02 100644 --- a/docs/standard-library/algorithm-functions.md +++ b/docs/standard-library/algorithm-functions.md @@ -2892,7 +2892,7 @@ int main() // Applying a user defined (UD) binary predicate mod_lesser inplace_merge ( v3.begin( ), break3, v3.end( ), mod_lesser ); cout << "Merged inplace with binary predicate mod_lesser specified,\n " - << "vector v3mod = ( " ; ; + << "vector v3mod = ( " ; for ( Iter3 = v3.begin( ) ; Iter3 != v3.end( ) ; Iter3++ ) cout << *Iter3 << " "; cout << ")" << endl; @@ -4424,7 +4424,7 @@ int main() { merge ( v3a.begin( ), v3a.end( ), v3b.begin( ), v3b.end( ), v3.begin( ), mod_lesser ); cout << "Merged inplace with binary predicate mod_lesser specified,\n " - << "vector v3mod = ( " ; ; + << "vector v3mod = ( " ; for ( Iter3 = v3.begin( ) ; Iter3 != v3.end( ) ; Iter3++ ) cout << *Iter3 << " "; cout << ")." << endl; @@ -8294,7 +8294,7 @@ int main() Result3 = set_difference ( v3a.begin( ), v3a.end( ), v3b.begin( ), v3b.end( ), v3.begin( ), mod_lesser ); cout << "Set_difference of source ranges with binary " - << "predicate mod_lesser specified,\n vector v3mod = ( " ; ; + << "predicate mod_lesser specified,\n vector v3mod = ( " ; for ( Iter3 = v3.begin( ) ; Iter3 != Result3 ; Iter3++ ) cout << *Iter3 << " "; cout << ")." << endl; @@ -8513,7 +8513,7 @@ int main() Result3 = set_intersection ( v3a.begin( ), v3a.end( ), v3b.begin( ), v3b.end( ), v3.begin( ), mod_lesser ); cout << "Intersection of source ranges with binary predicate " - << "mod_lesser specified,\n vector v3mod = ( " ; ; + << "mod_lesser specified,\n vector v3mod = ( " ; for ( Iter3 = v3.begin( ) ; Iter3 != Result3 ; ++Iter3 ) cout << *Iter3 << " "; cout << ")." << endl; @@ -8736,7 +8736,7 @@ int main() Result3 = set_symmetric_difference ( v3a.begin( ), v3a.end( ), v3b.begin( ), v3b.end( ), v3.begin( ), mod_lesser ); cout << "Set_symmetric_difference of source ranges with binary " - << "predicate mod_lesser specified,\n vector v3mod = ( " ; ; + << "predicate mod_lesser specified,\n vector v3mod = ( " ; for ( Iter3 = v3.begin( ) ; Iter3 != Result3 ; Iter3++ ) cout << *Iter3 << " "; cout << ")." << endl; @@ -8959,7 +8959,7 @@ int main() Result3 = set_union ( v3a.begin( ), v3a.end( ), v3b.begin( ), v3b.end( ), v3.begin( ), mod_lesser ); cout << "Union of source ranges with binary predicate " - << "mod_lesser specified,\n vector v3mod = ( " ; ; + << "mod_lesser specified,\n vector v3mod = ( " ; for ( Iter3 = v3.begin( ) ; Iter3 != Result3 ; Iter3++ ) cout << *Iter3 << " "; cout << ")." << endl; From 24da214979feee1f2b850c8d2cea7d661bf61750 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 00:03:56 +0800 Subject: [PATCH 141/619] Remove 1 double and trailing space in `` functions reference --- docs/standard-library/algorithm-functions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/algorithm-functions.md b/docs/standard-library/algorithm-functions.md index 3865864df02..976e06b9fac 100644 --- a/docs/standard-library/algorithm-functions.md +++ b/docs/standard-library/algorithm-functions.md @@ -2292,7 +2292,7 @@ public: } }; -// Utility to display the contents of a vector +// Utility to display the contents of a vector template void print_vector(const std::vector &vec) { std::cout << "( "; @@ -6660,7 +6660,7 @@ Vector v2 is a copy of v1 with the value 7 removed: ## `remove_copy_if` -Copies elements from a source range to a destination range, except for elements that satisfy a predicate. Elements are copied without disturbing the order of the remaining elements. Returns the end of a new destination range. +Copies elements from a source range to a destination range, except for elements that satisfy a predicate. Elements are copied without disturbing the order of the remaining elements. Returns the end of a new destination range. ```cpp template From 613193555701587060c76b4585aa69b44c166f55 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Tue, 19 Aug 2025 00:06:27 +0800 Subject: [PATCH 142/619] Fix extraneous `>` in `mismatch` syntax in `` functions reference --- docs/standard-library/algorithm-functions.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/algorithm-functions.md b/docs/standard-library/algorithm-functions.md index 976e06b9fac..65b150d64e8 100644 --- a/docs/standard-library/algorithm-functions.md +++ b/docs/standard-library/algorithm-functions.md @@ -4949,13 +4949,14 @@ Use the dual-range overloads in C++14 code because the overloads that only take ```cpp template -pair> +pair mismatch( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2 ); -template pair> +template +pair mismatch( InputIterator1 first1, InputIterator1 last1, @@ -4964,14 +4965,15 @@ mismatch( //C++14 template -pair> +pair mismatch( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2 ); -template pair> +template +pair mismatch( InputIterator1 first1, InputIterator1 last1, From 09c5a3236adf8ab2f4bdd7fabfc6e8b6d9395a75 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:02:35 +0800 Subject: [PATCH 143/619] Update `get` syntax in `` functions reference --- docs/standard-library/array-functions.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index 60e9c8027c5..a1fadf65b8c 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -14,14 +14,17 @@ The `` header includes two non-member functions, `get` and `swap`, that o Returns a reference to the specified element of the array. ```cpp -template -constexpr T& get(array& arr) noexcept; +template +constexpr T& get(std::array& arr) noexcept; -template -constexpr const T& get(const array& arr) noexcept; +template +constexpr const T& get(const std::array& arr) noexcept; -template -constexpr T&& get(array&& arr) noexcept; +template +constexpr T&& get(std::array&& arr) noexcept; + +template +constexpr const T&& get(const std::array&& arr) noexcept; ``` ### Parameters @@ -29,10 +32,10 @@ constexpr T&& get(array&& arr) noexcept; *`Index`*\ The element offset. -*`T`*\ +*`Type`*\ The type of an element. -*`N`*\ +*`Size`*\ The number of elements in the array. *`arr`*\ From b0d9bb4624e248765637fdfcb37f922b81838992 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:06:39 +0800 Subject: [PATCH 144/619] Update `swap` syntax in `` functions reference --- docs/standard-library/array-functions.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index a1fadf65b8c..4ffdc5b50b4 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -78,16 +78,16 @@ int main() A non-member template specialization of `std::swap` that swaps two **array** objects. ```cpp -template -void swap(array& left, array& right); +template +void swap(std::array& left, std::array& right); ``` ### Parameters -*`Ty`*\ +*`Type`*\ The type of an element. -*`N`*\ +*`Size`*\ The size of the array. *`left`*\ From e30b46e83f88f3f2fc1d38759a107a6df07d6a98 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:11:17 +0800 Subject: [PATCH 145/619] Add "Template parameters" headings in `` functions reference --- docs/standard-library/array-functions.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index 4ffdc5b50b4..c73093fd750 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -27,7 +27,7 @@ template constexpr const T&& get(const std::array&& arr) noexcept; ``` -### Parameters +### Template parameters *`Index`*\ The element offset. @@ -38,6 +38,8 @@ The type of an element. *`Size`*\ The number of elements in the array. +### Parameters + *`arr`*\ The array to select from. @@ -82,7 +84,7 @@ template void swap(std::array& left, std::array& right); ``` -### Parameters +### Template parameters *`Type`*\ The type of an element. @@ -90,6 +92,8 @@ The type of an element. *`Size`*\ The size of the array. +### Parameters + *`left`*\ The first array to swap. From 183ce44376e3e3e245e936ba5fca94e085386cc0 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:47:55 +0800 Subject: [PATCH 146/619] Document C++20 `std::to_array` function --- docs/standard-library/array-functions.md | 74 +++++++++++++++++++++++- docs/standard-library/array.md | 1 + 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index c73093fd750..d2e34dae34d 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -2,12 +2,12 @@ title: " functions" description: "Learn more about: functions" ms.date: 11/04/2016 -f1_keywords: ["array/std::array::get", "array/std::get", "array/std::swap"] -helpviewer_keywords: ["std::array [C++], get", "std::get [C++]", "std::swap [C++]"] +f1_keywords: ["array/std::array::get", "array/std::get", "array/std::swap", "array/std::to_array"] +helpviewer_keywords: ["std::array [C++], get", "std::get [C++]", "std::swap [C++]", "std::to_array [C++]"] --- # `` functions -The `` header includes two non-member functions, `get` and `swap`, that operate on **array** objects. +The `` header includes three non-member functions, `get`, `swap`, and `to_array` that operate on **array** objects. ## `get` @@ -150,6 +150,74 @@ int main() 0 1 2 3 ``` +## `to_array` + +Converts a built-in array to a `std::array` object. + +```cpp +// C++20 +template +constexpr std::array, Size> to_array(Type (&arr)[Size]); + +// C++20 +template +constexpr std::array, Size> to_array(Type (&&arr)[Size]); +``` + +### Template parameters + +*`Type`*\ +The type of an element. + +*`Size`*\ +The size of the input array. + +### Parameters + +*`arr`*\ +The input array used for conversion. + +### Example + +```cpp +// std_to_array.cpp +// Requires /std:c++20 or later + +#include +#include + +int main() +{ + int arr1[]{ 1, 2, 3 }; + std::array arr2 = std::to_array(arr1); + + std::cout << "std::to_array(arr1):\n"; + for (const auto& i : arr2) + { + std::cout << i << " "; + } + std::cout << std::endl; + + // The size is 7 as it includes the null terminator + std::array arr3 = std::to_array("string"); + + std::cout << "\nstd::to_array(\"string\"):\n"; + for (const auto& i : arr3) + { + std::cout << i << " "; + } + std::cout << std::endl; +} +``` + +```Output +std::to_array(arr1): +1 2 3 + +std::to_array("string"): +s t r i n g +``` + ## See also [``](../standard-library/array.md) diff --git a/docs/standard-library/array.md b/docs/standard-library/array.md index 85273440ba3..1bf0296e70b 100644 --- a/docs/standard-library/array.md +++ b/docs/standard-library/array.md @@ -45,6 +45,7 @@ Defines the container class template **array** and several supporting templates. |-|-| |[get](../standard-library/array-functions.md#get)|Get specified array element.| |[swap](../standard-library/array-functions.md#swap)|Exchanges the contents of one array with the contents of another array.| +| [`to_array`](array-functions.md#to_array) | Converts a built-in array to a `std::array` object. | ## See also From 99323ab1dc7aabbc3ed16af1bd1c03fc683d93e1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:49:18 +0800 Subject: [PATCH 147/619] Simplify single "See also" link in `` functions reference --- docs/standard-library/array-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index d2e34dae34d..a3924b24921 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -220,4 +220,4 @@ s t r i n g ## See also -[``](../standard-library/array.md) +[``](array.md) From d1f2f14af18e9b9aac6a18cf2ded9809e047f36b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:50:57 +0800 Subject: [PATCH 148/619] Update metadata in 2 standard library topics --- docs/standard-library/array-functions.md | 2 +- docs/standard-library/array.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index a3924b24921..709189a51eb 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -1,7 +1,7 @@ --- title: " functions" description: "Learn more about: functions" -ms.date: 11/04/2016 +ms.date: 08/20/2025 f1_keywords: ["array/std::array::get", "array/std::get", "array/std::swap", "array/std::to_array"] helpviewer_keywords: ["std::array [C++], get", "std::get [C++]", "std::swap [C++]", "std::to_array [C++]"] --- diff --git a/docs/standard-library/array.md b/docs/standard-library/array.md index 1bf0296e70b..331316ee9e2 100644 --- a/docs/standard-library/array.md +++ b/docs/standard-library/array.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: " title: "" -ms.date: "11/04/2016" +description: "Learn more about: " +ms.date: 11/04/2016 f1_keywords: [""] helpviewer_keywords: ["array header"] --- From e89f4e60f98fb4697cd10dfb131e2bd344952049 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 20 Aug 2025 23:48:26 +0800 Subject: [PATCH 149/619] Add missing commas in template parameter list --- docs/standard-library/chrono-functions.md | 2 +- docs/standard-library/istreambuf-iterator-class.md | 2 +- docs/standard-library/ostream-iterator-class.md | 2 +- docs/standard-library/ostreambuf-iterator-class.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/chrono-functions.md b/docs/standard-library/chrono-functions.md index e1812b1d349..ed9c593c99f 100644 --- a/docs/standard-library/chrono-functions.md +++ b/docs/standard-library/chrono-functions.md @@ -347,7 +347,7 @@ If the parse fails, `is.setstate`(`ios_base::failbit`) is called and the output ```cpp // 1) day - C++20 -template> +template> basic_istream& from_stream( basic_istream& is, const charT* fmt, diff --git a/docs/standard-library/istreambuf-iterator-class.md b/docs/standard-library/istreambuf-iterator-class.md index 9b05304ed12..78cc65c400e 100644 --- a/docs/standard-library/istreambuf-iterator-class.md +++ b/docs/standard-library/istreambuf-iterator-class.md @@ -15,7 +15,7 @@ The class template istreambuf_iterator describes an input iterator object that e ## Syntax ```cpp -template > +template > class istreambuf_iterator : public iterator ``` diff --git a/docs/standard-library/ostream-iterator-class.md b/docs/standard-library/ostream-iterator-class.md index de3f56cd39c..8f3ed11025d 100644 --- a/docs/standard-library/ostream-iterator-class.md +++ b/docs/standard-library/ostream-iterator-class.md @@ -15,7 +15,7 @@ The class template ostream_iterator describes an output iterator object that wri ## Syntax ```cpp -template > +template > class ostream_iterator ``` diff --git a/docs/standard-library/ostreambuf-iterator-class.md b/docs/standard-library/ostreambuf-iterator-class.md index dea0af412dd..ff57128a316 100644 --- a/docs/standard-library/ostreambuf-iterator-class.md +++ b/docs/standard-library/ostreambuf-iterator-class.md @@ -13,7 +13,7 @@ The class template ostreambuf_iterator describes an output iterator object that ## Syntax ```cpp -template > +template > ``` ### Parameters From 9174ea421cfcf3c70e6671ed9e8b73a89545c4d7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 18:54:43 +0800 Subject: [PATCH 150/619] Augment remarks in C2190 and C2191 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2190.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2191.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md index b1b5022b249..0deb9451756 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C2190"] ## Remarks -A C function was declared a second time with a shorter parameter list. C does not support overloaded functions. +A C function was declared a second time with a shorter parameter list. C does not support overloaded functions. Without [`/Za`](../../build/reference/za-ze-disable-language-extensions.md), the compiler emits [Compiler Warning (level 1) C4030](../compiler-warnings/compiler-warning-level-1-c4030.md) instead. ## Example diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md index 26511d59b3e..9e852064a0e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C2191"] ## Remarks -A C function was declared a second time with a longer parameter list. C does not support overloaded functions. +A C function was declared a second time with a longer parameter list. C does not support overloaded functions. Without [`/Za`](../../build/reference/za-ze-disable-language-extensions.md), the compiler emits [Compiler Warning (level 1) C4031](../compiler-warnings/compiler-warning-level-1-c4031.md) instead. ## Example From bc7633e9a6de13d8bff59bdef7e1b5dd9520d623 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 19:00:17 +0800 Subject: [PATCH 151/619] Tweak and format examples in C2190 and C2191 error reference --- .../compiler-errors-1/compiler-error-c2190.md | 8 +++++--- .../compiler-errors-1/compiler-error-c2191.md | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md index 0deb9451756..1ccb66644bc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md @@ -20,7 +20,9 @@ The following example generates C2190: ```c // C2190.c // compile with: /Za /c -void func( int, float ); -void func( int ); // C2190, different parameter list -void func2( int ); // OK + +void func1(int, float); +void func1(int); // C2190, shorter parameter list + +void func2(int); // OK ``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md index 9e852064a0e..16866c8a827 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md @@ -20,7 +20,9 @@ The following example generates C2191: ```c // C2191.c // compile with: /Za /c -void func( int ); -void func( int, float ); // C2191 different parameter list -void func2( int, float ); // OK + +void func1(int); +void func1(int, float); // C2191, longer parameter list + +void func2(int, float); // OK ``` From b740cb135d0413e0c090a6e5ab7354edc8e149a7 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 19:04:16 +0800 Subject: [PATCH 152/619] Add each other as "See also" link in C2190 and C2191 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2190.md | 4 ++++ docs/error-messages/compiler-errors-1/compiler-error-c2191.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md index 1ccb66644bc..594841f7d9e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md @@ -26,3 +26,7 @@ void func1(int); // C2190, shorter parameter list void func2(int); // OK ``` + +## See also + +[Compiler Error C2191](compiler-error-c2191.md) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md index 16866c8a827..65f2337043a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md @@ -26,3 +26,7 @@ void func1(int, float); // C2191, longer parameter list void func2(int, float); // OK ``` + +## See also + +[Compiler Error C2190](compiler-error-c2190.md) From 34f705f5e5a6036b75d3e4c9203da58139692175 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Fri, 22 Aug 2025 19:05:34 +0800 Subject: [PATCH 153/619] Update `ms.date` metadata in C2190 and C2191 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2190.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2191.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md index 594841f7d9e..8c9adb4ad4c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2190" description: "Learn more about: Compiler Error C2190" -ms.date: 11/04/2016 +ms.date: 08/22/2025 f1_keywords: ["C2190"] helpviewer_keywords: ["C2190"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md index 65f2337043a..9644cee4889 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2191" description: "Learn more about: Compiler Error C2191" -ms.date: 11/04/2016 +ms.date: 08/22/2025 f1_keywords: ["C2191"] helpviewer_keywords: ["C2191"] --- From 3976b9ed0ce57ca059410509492fb8e9d6f0626e Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 22:16:46 +0800 Subject: [PATCH 154/619] Add blockquotes and update C4541 warning message --- .../compiler-warnings/compiler-warning-level-1-c4541.md | 2 +- .../compiler-warnings/compiler-warnings-c4400-through-c4599.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md index ed2547e029a..f63a6f6f258 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md @@ -8,6 +8,6 @@ ms.assetid: b57b8f3e-117d-4fc2-bba6-faec17e5fa9d --- # Compiler Warning (level 1) C4541 -'identifier' used on polymorphic type 'type' with /GR-; unpredictable behavior may result +> '*operator*' used on polymorphic type '*type*' with /GR-; unpredictable behavior may result You tried to use a feature that requires run-time type information without enabling run-time type information. Recompile with [/GR](../../build/reference/gr-enable-run-time-type-information.md). diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md index 03b421b60ea..6bbc48d1b0a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md @@ -139,7 +139,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 1) C4537](compiler-warning-level-1-c4537.md)|'*object*': '`.`' applied to non-UDT type| |[Compiler warning (level 3) C4538](compiler-warning-level-3-c4538.md)|'*type*': `const`/`volatile` qualifiers on this type are not supported| |[Compiler warning (level 1) C4540](compiler-warning-level-1-c4540.md)|`dynamic_cast` used to convert to inaccessible or ambiguous base; run-time test will fail ('*type1*' to '*type2*')| -|[Compiler warning (level 1) C4541](compiler-warning-level-1-c4541.md)|'*identifier*' used on polymorphic type '*type*' with `/GR-`; unpredictable behavior may result| +|[Compiler warning (level 1) C4541](compiler-warning-level-1-c4541.md)|'*operator*' used on polymorphic type '*type*' with /GR-; unpredictable behavior may result| |Compiler warning (level 1) C4542|Skipping generation of merged injected text file, cannot write *filetype* file: '*issue*': *message*| |[Compiler warning (level 3) C4543](compiler-warning-level-3-c4543.md)|Injected text suppressed by attribute '`no_injected_text`'| |[Compiler warning (level 1) C4544](compiler-warning-level-1-c4544.md)|the default template argument for '*declaration*' is ignored on this template declaration| From f6f9a038ce525caf8fb91df58415a6482c46f4ed Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 22:38:45 +0800 Subject: [PATCH 155/619] Add "Remarks" heading and augment remarks in C4541 warning reference --- .../compiler-warnings/compiler-warning-level-1-c4541.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md index f63a6f6f258..07fdc9a7781 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md @@ -10,4 +10,6 @@ ms.assetid: b57b8f3e-117d-4fc2-bba6-faec17e5fa9d > '*operator*' used on polymorphic type '*type*' with /GR-; unpredictable behavior may result -You tried to use a feature that requires run-time type information without enabling run-time type information. Recompile with [/GR](../../build/reference/gr-enable-run-time-type-information.md). +## Remarks + +You tried to use the [`dynamic_cast` operator](../../cpp/dynamic-cast-operator.md) or [`typeid` operator](../../cpp/typeid-operator.md), which requires [Run-Time Type Information](../../cpp/run-time-type-information.md) (RTTI), without enabling it. To enable RTTI, recompile with [`/GR`](../../build/reference/gr-enable-run-time-type-information.md). From 5f5b299a555ad8486c8852a312cfd65a4ded7499 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 22:51:53 +0800 Subject: [PATCH 156/619] Add example in C4541 warning reference --- .../compiler-warning-level-1-c4541.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md index 07fdc9a7781..0d7d7b7df52 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md @@ -13,3 +13,32 @@ ms.assetid: b57b8f3e-117d-4fc2-bba6-faec17e5fa9d ## Remarks You tried to use the [`dynamic_cast` operator](../../cpp/dynamic-cast-operator.md) or [`typeid` operator](../../cpp/typeid-operator.md), which requires [Run-Time Type Information](../../cpp/run-time-type-information.md) (RTTI), without enabling it. To enable RTTI, recompile with [`/GR`](../../build/reference/gr-enable-run-time-type-information.md). + +## Example + +The following example generates C4541: + +```cpp +// C4541.cpp +// compile with: /W1 /GR- + +#include + +struct Base +{ + virtual ~Base() {} +}; + +struct Derived : Base {}; + +int main() +{ + Derived derived; + Base* pointer_to_base = &derived; + + dynamic_cast(pointer_to_base); // C4541 + + typeid(*pointer_to_base); // C4541 + typeid(pointer_to_base); // OK +} +``` From 04070b95593b5ee376e2d7fb52fba63ca61e67c1 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Sun, 24 Aug 2025 22:53:33 +0800 Subject: [PATCH 157/619] Update metadata in 2 warning reference topics --- .../compiler-warnings/compiler-warning-level-1-c4541.md | 5 ++--- .../compiler-warnings-c4400-through-c4599.md | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md index 0d7d7b7df52..5b5982d38a6 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4541.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: Compiler Warning (level 1) C4541" title: "Compiler Warning (level 1) C4541" -ms.date: "11/04/2016" +description: "Learn more about: Compiler Warning (level 1) C4541" +ms.date: 08/24/2025 f1_keywords: ["C4541"] helpviewer_keywords: ["C4541"] -ms.assetid: b57b8f3e-117d-4fc2-bba6-faec17e5fa9d --- # Compiler Warning (level 1) C4541 diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md index 6bbc48d1b0a..e0ce42c2539 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4400-through-c4599.md @@ -1,7 +1,7 @@ --- title: "Microsoft C/C++ compiler (MSVC) warnings C4400 through C4599" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C4400 through C4599" -ms.date: "1/22/2025" +ms.date: 1/22/2025 f1_keywords: ["C4413", "C4415", "C4416", "C4417", "C4418", "C4419", "C4421", "C4423", "C4424", "C4425", "C4426", "C4427", "C4438", "C4442", "C4443", "C4444", "C4446", "C4447", "C4448", "C4449", "C4450", "C4451", "C4452", "C4453", "C4454", "C4455", "C4466", "C4467", "C4468", "C4472", "C4474", "C4475", "C4476", "C4478", "C4480", "C4482", "C4483", "C4491", "C4492", "C4493", "C4494", "C4495", "C4496", "C4497", "C4498", "C4499", "C4509", "C4519", "C4531", "C4542", "C4562", "C4568", "C4569", "C4573", "C4574", "C4575", "C4576", "C4578", "C4582", "C4583", "C4585", "C4586", "C4587", "C4588", "C4589", "C4591", "C4592", "C4593", "C4594", "C4595", "C4598", "C4599"] helpviewer_keywords: ["C4413", "C4415", "C4416", "C4417", "C4418", "C4419", "C4421", "C4423", "C4424", "C4425", "C4426", "C4427", "C4438", "C4442", "C4443", "C4444", "C4446", "C4447", "C4448", "C4449", "C4450", "C4451", "C4452", "C4453", "C4454", "C4455", "C4466", "C4467", "C4468", "C4472", "C4474", "C4475", "C4476", "C4478", "C4480", "C4482", "C4483", "C4491", "C4492", "C4493", "C4494", "C4495", "C4496", "C4497", "C4498", "C4499", "C4509", "C4519", "C4531", "C4542", "C4562", "C4568", "C4569", "C4573", "C4574", "C4575", "C4576", "C4578", "C4582", "C4583", "C4585", "C4586", "C4587", "C4588", "C4589", "C4591", "C4592", "C4593", "C4594", "C4595", "C4598", "C4599"] --- From 6b073ffd11ddf01d8fc1bac0540c32605b68d438 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:19:23 +0800 Subject: [PATCH 158/619] Update error message in C2277 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2277.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index 1f56b60b30e..374a9a0cfb3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2277"] --- # Compiler Error C2277 -> 'identifier' : cannot take address of this member function +> '*function*': cannot take address of this member function ## Remarks From 6ba724649644d3c436be3009bd8a0e80b8409e57 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:30:42 +0800 Subject: [PATCH 159/619] Augment remarks in C2277 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2277.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index 374a9a0cfb3..fc073f0fd2d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["C2277"] ## Remarks -You cannot take the address of a member function. +You cannot take the address of a [constructor](../../cpp/constructors-cpp.md) or [destructor](../../cpp/destructors-cpp.md). For more information, see [Address-of operator: `&`](../../cpp/address-of-operator-amp.md) and [Pointers to Members](../../cpp/pointers-to-members.md). ## Example From 8c9b549f92f7b4f959ce3f8c8f476dbb4b589a7b Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:39:14 +0800 Subject: [PATCH 160/619] Improve example in C2277 error reference --- .../compiler-errors-1/compiler-error-c2277.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index fc073f0fd2d..d021d0d397d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -19,9 +19,14 @@ The following example generates C2277: ```cpp // C2277.cpp -class A { -public: - A(); +// compile with: /c + +struct S +{ + S() {} + ~S() {} }; -(*pctor)() = &A::A; // C2277 + +void (S::* pointer_to_constructor)() = &S::S; // C2277 +void (S::* pointer_to_destructor)() = &S::~S; // C2277 ``` From 90148e799c06930b920b06d92f10fa66e2cdb5b4 Mon Sep 17 00:00:00 2001 From: Rageking8 <106309953+Rageking8@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:40:24 +0800 Subject: [PATCH 161/619] Update `ms.date` metadata in C2277 error reference --- docs/error-messages/compiler-errors-1/compiler-error-c2277.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index d021d0d397d..c5e73e52a40 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2277" description: "Learn more about: Compiler Error C2277" -ms.date: 11/04/2016 +ms.date: 08/27/2025 f1_keywords: ["C2277"] helpviewer_keywords: ["C2277"] --- From 5c4d5dad1d29378a9050915fa394cc00754024bd Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 21:30:15 +0800 Subject: [PATCH 162/619] Fix wrong `-fsanitizer=address` flag in "Walkthrough: Use Address Sanitizer Continue On Error to find memory safety issues" --- docs/sanitizers/asan-continue-on-error.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-continue-on-error.md b/docs/sanitizers/asan-continue-on-error.md index 9d820f863e8..9c322d9b189 100644 --- a/docs/sanitizers/asan-continue-on-error.md +++ b/docs/sanitizers/asan-continue-on-error.md @@ -12,7 +12,7 @@ In this walkthrough, create checked builds that find and report memory safety er Memory safety errors like out-of-bounds memory reads and writes, using memory after it has been freed, `NULL` pointer dereferences, and so on, are a top concern for C/C++ code. Address Sanitizer (ASAN) is a compiler and runtime technology that exposes these kinds of hard-to-find bugs, and does it with zero false positives. For an overview of ASAN, see [AddressSanitizer](asan.md). -Continue On Error (COE) is a new ASAN feature that automatically diagnoses and reports memory safety errors as your app runs. When your program exits, a summary of unique memory safety errors is output to `stdout`, `stderr`, or to a log file of your choice. When you create a standard C++ checked build with `-fsanitizer=address`, calls to allocators, deallocators such as `free`, `memcpy`, `memset`, and so on, are forwarded to the ASAN runtime. The ASAN runtime provides the same semantics for these functions, but monitors what happens with the memory. ASAN diagnoses and reports hidden memory safety errors, with zero false positives, as your app runs. +Continue On Error (COE) is a new ASAN feature that automatically diagnoses and reports memory safety errors as your app runs. When your program exits, a summary of unique memory safety errors is output to `stdout`, `stderr`, or to a log file of your choice. When you create a standard C++ checked build with `-fsanitize=address`, calls to allocators, deallocators such as `free`, `memcpy`, `memset`, and so on, are forwarded to the ASAN runtime. The ASAN runtime provides the same semantics for these functions, but monitors what happens with the memory. ASAN diagnoses and reports hidden memory safety errors, with zero false positives, as your app runs. A significant advantage of COE is that, unlike the previous ASAN behavior, your program doesn't stop running when the first memory error is found. Instead, ASAN notes the error, and your app continues to run. After your app exits, a summary of all the memory issues is output. From 960182794e5bd836a313d613c2c11978a773d944 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 21:35:41 +0800 Subject: [PATCH 163/619] Remove trailing spaces for examples in "Walkthrough: Use Address Sanitizer Continue On Error to find memory safety issues" --- docs/sanitizers/asan-continue-on-error.md | 36 +++++++++++------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/docs/sanitizers/asan-continue-on-error.md b/docs/sanitizers/asan-continue-on-error.md index 9c322d9b189..fe0ac9d406b 100644 --- a/docs/sanitizers/asan-continue-on-error.md +++ b/docs/sanitizers/asan-continue-on-error.md @@ -44,21 +44,21 @@ Create the example: ```cpp #include #include - + void BadFunction(int *pointer) { free(pointer); free(pointer); // double-free! } - + int main(int argc, const char *argv[]) { int *pointer = static_cast(malloc(4)); BadFunction(pointer); - + // Normally we'd crash before this, but with COE we can see heap-use-after-free error as well printf("\n\n******* Pointer value: %d\n", *pointer); - + return 1; } ``` @@ -181,24 +181,24 @@ Create the example: 1. In that directory, create a source file, for example, `coe.cpp`, and paste the following code: ```cpp - #include - + #include + char* func(char* buf, size_t sz) - { - char* local = (char*)malloc(sz); - for (auto ii = 0; ii <= sz; ii++) // bad loop exit test + { + char* local = (char*)malloc(sz); + for (auto ii = 0; ii <= sz; ii++) // bad loop exit test { - local[ii] = ~buf[ii]; // Two memory safety errors + local[ii] = ~buf[ii]; // Two memory safety errors } - - return local; - } - - char buffer[10] = {0,1,2,3,4,5,6,7,8,9}; - + + return local; + } + + char buffer[10] = {0,1,2,3,4,5,6,7,8,9}; + int main() - { - char* inverted_buf= func(buffer, 10); + { + char* inverted_buf= func(buffer, 10); } ``` From 8f9c7346c493eaaf37134214b59b83061ae0c19c Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 22:11:37 +0800 Subject: [PATCH 164/619] Fix a few typos in "Regular expressions (C++)" --- docs/standard-library/regular-expressions-cpp.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/regular-expressions-cpp.md b/docs/standard-library/regular-expressions-cpp.md index 8b4505025ce..cdbebab579e 100644 --- a/docs/standard-library/regular-expressions-cpp.md +++ b/docs/standard-library/regular-expressions-cpp.md @@ -12,7 +12,7 @@ The C++ standard library supports multiple regular expression grammars. This top ## Regular expression grammar -The regular expression grammar to use is by specified by the use of one of the `std::regex_constants::syntax_option_type` enumeration values. These regular expression grammars are defined in `std::regex_constants`: +The regular expression grammar to use is specified by the use of one of the `std::regex_constants::syntax_option_type` enumeration values. These regular expression grammars are defined in `std::regex_constants`: - ECMAScript: This is closest to the grammar used by JavaScript and the .NET languages. - basic: The POSIX basic regular expressions or BRE. @@ -56,7 +56,7 @@ An element can be one of the following: - An *anchor*. Anchor `^` matches the beginning of the target sequence. Anchor `$` matches the end of the target sequence. -A *capture group* of the form (*subexpression*), or \\(*subexpression*\\) in basic and grep, which matches the sequence of characters in the target sequence that is matched by the pattern between the delimiters. +- A *capture group* of the form (*subexpression*), or \\(*subexpression*\\) in basic and grep, which matches the sequence of characters in the target sequence that is matched by the pattern between the delimiters. - An *identity escape* of the form `\k`, which matches the character `k` in the target sequence. @@ -92,7 +92,7 @@ In ECMAScript, an element can also be one of the following: - A *control escape sequence* of the form `\ck`. Matches the control character that is named by the character `k`. -- A *word boundary assert* of the form`\b`. Matches when the current position in the target sequence is immediately after a *word boundary*. +- A *word boundary assert* of the form `\b`. Matches when the current position in the target sequence is immediately after a *word boundary*. - A *negative word boundary assert* of the form `\B`. Matches when the current position in the target sequence isn't immediately after a *word boundary*. From abdc8a3f88324830973ccaf547a3d1fa1230cbbb Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 30 Aug 2025 22:12:19 +0800 Subject: [PATCH 165/619] Move `title` metadata above `description` in "Regular expressions (C++)" --- docs/standard-library/regular-expressions-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/regular-expressions-cpp.md b/docs/standard-library/regular-expressions-cpp.md index cdbebab579e..4704305fde6 100644 --- a/docs/standard-library/regular-expressions-cpp.md +++ b/docs/standard-library/regular-expressions-cpp.md @@ -1,6 +1,6 @@ --- -description: "Learn more about: Regular Expressions (C++)" title: "Regular Expressions (C++)" +description: "Learn more about: Regular Expressions (C++)" ms.date: 07/15/2021 helpviewer_keywords: ["regular expressions [C++]"] no-loc: [ECMAScript, basic, extended, awk, grep, egrep] From 5287df9e843301a5b97a76cbd98a5574b327ac52 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 3 Sep 2025 00:05:24 +0800 Subject: [PATCH 166/619] Add missing semicolon after `struct`/`class` definitions --- docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md | 2 +- docs/error-messages/compiler-errors-2/compiler-error-c2698.md | 2 +- docs/sanitizers/error-new-delete-type-mismatch.md | 2 +- docs/standard-library/gslice-array-class.md | 2 +- docs/standard-library/ratio.md | 2 +- docs/standard-library/scoped-lock-class.md | 2 +- docs/standard-library/slice-array-class.md | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md b/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md index bea45e7ed94..ebcb7bcf0af 100644 --- a/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md +++ b/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md @@ -74,7 +74,7 @@ public: . . . -} +}; ``` You can either allocate these storage buffers manually or have the framework do the allocation. To allocate the buffers yourself, you must specify the `CRecordset::userAllocMultiRowBuffers` option of the *dwOptions* parameter in the `Open` member function. Be sure to set the sizes of the arrays at least equal to the rowset size. If you want to have the framework do the allocation, you should initialize your pointers to NULL. This is typically done in the recordset object's constructor: diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md index 464373f1458..dbc7eef8618 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md @@ -30,5 +30,5 @@ struct B { struct C : A, B { using A::x; using B::x; // C2698 -} +}; ``` diff --git a/docs/sanitizers/error-new-delete-type-mismatch.md b/docs/sanitizers/error-new-delete-type-mismatch.md index 2c19b710af7..097bc08c959 100644 --- a/docs/sanitizers/error-new-delete-type-mismatch.md +++ b/docs/sanitizers/error-new-delete-type-mismatch.md @@ -48,7 +48,7 @@ To fix the example, add: ```cpp struct Base { virtual ~Base() = default; -} +}; ``` To build and test this example, run these commands in a Visual Studio 2019 version 16.9 or later [developer command prompt](../build/building-on-the-command-line.md#developer_command_prompt_shortcuts): diff --git a/docs/standard-library/gslice-array-class.md b/docs/standard-library/gslice-array-class.md index 727afddc3f6..0e3cd70c81e 100644 --- a/docs/standard-library/gslice-array-class.md +++ b/docs/standard-library/gslice-array-class.md @@ -42,7 +42,7 @@ public: void operator>>=(const valarray& x) const; // The rest is private or implementation defined -} +}; ``` ## Remarks diff --git a/docs/standard-library/ratio.md b/docs/standard-library/ratio.md index 05922b7ff4b..b70a7fddfcf 100644 --- a/docs/standard-library/ratio.md +++ b/docs/standard-library/ratio.md @@ -24,7 +24,7 @@ struct ratio // holds the ratio of Numerator to Denominator static constexpr std::intmax_t num; static constexpr std::intmax_t den; typedef ratio type; -} +}; ``` The template `ratio` defines the static constants `num` and `den` such that `num` / `den` == Numerator / Denominator and `num` and `den` have no common factors. `num` / `den` is the value that is represented by the class template. Therefore, `type` designates the instantiation `ratio`. diff --git a/docs/standard-library/scoped-lock-class.md b/docs/standard-library/scoped-lock-class.md index 1cb8e0504b8..436a7359987 100644 --- a/docs/standard-library/scoped-lock-class.md +++ b/docs/standard-library/scoped-lock-class.md @@ -17,5 +17,5 @@ class scoped_lock { ~scoped_lock(); scoped_lock(const scoped_lock&) = delete; scoped_lock& operator=(const scoped_lock&) = delete; -} +}; ``` diff --git a/docs/standard-library/slice-array-class.md b/docs/standard-library/slice-array-class.md index 6bcfaec534d..385f84bdbfc 100644 --- a/docs/standard-library/slice-array-class.md +++ b/docs/standard-library/slice-array-class.md @@ -30,7 +30,7 @@ public: void operator<<=(const valarray& x) const; void operator>>=(const valarray& x) const; // The rest is private or implementation defined -} +}; ``` ## Remarks From 08147a0b3c6fde2e948224a21f02ba1bddbd6a20 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 3 Sep 2025 00:06:35 +0800 Subject: [PATCH 167/619] Update metadata in 5 topics --- docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md | 5 ++--- docs/standard-library/gslice-array-class.md | 3 +-- docs/standard-library/ratio.md | 5 ++--- docs/standard-library/scoped-lock-class.md | 4 ++-- docs/standard-library/slice-array-class.md | 3 +-- 5 files changed, 8 insertions(+), 12 deletions(-) diff --git a/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md b/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md index ebcb7bcf0af..83ad1f4bc73 100644 --- a/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md +++ b/docs/data/odbc/recordset-fetching-records-in-bulk-odbc.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: Recordset: Fetching Records in Bulk (ODBC)" title: "Recordset: Fetching Records in Bulk (ODBC)" -ms.date: "11/04/2016" +description: "Learn more about: Recordset: Fetching Records in Bulk (ODBC)" +ms.date: 11/04/2016 helpviewer_keywords: ["bulk row fetching, implementing", "ODBC recordsets, bulk row fetching", "bulk record field exchange", "bulk row fetching", "bulk RFX functions", "recordsets, bulk row fetching", "DoBulkFieldExchange method", "fetching ODBC records in bulk", "RFX (ODBC), bulk", "rowsets, bulk row fetching", "RFX (ODBC), bulk row fetching"] -ms.assetid: 20d10fe9-c58a-414a-b675-cdf9aa283e4f --- # Recordset: Fetching Records in Bulk (ODBC) diff --git a/docs/standard-library/gslice-array-class.md b/docs/standard-library/gslice-array-class.md index 0e3cd70c81e..22e90f11d0b 100644 --- a/docs/standard-library/gslice-array-class.md +++ b/docs/standard-library/gslice-array-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: gslice_array class" title: "gslice_array class" +description: "Learn more about: gslice_array class" ms.date: 01/12/2022 f1_keywords: ["valarray/std::gslice_array"] helpviewer_keywords: ["gslice_array class"] -ms.assetid: ad1b4514-b14a-4baf-a293-d5a8e8674c75 --- # `gslice_array` class diff --git a/docs/standard-library/ratio.md b/docs/standard-library/ratio.md index b70a7fddfcf..1df9000050b 100644 --- a/docs/standard-library/ratio.md +++ b/docs/standard-library/ratio.md @@ -1,9 +1,8 @@ --- -description: "Learn more about: " title: "" -ms.date: "11/04/2016" +description: "Learn more about: " +ms.date: 11/04/2016 f1_keywords: ["", "ratio/std::mega", "ratio/std::peta", "ratio/std::ratio_greater", "ratio/std::micro", "ratio/std::ratio_add", "ratio/std::ratio_not_equal", "ratio/std::hecto", "ratio/std::nano", "ratio/std::ratio_less_equal", "ratio/std::ratio_less", "ratio/std::centi", "ratio/std::ratio_greater_equal", "ratio/std::ratio_subtract", "ratio/std::atto", "ratio/std::tera", "ratio/std::milli", "ratio/std::ratio_multiply", "ratio/std::kilo", "ratio/std::ratio_divide", "ratio/std::giga", "ratio/std::pico", "ratio/std::femto", "ratio/std::ratio_equal", "ratio/std::ratio", "ratio/std::exa", "ratio/std::deci", "ratio/std::deca"] -ms.assetid: 8543e912-2d84-45ea-b3c0-bd7bfacee405 --- # `` diff --git a/docs/standard-library/scoped-lock-class.md b/docs/standard-library/scoped-lock-class.md index 436a7359987..42b35183393 100644 --- a/docs/standard-library/scoped-lock-class.md +++ b/docs/standard-library/scoped-lock-class.md @@ -1,7 +1,7 @@ --- -description: "Learn more about: scoped_lock Class" title: "scoped_lock Class" -ms.date: "11/04/2016" +description: "Learn more about: scoped_lock Class" +ms.date: 11/04/2016 f1_keywords: ["mutex/std::scoped_lock"] --- # scoped_lock Class diff --git a/docs/standard-library/slice-array-class.md b/docs/standard-library/slice-array-class.md index 385f84bdbfc..f8520ffb2b5 100644 --- a/docs/standard-library/slice-array-class.md +++ b/docs/standard-library/slice-array-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: slice_array class" title: "slice_array class" +description: "Learn more about: slice_array class" ms.date: 01/12/2022 f1_keywords: ["valarray/std::slice_array"] helpviewer_keywords: ["slice_array class"] -ms.assetid: a182d5f7-f35c-4e76-86f2-b5ac64ddc846 --- # `slice_array` class From c4876849411d7a91b14a9ecb7deec040ec125c52 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 21:14:14 +0800 Subject: [PATCH 168/619] Tweak wording in "C/C++ projects and build systems in Visual Studio" topic --- docs/build/projects-and-build-systems-cpp.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/build/projects-and-build-systems-cpp.md b/docs/build/projects-and-build-systems-cpp.md index 156cd4acfd8..e66f186177e 100644 --- a/docs/build/projects-and-build-systems-cpp.md +++ b/docs/build/projects-and-build-systems-cpp.md @@ -13,7 +13,7 @@ You can use Visual Studio to edit, compile, and build any C++ code base with ful ## C++ compilation -To *build* a C++ program means to compile source code from one or more files and then link those files into an executable file (.exe), a dynamic-load library (.dll) or a static library (.lib). +To *build* a C++ program means to compile source code from one or more files and then link those files into an executable file (.exe), a dynamic-link library (.dll) or a static library (.lib). Basic C++ compilation involves three main steps: @@ -39,13 +39,13 @@ Most real-world programs use some kind of *build system* to manage complexities The following list shows various options for Visual Studio Projects - C++: -- create a Visual Studio project by using the Visual Studio IDE and configure it by using property pages. Visual Studio projects produce programs that run on Windows. For an overview, see [Compiling and Building](/visualstudio/ide/compiling-and-building-in-visual-studio) in the Visual Studio documentation. +- Create a Visual Studio project by using the Visual Studio IDE and configure it by using property pages. Visual Studio projects produce programs that run on Windows. For an overview, see [Compiling and Building](/visualstudio/ide/compiling-and-building-in-visual-studio) in the Visual Studio documentation. -- open a folder that contains a CMakeLists.txt file. CMake support is integrated into Visual Studio. You can use the IDE to edit, test, and debug without modifying the CMake files in any way. This enables you to work in the same CMake project as others who might be using different editors. CMake is the recommended approach for cross-platform development. For more information, see [CMake projects](cmake-projects-in-visual-studio.md). +- Open a folder that contains a CMakeLists.txt file. CMake support is integrated into Visual Studio. You can use the IDE to edit, test, and debug without modifying the CMake files in any way. This enables you to work in the same CMake project as others who might be using different editors. CMake is the recommended approach for cross-platform development. For more information, see [CMake projects](cmake-projects-in-visual-studio.md). -- open a loose folder of source files with no project file. Visual Studio will use heuristics to build the files. This is an easy way to compile and run small console applications. For more information, see [Open Folder projects](open-folder-projects-cpp.md). +- Open a loose folder of source files with no project file. Visual Studio will use heuristics to build the files. This is an easy way to compile and run small console applications. For more information, see [Open Folder projects](open-folder-projects-cpp.md). -- open a folder that contains a makefile, or any other build system configuration file. You can configure Visual Studio to invoke any arbitrary build commands by adding JSON files to the folder. For more information, see [Open Folder projects](open-folder-projects-cpp.md). +- Open a folder that contains a makefile, or any other build system configuration file. You can configure Visual Studio to invoke any arbitrary build commands by adding JSON files to the folder. For more information, see [Open Folder projects](open-folder-projects-cpp.md). - Open a Windows makefile in Visual Studio. For more information, see [NMAKE Reference](reference/nmake-reference.md). @@ -86,7 +86,7 @@ How to target 64-bit x64 hardware with the MSVC build tools. How to use the MSVC build tools to target ARM hardware. [Optimizing Your Code](optimizing-your-code.md)\ -How to optimize your code in various ways including program guided optimizations. +How to optimize your code in various ways including profile-guided optimization (PGO). [Configuring Programs for Windows XP](configuring-programs-for-windows-xp.md)\ How to target Windows XP with the MSVC build tools. From 439ffbd982fe3b9e5093a3a6faabcb78910989b6 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 21:18:13 +0800 Subject: [PATCH 169/619] Add backticks in "C/C++ projects and build systems in Visual Studio" topic --- docs/build/projects-and-build-systems-cpp.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/build/projects-and-build-systems-cpp.md b/docs/build/projects-and-build-systems-cpp.md index e66f186177e..901d969c248 100644 --- a/docs/build/projects-and-build-systems-cpp.md +++ b/docs/build/projects-and-build-systems-cpp.md @@ -13,25 +13,25 @@ You can use Visual Studio to edit, compile, and build any C++ code base with ful ## C++ compilation -To *build* a C++ program means to compile source code from one or more files and then link those files into an executable file (.exe), a dynamic-link library (.dll) or a static library (.lib). +To *build* a C++ program means to compile source code from one or more files and then link those files into an executable file (`.exe`), a dynamic-link library (`.dll`) or a static library (`.lib`). Basic C++ compilation involves three main steps: - The C++ preprocessor transforms all the #directives and macro definitions in each source file. This creates a *translation unit*. -- The C++ compiler compiles each translation unit into object files (.obj), applying whatever compiler options have been set. +- The C++ compiler compiles each translation unit into object files (`.obj`), applying whatever compiler options have been set. - The *linker* merges the object files into a single executable, applying the linker options that have been set. ## The MSVC toolset The Microsoft C++ compiler, linker, standard libraries, and related utilities make up the MSVC compiler toolset (also called a toolchain or "build tools"). These are included in Visual Studio. You can also download and use the command-line toolset as a free standalone package. For more information, see [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) on the Visual Studio Downloads page. -You can build simple programs by invoking the MSVC compiler (cl.exe) directly from the command line. The following command accepts a single source code file, and invokes cl.exe to build an executable called *hello.exe*: +You can build simple programs by invoking the MSVC compiler (`cl.exe`) directly from the command line. The following command accepts a single source code file, and invokes `cl.exe` to build an executable called *`hello.exe`*: ```cmd cl /EHsc hello.cpp ``` -Here the compiler (cl.exe) automatically invokes the C++ preprocessor and the linker to produce the final output file. For more information, see [Building on the command line](building-on-the-command-line.md). +Here the compiler (`cl.exe`) automatically invokes the C++ preprocessor and the linker to produce the final output file. For more information, see [Building on the command line](building-on-the-command-line.md). ## Build systems and projects @@ -41,7 +41,7 @@ The following list shows various options for Visual Studio Projects - C++: - Create a Visual Studio project by using the Visual Studio IDE and configure it by using property pages. Visual Studio projects produce programs that run on Windows. For an overview, see [Compiling and Building](/visualstudio/ide/compiling-and-building-in-visual-studio) in the Visual Studio documentation. -- Open a folder that contains a CMakeLists.txt file. CMake support is integrated into Visual Studio. You can use the IDE to edit, test, and debug without modifying the CMake files in any way. This enables you to work in the same CMake project as others who might be using different editors. CMake is the recommended approach for cross-platform development. For more information, see [CMake projects](cmake-projects-in-visual-studio.md). +- Open a folder that contains a `CMakeLists.txt` file. CMake support is integrated into Visual Studio. You can use the IDE to edit, test, and debug without modifying the CMake files in any way. This enables you to work in the same CMake project as others who might be using different editors. CMake is the recommended approach for cross-platform development. For more information, see [CMake projects](cmake-projects-in-visual-studio.md). - Open a loose folder of source files with no project file. Visual Studio will use heuristics to build the files. This is an easy way to compile and run small console applications. For more information, see [Open Folder projects](open-folder-projects-cpp.md). @@ -51,7 +51,7 @@ The following list shows various options for Visual Studio Projects - C++: ## MSBuild from the command line -You can invoke MSBuild from the command line by passing it a .vcxproj file along with command-line options. This approach requires a good understanding of MSBuild, and is recommended only when necessary. For more information, see [MSBuild](msbuild-visual-cpp.md). +You can invoke MSBuild from the command line by passing it a `.vcxproj` file along with command-line options. This approach requires a good understanding of MSBuild, and is recommended only when necessary. For more information, see [MSBuild](msbuild-visual-cpp.md). ## In This Section @@ -74,7 +74,7 @@ Discusses how to use the C/C++ compiler and build tools directly from the comman How to create, debug, and deploy C/C++ DLLs (shared libraries) in Visual Studio. [Walkthrough: Creating and Using a Static Library](walkthrough-creating-and-using-a-static-library-cpp.md)\ -How to create a **.lib** binary file. +How to create a `.lib` binary file. [Building C/C++ Isolated Applications and Side-by-side Assemblies](building-c-cpp-isolated-applications-and-side-by-side-assemblies.md)\ Describes the deployment model for Windows Desktop applications, based on the idea of isolated applications and side-by-side assemblies. From 9bd711021949917f395f384a5a77df4b63499d30 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 9 Sep 2025 21:19:22 +0800 Subject: [PATCH 170/619] Update metadata in "C/C++ projects and build systems in Visual Studio" topic --- docs/build/projects-and-build-systems-cpp.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/build/projects-and-build-systems-cpp.md b/docs/build/projects-and-build-systems-cpp.md index 901d969c248..0b2403238fb 100644 --- a/docs/build/projects-and-build-systems-cpp.md +++ b/docs/build/projects-and-build-systems-cpp.md @@ -1,11 +1,10 @@ --- title: "C/C++ projects and build systems in Visual Studio" description: "Use Visual Studio to compile and build C++ projects for Windows, ARM, or Linux based on any project system." -ms.date: "07/17/2019" -helpviewer_keywords: ["builds [C++]", "C++ projects, building", "projects [C++], building", "builds [C++], options", "C++, build options"] -ms.assetid: fa6ed4ff-334a-4d99-b5e2-a1f83d2b3008 +ms.date: 07/17/2019 ms.topic: "overview" ms.custom: intro-overview +helpviewer_keywords: ["builds [C++]", "C++ projects, building", "projects [C++], building", "builds [C++], options", "C++, build options"] --- # C/C++ projects and build systems in Visual Studio From 2667a3ba18bc755d4ee081a2a56b920a88ed268a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sun, 14 Sep 2025 21:10:11 +0800 Subject: [PATCH 171/619] Add missing R6026 and R6027 in C Runtime errors index topic --- .../tool-errors/c-runtime-errors-r6002-through-r6035.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md b/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md index cbac9569743..8eac48f7d14 100644 --- a/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md +++ b/docs/error-messages/tool-errors/c-runtime-errors-r6002-through-r6035.md @@ -23,6 +23,8 @@ The C Runtime library (CRT) may report a runtime error when your app is loaded o | [C Runtime Error R6019](c-runtime-error-r6019.md) | unable to open console device | | [C Runtime Error R6024](c-runtime-error-r6024.md) | not enough space for _onexit/atexit table | | [C Runtime Error R6025](c-runtime-error-r6025.md) | pure virtual function call | +| [C Runtime Error R6026](c-runtime-error-r6026.md) | not enough space for stdio initialization | +| [C Runtime Error R6027](c-runtime-error-r6027.md) | not enough space for lowio initialization | | [C Runtime Error R6028](c-runtime-error-r6028.md) | unable to initialize heap | | [C Runtime Error R6030](c-runtime-error-r6030.md) | CRT not initialized | | [C Runtime Error R6031](c-runtime-error-r6031.md) | Attempt to initialize the CRT more than once. This indicates a bug in your application. | From bb3908d2a4e4293da328cd2955d5e5845044560e Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 21:01:44 +0800 Subject: [PATCH 172/619] Fix `countr_one` link in `` header reference --- docs/standard-library/bit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/bit.md b/docs/standard-library/bit.md index ed42bc8ac34..eb98ce2a93f 100644 --- a/docs/standard-library/bit.md +++ b/docs/standard-library/bit.md @@ -38,7 +38,7 @@ For example, there are functions to rotate bits, find the number of consecutive |[countl_zero](bit-functions.md#countl_zero) | Count the number of consecutive bits set to zero, starting from the most significant bit. | |[countl_one](bit-functions.md#countl_one) | Count the number of consecutive bits set to one, starting from the most significant bit. | |[countr_zero](bit-functions.md#countr_zero) | Count the number of consecutive bits set to zero, starting from the least significant bit. | -|[countr_one](bit-functions.md#countl_one) | Count the number of consecutive bits set to one, starting from the least significant bit. | +|[countr_one](bit-functions.md#countr_one) | Count the number of consecutive bits set to one, starting from the least significant bit. | |[has_single_bit](bit-functions.md#has_single_bit) | Check if a value has only a single bit set to one. This is the same as testing whether a value is a power of two. | |[popcount](bit-functions.md#popcount) | Count the number of bits set to one. | |[rotl](bit-functions.md#rotl) | Compute the result of a bitwise left-rotation. | From bbb60d0e6bb8582bdff713f4757c584f9091e364 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 21:05:09 +0800 Subject: [PATCH 173/619] Add backticks in `` header reference --- docs/standard-library/bit.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/standard-library/bit.md b/docs/standard-library/bit.md index eb98ce2a93f..f9412edb405 100644 --- a/docs/standard-library/bit.md +++ b/docs/standard-library/bit.md @@ -13,9 +13,9 @@ For example, there are functions to rotate bits, find the number of consecutive ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) or later is required. @@ -25,24 +25,24 @@ For example, there are functions to rotate bits, find the number of consecutive | Type | Description | |--------|----------| -| [endian](bit-enum.md) | Specifies the endianness of scalar types. | +| [`endian`](bit-enum.md) | Specifies the endianness of scalar types. | ### Functions | Function | Description | |-----|-----| -|[bit_cast](bit-functions.md#bit_cast) | Reinterpret the object representation from one type to another. | -|[bit_ceil](bit-functions.md#bit_ceil) | Find the smallest power of two greater than or equal to a value. | -|[bit_floor](bit-functions.md#bit_floor) | Find the largest integral power of two not greater than a value. | -|[bit_width](bit-functions.md#bit_width) | Find the smallest number of bits needed to represent a value. | -|[countl_zero](bit-functions.md#countl_zero) | Count the number of consecutive bits set to zero, starting from the most significant bit. | -|[countl_one](bit-functions.md#countl_one) | Count the number of consecutive bits set to one, starting from the most significant bit. | -|[countr_zero](bit-functions.md#countr_zero) | Count the number of consecutive bits set to zero, starting from the least significant bit. | -|[countr_one](bit-functions.md#countr_one) | Count the number of consecutive bits set to one, starting from the least significant bit. | -|[has_single_bit](bit-functions.md#has_single_bit) | Check if a value has only a single bit set to one. This is the same as testing whether a value is a power of two. | -|[popcount](bit-functions.md#popcount) | Count the number of bits set to one. | -|[rotl](bit-functions.md#rotl) | Compute the result of a bitwise left-rotation. | -|[rotr](bit-functions.md#rotr) | Compute the result of a bitwise right-rotation. | +|[`bit_cast`](bit-functions.md#bit_cast) | Reinterpret the object representation from one type to another. | +|[`bit_ceil`](bit-functions.md#bit_ceil) | Find the smallest power of two greater than or equal to a value. | +|[`bit_floor`](bit-functions.md#bit_floor) | Find the largest integral power of two not greater than a value. | +|[`bit_width`](bit-functions.md#bit_width) | Find the smallest number of bits needed to represent a value. | +|[`countl_zero`](bit-functions.md#countl_zero) | Count the number of consecutive bits set to zero, starting from the most significant bit. | +|[`countl_one`](bit-functions.md#countl_one) | Count the number of consecutive bits set to one, starting from the most significant bit. | +|[`countr_zero`](bit-functions.md#countr_zero) | Count the number of consecutive bits set to zero, starting from the least significant bit. | +|[`countr_one`](bit-functions.md#countr_one) | Count the number of consecutive bits set to one, starting from the least significant bit. | +|[`has_single_bit`](bit-functions.md#has_single_bit) | Check if a value has only a single bit set to one. This is the same as testing whether a value is a power of two. | +|[`popcount`](bit-functions.md#popcount) | Count the number of bits set to one. | +|[`rotl`](bit-functions.md#rotl) | Compute the result of a bitwise left-rotation. | +|[`rotr`](bit-functions.md#rotr) | Compute the result of a bitwise right-rotation. | ## See also From 27bc14da03aa22213e8fb2d0f43442fc55d5743a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 21:06:18 +0800 Subject: [PATCH 174/619] Remove double quotes for `ms.date` in `` header reference --- docs/standard-library/bit.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/bit.md b/docs/standard-library/bit.md index f9412edb405..5f6ca69bb1f 100644 --- a/docs/standard-library/bit.md +++ b/docs/standard-library/bit.md @@ -1,7 +1,7 @@ --- title: "" description: "Functions to access, manipulate, and process individual bits and sequences of bits." -ms.date: "08/28/2020" +ms.date: 08/28/2020 f1_keywords: [""] helpviewer_keywords: ["bit header"] --- From 2aec683c08eb9da3b4ebf6f32bee8bc74d3ef3bb Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 22:02:29 +0800 Subject: [PATCH 175/619] Fix a couple of errors in `` concepts --- docs/standard-library/range-concepts.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/range-concepts.md b/docs/standard-library/range-concepts.md index a00aec4ef20..65151dd31bf 100644 --- a/docs/standard-library/range-concepts.md +++ b/docs/standard-library/range-concepts.md @@ -43,7 +43,7 @@ int main() DivideEmUp dividerOfInts; std::cout << dividerOfInts.Divide(6, 3); // outputs 2 // The following line will not compile because the template can't be instantiated - // with char* because char* can be divided + // with char* because char* can't be divided DivideEmUp dividerOfCharPtrs; // compiler error: cannot deduce template arguments } ``` @@ -163,7 +163,7 @@ The type to test to see if it's a `contiguous_range`. ### Remarks -A `contiguous_range` can be accessed by pointer arithmetic because the elements are laid out sequentially in memory and are the same size. This kind of range supports [`continguous_iterator`](iterator-concepts.md#contiguous_iterator), which is the most flexible of all the iterators. +A `contiguous_range` can be accessed by pointer arithmetic because the elements are laid out sequentially in memory and are the same size. This kind of range supports [`contiguous_iterator`](iterator-concepts.md#contiguous_iterator), which is the most flexible of all the iterators. Some examples of a `contiguous_range` are `std::array`, `std::vector`, and `std::string`. @@ -270,7 +270,7 @@ bidirectional_range && random_access_iterator>; ### Parameters *`T`*\ -The type to test to see if it's a `sized_range`. +The type to test to see if it's a `random_access_range`. ### Remarks From 96e99f951e95cdd88b6971fa12a6744feba2b926 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Tue, 16 Sep 2025 22:03:23 +0800 Subject: [PATCH 176/619] Move `title` metadata above `description` in `` concepts --- docs/standard-library/range-concepts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/range-concepts.md b/docs/standard-library/range-concepts.md index 65151dd31bf..dc21a897949 100644 --- a/docs/standard-library/range-concepts.md +++ b/docs/standard-library/range-concepts.md @@ -1,6 +1,6 @@ --- -description: "Learn more about range concepts." title: " concepts" +description: "Learn more about range concepts." ms.date: 12/16/2022 f1_keywords: ["ranges/std::ranges::range", "ranges/std::ranges::bidirectional_range", "ranges/std::ranges::borrowed_range", "ranges/std::ranges::common_range", "ranges/std::ranges::contiguous_range", "ranges/std::ranges::forward_range", "ranges/std::ranges::input_range", "ranges/std::ranges::output_range", "ranges/std::ranges::random_access_range", "ranges/std::ranges::simple_view", "ranges/std::ranges::sized_range", "ranges/std::ranges::view", "ranges/std::ranges::viewable_range"] helpviewer_keywords: ["std::ranges [C++], ranges::range", "std::ranges [C++], ranges::bidirectional_range", "std::ranges [C++], ranges::borrowed_range", "std::ranges [C++], ranges::common_range", "std::ranges [C++], ranges::contiguous_range", "std::ranges [C++], ranges::forward_range", "std::ranges [C++], ranges::input_range", "std::ranges [C++], ranges::output_range", "std::ranges [C++], ranges::random_access_range", "std::ranges [C++], ranges::simple_view", "std::ranges [C++], ranges::sized_range", "std::ranges [C++], ranges::view", "std::ranges [C++], ranges::viewable_range"] From 04c64c1c636469e3f6e6c7cbf96c1351d443f499 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:11:47 +0800 Subject: [PATCH 177/619] Add missing word "by" in `` header reference --- docs/standard-library/stdexcept.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/stdexcept.md b/docs/standard-library/stdexcept.md index 6ad13bbc2dd..72b7568ba35 100644 --- a/docs/standard-library/stdexcept.md +++ b/docs/standard-library/stdexcept.md @@ -8,7 +8,7 @@ ms.assetid: 495c10b1-1e60-4514-9f8f-7fda11a2f522 --- # `` -Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [exception](../standard-library/exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused programmer mistakes. They derive from the base class logic_error and include: +Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [exception](../standard-library/exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused by programmer mistakes. They derive from the base class logic_error and include: - `domain_error` From 7760f6f365ac3200056888ceaa11f8514942d1f2 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:14:10 +0800 Subject: [PATCH 178/619] Add backticks in `` header reference --- docs/standard-library/stdexcept.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/standard-library/stdexcept.md b/docs/standard-library/stdexcept.md index 72b7568ba35..df927d32130 100644 --- a/docs/standard-library/stdexcept.md +++ b/docs/standard-library/stdexcept.md @@ -8,7 +8,7 @@ ms.assetid: 495c10b1-1e60-4514-9f8f-7fda11a2f522 --- # `` -Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [exception](../standard-library/exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused by programmer mistakes. They derive from the base class logic_error and include: +Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [`exception`](../standard-library/exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused by programmer mistakes. They derive from the base class `logic_error` and include: - `domain_error` @@ -18,7 +18,7 @@ Defines several standard classes used for reporting exceptions. The classes form - `out_of_range` -The run-time errors occur because of mistakes in either the library functions or in the run-time system. They derive from the base class runtime_error and include: +The run-time errors occur because of mistakes in either the library functions or in the run-time system. They derive from the base class `runtime_error` and include: - `overflow_error` @@ -30,15 +30,15 @@ The run-time errors occur because of mistakes in either the library functions or |Class|Description| |-|-| -|[domain_error Class](../standard-library/domain-error-class.md)|The class serves as the base class for all exceptions thrown to report a domain error.| -|[invalid_argument Class](../standard-library/invalid-argument-class.md)|The class serves as the base class for all exceptions thrown to report an invalid argument.| -|[length_error Class](../standard-library/length-error-class.md)|The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified.| -|[logic_error Class](../standard-library/logic-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions.| -|[out_of_range Class](../standard-library/out-of-range-class.md)|The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range.| -|[overflow_error Class](../standard-library/overflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic overflow.| -|[range_error Class](../standard-library/range-error-class.md)|The class serves as the base class for all exceptions thrown to report a range error.| -|[runtime_error Class](../standard-library/runtime-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes.| -|[underflow_error Class](../standard-library/underflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic underflow.| +|[`domain_error` Class](../standard-library/domain-error-class.md)|The class serves as the base class for all exceptions thrown to report a domain error.| +|[`invalid_argument` Class](../standard-library/invalid-argument-class.md)|The class serves as the base class for all exceptions thrown to report an invalid argument.| +|[`length_error` Class](../standard-library/length-error-class.md)|The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified.| +|[`logic_error` Class](../standard-library/logic-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions.| +|[`out_of_range` Class](../standard-library/out-of-range-class.md)|The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range.| +|[`overflow_error` Class](../standard-library/overflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic overflow.| +|[`range_error` Class](../standard-library/range-error-class.md)|The class serves as the base class for all exceptions thrown to report a range error.| +|[`runtime_error` Class](../standard-library/runtime-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes.| +|[`underflow_error` Class](../standard-library/underflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic underflow.| ## See also From 87e714a6225c798689b033462fb0835e8940fc3a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:17:12 +0800 Subject: [PATCH 179/619] Compact unordered lists and remove capitalization of "Class" in `` header reference --- docs/standard-library/stdexcept.md | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/docs/standard-library/stdexcept.md b/docs/standard-library/stdexcept.md index df927d32130..6189de4fdb9 100644 --- a/docs/standard-library/stdexcept.md +++ b/docs/standard-library/stdexcept.md @@ -11,34 +11,29 @@ ms.assetid: 495c10b1-1e60-4514-9f8f-7fda11a2f522 Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [`exception`](../standard-library/exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused by programmer mistakes. They derive from the base class `logic_error` and include: - `domain_error` - - `invalid_argument` - - `length_error` - - `out_of_range` The run-time errors occur because of mistakes in either the library functions or in the run-time system. They derive from the base class `runtime_error` and include: - `overflow_error` - - `range_error` - - `underflow_error` ### Classes |Class|Description| |-|-| -|[`domain_error` Class](../standard-library/domain-error-class.md)|The class serves as the base class for all exceptions thrown to report a domain error.| -|[`invalid_argument` Class](../standard-library/invalid-argument-class.md)|The class serves as the base class for all exceptions thrown to report an invalid argument.| -|[`length_error` Class](../standard-library/length-error-class.md)|The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified.| -|[`logic_error` Class](../standard-library/logic-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions.| -|[`out_of_range` Class](../standard-library/out-of-range-class.md)|The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range.| -|[`overflow_error` Class](../standard-library/overflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic overflow.| -|[`range_error` Class](../standard-library/range-error-class.md)|The class serves as the base class for all exceptions thrown to report a range error.| -|[`runtime_error` Class](../standard-library/runtime-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes.| -|[`underflow_error` Class](../standard-library/underflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic underflow.| +|[`domain_error` class](../standard-library/domain-error-class.md)|The class serves as the base class for all exceptions thrown to report a domain error.| +|[`invalid_argument` class](../standard-library/invalid-argument-class.md)|The class serves as the base class for all exceptions thrown to report an invalid argument.| +|[`length_error` class](../standard-library/length-error-class.md)|The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified.| +|[`logic_error` class](../standard-library/logic-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions.| +|[`out_of_range` class](../standard-library/out-of-range-class.md)|The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range.| +|[`overflow_error` class](../standard-library/overflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic overflow.| +|[`range_error` class](../standard-library/range-error-class.md)|The class serves as the base class for all exceptions thrown to report a range error.| +|[`runtime_error` class](../standard-library/runtime-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes.| +|[`underflow_error` class](../standard-library/underflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic underflow.| ## See also From cefc1539da297e7a8269014324dbbf167d0799c3 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:23:02 +0800 Subject: [PATCH 180/619] Simplify redundant relative links in `` header reference --- docs/standard-library/stdexcept.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/standard-library/stdexcept.md b/docs/standard-library/stdexcept.md index 6189de4fdb9..52f34560afc 100644 --- a/docs/standard-library/stdexcept.md +++ b/docs/standard-library/stdexcept.md @@ -8,7 +8,7 @@ ms.assetid: 495c10b1-1e60-4514-9f8f-7fda11a2f522 --- # `` -Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [`exception`](../standard-library/exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused by programmer mistakes. They derive from the base class `logic_error` and include: +Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class [`exception`](exception-class.md) and include two general types of exceptions: logical errors and run-time errors. The logical errors are caused by programmer mistakes. They derive from the base class `logic_error` and include: - `domain_error` - `invalid_argument` @@ -25,17 +25,17 @@ The run-time errors occur because of mistakes in either the library functions or |Class|Description| |-|-| -|[`domain_error` class](../standard-library/domain-error-class.md)|The class serves as the base class for all exceptions thrown to report a domain error.| -|[`invalid_argument` class](../standard-library/invalid-argument-class.md)|The class serves as the base class for all exceptions thrown to report an invalid argument.| -|[`length_error` class](../standard-library/length-error-class.md)|The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified.| -|[`logic_error` class](../standard-library/logic-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions.| -|[`out_of_range` class](../standard-library/out-of-range-class.md)|The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range.| -|[`overflow_error` class](../standard-library/overflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic overflow.| -|[`range_error` class](../standard-library/range-error-class.md)|The class serves as the base class for all exceptions thrown to report a range error.| -|[`runtime_error` class](../standard-library/runtime-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes.| -|[`underflow_error` class](../standard-library/underflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic underflow.| +|[`domain_error` class](domain-error-class.md)|The class serves as the base class for all exceptions thrown to report a domain error.| +|[`invalid_argument` class](invalid-argument-class.md)|The class serves as the base class for all exceptions thrown to report an invalid argument.| +|[`length_error` class](length-error-class.md)|The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified.| +|[`logic_error` class](logic-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions.| +|[`out_of_range` class](out-of-range-class.md)|The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range.| +|[`overflow_error` class](overflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic overflow.| +|[`range_error` class](range-error-class.md)|The class serves as the base class for all exceptions thrown to report a range error.| +|[`runtime_error` class](runtime-error-class.md)|The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes.| +|[`underflow_error` class](underflow-error-class.md)|The class serves as the base class for all exceptions thrown to report an arithmetic underflow.| ## See also -[Header Files Reference](../standard-library/cpp-standard-library-header-files.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[Header Files Reference](cpp-standard-library-header-files.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) From 974ceb7001286f9b25f2fb33d1f2651e8c2abd43 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:23:56 +0800 Subject: [PATCH 181/619] Update metadata in `` header reference --- docs/standard-library/stdexcept.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/standard-library/stdexcept.md b/docs/standard-library/stdexcept.md index 52f34560afc..ac7cf23aeb6 100644 --- a/docs/standard-library/stdexcept.md +++ b/docs/standard-library/stdexcept.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: " title: "" -ms.date: "11/04/2016" +description: "Learn more about: " +ms.date: 11/04/2016 f1_keywords: [""] helpviewer_keywords: ["stdexcept header"] -ms.assetid: 495c10b1-1e60-4514-9f8f-7fda11a2f522 --- # `` From deab1743de33abfd718c4e47e80e7d0336a33b1a Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:45:20 +0800 Subject: [PATCH 182/619] Add backticks in all `` class references --- docs/standard-library/domain-error-class.md | 8 ++++---- docs/standard-library/invalid-argument-class.md | 8 ++++---- docs/standard-library/length-error-class.md | 8 ++++---- docs/standard-library/logic-error-class.md | 8 ++++---- docs/standard-library/out-of-range-class.md | 8 ++++---- docs/standard-library/overflow-error-class.md | 8 ++++---- docs/standard-library/range-error-class.md | 10 +++++----- docs/standard-library/runtime-error-class.md | 8 ++++---- docs/standard-library/underflow-error-class.md | 8 ++++---- 9 files changed, 37 insertions(+), 37 deletions(-) diff --git a/docs/standard-library/domain-error-class.md b/docs/standard-library/domain-error-class.md index fe6bc72dfe1..18a25cccfcf 100644 --- a/docs/standard-library/domain-error-class.md +++ b/docs/standard-library/domain-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::domain_error"] helpviewer_keywords: ["domain_error class"] ms.assetid: a1d8245d-61c2-4d1e-973f-073bd5dd5fa3 --- -# domain_error Class +# `domain_error` Class The class serves as the base class for all exceptions thrown to report a domain error (as in mathematics, not networking). @@ -59,11 +59,11 @@ Type: class std::domain_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[logic_error Class](../standard-library/logic-error-class.md)\ +[`logic_error` Class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/invalid-argument-class.md b/docs/standard-library/invalid-argument-class.md index 9a3babf927a..e6034d84aef 100644 --- a/docs/standard-library/invalid-argument-class.md +++ b/docs/standard-library/invalid-argument-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::invalid_argument"] helpviewer_keywords: ["invalid_argument class"] ms.assetid: af6c227d-ad7c-4e63-9dee-67af81d83506 --- -# invalid_argument Class +# `invalid_argument` Class The class serves as the base class for all exceptions thrown to report an invalid argument. @@ -57,11 +57,11 @@ Type: class std::invalid_argument ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[logic_error Class](../standard-library/logic-error-class.md)\ +[`logic_error` Class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/length-error-class.md b/docs/standard-library/length-error-class.md index 7df63ed20bc..30721427a42 100644 --- a/docs/standard-library/length-error-class.md +++ b/docs/standard-library/length-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::length_error"] helpviewer_keywords: ["length_error class"] ms.assetid: d53c46c5-4626-400d-bd76-bf3e1e0f64ae --- -# length_error Class +# `length_error` Class The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified. @@ -58,11 +58,11 @@ Type: class std::length_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[logic_error Class](../standard-library/logic-error-class.md)\ +[`logic_error` Class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/logic-error-class.md b/docs/standard-library/logic-error-class.md index 63f9e82219b..eafaee25958 100644 --- a/docs/standard-library/logic-error-class.md +++ b/docs/standard-library/logic-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::logic_error"] helpviewer_keywords: ["logic_error class"] ms.assetid: b290d73d-94e1-4288-af86-2bb5d71f677a --- -# logic_error Class +# `logic_error` Class The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions. @@ -57,11 +57,11 @@ Type: class std::logic_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[exception Class](../standard-library/exception-class.md)\ +[`exception` Class](../standard-library/exception-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/out-of-range-class.md b/docs/standard-library/out-of-range-class.md index 0fb2d3cb673..6558b9baffe 100644 --- a/docs/standard-library/out-of-range-class.md +++ b/docs/standard-library/out-of-range-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::out_of_range"] helpviewer_keywords: ["out_of_range class"] ms.assetid: d0e14dc0-065e-4666-9ac9-51e52223c503 --- -# out_of_range Class +# `out_of_range` Class The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range. @@ -60,11 +60,11 @@ Type: class std::out_of_range ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[logic_error Class](../standard-library/logic-error-class.md)\ +[`logic_error` Class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/overflow-error-class.md b/docs/standard-library/overflow-error-class.md index 0ba3c520d48..6744f7ab4de 100644 --- a/docs/standard-library/overflow-error-class.md +++ b/docs/standard-library/overflow-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::overflow_error"] helpviewer_keywords: ["overflow_error class"] ms.assetid: bae7128d-e36b-4a45-84f1-2f89da441d20 --- -# overflow_error Class +# `overflow_error` Class The class serves as the base class for all exceptions thrown to report an arithmetic overflow. @@ -60,11 +60,11 @@ Type: class std::overflow_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[runtime_error Class](../standard-library/runtime-error-class.md)\ +[`runtime_error` Class](../standard-library/runtime-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/range-error-class.md b/docs/standard-library/range-error-class.md index a8b6485bcf3..51632bec296 100644 --- a/docs/standard-library/range-error-class.md +++ b/docs/standard-library/range-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::range_error"] helpviewer_keywords: ["range_error class"] ms.assetid: 8afb3e88-fc49-4213-b096-ed63d7aea37c --- -# range_error Class +# `range_error` Class The class serves as the base class for all exceptions thrown to report a range error (as in mathematics, not iterators). @@ -22,7 +22,7 @@ public: ## Remarks -The value returned by [what](../standard-library/exception-class.md) is a copy of `message.data()`. For more information, see [basic_string::data](../standard-library/basic-string-class.md#data). +The value returned by [`what`](../standard-library/exception-class.md) is a copy of `message.data()`. For more information, see [`basic_string::data`](../standard-library/basic-string-class.md#data). ## Example @@ -55,11 +55,11 @@ Type: class std::range_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[runtime_error Class](../standard-library/runtime-error-class.md)\ +[`runtime_error` Class](../standard-library/runtime-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/runtime-error-class.md b/docs/standard-library/runtime-error-class.md index e71e28e5ddf..e3281edc1df 100644 --- a/docs/standard-library/runtime-error-class.md +++ b/docs/standard-library/runtime-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::runtime_error"] helpviewer_keywords: ["runtime_error class"] ms.assetid: 4d0227bf-847b-45a2-a320-2351ebf98368 --- -# runtime_error Class +# `runtime_error` Class The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes. @@ -57,11 +57,11 @@ Type: class std::runtime_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[exception Class](../standard-library/exception-class.md)\ +[`exception` Class](../standard-library/exception-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/underflow-error-class.md b/docs/standard-library/underflow-error-class.md index eee569a3f7b..fb27348ae17 100644 --- a/docs/standard-library/underflow-error-class.md +++ b/docs/standard-library/underflow-error-class.md @@ -6,7 +6,7 @@ f1_keywords: ["stdexcept/std::underflow_error"] helpviewer_keywords: ["underflow_error class"] ms.assetid: d632f1f9-9c6c-4954-b96b-03041bfab22d --- -# underflow_error Class +# `underflow_error` Class The class serves as the base class for all exceptions thrown to report an arithmetic underflow. @@ -59,11 +59,11 @@ Type: class std::underflow_error ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also -[runtime_error Class](../standard-library/runtime-error-class.md)\ +[`runtime_error` Class](../standard-library/runtime-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) From af365e4c78cf6b18a20e381f9c8f7aa200126809 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:54:04 +0800 Subject: [PATCH 183/619] Split output into another code block for all `` class references --- docs/standard-library/domain-error-class.md | 5 +++-- docs/standard-library/invalid-argument-class.md | 5 +++-- docs/standard-library/length-error-class.md | 5 +++-- docs/standard-library/logic-error-class.md | 5 +++-- docs/standard-library/out-of-range-class.md | 5 +++-- docs/standard-library/overflow-error-class.md | 5 +++-- docs/standard-library/range-error-class.md | 5 +++-- docs/standard-library/runtime-error-class.md | 5 +++-- docs/standard-library/underflow-error-class.md | 5 +++-- 9 files changed, 27 insertions(+), 18 deletions(-) diff --git a/docs/standard-library/domain-error-class.md b/docs/standard-library/domain-error-class.md index 18a25cccfcf..1affd02c32a 100644 --- a/docs/standard-library/domain-error-class.md +++ b/docs/standard-library/domain-error-class.md @@ -51,10 +51,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: Your domain is in error! Type: class std::domain_error -*/ ``` ## Requirements diff --git a/docs/standard-library/invalid-argument-class.md b/docs/standard-library/invalid-argument-class.md index e6034d84aef..6cfa99b7da6 100644 --- a/docs/standard-library/invalid-argument-class.md +++ b/docs/standard-library/invalid-argument-class.md @@ -49,10 +49,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: invalid bitset char Type: class std::invalid_argument -*/ ``` ## Requirements diff --git a/docs/standard-library/length-error-class.md b/docs/standard-library/length-error-class.md index 30721427a42..f340c17be62 100644 --- a/docs/standard-library/length-error-class.md +++ b/docs/standard-library/length-error-class.md @@ -50,10 +50,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: vector too long Type: class std::length_error -*/ ``` ## Requirements diff --git a/docs/standard-library/logic-error-class.md b/docs/standard-library/logic-error-class.md index eafaee25958..032ba515aba 100644 --- a/docs/standard-library/logic-error-class.md +++ b/docs/standard-library/logic-error-class.md @@ -49,10 +49,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: Does not compute! Type: class std::logic_error -*/ ``` ## Requirements diff --git a/docs/standard-library/out-of-range-class.md b/docs/standard-library/out-of-range-class.md index 6558b9baffe..4094107ab89 100644 --- a/docs/standard-library/out-of-range-class.md +++ b/docs/standard-library/out-of-range-class.md @@ -52,10 +52,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: invalid string position Type: class std::out_of_range -*/ ``` ## Requirements diff --git a/docs/standard-library/overflow-error-class.md b/docs/standard-library/overflow-error-class.md index 6744f7ab4de..d5193d7df92 100644 --- a/docs/standard-library/overflow-error-class.md +++ b/docs/standard-library/overflow-error-class.md @@ -52,10 +52,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: bitset overflow Type: class std::overflow_error -*/ ``` ## Requirements diff --git a/docs/standard-library/range-error-class.md b/docs/standard-library/range-error-class.md index 51632bec296..c7471ab1571 100644 --- a/docs/standard-library/range-error-class.md +++ b/docs/standard-library/range-error-class.md @@ -47,10 +47,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: The range is in error! Type: class std::range_error -*/ ``` ## Requirements diff --git a/docs/standard-library/runtime-error-class.md b/docs/standard-library/runtime-error-class.md index e3281edc1df..a5367a1a939 100644 --- a/docs/standard-library/runtime-error-class.md +++ b/docs/standard-library/runtime-error-class.md @@ -49,10 +49,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: bad locale name Type: class std::runtime_error -*/ ``` ## Requirements diff --git a/docs/standard-library/underflow-error-class.md b/docs/standard-library/underflow-error-class.md index fb27348ae17..9f5e9ae9bfb 100644 --- a/docs/standard-library/underflow-error-class.md +++ b/docs/standard-library/underflow-error-class.md @@ -51,10 +51,11 @@ int main() cerr << "Type: " << typeid(e).name() << endl; } } -/* Output: +``` + +```Output Caught: The number's a bit small, captain! Type: class std::underflow_error -*/ ``` ## Requirements From 78718da229b64ee12a8d05c0e4805ef4d75cad93 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 17:56:48 +0800 Subject: [PATCH 184/619] Change "Class" to "class" in all `` class references --- docs/standard-library/domain-error-class.md | 8 ++++---- docs/standard-library/invalid-argument-class.md | 8 ++++---- docs/standard-library/length-error-class.md | 8 ++++---- docs/standard-library/logic-error-class.md | 8 ++++---- docs/standard-library/out-of-range-class.md | 8 ++++---- docs/standard-library/overflow-error-class.md | 8 ++++---- docs/standard-library/range-error-class.md | 8 ++++---- docs/standard-library/runtime-error-class.md | 8 ++++---- docs/standard-library/underflow-error-class.md | 8 ++++---- 9 files changed, 36 insertions(+), 36 deletions(-) diff --git a/docs/standard-library/domain-error-class.md b/docs/standard-library/domain-error-class.md index 1affd02c32a..deecb530dd2 100644 --- a/docs/standard-library/domain-error-class.md +++ b/docs/standard-library/domain-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: domain_error Class" -title: "domain_error Class" +description: "Learn more about: domain_error class" +title: "domain_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::domain_error"] helpviewer_keywords: ["domain_error class"] ms.assetid: a1d8245d-61c2-4d1e-973f-073bd5dd5fa3 --- -# `domain_error` Class +# `domain_error` class The class serves as the base class for all exceptions thrown to report a domain error (as in mathematics, not networking). @@ -66,5 +66,5 @@ Type: class std::domain_error ## See also -[`logic_error` Class](../standard-library/logic-error-class.md)\ +[`logic_error` class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/invalid-argument-class.md b/docs/standard-library/invalid-argument-class.md index 6cfa99b7da6..4243101510d 100644 --- a/docs/standard-library/invalid-argument-class.md +++ b/docs/standard-library/invalid-argument-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: invalid_argument Class" -title: "invalid_argument Class" +description: "Learn more about: invalid_argument class" +title: "invalid_argument class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::invalid_argument"] helpviewer_keywords: ["invalid_argument class"] ms.assetid: af6c227d-ad7c-4e63-9dee-67af81d83506 --- -# `invalid_argument` Class +# `invalid_argument` class The class serves as the base class for all exceptions thrown to report an invalid argument. @@ -64,5 +64,5 @@ Type: class std::invalid_argument ## See also -[`logic_error` Class](../standard-library/logic-error-class.md)\ +[`logic_error` class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/length-error-class.md b/docs/standard-library/length-error-class.md index f340c17be62..93a9ea92de4 100644 --- a/docs/standard-library/length-error-class.md +++ b/docs/standard-library/length-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: length_error Class" -title: "length_error Class" +description: "Learn more about: length_error class" +title: "length_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::length_error"] helpviewer_keywords: ["length_error class"] ms.assetid: d53c46c5-4626-400d-bd76-bf3e1e0f64ae --- -# `length_error` Class +# `length_error` class The class serves as the base class for all exceptions thrown to report an attempt to generate an object too long to be specified. @@ -65,5 +65,5 @@ Type: class std::length_error ## See also -[`logic_error` Class](../standard-library/logic-error-class.md)\ +[`logic_error` class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/logic-error-class.md b/docs/standard-library/logic-error-class.md index 032ba515aba..957f80c7b2b 100644 --- a/docs/standard-library/logic-error-class.md +++ b/docs/standard-library/logic-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: logic_error Class" -title: "logic_error Class" +description: "Learn more about: logic_error class" +title: "logic_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::logic_error"] helpviewer_keywords: ["logic_error class"] ms.assetid: b290d73d-94e1-4288-af86-2bb5d71f677a --- -# `logic_error` Class +# `logic_error` class The class serves as the base class for all exceptions thrown to report errors presumably detectable before the program executes, such as violations of logical preconditions. @@ -64,5 +64,5 @@ Type: class std::logic_error ## See also -[`exception` Class](../standard-library/exception-class.md)\ +[`exception` class](../standard-library/exception-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/out-of-range-class.md b/docs/standard-library/out-of-range-class.md index 4094107ab89..98f8ffd101d 100644 --- a/docs/standard-library/out-of-range-class.md +++ b/docs/standard-library/out-of-range-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: out_of_range Class" -title: "out_of_range Class" +description: "Learn more about: out_of_range class" +title: "out_of_range class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::out_of_range"] helpviewer_keywords: ["out_of_range class"] ms.assetid: d0e14dc0-065e-4666-9ac9-51e52223c503 --- -# `out_of_range` Class +# `out_of_range` class The class serves as the base class for all exceptions thrown to report an argument that is out of its valid range. @@ -67,5 +67,5 @@ Type: class std::out_of_range ## See also -[`logic_error` Class](../standard-library/logic-error-class.md)\ +[`logic_error` class](../standard-library/logic-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/overflow-error-class.md b/docs/standard-library/overflow-error-class.md index d5193d7df92..13b8da626c7 100644 --- a/docs/standard-library/overflow-error-class.md +++ b/docs/standard-library/overflow-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: overflow_error Class" -title: "overflow_error Class" +description: "Learn more about: overflow_error class" +title: "overflow_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::overflow_error"] helpviewer_keywords: ["overflow_error class"] ms.assetid: bae7128d-e36b-4a45-84f1-2f89da441d20 --- -# `overflow_error` Class +# `overflow_error` class The class serves as the base class for all exceptions thrown to report an arithmetic overflow. @@ -67,5 +67,5 @@ Type: class std::overflow_error ## See also -[`runtime_error` Class](../standard-library/runtime-error-class.md)\ +[`runtime_error` class](../standard-library/runtime-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/range-error-class.md b/docs/standard-library/range-error-class.md index c7471ab1571..b4f54c2087d 100644 --- a/docs/standard-library/range-error-class.md +++ b/docs/standard-library/range-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: range_error Class" -title: "range_error Class" +description: "Learn more about: range_error class" +title: "range_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::range_error"] helpviewer_keywords: ["range_error class"] ms.assetid: 8afb3e88-fc49-4213-b096-ed63d7aea37c --- -# `range_error` Class +# `range_error` class The class serves as the base class for all exceptions thrown to report a range error (as in mathematics, not iterators). @@ -62,5 +62,5 @@ Type: class std::range_error ## See also -[`runtime_error` Class](../standard-library/runtime-error-class.md)\ +[`runtime_error` class](../standard-library/runtime-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/runtime-error-class.md b/docs/standard-library/runtime-error-class.md index a5367a1a939..108070bf791 100644 --- a/docs/standard-library/runtime-error-class.md +++ b/docs/standard-library/runtime-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: runtime_error Class" -title: "runtime_error Class" +description: "Learn more about: runtime_error class" +title: "runtime_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::runtime_error"] helpviewer_keywords: ["runtime_error class"] ms.assetid: 4d0227bf-847b-45a2-a320-2351ebf98368 --- -# `runtime_error` Class +# `runtime_error` class The class serves as the base class for all exceptions thrown to report errors presumably detectable only when the program executes. @@ -64,5 +64,5 @@ Type: class std::runtime_error ## See also -[`exception` Class](../standard-library/exception-class.md)\ +[`exception` class](../standard-library/exception-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/underflow-error-class.md b/docs/standard-library/underflow-error-class.md index 9f5e9ae9bfb..87098ec04dc 100644 --- a/docs/standard-library/underflow-error-class.md +++ b/docs/standard-library/underflow-error-class.md @@ -1,12 +1,12 @@ --- -description: "Learn more about: underflow_error Class" -title: "underflow_error Class" +description: "Learn more about: underflow_error class" +title: "underflow_error class" ms.date: "09/09/2021" f1_keywords: ["stdexcept/std::underflow_error"] helpviewer_keywords: ["underflow_error class"] ms.assetid: d632f1f9-9c6c-4954-b96b-03041bfab22d --- -# `underflow_error` Class +# `underflow_error` class The class serves as the base class for all exceptions thrown to report an arithmetic underflow. @@ -66,5 +66,5 @@ Type: class std::underflow_error ## See also -[`runtime_error` Class](../standard-library/runtime-error-class.md)\ +[`runtime_error` class](../standard-library/runtime-error-class.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) From b53ea75d4bc62344e71d730263c0c9e2678be78d Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 18:05:04 +0800 Subject: [PATCH 185/619] Simplify redundant relative links in all `` class references --- docs/standard-library/domain-error-class.md | 6 +++--- docs/standard-library/invalid-argument-class.md | 6 +++--- docs/standard-library/length-error-class.md | 6 +++--- docs/standard-library/logic-error-class.md | 6 +++--- docs/standard-library/out-of-range-class.md | 6 +++--- docs/standard-library/overflow-error-class.md | 6 +++--- docs/standard-library/range-error-class.md | 6 +++--- docs/standard-library/runtime-error-class.md | 6 +++--- docs/standard-library/underflow-error-class.md | 6 +++--- 9 files changed, 27 insertions(+), 27 deletions(-) diff --git a/docs/standard-library/domain-error-class.md b/docs/standard-library/domain-error-class.md index deecb530dd2..ae2ee7468d3 100644 --- a/docs/standard-library/domain-error-class.md +++ b/docs/standard-library/domain-error-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). `domain_error` isn't thrown by any functions in the Microsoft implementation of the C++ Standard Library, but it might be thrown by third-party libraries or user code. @@ -66,5 +66,5 @@ Type: class std::domain_error ## See also -[`logic_error` class](../standard-library/logic-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`logic_error` class](logic-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/invalid-argument-class.md b/docs/standard-library/invalid-argument-class.md index 4243101510d..61fec61895c 100644 --- a/docs/standard-library/invalid-argument-class.md +++ b/docs/standard-library/invalid-argument-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). ## Example @@ -64,5 +64,5 @@ Type: class std::invalid_argument ## See also -[`logic_error` class](../standard-library/logic-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`logic_error` class](logic-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/length-error-class.md b/docs/standard-library/length-error-class.md index 93a9ea92de4..6cfb2bd9640 100644 --- a/docs/standard-library/length-error-class.md +++ b/docs/standard-library/length-error-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). ## Example @@ -65,5 +65,5 @@ Type: class std::length_error ## See also -[`logic_error` class](../standard-library/logic-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`logic_error` class](logic-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/logic-error-class.md b/docs/standard-library/logic-error-class.md index 957f80c7b2b..6dfedeed2df 100644 --- a/docs/standard-library/logic-error-class.md +++ b/docs/standard-library/logic-error-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). ## Example @@ -64,5 +64,5 @@ Type: class std::logic_error ## See also -[`exception` class](../standard-library/exception-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`exception` class](exception-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/out-of-range-class.md b/docs/standard-library/out-of-range-class.md index 98f8ffd101d..11c837e5500 100644 --- a/docs/standard-library/out-of-range-class.md +++ b/docs/standard-library/out-of-range-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). ## Example @@ -67,5 +67,5 @@ Type: class std::out_of_range ## See also -[`logic_error` class](../standard-library/logic-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`logic_error` class](logic-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/overflow-error-class.md b/docs/standard-library/overflow-error-class.md index 13b8da626c7..32ddd799899 100644 --- a/docs/standard-library/overflow-error-class.md +++ b/docs/standard-library/overflow-error-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). ## Example @@ -67,5 +67,5 @@ Type: class std::overflow_error ## See also -[`runtime_error` class](../standard-library/runtime-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`runtime_error` class](runtime-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/range-error-class.md b/docs/standard-library/range-error-class.md index b4f54c2087d..a9fd6135bc2 100644 --- a/docs/standard-library/range-error-class.md +++ b/docs/standard-library/range-error-class.md @@ -22,7 +22,7 @@ public: ## Remarks -The value returned by [`what`](../standard-library/exception-class.md) is a copy of `message.data()`. For more information, see [`basic_string::data`](../standard-library/basic-string-class.md#data). +The value returned by [`what`](exception-class.md) is a copy of `message.data()`. For more information, see [`basic_string::data`](basic-string-class.md#data). ## Example @@ -62,5 +62,5 @@ Type: class std::range_error ## See also -[`runtime_error` class](../standard-library/runtime-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`runtime_error` class](runtime-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/runtime-error-class.md b/docs/standard-library/runtime-error-class.md index 108070bf791..2ffcb27f3ff 100644 --- a/docs/standard-library/runtime-error-class.md +++ b/docs/standard-library/runtime-error-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). ## Example @@ -64,5 +64,5 @@ Type: class std::runtime_error ## See also -[`exception` class](../standard-library/exception-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`exception` class](exception-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/underflow-error-class.md b/docs/standard-library/underflow-error-class.md index 87098ec04dc..a07486f555d 100644 --- a/docs/standard-library/underflow-error-class.md +++ b/docs/standard-library/underflow-error-class.md @@ -24,7 +24,7 @@ public: ## Remarks -The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](../standard-library/exception-class.md) and [`data`](../standard-library/basic-string-class.md#data). +The value returned by `what()` is a copy of `message.data()`. For more information, see [`what`](exception-class.md) and [`data`](basic-string-class.md#data). `underflow_error` isn't thrown by any functions in the Microsoft implementation of the C++ Standard Library, but it might be thrown by third-party libraries or user code. @@ -66,5 +66,5 @@ Type: class std::underflow_error ## See also -[`runtime_error` class](../standard-library/runtime-error-class.md)\ -[Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) +[`runtime_error` class](runtime-error-class.md)\ +[Thread Safety in the C++ Standard Library](thread-safety-in-the-cpp-standard-library.md) From b292e17de66f0d0101d2a16c5055c2d37ee8ee39 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 18:11:08 +0800 Subject: [PATCH 186/619] Remove trailing empty syntax lines in all `` class references --- docs/standard-library/domain-error-class.md | 1 - docs/standard-library/invalid-argument-class.md | 1 - docs/standard-library/length-error-class.md | 1 - docs/standard-library/logic-error-class.md | 1 - docs/standard-library/out-of-range-class.md | 1 - docs/standard-library/overflow-error-class.md | 1 - docs/standard-library/runtime-error-class.md | 1 - docs/standard-library/underflow-error-class.md | 1 - 8 files changed, 8 deletions(-) diff --git a/docs/standard-library/domain-error-class.md b/docs/standard-library/domain-error-class.md index ae2ee7468d3..a7ec04a0b5a 100644 --- a/docs/standard-library/domain-error-class.md +++ b/docs/standard-library/domain-error-class.md @@ -18,7 +18,6 @@ public: explicit domain_error(const string& message); explicit domain_error(const char *message); - }; ``` diff --git a/docs/standard-library/invalid-argument-class.md b/docs/standard-library/invalid-argument-class.md index 61fec61895c..9eb24629250 100644 --- a/docs/standard-library/invalid-argument-class.md +++ b/docs/standard-library/invalid-argument-class.md @@ -18,7 +18,6 @@ public: explicit invalid_argument(const string& message); explicit invalid_argument(const char *message); - }; ``` diff --git a/docs/standard-library/length-error-class.md b/docs/standard-library/length-error-class.md index 6cfb2bd9640..aa7963f1c21 100644 --- a/docs/standard-library/length-error-class.md +++ b/docs/standard-library/length-error-class.md @@ -18,7 +18,6 @@ public: explicit length_error(const string& message); explicit length_error(const char *message); - }; ``` diff --git a/docs/standard-library/logic-error-class.md b/docs/standard-library/logic-error-class.md index 6dfedeed2df..a3f6de0ad30 100644 --- a/docs/standard-library/logic-error-class.md +++ b/docs/standard-library/logic-error-class.md @@ -18,7 +18,6 @@ public: explicit logic_error(const string& message); explicit logic_error(const char *message); - }; ``` diff --git a/docs/standard-library/out-of-range-class.md b/docs/standard-library/out-of-range-class.md index 11c837e5500..8781b499f7e 100644 --- a/docs/standard-library/out-of-range-class.md +++ b/docs/standard-library/out-of-range-class.md @@ -18,7 +18,6 @@ public: explicit out_of_range(const string& message); explicit out_of_range(const char *message); - }; ``` diff --git a/docs/standard-library/overflow-error-class.md b/docs/standard-library/overflow-error-class.md index 32ddd799899..30373fb33d3 100644 --- a/docs/standard-library/overflow-error-class.md +++ b/docs/standard-library/overflow-error-class.md @@ -18,7 +18,6 @@ public: explicit overflow_error(const string& message); explicit overflow_error(const char *message); - }; ``` diff --git a/docs/standard-library/runtime-error-class.md b/docs/standard-library/runtime-error-class.md index 2ffcb27f3ff..575a981066a 100644 --- a/docs/standard-library/runtime-error-class.md +++ b/docs/standard-library/runtime-error-class.md @@ -18,7 +18,6 @@ public: explicit runtime_error(const string& message); explicit runtime_error(const char *message); - }; ``` diff --git a/docs/standard-library/underflow-error-class.md b/docs/standard-library/underflow-error-class.md index a07486f555d..f0db72e1561 100644 --- a/docs/standard-library/underflow-error-class.md +++ b/docs/standard-library/underflow-error-class.md @@ -18,7 +18,6 @@ public: explicit underflow_error(const string& message); explicit underflow_error(const char *message); - }; ``` From cad9532de44db0dcce74437d88bf020fcdd5bf76 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 17 Sep 2025 18:13:16 +0800 Subject: [PATCH 187/619] Update metadata in all `` class references --- docs/standard-library/domain-error-class.md | 5 ++--- docs/standard-library/invalid-argument-class.md | 5 ++--- docs/standard-library/length-error-class.md | 5 ++--- docs/standard-library/logic-error-class.md | 5 ++--- docs/standard-library/out-of-range-class.md | 5 ++--- docs/standard-library/overflow-error-class.md | 5 ++--- docs/standard-library/range-error-class.md | 5 ++--- docs/standard-library/runtime-error-class.md | 5 ++--- docs/standard-library/underflow-error-class.md | 5 ++--- 9 files changed, 18 insertions(+), 27 deletions(-) diff --git a/docs/standard-library/domain-error-class.md b/docs/standard-library/domain-error-class.md index a7ec04a0b5a..c976e9d9d67 100644 --- a/docs/standard-library/domain-error-class.md +++ b/docs/standard-library/domain-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: domain_error class" title: "domain_error class" -ms.date: "09/09/2021" +description: "Learn more about: domain_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::domain_error"] helpviewer_keywords: ["domain_error class"] -ms.assetid: a1d8245d-61c2-4d1e-973f-073bd5dd5fa3 --- # `domain_error` class diff --git a/docs/standard-library/invalid-argument-class.md b/docs/standard-library/invalid-argument-class.md index 9eb24629250..f2a22f505cb 100644 --- a/docs/standard-library/invalid-argument-class.md +++ b/docs/standard-library/invalid-argument-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: invalid_argument class" title: "invalid_argument class" -ms.date: "09/09/2021" +description: "Learn more about: invalid_argument class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::invalid_argument"] helpviewer_keywords: ["invalid_argument class"] -ms.assetid: af6c227d-ad7c-4e63-9dee-67af81d83506 --- # `invalid_argument` class diff --git a/docs/standard-library/length-error-class.md b/docs/standard-library/length-error-class.md index aa7963f1c21..7230d8b628f 100644 --- a/docs/standard-library/length-error-class.md +++ b/docs/standard-library/length-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: length_error class" title: "length_error class" -ms.date: "09/09/2021" +description: "Learn more about: length_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::length_error"] helpviewer_keywords: ["length_error class"] -ms.assetid: d53c46c5-4626-400d-bd76-bf3e1e0f64ae --- # `length_error` class diff --git a/docs/standard-library/logic-error-class.md b/docs/standard-library/logic-error-class.md index a3f6de0ad30..6d096245bda 100644 --- a/docs/standard-library/logic-error-class.md +++ b/docs/standard-library/logic-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: logic_error class" title: "logic_error class" -ms.date: "09/09/2021" +description: "Learn more about: logic_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::logic_error"] helpviewer_keywords: ["logic_error class"] -ms.assetid: b290d73d-94e1-4288-af86-2bb5d71f677a --- # `logic_error` class diff --git a/docs/standard-library/out-of-range-class.md b/docs/standard-library/out-of-range-class.md index 8781b499f7e..cf5e79dfc81 100644 --- a/docs/standard-library/out-of-range-class.md +++ b/docs/standard-library/out-of-range-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: out_of_range class" title: "out_of_range class" -ms.date: "09/09/2021" +description: "Learn more about: out_of_range class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::out_of_range"] helpviewer_keywords: ["out_of_range class"] -ms.assetid: d0e14dc0-065e-4666-9ac9-51e52223c503 --- # `out_of_range` class diff --git a/docs/standard-library/overflow-error-class.md b/docs/standard-library/overflow-error-class.md index 30373fb33d3..b4291d01a31 100644 --- a/docs/standard-library/overflow-error-class.md +++ b/docs/standard-library/overflow-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: overflow_error class" title: "overflow_error class" -ms.date: "09/09/2021" +description: "Learn more about: overflow_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::overflow_error"] helpviewer_keywords: ["overflow_error class"] -ms.assetid: bae7128d-e36b-4a45-84f1-2f89da441d20 --- # `overflow_error` class diff --git a/docs/standard-library/range-error-class.md b/docs/standard-library/range-error-class.md index a9fd6135bc2..35559c39d45 100644 --- a/docs/standard-library/range-error-class.md +++ b/docs/standard-library/range-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: range_error class" title: "range_error class" -ms.date: "09/09/2021" +description: "Learn more about: range_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::range_error"] helpviewer_keywords: ["range_error class"] -ms.assetid: 8afb3e88-fc49-4213-b096-ed63d7aea37c --- # `range_error` class diff --git a/docs/standard-library/runtime-error-class.md b/docs/standard-library/runtime-error-class.md index 575a981066a..9ae07afd607 100644 --- a/docs/standard-library/runtime-error-class.md +++ b/docs/standard-library/runtime-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: runtime_error class" title: "runtime_error class" -ms.date: "09/09/2021" +description: "Learn more about: runtime_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::runtime_error"] helpviewer_keywords: ["runtime_error class"] -ms.assetid: 4d0227bf-847b-45a2-a320-2351ebf98368 --- # `runtime_error` class diff --git a/docs/standard-library/underflow-error-class.md b/docs/standard-library/underflow-error-class.md index f0db72e1561..3b1d405babc 100644 --- a/docs/standard-library/underflow-error-class.md +++ b/docs/standard-library/underflow-error-class.md @@ -1,10 +1,9 @@ --- -description: "Learn more about: underflow_error class" title: "underflow_error class" -ms.date: "09/09/2021" +description: "Learn more about: underflow_error class" +ms.date: 09/09/2021 f1_keywords: ["stdexcept/std::underflow_error"] helpviewer_keywords: ["underflow_error class"] -ms.assetid: d632f1f9-9c6c-4954-b96b-03041bfab22d --- # `underflow_error` class From 9abe04906e519895a675802cf91edc090d4d02ac Mon Sep 17 00:00:00 2001 From: Alcaro Date: Thu, 9 Oct 2025 20:40:16 +0200 Subject: [PATCH 188/619] Update zc-conformance.md --- docs/build/reference/zc-conformance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zc-conformance.md b/docs/build/reference/zc-conformance.md index efa980dbb7f..e63eb3d9269 100644 --- a/docs/build/reference/zc-conformance.md +++ b/docs/build/reference/zc-conformance.md @@ -30,7 +30,7 @@ Here are the **`/Zc`** compiler options: | [`/Zc:checkGwOdr[-]`](zc-check-gwodr.md) | Enforce Standard C++ ODR violations under `/Gw`. | | [`/Zc:enumTypes[-]`](zc-enumtypes.md) | Enable Standard C++ rules for `enum` type deduction. Off by default. | | [`/Zc:externC[-]`](zc-externc.md) | Enforce Standard C++ rules for `extern "C"` functions. Off by default unless **`/permissive-`** is specified. | -| [`/Zc:externConstexpr[-]`](zc-externconstexpr.md) | Enable external linkage for **`constexpr`** variables. Off by default. | +| [`/Zc:externConstexpr[-]`](zc-externconstexpr.md) | Enable external linkage for **`constexpr`** variables. Off by default unless **`/permissive-`** is specified. | | [`/Zc:forScope[-]`](zc-forscope-force-conformance-in-for-loop-scope.md) | Enforce Standard C++ **`for`** scoping rules. On by default. | | [`/Zc:gotoScope[-]`](zc-gotoscope.md) | Enforce Standard C++ **`goto`** rules around local variable initialization. Off by default unless **`/permissive-`** is specified. | | [`/Zc:hiddenFriend[-]`](zc-hiddenfriend.md) | Enforce Standard C++ hidden friend rules. Off by default unless **`/permissive-`** is specified. | From e50b998580831209857e086e92f6122a156fd1d0 Mon Sep 17 00:00:00 2001 From: Avasam Date: Sun, 19 Oct 2025 00:36:06 -0400 Subject: [PATCH 189/619] Removed mention of inexistant `CSliderCtrl::VerifyPos` --- docs/mfc/slider-control-member-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/mfc/slider-control-member-functions.md b/docs/mfc/slider-control-member-functions.md index 10e1c674727..2e0e2228d90 100644 --- a/docs/mfc/slider-control-member-functions.md +++ b/docs/mfc/slider-control-member-functions.md @@ -9,7 +9,7 @@ ms.assetid: dbde49ee-7306-4d14-a6ce-d09aa198178f An application can call the slider control's member functions to retrieve information about the slider control ([CSliderCtrl](../mfc/reference/csliderctrl-class.md)) and to change its characteristics. -To retrieve the position of the slider (that is, the value the user has chosen), use the [GetPos](../mfc/reference/csliderctrl-class.md#getpos) member function. To set the position of the slider, use the [SetPos](../mfc/reference/csliderctrl-class.md#setpos) member function. At any time you can use the `VerifyPos` member function to make sure that the slider is between the minimum and maximum values. +To retrieve the position of the slider (that is, the value the user has chosen), use the [GetPos](../mfc/reference/csliderctrl-class.md#getpos) member function. To set the position of the slider, use the [SetPos](../mfc/reference/csliderctrl-class.md#setpos) member function. The range of a slider control is the set of contiguous values that the slider control can represent. Most applications use the [SetRange](../mfc/reference/csliderctrl-class.md#setrange) member function to set the range of a slider control when it is first created. Applications can dynamically alter the range after the slider control has been created by using the [SetRangeMax](../mfc/reference/csliderctrl-class.md#setrangemax) and [SetRangeMin](../mfc/reference/csliderctrl-class.md#setrangemin) member functions. An application that allows the range to be changed dynamically typically retrieves the final range settings when the user has finished working with the slider control. To retrieve these settings, use the [GetRange](../mfc/reference/csliderctrl-class.md#getrange), [GetRangeMax](../mfc/reference/csliderctrl-class.md#getrangemax), and [GetRangeMin](../mfc/reference/csliderctrl-class.md#getrangemin) member functions. From 2008082e6fd69ec30ec3e2220f6ca28dd3aa73ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Fri, 28 Nov 2025 21:10:35 +0200 Subject: [PATCH 190/619] Clarify docs for arm64 packed unwind, RegI=0 RegF>0 The condition CR=0 isn't correct here; the same about the first store for float registers doing the predecrement for any variant where there are no integer registers stored before the floats - this goes for both CR=0, CR=2 and CR=3. --- docs/build/arm64-exception-handling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/arm64-exception-handling.md b/docs/build/arm64-exception-handling.md index d459965ede4..6c82d44da4c 100644 --- a/docs/build/arm64-exception-handling.md +++ b/docs/build/arm64-exception-handling.md @@ -401,7 +401,7 @@ Step 6: Allocate remaining stack, including local area, `` pair, and out \* If **CR** == 01 and **RegI** is an odd number, step 3 and the last `save_reg` in step 2 are merged into one `save_regp`. -\*\* If **RegI** == **CR** == 0, and **RegF** != 0, the first `stp` for the floating-point does the predecrement. +\*\* If **RegI** == 0, **CR** != 01, and **RegF** != 0, the first `stp` for the floating-point does the predecrement. \*\*\* No instruction corresponding to `mov x29,sp` is present in the epilog. Packed unwind data can't be used if a function requires restoration of `sp` from `x29`. From 897a33545a6b2c9cd524ba362062aa37e7369218 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 6 Jan 2026 10:32:37 -0800 Subject: [PATCH 191/619] remove "Microsoft specific" dividers from unary operator docs --- docs/cpp/unary-plus-and-negation-operators-plus-and.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/cpp/unary-plus-and-negation-operators-plus-and.md b/docs/cpp/unary-plus-and-negation-operators-plus-and.md index be1f3402345..16c5a8ce9d8 100644 --- a/docs/cpp/unary-plus-and-negation-operators-plus-and.md +++ b/docs/cpp/unary-plus-and-negation-operators-plus-and.md @@ -27,12 +27,8 @@ The unary negation operator (**`-`**) produces the negative of its operand. The Integral promotion is performed on integral operands, and the resultant type is the type to which the operand is promoted. See [Standard Conversions](standard-conversions.md) for more information about how the promotion is performed. -**Microsoft Specific** - Unary negation of unsigned quantities is performed by subtracting the value of the operand from 2^n, where n is the number of bits in an object of the given unsigned type. -**END Microsoft Specific** - ## See also [Expressions with Unary Operators](../cpp/expressions-with-unary-operators.md)\ From 4e9fd26515f35e6ee0feaa3b219e3201bc4325e3 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Tue, 6 Jan 2026 16:07:16 -0800 Subject: [PATCH 192/619] Add CMAKE --- docs/build/walkthrough-build-debug-wsl2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/walkthrough-build-debug-wsl2.md b/docs/build/walkthrough-build-debug-wsl2.md index 66dfa46bd3b..33e08ae4dcf 100644 --- a/docs/build/walkthrough-build-debug-wsl2.md +++ b/docs/build/walkthrough-build-debug-wsl2.md @@ -31,7 +31,7 @@ Install the tools necessary to build and debug on WSL 2. You'll install a recent ```bash sudo apt update - sudo apt install g++ gdb make ninja-build rsync zip + sudo apt install cmake g++ gdb make ninja-build rsync zip ``` The `apt` commands above install: From 2708ee4de23308d5643d7450a1a7541bd9aa1706 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Wed, 7 Jan 2026 13:42:20 -0800 Subject: [PATCH 193/619] Fix json --- docs/build/cppproperties-schema-reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/cppproperties-schema-reference.md b/docs/build/cppproperties-schema-reference.md index cafd37a1e78..8ab040779a0 100644 --- a/docs/build/cppproperties-schema-reference.md +++ b/docs/build/cppproperties-schema-reference.md @@ -93,7 +93,7 @@ You can optionally use the `environments` property to define sets of variables i "mingw_64" ], "name": "Mingw64", - "includePath ,": [ + "includePath": [ "${env.INCLUDE}", "${workspaceRoot}\\**", ], From 71697e68cf4008c6b59d243168191fe2600fe77f Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Wed, 7 Jan 2026 16:43:25 -0800 Subject: [PATCH 194/619] Add settings note --- docs/build/customize-cmake-settings.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index 6b56804360f..3d17e37a068 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -23,6 +23,9 @@ Now you see the **Settings Editor** with the installed configurations on the lef The left pane shows the installed configurations (x86-Debug). The right pane shows the settings for the selected configuration. The settings include the configuration name, configuration type (set to Debug), toolset (set to msvc_x86), CMake toolchain file (empty), build root (contains ${env:USERPROFILE}\CMakeBuilds\${workspaceHash}\build\${name}), CMake command arguments (empty), and build command arguments (-v). :::image-end::: +> [!NOTE] +> If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. Under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. + Visual Studio provides one `x64-Debug` configuration by default. You can add more configurations by choosing the green plus sign. The settings that you see in the editor might vary depending on which configuration is selected. The options that you choose in the editor are written to a file called *`CMakeSettings.json`*. This file provides command-line arguments and environment variables that are passed to CMake when you build the projects. Visual Studio never modifies *`CMakeLists.txt`* automatically; by using *`CMakeSettings.json`* you can customize the build through Visual Studio while leaving the CMake project files untouched so that others on your team can consume them with whatever tools they're using. From 9d224b2ced98633a4fad08c74f7bee7fe7284ace Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Wed, 7 Jan 2026 16:51:04 -0800 Subject: [PATCH 195/619] Add screenshot --- docs/build/customize-cmake-settings.md | 1 + docs/build/media/cmake-options-file.png | Bin 0 -> 28009 bytes 2 files changed, 1 insertion(+) create mode 100644 docs/build/media/cmake-options-file.png diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index 3d17e37a068..08f168e6d54 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -25,6 +25,7 @@ The left pane shows the installed configurations (x86-Debug). The right pane sho > [!NOTE] > If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. Under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. +> :::image type="content" source="media/cmake-options-file.png" alt-text="Screenshot of the C make options pane."::: Visual Studio provides one `x64-Debug` configuration by default. You can add more configurations by choosing the green plus sign. The settings that you see in the editor might vary depending on which configuration is selected. diff --git a/docs/build/media/cmake-options-file.png b/docs/build/media/cmake-options-file.png new file mode 100644 index 0000000000000000000000000000000000000000..43f6ec1e6069799475335f9aff5e42a1a621478a GIT binary patch literal 28009 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 Date: Wed, 7 Jan 2026 17:02:37 -0800 Subject: [PATCH 196/619] Rename image file --- docs/build/customize-cmake-settings.md | 2 +- ...ions-file.png => options-configuration-file.png} | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/build/media/{cmake-options-file.png => options-configuration-file.png} (100%) diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index 08f168e6d54..4634014ab9d 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -25,7 +25,7 @@ The left pane shows the installed configurations (x86-Debug). The right pane sho > [!NOTE] > If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. Under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. -> :::image type="content" source="media/cmake-options-file.png" alt-text="Screenshot of the C make options pane."::: +> :::image type="content" source="media/options-configuration-file.png" alt-text="Screenshot of the C make options pane."::: Visual Studio provides one `x64-Debug` configuration by default. You can add more configurations by choosing the green plus sign. The settings that you see in the editor might vary depending on which configuration is selected. diff --git a/docs/build/media/cmake-options-file.png b/docs/build/media/options-configuration-file.png similarity index 100% rename from docs/build/media/cmake-options-file.png rename to docs/build/media/options-configuration-file.png From 3665741206b2b2d4a7bc298a718b8dd445140b05 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 10:47:21 -0800 Subject: [PATCH 197/619] Minor edits --- docs/code-quality/quick-start-code-analysis-for-c-cpp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/code-quality/quick-start-code-analysis-for-c-cpp.md b/docs/code-quality/quick-start-code-analysis-for-c-cpp.md index 7c2a7c05f31..1a8f22e7f2c 100644 --- a/docs/code-quality/quick-start-code-analysis-for-c-cpp.md +++ b/docs/code-quality/quick-start-code-analysis-for-c-cpp.md @@ -17,7 +17,7 @@ You can improve the quality of your application by running code analysis regular 1. Optionally, in the **Configuration** and **Platform** lists, choose the build configuration and target platform. -1. To run code analysis every time the project is built using the selected configuration, select the **Enable Code Analysis on Build** check box. You can also run code analysis manually by opening the **Analyze** menu and then choosing **Run Code Analysis on** *ProjectName* or **Run Code Analysis on File**. +1. To run code analysis every time the project is built using the selected configuration, select **Configuration Properties** > **Code Analysis**, then select the **Enable Code Analysis on Build** check box. You can also run code analysis manually by opening the **Analyze** menu and then choosing **Run Code Analysis on** *ProjectName* or **Run Code Analysis on File**. 1. Choose the [rule set](using-rule-sets-to-specify-the-cpp-rules-to-run.md) that you want to use or create a [custom rule set](using-rule-sets-to-specify-the-cpp-rules-to-run.md#to-create-a-rule-set-in-a-text-editor). If using LLVM/clang-cl, see [Using Clang-Tidy in Visual Studio](clang-tidy.md) to configure Clang-Tidy analysis options. @@ -92,7 +92,7 @@ To run code analysis on a file: 1. In the **Build** menu, choose **Run Code Analysis on File** or press **Ctrl+Shift+Alt+F7**. - The project or solution is compiled and code analysis runs. Results appear in the Error List window. +The project or solution is compiled and code analysis runs. Results appear in the **Error List** window. ## Analyze and resolve code analysis warnings From ab41f8c13512e2e3742938a4b5e886939d555655 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 11:59:40 -0800 Subject: [PATCH 198/619] Add warning --- .../tool-errors/command-line-errors-d8000-through-d9999.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md index af66c940222..d87c3bbd718 100644 --- a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md +++ b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md @@ -27,6 +27,7 @@ The articles in this section provide a reference to the command-line errors and | Warning | Message | |--|--| +| Command-Line Warning D9014 | invalid value | | [Command-Line Warning D9024](command-line-warning-d9024.md) | unrecognized source file type 'filename', object file assumed | | [Command-Line Warning D9025](command-line-warning-d9025.md) | overriding 'option1' with 'option2' | | [Command-Line Warning D9026](command-line-warning-d9026.md) | options apply to entire command line | From c283db18e1b72d80c3638d66f983993ed2a610a5 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 12:10:42 -0800 Subject: [PATCH 199/619] Add wording --- .../tool-errors/command-line-errors-d8000-through-d9999.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md index d87c3bbd718..d36c18a179d 100644 --- a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md +++ b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md @@ -27,7 +27,7 @@ The articles in this section provide a reference to the command-line errors and | Warning | Message | |--|--| -| Command-Line Warning D9014 | invalid value | +| Command-Line Warning D9014 | invalid value for 'processMax' | | [Command-Line Warning D9024](command-line-warning-d9024.md) | unrecognized source file type 'filename', object file assumed | | [Command-Line Warning D9025](command-line-warning-d9025.md) | overriding 'option1' with 'option2' | | [Command-Line Warning D9026](command-line-warning-d9026.md) | options apply to entire command line | From 8965a6c5e45f9cfc3041dbb2d2cdaa0fa0ecdca9 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 12:58:17 -0800 Subject: [PATCH 200/619] Add instructions --- docs/code-quality/c6200.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/code-quality/c6200.md b/docs/code-quality/c6200.md index 0003197a5fd..020939f0198 100644 --- a/docs/code-quality/c6200.md +++ b/docs/code-quality/c6200.md @@ -70,3 +70,13 @@ void f() ``` Code analysis doesn't warn with just `rand()` because it doesn't have any information about its return value. On the other hand, `rand() % 15` and `rand() % 14` provide hints as to the range of the return value of `rand()` and code analysis can use that information to determine that the index is out of bounds in the first case but not the second. + +### Disable warning + +If you believe the warning message is inaccurate, you can modify it's behavior by using one of the following pragma directives. + +- `#pragma warning(disable : 6200)` +- `#pragma warning( push [ , n ] )` +- `#pragma warning( pop )` + +To learn more about pragma directives, see [warning pragma](../preprocessor/warning.md). From cb719e700b7ba3f47c53db208b3d76031fa109a9 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 13:20:34 -0800 Subject: [PATCH 201/619] Reword text --- docs/code-quality/c6200.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c6200.md b/docs/code-quality/c6200.md index 020939f0198..40c81ae3a9c 100644 --- a/docs/code-quality/c6200.md +++ b/docs/code-quality/c6200.md @@ -73,7 +73,7 @@ Code analysis doesn't warn with just `rand()` because it doesn't have any inform ### Disable warning -If you believe the warning message is inaccurate, you can modify it's behavior by using one of the following pragma directives. +You can modify the behavior of a warning message by using one of the following pragma directives. - `#pragma warning(disable : 6200)` - `#pragma warning( push [ , n ] )` From 38a2d765bbd4181c0ac23600a1261e8e582b9f68 Mon Sep 17 00:00:00 2001 From: Meera Dietzel Date: Thu, 8 Jan 2026 14:52:30 -0700 Subject: [PATCH 202/619] Updates --- .github/copilot-instructions.md | 2 +- docs/build-insights/elevate-note.md | 2 +- docs/build-insights/tutorials/build-insights-tips.md | 2 +- docs/ide/cpp-linter-overview.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 417f80a8da9..75e32e18c89 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -88,7 +88,7 @@ When working on an issue: author: github-username ms.author: ms-alias ms.date: 12/11/2025 - ms.topic: conceptual + ms.topic: concept-article ai-usage: ai-assisted --- ``` diff --git a/docs/build-insights/elevate-note.md b/docs/build-insights/elevate-note.md index 502e2087fef..f13849c4b32 100644 --- a/docs/build-insights/elevate-note.md +++ b/docs/build-insights/elevate-note.md @@ -1,7 +1,7 @@ --- title: "Build Insights needs additional permissions" description: "To capture trace files, Build Insights needs additional permissions as described in this topic." -ms.topic: article +ms.topic: concept-article ms.date: 12/9/2025 ms.update-cycle: 3650-days f1_keywords: diff --git a/docs/build-insights/tutorials/build-insights-tips.md b/docs/build-insights/tutorials/build-insights-tips.md index b9c2b0e6f6c..45b4517777f 100644 --- a/docs/build-insights/tutorials/build-insights-tips.md +++ b/docs/build-insights/tutorials/build-insights-tips.md @@ -4,7 +4,7 @@ description: "Learn time-saving tips for using Build Insights." ms.date: 1/8/2025 author: tylermsft ms.author: twhitney -ms.topic: article +ms.topic: concept-article helpviewer_keywords: ["C++ Build Insights tips and tricks"] --- # Build Insights tips and tricks diff --git a/docs/ide/cpp-linter-overview.md b/docs/ide/cpp-linter-overview.md index 07057453ac3..e6c987576c8 100644 --- a/docs/ide/cpp-linter-overview.md +++ b/docs/ide/cpp-linter-overview.md @@ -2,7 +2,7 @@ description: "Learn more about: IntelliSense code linter for C++" title: IntelliSense code linter for C++ overview ms.date: 09/30/2021 -ms.topic: conceptual +ms.topic: overview helpviewer_keywords: - "C/C++, linter" - "C++, linter" From ac1f8ad5e5acc64d32905509338a519b349f9dcd Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 13:54:08 -0800 Subject: [PATCH 203/619] Add instructions --- docs/embedded/serial-monitor.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/embedded/serial-monitor.md b/docs/embedded/serial-monitor.md index 6ec62acf7ed..581430e7832 100644 --- a/docs/embedded/serial-monitor.md +++ b/docs/embedded/serial-monitor.md @@ -14,6 +14,8 @@ The Serial Monitor allows users to configure, monitor, and communicate with seri # [Visual Studio](#tab/visual-studio) +To install Serial Monitor in Visual Studio, go to **Extensions** > **Manage Extensions**. Search for **Serial Monitor 2** in the extensions marketplace. Select **Install** and then restart Visual Studio to complete the installation. + :::image type="complex" source="./media/serial-monitor.png" alt-text="Screenshot of the Visual Studio Serial Monitor window."::: The window is split into two sections. The top section shows the monitoring mode (serial), Port (virtual COM port COM3), baud rate (115200), line ending (None), and a Stop monitoring button. The bottom section shows the messages, consisting of four lines of the text Hello, World! :::image-end::: @@ -44,6 +46,8 @@ The window is split into two sections. The top section shows the monitoring mode # [Visual Studio Code](#tab/visual-studio-code) +To install Serial Monitor in Visual Studio Code, open the extensions marketplace and then search for **Serial Monitor**. Select **Install**. + :::image type="complex" source="./media/serial-monitor-vscode.png" alt-text="Screenshot of the VS Code Serial Monitor window."::: The window is split into two sections. The top section shows the monitoring mode (serial), Port (virtual COM port COM3), baud rate (115200), line ending (None), and a Stop monitoring button. The bottom section where messages are displayed is empty. :::image-end::: From 9794d8f6f6ff5b29ac25b60a78123eac43439cc9 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 17:40:38 -0800 Subject: [PATCH 204/619] Add screenshots --- .../reference/creating-a-makefile-project.md | 8 +++++++- docs/build/reference/media/create-project.png | Bin 0 -> 25659 bytes docs/build/reference/media/file-new-project.png | Bin 0 -> 27281 bytes 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 docs/build/reference/media/create-project.png create mode 100644 docs/build/reference/media/file-new-project.png diff --git a/docs/build/reference/creating-a-makefile-project.md b/docs/build/reference/creating-a-makefile-project.md index 1f88156dfd8..bdec06056bd 100644 --- a/docs/build/reference/creating-a-makefile-project.md +++ b/docs/build/reference/creating-a-makefile-project.md @@ -30,7 +30,13 @@ The output file that you specify in the project has no effect on the name that t ### To create a makefile project in Visual Studio -1. From the Visual Studio main menu, choose **File** > **New** > **Project** and type "makefile" into the search box. If you see more than one project template, select from the options depending on your target platform. +1. From the Visual Studio main menu, choose **File** > **New** > **Project**. + +:::image type="content" source="media/file-new-project.png" alt-text="Screenshot of the menu dropdown item to create a new project highlighted"::: + +1. Type *makefile* into the search box. If you see more than one project template, select the option for your target platform. + +:::image type="content" source="media/create-project.png" alt-text="Screenshot of the search bar with makefile entered."::: 1. **Windows only**: In the Makefile project **Debug Configuration Settings** page, provide the command, output, clean, and rebuild information for debug and retail builds. Choose **Next** if you want to specify different settings for a Release configuration. diff --git a/docs/build/reference/media/create-project.png b/docs/build/reference/media/create-project.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb1a61de5d58fb91eadc9cf6c9c945b939efc67 GIT binary patch literal 25659 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 literal 0 HcmV?d00001 diff --git a/docs/build/reference/media/file-new-project.png b/docs/build/reference/media/file-new-project.png new file mode 100644 index 0000000000000000000000000000000000000000..6e6767d5d8ffc3b3e39837c1c1c0df6a95208fa3 GIT binary patch literal 27281 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 literal 0 HcmV?d00001 From 7cabb6f7194a0b302231e0144bb70b66a197c38a Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 8 Jan 2026 17:50:45 -0800 Subject: [PATCH 205/619] Indent images --- .../reference/creating-a-makefile-project.md | 4 ++-- docs/build/reference/media/create-project.png | Bin 25659 -> 20664 bytes .../reference/media/file-new-project.png | Bin 27281 -> 13011 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/creating-a-makefile-project.md b/docs/build/reference/creating-a-makefile-project.md index bdec06056bd..437700d4a94 100644 --- a/docs/build/reference/creating-a-makefile-project.md +++ b/docs/build/reference/creating-a-makefile-project.md @@ -32,11 +32,11 @@ The output file that you specify in the project has no effect on the name that t 1. From the Visual Studio main menu, choose **File** > **New** > **Project**. -:::image type="content" source="media/file-new-project.png" alt-text="Screenshot of the menu dropdown item to create a new project highlighted"::: + :::image type="content" source="media/file-new-project.png" alt-text="Screenshot of the menu dropdown item to create a new project highlighted"::: 1. Type *makefile* into the search box. If you see more than one project template, select the option for your target platform. -:::image type="content" source="media/create-project.png" alt-text="Screenshot of the search bar with makefile entered."::: + :::image type="content" source="media/create-project.png" alt-text="Screenshot of the project template search bar with makefile entered."::: 1. **Windows only**: In the Makefile project **Debug Configuration Settings** page, provide the command, output, clean, and rebuild information for debug and retail builds. Choose **Next** if you want to specify different settings for a Release configuration. diff --git a/docs/build/reference/media/create-project.png b/docs/build/reference/media/create-project.png index 3cb1a61de5d58fb91eadc9cf6c9c945b939efc67..1ab81f0bfbc74852e9ad6724058f8bbeefcc6b4b 100644 GIT binary patch literal 20664 zcmcG$1ymegw

rneWTid`Kk?g z6F)yBghKeJ+N~&)PF&;n;--4{7LLxfTjpsW0eFf0M$27xjORE=<=lOySoBr4M(XgT zx={Y|Lz=B_deWLp%Tu>b>cD!)P*R}ioW^RPOB@5Ll;bfrlPK#*rEgJc^ zOrnc4skuctw`q$%6;_$sdd)raLu4-#KSQE4s%EjI(ps=es#(gGsBiy8)nqpR7UKi>vZ zCR6s^%5$QwMb`?w)}KH7^A>wpCU|479P2P*`i7>Rh??#efyptn>N4(#yM4A-K5jdn zjB%LQHs9o~9x_MMx*HAf@h_!OmxgPI=`rc^llL8b#_qi<%gdli@PnwO_o7n>QMu=s zE0N(Un?U2k1UQ&wJRe$G&tLq)O%XD^-Wr&}t)Wwno~k06(KkFiBToNkH>>ktCd$an zoEgwDeDfc5)b;LbkJHU?@7KfDYq1!9RN5pRtfS;Ax@q|&jWm&aRAjq~px#CdST%#F zwy~6zlBT$D%(i3jq|CN?rJ!yi3lqDnYj7^u=nY)BPW3yira_e;#WFwpn!1SH{qrY* zMD*?cSbMkIpLkt)ciFe-F3Q@iDIo8Ra4HTx4G9XwS8l=@DjJQZ_f)jPlLqI}9Gy=Wok@!;2b#R5Z~ewFqF z7Ni-<1paRYclLitt8KdD%e_jBZxB%p14Yh$uO6I^c_6T|Fc%d|`J*4iyns=kNaz`cKqB>+S!JGZ4E;GMuey#PVA#8hIb}rJzuN;2V*H z0bLdYReLm0F!Sy%4+iRIyb%72KR+>0ZyBU$5Z4e1WT22QNwdzCnxCIXtagN9-4;z! zeZ)-x9$|-WjV54^kF#s4ptAt??FlGtnSJ%I1Xqk^D;u?0EaxgUcGowq;9WL=Su~U^ z<>B)*f~2d+q-BovXQCK6s_^+Bk65n0K|$I0Q)Kf2P~#||5Hz`NCqlKznZh}-`^hKv zHgfoYcll9Mptr^EXl1ER_o>NTM0swtafsSa`LNejR8ZsYNy>jWD=v`;a)hu5B7Qm+ zXlrWvzI#U|R-ptX6v}pMTk!I-6(U7e=)4f6vlpdv6xc0XE9dd5GgQ4$X=&JhlS*(W z6=FEEMJ)`C*>7(*+UE;r4A4p_BF8&X{=IG^oTDI@Elw~a2)2JF{hQ+50GCgN<6JZ?^;1}l<)U%kPnG#<>?r{a5xV!s!M%Jyfot=?43 zdt7p71f2~a3IU_w7`AqGDT1z|JjdG(qUm?zB7_`6F^v~c&AR#Q0Kk;?c5y^P0)D|@ z?g^dkB$RFV6>YE5Ve9y0jI6#OxH@wS3xF@0@6;+AmRf)KbGo&sQ1R~FyNH)LIg=c* zQ7f0ZQo3<~6a%yd=@;O~&t$15WpBYrf}tO`4SFATl zVwM@J-I-u9#7VC+Ps>AlY*nnP{zFD{Ina+DKD^?!;m4Q?^M+VzheW%;AQZ6(k(m#^ z@Ed@dQ>CM}jdkazcF58|xCclxK`K$~MlcKr9|N7}B38;Y5=e5VT)oE0dCSP?W8&NS zj#w7Z^;ETCk-%o04p-bAmQRCmkp-Fuggwxa_+Y!guUqruv0&H5ix=;REqdC6Q~?Es zqNJoG{>LaJ7TVsiwR?mF2g5v~a+y#BktI_VUW7>vKal-Wa$e4ZEB`=SyS)tx*d;u& zejrc?I|E=0S~wJ-U!D+7kVDO z4>1+^B!59HUl^YLwk0Rf78^kj#3G;{P`LpU*emJqs#hH&{D5wFC%$)^D#(68>Cg6I zL~?Tea2e1E{oa{>!x5kK%*@P`(}zBMoql~>Ln{8cYTQ;QY#h)v^~p0o7GT`tL<<#?O$NEJd#51=lv058KwAeoC z+mU4)2st^d8?ainpYVSSW(ZJRGup_072GmIekFM&oW&a!PgPXm6RVBK1MUF@_-=1Dl&Emnl9WVbhQCY>?>gmOzEFrp$pQ{~&uf^U@#Rs`1+Y@!sov--U??

9ghb2Y;oGGWFk@jdKmWDUKRAeFLtx&v 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 A_y7O^ literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/copilot-build-request.png b/docs/build-insights/media/copilot-build-request.png new file mode 100644 index 0000000000000000000000000000000000000000..325ec315daa6c5139c6565b219b73d03d43bf5bd GIT binary patch literal 17604 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 bex%ecrKDAU>Iw|@5Qwt8np}~LX~6#ghZLu| literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/copilot-improve-includes.png b/docs/build-insights/media/copilot-improve-includes.png new file mode 100644 index 0000000000000000000000000000000000000000..2a39818263432a409114fcba9aade963241ec992 GIT binary patch literal 13898 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 literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/copilot-improve-prompt.png b/docs/build-insights/media/copilot-improve-prompt.png new file mode 100644 index 0000000000000000000000000000000000000000..43a5194dc4a81bfdf6ead24857f1deecf89bed22 GIT binary patch literal 12298 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 literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/copilot-signin.png b/docs/build-insights/media/copilot-signin.png new file mode 100644 index 0000000000000000000000000000000000000000..05ae12cad457ebb15227f832d38ab9d1887c4f16 GIT binary patch literal 34001 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¬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 literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/insights-improve-button.png b/docs/build-insights/media/insights-improve-button.png new file mode 100644 index 0000000000000000000000000000000000000000..ba4a0383b823a97df31917d17ed1fbb61fc492a9 GIT binary patch literal 13118 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 a7gCV?^!-4l3;fRuNL*M(sO*cL-~R!UK0WgQ literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/model-select.png b/docs/build-insights/media/model-select.png new file mode 100644 index 0000000000000000000000000000000000000000..4c3db683c85f154299c557684e354621966cfc68 GIT binary patch literal 38362 zcmdSB2UJwsmNi@=U?50PauSJxfMk&%Qldl!BqssMIf_IP1d1p~kR*~NOU^+_3IdWd z2#9155XtbZ!h2ue`|f-FUjN-a{?QDy6speI=bXLQnrqIvHtL@IZM?G-XAuYlp41(r zA_9R?34d} zfc|r$#rn-d1R~N}3MqcyS!Zd?-I=m4f&Wl5Btd{~l27F|fwyS_iXQh$TCqh+aIm(8 z#_0g3vOLN;;)Q<8fxF@T7-D@+BUX$3uN|f>G_o={4zHx;mENT$bPB}7KWmW?A#NI3CzeCbYb;s#uq{NmR%{?Gd+plolo$nRD_Zx?Fhdg)7Hq_3 zNhbz^W=sW(9=?+2joP!U5Krtw6!(FU$eh=?;ZjH=b5sB>u=P*im3na;k2)x-&JmI zjKHR+7520GKbMB4Y=~?mqfO4DhY6>=%}&xVT48Vd4vX{w{1!fbeBy}pRiwE1iH_^5 z!k^*<&cX1Q<>Tu!l`uuhT5gxj0abWM9k1<5qrX4P2$>B}%WF6b5}DrkUwAcG z-#aj|w7d`}$4Z84 zy%Xo<Pt*1I91Z$TcxFRiH(D?(Jp3kK^X!<5R2is2LPad;0G6VCryz!KoaT z>_J&1l84Hhql@>RlF~^8t1(}DPI2-1lP6D-QBj?*LLidv-LZg2`}EH%fidJ_GB34= z%X!3Go5`C6Y?kjH5KP*r33w0p_WBGDYYZ+sIm$kMd`(D52yr7}2M^nOu-3h5w;GR< z|MlCq1pWgrFzSM|OG|r`nb{?B_nOYsMnwJC@NmHTy4~@|xyTwP8~pmNPP<cpk<*dEp2nXneqXTl8M#5PLuQc34GIGy9D8 zotFpqn|*FxEMdQCTBMPyp82T#n|Wkpr0M%~dMf;soE%vT--*?hpUWeC1E!{?@4kF_ z{jDV8dG?Qi-rhN#O9`&ACOzqLZ*p^$TbK{IZy=FMf#T676obX4#L_Y{ed@?tQ%hgJ ze4)FU^gO-Ys;t4R#7vq7o`jJ~G2D0ruccF!h-u6XrotVKXV0FoT)EPx6}WD^R?D)L zTw1EqqobtceUBxz_LX2d+{gij45^&9~aj|beL3P67Ic2i!`noaoF;JMy*?gk;3rGSQVaks$I>LMV6hY z-#J#Y4p22pF_&Q3#V7HTT0`?Q%) z%}V{Zc=|+gGc(0yWN^;n;8e_z6Lwu|el7EmsP)sEuG{9S zJc0KsQxz#H4Xc%`z=D2FD4d#^8fNO?TRrde`%nG-(@DHJ!lYPetV>boYgcPY;KEP8+FV@d`FGfg6Zt$6r zJ1jPqA|fivY(a`A(@RbjrY79-U5ctltNrX#u@-P2rHt(_z?t8?dGmP`r)n%O(@~}L zK-!TyX1r&4q%3Zh0Gp&Wz|Ht>buH;4xhA0n5MZS_Ahq7#PF|K-<&pFf@Mgr~ax z`1v!-z{S~5)w&Ff{RUvi``@t>kC2h zjzl zKQ2Cga&j`pl`B`?YUJt*$SL7gA~6x)U21HE67=nx3oqE9{L{O4Hy0IjbU664f5l@0 zd_TTrIXSuSdk3-nt<><5)Q(sc6_o&O^2OEFQ&Va9L$5Jsv$8Hb62`X85c$Ds&4OTu zo|Yt;I|m+WxhlQAy(Z0yD-S+1CZ{$gTxdS~vZkg6PWyew4F-6P3V)2AS3Rm{yuiz! zMbpg8j0<9zjbISOeu!AUqg3c*BgN?Z>7gMWiYIq-b8~KGrNfzjz+~_3{fH(zlx7T^ z^ce(bOmFe+1CRUn??X7gM|Ja>k9f3yuVrOKp|>o96(|4rl{%s8*By&W4GM-VriFCr zlTmL+md(oLlzU_wsj9)2PF-9Wo1 zCcJ0WqZG8X*qzYV8WMuv+uxsDT}?$zO|365L-y-A;J^dkXg5Ob?(R0Gvv!S-=k2Yd z;4TeX@aJe(sr1Mrd1D|#L-5oq8$o}UXjGJ_g}|z&k1X8I$0^D3+GC%o7a3g?6Qjk#!qR`Fv3;SQxFsLKBy?N9fJ{DK(957D zM9R45#dG?oDv=UaW_ta6Peu~}C+=&9Wk;iMpJOp{S{UhLA8$__+J{0i zJNsSC2|jR+G&R8$X1UUrlDVtG#aExowO4g9hg#uD0N#0l&U$C}OE>tI&eR1TMo+x6 z_NdTBM zLggX+{|ro{g_o151rZ28rSOB6lu^3-v$e{yFw(T_n& zUw|-dA-8P&eZU2_@1BR9NADoTH(JG}!vj5yc>8$62tA%(p{r;z>^6=RCJ1md2`7dk)c~2^BjmPY<>`g}$bubT-wz^Htm=!IECinG*ag z?}ldVG6O%aRLs)Yk`Z>LR?b9ezO@+QZl^D4q4lH+B)RfF;n8>|xlDyO1dMQ^M=E4& z4^~Dih|zaHT`sOM&$bFa;t=?mKJ3o$b$$Xu!#4N;s=@D^!RmO8^I~qUM>6_O)!!e3{vk85BA^zCQFq#%q#MZ8tux6$cdn%5(0g<=H}-K<52!A@5XCf3t%Lhoe?9) zx6@{8?9nA6lq^KJ0UcMousfKly6z=|w~)M%+J_7@6R-~)B2& zc^+=$RKNbU5V(o=Tc?Utbspa;6J#eseQ}-Gd$k?G8dm;gIX%wmeWl~#_Yaps{TtvI z?bD%RAtJ6nO&07{t2gAKO1k~0xOcm5V5iGcd5Vl)x~D7U_6YoG63SH&;?Ar8_H)$#C3?`-w|<1pBDzI=BWYax-d+N3l+)E`Cx^QPU#>vZZO=c-!jRz%3%ec1)7MTNcTz02+C* z07f0hp$Z6rC^_CHbZ|nzT*$XsD8Xb z=7jP$dIBHTJKW#V=SeuZZ^WC-EPlvX0t=(lT=#w#VDc9^e%1 zp0ulQ=zPI&rpx3$RqTCN*F7JMhlQ@;AFmM*cJ&tG;^8$RUf2FqN7Sc`WHnwzMx>|Q z4#hx_aA>hO$x%vg2O;TWf5KsZ{P=+eUI!JmwKQX6V=R|1V<34M(gj{^8@m~gnCtUc9k$jPEc;E1Re$Gko6o2tl|-oKnKhSL)#*EYXwZGK zdd(J@eD`(jvdlev(>Zy}n0BSbfof%gy7?Q;BO_wK=aS$>Yv!W$x@v zU?bdCT_=dEWKI82^U+H)ND;-$XK;Kz@dQTxOjSWafe=QF;dMj)lfz}6)efFhbw_Mk9)%<_iq@{55iVQ2`+ht7?LyTVgW4*J!Ef)PX=tdo zCS6P1Rht{u_gbjgzGBp0#I5EKU7c7fDs_-p5qCIfBgOTudK_FEy3FanocVRwouZTP zp3reb@Z=43c8>EeEaXN2{yYWYPyu5joKdDR?twV9{5(&r|-WPr2Uy2$d($*pa#QzCpJ>dLhWjTW%#-LXf32 z?fHu>)&}#}KaQbU{o>~Pd53^@@-~(FcHfSUjx&)62S-Okx4S_L;V%fyLtnH%y`7@a zE*RaG_LH@w0kzrV--&b;rjetpSq)}BB<`FfenZRlDP(e;QZ#^VjRG6H@s+L1Gy(q9 zWwl)W7BzhRFJDYpn>vSM3l^jc5+&C}+j-IR7CWc4Rl0!9;NalkMs@E+%7`yo%F2dh zKbT~ADW0*nv2bvZRE38#oN;$|_eat%G|W3J+{_`;l986?HOS8TVa^aSY-DJp!J2gM z=F)J9`J{tTfngiT<~5qoQ~YtkJY7-;XYN|L;+5|-?8c1B;!)kSlEu~WTJSvFvh9nl z{r;Wwdz$ACXZ70q&hKfJ+lkY(%WQ_^t374eou1Qm-)ky4gJ@D#aJI*ZcdxZ}4fXo? zt!yW6FET#vz&Yo6LU;G4N;UqMio}Jz&F0#>*1~I@+u?aZ4~mQF`U-+qFEM%Gy?1v% zDv!X2+#xMJs;-ywWN2grCw~AZv6I;;I1VPA&$~Me80t|M(_XT+r#pD(5pi6U)(T#INxlEoJG_BChi zhm{`G#a+o9>P0@WeMY^Xo03|dJl}T{b?+RE%YOD-rLI}MTgyekpXe-KUYm-$GF_fO zNmuDndm(>fKlDsz9Y$Z`A+n?Q+1*piXGsnxC`jv6c&@Y z1toAdj{BEb!iB843hUiF`*!G0#mnaso?S8Y;P=LCkm^P8kcd5enkf$ z#1{vluD(7-{!WvjN@ilbHmJi$n=gg=8-1%TD^pG2BOy%>`?B6d*8U&{`?j8IL2=o> zG_S^`tb`J3b4h1jhFVdZJ4-JmCG)Eezxn8rbZ>8K4_&;tmf|_Bdz0y%U!Bh`n@8yE zTZ*mpH}lkO$b9kK5oMY+7ai$yki$?uVrpJ~2?0_&;%ev%cd7RkiPk zB1Br0oKiBd7G=vS%E}ik_~X7^a*1x^`=(zZ%Q#M)VgSK!b2Q=}d&q{f@N+};qVG9L zNhb=~%~$MsDfn>Tw7%!Lipg9X(lYJUGw;(d2?^#&yAhAuxp{ZmJdI#Bn2vtTMO1W} zQ?z=zrrPX3W$6ok+_JEU%l zJ&E=9Vsgql;hDVolk4ZEFU1NOQ=EesqsSWA3FWc_PVqx^QDe3pV$y1uEgJO^akCN z%1WWlYm@?3NIHT$=1eZl0jF{Yh--(I+)c5=q`o&3ixHct9r^sUwr*NfW%6*N$={OY zqm0F(t(_!(Qb>p6U$+t(CjU5dJn=Kf=q#zz!T9S^0rBcahO2Wm-`~C?6$z?3&saf9 zLvz3#Rzj;n(tkiBIyUiwS9Xpf;+e5nzqKR($JLq`HD6y}eZ)Q8J$A&GF3a6p_{fM? z{{d0}H3E*P#X@}F?|Iaeca;h`P)CM&PV1TSgxs5V?vuuAO~$7EGtFhsDyP_D+#C0s ziH~yjG=|w!`EY1mTRO?J*QgtE>m~P&_6gS>H|sbH)-FfCD`?!P*kNmbd)V)7sk)z1 ziKS9FYd$hPfsFnf%C_0rg_^iMvs_`P%wt9SeNK1vS>mLO*ulYEqP54-s3K48T~6VB ztnF9C<3~Q0wc%qu54ZH*4?G{Fd1R06nIBtsWQnNXs@)PPXp892p%_c=0_Y6Tx0M4} zT6=?i@#qhuMlPQX=RsBg!2RFm5@1~&ALp1;0IC2v>$?trKMc}60X#pH*YqI#w9n|vb9Z&$;O(bD_|DUPJ){DO=K(th0i$2g_IYRwAu#nIN zJ3e3x*H;Wu{*ozEpHqiNMwrjjy%>8T+i{VUbu|SDvMPs&EuOViueKTK#fs!L(NLq( z{(cn@IWj|m@Ur!npW04OX960__Vn|2g0VUf)c!lHV(;^|nWqDb7vg%NmR<=a$lJ~p zGqx2n)dw6W-6w;xyoMmU+*4EYkBTAzuKqO;gmL_q(&SFw@950T&HH982H&0lhKW?a zhx&F8I>==*NImVD=f!;uaUU|hev#y#f#>r-0M8!$k%|tZBJxA}6f`#ufoL!Y@`;0! zQ$V``#p;HM(OGP7#1r7LOLBoiQ^~$?-D&9#StiIL_&`@5YQew)0?zu}OtKA5nFl4y z|H=044S&Bf6bl>MNd%Rk&5b1rQbsOL^+Mzl1!N>zK*022{(5&PWlC2*I^5INPFN>B zpFa?|uwYgYVCKu$oMqWUrNW z)%;2%*->OFY$zI zR#ybWrS(2hR##_rGR&!~qxFv#dgx6QpPiM3>plJuC7JTvki4m>NnceF<|43zsx553 zYK)js5fLWM5aLZkGJ2)y-!q9N{AD5t71-;z)8 zvyUv_+X{o4n5H{Q2`eK=0WNl=k#D8$n(@E+W*8D8oCfM$$#BW3RJ)WC~V_ zD=NtO8Z?c zjLdGP3-;vovN1=YASYW46=I>$YSmb*L7Hputy{M$hbBu)`C$Q#Rix<`4LM8$i2pn= zkYRc$_ACf23s&gAP0Y-0nww_}vM<|~l$4yt_6E`%ExkO`YrS#|tccLS3N;dVi+gaL zO~KeW!>Zqjoj=Y}YnDy==P+>vbFzc+vlp59`2#-pQ;1IaHF$-G6V<jaLRDRIF&L2%HTQ0bqM>VSy;lxY%Os z1YbWUH+7tamLQeN zBNqbFbcGc?G<~PX#7Q}Wcws4w)6{(Fg=_fb^MO?YKx#J>=-*JjX)IKN=I4RfH!(4} z;qG2Dm_V3@U7nrY_O|hj z#2zv-vd7XzWgUJuy=CftgQFa5|NbI3Z|cS-uhxHm3zTw>Zmr#Yd7LM8LlZ z{Y=l3kYr6q-oAAUt3O{iaZRvpA{0c^75S&mh;z?wRto8~Qb#2vC6OU|2SjlY&JJ-N zVJ8XGX6L$65Ko@rkOpW&vSj_c1UVe5oHD|@`^!Cn&X7g_m&CjOjm&%^j2z2b9Hb;r z;VuF!?S9U1Mkk*XIPDF1ZfN?{FQuwVle%YY3=eAI(3X=36DzC!A19u4&h}6VP#3Z< zz9K~-@7=%8fY0~UuHwt4OVhVv#wup{3?(Wd%a4We-1U+v3LxSY#C&l0cNIUc_?Pqd zjpz*3NvgV|7GCiR2xL%~+9v=g-@heUV9jd3xOK)IVfm!PF=h}>LG9Jr#xJ1qTwnjAmD-cM66;bIz)aGVIPnt&3MQw;l?;$;*@9!3h{xyyfUv zGAR3y0>UZ;up6L!qiq#($3nn=AxVnl{y9k+f`X$T?XvW6OR+knaiG0_hfuC`b8#T0 zx?0OZ1#Uawpo>)a=EHHZv0t|K_$(u?qwx=(8dw$dRhxJB_I_jOE3&d$x#r}e{zHpn zWRxO8R}YTW`u@sK&84JJMi$D-k>8wK2hrl>FP3HMFD%QI=@^r;5lgkUYQwguRIj?S zGSa@jzSzanm>3Hd&itLBb6S@nIGLJe8imD9tU@5TB_|hb#6I(%u_AB&jujaP+3v5b z$g9E!oC*d8mw>}F;x9=`5?3<%JUW`g!K6eIY&lwfb&_RX!N`%=SU0j>S5-BdYuz0p znLy9tae{$uaJfcecV1r(64H>9M_Jh&$lw?q-#+t()^We5bV<4XuFeW$c9ZTp!9R)BeJ2ei{?G7QXc#9k&*0<)Bv11ZiV~z zQ=>FkGy@ppl2o6*?VP3LsWw{N_wOhHeHmisVazYscZTQj5X-5T7Srl1{4_D6FYYI) zjn=#a+!}J>MDQ)w0jPUNBawsjRFFj6ke9^4~AYpGeQ0 zm#~>ybQY!o7$Qi858vp-yTzs5ikrvY#%gR9xgOF;m#1Z&Y>`OYRRQ(@1r3d}Rbzmp z@w59{bDQkI6GfOA(PRvSWMz{~A$wv`JhF_w}0xPLT}K$_N{@3 z-eBA6WH5ELs;Y|cG-j_YV4_OfR<*>=jO-pu6BESLMQ(!ACQi3NXSjrMM$;|WZ)BN2 zr{n@^0QB*k$Kwy-dEJLZiWbsW82ne?6P$gTw{adB^Kdx27J^3H4Q~$y73_ne;)z8?W+F!{3P5M9{ z8%8o}YN*2*=4sIShEQ&W7RMN0M+6;pu;fK4B4L`)!CSo3|128;yqo%Lnhg;PN&+Ao z?Sp~qqKe&Mkh%#P%AjyM0M-JOKLWsw{@%}JeV${(M=J2q0E*BO?M+}{0|EjXznPi> z6A6b?t8&UsADgt98@3yAHXckt^Rnm?F$H`a5SjHJJh-uxY#M~F!kjBGro8%>9;%bX z8AbdG6zB{TXwpnUMTG>2qM@PjphTnTcd_0)FP=2ehMvtluN(DT z)xo#UJObJ>cA7Owo(dKu7C^WV31Q6i~y z4O(Dvk=73PvAP2POdJo|T>5WCZRqLz2qELdBlihaZWKRU6)ANzlErajH=lxrZtc zHvkN*P+0QEtqA{K^-!8?@#o2XU2~>uD_kKxP2VbOX?X<|m4N~{><_c2IF4^<=euQVA^@=H3p{)mq8`|2`57lV~Ft{&GwQNe#PBuKq z=8S7MA}epAQ-Ms8ZJxk#wL1Om5%E|WeWZo1CKPBK?6>I&VP-o{e3fnB>5}aO*9JI^ zBH;0+q)05KQ#GJ5marCU_R)(gpSU$J(;`F|e7VzTcohr{86T?mW2&SKn3|Y8VQ-5~ zAO_L}vIpPv^S6RBxbGxeUjYi?TIS*9*!tE~*11R#oxMkV1XyyCpGXWx<{1YT3%k ztQfmDN7S_qF)XcM@%Jr*;9Lgk8%)#DaWQ^Bea47U;icZ@c&=$CkI~7rb0`9BNasGJ6jCUXg+zH1FZMoz$Pd3KPbLdW|2&Ke7tS0`g_|3|y z9yPhKZ}4*niq^nJW66%L9AAqv^Z0X0D!(;%9 zZvN^m5b`%D!WmE!y;v?&JN|ri^C1mn1K-x1??KE(pkdWRo6cbH14u;8nDW`n@m_%H zHWVy`1?m@YvC#%cAPh{c&CH%otPT__plyWofDAtr22D-r7qDFcFJYz2zzwaf<4+bKIRq`%bCGbvz1r&%)cue%?&tCodO%MQhYiy&P_Zo-OSxgM5 z>PX@oaV8_w=RmKPt5TH7`h-j`bXwNX{vwAP_OSyCoe3NVOn}##RaaDe3jBuLh}v|a zttCB_x9U-jbvJ_ixT}O;k-H|(=arU{fH5B2``|BTVP`+@cMl&;4e>c_Zf$|%K*3Cn zxQ&!aaW(EtnyB()vPi+8TW6~MJ6+NZs*5IKJ~WqH)X^Y1jfrdA)Y4{D6uh^J)8%0F zXG~Ab!sp*ymIZ=V<@&SC2gP;f3`8I2rXN4!E{Y4uJpFj6vh<2(DdJ{AE`t>0cCQpQfKao^}a@Ty15m33J$`P~X zOT*&R(yXp`a1EtJOp@XL0ta;_M>4NxOsWcpM0`AYghu2nLap2;3EX4Ih;A?x_KD?dmdW>Ie5vEf z%vHZIp<8W$1$_%>!ik#=W-I#jf4$A~n1xTfjOpEYgn`f-eCs5tyX2v(0bLoY7y- zP~%(x=a!{GNrsX{Rs|z`DvEz!c3zPb9a>ZHGuO2B;&Zw&|xY|1MJr+zY&KS~?qr!kxPD6=pJj&ndz z>uG>nKpX=Y>a+Df)pEbPrXQBZheCFKu<4_n)$Vd-Bf+4;YY)o#wauWx{x^*t!eGhC zO&7?yjd`iSmmwP4__=qQo|vSc@oRv7pX8EfiMBdD=+6Y5QZB(Q?w)36Xe^?1$cSsfb5Mw(TtgQ0RfmSUFY%g za0xvA!9v48BP}7Y#Yjkar^{74U1}|XBwoPA>erBTrWZV!h3wfyy-1#ziB;7{TA(nX zyPH)e=6&3B{Nyb0Nt5h?Y?kx<=nFsP!h?qc_npqV!5|;h{MVoB!o6AAa4Uw z_vIO#hLGG{NsHvUrKfk1-(v6yWHY%;3Z;Fr=4H*BuMI8PmGTJ)fV~WEHjwRfhGRL3G+}DSY*IvUKj{dbJbcR) z;?EszkS+~2JI#>VF z-pdAofq{;El~7ua`O1(FeE$48+shGMS%CE-YnCx&6D?_I+mfEV1jPiD!z`?wlJWl6iBrtD-icYoO=!Kj3iww>hGJb^O0_NY}D!Y7XK@p;?y#T?z<6dGee=YU|i~ zV44ZRb!HR5$DME=Fu)eDF-EsJ%6sS9jRPQG>b3y{7s9>X_H+vV2ostf{+J?)h7ii zh5TtVU|q#3X)4OV5@Vx%M_u=p^N z?wM%)c2GKQ-najza4lgfpo?`$9=wKo0GQ(_ED%UG#`M z*NB5~n-zXz2vk)Ed|HVcWA7Ho_s-bO4>z0L&2YM(DWgpDLj4lks~67W^X%Pd&lC|! zUs|O{iqj?ZO*bS*I|ZuzWzh^7-YZlyvE(^gQQYjl07$F_G7?mze=B6jTU^FR(Ynmv zu~G`!+PRsVxR@Bz!xzQR*xsNe2DaepIW5@Ackr&kJXDypEnO27SNh%MvjGm(q1jM|7z&%S$uTX z0!oS+-;bmGT7o#CNT19|r0D}U=h_cgi-~$L}z-Ns82~el<#Z8z6GBSaa7FI&j|3tD- zf3e+l=u9e!g>eErlY#A(Hg7)NR8>(i8;-10GVJG$grZFQOCXZoH%a5_D{~8LYgJ?I zrp1@1e=AYWLy1E9>LV^+mjk4!l$G>9CaZ25$i@F4U2Xr)P9-pT6pMwqOvnOO54}bi zhc{g#36=Mz3(qS@Y8l{Dg(TvyfKor|dCEWC`(H`#54W$n(Hm-_bJd=S=Vh{GEMW5r zDK0bH1p`|rn#eirGG2hL)VWydey?9@zdvOm{Wm1|-)O834Kgq{^z3UXDkhstxHa>H z0V{|*s&B$}`7%i55_j*0rn_Gz*A6B0YdG<%z^$sAA16h-4md`CBegic%Dz8Dk}?p< zrNbpP+#`o(zrBg{OJhxzADbN=99~1M2juG9+}!6MzZn2%s3N(HiZLdp*T^`&E4I=Q zoy<_Y9{Z-SkO=I97};Hm;AceZ@f~2wzsizlV-Blr z$a0^2CM#>}ftu)FdI))^8nGOfA)(q7zYdg`XlKK^7r3M3v~v}Lm!Z1`7-hZ_*T!rC zbHPLg4-fiVBX?ATy#516Yg_F;{Zu! zL8DaJNu1v~z2+~0yZQ6y!YjaM@W!U37p>5FH5)H88_`jd2#cC$K3|+i6XFIJ+4(qA z3bZW&56G@f7a+TM&n0&Hfr-|3ySNW}M_`%h=t7GvJoaHdQUsdR?A!v@M#PgI2!ALP zAiwY}&#uR(2iUbM9R!lL<3iE{Fkkh1Z`-k@4aq=6SoOt5&>_jJ(9y{$88k~6u283D zmD3f#^t<-I``n%wX;l&>(n1IDO3p~3A}UIrki=<{@y|5Y~G z#$_flYBNfPIs`%Xh=u)cCbrhBV=21;NSOi|%+ggHM53gGt{j3l`#dwDjgw=-ZC z_Zk-|oRZJGMIlSwl{ z@W8*(A{?NMZV{Hc^{dBb*(sYZ$^R5-7!al!YSC@aK$6$4BC|sNCaYXu+H_&o%Kz0~ z5C~?N0BzIb?qWk4=(X+Y>G6g}#hp94;S4`EH!}xd1_0@KQL6i8Q3Ui}9P?XvX|D1H zHHlyp06+7i#K@r;Sn6_B^kdUZIz>b}Rh5;!{EeO0*H%qH&2Vu?zCim8A&A7@GCQu| zE&#tGM}!J;#|Z}`QS6Z9Gwwj<4g~lg zF}b$OwQxhFujDAW>X%>DzprsmQIR{Zz6U%7Iup&ol#Y5H>=0+o?&am@-+uI{jKiNi zk_;2WE0w1ZEDxqv{FPRcOoV46R`yICtaS1P=1WptwK94#V`A_yG0ZFrh-@MY!;v3X zPINuY%FVsSMdmZHiZ&ww=xe$dA#rTf2#N8))q=i&m^GkZiTq?K;eG*x@MUi^h`P%{ zRJI=b!NMjP^h0rKo_o2))!Wnn>@;teW2e9TI< z!7?jWrxg#)=QSGlb+c05i6}p3IVBM<9?!vj=GhCzFS$EK_+3V~%OftEKYpZ^ zJh9E0zRXh%H6|E#6i!-#76WQqZ;T$J2^-Ti4M8v?6+XIw+B5wajKL--m6gTDJZNY6 zB45V!v{L8fqAUZcO_^JO2wzSXq^2S*VxP;7cQ)QK1-8-A(Q%4Exw1vM88}b#RuX`h z&<4{d^dLnSS?JE`-`xF=Wg-if>ttlh@pS$5mvI6bmA7Mh%U{Vz&Z>h^#ZFJTl%?*z z|LhkK)hOLYV&0UO3!2`e$#eMzcywoGb zn-L%WSs{1qspsX33}*mG#hBG8w20;zV-c6Br3A>KN)l~cJEO;a{=$WeL=#4AYnzeF z&CTH*$u+Wu>mDkqsuJ=AX==$1p_(cx*uVsPsq74~d~PkY7?kHFKTdbg(|yu^RcU`} z#ysB3$8wj0>7vlUANarsWyk{nBVUN_#b-m@hh7c9t1k)UBHQBxvORUmtP;}izVkFz z)GRV{7?IX(Is1eMS`d4bVAWQ#STId-;3AJZl9EmD40X4?c{RKgVNPSN$wN;Mb!)O| zR#B1tr)TCyy`!U_!m;S3(WK13s;vGuejon#Tgym|K>zz%f7m12^L65T;w>$hL z{AHJGw#Km#ZuEtQ=?x!mQZ3d!wv|9X%X_DMQo=qe{C}`P)r)wWbo(iDU3T@Tmo}e89xw2c zaKv}UXweh@uFgS35p+u|`;70Xz?KKfQ>rNTsZ&iCg;3MK{Af)VZ(vU|^+1Cy0`d4U&vhkrb`mX@ zc`QL&H?^hKK_7F6t)JA5Q%$7Pg)&M50qDJ^VE?IwOQh|wd^oUm)rZc`+prfDJ4v7* zLmH29hyM5Py0%kaxk6~KqbAv9D|&wD`)ZRiNI`EZJ)xW{w8pu(xS%~@rirrBT=Ppy z=c^Q@XCFh!39W^`4U>rf=wS_c91Ot@)HI0f0%)nwijF1+{BVk|B+{8&WM`@)xBBOV zxGT;Lg?H>l;{95L3$F4#GEla|E))vrjgo**L^GUd4i3rzTR{TaA}Eo8heOl@t;laV zoO(^3X_{#S?B(CZjyA*qeQ$qd7Grff$&}wE_hTSsb+YfkTdj5pnj#qsBpS-(8B3KmJ5#sx2a4&Wx+AdTwa~4?pw;2*(5F0Mi8W#2kkV9;^RW!ypa>6OTJW?K8%jwaaSD=aZF|JB}y z4}(R8tF@0XIP2^P>}M}L80tRvym(@lq8Ragu0MG6^pva`t}+aEv_0jIoM; z!;Epo>asvFuDcM5Z51^84_Na`79ZP9=OcUlPpDQTO3PVK)m-Ronmgd0l790y)Hs2q zdQ*-Y0pJI~r38(?X17>raF`<=q8cPYVgRfxM*{b!s_8Q zKuQj9(zM+1^b|Wb%SZs+M7+*4j5H(%&kb-_3%8F94yfPcd@g3| z7O|T8l=DZ}36KF`C$9+0#eSAKqsvtI2H?puh!P?T24)NVrL3@l+3>fmJ=h4QMVKbx z`mg%{z5lY=&*Sc7cFHO1xoZ&p5<2z@qABd=)JwKM9iTvg!IQUtgWeIw8Zmm17uYBX@&{P< z$s@zbw2#y#bD_z^f;$z{1KsR9-vLc2CqIr;8aiDYN`C7Q66j+S=q&iCYV7$;SN`o= z`x&Xa_!c}+Sky_FKkkcfZ5O;yvk|Ss3jFkO(&i118Oji^H7H*2 zWHrc4^g<-e%ibF#Ct@jlfmA;cb zmqxX{(nS~rgZbE4vY?COlZlG5VX3(c2kYg_Hz6>C`=|)_fpEmoH27Hym@1*i2+oi9 zO45+-g*fh#{&RWseb(Q;f2bNiMiT5e3VJf%jV;)Ust&<`{Ut9iFV!p72+h^})6Nf= zHz*TWtde)ZuG)jiFmtg3Tb?uqvs(5Ssk-e}d-dci?zVWfw)iVChx9K(3J&pEChcKH zAf7-;tz9p`-ESL7K0dyE*dhHIa5)mp$3i?gn3hcsM^DCTLH`m^E`n~`ZwJ#fxuQZG zT9_yyZ1pA3G(IzpaD_79G~yn7*_k>&5EmD*=ayA}>QgA`{8|P%;cwlkGoT$SPEMYx3`{m=0uU=O7k5qT# zM(zrr_j{^!-|NL<7u)%G_w)F82y99iC~*P-5@x9I`e~2#7m4+-LmDgq*R2)6d>OEr z8n1-1s%m!Ndn5Xl_cwSqWJg|C&03NtU5at9+jJ=OJo2y@tGrOR({BA1_C69m+TU=V zd`24X(LNbxU5g^sbtCK)I}-Ld+M7s$!`AKg<$s4w?E)oGCccVJZUp9D#uziPEyJ5n z{XZEFV`~?=&Zk9xp9N71Dko~_e&E4qDF5nac$uj z{!k*_Knvk@2g}w4mLvSfSADoMyS6eor+yDR1g*V0=Ru&mH#~5BCj`cwFM%Zf1l-{`RrcRLy*mbQ{W(4< z>GLre1${=|c$#ZJc=U~3BHr$|Q@@}!Q7TF*xc;=pbt^0M&ex0Vo8!K4;&1gkaFtyT z^**;N2#h%pqc=IyvTeG6c!J)E^~Zcq`BVU#O^=+wBzgy+3#wWt0-KV3$AEtU*Z2uU zUisA7{gWDrCOkBQmB^KOnTCN4#$m9 zHPpWJ8YO!a_x|hrbLXxZ4DLquZSNe~YSF?_W~$@yEAP_GHP_XacYR+IJ6U%MpwANbaSiE8_}3#G079K@_kImSDfBf8ranq`PfdoXv~cKxfA6J>WTAtY*ICa&gZPE*CgG(Rt@K0fnMok`%4+#D@BhE@K4oo znQU)2Z(6~?m_-kx9rB&;C`pZ)inH3j^jEVuHC)YY(Kk~*tnbxi$Jd%|`Mk!m@;T|q zk$sMi3uU#8XI7@WHs0%{Q||r_0{ZIg*s~HTn+5J-&PQy-7uc+|@!DPmf0lbA={*d(q9>c@4Z|F5~PfQs^6 z_Z>w+1xX3XznDk~l2VE-C8BiBNJ)2xAYIbZ0tzY!j7YbXv`BYJ$1u`;pAYxlXYYOX zIcwd!?pf>3S}w(<^L_Kp`#$dzzt~96C>Up#%F`viw=o*xwo9?}gE17U+tx^Uo_w{5 z4)kg~s`+oPT+J3xk64$Eqy5qnbU9AxlL>rwS8Z~Ga8(tbI$a)PYEtnV84LG@8tq$_ z1xsHm9h`Z|t$Dh}$OXs5`B&=`mqpD|`lPR}bt}}yc}4hN-R-YGEBEbQ7!)vx@x+Un zj}D9^#%N_f0-Tc(o%O@D<_@(Z?~QNCKMj7tz^B7UGw?FKpj=`CxOssV=vjB6jLg=h z;ceG9$584nr;T6ZUntt1RP#6TAFkk9%cJt0j{WQe>Z*6beQpWfUmPl-MdZsu&)=`f z`ntQ8?N-~GAOeW+Ufl;LO{2sZN+Vw%x-f>uYcEO zy%SZ3K&PtKTIo1{B~{+Rv$HuGo?O&ex`h}Y{KRL0!g7s%UD1i6)0z(a zuJl^=QM=5m<0XTdfzS)OEIshmewyEIY=>p%Wv?-Pw7TU<(D=fqOYEI&6Wd_av>!Wu z=FFMVtdgZC8?7?VyF(*;Ok9PdM*#~e3eszESkc0>3WnR46aCtH-9+=da?k}~yUs>6 zeyuERwwTG6oZwUv4*RqVd7iGJ8z$t4h{BYyOf8rKvrCUZYmud|kLx9RKxU*p{g* zdxXmc?0nF!fq3%I0FDgG`gdodw5o{$xa&QRukbG(PQ;+hR_hQSg3bxS9}%x3sQpqS zmMkvSR}NOhHCZS9?yv%>x;Iy!3=zKuF>Ye6LX_Q*4Q*pnQ|*}jdY?WX1nP7Q3{LzJ z0>2M48}W^zHr@S213pubjUz>krUYj}h8?DbG-uriYzLm9l^z)> z2Dz%d$;Md!H0*DkiPf;M;Mw2D9WZAoe*RW3zRojf-65k~?(FarWdk{p&ereALO6+* zu^}!bN&Bnm_@Xu!QUvde2v6u8Yn=%mQ*W91xmtt39b={A+hu}~jwWop^9ZU5PG2?z zhW)qS|BfScbV|1k(T;999^G_NAcSpb+OH?3)rwrA+};cbK76r`BQpT&7_x#Npmzm1 zNoz6?zkO0WYFqm*DHui~arwPzde&lOwia zP?{8M$HVyw+O;sS0O7*~g8vwhb-p`3R9f18oBcq9No8D%^zCkT=Qa;{zrWn3E5#nH6lsFl{Z0J{+}F1UzDWBs%OlU^IOPxU#0kJrCI6^@R6 zbTU;cii4u04r&wfk^USKtcKO^XJiwuB)~keEf#D1RtIoyX2GuVsCMgj$4ViS zz_Ncd;PZ#l1&Ek3K^b(46l6ty{2yTi0UbOT<`moVeDw!-8wQiQEqXZRkBhYQggG7R zp`H`Sb{JPxpjfEJwgXyK`@4rG06depNKlN5G#GfA5i1J z%J#nb`ql`me9ditrr>?T4VzQ?ZHad^H8o{@G$AYNK9eLWd_zjaY`8SSrY@KGx5XrN z^!WEs2uP2z*(EfdkF2SE{z&+ifSz~#6NKY@=|Xw= zmmxX|8RkRmtFSW zBNV>mts|OZ@cJJ^oEY{K4c(R#^F2)_?sXgcrk8)QbTi;|S`iIU0aC0M;|Yh97w+z& zs|k&Jmx)X5NvnsF)0t~}D)wz!FxB2f_|D`8k#yw+@dmv~ zp~28_eB(Y7gzovEY%w^EZQ|LwkThH$R+Ox69`E1VRY06=HLQJeA zr_lQJRWp?B+N$(yvmVDfEA!s=`Cgl9vEHwX7@>~jAE?={~e*dXL42u1X7(GqZe7o{=&#a!MLVJSGEfYLEjlhDC?$JxZv`wdeYB&pY&zHjk-1OdHBT?qC$J35H zm}f?=6f-1zvKZSN(7O)>I9C~I04I$yM}URKESk~L5=aAV#QDr;3r{cEpI!`cwHAC5 z*@nE2{qr8QbK~Cm!Hti#=#39Aqsea^RwMV+a%K9$4C^YT zt{vbK5+n?(M&^G5`kD z#RCJfV%LXZ(2dFp288>+%5^OpYruicx`+F8^ZS$ zUS0t&Z+p_65g`ejw(XcPNT66n4g*@*+q-POC8W$^72opUv7*f~X zX&r3$;DgNU@ty9+d%IG-Rdw|}oJ@sYrI$7s$#D|MjnT@T{>yf6sBmYSPckcyToFa! zS;t=$^T19~XrQ%gKCI}!bRBrfqpx;Z&B6k^bOXdXPrw;>z2nXu6bNMD`ZqeV5dg*Nebp{oJN7( zx_)r+FU|7T9PX+#Zl{)Lf(PRg(^L@5q>*ZL&Zq>7Ed{QAUe{8!I) z6pzm(79(TlY$-lh5PN~9ym6~?{?Vo9k0q_(0|Srg`rv<$dVQlvX zmgg8OEuJ{}X;n_SV5{Zckhxo9tYYso$(2e4%^?yV6ok8tilfRWYsnn*h#MqB#CT20@jZ zG;Kk?dcpri_V)8FL;wB-(lNqnFV#;!=gkQyZO_2s)g$Y>PqOD#KmrVupgL#)?ix84Q@11>{AX7ztniA%XK_y@2 z7QAVt7$HWX;g=0()I9bQ^I&)vFO}}Umy6|;4A&K2WMVkeSX4A*3fcMqbb8u6j^+_%%888=o^)&lX+WAYGjQWF1AcX)J@k8vkHF$F%@WBZ`13e=X z6OerprMXPgFFfJ1U=Q^-4W+b|X^kE20*#9T>0kApIr}6b8AaO+rMzkEch=9K zcT(5?n>_|;41Xh5!B*tdgq9G0*STn3#MlCbO7HN4+!yPh z3JhZeVSFUs_rW1^Jt#`a|6fQdM&*4RN&u?+{w3aWj zsrV+OAT~YVHWtfVI4}8P(B>r^m{1`9KVaqkPqPOfA=(modC!bn{ToEr?Vme}17z@j zdshMNDZ&$A_J`h8F*Kk4Zktle)ipXg8dxd_y+Pplq%b1YF5tpou-I}tbhdfI8fXEv zm%4z`fGB0?!KZKstF8^m+Q3o7zXdF$DB`5E|G~J*eX|Vy(WAP5V#54OBc+xr?A06&h4_2lMr^z z-x0kQP;up*mH4>D-=HLGTMz6t@WXUNi08_Uzk`LMXLlWX#CuJY0O;^pr3<7qYz|cd zA~YNvQV*iPD085d`aw_!@x-bA{R$C^0=5U-6#-Bna>SHcA-M=(#z?$jY?9 zvmoadDDRQ;L*{VFh7{m0t@DY#QBz%bD{cIg7Zn(B~ET;9M{lYiXrL;P#d$y(sHI1n;>Jl^nRpK@aW0 zW`TDd5LP1Yf>#U5Jv1~lbFWSV=HtNntA70Pv4{D1{X)3TC(ZlsUi}0G)3wm6AM~Wq zTb{qKo$B?ikb|!ZNaDYu^zZPoA>GvryK1*Fz)fsS+1+*iH9d_Wq*P+Mp84it{UXjb z)_BR?%MJc`rJmMK@PTNnz1HOfOghMeLGO2=65PDPz11i4YWi?BKRv8lFZWse1mKb< zP>T#6U4(|-Rhj@DFoFT76*A52m3au2nrkN z(NIgP-O4DNN_DRMK_was-dV@e<&y4!TVFB5?Hl{pU*0hby=+G5wl%*qX#mP-NtwC zfms-0a445}2h0!wCa2eIyd;8Stp729OEH(%8~7l$&a#6-C25u&8x=3U6F%MfQ9;Pz z_XTn-p=(a-#x~wcDvx3OaRGKd;`->a&3EtKJroKVH3ICaHaTsrRiqyO=zxK0_Rx6z<;1Bxgv4gUb{ayo#iRhqf3FnrC+)9K05P@uQP{PAgmxiytp zDV}iHej?~BlRYN@19(8v!-WR5Jd=ObLi&-;7Qb`OrX^s|v=(B|K_@?RhM^_LREQV&0W2SAH;h!s9n!MV?Q=up_Zq*%}RaWO_Dn zm5{7Vx7C;6$^&||+?d>8+Pb{jAvXbQ{}xF6Agu7)(*A%ogu@O68}yBc9Tx`;G4eiJ zE7O=NkK>060u~%>B>YF=$ppLLiO79HB&)N14_VzGQ!LcA`TZT-0V!%%0El&?y9-2A z^&$VUgX0^>!VxP^WOAmpH>ZS*#jxNT>HO3bZ4r7WvXH; z;V?8jF*A#H@`VP;&=SKOV98L+vt3f|vrmi70Y139)#g@Laj;V{@gw;*GWNnpmf)&J zI4hV7NC*UXCpjZpD#(qLN^)HH95Yq(PMKBg2|x!9!DGNRB}IP;=S}RR&y4hWE7fn( zor8hbPC$T#{y+x0=iPvX8xMRn^6JhKwt*Iju+FYGRCy91usb08+KspFNe4n|v83dWWz4o=-Z=nLA=Bq6vgix{|WRuYN3N3tuS zAp%$IuVo{4Nch)mwYGySWDb5IBJJxhrrge=u}bZ>`i@lsOm)*yL)Ug+3?zJ*w@x-0 z5ntVqaOWKpELR#>>MYy0$B|tuNvbV$tKZqUp0KgErzIOER=5BD?%vKPCsREfF2lr5 zZw+^WLOu(;VGHqf3>G_!1sMEzE%JGm3MWXPDk_dgDrthJ*a`!(QNa}HqWJPlvQbdv zjeXM8Ab{Xd6GUjMtE+_|heEu8juX=~f3Fnb^jKP6zUI17GLl?zsLQfBlTs_Re!yI> zl|;gN@I}gEc24B+W-Y(+wQEwxjK@Kp@|1M}EJ zQ(}8(r+unFD9ZoY**%PeLsY8a&dzkcnG@BICoji$?0gBX(*%_HkDA#LWXa7Q&Elr&DR zii_?ux2(sR?_NAhtC(3sRF3CAv!C6jqv=JEjKPggS2&+RJhzZ%Oy;`msf4t`h_sfq9FIPRtgXrg7RU4Ua9uVlp3ba2j#Zh5l^Qb$S9Difs z_uUu?;ZPSM)@{h*w1D{*2e5qD6*DVgJ1m2<*4X#Z^Rbp*NNhwQ^*S{I+CiXH)v~dW z{3pMCi$Vg__wT-GW|xi+8&X)0xbB!BXCBK=Z@qb+pHAt9r{JbBnf=n*^ss=dC6! zfc2A?TzbZlPjFChac?IkY`Hv%z40<_NRP&O+aNWr3ZFZCxsb?!M;I#Xf==HTT_njv zyzoT#Ry&mQjnD3nvFslK-qnjrMrP(ZNCw2$u^}*{9f#DdhTCmRs&w_Ilmex#KCEr9 zvL1&79LO3ch9O^k7Xr={NN9XWfGgTfEAWe@xwQep{csvrdeLh7hE|jl)S$m>6@okV zH9o#q5__|9y#;10Tt&Yq5eWWdW8~(1UjcsgWjc2H!7)g!jsQ{}3CH*!h5@yjwQYi5 zwF@#%lSRl}dqd|759?Wv;#*zAfgS#+oo*eiyG%D~s~#@kMu;oDrn2cVMG2H? z%@>s!3g4K|;y;lS6DSihuvmx06lXYt1xX%(JLG16Pq}w`qT?yV7qND!f%@Qm!`er` zmMKa5kzCedvJxx2fd zee;Kp_&d`@>VVo#OXR5{hM)*w05E_r?=w3*fAlS@7JUoGzW_1;I@G77Eu&R<>b`pI zs_?#CrOT2w*`vrlS5UPLl@VsKzJKo?a;ySTA2tfv@n{W?-2kpT9GYfdw5yIn!HY(o zwU65-5n}2G6;_Q%HEvXTfuxmPhz#}$@{NIsA~&-uNy3K`+f|mGc9qsigKf+FpRc;F z9~2xfi5Apx`c~fya46MrV*fhI0Sk$%s+1{4Awk_x)LM`=a-Vc+_3#nGR z0wNk&`6jW&Lq>DV_v46X26wGA%p0E@-!QG%v)u(6NEOgRtZ%XL{I!StuvjpX<*-zg zGN7Up=pM6KE@!VN)cR!IU5}!_+{MIv(ezero(yKG_q9m}UhD#^Rq?0?F%T9#kOgRN zP7ZT3wT5 z7!pi^+sfzkhy${^dMvprXkwb%_3G@SurvLWl}j!^q9XKo1zhgkVv8ntg8t4oT+3R! zlX%I+Puil;sbH{kN^Z>(D&l zpsJogy$5Aw7Q0g6@;748oCpHOL+SQh#%9RDCfUM(;Pxb8IKq5EiZWQ~7I=iq)WjvV zT{x2x;BL?K8!|SFU*9PpaX!r05uhf3aAg~!HKe@(c!#WDkWN~zm)NI(^uCTtPW0sg z&hJ3dz*XEkyHuS?2@E}uzzt0tntKQE(_PU>?h`H$zG|!e=DM+^rytQIz0IOe$iiv3)@S|V;h zt+Q$ujNfnM;St_qrfd(ig4{u8ZLSOWQumaUXo1$nA7V0)4>}zv2u?3`iaaQ7m9o_R zKo9)Q;X3wi)>Wd-OWldg&tM86Nu3rPM4XJAr>-Ye z9j8@yhpg~;iS6RIq=Q}k-6_F}Dolu&H%KO_Tesi!o;-y(l#|2~6Ohe! zkq-rjDuBnjOzJ3GUb$y{pJm^K)$ZiHo|{yg*P|H#8v^MV6mASVVJ#;gsROop+`KEO zn*o28ogIZq%8j+rimpW`o9qg-Z}+o++mMh>jPr)KbX{;8Jig%jEG}n4#J3G( zkG*TgO$+m7)%x~D8{y7Tw1`6K4qsfIzQm3S$oy)$?BWjgDnK`b7dh%)^ge53ueJ0- zN;+`DggPqxNxBo{dq^d+_wCesSNluH)$ht`H3SI``yR&VxQZ;iYk+ zme7jamp%DF{Yt)C3A^M%mq6yHre6@;MED55i)aA9^6$ga;IN-zI^*YNMETvb`*z7s+%P35B9uDAQ8i3|PXD^dVmc?LPh)VXNIe}{&Q!bxvG_c49B zhDvS}a?6{$4EMp!K1e^wg+{Hwv{ue-TVeNibj2$;$z)_sn-)#dAb34dYx?048y)L0 zxy$M%JA6B@AgO&^P<1sJ*P3IdF%>td*2qk^*Vx@!yrE@AkYlLDK+>PPF`>PwXCcTuY8w#BFCQd zc8hlI6m9HnXlyxkesL0x6_8ojqfaX9KW^63tz*`){%}uEf;DBf6^$J|ES?Xx+UCER z0&FHteGEQg;bQ)P`G85m``uTLrLfPvplX1SM+8a1b>7jd9RF<-qcOH%#FYUluAy!3 z4HN-Vz+yp*rtZ_TjK_+K-bmh^kwJ{~B%tT`8t^y(cpvXpGrJ4CC866~GBr>JrljZ^ zs@~!c$3hWY1Z>bT2zzx%W`>l!y1KfB6Tu?n0kz9!2kU0Y;f0($NYL~p`eh8=AEa-O zkm=BoKb#;WXhTB-vR>I%pMifxybPgGz@XN?(L8gs@-D5$D{uipD$H9D3Ry!>AfCN8 zZp9uRM>(|08Ii(bt}8=cODlxid5jo(+=zkp9X{Qfm?3DBr{?8R!|fb+Bk>2wLe+n8 z`C)6X12%_?pygKsl?UL{8_o)Pvd0Q2-GE{hIVxdcU&tz&qIVu8V5x*-!NPgwHp@4l zd72~D9I@8sQ6Sb?K$Lr~J9ZYJ0rF`PIVE~6^dLKo^up-q>Azi;*m?-rYZ&T}F-VI5f!+FCqfR+z*7)hfi`vBImcY8b!)vgI!mY#cm1>AF95)-ef;H;%S#kBmi=-KVpJ$EruyIumBtkbK@?YkdWUQk%V~ ztg&*7qtsjgHTv`J%ByzdvCtqWI#BD@TN^G($LG2^okZoVX9x^#EHcRNCVLfHw~KnK z!&W%!aVuKdaN3Qf=0|9FPNe41`p+!nC2$o3LQrW|aNOS@K)HAEvmDBT8+aps_k<>q zjsGyNto+AD2>WP(?EUuU|4JF0FV$lygDl(of(un!4H}4}Yt4ceA7rr9We8i#6xqx2 zS?C4s$z7XC0gfHyP zAj8;v!?saR7|FU0_q}d#iI<)p@7MoSl`c3|zO&RJwyQIFpyp}ss9<~a1K!BwTZbo= z2uvB;i+GdYG6aZunmwX49Z~l1SziD|tvrhpb1`v<$$=T3?doLF^o<<7t6lsO*3p1B z)7@r{4=`$5Wo%)kA+B~CaoLm)p*CU$*Cz4Jx7+sGEvI|)oC-G2ME+L4ND^|f%jk2_ zEk+qw!7hO!Gj-^;%G`wv`-LnYa=%>^J131yh3+I7`Bqh9yM$U+Rhim(U*j^`o+}gU z75?Ha*DXhsdrE&3safFoK^333G=wU&%E`PnOU%=XFF=_i@SyNOexX?BG_!LKp)LME zZJl0J8N;%d`<}eO)SjHow2<1Xv9Q{cZcnoi8?>gn9(%el&zy2t3BGQ&YfEoSD)#E_ zN$kdwrz)sRq>VsZ2YpFv=cx#zGd;lDx}9x{dLwNVwp3vmDVV6=5~Oh=lo%-_D$I}+ z%#D^FKl)z3oK2^1kpW9oiP6#!P@ULn(XUB=clWazbz)McOXq%jImw(92CIaZR?_Ps znJnhd%iOLt$8m=RB<0>p$YmY!(!`XRUcyz`XEW^#U~k|V!^-YItb1-5tVa>xg-x9% zH?OuFT6n?h7f|zUf5-eF#L@gjW!8Nh%jeuRpW1X33XO$9c1#%zQO(KYDCh0HCNgZQ z+3G$_i*A0MQjSYx?hL#wY3P-2YX4P+k%cN)|7i*1db+qENEC-y9M_nf_*HVXPOzll zHxb2xLkdL`YH;mwY4>%_scT!z)k@JtM{qm*X>xo=8O*fOh$HEDl5X`dYpdWXvGuQ? zsBL$Z-xCde+_wEgBV;V2Nu98&f2K5Q44WNnq3L0*C78PLSG5rlYN5|}V8~t2l@wW3 z_6r%xd&?QPkS$zNYR2}-HO7qvhZA-e0~=;wNom@eSO3PhY5m>!Tvz}7)QBrXm9vnGV|_?Qswk`UMX2-(UIP@4+7>(!!L987;rsjBytD^eKFe3 znYYCxesv#nW!lBrhmS1;L9gsFbioLJxQkPZN|Ff_(4HI&atIT z4gW)<5+h;Cvf?b2RitXnyE>AXJ&x54vQM%4oR+w57MFB$;)_`Crq!NgnO}S~S~NQ@ z%R1Yolb6qts&&k)!naPhGI5_^?nF}~i}rk3Pw7Ff?!~K1N7t>z!q?YY&tP-3M2HQq zDF|zJe{@j5XZb@?B>clm732qx!%w73@z7t*V4S4Li z9&!8sRcP?J*Is9uP%leqMbe+vvzst~p7hlj_K0yAqVqXR=&#>Mg1`Rc;b!!`BYonG zVgAsYG%M;?Ki8_QO22Q(ewm8DWFnr(a;7_>qjXxv3XgM2+;AKJzD_caAs(x8+7r8p zez?ep4Zg4PHhqLn;l#=0CvGRmDddMT43gQ8Dqa0bJQ9L^W2012K9`=gTqO7kP28Ss zz4dbSY9Md3*j<&n@uQ|={2%d7#;OvAwf+^>CQvAXmW^5N!6Gl{F`v~mXvSPa#v<5wPP z73@`zdd*v~3)$sPN|{yS$e{m3v_tUm$cN*Ds;$cBKF3}Sii~HtFC=Q{$IYl{ku@FG z#m$*bqTu5{mdG(4F4x9QMInzde>Nj9!8!G)b<1_ifL^bNsUXa%=Sqx#Ack#M_xvPBYqsmD85qqk3|GJyLz8~@nuUa1& z?VQFer=Q=Pd!ehe6@S%6iqYP;D@A9Rx|jA+)8f^~OYupHbWzMrdp3rHL28MX)2`(H zVK19hOOs2tmQbaALRkk-`y#v1q!^C74d;|hF0FOj*0M%rOU$`<=c_!TO>U;m#w%1 zZsc#xI&2wzjh~#MXYf*V*PRGIUeMiim7eJiB?pFDrBAw5*!ft_jeOnPeL)Xv@^;+` zw)MVbwhJGb`-G3+Ts1Nl4Nxr+xbm?1XZdF&bm zgQr{7=7O|c?J3@3*=(%*3APBckUW|^J=yATUwxCIQ^v1eFMm`ljS9WpRWHdHu47ck zA3Nh7o<`z$|J5stAt{s8tn0;+r_NFkEQ%G9#A#dGvyp@ZP}KR84-&omwg8(c&Z*gH>CS0xKpx)f2BQ&U-6Lh?iH;?T_AIwHTn5cd`#gOFmvuRXsLLS{j%;U4q{w zZkxMI)%B^RMWbfwdZEkw5nH?G@nQ!z#BVH)%9|kfx$#`3Zhbv}zwG@FYRS>)lKDc5 zMLE&F{th|TPqdtzN7HX-W52^d`~~k94vfBjeOP`5LQhvpk3A13)var;E!rxi`#uBgYM;PvpX L?42x0ZIAy2=hXN= literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/msvc-elevation.png b/docs/build-insights/media/msvc-elevation.png new file mode 100644 index 0000000000000000000000000000000000000000..7404b6f41ab81471e7c4ce48cb3a9437b956e59c GIT binary patch literal 15758 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 literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/terminal-permission.png b/docs/build-insights/media/terminal-permission.png new file mode 100644 index 0000000000000000000000000000000000000000..4baf7683bf5d676253dfdbd42a29737d37baf4e4 GIT binary patch literal 10480 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 K`RbPz@BRlQlr&EO literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/vs-account-auth.png b/docs/build-insights/media/vs-account-auth.png new file mode 100644 index 0000000000000000000000000000000000000000..ae395549d004f2c89e83661937d17992ac2c6f0e GIT binary patch literal 13967 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 ZU0kIxi>pu_0w0lq6l7GSE1|H^{{!uu69NDL literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/vs-installer-options.png b/docs/build-insights/media/vs-installer-options.png new file mode 100644 index 0000000000000000000000000000000000000000..6bd7c59e9f80cd20870b271028a142f8f001b36d GIT binary patch literal 19853 zcmbrm1yq%5yEVK32`NE3q*S^aq(e|?q@-Iqq(MTuLApf|q)X{iNI+|*w1ipWQn6klE}X$zR^obf2GATnohg%3U*JF zEB_7GGE&=4a+a}IiPd4zG$he?qD&NdrrbipHKfXCnHg=0a7haOz=aPp81iA>n%ByglV;zlk?PY`_cBJjMJGfuM{q?g%HRnUiCBLq=Wzb#zv=?!J@w{ zD;)u^_Nfstgb--(5{F>Xha}_v^INWpMWf^*uD6KggXXu>$aJo>&tH>Qf5D7Bvi7#6 zp=|h2^nzW#4)>-)T-V{aar`TV`2Of8X2;K_H&e+Hc{TRvx*Um51$+)38~C5D?40^} z{W%<8sV9_S?f8AT{^iS;Afb6bqO)VTblTU&&hToVLtBHVhu?%(v!8g)x_^-;GyU-? zBcgX{Pd_5`IcC27)bzB=LI;ZdOamdG)u)cvX+}}A&7K3LDX%SfBh{Eg9&k3w8ObTO z@2(Z)nGK|JqzgIGjFsy%acvRJUtS!mYiWhMZ$GED$V|en%U+iF5R@m>PswE=9-+a2xq2bTb^p}y5XG0QaN=7qGj_rRuHm2*Zt&f#= zlC_`6ch+c#S>L#EqhTdge`i?sTK=n7Xb9&io1(=qD#r!)wB9A@r%%OIgcq-zZg$B` zUdc~V5xttkr23=MuCkT%n)m^M|Jn4sSx*ebo01Y##EeVtjgtZ63x@U_0vVrKv}f_PI=(Ze?+797plq-a#mY_HT(YUI6=;x9?aWKDp51-0-h z+N4pCl$5`3{GOLsix6?_-Iea2KYwD=%s#{}m zwe8QQ)4qAb!N`N%h2U%brH_7ZIt2_!u0DUj`9ATc!h%P0J~OtP;p%#|!vLQfY|+m7 z{?JknmD6%?CInc|rwl%h_-mxKPyLUZ=S};QSz69ZN-I7L=GbIM>Fa@! zccGDj0w#^u0?I`r5u*~ffwf1>hB%+~ApeX)jm%KwH-E7|2czeY;wkug-d>iOHN&=h z>2Z_uXNTK&t$v4y2yG#+pY@=cAIz5x#~l!~pD=mUlglFi=1sKspqzf4{o>HT&o8fd zJhu$qzI)eKYI*oQnrn~Pz})=i-8gENN|`1)Yl6MAKj{K?sRs7Ec4K8m@m+#hc<%1* zQdSF<@7|?w-Em#Us%ZMf3U^Gr-Fi&Zu8x00G{kZs)%0j%GE9m%QjXiQpIDB8&~N8G zX3P0-zU)NX(>s?US&-W=s;dbhT9M&k9xomy9gG3D(0x=7FE@K^ekYOg^}T~kmpfYx zXhL&duPk>gv@4Bb^=hr?Q||9B&DJ~7IyS8pzVwMwh@%b~UF%wkmmFlPIy&;`GUHLo z62uF*Jeyyscb=|y>Lt-JF#XqFRZVX;EIh+OAoS}UyA^1kT1?<0T7Lg3l`0GsasTzu zXzuIR5cmj+!O?J9|A^JR02-AdqO+sTrS%`9@YdRB(M{6mjEb{>i`9Vd)AJV|gPVVr zXfHe96M|sZu`kb8C4)Y-A-5)--{yK8wFpByI$~$iIuBWNyv}!fPggG>G&^s2&IGxy zk1eL?7%ldGtXSEaZRRoW!5y&KofTn{{QV`q%56=Q#Vw- zA<6i65!&UCLgg5O)L-4*JtT^}ay{}2&C>(*&NIzoV#LDU09P;a67UVyc~40p1u+mC zQ}1vj&nAaXJmfI1(R4+TusN@n*Y9m|J$f5)OsrF;tG?4Pc`e{Xw&i%v7ZDg1hSA3L z`Sa(KnN^A2;9&L~m8DdD$M@|Qhg=i(g7#ByuNFVVhOa7J=Db%?GIIG#<(O2mKh8J9 zYFq?ZR9v+)G!FQ4D7;pXgg~f@?Ow_C`hFE2!sPeC+C;7OHH~88u?oXzuBU4cPL`8Y zosVZdsp?Wb|N2&XS~n=XgzI1Ke^_d~2sK1bON>Hp&koZiw3_%u-6t`x9ikVqrL(T- ziHe}ZR0x#WeRJbx501Q({U2FQdl(blWX3VDW`%`}7eteL= zIRmnhu*1&OcjP@i(nE9@U;fs)pi@fcMu80#Oqe|KUd;(#8A#iA&_DeW?;ip=jE2~O z;{0LJdB?IS$AdBq|Ay_v5ELh~pTqgW5acL`YTcOa%90YVgD(m$N0Zj($Ty%S?#w(H zTBMpk!9bXN&J-w2M&~V`gG+a=AMS1Xwi>Y;wUB>&Xap&pGH>;AUDRV^0>xsm8_G)0 z@d`Y@?5*qX)7lPhpE^htGMtRJUxfbpWh=JZMRf8*sQoH}T+p6eyG+;gevXmHq-9IY zQ^q94TVAi8X_?Rlob&h})#f2vDG`%OSB>Ss&bLZ`62wlS6m#{v7$u zs|BsCH{!*Q$R&@q{Z{XU1-`Q$qM_r%zXPAy=3s%bIN6%InQOw?vLka5;Bu*_8gFRs zGTFS{Ho$fYSY_XpEmX|t}WdIlS8c*?<8wu*x=KKVd~JD_+> zOdMiD81Y*aK~E%Q(d@bXgCu=m1)YR0YT+WHNHbgS{1jtobGaN%! zYBD1)6vV>*DK5$zweJ_41`TRPF(oCepRz@gE*Bsda4r;;0@GNG}_<CKvA#uD!1-PEO-)50&z02qqq7 zNNGhA_Q!`F+Qx6PxlK{+1+(&%Hk6@le6E@`?F=)Ws4|seOzCwy&W4D7&mU)6KYi*8 zAKp%p>i(_4W$8rFb91VDKu>jb@Xj_e{{dUXmLVeo2~|3R(0HsqkzeHIsu>zO_!vz* z4O8N(^2b!NZzyZkfous_;E5^S^(uN^c!fAZ4%zNXy-Ny~BPZxNRy$;Ie zFks-)$~H=xcm<=^bl)#>y?v_1G%Xe0a{w8O##10^G?v39)DpNJ*otF z*CsaasoUjXc}GQi?PhITiv70u;aAPm%kpQ#3-5zh82m2wduduBPAF4R7Fr2h{EC`a zyKE(WIuqz+y_|kPF-J?dXWa^qEJjzm|G6jBA4(`1dcpUmmlYL*d)_Q}VRtVBcr)H^ z>^`qxVa1{+invc0Sm!i9*u1V;sI)ew?0&kEwzQIF+|%N{@1=5HUO)E%xf&mXqXET4 zj;h?j`-s~>Dw?jxDlT3%O_Z%tWHbEx-MG=xwYS2KUybz+Ygh?!WRNQdaG*=mrR=NcpHFgStbLjm_>`Kvig1uV}9FJ$5WJY)(C97%S5=r>sQ; zA`>5pm0@F@Pj*b-luW&ry0zt0*N2A8{mV-|>l{nnF!pi-tnzynJ`YYKL;`qLIcn|) zMU~5xW*PfMqOEIbX^C-s=!x?Gvu^wfJ{^{Y=K#0+&$UpQ!p*2kzg7(weeK?0r3X2t zOCdG(tA-oW*6SRHA-Q5qt;$MxZ7@|lwy{}UL2!F)=swiaGCkg!g$b=CNW^hQ*pzK$ zWy-E{KEQvy-H6K*8zJKv2DxWb!~E9~q&D6+b9=>$FOvRw^s=w#5d zE%^3>)E!=)O{OM5<=zr!&<1yWTID?lCS|cYTv^>AoVhA1Dt_?2mIHuQOYLRVzCk#$ zYQYDSosoK(al4UG3{~Ts^8m?b)c$D zcmDTS{YjnwZnSZF+i377&xaF@1KNa+lQr_3ACPtL$#yHxJKe8Is|EErzFUoAD|L3` zoGp9(Y+<`J9&zr5y-O$jU`S+`-RV`gYfaplU10&|Y2-INT!#Ych*@$}B{Yn_`OOW$;iS5{$zEFU{M zVjyBD_%I-H6YGW}H!<%hAaUF7pY4D=OfJFBiu!|P5tgn%6tt7W_-?bu4i4SxmFAiaf2s#c^{n@L&?4akATYV^GMr& zFDY+_CaTb;a64QnTR2g&1sNG|g_F1Q&=17`&bOp|JbDdLG+Ly(N<;?tXfDD*lR?J^ z35XoSA3uKFQE)HGi|cVmAWFk_+u3rxE)?GVPGHU}DolDU<)|@q9qQ82`(Sisr2kuxGJw&jq74>;?@9dCka?2d+{z zX^#~uv!~xE^5lmJB=b2nhi+A1(Qct?o{`$Zb_JB0Q;51aAq`*w;7Pb)(g6&_v{#a< z+rJ6j5}GFWpD3!M>}syTM~Ad0s#R5KS>OH>IlHy*3B?EWz{9v~z8hzNDY0m{ zePiRH;4d~sIbl$CdcUqG3kV9D%{IBesjOTj5=+P+=CK*MB?g%lc1TgZ7szj@$NzYk zuI1!=H1er(n?Sxr+LTbO~F%#RM>t3Tns|&P;Q8kw)St|z9AX4%*@Ox zm!+O;A{->NEYqv);YRmf{+Q?m<9D_FB(L|O(U+vvTeM>)*W-`hj;bsLvE;$`Q{?K2 zd}i6YgyBSabYj2n7#2S>ld@~cgmx9FldL3Ap?tWyLFHeBgmqe9Lm02)IGl^H+3o zSo8%J%vgjnSS%FSGC(5U4|_&HACmAqf70czuYCUP#s9-yeH zPW^U&@rPO|(amK=^$J+@;+qZlGLdqqB_#|wDg)6-&N8S5TL!9F67mb`-hNgrbW{{< zIp8#<;r~IXg!CZ~lWTBfey&KpbzQk%X3+RtmEENBaD9BB6cs_rWn{1Gw9=ol$10T@ ziLE`ICK<5%y*q4$LGV4@cpGW0I6N|$B}K^aK+xmfxEs3fY)SZ)g9~k-F-FKS6e3<) zS*2DV@+9MuBz&&U5Lr&^$jot%P4g@#-j%c+BT4At<@8^7DhzKBx1bE%n9=m8Gc^Rh#$X zd$k%FS=CMgLxzV^IJ`+Hqu9u@PImfSiBH`zQEk2=PtI!*vA8Pkdt?HHX4nEM0{RXH?=-8GFD#p5zbF>WY&iby#++O3 z8@}>oHQV>hUJR`MIiBwYV2Eoj4y#X$z3Uz|NdxPjRf8w<8e8gPK}(d@Pv0;+Dn>F( z0q7eL|1;c-x7+Lm_0^|uh9tOZrb@p_Mu|x5jlgyXaeLUdiSMG!b!Ciu?5|gO20(<`{ z7(;*F_R%r)GFVPX&J&-HSBNJ2Q`mU?&%HV&p!Ht?hIwKAU$?{bpUH#d(~X%+bCEgF zFZ2ISr2ii{_W$c!`AgX)C1H~2Dp>R@1!m8NzjsID1u*DqY2CVh)%zVyqDqmk`x&Hb zi||&k8be}WNeOaH=2u>-gu(kJF}5kh^`3rI4fKs)HgNxBH^!xzb5!7+_nRJB&tgAY zL0AhrFCerl3~Y4A4DF}!@bLB+Kq`2)B#PxQ*Fpg>pchtZSw4Gwy&G0CL8WL#9+tvq zauxdd?*La*`zk z*8h)BCoh6r!cQ1JGZGs9ztV@&N4Cu1Rwc~zK+C_dp@fZ!f$c?nsFT+|tMWT_1-9s- z*3TY-RptH^(SI?XBPob3A3=!aRI&_Y_1$j2Y|FRb|M3~o(VNg>#07asdzrywjsbxH zm2(j&W}8eF#Rv$WA+)51&uYvTB83GdtfZUu z(pYk{cv7DrPpV;lX`GyfG2MO{pWWqRL_rBUgly+eT+$@ z7IyA%UC1+?zxlisI1*RFIlp~nSV;rUK|7eQ1Lgbi5Rk8E#1vO*O{W<`5-whDJX2Gx znY8!Q&Jv3l8qtF~RiE9~0;wuHtP7eYvSN_G^yo#ntsjIHNbO8^XA4{Yvf9k7}5<}x7({zV1G+8jEzKL$z+ zk)I-i?KyM&m)gbk@2!mIU$U6^|5tVFf19}^`^`(7O_w;X>hTk&okPpWTta{OSJ8N$ z|DTO8(Vr+O%dtL7M{c8=)ka=@;rI*~^fC=Dx8~EMcWm2zubJ5FDehc0 z8iihI*4RD!qX<;lYYq6b_x*XokWHJN@kdd^M$E2-Y>${);AikG@xx{P^(TRTQz_Eq z2@Aff7McXxrydhqxs@2}reTs_4&sKb8 z)}foe6-(>bq@R4y?ilTgT|q^8Q<7PmKb6Idwc^rqucI6<=d$v*nDbuRihxhptfK-$ zVnVbC>5C1>e!tDBcL0BOyu`v><9j>VhQh)I(LRzcn^lu^aLa8Xb0@9aikW4VyX24>4}^W7o^1 ze!ALY^HFCLXBrON`JTiO6FIIKaEq=k?fkw+_K!2iUa!_RBky$k;X>E1!AsiTSYEe$ zvwxBnjb`jK!kiU0v>IHo9<~Rb@>Y(@#2xoY)!=#x}!PQt=nXsR<-XP>-WnP zjbG9wcfPIeI2GviH)^6d$@6fD&Fy^Ttt})iMl&>Z{S#RWdESt9#&h$$UYf2gvGhhz zo=`Hfa@1X8WFw1%WO~tbOM+T`ME@|wyIVdm{%FqN`uir8M|S8&yO+wd_b=8A`d4MD z$)~T6N=%LgRdJkpO-fXmkMhSJH|^gm8pXm0P8avBYxyWQ!+ECUE!ka7LF%W=ZT7tH zmaU!L=@9#44|$z=J9npu-j~eSP{S|VTMXJNw2vdiNP8->rZ>X|R#17xrR1BevsIX2 z-!2;~AG#5U?h`M}@U4ufm{H;*1UFEOw#yWJV~192l~k8)O>6jr2Ud8st}~E!EQbq` zMpMufg2a3O)Sax*|SMV;vo9av_NBhgU)99Zipb zeSwSQ_^Jz2-vtfN-q^7*x{LTW)sP8ZxU;amC|SN5mQkgU-LUn#-n$J4K`NR2g#7B8 zMw(fldj=F@$W5`wv|$v%`Q?C2h)s_+W14ti3tu)iPFBTLtcxkz*G|4DVXges?cUWx zf^*+>XUIJ#-GW!oxr0PNNQkPU8t!0xePuP?knJd7H&b_Z>7#+<-P|`H#-tfzX=3l9 z1kUGuKYdeN%wzfJw@f!iK2d29$v8^<9KwL-zR{GYjc}rFB=?$<|DAC>+DJJsRR#Og z2whKorM~Ki1{DsTB-3P2Ph1;cl$2Pak8A2SX`JI~o4S)dzyyFT>&;Iopu}uCexHV@ zx+pn=zN?OS~y-^t#1OlS7OEbx!*@=dSkj@ww4_6MKw?8j;G3C zy2;9Y1()a)Pgi2(7}BBFy;hT8-6vweXz@M$8r6rrz z@cMQ4@byn&?_%`0pX>i5(D1~4(7iJ4q4Q>BL)c;jr`096*2FfYf_Rk6Fr}Q34%5S< zyzJ32z#kDNE1>aZM)?PF@AK$dTDU9M9)_({C)w++3|ZysX*s%X7Zw*^B|udb(VV{=jzoV}9HFlJtCE6mY}XYZFS}cM$u`S-9TElW7vA z^59%PxP51Q;}58`kPU@)23VzMbzBea38FRyFj7Mgb6WHGRM*bqY8+?U zKtcsa$iyfyTKdcY?iJJ)p(2aEsN}3DJelST+?lt9eBXMM#4%4+&f8QwBfG`~a2Q%F0KVmt_RLvuITE$ z+Zm`kWH@Xpu0O&KYtl+r%YL0J9dp{8ah zo5Ja9Y-0k_UinRtk>N6hZ(qM&Q69zZ)rTVDU0JXE{i)dzqv^ zvloJs%HY~)5Vqe_p-|yM;63dcs>ht_@f>q}Qdg;t|B*!5>if9&C42R(cJ}t4D3ofd zGZQ)@)&zIGC{jmKnNA?QWq)VHUPi3u&hlvw#epGUkl1qnAkW*)@U%KFG?Gmy4;^^J(r)IT1x)+bsiTMQt+}EU$9owMc`8`WZoVVS; zWhq(~T159Q@1H6y5wbIJ<<=XF%ieOFwiVRLpE!B$#o3Z!v($}&X2B}!&ECs+kgoUI zwsw*r_AXu?a!WD^Q?IRy>&@obYlM&w>upC0#7!JtAN9Alt@Ue#p#fBvwU*UpZ72w- zt<1V&@%OE!gqr8OSG31<#p*X&Ke`%{$nzAicblv84(0e==y7Wn99UO$%xC?KpSs5w zzlAGf7R5>S`;|w?0sB~H8rt1Pb>eP*lD78yMWcQnjQP1e-!Amp&t^wv<@ z$aFaUB#fms8_$9b_y~Qe4nvwEfn#~dnTndMY4qpn1D8jyG0srY^BrFzfux}h&tF66 zY5sqJ*#AEx>BCQzoB8uMfNfa`|2wbqn*?B+y!y$!3w_9e6ClI48>}WX<0~V%B=Nn< z0a-@pRQoG*)c9E!g5taZlcqZ9s+RZB2HE+*&NQNO#vnw#jh z=*R2z2MpJxXQyX8GXHDU4@sr4FvAx%A#sdu& zOeV74bOhWRLc9SNx}57JZld6r82AO|tUvw`)15pRs3_h7j(`bW6K^YzR++p@V{dA_J z1RDWSnK~59oT!LEP~&5AJ!zf=Oc8PSRoEtUh&D%N;%Csjx7VEh6Q*YPRQ}rU=rc|o z|0w}$tfj@lb|t>oyn*FGB>FSxcz~YwO~vOzI~QMG+;Xk!f6(*jZKx5{_rc1mov5J` zzf_7wfs_K&g6@=MdL{wz())``uVX#X;_{q79zA*lXmrI4Iw)Yo(MG&0sBnh}1QKU9 ze&LVBAPNH*1x*3A6#?mo_c4OU&8A2ZN*179!gHx8>3(F5+GD|Hg5GNPoAhxJJ{Kw z@p3pMo{N<2CA0O(R2}!{xrn)n=0MwX7 z{l#d)3vI%B~-?rpdkXP-*;*yWHY)UXROoaOORfOq4$f9WozH~aJQB&X@g zswYnGIGdTuDw<15yz?-#K4ZZ41n$;-Aj3FM7y{S!8|cRM22UW-VP zZ+t!~*GMy#ONw;`iW5rU>dd4+APFE%WCv$f_rb`ax1|qmFXN$KD4xR9;G_)04n-%d zy9VA#Ox~0zT@#P{91fU`H=xj><><>OM;xF%jrb zPx4}7)B-gK0b)IgKEP~re$oV8lY5LwVUxjSANGA(L1|eyD=lF);7lu)Azpcu8ZQ={ zcz6Y;m^t|Ui^c4lqX5lIAph3Wcgq{tpuDPZ*h-=;_W+ zo{8)yYuxDGTC0PChB2xEyy^XxEX8m$487hU|0gzpLZrP{isv9Y~XWDoTEf+{Qj z!j2++!H12&w4M01We0b&;Ml~(V{A_Qr;SX^ zLJSGT1WA1b1~WH_<$093IFZ27*xn!ku&G#gkp%_cuM%_|(j6l*yATq-JKO|VJGoiZ zw^lHoXGh8YFyc76*s27?w)vaSc{FqIAr;>t^+MYInIIlheN?|XJ85uch74!>hIiZ9 za8^`b23a&Zp?3?q2qPLdh&(Nx^q7u@7d;>3`w|p;FOo&(?hr3qw3Zw5i)u|p z9MS1&tInR+8hSl*uBNLxZQ~OUa2v`JNn-Ej+dPsMKa+{DseNZR?onLyp=W(L`CY@N zeQ`sD1%*#3&zI?cgpv$+y?aBieZ(CQM4OtocBdH1KdyuPuCFMGIw*3(55 z3BFe*tKRD8uivcAW4|$_38q~bZr?Jri?P>=wr}`YG^^^}m34Gm9;Iaz>0=cIn2ULN z#nBtX>-2`Xw^QMw+{R*Gs^rnxA9?W@@z{4iSH2P@mCJ15uy5YFR#97>Zg2C}ZvvM; z^|#r$!Z~g!Z{>IvU%JIBy_kBQGKIxmFRv)Ia}TixRFTJ6>mrdXG~Un9La=(dE+Nu2F7C~UtgiQdh^Xr@`u$1JTCd{TOKS!n_O>NIkgo3 zW`M$}v&~73PgQZ-j=jcwOO;gu3q|V8I`9(RJu>-ZNxj2fEJ;H~|sQGC9{ z-`Ix5LL=$hz2qVxt8UnBnF+D>YKASOmeKDFPYVR7lmw+DuA2V z@z^CBO~t{MnUzDryrv4XzqGhLSztT=n=W?ep|D|iU^^KWWk0XuWlGiPCT zvaFC!Q|2fJvSXY@=Y|IXAF>mcDA4m!IhwJ_kKG&JTEohY&Og^7M&I=^FnXs7{N|{H zI}<_Gk`l0vFKL!Mniqk+{O-6uB%P4pDkuF0G1`Ngq=0r!74wHN1J@=+)JxFT7*g(2 z7)j)*8oj#(6rO225OrETtsgf%$iDL3DrkR2m)uLigit%UpHkPN> zzFC=>fl8Hyy7=K}U^x}cQZ{;cBt{dz;?5A_hKHUnwv~gOtvh>qDNBnIe`{Hwi3z5y zad+Srz159&y;^?qgw3f0gYd=!=nc40XaCRDd1;Oq7e$5!ug=V>btemEqN*kL4U-5z zc&gRJc0v=Etzvgm0=8mRW$d2&LoES&*&iOwiAs!k z=2k|PI!1U1;9+3oT9<#N{y4KInB>9nW1Ca$QTO#jT zX5nt$^wbo9QoQx$`zbw3E+jJ!?Av#ThBMbHBk0Px|^X;vR-j{ zxxhgtmI%$?d6+-^)Saxa>gqm7(p`_-kph8A>Amz;PSpXvFa79sYsmqQ6PaqGdrzL! zw!E31@X}-vrpC`@AVTvL?6asD(l7&(FJJAWYgt6XMG4@H3Q07f@-?M*Jeor&{vz#8 zqt2m)X8nmXY-`2+y4f3Q5Sy`>Hb+n2_$4v_#?G3{?T@iu!Fe8%+zbp1qUsXOOo8!D@vrVz{bFMg5Q^oNB@dG=%QiBi+UKTQn9s}(6J`o%o9D6S%u1%B`rI&mD z0A4e`QfMTZSFr9OC(84LiZ?$&LZ&?@YFMFISn-TmY0U^D0>LKNteP?$guJI3`6O(A zaSrTY6iE}{=TAp1`Nl)?VRfIL9G5aK=V?)iP-v&A?CU`ZN&W4Z*ODt=b?ZQbEh#PK zLpL}zsG;MC=OG-)d-(56z_C1~N|y$EpT!7wq?9`G<4h|`C2MMYg)io!#he#~sNSeo zvRK)-vN{*Ro>)FUJZzHrMGGsw7cFlHvvS;yJZmj_`(Y%J(1hEj!K#u{Y&98Gz&h)g ztad>)ZK<7gn~x5S;P6MH9zi4D;7UgB48-c__8nE zPw{#QsRDg+nFPm#g@QP}hRWZ|B(gOBXdp*ADn=yL|Dgi^$Jr}Q9wMTjp1n|9PV@gJ z6%mf0gTB_=c}eP9UuTKf9dEP4LVKx_+TJ!dh@O@ zb!zn43{vC0{~G=v-D9W-@RNub9l=4RJ}0nRtp4ZZ`riZ=Mb+k?FQbt^Q10~ffsq`R z$eN94DhOUVPm9Yqi8s2o8bl9jZwFaf9(!v%3XsMgG*^ zB?eOb@_XWG<177E*!+BvJQJ`RBOeRyc7dZU zNvUTiS@Y)@0bpH)hPpHIfNL>?NQIl7=~f<8BqnV%whA@O!;7ykh+X zT%7%E?O^UQ1%J60n6ysLkX8@m0fdY5)0Q$gc@&I+_o2ys-7CX>buee5&VdTP!Rd{` zID8ul8V32;Q#inbcZP`oyVf=2ik9owQ;xNQzZGvC?5TL*UVqQ!zl)>U(QgfgNTfRw z6hE%g;^OyUAH`iq=@<&Qcv7ZY{egQ7CLN@SY@&+hj^l2N5u6f(#Q={dd+OQ*?5P=6@*U5uE;wj+ za(KNDkJMvkuZy7c>D%A-GEwT)(#&<^RiO1kd4I3fET4zKW*vOr1kkOOrJHDj{Mn z;PNTbLWuOeD&^4^ZTd{LJw4lrb@G$t6a+T|LQSgU?vDoZ>hv{Tdj%+A3<;QW)1aHttc8~Ct+%#OrKi8;KBJQRW*S1dNK{M;97vdSo2c#NUVePOGj>Vo9j7*U=Kkoj7_hs5rS}G=Z=blVOw%i~U;@O(B_h2Q|KyKxT#6P>yL~g) zs56|vK}ypwb-bzyN#GvPqPs916en$hS$SG&oWOJ~8 z7V0_H0Ek8&yb|f{#aiR|O7z@*Qr`=~P+(BalP_b{3C8wFtHwm6w?k2~?#ZgksO~tN zM|FV;Zr&Y566Urv)A&T$+~mpXU^lo<*Kmr!RC!}uIXUj;>#h;Uy^v6_Yz`)eL00qr ziJ~bQy=Nn=p+Q3Qmsy1t(8vFS2+$Tqx-ALgduuuGUMM1vyb18hb|d#8STCB3b>>_DHce6JzF4+qU)#Y{#K zRGqZWKZn!(*dE=AO|6GT$yqA0rTgQSq|e- z^V>pYI*-wUbL@`#J^VtFUq#`|Sm&Z<`xY8Z-BapB=?D|=Sa=PV{fleFy27pob6lqn%t=)o8K13|djC2i11DS@owA0j?g(ob^z`AyhpJw7sm3Kz$cQj(QLgOLxtCf7`0paKZi zK8xpYyY?rz)qSJEz&%TUpYQ)w;G=?r~S8v zc|7WjTbevQg?$;Qc*{(2Gs5OYa`y%|(5?4(BUpGE4`+#Voy{KU>*GnL5ovpSGA-z` z{K)*(#7RcNemxRc)w!w!Di|k_Gv41-cID0$yR{=s*WpCHL*6*g?kfV#v+#4bflIx6 zkDL50bxO=nc2Er*mLTwPn*_9F zq1<@;dSqE~Q=3Wcq>{N@jFw)$u1Q_y)!sp>2jElxrk87Mp%FT%;m#{KcdL-{DvRge zyOj{=(}Ep&<>>3jXB=!bZH$=xUSdFE=ngNm0{UaQ$wL6M;p5COD4?CcpE`gA3S!yK zFSC$hY@mnr;}nu+mH?fj^U!>i1H8pGQgjHzapk2aj`dVPS0|g1^c^d)lgb(z=H$nK z6LVJ@3o#{$cFu(;t@pf`A+r%C%*xCL8Y2k{)W1TT)ZpolEtL~IImz6i4dj5r!Jra$ zk1$`2*&3Y%erJK-eZgsrvp>#;lXUYqN`e(f0tg&AlnLRS!DncL zy9_k(`}3;`ik>7Is#*;HIbbF(QBhSggdEUd%M^UCHokW&Ev3_ogueF<@@w!2koP$B z+q6U_EE#sk00F1SqAqS3`}czUZ`|AeF#a4FTS;e^56Nq>V7T%z5wU)2wXFb+soDOz-G1cC&LvCrmERqeWE=xnogP$0Tu-KXti?gNAb=>Q=lZ1%ij>q3ql9;0 zQA0p_t;kR0Q3O^ZnIA$KY34jW6;#JfzazCn?}cTq0XsJsbdl!_zzfOXC6;ScX|M;5 zw0~)+SXWT@%%E5`f>@HH6Q>RGDSI#(i}8kp1&RW3ba$ZAl5DEtEkxjD%9IqHiT6-K zzue!2(jm=wn7%+Rs&O4+qKPM)HPa!!ZGEl#K2+t0S{$t8&{Tn*YfQ(%2>$EvEXx!4 zFidJjun>;BzbWYtAibS*uPufESX63|xCbjmj`l}BcU-=WwsSLPCuPe@&LYu%|0!2o z-zb^rL96a-$B7B4x`UYMO~Du;lIxFaW99p%pR*|vQZ<9b3OBMRuD#?jS;rEeN8(Cd zHDO)qLK?Qob=J-hJ4sw~&A*)%OhC@|lTg2ZHaQAgr8=79u~cJz+M-SE5AIG+NdH9= zKWl4j>Y}85On$SXNOASKq0{LfZF6ILLysBlW0bYbe`;ty*yZZ0Fy9v5jc~IJ(_&^% z(O~{dA^kEl!_L)D;kC3Y4CJ`!r+ee>n$Cn!Cty)Do7B{aLCvD*88-kc$P3fj$rB$~ zo%Z+}&Cq5+-Ut7ggJ#7?VtHxa41Q`%wxRA#52_;(%Gmx=@~WpMm)3c~49D~tN(_mL z>2>txc$lPK3HR!&bHSq;mU~^_Dda$2nJwz&i{j$Q?ci_jp3u_G_n>jO(_Og=+JSJ| zdy@pG(SP|Q-RP5)7*7SsQzhyq?cw*(6rKh8_!#N{8QEoP((T^yN(iA7^E~aypR(dQ zYzGy%wfzU$|tb{9N)|BwhtNX?Bf0;v#wBNW{F(4o3iUo8C z?7Br~a;SLxTkrh`zttxC;t6Jbc9XzX-;f~Ayk1w*AfPM@Cu|Wf>gq_FD)ucS<(}!x zokHjB^Z|z{cTX4iZqmz8-Jd++1M|b;3{ZH;Hw!3=Mr}@TdEPO{Jq0^Nu7snV9p4R2 z`qeny(tonfMe`fzM6O{2!=^~ZLRw6fT6kR(gEKAqGMi)N3sD&>`B4@%cuZ{J(R>4Ggmfxb>)w*(Ns{Y&^6@B1 zfOVPQo;TxD6D{v4WeqOM8E$p&?dO$Oac*hj-8iBs3m+OY&4b^agQ}&auCH$=tk9HD z4Z2$O#_PliV4aDl?Qq#~*6;XATIY_O*$9V;i)q)!)ABl7|DZ6fmer}miqMctPx-!<eb>e|Z{m`mR zpX^wz4)%w)t_Oh=Kc7yB6O7q24Pv*+t=giEz;L=yGm zy06c-du&dXwO+MA&G|N=B3Q;yWt#{#$xg4plYTO<@+vn?`lvN6U64{+66xbiiC;CJ zB}98E!??^62t696zr&N`wB@0`!h~HW!f9ht{u}t1*Hpk6P`?p0$-5L@{ONc(nVRUK zq9Z^!gvljl$A){y_N8lC*`pK7>8FWd=1Yu*4!cL_c|+kQ+!HI|pMcsWjg}te2gX;* zC|jqF&Y^a)27^Jn`hYm~S+ywUUV}o#&=`ODn}dfHyHy50wzM_X)0=SEGn6ydRQe~& zySlne*6pn~<>l`-`udY(CfuuRg{$4WAKsWYPK`1L5g|eG7C7#ddzsB*GtGQVmeZkr zAa>qM2I=Rb82R_=&SgPkr(*v+_T5s``avXKoBn51+0;pG24F!)Wg8!Lm+cYsCVa@) zR=4aN%%hIbbxs?y5vH!gy~R)(xa2H+B0@0Gxd;b;WHmL3xNxqZLJ{Pj14s+dSD8gK zv87#GJXXfdniiWL|L4GX@}IJ+M5I2b)7FqfR=w5M_j8~B%Vv$+>H-@~(hJ*5m!Y&b zM|g8yb|Zti4)d<)->hv&LK_eTG(C7Sj$ZEN@N5@hYWbp6jStC7W*{NSy;29DGb%wk zGNq*@us#v@k##(G`zd~SFebwhO)4j0{cC1y=wACY?VXE(vyQ7vyk#F?+mVpP2oRoF zQSsO6wc!md9i6mepT0A2u<5ATj@;Kd&L=2iO61t=?JsApEbJrJR^vGsVu$s9` zO=i(yGR+t`45#<%{yXSK ch@b!2+IuShO!+bic!U~*r>mdKI;Vst0F;A@%m4rY literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/windows-uac.png b/docs/build-insights/media/windows-uac.png new file mode 100644 index 0000000000000000000000000000000000000000..add461eb50fd62ad8f0b77384242b80fa0a2f2f0 GIT binary patch literal 37564 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 literal 0 HcmV?d00001 From 585322bd6e3121ef145418571a4ed28c25b6ee0c Mon Sep 17 00:00:00 2001 From: Eve Silfanus Date: Thu, 15 Jan 2026 13:50:00 -0800 Subject: [PATCH 214/619] Updated copilot-usage-menu and vs-account-auth images --- .../media/copilot-usage-menu.png | Bin 7298 -> 13063 bytes docs/build-insights/media/vs-account-auth.png | Bin 13967 -> 14132 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/build-insights/media/copilot-usage-menu.png b/docs/build-insights/media/copilot-usage-menu.png index 9ca861d75b6b19181e409dc0f99240582cba0aea..6fbb212ac934ee24f531afd26aa206221f89884a 100644 GIT binary patch literal 13063 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 literal 7298 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 diff --git a/docs/build-insights/media/vs-account-auth.png b/docs/build-insights/media/vs-account-auth.png index ae395549d004f2c89e83661937d17992ac2c6f0e..3e62cf49c70838a226e5bb7a1174e92ffaf1f9cb 100644 GIT binary patch literal 14132 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 ZU0kIxi>pu_0w0lq6l7GSE1|H^{{!uu69NDL From 62551c68e9c5e32d88d458759b81cbcabe69fa08 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 16 Jan 2026 14:12:01 -0800 Subject: [PATCH 215/619] draft --- docs/standard-library/priority-queue-class.md | 343 ++++++++++-------- 1 file changed, 198 insertions(+), 145 deletions(-) diff --git a/docs/standard-library/priority-queue-class.md b/docs/standard-library/priority-queue-class.md index 8e22659fb47..d9c96fa37be 100644 --- a/docs/standard-library/priority-queue-class.md +++ b/docs/standard-library/priority-queue-class.md @@ -1,13 +1,13 @@ --- description: "Learn more about: priority_queue Class" title: "priority_queue Class" -ms.date: "11/04/2016" +ms.date: 01/18/2026 f1_keywords: ["queue/std::priority_queue::container_type", "queue/std::priority_queue::size_type", "queue/std::priority_queue::value_type", "queue/std::priority_queue::empty", "queue/std::priority_queue::pop", "queue/std::priority_queue::push", "queue/std::priority_queue::size", "queue/std::priority_queue::top"] helpviewer_keywords: ["std::priority_queue [C++], container_type", "std::priority_queue [C++], size_type", "std::priority_queue [C++], value_type", "std::priority_queue [C++], empty", "std::priority_queue [C++], pop", "std::priority_queue [C++], push", "std::priority_queue [C++], size", "std::priority_queue [C++], top"] --- -# `priority_queue` Class +# `priority_queue` class -A template container adaptor class that provides a restriction of functionality limiting access to the top element of some underlying container type, which is always the largest or of the highest priority. New elements can be added to the `priority_queue` and the top element of the `priority_queue` can be inspected or removed. +A container adaptor that maintains a collection of elements where the largest (or highest priority) element is always accessible at the top. You can add new elements and remove or examine the top element, but you can't directly access elements in the middle of the collection. ## Syntax @@ -19,31 +19,29 @@ class priority_queue ### Parameters *`Type`*\ -The element data type to be stored in the `priority_queue`. +The element data type to store in the `priority_queue`. *`Container`*\ -The type of the underlying container used to implement the `priority_queue`. +The type of the underlying container that stores the elements for the `priority_queue`. *`Compare`*\ -The type that provides a function object that can compare two element values as sort keys to determine their relative order in the `priority_queue`. This argument is optional and the binary predicate `less` is the default value. +The type that provides a function object that compares two element values as sort keys to determine their relative order in the `priority_queue`. This argument is optional. The binary predicate `less` is the default. ## Remarks -The elements of class `Type` stipulated in the first template parameter of a queue object are synonymous with [`value_type`](#value_type) and must match the type of element in the underlying container class `Container` stipulated by the second template parameter. The `Type` must be assignable, so that it's possible to copy objects of that type and to assign values to variables of that type. +Elements of class `Type` specified in the first template parameter of a `priority_queue` object are equivalent to [`value_type`](#value_type) and must match the element type in the underlying container class `Container` specified by the second template parameter. The `Type` must be assignable, which means you can copy objects of that type and assign values to variables of that type. -The `priority_queue` orders the sequence it controls by calling a stored function object of class `Traits`. In general, the elements need be merely less than comparable to establish this order: so that, given any two elements, it may be determined either that they're equivalent (in the sense that neither is less than the other) or that one is less than the other. This results in an ordering between the nonequivalent elements. On a more technical note, the comparison function is a binary predicate that induces a strict weak ordering in the standard mathematical sense. +The `priority_queue` uses a comparison function to determine which elements have higher priority. This comparison function is a function object of class `Traits`. To work with `priority_queue`, your elements only need to support comparison using the less-than operator (`<`) so that it can arrange the elements in order. -Suitable underlying container classes for `priority_queue` include [`deque` Class](../standard-library/deque-class.md) and the default [`vector` Class](../standard-library/vector-class.md) or any other sequence container that supports the operations of `front`, `push_back`, and `pop_back` and a random-access iterator. The underlying container class is encapsulated within the container adaptor, which exposes only the limited set of the sequence container member functions as a public interface. +Suitable underlying container classes for `priority_queue` include [`deque` Class](../standard-library/deque-class.md), the default [`vector` Class](../standard-library/vector-class.md), or any other sequence container that supports the operations of `front`, `push_back`, and `pop_back` and a random-access iterator. The container adaptor encapsulates the underlying container class and exposes only a limited set of the sequence container member functions as a public interface. -Adding elements to and removing elements from a `priority_queue` both have logarithmic complexity. Accessing elements in a `priority_queue` has constant complexity. +Adding and removing elements from a `priority_queue` both have logarithmic complexity. Accessing elements in a `priority_queue` has constant complexity. -There are three types of container adaptors defined by the C++ Standard Library: `stack`, `queue`, and `priority_queue`. Each restricts the functionality of some underlying container class to provide a precisely controlled interface to a standard data structure. +The C++ Standard Library defines other container adaptors that you can use to store the elements in your `priority_queue`: `stack`, `queue`, and `priority_queue`: -- The [`stack` Class](../standard-library/stack-class.md) supports a last-in, first-out (LIFO) data structure. A good analogue to keep in mind would be a stack of plates. Elements (plates) may be inserted, inspected, or removed only from the top of the stack, which is the last element at the end of the base container. The restriction to accessing only the top element is the reason for using the `stack` class. - -- The [`queue` Class](../standard-library/queue-class.md) supports a first-in, first-out (FIFO) data structure. A good analogue to keep in mind would be people lining up for a bank teller. Elements (people) may be added to the back of the line and are removed from the front of the line. Both the front and the back of a line may be inspected. The restriction to accessing only the front and back elements in this way is the reason for using the `queue` class. - -- The `priority_queue` class orders its elements so that the largest element is always at the top position. It supports insertion of an element and the inspection and removal of the top element. A good analogue to keep in mind would be people lining up where they're arranged by age, height, or some other criterion. +- The [`stack` Class](../standard-library/stack-class.md) supports a last-in, first-out (LIFO) data structure. Consider a stack of plates: you can insert, inspect, or remove elements (plates) only from the top of the stack, which is the last element at the end of the base container. +- The [`queue` Class](../standard-library/queue-class.md) supports a first-in, first-out (FIFO) data structure. Consider people in a line. You add elements (people) to the back of the line and remove them from the front of the line. Both the front and the back of a line can be inspected. +- The `priority_queue` class orders its elements so that the largest element is always at the top. It supports insertion of an element and the inspection and removal of the top element. ### Constructors @@ -75,6 +73,17 @@ There are three types of container adaptors defined by the C++ Standard Library: **Namespace:** `std` +## Examples index + +- [Check if the `priority_queue` is empty](#check-if-a-priority_queue-is-empty) +- [Pop elements and inspect size](#pop-elements-and-inspect-size) +- [Use custom containers and comparers](#construct-priority_queue-with-custom-containers-and-comparers) +- [Push elements and read the top](#push-elements-and-read-the-top) +- [Get the number of elements in the `priority_queue`](#get-priority_queue-size) +- [Access the top element](#access-the-top-element) +- [Use the `value_type` alias](#use-the-priority_queue-value_type-alias) +- [Use a user-defined data type](#use-a-user-defined-data-type-with-the-priority_queue) + ## `priority_queue::container_type` A type that provides the base container to be adapted. @@ -87,11 +96,8 @@ typedef Container container_type; The type is a synonym for the template parameter `Container`. The C++ Standard Library sequence container class `deque` and the default class `vector` meet the requirements to be used as the base container for a `priority_queue` object. User-defined types satisfying the requirements may also be used. -For more information on `Container`, see the Remarks section of the [`priority_queue` Class](../standard-library/priority-queue-class.md) topic. - -### Example - -See the example for [`priority_queue`](#priority_queue) for an example of how to declare and use `container_type`. +For more information about `Container`, see the Remarks section of the [`priority_queue` Class](../standard-library/priority-queue-class.md) topic. +To specify a different STL container as the base container for a `priority_queue`, see [`priority_queue`](#priority_queue) for an example of how to declare and use `container_type`. ## `priority_queue::empty` @@ -105,29 +111,28 @@ bool empty() const; **`true`** if the `priority_queue` is empty; **`false`** if the `priority_queue` is nonempty. -### Example +### Example: Check if the `priority_queue` is empty ```cpp -// pqueue_empty.cpp // compile with: /EHsc #include #include -int main( ) +int main() { using namespace std; // Declares priority_queues with default deque base container priority_queue q1, s2; - q1.push( 1 ); + q1.push(1); - if ( q1.empty( ) ) + if (q1.empty()) cout << "The priority_queue q1 is empty." << endl; else cout << "The priority_queue q1 is not empty." << endl; - if ( s2.empty( ) ) + if (s2.empty()) cout << "The priority_queue s2 is empty." << endl; else cout << "The priority_queue s2 is not empty." << endl; @@ -149,42 +154,38 @@ void pop(); ### Remarks -The `priority_queue` must be nonempty to apply the member function. The top of the `priority_queue` is always occupied by the largest element in the container. +The `priority_queue` must be nonempty to use this member function. The top of the `priority_queue` always holds the largest element in the container. -### Example +### Example: Pop elements and check size ```cpp -// pqueue_pop.cpp // compile with: /EHsc #include #include -int main( ) +int main() { using namespace std; priority_queue q1, s2; - q1.push( 10 ); - q1.push( 20 ); - q1.push( 30 ); + q1.push(10); + q1.push(20); + q1.push(30); priority_queue ::size_type i, iii; - i = q1.size( ); + i = q1.size(); cout << "The priority_queue length is " << i << "." << endl; - const int& ii = q1.top( ); - cout << "The element at the top of the priority_queue is " - << ii << "." << endl; + const int& ii = q1.top(); + cout << "The element at the top of the priority_queue is " << ii << "." << endl; - q1.pop( ); + q1.pop(); - iii = q1.size( ); - cout << "After a pop, the priority_queue length is " - << iii << "." << endl; + iii = q1.size(); + cout << "After a pop, the priority_queue length is " << iii << "." << endl; - const int& iv = q1.top( ); - cout << "After a pop, the element at the top of the " - << "priority_queue is " << iv << "." << endl; + const int& iv = q1.top(); + cout << "After a pop, the element at the top of the " << "priority_queue is " << iv << "." << endl; } ``` @@ -197,7 +198,7 @@ After a pop, the element at the top of the priority_queue is 20. ## `priority_queue::priority_queue` -Constructs a `priority_queue` that is empty or that is a copy of a range of a base container object or of another `priority_queue`. +Creates a `priority_queue` that is empty or that copies a range from a base container object or from another `priority_queue`. ```cpp priority_queue(); @@ -243,10 +244,9 @@ The fourth constructor specifies a copy of the `priority_queue right`. The last three constructors copy the range `[first, last)` of some container and use the values to initialize a `priority_queue` with increasing explicitness in specifying the type of comparison function of class `Traits` and `container_type`. -### Example +### Example: Use custom containers and comparers ```cpp -// pqueue_ctor.cpp // compile with: /EHsc #include #include @@ -254,101 +254,94 @@ The last three constructors copy the range `[first, last)` of some container and #include #include -int main( ) +int main() { using namespace std; - // The first member function declares priority_queue - // with a default vector base container + // Declares a priority_queue with a default vector base container priority_queue q1; cout << "q1 = ( "; - while ( !q1.empty( ) ) + while (!q1.empty()) { - cout << q1.top( ) << " "; - q1.pop( ); + cout << q1.top() << " "; + q1.pop(); } cout << ")" << endl; - // Explicitly declares a priority_queue with nondefault - // deque base container - priority_queue > q2; - q2.push( 5 ); - q2.push( 15 ); - q2.push( 10 ); + // Declares a priority_queue with nondefault deque base container + priority_queue > q2; + q2.push(5); + q2.push(15); + q2.push(10); cout << "q2 = ( "; - while ( !q2.empty( ) ) + while (!q2.empty()) { - cout << q2.top( ) << " "; - q2.pop( ); + cout << q2.top() << " "; + q2.pop(); } cout << ")" << endl; - - // This method of printing out the elements of a priority_queue - // removes the elements from the priority queue, leaving it empty - cout << "After printing, q2 has " << q2.size( ) << " elements." << endl; - - // The third member function declares a priority_queue - // with a vector base container and specifies that the comparison - // function greater is to be used for ordering elements - priority_queue , greater > q3; - q3.push( 2 ); - q3.push( 1 ); - q3.push( 3 ); + cout << "After printing, q2 has " << q2.size() << " elements." << endl; + + // Declares a priority_queue with a vector base container and specifies that + // the comparison function greater is to be used for ordering elements + priority_queue , greater> q3; + q3.push(2); + q3.push(1); + q3.push(3); cout << "q3 = ( "; - while ( !q3.empty( ) ) + + while (!q3.empty()) { - cout << q3.top( ) << " "; - q3.pop( ); + cout << q3.top() << " "; + q3.pop(); } cout << ")" << endl; - // The fourth member function declares a priority_queue and - // initializes it with elements copied from another container: - // first, inserting elements into q1, then copying q1 elements into q4 - q1.push( 100 ); - q1.push( 200 ); - priority_queue q4( q1 ); + // Declares a priority_queue and initializes it with elements copied from another + // container by first inserting elements into q1 and then copying q1 elements into q4 + q1.push(100); + q1.push(200); + priority_queue q4(q1); cout << "q4 = ( "; - while ( !q4.empty( ) ) + while (!q4.empty()) { - cout << q4.top( ) << " "; - q4.pop( ); + cout << q4.top() << " "; + q4.pop(); } cout << ")" << endl; // Creates an auxiliary vector object v5 to be used to initialize q5 vector v5; vector ::iterator v5_Iter; - v5.push_back( 10 ); - v5.push_back( 30 ); - v5.push_back( 20 ); + v5.push_back(10); + v5.push_back(30); + v5.push_back(20); cout << "v5 = ( " ; - for ( v5_Iter = v5.begin( ) ; v5_Iter != v5.end( ) ; v5_Iter++ ) + for (v5_Iter = v5.begin() ; v5_Iter != v5.end() ; v5_Iter++) + { cout << *v5_Iter << " "; + } cout << ")" << endl; - // The fifth member function declares and - // initializes a priority_queue q5 by copying the + // Declares and initializes a priority_queue q5 by copying the // range v5[ first, last) from vector v5 - priority_queue q5( v5.begin( ), v5.begin( ) + 2 ); + priority_queue q5(v5.begin(), v5.begin() + 2); cout << "q5 = ( "; - while ( !q5.empty( ) ) + while (!q5.empty()) { - cout << q5.top( ) << " "; - q5.pop( ); + cout << q5.top() << " "; + q5.pop(); } cout << ")" << endl; - // The sixth member function declares a priority_queue q6 - // with a comparison function greater and initializes q6 - // by copying the range v5[ first, last) from vector v5 - priority_queue , greater > - q6( v5.begin( ), v5.begin( ) + 2 ); + // Declares a priority_queue q6 with a comparison function greater and + // initializes q6 by copying the range v5[ first, last) from vector v5 + priority_queue , greater> q6(v5.begin(), v5.begin() + 2); cout << "q6 = ( "; - while ( !q6.empty( ) ) + while (!q6.empty()) { - cout << q6.top( ) << " "; - q6.pop( ); + cout << q6.top() << " "; + q6.pop(); } cout << ")" << endl; } @@ -365,36 +358,34 @@ void push(const Type& val); ### Parameters *`val`*\ -The element added to the top of the `priority_queue`. +The element to add to the top of the `priority_queue`. ### Remarks -The top of the `priority_queue` is the position occupied by the largest element in the container. +The top of the `priority_queue` contains the largest element in the container. -### Example +### Example: Push elements and read the top ```cpp -// pqueue_push.cpp // compile with: /EHsc #include #include -int main( ) +int main() { using namespace std; priority_queue q1; - q1.push( 10 ); - q1.push( 30 ); - q1.push( 20 ); + q1.push(10); + q1.push(30); + q1.push(20); priority_queue::size_type i; - i = q1.size( ); + i = q1.size(); cout << "The priority_queue length is " << i << "." << endl; - const int& ii = q1.top( ); - cout << "The element at the top of the priority_queue is " - << ii << "." << endl; + const int& ii = q1.top(); + cout << "The element at the top of the priority_queue is " << ii << "." << endl; } ``` @@ -415,26 +406,25 @@ size_type size() const; The current length of the `priority_queue`. -### Example +### Example: Get the number of elements in the `priority_queue` ```cpp -// pqueue_size.cpp // compile with: /EHsc #include #include -int main( ) +int main() { using namespace std; priority_queue q1, q2; priority_queue ::size_type i; - q1.push( 1 ); - i = q1.size( ); + q1.push(1); + i = q1.size(); cout << "The priority_queue length is " << i << "." << endl; - q1.push( 2 ); - i = q1.size( ); + q1.push(2); + i = q1.size(); cout << "The priority_queue length is now " << i << "." << endl; } ``` @@ -446,7 +436,7 @@ The priority_queue length is now 2. ## `priority_queue::size_type` -An unsigned integer type that can represent the number of elements in a `priority_queue`. +An unsigned integer type that represents the number of elements in a `priority_queue`. ```cpp typedef typename Container::size_type size_type; @@ -454,9 +444,9 @@ typedef typename Container::size_type size_type; ### Remarks -The type is a synonym for the `size_type` of the base container adapted by the `priority_queue`. +This type is a synonym for the `size_type` of the base container that the `priority_queue` adapts. -### Example +### Example: Access the top element See the example for [`size`](#size) for an example of how to declare and use `size_type`. @@ -474,32 +464,30 @@ A reference to the largest element, as determined by the `Traits` function, obje ### Remarks -The `priority_queue` must be nonempty to apply the member function. +The `priority_queue` must be nonempty to use this member function. -### Example +### Example: Use the `value_type` alias ```cpp -// pqueue_top.cpp // compile with: /EHsc #include #include -int main( ) +int main() { using namespace std; priority_queue q1; - q1.push( 10 ); - q1.push( 30 ); - q1.push( 20 ); + q1.push(10); + q1.push(30); + q1.push(20); priority_queue::size_type i; - i = q1.size( ); + i = q1.size(); cout << "The priority_queue length is " << i << "." << endl; - const int& ii = q1.top( ); - cout << "The element at the top of the priority_queue is " - << ii << "." << endl; + const int& ii = q1.top(); + cout << "The element at the top of the priority_queue is " << ii << "." << endl; } ``` @@ -518,17 +506,16 @@ typedef typename Container::value_type value_type; ### Remarks -The type is a synonym for the `value_type` of the base container adapted by the `priority_queue`. +This type is a synonym for the `value_type` of the base container that the `priority_queue` adapts. -### Example +### Example: Use the priority_queue value_type alias ```cpp -// pqueue_value_type.cpp // compile with: /EHsc #include #include -int main( ) +int main() { using namespace std; @@ -539,9 +526,8 @@ int main( ) cout << "The value_type is AnInt = " << AnInt << endl; priority_queue q1; - q1.push( AnInt ); - cout << "The element at the top of the priority_queue is " - << q1.top( ) << "." << endl; + q1.push(AnInt); + cout << "The element at the top of the priority_queue is " << q1.top() << "." << endl; } ``` @@ -550,6 +536,73 @@ The value_type is AnInt = 69 The element at the top of the priority_queue is 69. ``` +## Example: Use a user-defined data type + +To use `priority_queue` with user-defined type elements, you must provide a way to compare the elements. You can either define `operator<` for your type or provide a custom comparison function object. + +The following example demonstrates a `priority_queue` that stores `Task` objects, ordered by priority level. Tasks with higher priority values are at the top of the queue. + +```cpp +// compile with: /EHsc +#include +#include +#include + +struct Task +{ + int priority; + std::string name; + + // Define operator< for priority_queue ordering + // Returns true if this task has LOWER priority than other + // (priority_queue puts the "largest" element at the top) + bool operator<(const Task& other) const + { + return priority < other.priority; + } +}; + +int main() +{ + std::priority_queue tasks; + + tasks.push({3, "Low priority task"}); + tasks.push({10, "High priority task"}); + tasks.push({5, "Medium priority task"}); + + std::cout << "Processing tasks by priority:\n"; + while (!tasks.empty()) + { + const Task& t = tasks.top(); + std::cout << " Priority " << t.priority << ": " << t.name << "\n"; + tasks.pop(); + } +} +``` + +```Output +Processing tasks by priority: + Priority 10: High priority task + Priority 5: Medium priority task + Priority 3: Low priority task +``` + +### Remarks + +If you want different ordering (for example, lower values first), provide a custom comparator: + +```cpp +struct ComparePriority +{ + bool operator()(const Task& a, const Task& b) + { + return a.priority > b.priority; // Lower priority value means higher priority + } +}; + +std::priority_queue, ComparePriority> minQueue; +``` + ## See also [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md)\ From 015629ff43ee22665d3c9c1bfa30c3f02319dba1 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Fri, 16 Jan 2026 14:39:19 -0800 Subject: [PATCH 216/619] Add new moniker --- docs/build/customize-cmake-settings.md | 74 +++++------------- .../vs-2026-cmake-manage-configurations.png | Bin 10542 -> 0 bytes 2 files changed, 20 insertions(+), 54 deletions(-) delete mode 100644 docs/build/media/vs-2026-cmake-manage-configurations.png diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index abcbfa224fc..b56f85cd753 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -7,7 +7,17 @@ ms.topic: how-to --- # Customize CMake build settings -::: moniker range=">=msvc-160" +::: moniker range="=visual-studio" + +The CMake settings editor has been deprecated in Visual Studio 2026. + +To learn about changing the *`CMakePresets.json`* file, see [CMakePresets.json and CMakeUserPresets.json Microsoft vendor maps](/cpp/build/cmake-presets-json-reference). + +For Visual Studio 2019 to 2022, select your version by using the version selector in the sidebar menu. + +::: moniker-end + +::: moniker range="<=msvc-170" Visual Studio uses a CMake configuration file to drive CMake generation and build. *`CMakePresets.json`* is supported by Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. *`CMakePresets.json`* is supported directly by CMake and can be used to drive CMake generation and build from Visual Studio, from VS Code, in a Continuous Integration pipeline, and from the command line on Windows, Linux, and Mac. For more information on *`CMakePresets.json`*, see [Configure and build with CMake Presets](cmake-presets-vs.md). @@ -15,7 +25,7 @@ If you maintain projects that use a *`CMakeSettings.json`* file for CMake build To open the CMake settings editor, select the **Configuration** drop-down in the main toolbar and choose **Manage Configurations**. -![Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.](media/vs-2026-cmake-manage-configurations.png) +![Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.](media/vs2019-cmake-manage-configurations.png) Now you see the **Settings Editor** with the installed configurations on the left. @@ -24,7 +34,7 @@ The left pane shows the installed configurations (x86-Debug). The right pane sho :::image-end::: > [!NOTE] -> If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. In Visual Studio 2026, under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. +> If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. Under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. > :::image type="content" source="media/options-configuration-file.png" alt-text="Screenshot of the C make options pane."::: Visual Studio provides one `x64-Debug` configuration by default. You can add more configurations by choosing the green plus sign. The settings that you see in the editor might vary depending on which configuration is selected. @@ -161,55 +171,11 @@ For more information about each of the properties in the file, see [CMakeSetting ::: moniker-end -::: moniker range="<=msvc-150" - -Visual Studio 2017 provides several CMake configurations that define how CMake is invoked to create the CMake cache for a given project. To add a new configuration, select the configuration drop-down in the toolbar and choose **Manage Configurations**: - - ![Screenshot of Manage configurations selected in the drop-down.](media/cmake-manage-configurations.png) - -You can choose from the list of predefined configurations: - - ![Add Configuration to CMake Settings dialog list of predefined configurations.](media/cmake-configurations.png) - -The first time you select a configuration, Visual Studio creates a *`CMakeSettings.json`* file in your project's root folder. This file is used to re-create the CMake cache file, for example after a **Clean** operation. - -To add another configuration, right-click *`CMakeSettings.json`* and choose **Add Configuration**. - - ![Screenshot of the shortcut menu with Add configuration selected.](media/cmake-add-configuration.png "CMake Add Configuration") - -You can also edit the file using the **CMake Settings Editor**. Right-click on *`CMakeSettings.json`* in **Solution Explorer** and choose **Edit CMake Settings**. Or, select **Manage Configurations** from the configuration drop-down at the top of the editor window. - -You can also directly edit *`CMakeSettings.json`* to create custom configurations. The following example shows a sample configuration, which you can use as a starting point: - -```json - { - "name": "x86-Debug", - "generator": "Ninja", - "configurationType": "Debug", - "inheritEnvironments": [ "msvc_x86" ], - "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", - "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}", - "cmakeCommandArgs": "", - "buildCommandArgs": "-v", - "ctestCommandArgs": "" - }, -``` - -JSON IntelliSense helps you edit the *`CMakeSettings.json`* file: - - :::image type="complex" source="media/cmake-json-intellisense.png" alt-text="Screenshot of the CMake JSON IntelliSense pop-up in the editor."::: - The JSON IntelliSense pop-up for "configurations" shows buildCommandArgs, buildRoot, cmakeCommandArgs, configurationType, among several others. - :::image-end::: - -For more information about each of the properties in the file, see [`CMakeSettings.json` schema reference](cmakesettings-reference.md). - -::: moniker-end - -## See also +## Related content -[CMake Projects in Visual Studio](cmake-projects-in-visual-studio.md)
-[Configure a Linux CMake project](../linux/cmake-linux-project.md)
-[Connect to your remote Linux computer](../linux/connect-to-your-remote-linux-computer.md)
-[Configure CMake debugging sessions](configure-cmake-debugging-sessions.md)
-[Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md)
-[CMake predefined configuration reference](cmake-predefined-configuration-reference.md) +- [CMake Projects in Visual Studio](cmake-projects-in-visual-studio.md) +- [Configure a Linux CMake project](../linux/cmake-linux-project.md) +- [Connect to your remote Linux computer](../linux/connect-to-your-remote-linux-computer.md) +- [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md) +- [Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md) +- [CMake predefined configuration reference](cmake-predefined-configuration-reference.md) diff --git a/docs/build/media/vs-2026-cmake-manage-configurations.png b/docs/build/media/vs-2026-cmake-manage-configurations.png deleted file mode 100644 index ca06469ab2f761491b67696040af63a568727e78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10542 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 NQc=)&RV8N@^gp9A Date: Fri, 16 Jan 2026 14:44:10 -0800 Subject: [PATCH 217/619] link --- docs/standard-library/priority-queue-class.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/priority-queue-class.md b/docs/standard-library/priority-queue-class.md index d9c96fa37be..f8d63d9f60f 100644 --- a/docs/standard-library/priority-queue-class.md +++ b/docs/standard-library/priority-queue-class.md @@ -33,7 +33,7 @@ Elements of class `Type` specified in the first template parameter of a `priorit The `priority_queue` uses a comparison function to determine which elements have higher priority. This comparison function is a function object of class `Traits`. To work with `priority_queue`, your elements only need to support comparison using the less-than operator (`<`) so that it can arrange the elements in order. -Suitable underlying container classes for `priority_queue` include [`deque` Class](../standard-library/deque-class.md), the default [`vector` Class](../standard-library/vector-class.md), or any other sequence container that supports the operations of `front`, `push_back`, and `pop_back` and a random-access iterator. The container adaptor encapsulates the underlying container class and exposes only a limited set of the sequence container member functions as a public interface. +For more information about suitable underlying container classes, see [container_type](#container_type). Adding and removing elements from a `priority_queue` both have logarithmic complexity. Accessing elements in a `priority_queue` has constant complexity. @@ -94,10 +94,11 @@ typedef Container container_type; ### Remarks -The type is a synonym for the template parameter `Container`. The C++ Standard Library sequence container class `deque` and the default class `vector` meet the requirements to be used as the base container for a `priority_queue` object. User-defined types satisfying the requirements may also be used. +The type is a synonym for the template parameter `Container`. + +Suitable underlying container classes for `priority_queue` include [`deque` Class](../standard-library/deque-class.md), the default [`vector` Class](../standard-library/vector-class.md), or any other sequence container that supports the operations of `front`, `push_back`, and `pop_back` and a random-access iterator. The container adaptor encapsulates the underlying container class and exposes only a limited set of the sequence container member functions as a public interface. -For more information about `Container`, see the Remarks section of the [`priority_queue` Class](../standard-library/priority-queue-class.md) topic. -To specify a different STL container as the base container for a `priority_queue`, see [`priority_queue`](#priority_queue) for an example of how to declare and use `container_type`. +For an example of how to declare and use `container_type`, see [Use custom containers and comparers](#construct-priority_queue-with-custom-containers-and-comparers) ## `priority_queue::empty` From 0fd890e2748037f3822579f18a40546f011ba9e8 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Fri, 16 Jan 2026 14:46:00 -0800 Subject: [PATCH 218/619] Fix new moniker --- docs/build/customize-cmake-settings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index b56f85cd753..d49e435c42b 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -7,7 +7,7 @@ ms.topic: how-to --- # Customize CMake build settings -::: moniker range="=visual-studio" +::: moniker range=">=msvc-180" The CMake settings editor has been deprecated in Visual Studio 2026. From 8095dee92137c35c10a4c29c6ee61e0782768efd Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 16 Jan 2026 15:33:37 -0800 Subject: [PATCH 219/619] draft --- docs/standard-library/priority-queue-class.md | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/standard-library/priority-queue-class.md b/docs/standard-library/priority-queue-class.md index f8d63d9f60f..2ed920229e7 100644 --- a/docs/standard-library/priority-queue-class.md +++ b/docs/standard-library/priority-queue-class.md @@ -33,7 +33,7 @@ Elements of class `Type` specified in the first template parameter of a `priorit The `priority_queue` uses a comparison function to determine which elements have higher priority. This comparison function is a function object of class `Traits`. To work with `priority_queue`, your elements only need to support comparison using the less-than operator (`<`) so that it can arrange the elements in order. -For more information about suitable underlying container classes, see [container_type](#container_type). +You can change the underlying container type used by the `priority_queue`. You may want to do that for performance reasons. The default, `vector`, is usually best for cache locality because elements are stored in contiguous storage, and does fewer allocations as it grows. But perhaps you would consider `deque` if you have very large or unbounded queues and moving elements is expensive. For more information about suitable underlying container classes, see [container_type](#container_type). Adding and removing elements from a `priority_queue` both have logarithmic complexity. Accessing elements in a `priority_queue` has constant complexity. @@ -43,6 +43,17 @@ The C++ Standard Library defines other container adaptors that you can use to st - The [`queue` Class](../standard-library/queue-class.md) supports a first-in, first-out (FIFO) data structure. Consider people in a line. You add elements (people) to the back of the line and remove them from the front of the line. Both the front and the back of a line can be inspected. - The `priority_queue` class orders its elements so that the largest element is always at the top. It supports insertion of an element and the inspection and removal of the top element. +## Examples + +- [Check if the `priority_queue` is empty](#check-if-a-priority_queue-is-empty) +- [Pop elements and check queue size](#pop-elements-and-inspect-size) +- [Use custom containers and comparers](#construct-priority_queue-with-custom-containers-and-comparers) +- [Push elements and read the top](#push-elements-and-read-the-top) +- [Get the number of elements](#get-priority_queue-size) +- [Access the top element](#access-the-top-element) +- [Get the top element of the `priority_queue`](#use-the-priority_queue-value_type-alias) +- [Use a user-defined data type](#use-a-user-defined-data-type-with-the-priority_queue) + ### Constructors |Constructor|Description| @@ -73,17 +84,6 @@ The C++ Standard Library defines other container adaptors that you can use to st **Namespace:** `std` -## Examples index - -- [Check if the `priority_queue` is empty](#check-if-a-priority_queue-is-empty) -- [Pop elements and inspect size](#pop-elements-and-inspect-size) -- [Use custom containers and comparers](#construct-priority_queue-with-custom-containers-and-comparers) -- [Push elements and read the top](#push-elements-and-read-the-top) -- [Get the number of elements in the `priority_queue`](#get-priority_queue-size) -- [Access the top element](#access-the-top-element) -- [Use the `value_type` alias](#use-the-priority_queue-value_type-alias) -- [Use a user-defined data type](#use-a-user-defined-data-type-with-the-priority_queue) - ## `priority_queue::container_type` A type that provides the base container to be adapted. @@ -449,7 +449,7 @@ This type is a synonym for the `size_type` of the base container that the `prior ### Example: Access the top element -See the example for [`size`](#size) for an example of how to declare and use `size_type`. +For an example of how to declare and use `size_type`, see [Get the number of elements](#get-priority_queue-size) ## `priority_queue::top` @@ -467,7 +467,7 @@ A reference to the largest element, as determined by the `Traits` function, obje The `priority_queue` must be nonempty to use this member function. -### Example: Use the `value_type` alias +### Example: Get the top element of the `priority_queue` ```cpp // compile with: /EHsc From 93c5a1cf9eae694a0816cb90925291309f6968ad Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 16 Jan 2026 15:51:21 -0800 Subject: [PATCH 220/619] fix link --- docs/standard-library/priority-queue-class.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/priority-queue-class.md b/docs/standard-library/priority-queue-class.md index 2ed920229e7..54de3d14480 100644 --- a/docs/standard-library/priority-queue-class.md +++ b/docs/standard-library/priority-queue-class.md @@ -51,7 +51,7 @@ The C++ Standard Library defines other container adaptors that you can use to st - [Push elements and read the top](#push-elements-and-read-the-top) - [Get the number of elements](#get-priority_queue-size) - [Access the top element](#access-the-top-element) -- [Get the top element of the `priority_queue`](#use-the-priority_queue-value_type-alias) +- [Use the priority_queue value_type alias](#use-the-priority_queue-value_type-alias) - [Use a user-defined data type](#use-a-user-defined-data-type-with-the-priority_queue) ### Constructors @@ -64,7 +64,7 @@ The C++ Standard Library defines other container adaptors that you can use to st |Type name|Description| |-|-| -|[`container_type`](#container_type)|A type that provides the base container to be adapted by a `priority_queue`.| +|[`container_type`](#container_type)|A type that provides the base container that the `priority_queue` adapts.| |[`size_type`](#size_type)|An unsigned integer type that can represent the number of elements in a `priority_queue`.| |[`value_type`](#value_type)|A type that represents the type of object stored as an element in a `priority_queue`.| From 5a03e2aa903e5f20729ee2b063ae4d502d57486a Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 16 Jan 2026 16:49:34 -0800 Subject: [PATCH 221/619] update example --- docs/standard-library/set-class.md | 89 +++++++++++++----------------- 1 file changed, 38 insertions(+), 51 deletions(-) diff --git a/docs/standard-library/set-class.md b/docs/standard-library/set-class.md index a311d618735..0d8b7a74316 100644 --- a/docs/standard-library/set-class.md +++ b/docs/standard-library/set-class.md @@ -1080,9 +1080,9 @@ An iterator that refers to the location of an element with a specified key, or t ### Remarks -The member function returns an iterator that refers to an element in the set whose key is equivalent to the argument *key* under a binary predicate that induces an ordering based on a less than comparability relation. +The member function returns an iterator that points to the element in the set that has a key equal to the argument *key*. If no such element exists, the function returns `end()`. The comparison uses a binary predicate based on a less-than ordering relation. -If the return value of `find` is assigned to a `const_iterator`, the set object can't be modified. If the return value of `find` is assigned to an `iterator`, the set object can be modified +If the return value of `find` is assigned to a `const_iterator`, the set object can't be modified. If the return value of `find` is assigned to an `iterator`, the set object can be modified. ### Example @@ -1090,61 +1090,48 @@ If the return value of `find` is assigned to a `const_iterator`, the set object // compile with: /EHsc /W4 /MTd #include #include -#include -#include - -using namespace std; - -template void print_elem(const T& t) { - cout << "(" << t << ") "; -} - -template void print_collection(const T& t) { - cout << t.size() << " elements: "; - for (const auto& p : t) { - print_elem(p); - } - cout << endl; -} - -template void findit(const C& c, T val) { - cout << "Trying find() on value " << val << endl; - auto result = c.find(val); - if (result != c.end()) { - cout << "Element found: "; print_elem(*result); cout << endl; - } else { - cout << "Element not found." << endl; - } -} +using namespace std; // std c++ libs implemented in std -int main() +void main() { - set s1({ 40, 45 }); - cout << "The starting set s1 is: " << endl; - print_collection(s1); - - vector v; - v.push_back(43); - v.push_back(41); - v.push_back(46); - v.push_back(42); - v.push_back(44); - v.push_back(44); // attempt a duplicate - - cout << "Inserting the following vector data into s1: " << endl; - print_collection(v); - - s1.insert(v.begin(), v.end()); - - cout << "The modified set s1 is: " << endl; - print_collection(s1); - cout << endl; - findit(s1, 45); - findit(s1, 6); + set, allocator> s1{5, 8, 12}; + + // find() returns an iterator that points to the first element + // that has the same key as the value passed to the find function. + // If no such element exists, the iterator equals end(). + + set, allocator>::iterator it; + + // Is 8 in the set? + it = s1.find(8); + if (it != s1.end()) + { + cout << "Found 8" << endl; + } + else + { + cout << "Didn't find 8" << endl; + } + + // Is 6 in the set? + it = s1.find(6); + if (it != s1.end()) + { + cout << "Found 6" << endl; + } + else + { + cout << "Didn't find 6" << endl; + } } ``` +```output +Found 8 +Didn't find 6 +``` + ## `get_allocator` Returns a copy of the allocator object used to construct the set. From 3d1e773645d6fb0aef7a5e71123781d426915c44 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 16 Jan 2026 16:50:35 -0800 Subject: [PATCH 222/619] update header --- docs/standard-library/set-class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/set-class.md b/docs/standard-library/set-class.md index 0d8b7a74316..3fb4d1f5de9 100644 --- a/docs/standard-library/set-class.md +++ b/docs/standard-library/set-class.md @@ -1084,7 +1084,7 @@ The member function returns an iterator that points to the element in the set th If the return value of `find` is assigned to a `const_iterator`, the set object can't be modified. If the return value of `find` is assigned to an `iterator`, the set object can be modified. -### Example +### Example of set::find() ```cpp // compile with: /EHsc /W4 /MTd From 7a2a3aca5f2dd25a1a455c6e1564510f720f82a1 Mon Sep 17 00:00:00 2001 From: Eve Silfanus Date: Tue, 20 Jan 2026 16:25:27 -0800 Subject: [PATCH 223/619] File and images update --- ...indows.md => build_performance_windows.md} | 111 +++++++++--------- docs/build-insights/media/copilot-signin.png | Bin 34001 -> 0 bytes .../media/copilot-usage-menu.png | Bin 13063 -> 0 bytes ...auth.png => vs-account-authentication.png} | Bin docs/build-insights/media/windows-uac.png | Bin 37564 -> 0 bytes .../media/windows-user-account-control.png | Bin 0 -> 37212 bytes 6 files changed, 56 insertions(+), 55 deletions(-) rename docs/build-insights/{copilot_build_performance_windows.md => build_performance_windows.md} (50%) delete mode 100644 docs/build-insights/media/copilot-signin.png delete mode 100644 docs/build-insights/media/copilot-usage-menu.png rename docs/build-insights/media/{vs-account-auth.png => vs-account-authentication.png} (100%) delete mode 100644 docs/build-insights/media/windows-uac.png create mode 100644 docs/build-insights/media/windows-user-account-control.png diff --git a/docs/build-insights/copilot_build_performance_windows.md b/docs/build-insights/build_performance_windows.md similarity index 50% rename from docs/build-insights/copilot_build_performance_windows.md rename to docs/build-insights/build_performance_windows.md index d5024193c4d..64265d93c7b 100644 --- a/docs/build-insights/copilot_build_performance_windows.md +++ b/docs/build-insights/build_performance_windows.md @@ -1,4 +1,12 @@ -# Getting Started with GitHub Copilot build performance for Windows  +--- +title: "Get Started with GitHub Copilot build performance for Windows" +description: "Learn how to use GitHub Copilot build performance for Windows to analyze C++ builds, identify expensive headers and templates, and automatically optimize build times in Visual Studio 2026." +ms.date: 1/20/2026 +helpviewer_keywords: ["GitHub Copilot build performance", "C++ Build Insights", "build time optimization", "header file analysis", "template instantiation", "Visual Studio build performance"] +ms.topic: how-to +--- + +# Get Started with GitHub Copilot build performance for Windows  The GitHub Copilot build performance for Windows analyzes your C++ builds and highlights expensive headers, templates, and functions so you can identify and fix build time bottlenecks. GitHub Copilot integrates seamlessly with Visual Studio, reducing complexity and improving developer productivity. @@ -12,19 +20,19 @@ The GitHub Copilot build performance for Windows analyzes your C++ builds and hi To use GitHub Copilot build performance for Windows, you must install the latest available **Visual Studio 2026**. -[Installation Guide](https://learn.microsoft.com/en-us/visualstudio/install/install-visual-studio?view=visualstudio) +[Installation Guide](/visualstudio/install/install-visual-studio) Visual Studio 2026 supports **side-by-side installation** with older versions. You do not need to uninstall previous versions or other release channels. Installing Visual Studio 2026 will not interfere with your existing development environment.  ### Before you begin  -After installing the Visual Studio Installer, ensure the following components are selected under the **Desktop development with C++** [workload](https://learn.microsoft.com/en-us/visualstudio/install/install-visual-studio?view=visualstudio#step-5---choose-individual-components-optional:~:text=proceeding%20with%20installation.-,Step%204%20%2D%20Choose%20workloads,-After%20you%20install) during installation: +After installing the Visual Studio Installer, ensure the following components are selected under the **Desktop development with C++** [workload](/visualstudio/install/install-visual-studio#step-4---choose-workloads) during installation: - C++ Build Insights - C++ profiling tools - C++ CMake tools for Windows (required for CMake projects)  -:::image type="complex" source="./media/vs-installer-options.png" alt-text="Screenshot of Visual Studio Installer showing selected options for Desktop development with C++."::: +:::image type="complex" source="./media/vs-installer-options.png" alt-text="This installer view highlights the available optional components within the Desktop development with C++ workload, helping users confirm that tools required for build analysis and performance optimization are included during setup."::: The list shows C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are all selected for installation. :::image-end::: @@ -38,31 +46,24 @@ GitHub Copilot build performance for Windows is available to users on GitHub Cop - Your plan type will appear near the top of the page.  -:::image type="complex" source="./media/copilot-subscription.png" alt-text="Banner in GitHub settings indicating Copilot Enterprise is active."::: -The banner shows buttons for Copilot in IDE, CLI, Mobile, GitHub.com, and more features. -:::image-end::: + :::image type="complex" source="./media/copilot-subscription.png" alt-text="Banner in GitHub account settings confirming that GitHub Copilot Enterprise is active, with quick-access buttons for various Copilot features including IDE, CLI, mobile, GitHub.com, and more."::: + This banner provides context for where subscription details are displayed within GitHub’s account settings interface. + :::image-end::: + +- Authenticate in Visual Studio 2026 -- Authenticate in Visual Studio 2026 -Before proceeding, ensure you are signed in to your GitHub account in Visual Studio. + Before proceeding, ensure you are signed in to your GitHub account in Visual Studio. - Click on your profile picture in the upper-right corner of Visual Studio to confirm your GitHub login status. - :::image type="complex" source="./media/vs-account-auth.png" alt-text="Visual Studio account dropdown showing GitHub EMU account."::: - The dropdown displays the GitHub EMU account with active status and sync indicator. - :::image-end::: + :::image type="complex" source="./media/vs-account-authentication.png" alt-text="Visual Studio account dropdown showing an active login session with a Microsoft account and a connected GitHub account, both marked as active and synced."::: + The dropdown displays the GitHub account with active status and sync indicator. + :::image-end::: - If you are not signed in, open the GitHub Copilot Chat and follow the sign-in instructions from the pop-up window. - :::image type="complex" source="./media/copilot-signin.png" alt-text="GitHub Copilot sign-in window with authentication options."::: - The window shows options to continue with GitHub or Google, and links to terms and privacy policy. - :::image-end::: - - Once authenticated, you can verify your plan by selecting Copilot Usage from the dropdown menu under the GitHub Copilot badge. - :::image type="complex" source="./media/copilot-usage-menu.png" alt-text="Visual Studio dropdown menu under Copilot badge."::: - The menu lists options like Copilot Usage, Open Chat Window, Settings, Learn More, GitHub Copilot Walkthrough, and Manage Copilot Subscription. - :::image-end::: - ### Enable Template Collection Template instantiation time collection is off by default to minimize analysis overhead. To turn it on: @@ -73,29 +74,29 @@ Template instantiation time collection is off by default to minimize analysis ov 3. Select **Collect Template Instantiation**. -:::image type="complex" source="./media/build-insights-options.png" alt-text="Visual Studio Build Insights options dialog."::: +:::image type="complex" source="./media/build-insights-options.png" alt-text="Build Insights settings page in Visual Studio Options with the Collect template instantiation checkbox enabled, displaying trace collection configurations for analysis."::: The dialog shows trace collection settings with the Collect template instantiation checkbox selected. :::image-end::: -*Learn more:* [Troubleshoot template instantiation impact on build time | Microsoft Learn](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/build-insights-template-view?view=msvc-170) +*Learn more:* [Troubleshoot template instantiation impact on build time | Microsoft Learn](/cpp/build-insights/tutorials/build-insights-template-view) ## Workflow GitHub Copilot build performance on Windows is available via the GitHub Copilot chat pane. Users can access this functionality through the Agent feature within the chat interface. -:::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="GitHub Copilot chat pane showing agent selection."::: +:::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="GitHub Copilot chat pane showing agent selection. The GitHub Copilot build performance on Windows is highlighted as the option to select."::: The pane shows GitHub Copilot build performance for Windows selected to optimize C++ build, with other agents listed. :::image-end::: Before submitting a request to the GitHub Copilot, select your preferred model. -:::image type="complex" source="./media/model-select.png" alt-text="Dropdown menu in Copilot chat for selecting AI models."::: -The menu includes GPT-5, GPT-5.1, Claude, Gemini, and other available AI models. +:::image type="complex" source="./media/model-select.png" alt-text="Model selection menu in Copilot Chat showing available AI models including GPT-5, GPT-5.1, Claude, and Gemini, with usage rate indicators."::: +This dropdown provides context on the range of AI models available when initiating a performance analysis. :::image-end::: Instruct GitHub Copilot to improve the build performance of your selected project. You can add additional context and information so that GitHub Copilot can create suggestions that match the needs of your project. -:::image type="complex" source="./media/copilot-build-request.png" alt-text="Copilot chat window with build performance request."::: +:::image type="complex" source="./media/copilot-build-request.png" alt-text="Copilot Chat interface where the user has entered a request for build performance improvement using GitHub Copilot build performance on Windows."::: The window shows GitHub Copilot build performance for Windows with user message requesting build performance improvement for the project. :::image-end::: @@ -103,20 +104,20 @@ The window shows GitHub Copilot build performance for Windows with user message To analyze the build performance of the selected project, Visual Studio needs elevated permissions. The Build Insights tool needs to be enabled for a first-time user to kickstart the build performance analysis. -*Learn more:* [Build Insights needs additional permissions | Microsoft Learn](https://learn.microsoft.com/en-us/cpp/build-insights/elevate-note?view=msvc-170&f1url=%3FappId%3DDev18IDEF1%26l%3DEN-US%26k%3Dk(bi_permissions)%26rd%3Dtrue) +*Learn more:* [Build Insights needs additional permissions | Microsoft Learn](/cpp/build-insights/elevate-note) -:::image type="complex" source="./media/build-insights-permission.png" alt-text="Visual Studio dialog asking to run Build Insights tool."::: -The dialog requests permission to analyze build performance, with Confirm and Deny buttons. +:::image type="complex" source="./media/build-insights-permission.png" alt-text="Visual Studio dialog titled Run Build Insights requesting permission to start build analysis, with Confirm and Deny buttons."::: +This dialog appears when Visual Studio is preparing to launch the profiling tools necessary for trace generation. :::image-end::: A one-time elevated request is then needed to capture the MSVC compiler traces. -:::image type="complex" source="./media/msvc-elevation.png" alt-text="Microsoft Visual Studio dialog requesting permission to capture MSVC compiler traces."::: -The dialog shows options for Yes and No to allow trace capture. +:::image type="complex" source="./media/msvc-elevation.png" alt-text="Microsoft Visual Studio prompt requesting elevated permissions for Build Insights to collect MSVC compiler traces, displaying Yes and No options."::: +This prompt provides system-level acknowledgment of the resource access required for tracing. :::image-end::: -:::image type="complex" source="./media/windows-uac.png" alt-text="User Account Control dialog for Windows Command Processor."::: -The UAC dialog asks to allow Windows Command Processor to make changes to the device, with Yes and No buttons. +:::image type="complex" source="./media/windows-user-account-control.png" alt-text="Windows User Account Control dialog asking whether to allow the Windows Command Processor to make changes, with Yes and No choices."::: +This UAC dialog is part of Windows’ layer of elevation confirmation and appears when enabling Build Insights for the first time. :::image-end::: If the one-time elevated request is denied, the Build Insights operation is cancelled due to lack of rights to continue. @@ -124,19 +125,19 @@ If the one-time elevated request is denied, the Build Insights operation is canc You will guide GitHub Copilot through the process of improving the build time by providing permission, as needed, to run tools. Additional permissions may be required to run PowerShell scripts. -:::image type="complex" source="./media/terminal-permission.png" alt-text="Copilot chat window prompting user to confirm running a terminal command."::: -The prompt shows options to always allow or allow in this session. +:::image type="complex" source="./media/terminal-permission.png" alt-text="Copilot Chat notification prompting the user to authorize execution of a terminal command, offering Confirm, Always allow, and Allow in this session."::: +This prompt appears within the chat flow when Copilot requires permission to run terminal commands necessary for optimization. :::image-end::: The GitHub Copilot build performance for Windows goes through multiple iterations of code implementation to make the build faster. -:::image type="complex" source="./media/build-analysis-complete.png" alt-text="Screenshot showing analysis complete status and performance improvement summary."::: -The display shows build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement), with a note that further improvement is possible. +:::image type="complex" source="./media/build-analysis-complete.png" alt-text="The display shows build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement), with a note that further improvement is possible."::: +This image provides contextual insight into how build metrics are presented after an optimization iteration. :::image-end::: After GitHub Copilot completes the request, a summary of the changes and build performance impact is displayed. The build performance summary changes depending on each iteration of the agent. -:::image type="complex" source="./media/build-summary.png" alt-text="Screenshot of build performance summary showing before and after optimization metrics."::: +:::image type="complex" source="./media/build-summary.png" alt-text="A summary view comparing build performance before and after optimization. The report shows build time dropping from about 110.7 seconds to 34.1 seconds, with major header bottlenecks significantly reduced. It highlights a 69% overall improvement and faster incremental rebuilds after precompiled headers were enabled."::: The summary displays top bottlenecks and quantitative results of the performance improvements. :::image-end::: @@ -148,46 +149,46 @@ The GitHub Copilot build performance for Windows can be accessed through other e - Button from build menu - :::image type="complex" source="./media/build-menu-improve.png" alt-text="Visual Studio Build menu with Improve build performance option highlighted."::: + :::image type="complex" source="./media/build-menu-improve.png" alt-text="Visual Studio Build menu expanded with the Improve build performance option highlighted under Run Build Insights."::: The menu shows the Improve build performance option under Run Build Insights. :::image-end::: -Clicking the Improve build performance button prompts GitHub Copilot chat + Clicking the Improve build performance button prompts GitHub Copilot chat - :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with Improve Build Performance prompt."::: - The window shows GitHub Copilot build performance for Windows ready to assist with optimization. - :::image-end::: + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with Improve Build Performance prompt."::: + The window shows GitHub Copilot build performance for Windows ready to assist with optimization. + :::image-end::: - Button from solution context menu - :::image type="complex" source="./media/solution-menu-improve.png" alt-text="Visual Studio solution context menu showing Improve build performance option."::: + :::image type="complex" source="./media/solution-menu-improve.png" alt-text="Solution context menu in Visual Studio showing Improve build performance on Solution among the available commands."::: The context menu displays the Improve build performance on Solution option. :::image-end::: -Clicking the Improve build performance on Solution button prompts the GitHub Copilot chat + Clicking the Improve build performance on Solution button prompts the GitHub Copilot chat - :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with Improve Build Performance prompt."::: - The window shows GitHub Copilot build performance for Windows ready to assist with optimization. + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with a request to help improve the build performance of this project."::: + The window shows GitHub Copilot build performance for Windows request to assist with build optimization. :::image-end::: - Button from Build Insights view - :::image type="complex" source="./media/insights-improve-button.png" alt-text="Build Insights diagnostics session view with Improve button highlighted."::: + :::image type="complex" source="./media/insights-improve-button.png" alt-text="Build Insights diagnostics session interface with the Improve button visible for triggering optimization using existing trace data."::: The view shows the diagnostics session with the Improve button available for optimization. :::image-end::: -Clicking the Improve button prompts the GitHub Copilot chat. This button uses data from the existing build insights trace results and does not trigger a new build insights tool execution until the current proposed changes have been processed. + Clicking the Improve button prompts the GitHub Copilot chat. This button uses data from the existing build insights trace results and does not trigger a new build insights tool execution until the current proposed changes have been processed. - :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Copilot chat window with GitHub Copilot build performance for Windows focusing on includes optimization."::: - The chat shows a user message focusing on improving build performance of includes. + :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Copilot chat with request to help improve the build performance of this project, focusing on includes."::: + Copilot Chat showing a user request specifically targeting include file optimization as part of the build performance improvements. :::image-end::: ## See Also -[Build Insights function view](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/build-insights-function-view?view=msvc-170) +[Build Insights function view](/cpp/build-insights/tutorials/build-insights-function-view) -[Build Insights included files view](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/build-insights-included-files-view?view=msvc-170) +[Build Insights included files view](/cpp/build-insights/tutorials/build-insights-included-files-view) -[vcperf and Windows Performance Analyzer](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/vcperf-and-wpa?view=msvc-170) +[vcperf and Windows Performance Analyzer](/cpp/build-insights/tutorials/vcperf-and-wpa) -[Windows Performance Analyzer basics](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/wpa-basics?view=msvc-170) +[Windows Performance Analyzer basics](/cpp/build-insights/tutorials/wpa-basics) \ No newline at end of file diff --git a/docs/build-insights/media/copilot-signin.png b/docs/build-insights/media/copilot-signin.png deleted file mode 100644 index 05ae12cad457ebb15227f832d38ab9d1887c4f16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34001 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 diff --git a/docs/build-insights/media/vs-account-auth.png b/docs/build-insights/media/vs-account-authentication.png similarity index 100% rename from docs/build-insights/media/vs-account-auth.png rename to docs/build-insights/media/vs-account-authentication.png diff --git a/docs/build-insights/media/windows-uac.png b/docs/build-insights/media/windows-uac.png deleted file mode 100644 index add461eb50fd62ad8f0b77384242b80fa0a2f2f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37564 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 diff --git a/docs/build-insights/media/windows-user-account-control.png b/docs/build-insights/media/windows-user-account-control.png new file mode 100644 index 0000000000000000000000000000000000000000..59a96159289fe7a8e74a755dfc0b9df9cf7372d6 GIT binary patch literal 37212 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 Date: Tue, 20 Jan 2026 16:32:16 -0800 Subject: [PATCH 224/619] Renamed markdown file --- .../{build_performance_windows.md => build-performance.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/build-insights/{build_performance_windows.md => build-performance.md} (100%) diff --git a/docs/build-insights/build_performance_windows.md b/docs/build-insights/build-performance.md similarity index 100% rename from docs/build-insights/build_performance_windows.md rename to docs/build-insights/build-performance.md From d72280a8be53619a57097c0dab1f4bc24693f093 Mon Sep 17 00:00:00 2001 From: Eve Silfanus Date: Wed, 21 Jan 2026 10:24:56 -0800 Subject: [PATCH 225/619] Adjusted uac image --- .../media/windows-user-account-control.png | Bin 37212 -> 121314 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/build-insights/media/windows-user-account-control.png b/docs/build-insights/media/windows-user-account-control.png index 59a96159289fe7a8e74a755dfc0b9df9cf7372d6..7bee87290d720d248cddfd10fa160fb8a6ae3c65 100644 GIT binary patch literal 121314 zcmd3OWmHvL^zWgOMhWQ@kXDhDZbd?oMmi-Wr5mI%P^3WtrKLq$1f`|Bluqe>b9?{q zeShP9d3Sin)hp-hefC;w&R@;*TwPU>5RV!Ug+dW3E6F`Tq0lSgUn5*>_&(30qYhDb@4%2PFmCR z@mi{fk7nywoBv{p{jxX{)&nKRkjq{PY>e_h_YP0htn59;$Ky0!j5J)s z<*YlfL|+bNWo5dwZ1J*d$Yn~>-BMUr5KB%zwK)Au$z3h=IN2)gnL@i{|9k6B!Yu($ zDHKZH*$;*5bZ+E)E`7do)r(v4zW4Rvse_cV-sSvDFf@e}&g)3B&5vGA6oo&F@J z(`yY?2m0RAwZ8`Eg;S=lWaj0__vyy;+6n{|NM$rvV&plkALca(7GVUs%r;l9p58PW zU!cTFO?14y{=93yKG$`>_T7$1V$1C5?WIoH4P*HiXm7MBwdaH4XE#%BYz* zRG%@vxbVQFtW0eQU2pw8hpR9BdSa1_O-!^tdwRfiue!+TMse$`lb<1P4#(O`g{Wvz z_OyWr@-Fw#a!V=%WCIA$f*vyGeY5vQk8#i6y(kLT*dDi-P$5nqzU{YsRIN0;bh+qb z+w#@SNtGp)kxvbe@b&Lnq4({5N~N0~-Q1{-cM+!TPEW=seMOhr-{-jQ%(UnvyrE7O z`kGxnktrf;mB}z@{|(*i`}Y{w(xAdx2}s>OJr@KpT$J&v2Cm02hbyqTN=yxf(}$nG%$(rzrX zZrN9rq@H5!CM4H+(8u!Sl!~0$j%rx(tKHUyk=hHPFBKM1V z@>Dpb0h?0a=keOAvv3hdWdB*CLsgS$Y1XKR>_ke zpE0_=TaK)|d!8IhW%rdl!3{!bkf3IRf83FFQgt@y{BGpiwJ(7@ zxX>pwy;F;(&ZWg|v(+uje#W7yxxtegQmU#%X`X+TQ|=@YOOwpZ&Z5PzO0PZD)iy4D ztD*lesw-K@?9b2F96Z-e+R84{i-frJ?%iVSP?-|V?Hk|!Yfq`6!S~C>Vj`5c@;INV zG0Epn4KH>xU*(AVoXD@ReT76?qHve%zv|Uzoc!pllU~Y^261G4{CMeL+Fw%8ZY;u2 z*>`*FNpYs*bUleu`X>%m!{wEFMqJhYd|7v?L<<2Sq4`?JhL*qNT#QQ06cb)F8+8Yd z2UF2BE@MW#STZnS!?Vh!t-gz;{Up&={L8V<@aB0W1Dt}Q7;X{x*av}C8Y$B>oLY3B z32G;af|~-Y(w||ogb~SVS+Z@^Zc3P2S~lC2Hf}gI4vgW+Cywhl{sTt>uA{(rs4ZNNLBqA8E{yzc88lZ?hO>NUg7Rpx%dyD+;?Z*FQ=R~QJ3jgb zA0=lAit(bx!Y^?7ssMcL?hnz7xbYTL)XG6!4zg};x6hAyLJyBdZtSj)Q}TU1WIo)N{MRyko2yI;>s{_c+0FS)^KIZ9uzFncycUy`n07X9$GH#qQ-WO z?D*F&V-)FqF+YC%STeru&{4*S60D`0E;NjKl&{rfTVc8}QFC}QeL=)vWaM#^Oy*hk zqduLkfHf3ZlJ9_6T&j4&`Mtfanw}=-;-j8G_DMc@@#q;R;eTt)l$S*=g(g6K$+C

7qCs5oR<%;4i{D~nOz6;L_|CoA>py1UqTL^2 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 z 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 z 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 Z?RfMJA|yu@z8r%;syA;deNi-h@jsL%VjTbg literal 37212 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 Date: Thu, 22 Jan 2026 00:02:29 +0000 Subject: [PATCH 226/619] New article: troubleshoot vcredist install issues --- ...oubleshoot-vcredist-installation-issues.md | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 docs/windows/troubleshoot-vcredist-installation-issues.md diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md new file mode 100644 index 00000000000..aaba4d0846f --- /dev/null +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -0,0 +1,82 @@ +--- +title: "Troubleshoot Visual C++ Redistributable installation issues" +description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable (vcredist)" +author: vicroms +ms.author: viromer +ms.date: 01/21/2025 +ms.topic: troubleshooting-general +helpviewer_keywords: [ "redist","vcredist", "Visual [C++] redistributable" ] +--- +# Troubleshoot Visual C++ Redistributable installation issues + +This guide is for users experiencing issues while installing the Visual C++ +Runtime components using the Visual C++ Redistributable installer or the +Visual Studio Installer. + +If you're experiencing such issues, we recommend that you first attempt +installing the [latest version of the Visual C++ +Redistributable](latest-supported-vc-redist.md). + +## Collect failure logs + +The first step to diagnose an issue with the Visual C++ +Redistributable (vcredist) installer is to collect its failure logs. + +1) Download the [Microsoft Visual Studio and .NET Log Collection + Tool](). +2) Run `Collect.exe` +3) Extract the contents of `%TEMP%/vscollect.zip` + +Once you extract `vscollect.zip`, the vcredist logs are located inside the +`Temp` folder. The relevant log files will be prefixed with the pattern +`dd_vcredist__yyyyMMddHHmmss`. + +In this article, we use these logs to diagnose common issues with the redist +installer. + +## Return Code 1603 + +Issues with the vcredist installer often produce the return code 1603. This is +a generic install failure code produced by the Windows Installer, which is +invoked during the installation of the Visual C++ Runtime components. + +Because many factors can produce a 1603 code, the return code itself is not +enough to diagnose the root cause of the issue. In such cases, the log files +usually contain relevant information that can lead to a solution. + +The [Common issues](#common-issues) section describes examples of how to +diagnose common installation errors and steps that may resolve them. If your +issue is not found here, then follow the instructions to [report an issue in +the Visual C++ Redistributable installer](#my-issue-is-not-here). + +## Common issues + +### Binary file is being used + +**Diagnose** + +**Steps to resolve** + +1 - Close all currently running applications. + +### Antivirus or third-party software interference + +**Diagnose** + +**Steps to resolve** + +1 - Disable any antivirus or third-party software that may have a lock on + components that are part of the Visual C++ Redistributable. + +### Corrupted Windows Installer cache + +**Diagnose** + +**Steps to resolve** + +1 - Try using the Windows Installer troubleshooting tool. + +## My issue is not here + +TBD: Instructions to report an issue with the redist installer. + From c83222bbc133c9ed989fb407116c0c4d0ff230f2 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 21 Jan 2026 16:47:05 -0800 Subject: [PATCH 227/619] first edit pass --- docs/build-insights/build-performance.md | 188 ++++++++---------- .../media/copilot-build-perf-select.png | Bin 27834 -> 28237 bytes .../media/copilot-subscription.png | Bin 28848 -> 29363 bytes 3 files changed, 85 insertions(+), 103 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 64265d93c7b..853b6f7a01d 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -1,194 +1,176 @@ --- title: "Get Started with GitHub Copilot build performance for Windows" description: "Learn how to use GitHub Copilot build performance for Windows to analyze C++ builds, identify expensive headers and templates, and automatically optimize build times in Visual Studio 2026." -ms.date: 1/20/2026 +ms.date: 01/21/2026 helpviewer_keywords: ["GitHub Copilot build performance", "C++ Build Insights", "build time optimization", "header file analysis", "template instantiation", "Visual Studio build performance"] ms.topic: how-to --- -# Get Started with GitHub Copilot build performance for Windows  +# Get started with GitHub Copilot build performance for Windows  -The GitHub Copilot build performance for Windows analyzes your C++ builds and highlights expensive headers, templates, and functions so you can identify and fix build time bottlenecks. GitHub Copilot integrates seamlessly with Visual Studio, reducing complexity and improving developer productivity. +The GitHub Copilot build performance for Windows analyzes your C++ builds and highlights expensive headers, template instantiations, and functions so you can identify and fix build time bottlenecks. GitHub Copilot is integrated with Visual Studio. ## Prerequisites  -- Windows 10 or later. +- Visual Studio 2026. Install the latest available version here: [Installation Guide](/visualstudio/install/install-visual-studio) +- MSVC Build Tools version 14.50 or later. - An MSBuild or CMake project. -- MSVC Build Tools version 14.50. - -## Installing Visual Studio 2026 - -To use GitHub Copilot build performance for Windows, you must install the latest available **Visual Studio 2026**. - -[Installation Guide](/visualstudio/install/install-visual-studio) - -Visual Studio 2026 supports **side-by-side installation** with older versions. You do not need to uninstall previous versions or other release channels. Installing Visual Studio 2026 will not interfere with your existing development environment.  +- Windows 10 or later. ### Before you begin  -After installing the Visual Studio Installer, ensure the following components are selected under the **Desktop development with C++** [workload](/visualstudio/install/install-visual-studio#step-4---choose-workloads) during installation: +In the Visual Studio 2026 Installer, ensure the following components are selected in the **Desktop development with C++** [workload](/visualstudio/install/install-visual-studio#step-4---choose-workloads): -- C++ Build Insights -- C++ profiling tools -- C++ CMake tools for Windows (required for CMake projects)  +- **C++ Build Insights** +- **C++ profiling tools** +- **C++ CMake tools for Windows (required for CMake projects)** -:::image type="complex" source="./media/vs-installer-options.png" alt-text="This installer view highlights the available optional components within the Desktop development with C++ workload, helping users confirm that tools required for build analysis and performance optimization are included during setup."::: +:::image type="complex" source="./media/vs-installer-options.png" alt-text="Screenshot of the Visual Studio installer. The desktop development with C++ section is highlighted and C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are selected."::: The list shows C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are all selected for installation. :::image-end::: -## Verify GitHub Copilot subscription - -GitHub Copilot build performance for Windows is available to users on GitHub Copilot Pro, Pro+, Business, and Enterprise plans.   +### Verify your GitHub Copilot subscription -- Verify your subscription  +To use GitHub Copilot build performance for Windows, you need a GitHub Copilot Pro, Pro+, Business, or Enterprise subscription. - - Log in to [https://github.com](https://github.com/) and access the [Copilot features](https://github.com/settings/copilot/features) +Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitHub account in Visual Studio 2026: - - Your plan type will appear near the top of the page.  +1. Verify your GitHub Copilot subscription: + - Sign in to [https://github.com](https://github.com/). + - Select your profile picture and then [Copilot settings](https://github.com/settings/copilot/features). Your plan type appears near the top of the page: - :::image type="complex" source="./media/copilot-subscription.png" alt-text="Banner in GitHub account settings confirming that GitHub Copilot Enterprise is active, with quick-access buttons for various Copilot features including IDE, CLI, mobile, GitHub.com, and more."::: - This banner provides context for where subscription details are displayed within GitHub’s account settings interface. + :::image type="complex" source="./media/copilot-subscription.png" alt-text="Screenshot of the users GitHub Copilot information."::: + The Copilot settings page shows the type of subscription. In this case, the user has GitHub Copilot Enterprise. :::image-end::: -- Authenticate in Visual Studio 2026 +1. Sign in to your GitHub account in Visual Studio: - Before proceeding, ensure you are signed in to your GitHub account in Visual Studio. + - If you're not signed in to GitHub in Visual Studio, open the GitHub Copilot Chat and follow the sign-in instructions in the pop-up window. + - Select your profile picture in Visual Studio to confirm your GitHub sign-in status: - - Click on your profile picture in the upper-right corner of Visual Studio to confirm your GitHub login status. - - :::image type="complex" source="./media/vs-account-authentication.png" alt-text="Visual Studio account dropdown showing an active login session with a Microsoft account and a connected GitHub account, both marked as active and synced."::: - The dropdown displays the GitHub account with active status and sync indicator. + :::image type="complex" source="./media/vs-account-authentication.png" alt-text="Screenshot of the account dropdown in Visual Studio."::: + The account dropdown shows that a Microsoft account and a GitHub account are both signed in and active. :::image-end::: - - If you are not signed in, open the GitHub Copilot Chat and follow the sign-in instructions from the pop-up window. - - - Once authenticated, you can verify your plan by selecting Copilot Usage from the dropdown menu under the GitHub Copilot badge. +### Enable template collection -### Enable Template Collection +To minimize analysis overhead, the template instantiation time collection is off by default. To turn it on: -Template instantiation time collection is off by default to minimize analysis overhead. To turn it on: - - 1. In Visual Studio, go to **Tools** \> **Options**. - - 2. In the **Options** dialog, expand **Build Insights** in the left navigation. - - 3. Select **Collect Template Instantiation**. + 1. In Visual Studio, go to **Tools** > **Options**. + 1. In the **Options** dialog, expand **Build Insights**. + 1. Select **Collect Template Instantiation**. :::image type="complex" source="./media/build-insights-options.png" alt-text="Build Insights settings page in Visual Studio Options with the Collect template instantiation checkbox enabled, displaying trace collection configurations for analysis."::: The dialog shows trace collection settings with the Collect template instantiation checkbox selected. :::image-end::: -*Learn more:* [Troubleshoot template instantiation impact on build time | Microsoft Learn](/cpp/build-insights/tutorials/build-insights-template-view) +For more information about template instantiation on build time, see [Troubleshoot template instantiation impact on build time | Microsoft Learn](/cpp/build-insights/tutorials/build-insights-template-view) -## Workflow +## Troubleshoot build performance with GitHub Copilot -GitHub Copilot build performance on Windows is available via the GitHub Copilot chat pane. Users can access this functionality through the Agent feature within the chat interface. +View GitHub Copilot build performance on Windows via the GitHub Copilot chat pane. Choose the **Agent** feature within the chat interface: -:::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="GitHub Copilot chat pane showing agent selection. The GitHub Copilot build performance on Windows is highlighted as the option to select."::: -The pane shows GitHub Copilot build performance for Windows selected to optimize C++ build, with other agents listed. +:::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="Screenshot of the GitHub Copilot chat pane."::: +The GitHub Copilot chat pane shows a list of agents to choose from. Build Perf C p p (optimize your c + + build) is selected. :::image-end::: -Before submitting a request to the GitHub Copilot, select your preferred model. +Select your preferred model in the model drowpdown menu: -:::image type="complex" source="./media/model-select.png" alt-text="Model selection menu in Copilot Chat showing available AI models including GPT-5, GPT-5.1, Claude, and Gemini, with usage rate indicators."::: -This dropdown provides context on the range of AI models available when initiating a performance analysis. +:::image type="complex" source="./media/model-select.png" alt-text="Screenshot of the model selection menu in the Copilot Chat window."::: +This dropdown lists models various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. :::image-end::: -Instruct GitHub Copilot to improve the build performance of your selected project. You can add additional context and information so that GitHub Copilot can create suggestions that match the needs of your project. +Instruct GitHub Copilot to improve the build performance of your selected project. You can add extra context so that GitHub Copilot can better make suggestions to match the needs of your project. -:::image type="complex" source="./media/copilot-build-request.png" alt-text="Copilot Chat interface where the user has entered a request for build performance improvement using GitHub Copilot build performance on Windows."::: -The window shows GitHub Copilot build performance for Windows with user message requesting build performance improvement for the project. +:::image type="complex" source="./media/copilot-build-request.png" alt-text="Screenshot of the GitHub Copilot Chat window."::: +The GitHub Copilot chat window shows @ Build Per Cpp: Help me improve the build performance of this project. :::image-end::: -### Enable Build Insights +If this is your first time using GitHub Copilot build performance for Windows, you'll need to enable Build Insights and grant elevated permissions to collect MSVC compiler traces. -To analyze the build performance of the selected project, Visual Studio needs elevated permissions. The Build Insights tool needs to be enabled for a first-time user to kickstart the build performance analysis. +### Grant additional permissions to run Build Insights -*Learn more:* [Build Insights needs additional permissions | Microsoft Learn](/cpp/build-insights/elevate-note) +Visual Studio needs elevated permissions to analyze build performance. The Build Insights tool needs to be enabled to start the build performance analysis. Once enabled, it stays enabled until you disable it. For more information about these permissions, see [Build Insights needs additional permissions](/cpp/build-insights/elevate-note). Github copilot prompts you to enable Build Insights and grant elevated permissions: -:::image type="complex" source="./media/build-insights-permission.png" alt-text="Visual Studio dialog titled Run Build Insights requesting permission to start build analysis, with Confirm and Deny buttons."::: -This dialog appears when Visual Studio is preparing to launch the profiling tools necessary for trace generation. +:::image type="complex" source="./media/build-insights-permission.png" alt-text="Screenshot of a GitHub Copilot dialog asking to elevate permissions."::: +The dialog indicates that Build Insights (vcperf) needs additional permissions to capture MSVC compiler traces. There are Confirm and Deny buttons. :::image-end::: -A one-time elevated request is then needed to capture the MSVC compiler traces. +Choose **Confirm** to have GitHub Copilot proceed with the request. A Visual Studio dialog then appears prompting you to allow a one-time elevated request: -:::image type="complex" source="./media/msvc-elevation.png" alt-text="Microsoft Visual Studio prompt requesting elevated permissions for Build Insights to collect MSVC compiler traces, displaying Yes and No options."::: -This prompt provides system-level acknowledgment of the resource access required for tracing. +:::image type="complex" source="./media/msvc-elevation.png" alt-text="Screenshot of a Microsoft Visual Studio prompt requesting elevated permissions."::: +The elevation prompt says: Build Insights (vcperf) needs additional permissions to capture MSVC compiler traces. Allow this one-time elevated request? There are Yes and No buttons. :::image-end::: -:::image type="complex" source="./media/windows-user-account-control.png" alt-text="Windows User Account Control dialog asking whether to allow the Windows Command Processor to make changes, with Yes and No choices."::: -This UAC dialog is part of Windows’ layer of elevation confirmation and appears when enabling Build Insights for the first time. +If you choose to grant elevated permissions, the Windows User Account Control dialog appears. Choose **Yes** to grant permission to capture the MSVC compiler traces: + +:::image type="complex" source="./media/windows-user-account-control.png" alt-text="Screenshot of the User Account Control dialog."::: +The dialog asks for permission for the Windows Command Processor, verified publisher Microsoft, to allow this app to make changes to your device. There are Yes and No buttons. :::image-end::: -If the one-time elevated request is denied, the Build Insights operation is cancelled due to lack of rights to continue. +Denying the elevated request will cancel the Build Insights operation. +## Guide GitHub Copilot through the process of improving the build time -You will guide GitHub Copilot through the process of improving the build time by providing permission, as needed, to run tools. Additional permissions may be required to run PowerShell scripts. +As you guide GitHub Copilot through the process of improving the build time, you will be asked to provide permission, as needed, to run tools such as PowerShell scripts: -:::image type="complex" source="./media/terminal-permission.png" alt-text="Copilot Chat notification prompting the user to authorize execution of a terminal command, offering Confirm, Always allow, and Allow in this session."::: -This prompt appears within the chat flow when Copilot requires permission to run terminal commands necessary for optimization. +:::image type="complex" source="./media/terminal-permission.png" alt-text="Screenshot of a Copilot Chat notification."::: +The prompt asks the user to authorize running the command: ls ../src/ in the terminal. The Confirm dropdown offers: Always allow and Allow in this session. There is also a Deny button. :::image-end::: -The GitHub Copilot build performance for Windows goes through multiple iterations of code implementation to make the build faster. +The GitHub Copilot build performance for Windows may go through multiple iterations to find the best way to make the build faster: -:::image type="complex" source="./media/build-analysis-complete.png" alt-text="The display shows build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement), with a note that further improvement is possible."::: -This image provides contextual insight into how build metrics are presented after an optimization iteration. +:::image type="complex" source="./media/build-analysis-complete.png" alt-text="Screenshot of a message in the GitHub Copilot chat window."::: +The message indicates that analysis is complete and the build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement). It indicates there's still room for improvement. :::image-end::: -After GitHub Copilot completes the request, a summary of the changes and build performance impact is displayed. The build performance summary changes depending on each iteration of the agent. +When the analysis is complete, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: -:::image type="complex" source="./media/build-summary.png" alt-text="A summary view comparing build performance before and after optimization. The report shows build time dropping from about 110.7 seconds to 34.1 seconds, with major header bottlenecks significantly reduced. It highlights a 69% overall improvement and faster incremental rebuilds after precompiled headers were enabled."::: -The summary displays top bottlenecks and quantitative results of the performance improvements. +:::image type="complex" source="./media/build-summary.png" alt-text="Screenshot of the build performance summary."::: +The summary shows a before and after optimization summary indicating build time, the top bottleneck, and the top 5 headers that contributed the most to the build time. The report shows build time dropping from 110.7 seconds to 34.1 seconds. It highlights a 69.2% overall improvement and faster incremental rebuilds after enabling precompiled headers. :::image-end::: In this case, build time dropped from **110.7s to 34.1s** after enabling precompiled headers for costly includes, delivering a **69% improvement** and **3.2× faster builds** with near-instant incremental rebuilds. -### Additional entry points +### Other ways to access GitHub Copilot build performance for Windows -The GitHub Copilot build performance for Windows can be accessed through other entry points. +You can access the GitHub Copilot build performance for Windows in these other ways: -- Button from build menu +- The **Build** menu: - :::image type="complex" source="./media/build-menu-improve.png" alt-text="Visual Studio Build menu expanded with the Improve build performance option highlighted under Run Build Insights."::: - The menu shows the Improve build performance option under Run Build Insights. + :::image type="complex" source="./media/build-menu-improve.png" alt-text="Screenshot of the Build menu.""::: + The Build menu option Run Build Insights is expanded to show Build All, Rebuild All, and Improve Build Performance. The latter is selected. :::image-end::: - Clicking the Improve build performance button prompts GitHub Copilot chat +- Select a **Improve build performance** prompt in GitHub Copilot chat: - :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with Improve Build Performance prompt."::: - The window shows GitHub Copilot build performance for Windows ready to assist with optimization. + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Screenshot of the Copilot chat window."::: + The chat window shows a prompt to Improve Build Performance. :::image-end::: -- Button from solution context menu +- **Solution** window context menu: - :::image type="complex" source="./media/solution-menu-improve.png" alt-text="Solution context menu in Visual Studio showing Improve build performance on Solution among the available commands."::: - The context menu displays the Improve build performance on Solution option. + :::image type="complex" source="./media/solution-menu-improve.png" alt-text="A screenshot of the Solution explorer."::: + The context menu shows Build Solution, Build Solution, and so on. Improve build performance on Solution is highlighted. :::image-end::: - Clicking the Improve build performance on Solution button prompts the GitHub Copilot chat + Select **Improve build performance on Solution** to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project. - :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with a request to help improve the build performance of this project."::: - The window shows GitHub Copilot build performance for Windows request to assist with build optimization. + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Screenshot of the Copilot chat window."::: + The chat window shows a prompt to Improve Build Performance. :::image-end::: -- Button from Build Insights view +- Build Insights view: - :::image type="complex" source="./media/insights-improve-button.png" alt-text="Build Insights diagnostics session interface with the Improve button visible for triggering optimization using existing trace data."::: - The view shows the diagnostics session with the Improve button available for optimization. - :::image-end::: + Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project, shown previously. This button uses data from the existing build insights trace results and doesn't trigger a new build insights tool execution until the current changes are processed. - Clicking the Improve button prompts the GitHub Copilot chat. This button uses data from the existing build insights trace results and does not trigger a new build insights tool execution until the current proposed changes have been processed. - - :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Copilot chat with request to help improve the build performance of this project, focusing on includes."::: - Copilot Chat showing a user request specifically targeting include file optimization as part of the build performance improvements. + :::image type="complex" source="./media/insights-improve-button.png" alt-text="Screenshot of the Build Insights view window."::: + The Improve link is highlighted. :::image-end::: -## See Also - -[Build Insights function view](/cpp/build-insights/tutorials/build-insights-function-view) - -[Build Insights included files view](/cpp/build-insights/tutorials/build-insights-included-files-view) - -[vcperf and Windows Performance Analyzer](/cpp/build-insights/tutorials/vcperf-and-wpa) +## See also +[Build Insights function view](/cpp/build-insights/tutorials/build-insights-function-view)\ +[Build Insights included files view](/cpp/build-insights/tutorials/build-insights-included-files-view)\ +[vcperf and Windows Performance Analyzer](/cpp/build-insights/tutorials/vcperf-and-wpa)\ [Windows Performance Analyzer basics](/cpp/build-insights/tutorials/wpa-basics) \ No newline at end of file diff --git a/docs/build-insights/media/copilot-build-perf-select.png b/docs/build-insights/media/copilot-build-perf-select.png index 67e5e0449db8bf47e19beb085dea9be867185371..4bda984a9ca6eb76b6af0a80f52c68fe26c78576 100644 GIT binary patch literal 28237 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 S_(Sh>d!+P4vEaUu-+ut$Y)?P{ literal 27834 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

rneWTid`Kk?g z6F)yBghKeJ+N~&)PF&;n;--4{7LLxfTjpsW0eFf0M$27xjORE=<=lOySoBr4M(XgT zx={Y|Lz=B_deWLp%Tu>b>cD!)P*R}ioW^RPOB@5Ll;bfrlPK#*rEgJc^ zOrnc4skuctw`q$%6;_$sdd)raLu4-#KSQE4s%EjI(ps=es#(gGsBiy8)nqpR7UKi>vZ zCR6s^%5$QwMb`?w)}KH7^A>wpCU|479P2P*`i7>Rh??#efyptn>N4(#yM4A-K5jdn zjB%LQHs9o~9x_MMx*HAf@h_!OmxgPI=`rc^llL8b#_qi<%gdli@PnwO_o7n>QMu=s zE0N(Un?U2k1UQ&wJRe$G&tLq)O%XD^-Wr&}t)Wwno~k06(KkFiBToNkH>>ktCd$an zoEgwDeDfc5)b;LbkJHU?@7KfDYq1!9RN5pRtfS;Ax@q|&jWm&aRAjq~px#CdST%#F zwy~6zlBT$D%(i3jq|CN?rJ!yi3lqDnYj7^u=nY)BPW3yira_e;#WFwpn!1SH{qrY* zMD*?cSbMkIpLkt)ciFe-F3Q@iDIo8Ra4HTx4G9XwS8l=@DjJQZ_f)jPlLqI}9Gy=Wok@!;2b#R5Z~ewFqF z7Ni-<1paRYclLitt8KdD%e_jBZxB%p14Yh$uO6I^c_6T|Fc%d|`J*4iyns=kNaz`cKqB>+S!JGZ4E;GMuey#PVA#8hIb}rJzuN;2V*H z0bLdYReLm0F!Sy%4+iRIyb%72KR+>0ZyBU$5Z4e1WT22QNwdzCnxCIXtagN9-4;z! zeZ)-x9$|-WjV54^kF#s4ptAt??FlGtnSJ%I1Xqk^D;u?0EaxgUcGowq;9WL=Su~U^ z<>B)*f~2d+q-BovXQCK6s_^+Bk65n0K|$I0Q)Kf2P~#||5Hz`NCqlKznZh}-`^hKv zHgfoYcll9Mptr^EXl1ER_o>NTM0swtafsSa`LNejR8ZsYNy>jWD=v`;a)hu5B7Qm+ zXlrWvzI#U|R-ptX6v}pMTk!I-6(U7e=)4f6vlpdv6xc0XE9dd5GgQ4$X=&JhlS*(W z6=FEEMJ)`C*>7(*+UE;r4A4p_BF8&X{=IG^oTDI@Elw~a2)2JF{hQ+50GCgN<6JZ?^;1}l<)U%kPnG#<>?r{a5xV!s!M%Jyfot=?43 zdt7p71f2~a3IU_w7`AqGDT1z|JjdG(qUm?zB7_`6F^v~c&AR#Q0Kk;?c5y^P0)D|@ z?g^dkB$RFV6>YE5Ve9y0jI6#OxH@wS3xF@0@6;+AmRf)KbGo&sQ1R~FyNH)LIg=c* zQ7f0ZQo3<~6a%yd=@;O~&t$15WpBYrf}tO`4SFATl zVwM@J-I-u9#7VC+Ps>AlY*nnP{zFD{Ina+DKD^?!;m4Q?^M+VzheW%;AQZ6(k(m#^ z@Ed@dQ>CM}jdkazcF58|xCclxK`K$~MlcKr9|N7}B38;Y5=e5VT)oE0dCSP?W8&NS zj#w7Z^;ETCk-%o04p-bAmQRCmkp-Fuggwxa_+Y!guUqruv0&H5ix=;REqdC6Q~?Es zqNJoG{>LaJ7TVsiwR?mF2g5v~a+y#BktI_VUW7>vKal-Wa$e4ZEB`=SyS)tx*d;u& zejrc?I|E=0S~wJ-U!D+7kVDO z4>1+^B!59HUl^YLwk0Rf78^kj#3G;{P`LpU*emJqs#hH&{D5wFC%$)^D#(68>Cg6I zL~?Tea2e1E{oa{>!x5kK%*@P`(}zBMoql~>Ln{8cYTQ;QY#h)v^~p0o7GT`tL<<#?O$NEJd#51=lv058KwAeoC z+mU4)2st^d8?ainpYVSSW(ZJRGup_072GmIekFM&oW&a!PgPXm6RVBK1MUF@_-=1Dl&Emnl9WVbhQCY>?>gmOzEFrp$pQ{~&uf^U@#Rs`1+Y@!sov--U??

9ghb2Y;oGGWFk@jdKmWDUKRAeFLtx&v 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 A_y7O^ diff --git a/docs/build-insights/media/copilot-subscription.png b/docs/build-insights/media/copilot-subscription.png index 6cec3744fdda0405837988d16d05ecde7f0d1b60..9147ff7177c02eaa1926f0856b2cff693c9d1a45 100644 GIT binary patch literal 29363 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¬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 Date: Wed, 21 Jan 2026 17:02:15 -0800 Subject: [PATCH 228/619] fix link --- docs/build-insights/build-performance.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 853b6f7a01d..ab2e82933f3 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -1,6 +1,6 @@ --- title: "Get Started with GitHub Copilot build performance for Windows" -description: "Learn how to use GitHub Copilot build performance for Windows to analyze C++ builds, identify expensive headers and templates, and automatically optimize build times in Visual Studio 2026." +description: "Learn how to use GitHub Copilot to improve build times." ms.date: 01/21/2026 helpviewer_keywords: ["GitHub Copilot build performance", "C++ Build Insights", "build time optimization", "header file analysis", "template instantiation", "Visual Studio build performance"] ms.topic: how-to @@ -8,7 +8,7 @@ ms.topic: how-to # Get started with GitHub Copilot build performance for Windows  -The GitHub Copilot build performance for Windows analyzes your C++ builds and highlights expensive headers, template instantiations, and functions so you can identify and fix build time bottlenecks. GitHub Copilot is integrated with Visual Studio. +The GitHub Copilot build performance for Windows helps you make your builds faster. It finds expensive headers, template instantiations, and functions and can automatically make your builds more efficient. GitHub Copilot is integrated with Visual Studio. ## Prerequisites  @@ -108,7 +108,7 @@ If you choose to grant elevated permissions, the Windows User Account Control di The dialog asks for permission for the Windows Command Processor, verified publisher Microsoft, to allow this app to make changes to your device. There are Yes and No buttons. :::image-end::: -Denying the elevated request will cancel the Build Insights operation. +Denying the elevated request cancels the Build Insights operation. ## Guide GitHub Copilot through the process of improving the build time @@ -138,7 +138,7 @@ You can access the GitHub Copilot build performance for Windows in these other w - The **Build** menu: - :::image type="complex" source="./media/build-menu-improve.png" alt-text="Screenshot of the Build menu.""::: + :::image type="complex" source="./media/build-menu-improve.png" alt-text="Screenshot of the Build menu."::: The Build menu option Run Build Insights is expanded to show Build All, Rebuild All, and Improve Build Performance. The latter is selected. :::image-end::: From c1c9838ad8dfc1f356b74e1d941e1e3dc38c5337 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 21 Jan 2026 17:47:28 -0800 Subject: [PATCH 229/619] edits --- docs/build-insights/build-performance.md | 43 ++++++++++-------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index ab2e82933f3..d5d9127b5dc 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -12,21 +12,16 @@ The GitHub Copilot build performance for Windows helps you make your builds fast ## Prerequisites  -- Visual Studio 2026. Install the latest available version here: [Installation Guide](/visualstudio/install/install-visual-studio) - MSVC Build Tools version 14.50 or later. -- An MSBuild or CMake project. +- A MSBuild or CMake project. - Windows 10 or later. ### Before you begin  In the Visual Studio 2026 Installer, ensure the following components are selected in the **Desktop development with C++** [workload](/visualstudio/install/install-visual-studio#step-4---choose-workloads): -- **C++ Build Insights** -- **C++ profiling tools** -- **C++ CMake tools for Windows (required for CMake projects)** - -:::image type="complex" source="./media/vs-installer-options.png" alt-text="Screenshot of the Visual Studio installer. The desktop development with C++ section is highlighted and C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are selected."::: -The list shows C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are all selected for installation. +:::image type="complex" source="./media/vs-installer-options.png" alt-text="Screenshot of the Visual Studio installer."::: +The desktop development with C++ section is highlighted and C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are selected. :::image-end::: ### Verify your GitHub Copilot subscription @@ -35,18 +30,14 @@ To use GitHub Copilot build performance for Windows, you need a GitHub Copilot P Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitHub account in Visual Studio 2026: -1. Verify your GitHub Copilot subscription: - - Sign in to [https://github.com](https://github.com/). - - Select your profile picture and then [Copilot settings](https://github.com/settings/copilot/features). Your plan type appears near the top of the page: +1. Verify your GitHub Copilot subscription by signing in to [https://github.com](https://github.com/). Select your profile picture and then [Copilot settings](https://github.com/settings/copilot/features). Your plan type appears near the top of the page: :::image type="complex" source="./media/copilot-subscription.png" alt-text="Screenshot of the users GitHub Copilot information."::: The Copilot settings page shows the type of subscription. In this case, the user has GitHub Copilot Enterprise. :::image-end::: - 1. Sign in to your GitHub account in Visual Studio: - - If you're not signed in to GitHub in Visual Studio, open the GitHub Copilot Chat and follow the sign-in instructions in the pop-up window. - - Select your profile picture in Visual Studio to confirm your GitHub sign-in status: + - To confirm your GitHub sign-in status, select your profile picture in Visual Studio: :::image type="complex" source="./media/vs-account-authentication.png" alt-text="Screenshot of the account dropdown in Visual Studio."::: The account dropdown shows that a Microsoft account and a GitHub account are both signed in and active. @@ -68,13 +59,13 @@ For more information about template instantiation on build time, see [Troublesho ## Troubleshoot build performance with GitHub Copilot -View GitHub Copilot build performance on Windows via the GitHub Copilot chat pane. Choose the **Agent** feature within the chat interface: +View GitHub Copilot build performance on Windows via the GitHub Copilot chat pane. Choose **Agent** in the dropdown: :::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="Screenshot of the GitHub Copilot chat pane."::: The GitHub Copilot chat pane shows a list of agents to choose from. Build Perf C p p (optimize your c + + build) is selected. :::image-end::: -Select your preferred model in the model drowpdown menu: +Then Select your preferred model in the model drop down menu: :::image type="complex" source="./media/model-select.png" alt-text="Screenshot of the model selection menu in the Copilot Chat window."::: This dropdown lists models various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. @@ -86,36 +77,38 @@ Instruct GitHub Copilot to improve the build performance of your selected projec The GitHub Copilot chat window shows @ Build Per Cpp: Help me improve the build performance of this project. :::image-end::: -If this is your first time using GitHub Copilot build performance for Windows, you'll need to enable Build Insights and grant elevated permissions to collect MSVC compiler traces. +The first time you use GitHub Copilot build performance for Windows, you may need to enable Build Insights and grant elevated permissions to collect MSVC compiler traces. ### Grant additional permissions to run Build Insights -Visual Studio needs elevated permissions to analyze build performance. The Build Insights tool needs to be enabled to start the build performance analysis. Once enabled, it stays enabled until you disable it. For more information about these permissions, see [Build Insights needs additional permissions](/cpp/build-insights/elevate-note). Github copilot prompts you to enable Build Insights and grant elevated permissions: +Visual Studio needs elevated permissions to analyze build performance and the Build Insights tool needs to be enabled. It stays enabled until you disable it. For more information about these permissions, see [Build Insights needs additional permissions](/cpp/build-insights/elevate-note). + +GitHub Copilot prompts you to enable Build Insights and grant elevated permissions: :::image type="complex" source="./media/build-insights-permission.png" alt-text="Screenshot of a GitHub Copilot dialog asking to elevate permissions."::: The dialog indicates that Build Insights (vcperf) needs additional permissions to capture MSVC compiler traces. There are Confirm and Deny buttons. :::image-end::: -Choose **Confirm** to have GitHub Copilot proceed with the request. A Visual Studio dialog then appears prompting you to allow a one-time elevated request: +Choose **Confirm**. A Visual Studio dialog then appears prompting you to allow a one-time elevated request: :::image type="complex" source="./media/msvc-elevation.png" alt-text="Screenshot of a Microsoft Visual Studio prompt requesting elevated permissions."::: The elevation prompt says: Build Insights (vcperf) needs additional permissions to capture MSVC compiler traces. Allow this one-time elevated request? There are Yes and No buttons. :::image-end::: -If you choose to grant elevated permissions, the Windows User Account Control dialog appears. Choose **Yes** to grant permission to capture the MSVC compiler traces: +If you choose to grant elevated permissions, the Windows User Account Control dialog appears: :::image type="complex" source="./media/windows-user-account-control.png" alt-text="Screenshot of the User Account Control dialog."::: The dialog asks for permission for the Windows Command Processor, verified publisher Microsoft, to allow this app to make changes to your device. There are Yes and No buttons. :::image-end::: -Denying the elevated request cancels the Build Insights operation. +Choose **Yes** to grant permission to capture the MSVC compiler traces. Denying the elevated request to cancel the build analysis. ## Guide GitHub Copilot through the process of improving the build time -As you guide GitHub Copilot through the process of improving the build time, you will be asked to provide permission, as needed, to run tools such as PowerShell scripts: +As you guide GitHub Copilot through the process of improving the build time, it may ask you to provide permission to run tools such as PowerShell scripts: :::image type="complex" source="./media/terminal-permission.png" alt-text="Screenshot of a Copilot Chat notification."::: -The prompt asks the user to authorize running the command: ls ../src/ in the terminal. The Confirm dropdown offers: Always allow and Allow in this session. There is also a Deny button. +The prompt asks the user to authorize running the command: ls ../src/ in the terminal. The Confirm dropdown offers: Always allow and Allow in this session. There's also a Deny button. :::image-end::: The GitHub Copilot build performance for Windows may go through multiple iterations to find the best way to make the build faster: @@ -127,7 +120,7 @@ The message indicates that analysis is complete and the build time improved from When the analysis is complete, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: :::image type="complex" source="./media/build-summary.png" alt-text="Screenshot of the build performance summary."::: -The summary shows a before and after optimization summary indicating build time, the top bottleneck, and the top 5 headers that contributed the most to the build time. The report shows build time dropping from 110.7 seconds to 34.1 seconds. It highlights a 69.2% overall improvement and faster incremental rebuilds after enabling precompiled headers. +The summary shows a before and after optimization summary indicating build time, the top bottleneck, and the top five headers that contributed the most to the build time. The report shows build time dropping from 110.7 seconds to 34.1 seconds. It highlights a 69.2% overall improvement and faster incremental rebuilds after enabling precompiled headers. :::image-end::: In this case, build time dropped from **110.7s to 34.1s** after enabling precompiled headers for costly includes, delivering a **69% improvement** and **3.2× faster builds** with near-instant incremental rebuilds. @@ -162,7 +155,7 @@ You can access the GitHub Copilot build performance for Windows in these other w - Build Insights view: - Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project, shown previously. This button uses data from the existing build insights trace results and doesn't trigger a new build insights tool execution until the current changes are processed. + Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project, shown previously. This button uses data from the existing build insights trace results. It doesn't do a new analysis until the current changes are processed. :::image type="complex" source="./media/insights-improve-button.png" alt-text="Screenshot of the Build Insights view window."::: The Improve link is highlighted. From 0d0208fd11e95cdedb6614f92e235984c08ac173 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 21 Jan 2026 17:48:39 -0800 Subject: [PATCH 230/619] add version --- docs/build-insights/build-performance.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index d5d9127b5dc..39263f721a1 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -12,6 +12,7 @@ The GitHub Copilot build performance for Windows helps you make your builds fast ## Prerequisites  +- Visual Studio 2026 version 18.3 Insiders 4, or later. - MSVC Build Tools version 14.50 or later. - A MSBuild or CMake project. - Windows 10 or later. From 2ab5e575d9a975b209e15a8db593741a151c326f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 22 Jan 2026 10:38:24 -0800 Subject: [PATCH 231/619] edits --- docs/build-insights/build-performance.md | 34 ++++++++++-------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 39263f721a1..6c46dbda93e 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -38,7 +38,7 @@ Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitH :::image-end::: 1. Sign in to your GitHub account in Visual Studio: - If you're not signed in to GitHub in Visual Studio, open the GitHub Copilot Chat and follow the sign-in instructions in the pop-up window. - - To confirm your GitHub sign-in status, select your profile picture in Visual Studio: + - Confirm your GitHub sign-in status by selecting your profile picture in Visual Studio. You should see that your GitHub account is **Active**: :::image type="complex" source="./media/vs-account-authentication.png" alt-text="Screenshot of the account dropdown in Visual Studio."::: The account dropdown shows that a Microsoft account and a GitHub account are both signed in and active. @@ -60,19 +60,21 @@ For more information about template instantiation on build time, see [Troublesho ## Troubleshoot build performance with GitHub Copilot -View GitHub Copilot build performance on Windows via the GitHub Copilot chat pane. Choose **Agent** in the dropdown: +To start GitHub Copilot build performance: + +1. open the GitHub Copilot chat pane and type '@'. One of the options is **@BuildPerfCpp**. Select it: :::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="Screenshot of the GitHub Copilot chat pane."::: The GitHub Copilot chat pane shows a list of agents to choose from. Build Perf C p p (optimize your c + + build) is selected. :::image-end::: -Then Select your preferred model in the model drop down menu: +1. Select your preferred model in the model drop down menu: :::image type="complex" source="./media/model-select.png" alt-text="Screenshot of the model selection menu in the Copilot Chat window."::: This dropdown lists models various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. :::image-end::: -Instruct GitHub Copilot to improve the build performance of your selected project. You can add extra context so that GitHub Copilot can better make suggestions to match the needs of your project. +1. Instruct GitHub Copilot to improve the build performance of your selected project by typing something like **Help me improve the build performance of this project**. You can add extra context so that GitHub Copilot can better make suggestions to match the needs of your project. :::image type="complex" source="./media/copilot-build-request.png" alt-text="Screenshot of the GitHub Copilot Chat window."::: The GitHub Copilot chat window shows @ Build Per Cpp: Help me improve the build performance of this project. @@ -80,23 +82,21 @@ The GitHub Copilot chat window shows @ Build Per Cpp: Help me improve the build The first time you use GitHub Copilot build performance for Windows, you may need to enable Build Insights and grant elevated permissions to collect MSVC compiler traces. -### Grant additional permissions to run Build Insights - Visual Studio needs elevated permissions to analyze build performance and the Build Insights tool needs to be enabled. It stays enabled until you disable it. For more information about these permissions, see [Build Insights needs additional permissions](/cpp/build-insights/elevate-note). -GitHub Copilot prompts you to enable Build Insights and grant elevated permissions: +If GitHub Copilot prompts you to enable Build Insights and grant elevated permissions, choose **Confirm**: :::image type="complex" source="./media/build-insights-permission.png" alt-text="Screenshot of a GitHub Copilot dialog asking to elevate permissions."::: The dialog indicates that Build Insights (vcperf) needs additional permissions to capture MSVC compiler traces. There are Confirm and Deny buttons. :::image-end::: -Choose **Confirm**. A Visual Studio dialog then appears prompting you to allow a one-time elevated request: +A Visual Studio dialog then appears prompting you to allow a one-time elevated request: :::image type="complex" source="./media/msvc-elevation.png" alt-text="Screenshot of a Microsoft Visual Studio prompt requesting elevated permissions."::: The elevation prompt says: Build Insights (vcperf) needs additional permissions to capture MSVC compiler traces. Allow this one-time elevated request? There are Yes and No buttons. :::image-end::: -If you choose to grant elevated permissions, the Windows User Account Control dialog appears: +Choose **Yes**. The Windows User Account Control dialog then appears: :::image type="complex" source="./media/windows-user-account-control.png" alt-text="Screenshot of the User Account Control dialog."::: The dialog asks for permission for the Windows Command Processor, verified publisher Microsoft, to allow this app to make changes to your device. There are Yes and No buttons. @@ -112,13 +112,7 @@ As you guide GitHub Copilot through the process of improving the build time, it The prompt asks the user to authorize running the command: ls ../src/ in the terminal. The Confirm dropdown offers: Always allow and Allow in this session. There's also a Deny button. :::image-end::: -The GitHub Copilot build performance for Windows may go through multiple iterations to find the best way to make the build faster: - -:::image type="complex" source="./media/build-analysis-complete.png" alt-text="Screenshot of a message in the GitHub Copilot chat window."::: -The message indicates that analysis is complete and the build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement). It indicates there's still room for improvement. -:::image-end::: - -When the analysis is complete, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: +Copilot may go through multiple iterations to find the best way to make the build faster. When the analysis is done, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: :::image type="complex" source="./media/build-summary.png" alt-text="Screenshot of the build performance summary."::: The summary shows a before and after optimization summary indicating build time, the top bottleneck, and the top five headers that contributed the most to the build time. The report shows build time dropping from 110.7 seconds to 34.1 seconds. It highlights a 69.2% overall improvement and faster incremental rebuilds after enabling precompiled headers. @@ -130,19 +124,19 @@ In this case, build time dropped from **110.7s to 34.1s** after enabling precomp You can access the GitHub Copilot build performance for Windows in these other ways: -- The **Build** menu: +The **Build** menu: :::image type="complex" source="./media/build-menu-improve.png" alt-text="Screenshot of the Build menu."::: The Build menu option Run Build Insights is expanded to show Build All, Rebuild All, and Improve Build Performance. The latter is selected. :::image-end::: -- Select a **Improve build performance** prompt in GitHub Copilot chat: +Or select a **Improve build performance** prompt in GitHub Copilot chat: :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Screenshot of the Copilot chat window."::: The chat window shows a prompt to Improve Build Performance. :::image-end::: -- **Solution** window context menu: +Or use the **Solution** window context menu: :::image type="complex" source="./media/solution-menu-improve.png" alt-text="A screenshot of the Solution explorer."::: The context menu shows Build Solution, Build Solution, and so on. Improve build performance on Solution is highlighted. @@ -154,7 +148,7 @@ You can access the GitHub Copilot build performance for Windows in these other w The chat window shows a prompt to Improve Build Performance. :::image-end::: -- Build Insights view: +Or from the Build Insights view: Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project, shown previously. This button uses data from the existing build insights trace results. It doesn't do a new analysis until the current changes are processed. From aaa1238e366502273cc3ce70f1a040a02b998693 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 22 Jan 2026 10:48:21 -0800 Subject: [PATCH 232/619] edits --- docs/build-insights/build-performance.md | 45 ++++++++++-------- .../media/build-analysis-complete.png | Bin 8173 -> 0 bytes 2 files changed, 25 insertions(+), 20 deletions(-) delete mode 100644 docs/build-insights/media/build-analysis-complete.png diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 6c46dbda93e..a8d324da6ea 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -29,14 +29,14 @@ The desktop development with C++ section is highlighted and C++ Build Insights, To use GitHub Copilot build performance for Windows, you need a GitHub Copilot Pro, Pro+, Business, or Enterprise subscription. -Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitHub account in Visual Studio 2026: +Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitHub account in Visual Studio 2026. 1. Verify your GitHub Copilot subscription by signing in to [https://github.com](https://github.com/). Select your profile picture and then [Copilot settings](https://github.com/settings/copilot/features). Your plan type appears near the top of the page: :::image type="complex" source="./media/copilot-subscription.png" alt-text="Screenshot of the users GitHub Copilot information."::: The Copilot settings page shows the type of subscription. In this case, the user has GitHub Copilot Enterprise. :::image-end::: -1. Sign in to your GitHub account in Visual Studio: +1. In Visual Studio, sign in to your GitHub account: - If you're not signed in to GitHub in Visual Studio, open the GitHub Copilot Chat and follow the sign-in instructions in the pop-up window. - Confirm your GitHub sign-in status by selecting your profile picture in Visual Studio. You should see that your GitHub account is **Active**: @@ -46,7 +46,7 @@ Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitH ### Enable template collection -To minimize analysis overhead, the template instantiation time collection is off by default. To turn it on: +To minimize analysis overhead, the template instantiation time collection is off by default. Turn it on: 1. In Visual Studio, go to **Tools** > **Options**. 1. In the **Options** dialog, expand **Build Insights**. @@ -60,25 +60,27 @@ For more information about template instantiation on build time, see [Troublesho ## Troubleshoot build performance with GitHub Copilot -To start GitHub Copilot build performance: +To start the GitHub Copilot build performance agent: -1. open the GitHub Copilot chat pane and type '@'. One of the options is **@BuildPerfCpp**. Select it: - -:::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="Screenshot of the GitHub Copilot chat pane."::: -The GitHub Copilot chat pane shows a list of agents to choose from. Build Perf C p p (optimize your c + + build) is selected. -:::image-end::: +1. Open the GitHub Copilot chat pane and type '@'. One of the options is **@BuildPerfCpp**. Select it: + :::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="Screenshot of the GitHub Copilot chat pane."::: + The GitHub Copilot chat pane shows a list of agents to choose from. Build Perf C p p (optimize your c + + build) is selected. + :::image-end::: + 1. Select your preferred model in the model drop down menu: -:::image type="complex" source="./media/model-select.png" alt-text="Screenshot of the model selection menu in the Copilot Chat window."::: -This dropdown lists models various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. -:::image-end::: - + :::image type="complex" source="./media/model-select.png" alt-text="Screenshot of the model selection menu in the Copilot Chat window."::: + This dropdown lists models various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. + :::image-end::: + 1. Instruct GitHub Copilot to improve the build performance of your selected project by typing something like **Help me improve the build performance of this project**. You can add extra context so that GitHub Copilot can better make suggestions to match the needs of your project. -:::image type="complex" source="./media/copilot-build-request.png" alt-text="Screenshot of the GitHub Copilot Chat window."::: -The GitHub Copilot chat window shows @ Build Per Cpp: Help me improve the build performance of this project. -:::image-end::: + :::image type="complex" source="./media/copilot-build-request.png" alt-text="Screenshot of the GitHub Copilot Chat window."::: + The GitHub Copilot chat window shows @ Build Per Cpp: Help me improve the build performance of this project. + :::image-end::: + +### Permissions The first time you use GitHub Copilot build performance for Windows, you may need to enable Build Insights and grant elevated permissions to collect MSVC compiler traces. @@ -112,17 +114,20 @@ As you guide GitHub Copilot through the process of improving the build time, it The prompt asks the user to authorize running the command: ls ../src/ in the terminal. The Confirm dropdown offers: Always allow and Allow in this session. There's also a Deny button. :::image-end::: -Copilot may go through multiple iterations to find the best way to make the build faster. When the analysis is done, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: +Choose the level of permission you are comfortable with. If you deny the request, GitHub Copilot can't proceed with the build performance analysis. +Copilot may go through multiple iterations to find the best way to make the build faster. + +When the analysis is done, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: :::image type="complex" source="./media/build-summary.png" alt-text="Screenshot of the build performance summary."::: The summary shows a before and after optimization summary indicating build time, the top bottleneck, and the top five headers that contributed the most to the build time. The report shows build time dropping from 110.7 seconds to 34.1 seconds. It highlights a 69.2% overall improvement and faster incremental rebuilds after enabling precompiled headers. :::image-end::: -In this case, build time dropped from **110.7s to 34.1s** after enabling precompiled headers for costly includes, delivering a **69% improvement** and **3.2× faster builds** with near-instant incremental rebuilds. +In this example, build time dropped from **110.7s to 34.1s** after enabling precompiled headers for costly includes. A **69% improvement** and **3.2× faster builds** with near-instant incremental rebuilds. ### Other ways to access GitHub Copilot build performance for Windows -You can access the GitHub Copilot build performance for Windows in these other ways: +You can access the GitHub Copilot build performance for Windows in other ways: The **Build** menu: @@ -136,7 +141,7 @@ Or select a **Improve build performance** prompt in GitHub Copilot chat: The chat window shows a prompt to Improve Build Performance. :::image-end::: -Or use the **Solution** window context menu: +Or use the **Solution** window context menu which you can access by right-clicking the solution node: :::image type="complex" source="./media/solution-menu-improve.png" alt-text="A screenshot of the Solution explorer."::: The context menu shows Build Solution, Build Solution, and so on. Improve build performance on Solution is highlighted. diff --git a/docs/build-insights/media/build-analysis-complete.png b/docs/build-insights/media/build-analysis-complete.png deleted file mode 100644 index 10bd55a02352caef4752fc5807a83412cfd5f838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8173 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 Date: Thu, 22 Jan 2026 10:53:55 -0800 Subject: [PATCH 233/619] fix warning --- docs/build-insights/build-performance.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index a8d324da6ea..5152e0d6878 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -137,9 +137,9 @@ The **Build** menu: Or select a **Improve build performance** prompt in GitHub Copilot chat: - :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Screenshot of the Copilot chat window."::: - The chat window shows a prompt to Improve Build Performance. - :::image-end::: + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Screenshot of the Copilot chat window."::: + The chat window shows a prompt to Improve Build Performance. + :::image-end::: Or use the **Solution** window context menu which you can access by right-clicking the solution node: From 017a47c36514fd069da729bdd8eb14414d94cc32 Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Thu, 22 Jan 2026 11:02:35 -0800 Subject: [PATCH 234/619] Use VS2026 images --- .../reference/creating-a-makefile-project.md | 2 +- docs/build/reference/media/create-project.png | Bin 20664 -> 28846 bytes .../reference/media/file-new-project.png | Bin 13011 -> 15487 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/creating-a-makefile-project.md b/docs/build/reference/creating-a-makefile-project.md index 437700d4a94..726dcc60c9d 100644 --- a/docs/build/reference/creating-a-makefile-project.md +++ b/docs/build/reference/creating-a-makefile-project.md @@ -30,7 +30,7 @@ The output file that you specify in the project has no effect on the name that t ### To create a makefile project in Visual Studio -1. From the Visual Studio main menu, choose **File** > **New** > **Project**. +1. From the Visual Studio main menu, choose **File** > **New** > **Project/Solution**. :::image type="content" source="media/file-new-project.png" alt-text="Screenshot of the menu dropdown item to create a new project highlighted"::: diff --git a/docs/build/reference/media/create-project.png b/docs/build/reference/media/create-project.png index 1ab81f0bfbc74852e9ad6724058f8bbeefcc6b4b..e3398e80f7d96dd2a093c524d4cf3533a58d0ebb 100644 GIT binary patch literal 28846 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 CVQ8cP literal 20664 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 jG-_kc9S?av+(VJncVF)*WNotE6g}9 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 diff --git a/docs/build/reference/media/file-new-project.png b/docs/build/reference/media/file-new-project.png index df61ed8476eba4e3b2e0145eced1ef092585915d..d42284e46a53532f81c656e5ecd10cdeb744e8da 100644 GIT binary patch literal 15487 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 literal 13011 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 WuYGbI0)MUmypdLxDwi<)_`d*O8V6DU From b88cde827e72143c94f86eda37ad7dce13bd2a60 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 22 Jan 2026 11:09:26 -0800 Subject: [PATCH 235/619] edit --- docs/build-insights/build-performance.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 5152e0d6878..db76bc79f18 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -161,6 +161,10 @@ Or from the Build Insights view: The Improve link is highlighted. :::image-end::: +## Summary + +By combining MSVC Build Insights with GitHub Copilot, you can identify build bottlenecks and apply fixes without manually analyzing trace data or configuring precompiled headers yourself. The workflow handles trace collection, analysis, and code changes in an iterative loop until build times are reduced to your satisfaction. + ## See also [Build Insights function view](/cpp/build-insights/tutorials/build-insights-function-view)\ From fbd01695b88b9aa9350ecb7f868f2f9e49a8e014 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 22 Jan 2026 11:12:25 -0800 Subject: [PATCH 236/619] put screenshot back --- docs/build-insights/build-performance.md | 7 ++++++- .../media/build-analysis-complete.png | Bin 0 -> 8173 bytes 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 docs/build-insights/media/build-analysis-complete.png diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index db76bc79f18..9c8b02d3936 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -115,7 +115,12 @@ The prompt asks the user to authorize running the command: ls ../src/ in the ter :::image-end::: Choose the level of permission you are comfortable with. If you deny the request, GitHub Copilot can't proceed with the build performance analysis. -Copilot may go through multiple iterations to find the best way to make the build faster. + +Copilot may go through multiple iterations to find the best way to make the build faster. In this chat example, ... + +:::image type="complex" source="./media/build-analysis-complete.png" alt-text="Screenshot of a message in the GitHub Copilot chat window."::: +The message indicates that analysis is complete and the build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement). It indicates there's still room for improvement. +:::image-end::: When the analysis is done, GitHub Copilot displays a summary of the changes and build performance impact for that iteration: diff --git a/docs/build-insights/media/build-analysis-complete.png b/docs/build-insights/media/build-analysis-complete.png new file mode 100644 index 0000000000000000000000000000000000000000..10bd55a02352caef4752fc5807a83412cfd5f838 GIT binary patch literal 8173 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 Date: Thu, 22 Jan 2026 12:38:37 -0800 Subject: [PATCH 237/619] Edited build analysis iteration image and text --- docs/build-insights/build-performance.md | 2 +- .../media/build-analysis-complete.png | Bin 8173 -> 8389 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 9c8b02d3936..f09150c8063 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -116,7 +116,7 @@ The prompt asks the user to authorize running the command: ls ../src/ in the ter Choose the level of permission you are comfortable with. If you deny the request, GitHub Copilot can't proceed with the build performance analysis. -Copilot may go through multiple iterations to find the best way to make the build faster. In this chat example, ... +Copilot may go through multiple iterations to find the best way to make the build faster. In this chat example, Copilot made its first build performance improvement but recognizes more areas to optimize. :::image type="complex" source="./media/build-analysis-complete.png" alt-text="Screenshot of a message in the GitHub Copilot chat window."::: The message indicates that analysis is complete and the build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement). It indicates there's still room for improvement. diff --git a/docs/build-insights/media/build-analysis-complete.png b/docs/build-insights/media/build-analysis-complete.png index 10bd55a02352caef4752fc5807a83412cfd5f838..18857c6d6231a7f4b884c229b565008042311708 100644 GIT binary patch literal 8389 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 literal 8173 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 Date: Thu, 22 Jan 2026 12:51:23 -0800 Subject: [PATCH 238/619] Updates on entry points --- docs/build-insights/build-performance.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index f09150c8063..83e43d3590b 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -140,8 +140,7 @@ The **Build** menu: The Build menu option Run Build Insights is expanded to show Build All, Rebuild All, and Improve Build Performance. The latter is selected. :::image-end::: -Or select a **Improve build performance** prompt in GitHub Copilot chat: - + Select **Improve build performance on Solution** to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project. :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Screenshot of the Copilot chat window."::: The chat window shows a prompt to Improve Build Performance. :::image-end::: @@ -160,12 +159,18 @@ Or use the **Solution** window context menu which you can access by right-clicki Or from the Build Insights view: - Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project, shown previously. This button uses data from the existing build insights trace results. It doesn't do a new analysis until the current changes are processed. + Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project. This button uses data from the existing build insights trace results. It doesn't do a new analysis until the current changes are processed. :::image type="complex" source="./media/insights-improve-button.png" alt-text="Screenshot of the Build Insights view window."::: The Improve link is highlighted. :::image-end::: + The GitHub Copilot chat window is prompted to optimize the build performance of your project, focusing on includes. + + :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Screenshot of the Build Insights view window."::: + The chat window shows a prompt to Improve Build Performance, focusing on includes. + :::image-end::: + ## Summary By combining MSVC Build Insights with GitHub Copilot, you can identify build bottlenecks and apply fixes without manually analyzing trace data or configuring precompiled headers yourself. The workflow handles trace collection, analysis, and code changes in an iterative loop until build times are reduced to your satisfaction. From 77984edeacc7cd164219dc87fc739fc9090f4f3d Mon Sep 17 00:00:00 2001 From: Eve Silfanus Date: Thu, 22 Jan 2026 13:03:22 -0800 Subject: [PATCH 239/619] Fixed alt text and bold Build Insights --- docs/build-insights/build-performance.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 83e43d3590b..d1229bed775 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -166,8 +166,8 @@ Or from the Build Insights view: :::image-end::: The GitHub Copilot chat window is prompted to optimize the build performance of your project, focusing on includes. - - :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Screenshot of the Build Insights view window."::: + + :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Screenshot of the Copilot chat window with focusing on includes prompt."::: The chat window shows a prompt to Improve Build Performance, focusing on includes. :::image-end::: From ca17c32bd2f7b9a575df1daee5e88e5944d90568 Mon Sep 17 00:00:00 2001 From: Eve Silfanus Date: Thu, 22 Jan 2026 13:09:44 -0800 Subject: [PATCH 240/619] Bold Build Insights --- docs/build-insights/build-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index d1229bed775..dcb21393d31 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -157,7 +157,7 @@ Or use the **Solution** window context menu which you can access by right-clicki The chat window shows a prompt to Improve Build Performance. :::image-end::: -Or from the Build Insights view: +Or from the **Build Insights** view: Select **Improve** from the Build Insights diagnostics session view to open the GitHub Copilot chat window, which prompts you to optimize the build performance of your project. This button uses data from the existing build insights trace results. It doesn't do a new analysis until the current changes are processed. From 25b836b777c4ce1ca3ab16052b64c7863dcef79e Mon Sep 17 00:00:00 2001 From: Stacy Chambers <102548089+Stacyrch140@users.noreply.github.com> Date: Thu, 22 Jan 2026 17:43:37 -0500 Subject: [PATCH 241/619] pencil edit --- docs/build-insights/build-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index dcb21393d31..0d5f2b6ce7f 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -52,7 +52,7 @@ To minimize analysis overhead, the template instantiation time collection is off 1. In the **Options** dialog, expand **Build Insights**. 1. Select **Collect Template Instantiation**. -:::image type="complex" source="./media/build-insights-options.png" alt-text="Build Insights settings page in Visual Studio Options with the Collect template instantiation checkbox enabled, displaying trace collection configurations for analysis."::: +:::image type="complex" source="./media/build-insights-options.png" alt-text="Screenshot of the Build Insights settings page in Visual Studio Options with the Collect template instantiation checkbox enabled, displaying trace collection configurations for analysis."::: The dialog shows trace collection settings with the Collect template instantiation checkbox selected. :::image-end::: From 2e82077dcc7783eec12c2a5a833d2e165c24014b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 22 Jan 2026 16:15:46 -0800 Subject: [PATCH 242/619] doc new syntax --- docs/ide/include-cleanup-config.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/ide/include-cleanup-config.md b/docs/ide/include-cleanup-config.md index 5d4e2813902..13c2f6ffdb0 100644 --- a/docs/ide/include-cleanup-config.md +++ b/docs/ide/include-cleanup-config.md @@ -1,7 +1,7 @@ --- title: "Configure C/C++ Include Cleanup in Visual Studio" description: "Learn how to configure C/C++ Include Cleanup." -ms.date: 10/10/2023 +ms.date: 01/22/2026 ms.topic: "how-to" f1_keywords: ["config include cleanup"] helpviewer_keywords: ["config include cleanup"] @@ -59,7 +59,7 @@ The `.editorconfig` settings that you can use with Include Cleanup are: | `cpp_include_cleanup_excluded_files`

Excludes the specified files from Include Cleanup messages. You won't get a suggestion related to the header at all, whether to add it or that it's unused. | *filename* | `cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h` | | `cpp_include_cleanup_required_files`

Specify that usage of *file1* requires *file2*. For example, specify that if you use `atlwin.h` that `altbase.h` must also be included. | *file1*:*file2* | `cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h` | | `cpp_include_cleanup_replacement_files`

Replaces *file1* with *file2* during Include Cleanup processing. For example, you may prefer using `cstdio` over `stdio.h`. If you have a file with both `#include ` and `#include ` and you consume content only from `stdio.h`, with this setting Include Cleanup will tell you to remove `stdio.h` because it replaced the usage of `cstdio` with `stdio.h` during processing. If you don't use the contents from either, Include Cleanup will tell you to remove both.| *file1*:*file2* | `cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint` | -| `cpp_include_cleanup_alternate_files`

Don't generate a message for indirect include *file2* if *file1* is included. For example, if you `#include ` and are only using something from its indirectly included header `winerror.h`, Include Cleanup won't prompt to add `winerror.h`. Useful when you prefer to include a facade header file instead of the indirect includes it contains. | *file1*:*file2* | `cpp_include_cleanup_alternate_files = windows.h:winerror.h, windows.h:minwindef.h` | +| `cpp_include_cleanup_alternate_files`

Suppress messages for indirect includes from an umbrella header. For example, if you `#include ` and only use content from its indirectly included headers `winerror.h` or `minwindef.h`, Include Cleanup won't suggest adding them. *| *file1*:*file2*[:*file3*...][,*file4*:*file5*...] | `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h`
`cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h`| ## See also From 302d37c245d1a1bde5398e9e6cab20535974a830 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 23 Jan 2026 10:46:11 -0800 Subject: [PATCH 243/619] Update alt-text for images in makefile project guide --- docs/build/reference/creating-a-makefile-project.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/creating-a-makefile-project.md b/docs/build/reference/creating-a-makefile-project.md index 726dcc60c9d..566ed5e134c 100644 --- a/docs/build/reference/creating-a-makefile-project.md +++ b/docs/build/reference/creating-a-makefile-project.md @@ -32,11 +32,11 @@ The output file that you specify in the project has no effect on the name that t 1. From the Visual Studio main menu, choose **File** > **New** > **Project/Solution**. - :::image type="content" source="media/file-new-project.png" alt-text="Screenshot of the menu dropdown item to create a new project highlighted"::: + :::image type="content" source="media/file-new-project.png" alt-text="Screenshot of the File > New > Project/Solution menu item."::: 1. Type *makefile* into the search box. If you see more than one project template, select the option for your target platform. - :::image type="content" source="media/create-project.png" alt-text="Screenshot of the project template search bar with makefile entered."::: + :::image type="content" source="media/create-project.png" alt-text="Screenshot of the Create a new project dialog. The Create a new project text field text box contains the text: makefile."::: 1. **Windows only**: In the Makefile project **Debug Configuration Settings** page, provide the command, output, clean, and rebuild information for debug and retail builds. Choose **Next** if you want to specify different settings for a Release configuration. From 280a2420de6559391adc9e5bc24af55af04d6586 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Jan 2026 11:05:05 -0800 Subject: [PATCH 244/619] add to toc --- docs/build-insights/toc.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/build-insights/toc.yml b/docs/build-insights/toc.yml index d5f07030b96..ac2d35b30c7 100644 --- a/docs/build-insights/toc.yml +++ b/docs/build-insights/toc.yml @@ -6,6 +6,8 @@ items: - name: "Tutorials" expanded: true items: + - name: "Get started with GitHub Copilot build performance for Windows" + href: ../build-insights/tutorials/build-performance.md - name: "Troubleshoot function inlining impact on build time" href: ../build-insights/tutorials/build-insights-function-view.md - name: "Troubleshoot template instantiation impact on build time" From cbb538e97e95058c63106c1ad684def3f082c104 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Jan 2026 11:12:56 -0800 Subject: [PATCH 245/619] add to landing page --- docs/build-insights/index.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/build-insights/index.yml b/docs/build-insights/index.yml index 5020326898f..b52b5a4595d 100644 --- a/docs/build-insights/index.yml +++ b/docs/build-insights/index.yml @@ -25,6 +25,10 @@ landingContent: url: get-started-with-cpp-build-insights.md - linkListType: tutorial links: + - text: Build performance analysis overview + url: tutorials/build-performance.md + - text: Get started with GitHub Copilot build performance for Windows + url: tutorials/build-performance.md - text: Build Insights function view url: tutorials/build-insights-function-view.md - text: Build Insights included files view From fce5777de2410bb674a83e9e479e4f2a035ac07e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Jan 2026 11:20:35 -0800 Subject: [PATCH 246/619] fix links --- docs/build-insights/index.yml | 4 +--- docs/build-insights/toc.yml | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/build-insights/index.yml b/docs/build-insights/index.yml index b52b5a4595d..bf11ccdb5e3 100644 --- a/docs/build-insights/index.yml +++ b/docs/build-insights/index.yml @@ -25,10 +25,8 @@ landingContent: url: get-started-with-cpp-build-insights.md - linkListType: tutorial links: - - text: Build performance analysis overview - url: tutorials/build-performance.md - text: Get started with GitHub Copilot build performance for Windows - url: tutorials/build-performance.md + url: build-performance.md - text: Build Insights function view url: tutorials/build-insights-function-view.md - text: Build Insights included files view diff --git a/docs/build-insights/toc.yml b/docs/build-insights/toc.yml index ac2d35b30c7..f9c51225e1d 100644 --- a/docs/build-insights/toc.yml +++ b/docs/build-insights/toc.yml @@ -7,7 +7,7 @@ items: expanded: true items: - name: "Get started with GitHub Copilot build performance for Windows" - href: ../build-insights/tutorials/build-performance.md + href: ../build-insights/build-performance.md - name: "Troubleshoot function inlining impact on build time" href: ../build-insights/tutorials/build-insights-function-view.md - name: "Troubleshoot template instantiation impact on build time" From f47a9be2d2617f9891d70723ccfb0726b75fee3c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Jan 2026 13:08:33 -0800 Subject: [PATCH 247/619] edits --- docs/ide/include-cleanup-config.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/ide/include-cleanup-config.md b/docs/ide/include-cleanup-config.md index 13c2f6ffdb0..529170a6d05 100644 --- a/docs/ide/include-cleanup-config.md +++ b/docs/ide/include-cleanup-config.md @@ -1,7 +1,7 @@ --- title: "Configure C/C++ Include Cleanup in Visual Studio" description: "Learn how to configure C/C++ Include Cleanup." -ms.date: 01/22/2026 +ms.date: 01/23/2026 ms.topic: "how-to" f1_keywords: ["config include cleanup"] helpviewer_keywords: ["config include cleanup"] @@ -59,7 +59,7 @@ The `.editorconfig` settings that you can use with Include Cleanup are: | `cpp_include_cleanup_excluded_files`

Excludes the specified files from Include Cleanup messages. You won't get a suggestion related to the header at all, whether to add it or that it's unused. | *filename* | `cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h` | | `cpp_include_cleanup_required_files`

Specify that usage of *file1* requires *file2*. For example, specify that if you use `atlwin.h` that `altbase.h` must also be included. | *file1*:*file2* | `cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h` | | `cpp_include_cleanup_replacement_files`

Replaces *file1* with *file2* during Include Cleanup processing. For example, you may prefer using `cstdio` over `stdio.h`. If you have a file with both `#include ` and `#include ` and you consume content only from `stdio.h`, with this setting Include Cleanup will tell you to remove `stdio.h` because it replaced the usage of `cstdio` with `stdio.h` during processing. If you don't use the contents from either, Include Cleanup will tell you to remove both.| *file1*:*file2* | `cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint` | -| `cpp_include_cleanup_alternate_files`

Suppress messages for indirect includes from an umbrella header. For example, if you `#include ` and only use content from its indirectly included headers `winerror.h` or `minwindef.h`, Include Cleanup won't suggest adding them. *| *file1*:*file2*[:*file3*...][,*file4*:*file5*...] | `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h`
`cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h`| +| `cpp_include_cleanup_alternate_files`

Suppress messages for indirect includes. For example, if you `#include ` and only use content from its indirectly included headers `winerror.h` or `minwindef.h`, Include Cleanup won't suggest adding them. *| *file1*:*file2*[:*file3*...][,*file4*:*file5*...] | `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h`
or
`cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h`| ## See also From f68f380d6e2ad94b83d8780c4bbbf6fb4c800473 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 23 Jan 2026 13:13:51 -0800 Subject: [PATCH 248/619] cleanup --- docs/ide/include-cleanup-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ide/include-cleanup-config.md b/docs/ide/include-cleanup-config.md index 529170a6d05..0f2b6d59871 100644 --- a/docs/ide/include-cleanup-config.md +++ b/docs/ide/include-cleanup-config.md @@ -59,7 +59,7 @@ The `.editorconfig` settings that you can use with Include Cleanup are: | `cpp_include_cleanup_excluded_files`

Excludes the specified files from Include Cleanup messages. You won't get a suggestion related to the header at all, whether to add it or that it's unused. | *filename* | `cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h` | | `cpp_include_cleanup_required_files`

Specify that usage of *file1* requires *file2*. For example, specify that if you use `atlwin.h` that `altbase.h` must also be included. | *file1*:*file2* | `cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h` | | `cpp_include_cleanup_replacement_files`

Replaces *file1* with *file2* during Include Cleanup processing. For example, you may prefer using `cstdio` over `stdio.h`. If you have a file with both `#include ` and `#include ` and you consume content only from `stdio.h`, with this setting Include Cleanup will tell you to remove `stdio.h` because it replaced the usage of `cstdio` with `stdio.h` during processing. If you don't use the contents from either, Include Cleanup will tell you to remove both.| *file1*:*file2* | `cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint` | -| `cpp_include_cleanup_alternate_files`

Suppress messages for indirect includes. For example, if you `#include ` and only use content from its indirectly included headers `winerror.h` or `minwindef.h`, Include Cleanup won't suggest adding them. *| *file1*:*file2*[:*file3*...][,*file4*:*file5*...] | `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h`
or
`cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h`| +| `cpp_include_cleanup_alternate_files`

Suppress messages for indirect includes. For example, if you `#include ` and only use content from its indirectly included headers `winerror.h` or `minwindef.h`, the tool won't suggest adding them. | *file1*:*file2*[:*file3*...][,*file4*:*file5*...] | `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h`
or
`cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h`| ## See also From 047497ebaacc51e7fc967a3891c1b943edc105ff Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 26 Jan 2026 13:28:48 -0800 Subject: [PATCH 249/619] Update docs/build-insights/build-performance.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/build-insights/build-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 0d5f2b6ce7f..4cadd179b79 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -71,7 +71,7 @@ To start the GitHub Copilot build performance agent: 1. Select your preferred model in the model drop down menu: :::image type="complex" source="./media/model-select.png" alt-text="Screenshot of the model selection menu in the Copilot Chat window."::: - This dropdown lists models various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. + This dropdown lists various models like GPT-5, CLaude Sonnet 4, Gemini 3 Pro, and others. :::image-end::: 1. Instruct GitHub Copilot to improve the build performance of your selected project by typing something like **Help me improve the build performance of this project**. You can add extra context so that GitHub Copilot can better make suggestions to match the needs of your project. From 696e6e4cdeaf9fc908eddeee52cc39538dadce5d Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 26 Jan 2026 13:31:59 -0800 Subject: [PATCH 250/619] Update docs/build-insights/build-performance.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/build-insights/build-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 4cadd179b79..401e2f82812 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -33,7 +33,7 @@ Verify your GitHub Copilot subscription on GitHub, and then sign in to your GitH 1. Verify your GitHub Copilot subscription by signing in to [https://github.com](https://github.com/). Select your profile picture and then [Copilot settings](https://github.com/settings/copilot/features). Your plan type appears near the top of the page: - :::image type="complex" source="./media/copilot-subscription.png" alt-text="Screenshot of the users GitHub Copilot information."::: + :::image type="complex" source="./media/copilot-subscription.png" alt-text="Screenshot showing the user's GitHub Copilot information."::: The Copilot settings page shows the type of subscription. In this case, the user has GitHub Copilot Enterprise. :::image-end::: 1. In Visual Studio, sign in to your GitHub account: From 4c1acc2817df1131712e54e9139874f679700a15 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 26 Jan 2026 13:32:31 -0800 Subject: [PATCH 251/619] Update docs/build-insights/build-performance.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/build-insights/build-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 401e2f82812..3523b430d59 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -104,7 +104,7 @@ Choose **Yes**. The Windows User Account Control dialog then appears: The dialog asks for permission for the Windows Command Processor, verified publisher Microsoft, to allow this app to make changes to your device. There are Yes and No buttons. :::image-end::: -Choose **Yes** to grant permission to capture the MSVC compiler traces. Denying the elevated request to cancel the build analysis. +Choose **Yes** to grant permission to capture the MSVC compiler traces. Denying the elevated request cancels the build analysis. ## Guide GitHub Copilot through the process of improving the build time From f207e6aa3cf0b7839402a2f7f434731752dbb201 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 26 Jan 2026 13:33:15 -0800 Subject: [PATCH 252/619] Update docs/build-insights/build-performance.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/build-insights/build-performance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-insights/build-performance.md b/docs/build-insights/build-performance.md index 3523b430d59..13a51332376 100644 --- a/docs/build-insights/build-performance.md +++ b/docs/build-insights/build-performance.md @@ -14,7 +14,7 @@ The GitHub Copilot build performance for Windows helps you make your builds fast - Visual Studio 2026 version 18.3 Insiders 4, or later. - MSVC Build Tools version 14.50 or later. -- A MSBuild or CMake project. +- An MSBuild or CMake project. - Windows 10 or later. ### Before you begin  From 6975ddd977131a6e744cd0e774a5c279b41c2b68 Mon Sep 17 00:00:00 2001 From: "Michael B. Price" Date: Tue, 27 Jan 2026 02:52:24 -0600 Subject: [PATCH 253/619] Docs for GitHub Copilot app modernization for C++ (#6221) * Documentation for using GitHub Copilot app modernization for C++ features * Adding a link to the GitHub Copilot app modernization for C++ documentation to the porting and upgrading page. * first style pass * edit pass * Minor-ish grammatical changes * Removing line about working in solutions that have mixed languages. The default should be to assume that it does anyways. * Adding some screenshots for enabling and getting started with app modernization. * Attempt to get side-by-side images of the ice breakers for both MSBuild and CMake projects * Bring the link for app modernization down into the upgrade & modernize section instead of it's own section. * Fixing typo in image file name * Addressing several of @TylerMSFT's review comments * Adjusting the ice breaker section to be clearer about the role of each image and why they should be laid out next to each other and fixing the images to be roughly the same size so that they present in a way that isn't too jarring. * Shortening and clarifying the names of the images showing the ice breakers * Renaming file so that ghcp turns into copilot which is a bit less confusing if someone is looking at file names. * Missed one place where the filename needed to be updated * Renaming images to fully spell out modernization * Removing 'public' from 'public preview' and adding a period at the end of a sentence on the same line as one of those changes * Removing the hyphen from 'pre-existing' to make it simply 'preexisting' * Rewording to avoid unnecessary repetition between the first and second sentence. * Removing Insiders descriptor from the requirements section, as it becomes an irrelevant detail in a short period of time. * Adding a link to the documentation for the new retarget projects experience. --------- Co-authored-by: TylerMSFT --- docs/porting/copilot-app-modernization-cpp.md | 100 ++++++++++++++++++ .../app-modernization-cmake-ice-breaker.png | Bin 0 -> 192513 bytes .../app-modernization-msbuild-ice-breaker.png | Bin 0 -> 92370 bytes ...copilot-app-modernization-context-menu.png | Bin 0 -> 50329 bytes .../enable-copilot-app-modernization-cpp.png | Bin 0 -> 59288 bytes docs/porting/toc.yml | 2 + .../visual-cpp-porting-and-upgrading-guide.md | 1 + 7 files changed, 103 insertions(+) create mode 100644 docs/porting/copilot-app-modernization-cpp.md create mode 100644 docs/porting/media/app-modernization-cmake-ice-breaker.png create mode 100644 docs/porting/media/app-modernization-msbuild-ice-breaker.png create mode 100644 docs/porting/media/copilot-app-modernization-context-menu.png create mode 100644 docs/porting/media/enable-copilot-app-modernization-cpp.png diff --git a/docs/porting/copilot-app-modernization-cpp.md b/docs/porting/copilot-app-modernization-cpp.md new file mode 100644 index 00000000000..baf39363b46 --- /dev/null +++ b/docs/porting/copilot-app-modernization-cpp.md @@ -0,0 +1,100 @@ +--- +title: "Modernize your C++ project with GitHub Copilot app modernization" +description: "Instructions on effectively using GitHub Copilot app modernization in your C++ projects" +ms.date: 01/23/2026 +ms.topic: upgrade-and-migration-article +author: michaelbprice +ms.author: miprice +--- + +# Using GitHub Copilot app modernization for C++ + +GitHub Copilot app modernization for C++ helps you upgrade C++ projects to newer MSVC Build Tools versions. If necessary, Copilot will upgrade your project's settings to use the latest MSVC, and then conduct a thorough assessment of the impact of those changes after executing a build. It develops a plan on how to address each identified problem. Once you approve the plan, the agent completes a sequence of tasks and validates that any changes resolved the identified problems. If there remains work to be done, the agent continues iterating until the problems are resolved or you discontinue the conversation. + +> [!NOTE] +> GitHub Copilot app modernization for C++ is currently in preview. + +## Requirements + +- Visual Studio 2026 version 18.3 or later +- A GitHub Copilot account +- A MSBuild-based codebase (`.sln`, `.vcxproj`) OR a CMake-based codebase + +## Enable GitHub Copilot app modernization for C++ + +GitHub Copilot app modernization for C++ is enabled by default. To disable or explicitly enable the feature, follow these steps. + +1. From Visual Studio, select **Tools > Options...** to open the **Options** window. +1. Navigate to **All Settings > GitHub > Copilot > C/C++**. +1. Select (to enable) or clear (to disable) the checkbox for **Enable GitHub Copilot app modernization for C++ (preview)**. +1. Restart Visual Studio for the setting change to take effect. + +![Screenshot of the settings to enable GitHub Copilot app modernization for C++.](media/enable-copilot-app-modernization-cpp.png "enable GitHub Copilot app modernization for C++") + +## Upgrade your codebase by using GitHub Copilot app modernization for C++ + +This section describes how to start the Modernize agent and the stages it goes through to upgrade your codebase. + +### Start the Modernize agent + +GitHub Copilot app modernization is an agent that operates inside the GitHub Copilot Chat window. You can start the agent in any of the following ways: + +- **From the Solution Explorer context menu**: Right-click on the solution or a loaded project in the Solution Explorer, and choose **Modernize** from the context menu. This automatically launches a GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. + +![Screenshot of the context menu to start GitHub Copilot app modernization.](media/copilot-app-modernization-context-menu.png "Start GitHub Copilot app modernization") + +- **From GitHub Copilot Chat**: Open the GitHub Copilot Chat Window by selecting **View > GitHub Copilot Chat**. After the GitHub Copilot Chat window opens, mention `@Modernize` in a prompt to activate the Modernize agent. For example, type this prompt: + + `Use @Modernize to update MSVC Build Tools.` + +#### For MSBuild-based codebases targeting an earlier version of MSVC Build Tools + +The first time that you load a `.vcxproj` project that targets an earlier version of the MSVC Build Tools, you see an option to [upgrade project settings to use a newer version of the MSVC Build Tools](https://learn.microsoft.com/visualstudio/install/setup-assistant). If you retarget any of your projects to a new version of MSVC Build Tools and GitHub Copilot app modernization for C++ is enabled, you receive an infobar in Visual Studio prompting you to use GitHub Copilot app modernization for C++ to resolve any newly introduced build problems. Selecting **Run GitHub Copilot app modernization for C++** launches the GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. + +### Start the upgrade + +Once the Modernize agent is active, you can instruct it via a prompt to upgrade your MSVC Build Tools, or select the already constructed prompt from the list shown in the window. If you launched the agent directly in the GitHub Copilot Chat window by mentioning @Modernize in your prompt, you probably don't need to provide any additional prompting. + +:::row::: +:::column::: + +**MSBuild Projects** + +:::column-end::: +:::column::: + +**CMake Projects** + +:::column-end::: +:::row-end::: +:::row::: +:::column::: + +![Screenshot of GitHub Copilot app modernization window with MSVC upgrade ice breaker for an MSBuild project.](media/app-modernization-msbuild-ice-breaker.png "GitHub Copilot app modernization window") + +:::column-end::: +:::column::: + +![Screenshot of GitHub Copilot app modernization window with MSVC upgrade ice breaker for a CMake project.](media/app-modernization-cmake-ice-breaker.png "GitHub Copilot app modernization window") + +:::column-end::: +:::row-end::: + + +### Assessment stage + +The agent first assesses what kinds of problems show up after upgrading. If you didn't already upgrade the project, the agent guides you through that process before creating its assessment. After ensuring that your project is upgraded, the agent builds your codebase, analyzes the reported warnings and errors, and generates an `assessment.md` file that describes the problems that it found, their severity, and other useful information. This is your opportunity to tell the agent any additional context that could help it make a plan. + +One of the things you might choose to do here is to tell the agent not to fix certain discovered problems, because you know that resolving them involves some strategic decisions or because they were preexisting warnings that you decided are acceptable for your project. You should carefully read through the plan, making sure to provide that additional context where it is needed. Once you approve the assessment, the agent moves on to creating a concrete plan on addressing the problems. + +### Planning stage + +Based on the approved assessment and any additional context or instructions you provide, the agent creates a `plan.md` file that proposes a detailed plan for resolving each of the identified problems. If the agent produces a plan that doesn't match your organization's coding style or practices, you can provide that guidance to the agent and have it solve the problem differently. After you agree on the plan, the agent moves to the execution stage. + +### Execution stage + +Now that the agent has a plan, it breaks down the necessary tasks to execute the plan. You can define these tasks as finely as you want. The tasks can even include steps to work on a branch or to commit specific changes together in the same commit. After making any changes, the agent builds the project again to confirm that the problems are resolved. If the problems aren't resolved, the agent iterates with you until they're resolved to your satisfaction. + +### Post-upgrade validation + +When the agent finishes, run the changes through any testing infrastructure you have. Have a colleague review the changes in a pull request. Since this feature is currently in preview, you might receive an infobar to complete a product survey to let the product team know how the agent performed on your codebase. The product team looks forward to hearing how they can improve the agent to solve your problems and accelerate your upgrade and modernization efforts. \ No newline at end of file diff --git a/docs/porting/media/app-modernization-cmake-ice-breaker.png b/docs/porting/media/app-modernization-cmake-ice-breaker.png new file mode 100644 index 0000000000000000000000000000000000000000..676e21dbbc5e7b204abde61935b42eb3a037dae2 GIT binary patch literal 192513 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

3M_GMeyLFDdSl=?oSNIF|MkYgDOkYB)gPY{Bb6 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 R{3in=E2St|CjK_?{{dNl$9ez& literal 0 HcmV?d00001 diff --git a/docs/porting/media/app-modernization-msbuild-ice-breaker.png b/docs/porting/media/app-modernization-msbuild-ice-breaker.png new file mode 100644 index 0000000000000000000000000000000000000000..0820fec37c113236d2a5a409e671bd15cd57f3a2 GIT binary patch literal 92370 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 literal 59288 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 Date: Wed, 11 Mar 2026 14:25:14 -0500 Subject: [PATCH 376/619] Apply suggestions from code review Co-authored-by: Diana Richards --- docs/porting/copilot-app-modernization-cpp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/porting/copilot-app-modernization-cpp.md b/docs/porting/copilot-app-modernization-cpp.md index 972ac4df976..d6e23461baf 100644 --- a/docs/porting/copilot-app-modernization-cpp.md +++ b/docs/porting/copilot-app-modernization-cpp.md @@ -29,7 +29,7 @@ GitHub Copilot modernization for C++ is enabled by default. To disable or explic 1. Select (to enable) or clear (to disable) the checkbox for **Enable GitHub Copilot modernization for C++ (preview)**. 1. Restart Visual Studio for the setting change to take effect. -:::image type="content" source="media/enable-copilot-app-modernization-cpp.png" alt-text="Screenshot of Visual Studio Options dialog. GitHub > Copilot > C/C++ settings are visible. The modernization for C++ checkbox is enabled."::: +:::image type="content" source="media/enable-copilot-app-modernization-cpp.png" alt-text="Screenshot of Visual Studio Options dialog. GitHub > Copilot > C/C++ settings are visible. The modernization for C++ checkbox is enabled." lightbox="media/enable-copilot-app-modernization-cpp.png"::: ## Upgrade your codebase by using GitHub Copilot modernization for C++ @@ -75,7 +75,7 @@ Once the Modernize agent is active, you can instruct it via a prompt to upgrade :::column-end::: :::column::: -:::image type="content" source="media/app-modernization-cmake-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to Modernize experience and Resolve build issues by migrating to modern alternatives is highlighted"::: +:::image type="content" source="media/app-modernization-cmake-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to Modernize experience and Resolve build issues by migrating to modern alternatives is highlighted."::: :::column-end::: :::row-end::: From 738400a112ed72af62d580d86a832e27c12bc9bd Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 12 Mar 2026 16:09:45 -0700 Subject: [PATCH 377/619] dev feedback --- .../cgthreads-code-generation-threads.md | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/docs/build/reference/cgthreads-code-generation-threads.md b/docs/build/reference/cgthreads-code-generation-threads.md index d169b1d3419..bdaf07bd846 100644 --- a/docs/build/reference/cgthreads-code-generation-threads.md +++ b/docs/build/reference/cgthreads-code-generation-threads.md @@ -1,43 +1,35 @@ --- description: "Learn more about: `/cgthreads` (Code generation threads)" title: "/cgthreads (Code generation threads)" -ms.date: 07/31/2020 +ms.date: 03/12/2026 f1_keywords: ["/cgthreads"] helpviewer_keywords: ["/cgthreads compiler option (C++)", "-cgthreads compiler option (C++)", "cgthreads compiler option (C++)", "cgthreads"] -ms.assetid: 64bc768c-6caa-4baf-9dea-7cfa1ffb01c2 --- # `/cgthreads` (Code generation threads) -Sets number of cl.exe threads to use for optimization and code generation. +Sets number of `cl.exe` threads to use for optimization and code generation. ## Syntax > **`/cgthreads1`**\ > **`/cgthreads2`**\ -> **`/cgthreads3`**\ -> **`/cgthreads4`**\ -> **`/cgthreads5`**\ -> **`/cgthreads6`**\ -> **`/cgthreads7`**\ -> **`/cgthreads8`** +etc. ## Arguments **`cgthreadsN`**\ -The maximum number of threads for cl.exe to use, where *N* is a number in the range 1 to 8. +The maximum number of threads for `cl.exe` to use, where *N* is a number in the range 1 to 512. ## Remarks -The **`cgthreads`** option specifies the maximum number of threads cl.exe uses in parallel for the optimization and code generation phases of compilation. Notice that there can be no space between **`cgthreads`** and the *number* argument. By default, cl.exe uses four threads, as if **`/cgthreads4`** were specified. If more processor cores are available, a larger *number* value can improve build times. This option is especially useful when it's combined with [`/GL` (Whole Program Optimization)](gl-whole-program-optimization.md). +The **`cgthreads`** option specifies the maximum number of threads `cl.exe` uses in parallel for the optimization and code generation phases of compilation. No space can appear between **`cgthreads`** and the *number* argument. By default, `cl.exe` uses four threads, as if **`/cgthreads4`** were specified. If more processor cores are available, a larger *number* value can improve build times. This option is especially useful when it's combined with [`/GL` (Whole Program Optimization)](gl-whole-program-optimization.md). Multiple levels of parallelism can be specified for a build. The msbuild.exe switch **`/maxcpucount`** specifies the number of MSBuild processes that can be run in parallel. The [`/MP` (Build with Multiple Processes)](mp-build-with-multiple-processes.md) compiler flag specifies the number of cl.exe processes that simultaneously compile the source files. The **`cgthreads`** option specifies the number of threads used by each cl.exe process. The processor can only run as many threads at the same time as there are processor cores. It's not useful to specify larger values for all of these options at the same time, and it can be counterproductive. For more information about how to build projects in parallel, see [Building Multiple Projects in Parallel](/visualstudio/msbuild/building-multiple-projects-in-parallel-with-msbuild). ### To set this compiler option in the Visual Studio development environment 1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). - 1. Select the **Configuration Properties** > **C/C++** > **Command Line** property page. - 1. Modify the **Additional Options** property to include **`cgthreadsN`**, where *`N`* is a value from 1 to 8, and then select **OK**. ### To set this compiler option programmatically @@ -46,5 +38,5 @@ Multiple levels of parallelism can be specified for a build. The msbuild.exe swi ## See also -[MSVC compiler options](compiler-options.md)
+[MSVC compiler options](compiler-options.md)\ [MSVC compiler command-line syntax](compiler-command-line-syntax.md) From 0aa8aecc26014422bb4119d750e88eeba373a613 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 12 Mar 2026 16:17:15 -0700 Subject: [PATCH 378/619] acrolinx --- docs/build/reference/cgthreads-code-generation-threads.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/cgthreads-code-generation-threads.md b/docs/build/reference/cgthreads-code-generation-threads.md index bdaf07bd846..da08ab45b78 100644 --- a/docs/build/reference/cgthreads-code-generation-threads.md +++ b/docs/build/reference/cgthreads-code-generation-threads.md @@ -22,7 +22,7 @@ The maximum number of threads for `cl.exe` to use, where *N* is a number in the ## Remarks -The **`cgthreads`** option specifies the maximum number of threads `cl.exe` uses in parallel for the optimization and code generation phases of compilation. No space can appear between **`cgthreads`** and the *number* argument. By default, `cl.exe` uses four threads, as if **`/cgthreads4`** were specified. If more processor cores are available, a larger *number* value can improve build times. This option is especially useful when it's combined with [`/GL` (Whole Program Optimization)](gl-whole-program-optimization.md). +The **`cgthreads`** option specifies the maximum number of threads `cl.exe` uses in parallel for the optimization and code generation phases of compilation. No space can appear between **`cgthreads`** and the *number* argument. By default, `cl.exe` uses four threads, as if **`/cgthreads4`** were specified. If more processor cores are available, a larger *number* value improves build times. This option is especially useful when combined with [`/GL` (Whole Program Optimization)](gl-whole-program-optimization.md). Multiple levels of parallelism can be specified for a build. The msbuild.exe switch **`/maxcpucount`** specifies the number of MSBuild processes that can be run in parallel. The [`/MP` (Build with Multiple Processes)](mp-build-with-multiple-processes.md) compiler flag specifies the number of cl.exe processes that simultaneously compile the source files. The **`cgthreads`** option specifies the number of threads used by each cl.exe process. The processor can only run as many threads at the same time as there are processor cores. It's not useful to specify larger values for all of these options at the same time, and it can be counterproductive. For more information about how to build projects in parallel, see [Building Multiple Projects in Parallel](/visualstudio/msbuild/building-multiple-projects-in-parallel-with-msbuild). From 445b65a88482c26acfffcee08a592da12a19b523 Mon Sep 17 00:00:00 2001 From: "Docs.Archive pipeline" Date: Wed, 18 Mar 2026 17:30:45 +0000 Subject: [PATCH 379/619] [DocsArchive-1.0.26057.1](2026-03-18-17-29-49)Auto archive content --- .openpublishing.redirection.json | 562 ++++++++++++- docs/docfx.json | 35 +- docs/parallel/toc.yml | 1260 +++++++++++++++--------------- 3 files changed, 1211 insertions(+), 646 deletions(-) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 585f812c4b4..f4bb352073f 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -1,5 +1,565 @@ { "redirections": [ + { + "source_path": "docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/cpp-amp-overview.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-overview", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/graphics-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/graphics-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/using-accelerator-and-accelerator-view-objects.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-accelerator-and-accelerator-view-objects", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/using-cpp-amp-in-windows-store-apps.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-cpp-amp-in-windows-store-apps", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/using-lambdas-function-objects-and-restricted-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-lambdas-function-objects-and-restricted-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/using-tiles.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-tiles", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/walkthrough-debugging-a-cpp-amp-application.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/walkthrough-debugging-a-cpp-amp-application", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/walkthrough-matrix-multiplication.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/walkthrough-matrix-multiplication", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-view-removed-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-view-removed-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/adopt-d3d-access-lock-t-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/adopt-d3d-access-lock-t-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/array-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/array-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/array-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/array-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/completion-future-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/completion-future-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-direct3d-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-direct3d-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-fast-math-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-fast-math-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-fast-math-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-direct3d-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace-enums.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace-enums", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-constants-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-constants-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-enums-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-enums-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-functions-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-functions-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-operators-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-operators-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-precise-math-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-precise-math-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-precise-math-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/extent-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/extent-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/index-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/index-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/invalid-compute-domain-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/invalid-compute-domain-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/out-of-memory-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/out-of-memory-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/reference-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/reference-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/runtime-exception-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/runtime-exception-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/sampler-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/sampler-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/scoped-d3d-access-lock-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/scoped-d3d-access-lock-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/short-vector-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/short-vector-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/short-vector-traits-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/short-vector-traits-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/texture-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/texture-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/texture-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/texture-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tile-barrier-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tile-barrier-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tiled-extent-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tiled-extent-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tiled-index-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tiled-index-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uninitialized-object-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uninitialized-object-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unsupported-feature-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unsupported-feature-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, + { + "source_path": "docs/parallel/amp/reference/writeonly-texture-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/writeonly-texture-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-170" + ] + }, { "source_path": "docs/windows/desktop-applications-visual-cpp.md", "redirect_url": "/cpp/windows/overview-of-windows-programming-in-cpp", @@ -13936,4 +14496,4 @@ "redirect_document_id": false } ] -} \ No newline at end of file +} diff --git a/docs/docfx.json b/docs/docfx.json index 752316e2e79..ad6d38ef295 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -6,15 +6,15 @@ "**/*.md", "**/*.yml" ], - "group": "group-vc2015", - "src": ".", "exclude": [ "**/2019/**", "**/2017/**", "**/obj/**", "vcppdocs/**", "**/includes/**" - ] + ], + "src": ".", + "group": "group-vc2015" } ], "resource": [ @@ -25,13 +25,13 @@ "**/*.gif", "**/*.svg" ], - "group": "group-vc2015", - "src": ".", "exclude": [ "**/obj/**", "vcppdocs/**", "**/includes/**" - ] + ], + "src": ".", + "group": "group-vc2015" } ], "overwrite": [], @@ -63,9 +63,9 @@ }, "fileMetadata": { "feedback_help_link_url": { - "dotnet/*.md": "https://learn.microsoft.com/en-us/answers/tags/308/dotnetcli", - "ide/*.md": "https://learn.microsoft.com/en-us/answers/tags/176/vs", - "windows/*.md": "https://learn.microsoft.com/en-us/answers/tags/184/windows-app-sdk" + "dotnet/*.md": "https://learn.microsoft.com/en-us/answers/tags/308/dotnetcli", + "ide/*.md": "https://learn.microsoft.com/en-us/answers/tags/176/vs", + "windows/*.md": "https://learn.microsoft.com/en-us/answers/tags/184/windows-app-sdk" }, "ms.tgt_pltfrm": { "linux/**.md": "Linux" @@ -175,7 +175,7 @@ "c-runtime-library/**.md": "3650-days", "c-runtime-library/**.yml": "3650-days", "cpp/**.md": "1095-days", - "cpp/**.yml": "1095-days", + "cpp/**.yml": "1095-days", "cppcx/**.md": "3650-days", "cppcx/**.yml": "3650-days", "cross-platform/**.md": "1825-days", @@ -342,17 +342,22 @@ "text/**.yml": "twhitney", "windows/**.md": "twhitney", "windows/**.yml": "twhitney" + }, + "exclude_monikers": { + "parallel/amp/**/*.{md,yml,yaml}": [ + "msvc-170" + ] } }, "template": [], + "markdownEngineName": "markdig", "xref": [], - "dest": "vcppdocs", "groups": { "group-vc2015": { - "moniker_range": ">= msvc-140", - "dest": "vcppdocs-2015" + "dest": "vcppdocs-2015", + "moniker_range": ">= msvc-140" } }, - "markdownEngineName": "markdig" + "dest": "vcppdocs" } -} +} \ No newline at end of file diff --git a/docs/parallel/toc.yml b/docs/parallel/toc.yml index d8a0ae92833..e140a198cc1 100644 --- a/docs/parallel/toc.yml +++ b/docs/parallel/toc.yml @@ -1,659 +1,659 @@ -items: +items: - name: Parallel programming in MSVC href: ../parallel/parallel-programming-in-visual-cpp.md - name: Auto-parallelization and auto-vectorization href: ../parallel/auto-parallelization-and-auto-vectorization.md - name: C++ Accelerated Massive Parallelism (AMP) - expanded: false items: - - name: C++ AMP (C++ Accelerated Massive Parallelism) - href: ../parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md - - name: C++ AMP overview - href: ../parallel/amp/cpp-amp-overview.md - - name: Using tiles - href: ../parallel/amp/using-tiles.md - - name: Using C++ AMP in UWP apps - href: ../parallel/amp/using-cpp-amp-in-windows-store-apps.md - - name: "Walkthrough: Matrix multiplication" - href: ../parallel/amp/walkthrough-matrix-multiplication.md - - name: "Walkthrough: Debugging a C++ AMP application" - href: ../parallel/amp/walkthrough-debugging-a-cpp-amp-application.md - - name: Using lambdas, function objects, and restricted functions - href: ../parallel/amp/using-lambdas-function-objects-and-restricted-functions.md - - name: Graphics (C++ AMP) - href: ../parallel/amp/graphics-cpp-amp.md - - name: Using accelerator and accelerator_view objects - href: ../parallel/amp/using-accelerator-and-accelerator-view-objects.md + - name: C++ AMP (C++ Accelerated Massive Parallelism) + href: ../parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md + - name: C++ AMP overview + href: ../parallel/amp/cpp-amp-overview.md + - name: Using tiles + href: ../parallel/amp/using-tiles.md + - name: Using C++ AMP in UWP apps + href: ../parallel/amp/using-cpp-amp-in-windows-store-apps.md + - name: 'Walkthrough: Matrix multiplication' + href: ../parallel/amp/walkthrough-matrix-multiplication.md + - name: 'Walkthrough: Debugging a C++ AMP application' + href: ../parallel/amp/walkthrough-debugging-a-cpp-amp-application.md + - name: Using lambdas, function objects, and restricted functions + href: ../parallel/amp/using-lambdas-function-objects-and-restricted-functions.md + - name: Graphics (C++ AMP) + href: ../parallel/amp/graphics-cpp-amp.md + - name: Using accelerator and accelerator_view objects + href: ../parallel/amp/using-accelerator-and-accelerator-view-objects.md + - name: Reference (C++ AMP) + items: - name: Reference (C++ AMP) + href: ../parallel/amp/reference/reference-cpp-amp.md + - name: Concurrency namespace (C++ AMP) + items: + - name: Concurrency namespace (C++ AMP) + href: ../parallel/amp/reference/concurrency-namespace-cpp-amp.md + - name: Concurrency namespace functions (AMP) + href: ../parallel/amp/reference/concurrency-namespace-functions-amp.md + - name: Concurrency namespace enums (AMP) + href: ../parallel/amp/reference/concurrency-namespace-enums-amp.md + - name: Concurrency namespace operators (AMP) + href: ../parallel/amp/reference/concurrency-namespace-operators-amp.md + - name: Concurrency namespace constants (AMP) + href: ../parallel/amp/reference/concurrency-namespace-constants-amp.md + - name: accelerator class + href: ../parallel/amp/reference/accelerator-class.md + - name: accelerator_view class + href: ../parallel/amp/reference/accelerator-view-class.md + - name: accelerator_view_removed class + href: ../parallel/amp/reference/accelerator-view-removed-class.md + - name: array class + href: ../parallel/amp/reference/array-class.md + - name: array_view class + href: ../parallel/amp/reference/array-view-class.md + - name: completion_future class + href: ../parallel/amp/reference/completion-future-class.md + - name: extent class (C++ AMP) + href: ../parallel/amp/reference/extent-class.md + - name: index class + href: ../parallel/amp/reference/index-class.md + - name: invalid_compute_domain class + href: ../parallel/amp/reference/invalid-compute-domain-class.md + - name: out_of_memory class + href: ../parallel/amp/reference/out-of-memory-class.md + - name: runtime_exception class + href: ../parallel/amp/reference/runtime-exception-class.md + - name: tile_barrier class + href: ../parallel/amp/reference/tile-barrier-class.md + - name: tiled_extent class + href: ../parallel/amp/reference/tiled-extent-class.md + - name: tiled_index class + href: ../parallel/amp/reference/tiled-index-class.md + - name: uninitialized_object class + href: ../parallel/amp/reference/uninitialized-object-class.md + - name: unsupported_feature class + href: ../parallel/amp/reference/unsupported-feature-class.md expanded: false - items: - - name: Reference (C++ AMP) - href: ../parallel/amp/reference/reference-cpp-amp.md - - name: Concurrency namespace (C++ AMP) - expanded: false - items: - - name: Concurrency namespace (C++ AMP) - href: ../parallel/amp/reference/concurrency-namespace-cpp-amp.md - - name: Concurrency namespace functions (AMP) - href: ../parallel/amp/reference/concurrency-namespace-functions-amp.md - - name: Concurrency namespace enums (AMP) - href: ../parallel/amp/reference/concurrency-namespace-enums-amp.md - - name: Concurrency namespace operators (AMP) - href: ../parallel/amp/reference/concurrency-namespace-operators-amp.md - - name: Concurrency namespace constants (AMP) - href: ../parallel/amp/reference/concurrency-namespace-constants-amp.md - - name: accelerator class - href: ../parallel/amp/reference/accelerator-class.md - - name: accelerator_view class - href: ../parallel/amp/reference/accelerator-view-class.md - - name: accelerator_view_removed class - href: ../parallel/amp/reference/accelerator-view-removed-class.md - - name: array class - href: ../parallel/amp/reference/array-class.md - - name: array_view class - href: ../parallel/amp/reference/array-view-class.md - - name: completion_future class - href: ../parallel/amp/reference/completion-future-class.md - - name: extent class (C++ AMP) - href: ../parallel/amp/reference/extent-class.md - - name: index class - href: ../parallel/amp/reference/index-class.md - - name: invalid_compute_domain class - href: ../parallel/amp/reference/invalid-compute-domain-class.md - - name: out_of_memory class - href: ../parallel/amp/reference/out-of-memory-class.md - - name: runtime_exception class - href: ../parallel/amp/reference/runtime-exception-class.md - - name: tile_barrier class - href: ../parallel/amp/reference/tile-barrier-class.md - - name: tiled_extent class - href: ../parallel/amp/reference/tiled-extent-class.md - - name: tiled_index class - href: ../parallel/amp/reference/tiled-index-class.md - - name: uninitialized_object class - href: ../parallel/amp/reference/uninitialized-object-class.md - - name: unsupported_feature class - href: ../parallel/amp/reference/unsupported-feature-class.md - - name: "Concurrency::direct3d Namespace" - expanded: false - items: - - name: "Concurrency::direct3d Namespace" - href: ../parallel/amp/reference/concurrency-direct3d-namespace.md - - name: "Concurrency::direct3d namespace functions (AMP)" - href: ../parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md - - name: adopt_d3d_access_lock_t Structure - href: ../parallel/amp/reference/adopt-d3d-access-lock-t-structure.md - - name: scoped_d3d_access_lock class - href: ../parallel/amp/reference/scoped-d3d-access-lock-class.md - - name: "Concurrency::fast_math Namespace" - expanded: false - items: - - name: "Concurrency::fast_math Namespace" - href: ../parallel/amp/reference/concurrency-fast-math-namespace.md - - name: "Concurrency::fast_math namespace functions" - href: ../parallel/amp/reference/concurrency-fast-math-namespace-functions.md - - name: "Concurrency::graphics Namespace" - expanded: false - items: - - name: "Concurrency::graphics Namespace" - href: ../parallel/amp/reference/concurrency-graphics-namespace.md - - name: "Concurrency::graphics::direct3d namespace" - expanded: false - items: - - name: "Concurrency::graphics::direct3d namespace" - href: ../parallel/amp/reference/concurrency-graphics-direct3d-namespace.md - - name: "Concurrency::graphics::direct3d namespace functions" - href: ../parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md - - name: "Concurrency::graphics namespace functions" - href: ../parallel/amp/reference/concurrency-graphics-namespace-functions.md - - name: "Concurrency::graphics namespace enums" - href: ../parallel/amp/reference/concurrency-graphics-namespace-enums.md - - name: double_2 class - href: ../parallel/amp/reference/double-2-class.md - - name: double_3 class - href: ../parallel/amp/reference/double-3-class.md - - name: double_4 class - href: ../parallel/amp/reference/double-4-class.md - - name: float_2 class - href: ../parallel/amp/reference/float-2-class.md - - name: float_3 class - href: ../parallel/amp/reference/float-3-class.md - - name: float_4 class - href: ../parallel/amp/reference/float-4-class.md - - name: int_2 class - href: ../parallel/amp/reference/int-2-class.md - - name: int_3 class - href: ../parallel/amp/reference/int-3-class.md - - name: int_4 class - href: ../parallel/amp/reference/int-4-class.md - - name: norm class - href: ../parallel/amp/reference/norm-class.md - - name: norm_2 class - href: ../parallel/amp/reference/norm-2-class.md - - name: norm_3 class - href: ../parallel/amp/reference/norm-3-class.md - - name: norm_4 class - href: ../parallel/amp/reference/norm-4-class.md - - name: sampler class - href: ../parallel/amp/reference/sampler-class.md - - name: short_vector Structure - href: ../parallel/amp/reference/short-vector-structure.md - - name: short_vector_traits Structure - href: ../parallel/amp/reference/short-vector-traits-structure.md - - name: texture class - href: ../parallel/amp/reference/texture-class.md - - name: texture_view class - href: ../parallel/amp/reference/texture-view-class.md - - name: writeonly_texture_view class - href: ../parallel/amp/reference/writeonly-texture-view-class.md - - name: uint_2 class - href: ../parallel/amp/reference/uint-2-class.md - - name: uint_3 class - href: ../parallel/amp/reference/uint-3-class.md - - name: uint_4 class - href: ../parallel/amp/reference/uint-4-class.md - - name: unorm class - href: ../parallel/amp/reference/unorm-class.md - - name: unorm_2 class - href: ../parallel/amp/reference/unorm-2-class.md - - name: unorm_3 class - href: ../parallel/amp/reference/unorm-3-class.md - - name: unorm_4 class - href: ../parallel/amp/reference/unorm-4-class.md - - name: "Concurrency::precise_math namespace" - expanded: false - items: - - name: "Concurrency::precise_math namespace" - href: ../parallel/amp/reference/concurrency-precise-math-namespace.md - - name: "Concurrency::precise_math namespace functions" - href: ../parallel/amp/reference/concurrency-precise-math-namespace-functions.md -- name: Concurrency Runtime (ConcRT) + - name: Concurrency::direct3d Namespace + items: + - name: Concurrency::direct3d Namespace + href: ../parallel/amp/reference/concurrency-direct3d-namespace.md + - name: Concurrency::direct3d namespace functions (AMP) + href: ../parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md + - name: adopt_d3d_access_lock_t Structure + href: ../parallel/amp/reference/adopt-d3d-access-lock-t-structure.md + - name: scoped_d3d_access_lock class + href: ../parallel/amp/reference/scoped-d3d-access-lock-class.md + expanded: false + - name: Concurrency::fast_math Namespace + items: + - name: Concurrency::fast_math Namespace + href: ../parallel/amp/reference/concurrency-fast-math-namespace.md + - name: Concurrency::fast_math namespace functions + href: ../parallel/amp/reference/concurrency-fast-math-namespace-functions.md + expanded: false + - name: Concurrency::graphics Namespace + items: + - name: Concurrency::graphics Namespace + href: ../parallel/amp/reference/concurrency-graphics-namespace.md + - name: Concurrency::graphics::direct3d namespace + items: + - name: Concurrency::graphics::direct3d namespace + href: ../parallel/amp/reference/concurrency-graphics-direct3d-namespace.md + - name: Concurrency::graphics::direct3d namespace functions + href: ../parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md + expanded: false + - name: Concurrency::graphics namespace functions + href: ../parallel/amp/reference/concurrency-graphics-namespace-functions.md + - name: Concurrency::graphics namespace enums + href: ../parallel/amp/reference/concurrency-graphics-namespace-enums.md + - name: double_2 class + href: ../parallel/amp/reference/double-2-class.md + - name: double_3 class + href: ../parallel/amp/reference/double-3-class.md + - name: double_4 class + href: ../parallel/amp/reference/double-4-class.md + - name: float_2 class + href: ../parallel/amp/reference/float-2-class.md + - name: float_3 class + href: ../parallel/amp/reference/float-3-class.md + - name: float_4 class + href: ../parallel/amp/reference/float-4-class.md + - name: int_2 class + href: ../parallel/amp/reference/int-2-class.md + - name: int_3 class + href: ../parallel/amp/reference/int-3-class.md + - name: int_4 class + href: ../parallel/amp/reference/int-4-class.md + - name: norm class + href: ../parallel/amp/reference/norm-class.md + - name: norm_2 class + href: ../parallel/amp/reference/norm-2-class.md + - name: norm_3 class + href: ../parallel/amp/reference/norm-3-class.md + - name: norm_4 class + href: ../parallel/amp/reference/norm-4-class.md + - name: sampler class + href: ../parallel/amp/reference/sampler-class.md + - name: short_vector Structure + href: ../parallel/amp/reference/short-vector-structure.md + - name: short_vector_traits Structure + href: ../parallel/amp/reference/short-vector-traits-structure.md + - name: texture class + href: ../parallel/amp/reference/texture-class.md + - name: texture_view class + href: ../parallel/amp/reference/texture-view-class.md + - name: writeonly_texture_view class + href: ../parallel/amp/reference/writeonly-texture-view-class.md + - name: uint_2 class + href: ../parallel/amp/reference/uint-2-class.md + - name: uint_3 class + href: ../parallel/amp/reference/uint-3-class.md + - name: uint_4 class + href: ../parallel/amp/reference/uint-4-class.md + - name: unorm class + href: ../parallel/amp/reference/unorm-class.md + - name: unorm_2 class + href: ../parallel/amp/reference/unorm-2-class.md + - name: unorm_3 class + href: ../parallel/amp/reference/unorm-3-class.md + - name: unorm_4 class + href: ../parallel/amp/reference/unorm-4-class.md + expanded: false + - name: Concurrency::precise_math namespace + items: + - name: Concurrency::precise_math namespace + href: ../parallel/amp/reference/concurrency-precise-math-namespace.md + - name: Concurrency::precise_math namespace functions + href: ../parallel/amp/reference/concurrency-precise-math-namespace-functions.md + expanded: false + expanded: false expanded: false +- name: Concurrency Runtime (ConcRT) items: - - name: Concurrency Runtime - href: ../parallel/concrt/concurrency-runtime.md - - name: Overview of the Concurrency Runtime - href: ../parallel/concrt/overview-of-the-concurrency-runtime.md - - name: Exception handling in the Concurrency Runtime - href: ../parallel/concrt/exception-handling-in-the-concurrency-runtime.md - - name: Parallel diagnostic tools (Concurrency Runtime) - href: ../parallel/concrt/parallel-diagnostic-tools-concurrency-runtime.md - - name: Creating asynchronous operations in C++ for UWP apps - href: ../parallel/concrt/creating-asynchronous-operations-in-cpp-for-windows-store-apps.md + - name: Concurrency Runtime + href: ../parallel/concrt/concurrency-runtime.md + - name: Overview of the Concurrency Runtime + href: ../parallel/concrt/overview-of-the-concurrency-runtime.md + - name: Exception handling in the Concurrency Runtime + href: ../parallel/concrt/exception-handling-in-the-concurrency-runtime.md + - name: Parallel diagnostic tools (Concurrency Runtime) + href: ../parallel/concrt/parallel-diagnostic-tools-concurrency-runtime.md + - name: Creating asynchronous operations in C++ for UWP apps + href: ../parallel/concrt/creating-asynchronous-operations-in-cpp-for-windows-store-apps.md + - name: Comparing the Concurrency Runtime to other concurrency models + items: - name: Comparing the Concurrency Runtime to other concurrency models + href: ../parallel/concrt/comparing-the-concurrency-runtime-to-other-concurrency-models.md + - name: Migrating from OpenMP to the Concurrency Runtime + items: + - name: Migrating from OpenMP to the Concurrency Runtime + href: ../parallel/concrt/migrating-from-openmp-to-the-concurrency-runtime.md + - name: 'How to: Convert an OpenMP parallel for loop to use the Concurrency Runtime' + href: ../parallel/concrt/how-to-convert-an-openmp-parallel-for-loop-to-use-the-concurrency-runtime.md + - name: 'How to: Convert an OpenMP loop that uses cancellation to use the Concurrency Runtime' + href: ../parallel/concrt/convert-an-openmp-loop-that-uses-cancellation.md + - name: 'How to: Convert an OpenMP loop that uses exception handling to use the Concurrency Runtime' + href: ../parallel/concrt/convert-an-openmp-loop-that-uses-exception-handling.md + - name: 'How to: Convert an OpenMP loop that uses a reduction variable to use the Concurrency Runtime' + href: ../parallel/concrt/convert-an-openmp-loop-that-uses-a-reduction-variable.md expanded: false - items: - - name: Comparing the Concurrency Runtime to other concurrency models - href: ../parallel/concrt/comparing-the-concurrency-runtime-to-other-concurrency-models.md - - name: Migrating from OpenMP to the Concurrency Runtime - expanded: false - items: - - name: Migrating from OpenMP to the Concurrency Runtime - href: ../parallel/concrt/migrating-from-openmp-to-the-concurrency-runtime.md - - name: "How to: Convert an OpenMP parallel for loop to use the Concurrency Runtime" - href: ../parallel/concrt/how-to-convert-an-openmp-parallel-for-loop-to-use-the-concurrency-runtime.md - - name: "How to: Convert an OpenMP loop that uses cancellation to use the Concurrency Runtime" - href: ../parallel/concrt/convert-an-openmp-loop-that-uses-cancellation.md - - name: "How to: Convert an OpenMP loop that uses exception handling to use the Concurrency Runtime" - href: ../parallel/concrt/convert-an-openmp-loop-that-uses-exception-handling.md - - name: "How to: Convert an OpenMP loop that uses a reduction variable to use the Concurrency Runtime" - href: ../parallel/concrt/convert-an-openmp-loop-that-uses-a-reduction-variable.md + expanded: false + - name: Parallel Patterns Library (PPL) + items: - name: Parallel Patterns Library (PPL) + href: ../parallel/concrt/parallel-patterns-library-ppl.md + - name: Task parallelism (Concurrency Runtime) + items: + - name: Task parallelism (Concurrency Runtime) + href: ../parallel/concrt/task-parallelism-concurrency-runtime.md + - name: 'How to: Use parallel_invoke to write a parallel sort routine' + href: ../parallel/concrt/how-to-use-parallel-invoke-to-write-a-parallel-sort-routine.md + - name: 'How to: Use parallel_invoke to execute parallel operations' + href: ../parallel/concrt/how-to-use-parallel-invoke-to-execute-parallel-operations.md + - name: 'How to: Create a task that completes after a delay' + href: ../parallel/concrt/how-to-create-a-task-that-completes-after-a-delay.md expanded: false - items: - - name: Parallel Patterns Library (PPL) - href: ../parallel/concrt/parallel-patterns-library-ppl.md - - name: Task parallelism (Concurrency Runtime) - expanded: false - items: - - name: Task parallelism (Concurrency Runtime) - href: ../parallel/concrt/task-parallelism-concurrency-runtime.md - - name: "How to: Use parallel_invoke to write a parallel sort routine" - href: ../parallel/concrt/how-to-use-parallel-invoke-to-write-a-parallel-sort-routine.md - - name: "How to: Use parallel_invoke to execute parallel operations" - href: ../parallel/concrt/how-to-use-parallel-invoke-to-execute-parallel-operations.md - - name: "How to: Create a task that completes after a delay" - href: ../parallel/concrt/how-to-create-a-task-that-completes-after-a-delay.md - - name: Parallel algorithms - expanded: false - items: - - name: Parallel algorithms - href: ../parallel/concrt/parallel-algorithms.md - - name: "How to: Write a parallel_for loop" - href: ../parallel/concrt/how-to-write-a-parallel-for-loop.md - - name: "How to: Write a parallel_for_each loop" - href: ../parallel/concrt/how-to-write-a-parallel-for-each-loop.md - - name: "How to: Perform map and reduce operations in parallel" - href: ../parallel/concrt/how-to-perform-map-and-reduce-operations-in-parallel.md - - name: Parallel containers and objects - expanded: false - items: - - name: Parallel containers and objects - href: ../parallel/concrt/parallel-containers-and-objects.md - - name: "How to: Use parallel containers to increase efficiency" - href: ../parallel/concrt/how-to-use-parallel-containers-to-increase-efficiency.md - - name: "How to: Use combinable to improve performance" - href: ../parallel/concrt/how-to-use-combinable-to-improve-performance.md - - name: "How to: Use combinable to combine sets" - href: ../parallel/concrt/how-to-use-combinable-to-combine-sets.md - - name: Cancellation in the PPL - expanded: false - items: - - name: Cancellation in the PPL - href: ../parallel/concrt/cancellation-in-the-ppl.md - - name: "How to: Use cancellation to break from a parallel loop" - href: ../parallel/concrt/how-to-use-cancellation-to-break-from-a-parallel-loop.md - - name: "How to: Use exception handling to break from a parallel loop" - href: ../parallel/concrt/how-to-use-exception-handling-to-break-from-a-parallel-loop.md - - name: Asynchronous Agents Library + - name: Parallel algorithms + items: + - name: Parallel algorithms + href: ../parallel/concrt/parallel-algorithms.md + - name: 'How to: Write a parallel_for loop' + href: ../parallel/concrt/how-to-write-a-parallel-for-loop.md + - name: 'How to: Write a parallel_for_each loop' + href: ../parallel/concrt/how-to-write-a-parallel-for-each-loop.md + - name: 'How to: Perform map and reduce operations in parallel' + href: ../parallel/concrt/how-to-perform-map-and-reduce-operations-in-parallel.md expanded: false - items: - - name: Asynchronous Agents Library - href: ../parallel/concrt/asynchronous-agents-library.md - - name: Asynchronous agents - href: ../parallel/concrt/asynchronous-agents.md - - name: Asynchronous message blocks - href: ../parallel/concrt/asynchronous-message-blocks.md - - name: Message passing functions - href: ../parallel/concrt/message-passing-functions.md - - name: "How to: Implement various producer-consumer patterns" - href: ../parallel/concrt/how-to-implement-various-producer-consumer-patterns.md - - name: "How to: Provide work functions to the call and transformer classes" - href: ../parallel/concrt/how-to-provide-work-functions-to-the-call-and-transformer-classes.md - - name: "How to: Use transformer in a data pipeline" - href: ../parallel/concrt/how-to-use-transformer-in-a-data-pipeline.md - - name: "How to: Select among completed tasks" - href: ../parallel/concrt/how-to-select-among-completed-tasks.md - - name: "How to: Send a message at a regular interval" - href: ../parallel/concrt/how-to-send-a-message-at-a-regular-interval.md - - name: "How to: Use a message block filter" - href: ../parallel/concrt/how-to-use-a-message-block-filter.md - - name: Synchronization data structures + - name: Parallel containers and objects + items: + - name: Parallel containers and objects + href: ../parallel/concrt/parallel-containers-and-objects.md + - name: 'How to: Use parallel containers to increase efficiency' + href: ../parallel/concrt/how-to-use-parallel-containers-to-increase-efficiency.md + - name: 'How to: Use combinable to improve performance' + href: ../parallel/concrt/how-to-use-combinable-to-improve-performance.md + - name: 'How to: Use combinable to combine sets' + href: ../parallel/concrt/how-to-use-combinable-to-combine-sets.md expanded: false - items: - - name: Synchronization data structures - href: ../parallel/concrt/synchronization-data-structures.md - - name: Comparing synchronization data structures to the Windows API - href: ../parallel/concrt/comparing-synchronization-data-structures-to-the-windows-api.md + - name: Cancellation in the PPL + items: + - name: Cancellation in the PPL + href: ../parallel/concrt/cancellation-in-the-ppl.md + - name: 'How to: Use cancellation to break from a parallel loop' + href: ../parallel/concrt/how-to-use-cancellation-to-break-from-a-parallel-loop.md + - name: 'How to: Use exception handling to break from a parallel loop' + href: ../parallel/concrt/how-to-use-exception-handling-to-break-from-a-parallel-loop.md + expanded: false + expanded: false + - name: Asynchronous Agents Library + items: + - name: Asynchronous Agents Library + href: ../parallel/concrt/asynchronous-agents-library.md + - name: Asynchronous agents + href: ../parallel/concrt/asynchronous-agents.md + - name: Asynchronous message blocks + href: ../parallel/concrt/asynchronous-message-blocks.md + - name: Message passing functions + href: ../parallel/concrt/message-passing-functions.md + - name: 'How to: Implement various producer-consumer patterns' + href: ../parallel/concrt/how-to-implement-various-producer-consumer-patterns.md + - name: 'How to: Provide work functions to the call and transformer classes' + href: ../parallel/concrt/how-to-provide-work-functions-to-the-call-and-transformer-classes.md + - name: 'How to: Use transformer in a data pipeline' + href: ../parallel/concrt/how-to-use-transformer-in-a-data-pipeline.md + - name: 'How to: Select among completed tasks' + href: ../parallel/concrt/how-to-select-among-completed-tasks.md + - name: 'How to: Send a message at a regular interval' + href: ../parallel/concrt/how-to-send-a-message-at-a-regular-interval.md + - name: 'How to: Use a message block filter' + href: ../parallel/concrt/how-to-use-a-message-block-filter.md + expanded: false + - name: Synchronization data structures + items: + - name: Synchronization data structures + href: ../parallel/concrt/synchronization-data-structures.md + - name: Comparing synchronization data structures to the Windows API + href: ../parallel/concrt/comparing-synchronization-data-structures-to-the-windows-api.md + expanded: false + - name: Task scheduler (Concurrency Runtime) + items: - name: Task scheduler (Concurrency Runtime) + href: ../parallel/concrt/task-scheduler-concurrency-runtime.md + - name: Scheduler instances + items: + - name: Scheduler instances + href: ../parallel/concrt/scheduler-instances.md + - name: 'How to: Manage a scheduler instance' + href: ../parallel/concrt/how-to-manage-a-scheduler-instance.md expanded: false - items: - - name: Task scheduler (Concurrency Runtime) - href: ../parallel/concrt/task-scheduler-concurrency-runtime.md - - name: Scheduler instances - expanded: false - items: - - name: Scheduler instances - href: ../parallel/concrt/scheduler-instances.md - - name: "How to: Manage a scheduler instance" - href: ../parallel/concrt/how-to-manage-a-scheduler-instance.md - - name: Scheduler policies - expanded: false - items: - - name: Scheduler policies - href: ../parallel/concrt/scheduler-policies.md - - name: "How to: Specify specific scheduler policies" - href: ../parallel/concrt/how-to-specify-specific-scheduler-policies.md - - name: "How to: Create agents that use specific scheduler policies" - href: ../parallel/concrt/how-to-create-agents-that-use-specific-scheduler-policies.md - - name: Schedule groups - expanded: false - items: - - name: Schedule groups - href: ../parallel/concrt/schedule-groups.md - - name: "How to: Use schedule groups to influence order of execution" - href: ../parallel/concrt/how-to-use-schedule-groups-to-influence-order-of-execution.md - - name: Lightweight tasks - href: ../parallel/concrt/lightweight-tasks.md - - name: Contexts - expanded: false - items: - - name: Contexts - href: ../parallel/concrt/contexts.md - - name: "How to: Use the Context class to implement a cooperative semaphore" - href: ../parallel/concrt/how-to-use-the-context-class-to-implement-a-cooperative-semaphore.md - - name: "How to: Use oversubscription to offset latency" - href: ../parallel/concrt/how-to-use-oversubscription-to-offset-latency.md - - name: Memory management functions - expanded: false - items: - - name: Memory management functions - href: ../parallel/concrt/memory-management-functions.md - - name: "How to: Use Alloc and Free to improve memory performance" - href: ../parallel/concrt/how-to-use-alloc-and-free-to-improve-memory-performance.md - - name: Concurrency Runtime walkthroughs + - name: Scheduler policies + items: + - name: Scheduler policies + href: ../parallel/concrt/scheduler-policies.md + - name: 'How to: Specify specific scheduler policies' + href: ../parallel/concrt/how-to-specify-specific-scheduler-policies.md + - name: 'How to: Create agents that use specific scheduler policies' + href: ../parallel/concrt/how-to-create-agents-that-use-specific-scheduler-policies.md + expanded: false + - name: Schedule groups + items: + - name: Schedule groups + href: ../parallel/concrt/schedule-groups.md + - name: 'How to: Use schedule groups to influence order of execution' + href: ../parallel/concrt/how-to-use-schedule-groups-to-influence-order-of-execution.md expanded: false - items: - - name: Concurrency Runtime walkthroughs - href: ../parallel/concrt/concurrency-runtime-walkthroughs.md - - name: "Walkthrough: Connecting using tasks and xml http requests" - href: ../parallel/concrt/walkthrough-connecting-using-tasks-and-xml-http-requests.md - - name: "Walkthrough: Creating an agent-based application" - href: ../parallel/concrt/walkthrough-creating-an-agent-based-application.md - - name: "Walkthrough: Creating a dataflow agent" - href: ../parallel/concrt/walkthrough-creating-a-dataflow-agent.md - - name: "Walkthrough: Creating an image-processing network" - href: ../parallel/concrt/walkthrough-creating-an-image-processing-network.md - - name: "Walkthrough: Implementing futures" - href: ../parallel/concrt/walkthrough-implementing-futures.md - - name: "Walkthrough: Using join to prevent deadlock" - href: ../parallel/concrt/walkthrough-using-join-to-prevent-deadlock.md - - name: "Walkthrough: Removing work from a user-interface thread" - href: ../parallel/concrt/walkthrough-removing-work-from-a-user-interface-thread.md - - name: "Walkthrough: Using the Concurrency Runtime in a COM-enabled application" - href: ../parallel/concrt/walkthrough-using-the-concurrency-runtime-in-a-com-enabled-application.md - - name: "Walkthrough: Adapting existing code to use lightweight tasks" - href: ../parallel/concrt/walkthrough-adapting-existing-code-to-use-lightweight-tasks.md - - name: "Walkthrough: Creating a custom message block" - href: ../parallel/concrt/walkthrough-creating-a-custom-message-block.md + - name: Lightweight tasks + href: ../parallel/concrt/lightweight-tasks.md + - name: Contexts + items: + - name: Contexts + href: ../parallel/concrt/contexts.md + - name: 'How to: Use the Context class to implement a cooperative semaphore' + href: ../parallel/concrt/how-to-use-the-context-class-to-implement-a-cooperative-semaphore.md + - name: 'How to: Use oversubscription to offset latency' + href: ../parallel/concrt/how-to-use-oversubscription-to-offset-latency.md + expanded: false + - name: Memory management functions + items: + - name: Memory management functions + href: ../parallel/concrt/memory-management-functions.md + - name: 'How to: Use Alloc and Free to improve memory performance' + href: ../parallel/concrt/how-to-use-alloc-and-free-to-improve-memory-performance.md + expanded: false + expanded: false + - name: Concurrency Runtime walkthroughs + items: + - name: Concurrency Runtime walkthroughs + href: ../parallel/concrt/concurrency-runtime-walkthroughs.md + - name: 'Walkthrough: Connecting using tasks and xml http requests' + href: ../parallel/concrt/walkthrough-connecting-using-tasks-and-xml-http-requests.md + - name: 'Walkthrough: Creating an agent-based application' + href: ../parallel/concrt/walkthrough-creating-an-agent-based-application.md + - name: 'Walkthrough: Creating a dataflow agent' + href: ../parallel/concrt/walkthrough-creating-a-dataflow-agent.md + - name: 'Walkthrough: Creating an image-processing network' + href: ../parallel/concrt/walkthrough-creating-an-image-processing-network.md + - name: 'Walkthrough: Implementing futures' + href: ../parallel/concrt/walkthrough-implementing-futures.md + - name: 'Walkthrough: Using join to prevent deadlock' + href: ../parallel/concrt/walkthrough-using-join-to-prevent-deadlock.md + - name: 'Walkthrough: Removing work from a user-interface thread' + href: ../parallel/concrt/walkthrough-removing-work-from-a-user-interface-thread.md + - name: 'Walkthrough: Using the Concurrency Runtime in a COM-enabled application' + href: ../parallel/concrt/walkthrough-using-the-concurrency-runtime-in-a-com-enabled-application.md + - name: 'Walkthrough: Adapting existing code to use lightweight tasks' + href: ../parallel/concrt/walkthrough-adapting-existing-code-to-use-lightweight-tasks.md + - name: 'Walkthrough: Creating a custom message block' + href: ../parallel/concrt/walkthrough-creating-a-custom-message-block.md + expanded: false + - name: Concurrency Runtime best practices + items: - name: Concurrency Runtime best practices + href: ../parallel/concrt/concurrency-runtime-best-practices.md + - name: Best practices in the Parallel Patterns Library + href: ../parallel/concrt/best-practices-in-the-parallel-patterns-library.md + - name: Best practices in the Asynchronous Agents Library + href: ../parallel/concrt/best-practices-in-the-asynchronous-agents-library.md + - name: General best practices in the Concurrency Runtime + href: ../parallel/concrt/general-best-practices-in-the-concurrency-runtime.md + expanded: false + - name: Reference + items: + - name: Reference (Concurrency Runtime) + href: ../parallel/concrt/reference/reference-concurrency-runtime.md + - name: concurrency namespace + items: + - name: concurrency namespace + href: ../parallel/concrt/reference/concurrency-namespace.md + - name: concurrency namespace functions + href: ../parallel/concrt/reference/concurrency-namespace-functions.md + - name: concurrency namespace Operators + href: ../parallel/concrt/reference/concurrency-namespace-operators.md + - name: concurrency namespace constants1 + href: ../parallel/concrt/reference/concurrency-namespace-constants1.md + - name: concurrency namespace enums + href: ../parallel/concrt/reference/concurrency-namespace-enums.md + - name: affinity_partitioner class + href: ../parallel/concrt/reference/affinity-partitioner-class.md + - name: agent class + href: ../parallel/concrt/reference/agent-class.md + - name: auto_partitioner class + href: ../parallel/concrt/reference/auto-partitioner-class.md + - name: bad_target class + href: ../parallel/concrt/reference/bad-target-class.md + - name: call class + href: ../parallel/concrt/reference/call-class.md + - name: cancellation_token class + href: ../parallel/concrt/reference/cancellation-token-class.md + - name: cancellation_token_registration class + href: ../parallel/concrt/reference/cancellation-token-registration-class.md + - name: cancellation_token_source class + href: ../parallel/concrt/reference/cancellation-token-source-class.md + - name: choice class + href: ../parallel/concrt/reference/choice-class.md + - name: combinable class + href: ../parallel/concrt/reference/combinable-class.md + - name: concurrent_priority_queue class + href: ../parallel/concrt/reference/concurrent-priority-queue-class.md + - name: concurrent_queue class + href: ../parallel/concrt/reference/concurrent-queue-class.md + - name: concurrent_unordered_map class + href: ../parallel/concrt/reference/concurrent-unordered-map-class.md + - name: concurrent_unordered_multimap class + href: ../parallel/concrt/reference/concurrent-unordered-multimap-class.md + - name: concurrent_unordered_multiset class + href: ../parallel/concrt/reference/concurrent-unordered-multiset-class.md + - name: concurrent_unordered_set class + href: ../parallel/concrt/reference/concurrent-unordered-set-class.md + - name: concurrent_vector class + href: ../parallel/concrt/reference/concurrent-vector-class.md + - name: Context class + href: ../parallel/concrt/reference/context-class.md + - name: context_self_unblock class + href: ../parallel/concrt/reference/context-self-unblock-class.md + - name: context_unblock_unbalanced class + href: ../parallel/concrt/reference/context-unblock-unbalanced-class.md + - name: critical_section class + href: ../parallel/concrt/reference/critical-section-class.md + - name: CurrentScheduler class + href: ../parallel/concrt/reference/currentscheduler-class.md + - name: default_scheduler_exists class + href: ../parallel/concrt/reference/default-scheduler-exists-class.md + - name: DispatchState Structure + href: ../parallel/concrt/reference/dispatchstate-structure.md + - name: event class + href: ../parallel/concrt/reference/event-class.md + - name: IExecutionContext Structure + href: ../parallel/concrt/reference/iexecutioncontext-structure.md + - name: IExecutionResource Structure + href: ../parallel/concrt/reference/iexecutionresource-structure.md + - name: improper_lock class + href: ../parallel/concrt/reference/improper-lock-class.md + - name: improper_scheduler_attach class + href: ../parallel/concrt/reference/improper-scheduler-attach-class.md + - name: improper_scheduler_detach class + href: ../parallel/concrt/reference/improper-scheduler-detach-class.md + - name: improper_scheduler_reference class + href: ../parallel/concrt/reference/improper-scheduler-reference-class.md + - name: invalid_link_target class + href: ../parallel/concrt/reference/invalid-link-target-class.md + - name: invalid_multiple_scheduling class + href: ../parallel/concrt/reference/invalid-multiple-scheduling-class.md + - name: invalid_operation class + href: ../parallel/concrt/reference/invalid-operation-class.md + - name: invalid_oversubscribe_operation class + href: ../parallel/concrt/reference/invalid-oversubscribe-operation-class.md + - name: invalid_scheduler_policy_key class + href: ../parallel/concrt/reference/invalid-scheduler-policy-key-class.md + - name: invalid_scheduler_policy_thread_specification class + href: ../parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md + - name: invalid_scheduler_policy_value class + href: ../parallel/concrt/reference/invalid-scheduler-policy-value-class.md + - name: IResourceManager Structure + href: ../parallel/concrt/reference/iresourcemanager-structure.md + - name: IScheduler Structure + href: ../parallel/concrt/reference/ischeduler-structure.md + - name: ISchedulerProxy Structure + href: ../parallel/concrt/reference/ischedulerproxy-structure.md + - name: ISource class + href: ../parallel/concrt/reference/isource-class.md + - name: ITarget class + href: ../parallel/concrt/reference/itarget-class.md + - name: IThreadProxy Structure + href: ../parallel/concrt/reference/ithreadproxy-structure.md + - name: ITopologyExecutionResource Structure + href: ../parallel/concrt/reference/itopologyexecutionresource-structure.md + - name: ITopologyNode Structure + href: ../parallel/concrt/reference/itopologynode-structure.md + - name: IUMSCompletionList Structure + href: ../parallel/concrt/reference/iumscompletionlist-structure.md + - name: IUMSScheduler Structure + href: ../parallel/concrt/reference/iumsscheduler-structure.md + - name: IUMSThreadProxy Structure + href: ../parallel/concrt/reference/iumsthreadproxy-structure.md + - name: IUMSUnblockNotification Structure + href: ../parallel/concrt/reference/iumsunblocknotification-structure.md + - name: IVirtualProcessorRoot Structure + href: ../parallel/concrt/reference/ivirtualprocessorroot-structure.md + - name: join class + href: ../parallel/concrt/reference/join-class.md + - name: location class + href: ../parallel/concrt/reference/location-class.md + - name: message class + href: ../parallel/concrt/reference/message-class.md + - name: message_not_found class + href: ../parallel/concrt/reference/message-not-found-class.md + - name: message_processor class + href: ../parallel/concrt/reference/message-processor-class.md + - name: missing_wait class + href: ../parallel/concrt/reference/missing-wait-class.md + - name: multi_link_registry class + href: ../parallel/concrt/reference/multi-link-registry-class.md + - name: multitype_join class + href: ../parallel/concrt/reference/multitype-join-class.md + - name: nested_scheduler_missing_detach class + href: ../parallel/concrt/reference/nested-scheduler-missing-detach-class.md + - name: network_link_registry class + href: ../parallel/concrt/reference/network-link-registry-class.md + - name: operation_timed_out class + href: ../parallel/concrt/reference/operation-timed-out-class.md + - name: ordered_message_processor class + href: ../parallel/concrt/reference/ordered-message-processor-class.md + - name: overwrite_buffer class + href: ../parallel/concrt/reference/overwrite-buffer-class.md + - name: progress_reporter class + href: ../parallel/concrt/reference/progress-reporter-class.md + - name: propagator_block class + href: ../parallel/concrt/reference/propagator-block-class.md + - name: reader_writer_lock class + href: ../parallel/concrt/reference/reader-writer-lock-class.md + - name: ScheduleGroup class + href: ../parallel/concrt/reference/schedulegroup-class.md + - name: Scheduler class + href: ../parallel/concrt/reference/scheduler-class.md + - name: scheduler_interface Structure + href: ../parallel/concrt/reference/scheduler-interface-structure.md + - name: scheduler_not_attached class + href: ../parallel/concrt/reference/scheduler-not-attached-class.md + - name: scheduler_ptr Structure (Concurrency Runtime) + href: ../parallel/concrt/reference/scheduler-ptr-structure-concurrency-runtime.md + - name: scheduler_resource_allocation_error class + href: ../parallel/concrt/reference/scheduler-resource-allocation-error-class.md + - name: scheduler_worker_creation_error class + href: ../parallel/concrt/reference/scheduler-worker-creation-error-class.md + - name: SchedulerPolicy class + href: ../parallel/concrt/reference/schedulerpolicy-class.md + - name: simple_partitioner class + href: ../parallel/concrt/reference/simple-partitioner-class.md + - name: single_assignment class + href: ../parallel/concrt/reference/single-assignment-class.md + - name: single_link_registry class + href: ../parallel/concrt/reference/single-link-registry-class.md + - name: source_block class + href: ../parallel/concrt/reference/source-block-class.md + - name: source_link_manager class + href: ../parallel/concrt/reference/source-link-manager-class.md + - name: static_partitioner class + href: ../parallel/concrt/reference/static-partitioner-class.md + - name: structured_task_group class + href: ../parallel/concrt/reference/structured-task-group-class.md + - name: target_block class + href: ../parallel/concrt/reference/target-block-class.md + - name: task class (Concurrency Runtime) + href: ../parallel/concrt/reference/task-class.md + - name: task_canceled class + href: ../parallel/concrt/reference/task-canceled-class.md + - name: task_completion_event class + href: ../parallel/concrt/reference/task-completion-event-class.md + - name: task_continuation_context class + href: ../parallel/concrt/reference/task-continuation-context-class.md + - name: task_group class + href: ../parallel/concrt/reference/task-group-class.md + - name: task_handle class + href: ../parallel/concrt/reference/task-handle-class.md + - name: task_options class (Concurrency Runtime) + href: ../parallel/concrt/reference/task-options-class-concurrency-runtime.md + - name: timer class + href: ../parallel/concrt/reference/timer-class.md + - name: transformer class + href: ../parallel/concrt/reference/transformer-class.md + - name: unbounded_buffer class + href: ../parallel/concrt/reference/unbounded-buffer-class.md + - name: unsupported_os class + href: ../parallel/concrt/reference/unsupported-os-class.md expanded: false - items: - - name: Concurrency Runtime best practices - href: ../parallel/concrt/concurrency-runtime-best-practices.md - - name: Best practices in the Parallel Patterns Library - href: ../parallel/concrt/best-practices-in-the-parallel-patterns-library.md - - name: Best practices in the Asynchronous Agents Library - href: ../parallel/concrt/best-practices-in-the-asynchronous-agents-library.md - - name: General best practices in the Concurrency Runtime - href: ../parallel/concrt/general-best-practices-in-the-concurrency-runtime.md - - name: Reference + - name: std namespace + items: + - name: std namespace + href: ../parallel/concrt/reference/std-namespace.md + - name: make_exception_ptr function + href: ../parallel/concrt/reference/make-exception-ptr-function.md expanded: false - items: - - name: Reference (Concurrency Runtime) - href: ../parallel/concrt/reference/reference-concurrency-runtime.md - - name: concurrency namespace - expanded: false - items: - - name: concurrency namespace - href: ../parallel/concrt/reference/concurrency-namespace.md - - name: concurrency namespace functions - href: ../parallel/concrt/reference/concurrency-namespace-functions.md - - name: concurrency namespace Operators - href: ../parallel/concrt/reference/concurrency-namespace-operators.md - - name: concurrency namespace constants1 - href: ../parallel/concrt/reference/concurrency-namespace-constants1.md - - name: concurrency namespace enums - href: ../parallel/concrt/reference/concurrency-namespace-enums.md - - name: affinity_partitioner class - href: ../parallel/concrt/reference/affinity-partitioner-class.md - - name: agent class - href: ../parallel/concrt/reference/agent-class.md - - name: auto_partitioner class - href: ../parallel/concrt/reference/auto-partitioner-class.md - - name: bad_target class - href: ../parallel/concrt/reference/bad-target-class.md - - name: call class - href: ../parallel/concrt/reference/call-class.md - - name: cancellation_token class - href: ../parallel/concrt/reference/cancellation-token-class.md - - name: cancellation_token_registration class - href: ../parallel/concrt/reference/cancellation-token-registration-class.md - - name: cancellation_token_source class - href: ../parallel/concrt/reference/cancellation-token-source-class.md - - name: choice class - href: ../parallel/concrt/reference/choice-class.md - - name: combinable class - href: ../parallel/concrt/reference/combinable-class.md - - name: concurrent_priority_queue class - href: ../parallel/concrt/reference/concurrent-priority-queue-class.md - - name: concurrent_queue class - href: ../parallel/concrt/reference/concurrent-queue-class.md - - name: concurrent_unordered_map class - href: ../parallel/concrt/reference/concurrent-unordered-map-class.md - - name: concurrent_unordered_multimap class - href: ../parallel/concrt/reference/concurrent-unordered-multimap-class.md - - name: concurrent_unordered_multiset class - href: ../parallel/concrt/reference/concurrent-unordered-multiset-class.md - - name: concurrent_unordered_set class - href: ../parallel/concrt/reference/concurrent-unordered-set-class.md - - name: concurrent_vector class - href: ../parallel/concrt/reference/concurrent-vector-class.md - - name: Context class - href: ../parallel/concrt/reference/context-class.md - - name: context_self_unblock class - href: ../parallel/concrt/reference/context-self-unblock-class.md - - name: context_unblock_unbalanced class - href: ../parallel/concrt/reference/context-unblock-unbalanced-class.md - - name: critical_section class - href: ../parallel/concrt/reference/critical-section-class.md - - name: CurrentScheduler class - href: ../parallel/concrt/reference/currentscheduler-class.md - - name: default_scheduler_exists class - href: ../parallel/concrt/reference/default-scheduler-exists-class.md - - name: DispatchState Structure - href: ../parallel/concrt/reference/dispatchstate-structure.md - - name: event class - href: ../parallel/concrt/reference/event-class.md - - name: IExecutionContext Structure - href: ../parallel/concrt/reference/iexecutioncontext-structure.md - - name: IExecutionResource Structure - href: ../parallel/concrt/reference/iexecutionresource-structure.md - - name: improper_lock class - href: ../parallel/concrt/reference/improper-lock-class.md - - name: improper_scheduler_attach class - href: ../parallel/concrt/reference/improper-scheduler-attach-class.md - - name: improper_scheduler_detach class - href: ../parallel/concrt/reference/improper-scheduler-detach-class.md - - name: improper_scheduler_reference class - href: ../parallel/concrt/reference/improper-scheduler-reference-class.md - - name: invalid_link_target class - href: ../parallel/concrt/reference/invalid-link-target-class.md - - name: invalid_multiple_scheduling class - href: ../parallel/concrt/reference/invalid-multiple-scheduling-class.md - - name: invalid_operation class - href: ../parallel/concrt/reference/invalid-operation-class.md - - name: invalid_oversubscribe_operation class - href: ../parallel/concrt/reference/invalid-oversubscribe-operation-class.md - - name: invalid_scheduler_policy_key class - href: ../parallel/concrt/reference/invalid-scheduler-policy-key-class.md - - name: invalid_scheduler_policy_thread_specification class - href: ../parallel/concrt/reference/invalid-scheduler-policy-thread-specification-class.md - - name: invalid_scheduler_policy_value class - href: ../parallel/concrt/reference/invalid-scheduler-policy-value-class.md - - name: IResourceManager Structure - href: ../parallel/concrt/reference/iresourcemanager-structure.md - - name: IScheduler Structure - href: ../parallel/concrt/reference/ischeduler-structure.md - - name: ISchedulerProxy Structure - href: ../parallel/concrt/reference/ischedulerproxy-structure.md - - name: ISource class - href: ../parallel/concrt/reference/isource-class.md - - name: ITarget class - href: ../parallel/concrt/reference/itarget-class.md - - name: IThreadProxy Structure - href: ../parallel/concrt/reference/ithreadproxy-structure.md - - name: ITopologyExecutionResource Structure - href: ../parallel/concrt/reference/itopologyexecutionresource-structure.md - - name: ITopologyNode Structure - href: ../parallel/concrt/reference/itopologynode-structure.md - - name: IUMSCompletionList Structure - href: ../parallel/concrt/reference/iumscompletionlist-structure.md - - name: IUMSScheduler Structure - href: ../parallel/concrt/reference/iumsscheduler-structure.md - - name: IUMSThreadProxy Structure - href: ../parallel/concrt/reference/iumsthreadproxy-structure.md - - name: IUMSUnblockNotification Structure - href: ../parallel/concrt/reference/iumsunblocknotification-structure.md - - name: IVirtualProcessorRoot Structure - href: ../parallel/concrt/reference/ivirtualprocessorroot-structure.md - - name: join class - href: ../parallel/concrt/reference/join-class.md - - name: location class - href: ../parallel/concrt/reference/location-class.md - - name: message class - href: ../parallel/concrt/reference/message-class.md - - name: message_not_found class - href: ../parallel/concrt/reference/message-not-found-class.md - - name: message_processor class - href: ../parallel/concrt/reference/message-processor-class.md - - name: missing_wait class - href: ../parallel/concrt/reference/missing-wait-class.md - - name: multi_link_registry class - href: ../parallel/concrt/reference/multi-link-registry-class.md - - name: multitype_join class - href: ../parallel/concrt/reference/multitype-join-class.md - - name: nested_scheduler_missing_detach class - href: ../parallel/concrt/reference/nested-scheduler-missing-detach-class.md - - name: network_link_registry class - href: ../parallel/concrt/reference/network-link-registry-class.md - - name: operation_timed_out class - href: ../parallel/concrt/reference/operation-timed-out-class.md - - name: ordered_message_processor class - href: ../parallel/concrt/reference/ordered-message-processor-class.md - - name: overwrite_buffer class - href: ../parallel/concrt/reference/overwrite-buffer-class.md - - name: progress_reporter class - href: ../parallel/concrt/reference/progress-reporter-class.md - - name: propagator_block class - href: ../parallel/concrt/reference/propagator-block-class.md - - name: reader_writer_lock class - href: ../parallel/concrt/reference/reader-writer-lock-class.md - - name: ScheduleGroup class - href: ../parallel/concrt/reference/schedulegroup-class.md - - name: Scheduler class - href: ../parallel/concrt/reference/scheduler-class.md - - name: scheduler_interface Structure - href: ../parallel/concrt/reference/scheduler-interface-structure.md - - name: scheduler_not_attached class - href: ../parallel/concrt/reference/scheduler-not-attached-class.md - - name: scheduler_ptr Structure (Concurrency Runtime) - href: ../parallel/concrt/reference/scheduler-ptr-structure-concurrency-runtime.md - - name: scheduler_resource_allocation_error class - href: ../parallel/concrt/reference/scheduler-resource-allocation-error-class.md - - name: scheduler_worker_creation_error class - href: ../parallel/concrt/reference/scheduler-worker-creation-error-class.md - - name: SchedulerPolicy class - href: ../parallel/concrt/reference/schedulerpolicy-class.md - - name: simple_partitioner class - href: ../parallel/concrt/reference/simple-partitioner-class.md - - name: single_assignment class - href: ../parallel/concrt/reference/single-assignment-class.md - - name: single_link_registry class - href: ../parallel/concrt/reference/single-link-registry-class.md - - name: source_block class - href: ../parallel/concrt/reference/source-block-class.md - - name: source_link_manager class - href: ../parallel/concrt/reference/source-link-manager-class.md - - name: static_partitioner class - href: ../parallel/concrt/reference/static-partitioner-class.md - - name: structured_task_group class - href: ../parallel/concrt/reference/structured-task-group-class.md - - name: target_block class - href: ../parallel/concrt/reference/target-block-class.md - - name: task class (Concurrency Runtime) - href: ../parallel/concrt/reference/task-class.md - - name: task_canceled class - href: ../parallel/concrt/reference/task-canceled-class.md - - name: task_completion_event class - href: ../parallel/concrt/reference/task-completion-event-class.md - - name: task_continuation_context class - href: ../parallel/concrt/reference/task-continuation-context-class.md - - name: task_group class - href: ../parallel/concrt/reference/task-group-class.md - - name: task_handle class - href: ../parallel/concrt/reference/task-handle-class.md - - name: task_options class (Concurrency Runtime) - href: ../parallel/concrt/reference/task-options-class-concurrency-runtime.md - - name: timer class - href: ../parallel/concrt/reference/timer-class.md - - name: transformer class - href: ../parallel/concrt/reference/transformer-class.md - - name: unbounded_buffer class - href: ../parallel/concrt/reference/unbounded-buffer-class.md - - name: unsupported_os class - href: ../parallel/concrt/reference/unsupported-os-class.md - - name: std namespace - expanded: false - items: - - name: std namespace - href: ../parallel/concrt/reference/std-namespace.md - - name: make_exception_ptr function - href: ../parallel/concrt/reference/make-exception-ptr-function.md - - name: stdx namespace - expanded: false - items: - - name: stdx namespace - href: ../parallel/concrt/reference/stdx-namespace.md - - name: declval function - href: ../parallel/concrt/reference/declval-function.md -- name: OpenMP + - name: stdx namespace + items: + - name: stdx namespace + href: ../parallel/concrt/reference/stdx-namespace.md + - name: declval function + href: ../parallel/concrt/reference/declval-function.md + expanded: false + expanded: false expanded: false +- name: OpenMP items: - - name: OpenMP in MSVC - href: ../parallel/openmp/openmp-in-visual-cpp.md - - name: SIMD Extension - href: ../parallel/openmp/openmp-simd.md + - name: OpenMP in MSVC + href: ../parallel/openmp/openmp-in-visual-cpp.md + - name: SIMD Extension + href: ../parallel/openmp/openmp-simd.md + - name: OpenMP C and C++ Application Program Interface + items: - name: OpenMP C and C++ Application Program Interface - expanded: false - items: - - name: OpenMP C and C++ Application Program Interface - href: ../parallel/openmp/openmp-c-and-cpp-application-program-interface.md - - name: Introduction - href: ../parallel/openmp/1-introduction.md - - name: Directives - href: ../parallel/openmp/2-directives.md - - name: Run-time library functions - href: ../parallel/openmp/3-run-time-library-functions.md - - name: Environment variables - href: ../parallel/openmp/4-environment-variables.md - - name: Appendices - items: - - name: Examples - href: ../parallel/openmp/a-examples.md - - name: Stubs for run-time library functions - href: ../parallel/openmp/b-stubs-for-run-time-library-functions.md - - name: OpenMP C and C++ grammar - href: ../parallel/openmp/c-openmp-c-and-cpp-grammar.md - - name: The schedule clause - href: ../parallel/openmp/d-using-the-schedule-clause.md - - name: Implementation-defined behaviors in OpenMP C/C++ - href: ../parallel/openmp/e-implementation-defined-behaviors-in-openmp-c-cpp.md - - name: New features and clarifications in version 2.0 - href: ../parallel/openmp/f-new-features-and-clarifications-in-version-2-0.md + href: ../parallel/openmp/openmp-c-and-cpp-application-program-interface.md + - name: Introduction + href: ../parallel/openmp/1-introduction.md + - name: Directives + href: ../parallel/openmp/2-directives.md + - name: Run-time library functions + href: ../parallel/openmp/3-run-time-library-functions.md + - name: Environment variables + href: ../parallel/openmp/4-environment-variables.md + - name: Appendices + items: + - name: Examples + href: ../parallel/openmp/a-examples.md + - name: Stubs for run-time library functions + href: ../parallel/openmp/b-stubs-for-run-time-library-functions.md + - name: OpenMP C and C++ grammar + href: ../parallel/openmp/c-openmp-c-and-cpp-grammar.md + - name: The schedule clause + href: ../parallel/openmp/d-using-the-schedule-clause.md + - name: Implementation-defined behaviors in OpenMP C/C++ + href: ../parallel/openmp/e-implementation-defined-behaviors-in-openmp-c-cpp.md + - name: New features and clarifications in version 2.0 + href: ../parallel/openmp/f-new-features-and-clarifications-in-version-2-0.md + expanded: false + - name: OpenMP library reference + items: - name: OpenMP library reference - expanded: false - items: - - name: OpenMP library reference - href: ../parallel/openmp/reference/openmp-library-reference.md - - name: Directives - href: ../parallel/openmp/reference/openmp-directives.md - - name: Clauses - href: ../parallel/openmp/reference/openmp-clauses.md - - name: Functions - href: ../parallel/openmp/reference/openmp-functions.md - - name: Environment variables - href: ../parallel/openmp/reference/openmp-environment-variables.md -- name: Multithreading support for older code (C++) + href: ../parallel/openmp/reference/openmp-library-reference.md + - name: Directives + href: ../parallel/openmp/reference/openmp-directives.md + - name: Clauses + href: ../parallel/openmp/reference/openmp-clauses.md + - name: Functions + href: ../parallel/openmp/reference/openmp-functions.md + - name: Environment variables + href: ../parallel/openmp/reference/openmp-environment-variables.md + expanded: false expanded: false - items: - - name: Multithreading support for older code (C++) - href: ../parallel/multithreading-support-for-older-code-visual-cpp.md +- name: Multithreading support for older code (C++) + items: + - name: Multithreading support for older code (C++) + href: ../parallel/multithreading-support-for-older-code-visual-cpp.md + - name: Multithreading with C and Win32 + items: - name: Multithreading with C and Win32 - expanded: false - items: - - name: Multithreading with C and Win32 - href: ../parallel/multithreading-with-c-and-win32.md - - name: Sample multithread C program - href: ../parallel/sample-multithread-c-program.md - - name: Thread local storage (TLS) - href: ../parallel/thread-local-storage-tls.md + href: ../parallel/multithreading-with-c-and-win32.md + - name: Sample multithread C program + href: ../parallel/sample-multithread-c-program.md + - name: Thread local storage (TLS) + href: ../parallel/thread-local-storage-tls.md + expanded: false + - name: Multithreading with C++ and MFC + items: - name: Multithreading with C++ and MFC - expanded: false - items: - - name: Multithreading with C++ and MFC - href: ../parallel/multithreading-with-cpp-and-mfc.md - - name: "Multithreading: Creating user-interface threads" - href: ../parallel/multithreading-creating-user-interface-threads.md - - name: "Multithreading: Creating worker threads" - href: ../parallel/multithreading-creating-worker-threads.md - - name: "Multithreading: When to use the synchronization classes" - href: ../parallel/multithreading-when-to-use-the-synchronization-classes.md - - name: "Multithreading: How to use the synchronization classes" - href: ../parallel/multithreading-how-to-use-the-synchronization-classes.md - - name: "Multithreading: Terminating threads" - href: ../parallel/multithreading-terminating-threads.md - - name: "Multithreading: Programming tips" - href: ../parallel/multithreading-programming-tips.md - - name: Multithreading and locales - href: ../parallel/multithreading-and-locales.md + href: ../parallel/multithreading-with-cpp-and-mfc.md + - name: 'Multithreading: Creating user-interface threads' + href: ../parallel/multithreading-creating-user-interface-threads.md + - name: 'Multithreading: Creating worker threads' + href: ../parallel/multithreading-creating-worker-threads.md + - name: 'Multithreading: When to use the synchronization classes' + href: ../parallel/multithreading-when-to-use-the-synchronization-classes.md + - name: 'Multithreading: How to use the synchronization classes' + href: ../parallel/multithreading-how-to-use-the-synchronization-classes.md + - name: 'Multithreading: Terminating threads' + href: ../parallel/multithreading-terminating-threads.md + - name: 'Multithreading: Programming tips' + href: ../parallel/multithreading-programming-tips.md + expanded: false + - name: Multithreading and locales + href: ../parallel/multithreading-and-locales.md + expanded: false From c3482843e14760593a7326e94998fa378aa1b0b6 Mon Sep 17 00:00:00 2001 From: Amy Wishnousky Date: Wed, 18 Mar 2026 12:03:07 -0700 Subject: [PATCH 380/619] Add experimental to /fsanitize-address-use-afte-return We get a lot of reports about /fsanitize-address-use-after-return not working correctly, so we want to make sure it's understood that the option is experimental. --- docs/build/reference/fsanitize.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/build/reference/fsanitize.md b/docs/build/reference/fsanitize.md index e1eef40728d..56a37b801fc 100644 --- a/docs/build/reference/fsanitize.md +++ b/docs/build/reference/fsanitize.md @@ -29,7 +29,9 @@ The **`/fsanitize=fuzzer`** compiler option enables experimental support for [Li The **`/fsanitize`** option doesn't allow comma-separated syntax, for example: **`/fsanitize=address,fuzzer`**. These options must be specified individually. -The **`/fsanitize-address-use-after-return`**, **`/fno-sanitize-address-vcasan-lib`**, **`/fsanitize-address-asan-compat-lib`**, and **`/fno-sanitize-address-asan-compat-lib`** compiler options, and the [`/INFERASANLIBS` (Use inferred sanitizer libs)](./inferasanlibs.md) and **`/INFERASANLIBS:NO`** linker options offer support for advanced users. For more information, see [AddressSanitizer build and language reference](../../sanitizers/asan-building.md). +The **`/fsanitize-address-use-after-return`** compiler option enables experimental support for detecting memory safety issues arising from using a variable that has left scope. This requires that the ASan runtime option `ASAN_OPTIONS=detect_stack_use_after_return=1` is also set and incurs an additional performance penalty. For more information, see [Error: stack-use-after-return](../../sanitizers/error-stack-use-after-return.md). + +The **`/fno-sanitize-address-vcasan-lib`**, **`/fsanitize-address-asan-compat-lib`**, and **`/fno-sanitize-address-asan-compat-lib`** compiler options, and the [`/INFERASANLIBS` (Use inferred sanitizer libs)](./inferasanlibs.md) and **`/INFERASANLIBS:NO`** linker options offer support for advanced users. For more information, see [AddressSanitizer build and language reference](../../sanitizers/asan-building.md). ### To set the **`/fsanitize=address`** compiler option in the Visual Studio development environment From b5f528a8f1ec324d680950e5b2dc89bdc0e188d5 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 19 Mar 2026 15:51:57 -0700 Subject: [PATCH 381/619] ignore squad files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 10b0192bf56..de09a544e84 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ _themes.VS.Modern/ #.github/ .openpublishing.buildcore.ps1 .vscode/ +.squad/ # Documentation build /docs/vcppdocs From d9263a8cb179c57e8a380d021d5bd96dc9f5b733 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 19 Mar 2026 16:00:21 -0700 Subject: [PATCH 382/619] ignore squad files (#6661) --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 10b0192bf56..de09a544e84 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ _themes.VS.Modern/ #.github/ .openpublishing.buildcore.ps1 .vscode/ +.squad/ # Documentation build /docs/vcppdocs From a3acf9e658f03ff6824d6c5f5df3b59392a85068 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 20 Mar 2026 14:04:37 -0700 Subject: [PATCH 383/619] fix code example --- docs/c-runtime-library/reference/stat-functions.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/c-runtime-library/reference/stat-functions.md b/docs/c-runtime-library/reference/stat-functions.md index b1a5efc58ff..19b26217c48 100644 --- a/docs/c-runtime-library/reference/stat-functions.md +++ b/docs/c-runtime-library/reference/stat-functions.md @@ -1,7 +1,7 @@ --- title: "_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32, _wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32" description: "Learn more about: _stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32, _wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32" -ms.date: "5/25/2023" +ms.date: 03/20/2026 api_name: ["_wstat64", "_stati64", "_stat32", "_stat32i64", "_stat", "_wstati64", "_wstat32", "_wstat64i32", "_wstat", "_stat64", "_stat64i32", "_wstat32i64", "_o__stat32", "_o__stat32i64", "_o__stat64", "_o__stat64i32", "_o__wstat32", "_o__wstat32i64", "_o__wstat64", "_o__wstat64i32"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"] api_type: ["DLLExport"] @@ -162,13 +162,14 @@ For more compatibility information, see [Compatibility](../compatibility.md). #include #include #include +#include int main( void ) { struct _stat buf; int result; char timebuf[26]; - char* filename = "crt_stat.c"; + const char* filename = "crt_stat.c"; errno_t err; // Get data associated with "crt_stat.c": From e51a904a7991257c57f1f62603177e603932109b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 20 Mar 2026 14:31:30 -0700 Subject: [PATCH 384/619] acronlix updates --- .../cgthreads-code-generation-threads.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/build/reference/cgthreads-code-generation-threads.md b/docs/build/reference/cgthreads-code-generation-threads.md index da08ab45b78..20091542bd9 100644 --- a/docs/build/reference/cgthreads-code-generation-threads.md +++ b/docs/build/reference/cgthreads-code-generation-threads.md @@ -1,7 +1,7 @@ --- description: "Learn more about: `/cgthreads` (Code generation threads)" title: "/cgthreads (Code generation threads)" -ms.date: 03/12/2026 +ms.date: 07/31/2020 f1_keywords: ["/cgthreads"] helpviewer_keywords: ["/cgthreads compiler option (C++)", "-cgthreads compiler option (C++)", "cgthreads compiler option (C++)", "cgthreads"] --- @@ -13,18 +13,23 @@ Sets number of `cl.exe` threads to use for optimization and code generation. > **`/cgthreads1`**\ > **`/cgthreads2`**\ -etc. +> **`/cgthreads3`**\ +> **`/cgthreads4`**\ +> **`/cgthreads5`**\ +> **`/cgthreads6`**\ +> **`/cgthreads7`**\ +> **`/cgthreads8`** ## Arguments **`cgthreadsN`**\ -The maximum number of threads for `cl.exe` to use, where *N* is a number in the range 1 to 512. +The maximum number of threads for `cl.exe` to use, where *N* is a number in the range 1 to 8. ## Remarks -The **`cgthreads`** option specifies the maximum number of threads `cl.exe` uses in parallel for the optimization and code generation phases of compilation. No space can appear between **`cgthreads`** and the *number* argument. By default, `cl.exe` uses four threads, as if **`/cgthreads4`** were specified. If more processor cores are available, a larger *number* value improves build times. This option is especially useful when combined with [`/GL` (Whole Program Optimization)](gl-whole-program-optimization.md). +The **`cgthreads`** option specifies the maximum number of threads `cl.exe` uses in parallel for the optimization and code generation phases of compilation. Notice that there can be no space between **`cgthreads`** and the *number* argument. By default, `cl.exe` uses four threads, as if **`/cgthreads4`** were specified. If more processor cores are available, a larger *number* value can improve build times. This option is especially useful when it's combined with [`/GL` (Whole Program Optimization)](gl-whole-program-optimization.md). -Multiple levels of parallelism can be specified for a build. The msbuild.exe switch **`/maxcpucount`** specifies the number of MSBuild processes that can be run in parallel. The [`/MP` (Build with Multiple Processes)](mp-build-with-multiple-processes.md) compiler flag specifies the number of cl.exe processes that simultaneously compile the source files. The **`cgthreads`** option specifies the number of threads used by each cl.exe process. The processor can only run as many threads at the same time as there are processor cores. It's not useful to specify larger values for all of these options at the same time, and it can be counterproductive. For more information about how to build projects in parallel, see [Building Multiple Projects in Parallel](/visualstudio/msbuild/building-multiple-projects-in-parallel-with-msbuild). +Multiple levels of parallelism can be specified for a build. The msbuild.exe switch **`/maxcpucount`** specifies the number of MSBuild processes that can be run in parallel. The [`/MP` (Build with Multiple Processes)](mp-build-with-multiple-processes.md) compiler flag specifies the number of `cl.exe` processes that simultaneously compile the source files. The **`cgthreads`** option specifies the number of threads used by each `cl.exe` process. The processor can only run as many threads at the same time as there are processor cores. It's not useful to specify larger values for all of these options at the same time, and it can be counterproductive. For more information about how to build projects in parallel, see [Building Multiple Projects in Parallel](/visualstudio/msbuild/building-multiple-projects-in-parallel-with-msbuild). ### To set this compiler option in the Visual Studio development environment From 0c0e3794ade84050642d0fd93a4299eac1626c9c Mon Sep 17 00:00:00 2001 From: Justin Piesco <107575186+JustPies@users.noreply.github.com> Date: Tue, 24 Mar 2026 14:02:20 -0400 Subject: [PATCH 385/619] updated links --- docs/cpp/c-cpp-language-and-standard-libraries.md | 2 +- docs/overview/what-s-new-for-cpp-2019.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/cpp/c-cpp-language-and-standard-libraries.md b/docs/cpp/c-cpp-language-and-standard-libraries.md index 59218ff5e3e..ee3ccbc4ab2 100644 --- a/docs/cpp/c-cpp-language-and-standard-libraries.md +++ b/docs/cpp/c-cpp-language-and-standard-libraries.md @@ -61,7 +61,7 @@ Classes that simplify the writing of programs that use data parallelism or task Reference for the Microsoft implementation of the OpenMP API. [Proxy library](https://github.com/microsoft/proxy)\ -A header-only C++20 library for using polymorphism in C++ without inheritance. For API reference information, see [Proxy 3 Specifications](https://microsoft.github.io/proxy/docs/specifications.html) +A header-only C++20 library for using polymorphism in C++ without inheritance. For API reference information, see [Proxy 4 Specifications](https://github.com/microsoft/proxy/tree/main/docs/spec#readme) [SafeInt library](../safeint/safeint-library.md)\ A portable library that can be used with MSVC, GCC, or Clang to help prevent integer overflows. diff --git a/docs/overview/what-s-new-for-cpp-2019.md b/docs/overview/what-s-new-for-cpp-2019.md index e79f0e6d590..341347e69cd 100644 --- a/docs/overview/what-s-new-for-cpp-2019.md +++ b/docs/overview/what-s-new-for-cpp-2019.md @@ -134,7 +134,7 @@ For a summary of new features and bug fixes in Visual Studio version 16.8, see [ - Support for ARM64 projects using clang-cl. -- [Intel AMX intrinsics](https://software.intel.com/content/www/us/en/develop/documentation/cpp-compiler-developer-guide-and-reference/top/compiler-reference/intrinsics/intrinsics-for-intel-advanced-matrix-extensions-intel-amx-instructions.html) support. +- [Intel AMX intrinsics](https://www.intel.com/content/www/us/en/developer/articles/code-sample/advanced-matrix-extensions-intrinsics-functions.html) support. ## What's new for C++ in Visual Studio version 16.7 From a035e7f6ce5dd74f8152bb55bbf1f668c1f2aab2 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 24 Mar 2026 11:25:26 -0700 Subject: [PATCH 386/619] remove AMP --- docs/parallel/parallel-programming-in-visual-cpp.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/parallel/parallel-programming-in-visual-cpp.md b/docs/parallel/parallel-programming-in-visual-cpp.md index 9a0a35d7c76..15d93e96c22 100644 --- a/docs/parallel/parallel-programming-in-visual-cpp.md +++ b/docs/parallel/parallel-programming-in-visual-cpp.md @@ -1,8 +1,7 @@ --- description: "Learn more about: Parallel Programming in Visual C++" title: "Parallel Programming in Visual C++" -ms.date: "11/04/2016" -ms.assetid: f5c28ab6-a1d9-492f-b207-05e8aee73e96 +ms.date: 03/24/2026 ms.topic: "overview" ms.custom: intro-overview --- @@ -16,7 +15,6 @@ Visual C++ provides the following technologies to help you create multi-threaded |-----------|-----------------| |[Auto-Parallelization and Auto-Vectorization](auto-parallelization-and-auto-vectorization.md)|Compiler optimizations that speed up code.| |[Concurrency Runtime](concrt/concurrency-runtime.md)|Classes that simplify the writing of programs that use data parallelism or task parallelism.| -|[C++ AMP (C++ Accelerated Massive Parallelism)](amp/cpp-amp-cpp-accelerated-massive-parallelism.md)|Classes that enable the use of modern graphics processors for general purpose programming.| -|[Multithreading Support for Older Code (Visual C++)](multithreading-support-for-older-code-visual-cpp.md)|Older technologies that may be useful in older applications. For new apps, use the Concurrency Runtime or C++ AMP.| +|[Multithreading Support for Older Code (Visual C++)](multithreading-support-for-older-code-visual-cpp.md)|Older technologies that may be useful in older applications. For new apps, use the Concurrency Runtime.| |[OpenMP](openmp/openmp-in-visual-cpp.md)|The Microsoft implementation of the OpenMP API.| |[C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md)|This section of the documentation contains information about most of the features of Visual C++.| From 91e4b771e2a321f33448ce02500372f88294e70d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 24 Mar 2026 11:49:40 -0700 Subject: [PATCH 387/619] add moniker --- docs/parallel/parallel-programming-in-visual-cpp.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/parallel/parallel-programming-in-visual-cpp.md b/docs/parallel/parallel-programming-in-visual-cpp.md index 15d93e96c22..249c0b958b7 100644 --- a/docs/parallel/parallel-programming-in-visual-cpp.md +++ b/docs/parallel/parallel-programming-in-visual-cpp.md @@ -18,3 +18,6 @@ Visual C++ provides the following technologies to help you create multi-threaded |[Multithreading Support for Older Code (Visual C++)](multithreading-support-for-older-code-visual-cpp.md)|Older technologies that may be useful in older applications. For new apps, use the Concurrency Runtime.| |[OpenMP](openmp/openmp-in-visual-cpp.md)|The Microsoft implementation of the OpenMP API.| |[C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md)|This section of the documentation contains information about most of the features of Visual C++.| +::: moniker range="<=msvc-160" +|[C++ AMP (C++ Accelerated Massive Parallelism)](amp/cpp-amp-cpp-accelerated-massive-parallelism.md)|Classes that enable the use of modern graphics processors for general purpose programming.| +:::moniker-end From d8cb371587450dccc28c0d87338cf7653936dec6 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 24 Mar 2026 14:08:15 -0700 Subject: [PATCH 388/619] fix markdown --- .../parallel/parallel-programming-in-visual-cpp.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/parallel/parallel-programming-in-visual-cpp.md b/docs/parallel/parallel-programming-in-visual-cpp.md index 249c0b958b7..2aec9538eb0 100644 --- a/docs/parallel/parallel-programming-in-visual-cpp.md +++ b/docs/parallel/parallel-programming-in-visual-cpp.md @@ -11,13 +11,23 @@ Visual C++ provides the following technologies to help you create multi-threaded ## Related Articles +::: moniker range="<=msvc-160" |Title|Description| |-----------|-----------------| |[Auto-Parallelization and Auto-Vectorization](auto-parallelization-and-auto-vectorization.md)|Compiler optimizations that speed up code.| |[Concurrency Runtime](concrt/concurrency-runtime.md)|Classes that simplify the writing of programs that use data parallelism or task parallelism.| -|[Multithreading Support for Older Code (Visual C++)](multithreading-support-for-older-code-visual-cpp.md)|Older technologies that may be useful in older applications. For new apps, use the Concurrency Runtime.| +|[Multithreading Support for Older Code (Visual C++)](multithreading-support-for-older-code-visual-cpp.md)|Older technologies that may be useful in older applications. For new apps, use the Concurrency Runtime or C++ AMP.| |[OpenMP](openmp/openmp-in-visual-cpp.md)|The Microsoft implementation of the OpenMP API.| |[C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md)|This section of the documentation contains information about most of the features of Visual C++.| -::: moniker range="<=msvc-160" |[C++ AMP (C++ Accelerated Massive Parallelism)](amp/cpp-amp-cpp-accelerated-massive-parallelism.md)|Classes that enable the use of modern graphics processors for general purpose programming.| :::moniker-end +::: moniker range=">msvc-160" +|Title|Description| +|-----------|-----------------| +|[Auto-Parallelization and Auto-Vectorization](auto-parallelization-and-auto-vectorization.md)|Compiler optimizations that speed up code.| +|[Concurrency Runtime](concrt/concurrency-runtime.md)|Classes that simplify the writing of programs that use data parallelism or task parallelism.| +|[Multithreading Support for Older Code (Visual C++)](multithreading-support-for-older-code-visual-cpp.md)|Older technologies that may be useful in older applications. For new apps, use the Concurrency Runtime.| +|[OpenMP](openmp/openmp-in-visual-cpp.md)|The Microsoft implementation of the OpenMP API.| +|[C++ in Visual Studio](../overview/visual-cpp-in-visual-studio.md)|This section of the documentation contains information about most of the features of Visual C++.| +:::moniker-end + From 5b8875b2993bc9a51ec530fabcc1e180583b6585 Mon Sep 17 00:00:00 2001 From: "Docs.Archive pipeline" Date: Tue, 24 Mar 2026 21:15:09 +0000 Subject: [PATCH 389/619] [DocsArchive-1.0.26057.1](2026-03-24-21-14-41)Auto archive content --- .openpublishing.redirection.json | 560 +++++++++++++++++++++++++++++++ docs/docfx.json | 3 +- 2 files changed, 562 insertions(+), 1 deletion(-) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index f4bb352073f..9c53df0bcc0 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -1,5 +1,565 @@ { "redirections": [ + { + "source_path": "docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/cpp-amp-overview.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-overview", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/graphics-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/graphics-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/using-accelerator-and-accelerator-view-objects.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-accelerator-and-accelerator-view-objects", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/using-cpp-amp-in-windows-store-apps.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-cpp-amp-in-windows-store-apps", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/using-lambdas-function-objects-and-restricted-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-lambdas-function-objects-and-restricted-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/using-tiles.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-tiles", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/walkthrough-debugging-a-cpp-amp-application.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/walkthrough-debugging-a-cpp-amp-application", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/walkthrough-matrix-multiplication.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/walkthrough-matrix-multiplication", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-view-removed-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-view-removed-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/adopt-d3d-access-lock-t-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/adopt-d3d-access-lock-t-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/array-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/array-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/array-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/array-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/completion-future-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/completion-future-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-direct3d-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-direct3d-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-fast-math-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-fast-math-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-fast-math-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-direct3d-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace-enums.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace-enums", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-constants-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-constants-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-enums-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-enums-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-functions-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-functions-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-operators-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-operators-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-precise-math-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-precise-math-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-precise-math-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/extent-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/extent-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/index-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/index-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/invalid-compute-domain-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/invalid-compute-domain-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/out-of-memory-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/out-of-memory-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/reference-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/reference-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/runtime-exception-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/runtime-exception-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/sampler-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/sampler-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/scoped-d3d-access-lock-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/scoped-d3d-access-lock-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/short-vector-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/short-vector-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/short-vector-traits-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/short-vector-traits-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/texture-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/texture-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/texture-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/texture-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tile-barrier-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tile-barrier-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tiled-extent-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tiled-extent-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tiled-index-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tiled-index-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uninitialized-object-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uninitialized-object-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unsupported-feature-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unsupported-feature-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, + { + "source_path": "docs/parallel/amp/reference/writeonly-texture-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/writeonly-texture-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-180" + ] + }, { "source_path": "docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md", "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism", diff --git a/docs/docfx.json b/docs/docfx.json index ad6d38ef295..04421fa8583 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -345,7 +345,8 @@ }, "exclude_monikers": { "parallel/amp/**/*.{md,yml,yaml}": [ - "msvc-170" + "msvc-170", + "msvc-180" ] } }, From 3a4786b90b3ef7ddd883cdf9844adb87cd0b0ab8 Mon Sep 17 00:00:00 2001 From: David Justo Date: Wed, 25 Mar 2026 13:52:18 -0700 Subject: [PATCH 390/619] document debuginformation flags --- docs/build/reference/c-cpp-prop-page.md | 8 +++---- .../z7-zi-zi-debug-information-format.md | 21 +++++++++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/docs/build/reference/c-cpp-prop-page.md b/docs/build/reference/c-cpp-prop-page.md index 80e4b1f366b..2a7bd6765bf 100644 --- a/docs/build/reference/c-cpp-prop-page.md +++ b/docs/build/reference/c-cpp-prop-page.md @@ -47,10 +47,10 @@ Specifies the type of debugging information generated by the compiler. This pro #### Choices -- **None** - Produces no debugging information, so compilation may be faster. -- **C7 compatible** - Select the type of debugging information created for your program and whether this information is kept in object (.obj) files or in a program database (PDB). -- **Program Database** - Produces a program database (PDB) that contains type information and symbolic debugging information for use with the debugger. The symbolic debugging information includes the names and types of variables and functions, and line numbers. -- **Program Database for Edit And Continue** - Produces a program database, as described previously, in a format that supports the [Edit and Continue](/visualstudio/debugger/edit-and-continue) feature. +- **None** (`None`) - Produces no debugging information, so compilation may be faster. +- **C7 compatible** (`OldStyle`) - Select the type of debugging information created for your program and whether this information is kept in object (.obj) files or in a program database (PDB). +- **Program Database** (`ProgramDatabase`) - Produces a program database (PDB) that contains type information and symbolic debugging information for use with the debugger. The symbolic debugging information includes the names and types of variables and functions, and line numbers. +- **Program Database for Edit And Continue** (`EditAndContinue`) - Produces a program database, as described previously, in a format that supports the [Edit and Continue](/visualstudio/debugger/edit-and-continue) feature. ### Support Just My Code Debugging diff --git a/docs/build/reference/z7-zi-zi-debug-information-format.md b/docs/build/reference/z7-zi-zi-debug-information-format.md index 6cc70e4d4c8..df251b7c4aa 100644 --- a/docs/build/reference/z7-zi-zi-debug-information-format.md +++ b/docs/build/reference/z7-zi-zi-debug-information-format.md @@ -62,6 +62,27 @@ The **`/ZI`** option forces both the [`/Gy` (Enable Function-Level Linking)](gy- 1. Modify the **Debug Information Format** property. Choose **OK** to save your changes. +### To set this compiler option in a project file + +To set the debug information format in a `.vcxproj` project file, use the `` property within a `` item definition. The following table shows the MSBuild XML values and their corresponding compiler options: + +| MSBuild XML value | Compiler option | Description | +|---|---|---| +| `None` | *(none)* | No debug information | +| `OldStyle` | **`/Z7`** | C7-compatible debug information | +| `ProgramDatabase` | **`/Zi`** | Program database (PDB) | +| `EditAndContinue` | **`/ZI`** | PDB with Edit and Continue support | + +For example, to set the debug information format to program database in a release configuration: + +```xml + + + ProgramDatabase + + +``` + ### To set this compiler option programmatically - See . From c7da63cce3e0b7baad0a03c3e0d210b4ee75518a Mon Sep 17 00:00:00 2001 From: ChanPark Date: Wed, 25 Mar 2026 16:56:08 -0700 Subject: [PATCH 391/619] Revert all changes --- docs/embedded/media/serial-monitor-vscode.png | Bin 45810 -> 30294 bytes docs/embedded/media/serial-monitor.png | Bin 27462 -> 28291 bytes docs/embedded/serial-monitor.md | 50 +++++++++++------- 3 files changed, 31 insertions(+), 19 deletions(-) diff --git a/docs/embedded/media/serial-monitor-vscode.png b/docs/embedded/media/serial-monitor-vscode.png index 08c640ae17ed27357af7fc4b09b15d96fb3db95b..29a6c931e11e5f04eda11626da1373f233ce1fe1 100644 GIT binary patch literal 30294 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 literal 45810 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 r0TfNXdsd)RoOjHl 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 RlHUS8FI2RZYZPC-|9?jNNlO3# diff --git a/docs/embedded/media/serial-monitor.png b/docs/embedded/media/serial-monitor.png index 633e19edd21760ad590724eb663020b659ae916f..e247eef5e74d46d6d2facf694a69ae6b056546d6 100644 GIT binary patch literal 28291 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%0Df|>ST^x_-EN$+!ktA4RPfj|MbDilidKu`Rom{X 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 diff --git a/docs/embedded/serial-monitor.md b/docs/embedded/serial-monitor.md index 8f396f4e72c..3081df27700 100644 --- a/docs/embedded/serial-monitor.md +++ b/docs/embedded/serial-monitor.md @@ -8,21 +8,25 @@ monikerRange: '>=msvc-170' --- # Serial Monitor +> [!NOTE] +> This article references a non-Microsoft extension and is not actively maintained. The information might not reflect the current state of the Serial Monitor 2 extension. + ## Overview The Serial Monitor allows users to configure, monitor, and communicate with serial ports. # [Visual Studio](#tab/visual-studio) -To install Serial Monitor in Visual Studio, go to **Extensions** > **Manage Extensions**. Search for **Serial Monitor 2** in the extensions marketplace. Select **Install** and then restart Visual Studio to complete the installation. - -To activate the Serial Monitor window, select **Tools** from the menu bar and then choose **Serial Monitor 2**. - -:::image type="content" source="media/serial-monitor.png" alt-text="Screenshot of the Visual Studio Serial Monitor window."::: +:::image type="complex" source="./media/serial-monitor.png" alt-text="Screenshot of the Visual Studio Serial Monitor window."::: +The window is split into two sections. The top section shows the monitoring mode (serial), Port (virtual COM port COM3), baud rate (115200), line ending (None), and a Stop monitoring button. The bottom section shows the messages, consisting of four lines of the text Hello, World! +:::image-end::: ## Capabilities -- **Send data to a serial port**: Enter text into the **Command** text field at the bottom of the view. Select **Send** to send the data. +- **Monitor a serial port**: Choose the **Start Monitoring** or **Stop Monitoring** button to control whether to monitor data coming from the port. +- **Send data to a serial port**: Enter text into the text field at the bottom of the view. Use the **Enter** key or choose the **Send Message** arrow button to send the data. +- **Clear the Serial Monitor output**: Choose the **Clear Output** button to clear the incoming data text field. +- **Send preset control signals**: Use the split-button next to the input field to send preset control signals (Ctrl+C, Ctrl+D, Ctrl+X, and Ctrl+Z). - **Configure Serial Monitor and port connection settings**: See the following table to learn about the settings that the Serial Monitor provides. ## Configurable settings @@ -30,20 +34,26 @@ To activate the Serial Monitor window, select **Tools** from the menu bar and th | Settings | Description | Usage | Available options | |--|--|--|--| | **Port** | Ports that are actively connected to a device | Use the **Port** dropdown | Serial port compatible devices connected to the machine | -| **Baud rate** | Frequency at which the monitor attempts to communicate with the connected device | Use the **Baud Rate** dropdown | 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230000, 250000 | -| **Encoding** | Can select type of encoding for messages sent to serial port | Use the **Encoding** dropdown in **Serial** mode | Text (utf8), Hex, Binary | +| **Baud Rate** | Frequency at which the monitor attempts to communicate with the connected device | Use the **Baud Rate** dropdown | 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230000, 250000 | +| **Line Ending** | The line ending to use in messages sent to the connected device | Use the **Line Ending** dropdown | None, LF, CR, CRLF | +| **Timestamp** | Adds timestamps to the output of data received from the connected port | Use the **timestamp** toggle button | On/Off | +| **Autoscroll** | Whether to auto-scroll new content that comes from the connected port | Use the **autoscroll** toggle button | On/Off | +| **Automatic Reconnection** | Allows for automatic reconnection and monitoring of disconnected selected ports | Use the **automatic reconnection** toggle button in **Serial** mode | On/Off | +| **Message Encoding** | Can select type of encoding for messages sent to serial port | Use the **message encoding** dropdown in **Serial** mode | Text (utf8), Hex, Binary | | **Data bits** | Can select how many data bits are used for the serial port connection | Use the **Data bits** dropdown in the **additional settings** | 5, 6, 7, 8 | | **Stop bits** | Can select how many stop bits are used for the serial port connection | Use the **Stop bits** dropdown in the **additional settings** | 1, 1.5, 2 | | **Parity** | Can select what parity is used for the serial port connection | Use the **Parity** dropdown in the **additional settings** | None, Odd, Even, Mark, Space | -| **File Logging** | Allows the ability to log output to a file | Use the **file logging** toggle button, as well as the **Record file path** button to choose the desired directory | On/Off | +| **File Logging** | Allows the ability to log output to a file | Use the **file logging** toggle button, as well as the **Choose Log File Directory** button to choose the desired directory in the **additional settings** | On/Off | # [Visual Studio Code](#tab/visual-studio-code) -To install Serial Monitor in Visual Studio Code, open the extensions marketplace and then search for **Serial Monitor**. Select **Install**. - -To activate the Serial Monitor window, select **Terminal** from the menu bar and choose **New Terminal**. Then, select **Serial Monitor** from the tabs. +:::image type="complex" source="./media/serial-monitor-vscode.png" alt-text="Screenshot of the VS Code Serial Monitor window."::: +The window is split into two sections. The top section shows the monitoring mode (serial), Port (virtual COM port COM3), baud rate (115200), line ending (None), and a Stop monitoring button. The bottom section where messages are displayed is empty. +:::image-end::: -:::image type="content" source="media/serial-monitor-vscode.png" alt-text="Screenshot of the VS Code Serial Monitor window."::: +:::image type="complex" source="./media/serial-monitor-vscode-tcp.png" alt-text="Screenshot of the VS Code TCP Serial Monitor window."::: +The window is split into two sections. The top section shows the monitoring mode (TCP), Host (::1), Port (1234), and a Start monitoring button. The bottom section shows the messages, starting with "Opening the TCP connection on ::1:1234. Then Connected to ::1:1234. Then five lines of the text Hello, World!. Then Closed the TCP connection ::1:1234. +:::image-end::: ## Capabilities @@ -54,13 +64,15 @@ To activate the Serial Monitor window, select **Terminal** from the menu bar and - **Clear the Serial Monitor output**: Choose the **Clear Output** button to clear the incoming data text field. - **Send preset control signals**: Use the split-button next to the input field to send preset control signals (Ctrl+C, Ctrl+D, Ctrl+X, and Ctrl+Z). - **Configure Serial Monitor and connection settings**: See the following table to learn about the settings that the Serial Monitor provides. +- **Clear the Serial Monitor output**: Choose the **Clear Output** button to clear the incoming data text field. +- **Send preset control signals**: Use the split-button next to the input field to send preset control signals (Ctrl+C, Ctrl+D, Ctrl+X, and Ctrl+Z). ## Configurable settings | Settings | Description | Usage | Available options | |--|--|--|--| | **Port** | Ports that are actively connected to a device | Use the **Port** dropdown in **Serial** mode | Serial port compatible devices connected to the machine | -| **Baud rate** | Frequency at which the monitor attempts to communicate with the connected device | Use the **Baud rate** dropdown in **Serial** mode | 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230000, 250000 | +| **Baud Rate** | Frequency at which the monitor attempts to communicate with the connected device | Use the **Baud Rate** dropdown in **Serial** mode | 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230000, 250000 | | **Host** | Name of your host address | Use the **Host** text box to enter your host name in **TCP** mode | Any string that matches a valid host | | **Port** | The port number of your address | Use the **Port** text box in **TCP** mode | Any valid TCP port | | **Line Ending** | The line ending to use in messages sent to the connected device | Use the **Line Ending** dropdown in **Serial** mode | None, LF, CR, CRLF | @@ -68,13 +80,13 @@ To activate the Serial Monitor window, select **Terminal** from the menu bar and | **RTS** | Allows the RTS COM output line to be manually set | Use the **RTS** checkbox | True/False | | **Timestamp** | Adds timestamps to the output of data received from the connected port | Use the **timestamp** toggle button | On/Off | | **Autoscroll** | Whether to auto-scroll new content that comes from the connected port | Use the **autoscroll** toggle button | On/Off | -| **Automatic reconnection** | Allows for automatic reconnection and monitoring of disconnected selected ports | Use the **automatic reconnection** toggle button | On/Off| -| **Message echoing** | Allows the ability to echo/not echo messages you send | Use the **message echoing** toggle button | On/Off | -| **Message encoding** | Can select type of encoding for messages sent to serial port | Use the **message encoding** dropdown | Text (utf8), Hex, Binary | +| **Automatic Reconnection** | Allows for automatic reconnection and monitoring of disconnected selected ports | Use the **automatic reconnection** toggle button | On/Off| +| **Message Echoing** | Allows the ability to echo/not echo messages you send | Use the **message echoing** toggle button | On/Off | +| **Message Encoding** | Can select type of encoding for messages sent to serial port | Use the **message encoding** dropdown | Text (utf8), Hex, Binary | | **Data bits** | Can select how many data bits are used for the serial port connection | Use the **Data bits** dropdown in the **additional settings** | 5, 6, 7, 8 | | **Stop bits** | Can select how many stop bits are used for the serial port connection | Use the **Stop bits** dropdown in the **additional settings** | 1, 1.5, 2 | | **Parity** | Can select what parity is used for the serial port connection | Use the **Parity** dropdown in the **additional settings** | None, Odd, Even, Mark, Space | -| **File logging** | Allows the ability to log output to a file | Use the **file logging** toggle button, as well as the **Choose Log File Directory** button to choose the desired directory in the **additional settings** | On/Off | +| **File Logging** | Allows the ability to log output to a file | Use the **file logging** toggle button, as well as the **Choose Log File Directory** button to choose the desired directory in the **additional settings** | On/Off | | **Serial Wire Output (SWO)** | Can enable Serial Wire Output (SWO) decoding | Use the **Serial Wire Output** toggle in the **additional settings** in **TCP** mode | On/Off | ---- +--- \ No newline at end of file From b3adf48b970f8483e545329610b307c590cf65d2 Mon Sep 17 00:00:00 2001 From: David Justo Date: Wed, 25 Mar 2026 18:54:46 -0700 Subject: [PATCH 392/619] respond to feedback: clarify Z7 comments --- docs/build/reference/c-cpp-prop-page.md | 2 +- docs/build/reference/z7-zi-zi-debug-information-format.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/c-cpp-prop-page.md b/docs/build/reference/c-cpp-prop-page.md index 2a7bd6765bf..fa9184b6357 100644 --- a/docs/build/reference/c-cpp-prop-page.md +++ b/docs/build/reference/c-cpp-prop-page.md @@ -48,7 +48,7 @@ Specifies the type of debugging information generated by the compiler. This pro #### Choices - **None** (`None`) - Produces no debugging information, so compilation may be faster. -- **C7 compatible** (`OldStyle`) - Select the type of debugging information created for your program and whether this information is kept in object (.obj) files or in a program database (PDB). +- **C7 compatible** (`OldStyle`) - Produces object files that contain full symbolic debugging information. No PDB file is produced. - **Program Database** (`ProgramDatabase`) - Produces a program database (PDB) that contains type information and symbolic debugging information for use with the debugger. The symbolic debugging information includes the names and types of variables and functions, and line numbers. - **Program Database for Edit And Continue** (`EditAndContinue`) - Produces a program database, as described previously, in a format that supports the [Edit and Continue](/visualstudio/debugger/edit-and-continue) feature. diff --git a/docs/build/reference/z7-zi-zi-debug-information-format.md b/docs/build/reference/z7-zi-zi-debug-information-format.md index df251b7c4aa..3faba3c0f19 100644 --- a/docs/build/reference/z7-zi-zi-debug-information-format.md +++ b/docs/build/reference/z7-zi-zi-debug-information-format.md @@ -69,7 +69,7 @@ To set the debug information format in a `.vcxproj` project file, use the ` Date: Thu, 26 Mar 2026 09:02:09 -0700 Subject: [PATCH 393/619] update date metadata --- docs/build/reference/c-cpp-prop-page.md | 2 +- docs/build/reference/z7-zi-zi-debug-information-format.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/c-cpp-prop-page.md b/docs/build/reference/c-cpp-prop-page.md index fa9184b6357..dce5341a0ff 100644 --- a/docs/build/reference/c-cpp-prop-page.md +++ b/docs/build/reference/c-cpp-prop-page.md @@ -1,7 +1,7 @@ --- title: "C/C++ Project Properties (Visual Studio)" description: "Reference guide to the Visual Studio Microsoft C/C++ project Property Pages properties." -ms.date: 6/9/2023 +ms.date: 3/26/2026 ms.topic: "article" f1_keywords: ["VC.Project.VCCLCompilerTool.AdditionalModuleDirectories", "VC.Project.VCCLCompilerTool.ScanSourceForModuleDependencies"] --- diff --git a/docs/build/reference/z7-zi-zi-debug-information-format.md b/docs/build/reference/z7-zi-zi-debug-information-format.md index 3faba3c0f19..4cf63809f02 100644 --- a/docs/build/reference/z7-zi-zi-debug-information-format.md +++ b/docs/build/reference/z7-zi-zi-debug-information-format.md @@ -1,7 +1,7 @@ --- description: "Learn more about: /Z7, /Zi, /ZI (Debug Information Format)" title: "/Z7, /Zi, /ZI (Debug Information Format)" -ms.date: 12/09/2021 +ms.date: 3/26/2026 f1_keywords: ["VC.Project.VCCLCompilerTool.DebugInformationFormat", "/ZI", "/Zi", "/Z7", "VC.Project.VCCLWCECompilerTool.DebugInformationFormat"] helpviewer_keywords: ["C7 compatible compiler option [C++]", "Debug Information Format compiler option", "ZI compiler option", "-Zi compiler option [C++]", "/ZI compiler option [C++]", "Z7 compiler option [C++]", "debugging [C++], debug information files", "Zi compiler option [C++]", "/Zi compiler option [C++]", "program database compiler option [C++]", "full symbolic debugging information", "/Z7 compiler option [C++]", "line numbers only compiler option [C++]", "cl.exe compiler, debugging options", "-Z7 compiler option [C++]"] --- From 09cd5b750d5cc04d59e6c607dbea85996b29e4bd Mon Sep 17 00:00:00 2001 From: Dan Moseley Date: Thu, 26 Mar 2026 11:51:36 -0600 Subject: [PATCH 394/619] /CETCOMPAT: correct supported architectures to x64 only (#5911) --- docs/build/reference/cetcompat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/cetcompat.md b/docs/build/reference/cetcompat.md index d5c8870b4c0..984e60d83ad 100644 --- a/docs/build/reference/cetcompat.md +++ b/docs/build/reference/cetcompat.md @@ -23,7 +23,7 @@ Specifies that the executable shouldn't be marked compatible with CET Shadow Sta Control-flow Enforcement Technology (CET) Shadow Stack is a computer processor feature. It provides capabilities to defend against return-oriented programming (ROP) based malware attacks. For more information, see [A Technical Look at Intel's Control-flow Enforcement Technology](https://software.intel.com/content/www/us/en/develop/articles/technical-look-control-flow-enforcement-technology.html). -The **`/CETCOMPAT`** linker option tells the linker to mark the binary as CET Shadow Stack-compatible. **`/CETCOMPAT:NO`** marks the binary as not compatible with CET Shadow Stack. If both options are specified on the command line, the last one specified is used. This switch is currently only applicable to x86 and x64 architectures. +The **`/CETCOMPAT`** linker option tells the linker to mark the binary as CET Shadow Stack-compatible. **`/CETCOMPAT:NO`** marks the binary as not compatible with CET Shadow Stack. If both options are specified on the command line, the last one specified is used. This switch is currently only applicable to the x64 architecture. The **`/CETCOMPAT`** option is available beginning in Visual Studio 2019. From b1810fd9b6f82771a84276fb4344137fc722e4a0 Mon Sep 17 00:00:00 2001 From: ChanPark Date: Thu, 26 Mar 2026 10:52:39 -0700 Subject: [PATCH 395/619] Add instructions back --- docs/embedded/serial-monitor.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/embedded/serial-monitor.md b/docs/embedded/serial-monitor.md index 3081df27700..48d55fb9c04 100644 --- a/docs/embedded/serial-monitor.md +++ b/docs/embedded/serial-monitor.md @@ -9,7 +9,7 @@ monikerRange: '>=msvc-170' # Serial Monitor > [!NOTE] -> This article references a non-Microsoft extension and is not actively maintained. The information might not reflect the current state of the Serial Monitor 2 extension. +> This article is no longer maintained. It references a non-Microsoft extension and might not reflect the current state of the Serial Monitor 2 extension. ## Overview @@ -17,6 +17,8 @@ The Serial Monitor allows users to configure, monitor, and communicate with seri # [Visual Studio](#tab/visual-studio) +To install Serial Monitor in Visual Studio, go to **Extensions** > **Manage Extensions**. Search for **Serial Monitor 2** in the extensions marketplace. Select **Install** and then restart Visual Studio to complete the installation. + :::image type="complex" source="./media/serial-monitor.png" alt-text="Screenshot of the Visual Studio Serial Monitor window."::: The window is split into two sections. The top section shows the monitoring mode (serial), Port (virtual COM port COM3), baud rate (115200), line ending (None), and a Stop monitoring button. The bottom section shows the messages, consisting of four lines of the text Hello, World! :::image-end::: @@ -47,6 +49,8 @@ The window is split into two sections. The top section shows the monitoring mode # [Visual Studio Code](#tab/visual-studio-code) +To install Serial Monitor in Visual Studio Code, open the extensions marketplace and then search for **Serial Monitor**. Select **Install**. + :::image type="complex" source="./media/serial-monitor-vscode.png" alt-text="Screenshot of the VS Code Serial Monitor window."::: The window is split into two sections. The top section shows the monitoring mode (serial), Port (virtual COM port COM3), baud rate (115200), line ending (None), and a Stop monitoring button. The bottom section where messages are displayed is empty. :::image-end::: @@ -89,4 +93,4 @@ The window is split into two sections. The top section shows the monitoring mode | **File Logging** | Allows the ability to log output to a file | Use the **file logging** toggle button, as well as the **Choose Log File Directory** button to choose the desired directory in the **additional settings** | On/Off | | **Serial Wire Output (SWO)** | Can enable Serial Wire Output (SWO) decoding | Use the **Serial Wire Output** toggle in the **additional settings** in **TCP** mode | On/Off | ---- \ No newline at end of file +--- From 9e950e694f7482dfd646f87d3974c58c7982bd3f Mon Sep 17 00:00:00 2001 From: "Docs.Archive pipeline" Date: Mon, 30 Mar 2026 21:56:09 +0000 Subject: [PATCH 396/619] [DocsArchive-1.0.26057.1](2026-03-30-21-55-42)Auto archive content --- .openpublishing.redirection.json | 560 +++++++++++++++++++++++++++++++ docs/docfx.json | 3 +- 2 files changed, 562 insertions(+), 1 deletion(-) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 9c53df0bcc0..951e6b990ad 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -1,5 +1,565 @@ { "redirections": [ + { + "source_path": "docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/cpp-amp-overview.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-overview", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/graphics-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/graphics-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/using-accelerator-and-accelerator-view-objects.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-accelerator-and-accelerator-view-objects", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/using-cpp-amp-in-windows-store-apps.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-cpp-amp-in-windows-store-apps", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/using-lambdas-function-objects-and-restricted-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-lambdas-function-objects-and-restricted-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/using-tiles.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-tiles", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/walkthrough-debugging-a-cpp-amp-application.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/walkthrough-debugging-a-cpp-amp-application", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/walkthrough-matrix-multiplication.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/walkthrough-matrix-multiplication", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-view-removed-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-view-removed-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/adopt-d3d-access-lock-t-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/adopt-d3d-access-lock-t-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/array-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/array-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/array-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/array-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/completion-future-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/completion-future-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-direct3d-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-direct3d-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-fast-math-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-fast-math-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-fast-math-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-direct3d-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace-enums.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace-enums", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-constants-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-constants-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-enums-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-enums-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-functions-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-functions-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-operators-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-operators-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-precise-math-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-precise-math-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-precise-math-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/extent-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/extent-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/index-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/index-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/invalid-compute-domain-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/invalid-compute-domain-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/out-of-memory-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/out-of-memory-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/reference-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/reference-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/runtime-exception-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/runtime-exception-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/sampler-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/sampler-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/scoped-d3d-access-lock-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/scoped-d3d-access-lock-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/short-vector-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/short-vector-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/short-vector-traits-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/short-vector-traits-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/texture-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/texture-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/texture-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/texture-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tile-barrier-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tile-barrier-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tiled-extent-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tiled-extent-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tiled-index-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tiled-index-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uninitialized-object-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uninitialized-object-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unsupported-feature-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unsupported-feature-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, + { + "source_path": "docs/parallel/amp/reference/writeonly-texture-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/writeonly-texture-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-140" + ] + }, { "source_path": "docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md", "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism", diff --git a/docs/docfx.json b/docs/docfx.json index 04421fa8583..78303d85aca 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -346,7 +346,8 @@ "exclude_monikers": { "parallel/amp/**/*.{md,yml,yaml}": [ "msvc-170", - "msvc-180" + "msvc-180", + "msvc-140" ] } }, From 829454e8406a11138ae7ef87e7179f054b600c52 Mon Sep 17 00:00:00 2001 From: "Docs.Archive pipeline" Date: Mon, 30 Mar 2026 22:53:26 +0000 Subject: [PATCH 397/619] [DocsArchive-1.0.26057.1](2026-03-30-22-52-59)Auto archive content --- .openpublishing.redirection.json | 560 +++++++++++++++++++++++++++++++ docs/docfx.json | 3 +- 2 files changed, 562 insertions(+), 1 deletion(-) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 951e6b990ad..2c57c05f29e 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -1,5 +1,565 @@ { "redirections": [ + { + "source_path": "docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/cpp-amp-overview.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-overview", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/graphics-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/graphics-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/using-accelerator-and-accelerator-view-objects.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-accelerator-and-accelerator-view-objects", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/using-cpp-amp-in-windows-store-apps.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-cpp-amp-in-windows-store-apps", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/using-lambdas-function-objects-and-restricted-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-lambdas-function-objects-and-restricted-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/using-tiles.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-tiles", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/walkthrough-debugging-a-cpp-amp-application.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/walkthrough-debugging-a-cpp-amp-application", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/walkthrough-matrix-multiplication.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/walkthrough-matrix-multiplication", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-view-removed-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-view-removed-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/adopt-d3d-access-lock-t-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/adopt-d3d-access-lock-t-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/array-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/array-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/array-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/array-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/completion-future-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/completion-future-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-direct3d-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-direct3d-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-fast-math-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-fast-math-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-fast-math-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-direct3d-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace-enums.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace-enums", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-constants-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-constants-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-enums-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-enums-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-functions-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-functions-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-operators-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-operators-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-precise-math-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-precise-math-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-precise-math-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/extent-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/extent-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/index-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/index-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/invalid-compute-domain-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/invalid-compute-domain-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/out-of-memory-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/out-of-memory-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/reference-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/reference-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/runtime-exception-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/runtime-exception-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/sampler-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/sampler-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/scoped-d3d-access-lock-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/scoped-d3d-access-lock-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/short-vector-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/short-vector-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/short-vector-traits-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/short-vector-traits-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/texture-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/texture-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/texture-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/texture-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tile-barrier-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tile-barrier-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tiled-extent-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tiled-extent-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tiled-index-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tiled-index-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uninitialized-object-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uninitialized-object-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unsupported-feature-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unsupported-feature-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, + { + "source_path": "docs/parallel/amp/reference/writeonly-texture-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/writeonly-texture-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-150" + ] + }, { "source_path": "docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md", "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism", diff --git a/docs/docfx.json b/docs/docfx.json index 78303d85aca..89cb19b620f 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -347,7 +347,8 @@ "parallel/amp/**/*.{md,yml,yaml}": [ "msvc-170", "msvc-180", - "msvc-140" + "msvc-140", + "msvc-150" ] } }, From ea9012d1493507e0a0b3741bd5a3d5039103e440 Mon Sep 17 00:00:00 2001 From: "Docs.Archive pipeline" Date: Tue, 31 Mar 2026 01:40:49 +0000 Subject: [PATCH 398/619] [DocsArchive-1.0.26057.1](2026-03-31-01-40-23)Auto archive content --- .openpublishing.redirection.json | 560 +++++++++++++++++++++++++++++++ docs/docfx.json | 3 +- 2 files changed, 562 insertions(+), 1 deletion(-) diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 2c57c05f29e..717a62c31c1 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -1,5 +1,565 @@ { "redirections": [ + { + "source_path": "docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/cpp-amp-overview.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-overview", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/graphics-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/graphics-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/using-accelerator-and-accelerator-view-objects.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-accelerator-and-accelerator-view-objects", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/using-cpp-amp-in-windows-store-apps.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-cpp-amp-in-windows-store-apps", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/using-lambdas-function-objects-and-restricted-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-lambdas-function-objects-and-restricted-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/using-tiles.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/using-tiles", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/walkthrough-debugging-a-cpp-amp-application.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/walkthrough-debugging-a-cpp-amp-application", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/walkthrough-matrix-multiplication.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/walkthrough-matrix-multiplication", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/accelerator-view-removed-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/accelerator-view-removed-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/adopt-d3d-access-lock-t-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/adopt-d3d-access-lock-t-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/array-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/array-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/array-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/array-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/completion-future-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/completion-future-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-direct3d-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-direct3d-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-fast-math-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-fast-math-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-fast-math-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-direct3d-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace-enums.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace-enums", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-graphics-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-graphics-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-constants-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-constants-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-enums-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-enums-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-functions-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-functions-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-namespace-operators-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-namespace-operators-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-precise-math-namespace-functions", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/concurrency-precise-math-namespace.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/concurrency-precise-math-namespace", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/double-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/double-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/extent-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/extent-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/float-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/float-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/index-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/index-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/int-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/int-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/invalid-compute-domain-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/invalid-compute-domain-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/norm-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/norm-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/out-of-memory-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/out-of-memory-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/reference-cpp-amp.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/reference-cpp-amp", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/runtime-exception-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/runtime-exception-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/sampler-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/sampler-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/scoped-d3d-access-lock-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/scoped-d3d-access-lock-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/short-vector-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/short-vector-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/short-vector-traits-structure.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/short-vector-traits-structure", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/texture-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/texture-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/texture-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/texture-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tile-barrier-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tile-barrier-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tiled-extent-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tiled-extent-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/tiled-index-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/tiled-index-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uint-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uint-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/uninitialized-object-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/uninitialized-object-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-2-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-2-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-3-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-3-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-4-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-4-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unorm-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unorm-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/unsupported-feature-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/unsupported-feature-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, + { + "source_path": "docs/parallel/amp/reference/writeonly-texture-view-class.md", + "redirect_url": "/previous-versions/cpp/parallel/amp/reference/writeonly-texture-view-class", + "redirect_document_id": false, + "monikers": [ + "msvc-160" + ] + }, { "source_path": "docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md", "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism", diff --git a/docs/docfx.json b/docs/docfx.json index 89cb19b620f..4be629bb780 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -348,7 +348,8 @@ "msvc-170", "msvc-180", "msvc-140", - "msvc-150" + "msvc-150", + "msvc-160" ] } }, From ab5ef342b41a83b70f6566e38ad6f8569c51e005 Mon Sep 17 00:00:00 2001 From: Saisang Cai Date: Tue, 31 Mar 2026 04:51:13 +0000 Subject: [PATCH 399/619] Delete amp files --- docs/docfx.json | 9 - ...amp-cpp-accelerated-massive-parallelism.md | 38 - docs/parallel/amp/cpp-amp-overview.md | 505 ---- docs/parallel/amp/graphics-cpp-amp.md | 428 --- docs/parallel/amp/media/campc.PNG | Bin 15562 -> 0 bytes .../parallel/amp/media/campcpubreakpoints.png | Bin 6863 -> 0 bytes docs/parallel/amp/media/campd.png | Bin 13479 -> 0 bytes docs/parallel/amp/media/campe.png | Bin 24824 -> 0 bytes docs/parallel/amp/media/campf.PNG | Bin 21953 -> 0 bytes docs/parallel/amp/media/campg.PNG | Bin 18959 -> 0 bytes .../parallel/amp/media/campgpubreakpoints.png | Bin 4115 -> 0 bytes docs/parallel/amp/media/camph.png | Bin 3709 -> 0 bytes docs/parallel/amp/media/campk.PNG | Bin 21833 -> 0 bytes docs/parallel/amp/media/campl.PNG | Bin 35513 -> 0 bytes .../amp/media/campmatrixanontiled.PNG | Bin 919 -> 0 bytes .../amp/media/campmatrixapartitioned.PNG | Bin 1704 -> 0 bytes docs/parallel/amp/media/campmatrixatiled.PNG | Bin 1064 -> 0 bytes .../amp/media/campmatrixbnontiled.PNG | Bin 1002 -> 0 bytes .../amp/media/campmatrixbpartitioned.PNG | Bin 1715 -> 0 bytes docs/parallel/amp/media/campmatrixbtiled.PNG | Bin 1070 -> 0 bytes .../amp/media/campmatrixproductnontiled.PNG | Bin 2971 -> 0 bytes .../media/campmatrixproductpartitioned.PNG | Bin 1405 -> 0 bytes .../amp/media/campmatrixproducttiled.PNG | Bin 1622 -> 0 bytes .../amp/media/camptiledgridexample.png | Bin 6789 -> 0 bytes docs/parallel/amp/media/usingtilesmatrix.PNG | Bin 8260 -> 0 bytes .../amp/reference/accelerator-class.md | 524 ---- .../amp/reference/accelerator-view-class.md | 327 -- .../accelerator-view-removed-class.md | 86 - .../adopt-d3d-access-lock-t-structure.md | 32 - docs/parallel/amp/reference/array-class.md | 816 ----- .../amp/reference/array-view-class.md | 773 ----- .../amp/reference/completion-future-class.md | 277 -- ...rrency-direct3d-namespace-functions-amp.md | 583 ---- .../concurrency-direct3d-namespace.md | 71 - ...ncurrency-fast-math-namespace-functions.md | 1211 -------- .../concurrency-fast-math-namespace.md | 98 - ...y-graphics-direct3d-namespace-functions.md | 162 - ...concurrency-graphics-direct3d-namespace.md | 37 - .../concurrency-graphics-namespace-enums.md | 37 - ...oncurrency-graphics-namespace-functions.md | 293 -- .../concurrency-graphics-namespace.md | 83 - .../concurrency-namespace-constants-amp.md | 29 - .../concurrency-namespace-cpp-amp.md | 109 - .../concurrency-namespace-enums-amp.md | 44 - .../concurrency-namespace-functions-amp.md | 655 ---- .../concurrency-namespace-operators-amp.md | 271 -- ...rrency-precise-math-namespace-functions.md | 2622 ----------------- .../concurrency-precise-math-namespace.md | 166 -- docs/parallel/amp/reference/double-2-class.md | 155 - docs/parallel/amp/reference/double-3-class.md | 205 -- docs/parallel/amp/reference/double-4-class.md | 407 --- docs/parallel/amp/reference/extent-class.md | 386 --- docs/parallel/amp/reference/float-2-class.md | 155 - docs/parallel/amp/reference/float-3-class.md | 206 -- docs/parallel/amp/reference/float-4-class.md | 407 --- docs/parallel/amp/reference/index-class.md | 311 -- docs/parallel/amp/reference/int-2-class.md | 162 - docs/parallel/amp/reference/int-3-class.md | 207 -- docs/parallel/amp/reference/int-4-class.md | 414 --- .../reference/invalid-compute-domain-class.md | 65 - docs/parallel/amp/reference/norm-2-class.md | 169 -- docs/parallel/amp/reference/norm-3-class.md | 212 -- docs/parallel/amp/reference/norm-4-class.md | 425 --- docs/parallel/amp/reference/norm-class.md | 94 - .../amp/reference/out-of-memory-class.md | 65 - .../amp/reference/reference-cpp-amp.md | 36 - .../amp/reference/runtime-exception-class.md | 129 - docs/parallel/amp/reference/sampler-class.md | 197 -- .../reference/scoped-d3d-access-lock-class.md | 108 - .../amp/reference/short-vector-structure.md | 108 - .../short-vector-traits-structure.md | 117 - docs/parallel/amp/reference/texture-class.md | 579 ---- .../amp/reference/texture-view-class.md | 479 --- .../amp/reference/tile-barrier-class.md | 103 - .../amp/reference/tiled-extent-class.md | 218 -- .../amp/reference/tiled-index-class.md | 253 -- docs/parallel/amp/reference/uint-2-class.md | 161 - docs/parallel/amp/reference/uint-3-class.md | 211 -- docs/parallel/amp/reference/uint-4-class.md | 402 --- .../reference/uninitialized-object-class.md | 65 - docs/parallel/amp/reference/unorm-2-class.md | 163 - docs/parallel/amp/reference/unorm-3-class.md | 214 -- docs/parallel/amp/reference/unorm-4-class.md | 418 --- docs/parallel/amp/reference/unorm-class.md | 93 - .../reference/unsupported-feature-class.md | 65 - .../reference/writeonly-texture-view-class.md | 161 - ...ccelerator-and-accelerator-view-objects.md | 184 -- .../using-cpp-amp-in-windows-store-apps.md | 118 - ...nction-objects-and-restricted-functions.md | 159 - docs/parallel/amp/using-tiles.md | 334 --- ...through-debugging-a-cpp-amp-application.md | 405 --- .../amp/walkthrough-matrix-multiplication.md | 322 -- 92 files changed, 20133 deletions(-) delete mode 100644 docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md delete mode 100644 docs/parallel/amp/cpp-amp-overview.md delete mode 100644 docs/parallel/amp/graphics-cpp-amp.md delete mode 100644 docs/parallel/amp/media/campc.PNG delete mode 100644 docs/parallel/amp/media/campcpubreakpoints.png delete mode 100644 docs/parallel/amp/media/campd.png delete mode 100644 docs/parallel/amp/media/campe.png delete mode 100644 docs/parallel/amp/media/campf.PNG delete mode 100644 docs/parallel/amp/media/campg.PNG delete mode 100644 docs/parallel/amp/media/campgpubreakpoints.png delete mode 100644 docs/parallel/amp/media/camph.png delete mode 100644 docs/parallel/amp/media/campk.PNG delete mode 100644 docs/parallel/amp/media/campl.PNG delete mode 100644 docs/parallel/amp/media/campmatrixanontiled.PNG delete mode 100644 docs/parallel/amp/media/campmatrixapartitioned.PNG delete mode 100644 docs/parallel/amp/media/campmatrixatiled.PNG delete mode 100644 docs/parallel/amp/media/campmatrixbnontiled.PNG delete mode 100644 docs/parallel/amp/media/campmatrixbpartitioned.PNG delete mode 100644 docs/parallel/amp/media/campmatrixbtiled.PNG delete mode 100644 docs/parallel/amp/media/campmatrixproductnontiled.PNG delete mode 100644 docs/parallel/amp/media/campmatrixproductpartitioned.PNG delete mode 100644 docs/parallel/amp/media/campmatrixproducttiled.PNG delete mode 100644 docs/parallel/amp/media/camptiledgridexample.png delete mode 100644 docs/parallel/amp/media/usingtilesmatrix.PNG delete mode 100644 docs/parallel/amp/reference/accelerator-class.md delete mode 100644 docs/parallel/amp/reference/accelerator-view-class.md delete mode 100644 docs/parallel/amp/reference/accelerator-view-removed-class.md delete mode 100644 docs/parallel/amp/reference/adopt-d3d-access-lock-t-structure.md delete mode 100644 docs/parallel/amp/reference/array-class.md delete mode 100644 docs/parallel/amp/reference/array-view-class.md delete mode 100644 docs/parallel/amp/reference/completion-future-class.md delete mode 100644 docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md delete mode 100644 docs/parallel/amp/reference/concurrency-direct3d-namespace.md delete mode 100644 docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md delete mode 100644 docs/parallel/amp/reference/concurrency-fast-math-namespace.md delete mode 100644 docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md delete mode 100644 docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md delete mode 100644 docs/parallel/amp/reference/concurrency-graphics-namespace-enums.md delete mode 100644 docs/parallel/amp/reference/concurrency-graphics-namespace-functions.md delete mode 100644 docs/parallel/amp/reference/concurrency-graphics-namespace.md delete mode 100644 docs/parallel/amp/reference/concurrency-namespace-constants-amp.md delete mode 100644 docs/parallel/amp/reference/concurrency-namespace-cpp-amp.md delete mode 100644 docs/parallel/amp/reference/concurrency-namespace-enums-amp.md delete mode 100644 docs/parallel/amp/reference/concurrency-namespace-functions-amp.md delete mode 100644 docs/parallel/amp/reference/concurrency-namespace-operators-amp.md delete mode 100644 docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md delete mode 100644 docs/parallel/amp/reference/concurrency-precise-math-namespace.md delete mode 100644 docs/parallel/amp/reference/double-2-class.md delete mode 100644 docs/parallel/amp/reference/double-3-class.md delete mode 100644 docs/parallel/amp/reference/double-4-class.md delete mode 100644 docs/parallel/amp/reference/extent-class.md delete mode 100644 docs/parallel/amp/reference/float-2-class.md delete mode 100644 docs/parallel/amp/reference/float-3-class.md delete mode 100644 docs/parallel/amp/reference/float-4-class.md delete mode 100644 docs/parallel/amp/reference/index-class.md delete mode 100644 docs/parallel/amp/reference/int-2-class.md delete mode 100644 docs/parallel/amp/reference/int-3-class.md delete mode 100644 docs/parallel/amp/reference/int-4-class.md delete mode 100644 docs/parallel/amp/reference/invalid-compute-domain-class.md delete mode 100644 docs/parallel/amp/reference/norm-2-class.md delete mode 100644 docs/parallel/amp/reference/norm-3-class.md delete mode 100644 docs/parallel/amp/reference/norm-4-class.md delete mode 100644 docs/parallel/amp/reference/norm-class.md delete mode 100644 docs/parallel/amp/reference/out-of-memory-class.md delete mode 100644 docs/parallel/amp/reference/reference-cpp-amp.md delete mode 100644 docs/parallel/amp/reference/runtime-exception-class.md delete mode 100644 docs/parallel/amp/reference/sampler-class.md delete mode 100644 docs/parallel/amp/reference/scoped-d3d-access-lock-class.md delete mode 100644 docs/parallel/amp/reference/short-vector-structure.md delete mode 100644 docs/parallel/amp/reference/short-vector-traits-structure.md delete mode 100644 docs/parallel/amp/reference/texture-class.md delete mode 100644 docs/parallel/amp/reference/texture-view-class.md delete mode 100644 docs/parallel/amp/reference/tile-barrier-class.md delete mode 100644 docs/parallel/amp/reference/tiled-extent-class.md delete mode 100644 docs/parallel/amp/reference/tiled-index-class.md delete mode 100644 docs/parallel/amp/reference/uint-2-class.md delete mode 100644 docs/parallel/amp/reference/uint-3-class.md delete mode 100644 docs/parallel/amp/reference/uint-4-class.md delete mode 100644 docs/parallel/amp/reference/uninitialized-object-class.md delete mode 100644 docs/parallel/amp/reference/unorm-2-class.md delete mode 100644 docs/parallel/amp/reference/unorm-3-class.md delete mode 100644 docs/parallel/amp/reference/unorm-4-class.md delete mode 100644 docs/parallel/amp/reference/unorm-class.md delete mode 100644 docs/parallel/amp/reference/unsupported-feature-class.md delete mode 100644 docs/parallel/amp/reference/writeonly-texture-view-class.md delete mode 100644 docs/parallel/amp/using-accelerator-and-accelerator-view-objects.md delete mode 100644 docs/parallel/amp/using-cpp-amp-in-windows-store-apps.md delete mode 100644 docs/parallel/amp/using-lambdas-function-objects-and-restricted-functions.md delete mode 100644 docs/parallel/amp/using-tiles.md delete mode 100644 docs/parallel/amp/walkthrough-debugging-a-cpp-amp-application.md delete mode 100644 docs/parallel/amp/walkthrough-matrix-multiplication.md diff --git a/docs/docfx.json b/docs/docfx.json index 4be629bb780..e450d439f85 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -342,15 +342,6 @@ "text/**.yml": "twhitney", "windows/**.md": "twhitney", "windows/**.yml": "twhitney" - }, - "exclude_monikers": { - "parallel/amp/**/*.{md,yml,yaml}": [ - "msvc-170", - "msvc-180", - "msvc-140", - "msvc-150", - "msvc-160" - ] } }, "template": [], diff --git a/docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md b/docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md deleted file mode 100644 index d4b2d50056a..00000000000 --- a/docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -description: "Learn more about: C++ AMP (C++ Accelerated Massive Parallelism)" -title: "C++ AMP (C++ Accelerated Massive Parallelism)" -ms.date: "11/04/2016" -helpviewer_keywords: ["C++ AMP (see C++ Accelerated Massive Parallelism)", "C++ Accelerated Massive Parallelism, getting started"] ---- -# C++ AMP (C++ Accelerated Massive Parallelism) - -C++ AMP (C++ Accelerated Massive Parallelism) accelerates the execution of your C++ code by taking advantage of the data-parallel hardware that's commonly present as a graphics processing unit (GPU) on a discrete graphics card. The C++ AMP programming model includes support for multidimensional arrays, indexing, memory transfer, and tiling. It also includes a mathematical function library. You can use C++ AMP language extensions to control how data is moved from the CPU to the GPU and back. - -> [!NOTE] -> C++ AMP headers are deprecated starting with Visual Studio 2022 version 17.0. -> Including any AMP headers will generate build errors. Define `_SILENCE_AMP_DEPRECATION_WARNINGS` before including any AMP headers to silence the warnings. - -## Related Topics - -|Title|Description| -|-----------|-----------------| -|[C++ AMP Overview](../../parallel/amp/cpp-amp-overview.md)|Describes the key features of C++ AMP and the mathematical library.| -|[Using Lambdas, Function Objects, and Restricted Functions](../../parallel/amp/using-lambdas-function-objects-and-restricted-functions.md)|Describes how to use lambda expressions, function objects, and restricted functions in calls to the [parallel_for_each](reference/concurrency-namespace-functions-amp.md#parallel_for_each) method.| -|[Using Tiles](../../parallel/amp/using-tiles.md)|Describes how to use tiles to accelerate your C++ AMP code.| -|[Using accelerator and accelerator_view Objects](../../parallel/amp/using-accelerator-and-accelerator-view-objects.md)|Describes how to use accelerators to customize execution of your code on the GPU.| -|[Using C++ AMP in UWP Apps](../../parallel/amp/using-cpp-amp-in-windows-store-apps.md)|Describes how to use C++ AMP in Universal Windows Platform (UWP) apps that use Windows Runtime types.| -|[Graphics (C++ AMP)](../../parallel/amp/graphics-cpp-amp.md)|Describes how to use the C++ AMP graphics library.| -|[Walkthrough: Matrix Multiplication](../../parallel/amp/walkthrough-matrix-multiplication.md)|Demonstrates matrix multiplication using C++ AMP code and tiling.| -|[Walkthrough: Debugging a C++ AMP Application](../../parallel/amp/walkthrough-debugging-a-cpp-amp-application.md)|Explains how to create and debug an application that uses parallel reduction to sum up a large array of integers.| - -## Reference - -[Reference (C++ AMP)](../../parallel/amp/reference/reference-cpp-amp.md)
-[tile_static Keyword](../../cpp/tile-static-keyword.md)
-[restrict (C++ AMP)](../../cpp/restrict-cpp-amp.md) - -## Other Resources - -[Parallel Programming in Native Code Blog](/archive/blogs/nativeconcurrency/)
-[C++ AMP sample projects for download](/archive/blogs/nativeconcurrency/c-amp-sample-projects-for-download)
-[Analyzing C++ AMP Code with the Concurrency Visualizer](/archive/blogs/nativeconcurrency/analyzing-c-amp-code-with-the-concurrency-visualizer) diff --git a/docs/parallel/amp/cpp-amp-overview.md b/docs/parallel/amp/cpp-amp-overview.md deleted file mode 100644 index 71492d2b0f3..00000000000 --- a/docs/parallel/amp/cpp-amp-overview.md +++ /dev/null @@ -1,505 +0,0 @@ ---- -title: "C++ AMP Overview" -description: "Learn more about: C++ AMP Overview" -ms.date: 11/19/2018 -ms.topic: concept-article -helpviewer_keywords: ["C++ Accelerated Massive Parallelism, requirements", "C++ Accelerated Massive Parallelism, architecture", "C++ AMP", "C++ Accelerated Massive Parallelism, overview", "C++ Accelerated Massive Parallelism"] ---- -# C++ AMP Overview - -> [!NOTE] -> C++ AMP headers are deprecated starting with Visual Studio 2022 version 17.0. -> Including any AMP headers will generate build errors. Define `_SILENCE_AMP_DEPRECATION_WARNINGS` before including any AMP headers to silence the warnings. - -C++ Accelerated Massive Parallelism (C++ AMP) accelerates execution of C++ code by taking advantage of data-parallel hardware such as a graphics processing unit (GPU) on a discrete graphics card. By using C++ AMP, you can code multi-dimensional data algorithms so that execution can be accelerated by using parallelism on heterogeneous hardware. The C++ AMP programming model includes multidimensional arrays, indexing, memory transfer, tiling, and a mathematical function library. You can use C++ AMP language extensions to control how data is moved from the CPU to the GPU and back, so that you can improve performance. - -## System Requirements - -- Windows 7 or later - -- Windows Server 2008 R2 through Visual Studio 2019. - -- DirectX 11 Feature Level 11.0 or later hardware - -- For debugging on the software emulator, Windows 8 or Windows Server 2012 is required. For debugging on the hardware, you must install the drivers for your graphics card. For more information, see [Debugging GPU Code](/visualstudio/debugger/debugging-gpu-code). - -- Note: AMP is currently not supported on ARM64. - -## Introduction - -The following two examples illustrate the primary components of C++ AMP. Assume that you want to add the corresponding elements of two one-dimensional arrays. For example, you might want to add `{1, 2, 3, 4, 5}` and `{6, 7, 8, 9, 10}` to obtain `{7, 9, 11, 13, 15}`. Without using C++ AMP, you might write the following code to add the numbers and display the results. - -```cpp -#include - -void StandardMethod() { - - int aCPP[] = {1, 2, 3, 4, 5}; - int bCPP[] = {6, 7, 8, 9, 10}; - int sumCPP[5]; - - for (int idx = 0; idx < 5; idx++) - { - sumCPP[idx] = aCPP[idx] + bCPP[idx]; - } - - for (int idx = 0; idx < 5; idx++) - { - std::cout << sumCPP[idx] << "\n"; - } -} -``` - -The important parts of the code are as follows: - -- Data: The data consists of three arrays. All have the same rank (one) and length (five). - -- Iteration: The first **`for`** loop provides a mechanism for iterating through the elements in the arrays. The code that you want to execute to compute the sums is contained in the first **`for`** block. - -- Index: The `idx` variable accesses the individual elements of the arrays. - -Using C++ AMP, you might write the following code instead. - -```cpp -#include -#include -using namespace concurrency; - -const int size = 5; - -void CppAmpMethod() { - int aCPP[] = {1, 2, 3, 4, 5}; - int bCPP[] = {6, 7, 8, 9, 10}; - int sumCPP[size]; - - // Create C++ AMP objects. - array_view a(size, aCPP); - array_view b(size, bCPP); - array_view sum(size, sumCPP); - sum.discard_data(); - - parallel_for_each( - // Define the compute domain, which is the set of threads that are created. - sum.extent, - // Define the code to run on each thread on the accelerator. - [=](index<1> idx) restrict(amp) { - sum[idx] = a[idx] + b[idx]; - } - ); - - // Print the results. The expected output is "7, 9, 11, 13, 15". - for (int i = 0; i < size; i++) { - std::cout << sum[i] << "\n"; - } -} -``` - -The same basic elements are present, but C++ AMP constructs are used: - -- Data: You use C++ arrays to construct three C++ AMP [array_view](../../parallel/amp/reference/array-view-class.md) objects. You supply four values to construct an `array_view` object: the data values, the rank, the element type, and the length of the `array_view` object in each dimension. The rank and type are passed as type parameters. The data and length are passed as constructor parameters. In this example, the C++ array that is passed to the constructor is one-dimensional. The rank and length are used to construct the rectangular shape of the data in the `array_view` object, and the data values are used to fill the array. The runtime library also includes the [array Class](../../parallel/amp/reference/array-class.md), which has an interface that resembles the `array_view` class and is discussed later in this article. - -- Iteration: The [parallel_for_each Function (C++ AMP)](reference/concurrency-namespace-functions-amp.md#parallel_for_each) provides a mechanism for iterating through the data elements, or *compute domain*. In this example, the compute domain is specified by `sum.extent`. The code that you want to execute is contained in a lambda expression, or *kernel function*. The `restrict(amp)` indicates that only the subset of the C++ language that C++ AMP can accelerate is used. - -- Index: The [index Class](../../parallel/amp/reference/index-class.md) variable, `idx`, is declared with a rank of one to match the rank of the `array_view` object. By using the index, you can access the individual elements of the `array_view` objects. - -## Shaping and Indexing Data: index and extent - -You must define the data values and declare the shape of the data before you can run the kernel code. All data is defined to be an array (rectangular), and you can define the array to have any rank (number of dimensions). The data can be any size in any of the dimensions. - -### index Class - -The [index Class](../../parallel/amp/reference/index-class.md) specifies a location in the `array` or `array_view` object by encapsulating the offset from the origin in each dimension into one object. When you access a location in the array, you pass an `index` object to the indexing operator, `[]`, instead of a list of integer indexes. You can access the elements in each dimension by using the [array::operator() Operator](reference/array-class.md#operator_call) or the [array_view::operator() Operator](reference/array-view-class.md#operator_call). - -The following example creates a one-dimensional index that specifies the third element in a one-dimensional `array_view` object. The index is used to print the third element in the `array_view` object. The output is 3. - -```cpp -int aCPP[] = {1, 2, 3, 4, 5}; -array_view a(5, aCPP); - -index<1> idx(2); - -std::cout << a[idx] << "\n"; -// Output: 3 -``` - -The following example creates a two-dimensional index that specifies the element where the row = 1 and the column = 2 in a two-dimensional `array_view` object. The first parameter in the `index` constructor is the row component, and the second parameter is the column component. The output is 6. - -```cpp -int aCPP[] = {1, 2, 3, 4, 5, 6}; -array_view a(2, 3, aCPP); - -index<2> idx(1, 2); - -std::cout < a(2, 3, 4, aCPP); - -// Specifies the element at 3, 1, 0. -index<3> idx(0, 1, 3); - -std::cout << a[idx] << "\n"; -// Output: 8 -``` - -### extent Class - -The [extent Class](../../parallel/amp/reference/extent-class.md) specifies the length of the data in each dimension of the `array` or `array_view` object. You can create an extent and use it to create an `array` or `array_view` object. You can also retrieve the extent of an existing `array` or `array_view` object. The following example prints the length of the extent in each dimension of an `array_view` object. - -```cpp -int aCPP[] = { - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; -// There are 3 rows and 4 columns, and the depth is two. -array_view a(2, 3, 4, aCPP); - -std::cout << "The number of columns is " << a.extent[2] << "\n"; -std::cout << "The number of rows is " << a.extent[1] << "\n"; -std::cout << "The depth is " << a.extent[0] << "\n"; -std::cout << "Length in most significant dimension is " << a.extent[0] << "\n"; -``` - -The following example creates an `array_view` object that has the same dimensions as the object in the previous example, but this example uses an `extent` object instead of using explicit parameters in the `array_view` constructor. - -```cpp -int aCPP[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}; -extent<3> e(2, 3, 4); - -array_view a(e, aCPP); - -std::cout << "The number of columns is " << a.extent[2] << "\n"; -std::cout << "The number of rows is " << a.extent[1] << "\n"; -std::cout << "The depth is " << a.extent[0] << "\n"; -``` - -## Moving Data to the Accelerator: array and array_view - -Two data containers used to move data to the accelerator are defined in the runtime library. They are the [array Class](../../parallel/amp/reference/array-class.md) and the [array_view Class](../../parallel/amp/reference/array-view-class.md). The `array` class is a container class that creates a deep copy of the data when the object is constructed. The `array_view` class is a wrapper class that copies the data when the kernel function accesses the data. When the data is needed on the source device the data is copied back. - -### array Class - -When an `array` object is constructed, a deep copy of the data is created on the accelerator if you use a constructor that includes a pointer to the data set. The kernel function modifies the copy on the accelerator. When the execution of the kernel function is finished, you must copy the data back to the source data structure. The following example multiplies each element in a vector by 10. After the kernel function is finished, the `vector conversion operator` is used to copy the data back into the vector object. - -```cpp -std::vector data(5); - -for (int count = 0; count <5; count++) -{ - data[count] = count; -} - -array a(5, data.begin(), data.end()); - -parallel_for_each( - a.extent, - [=, &a](index<1> idx) restrict(amp) { - a[idx] = a[idx]* 10; - }); - -data = a; -for (int i = 0; i < 5; i++) -{ - std::cout << data[i] << "\n"; -} -``` - -### array_view Class - -The `array_view` has nearly the same members as the `array` class, but the underlying behavior is not the same. Data passed to the `array_view` constructor is not replicated on the GPU as it is with an `array` constructor. Instead, the data is copied to the accelerator when the kernel function is executed. Therefore, if you create two `array_view` objects that use the same data, both `array_view` objects refer to the same memory space. When you do this, you have to synchronize any multithreaded access. The main advantage of using the `array_view` class is that data is moved only if it is necessary. - -### Comparison of array and array_view - -The following table summarizes the similarities and differences between the `array` and `array_view` classes. - -|Description|array class|array_view class| -|-----------------|-----------------|-----------------------| -|When rank is determined|At compile time.|At compile time.| -|When extent is determined|At run time.|At run time.| -|Shape|Rectangular.|Rectangular.| -|Data storage|Is a data container.|Is a data wrapper.| -|Copy|Explicit and deep copy at definition.|Implicit copy when it is accessed by the kernel function.| -|Data retrieval|By copying the array data back to an object on the CPU thread.|By direct access of the `array_view` object or by calling the [array_view::synchronize Method](reference/array-view-class.md#synchronize) to continue accessing the data on the original container.| - -### Shared memory with array and array_view - -Shared memory is memory that can be accessed by both the CPU and the accelerator. The use of shared memory eliminates or significantly reduces the overhead of copying data between the CPU and the accelerator. Although the memory is shared, it cannot be accessed concurrently by both the CPU and the accelerator, and doing so causes undefined behavior. - -`array` objects can be used to specify fine-grained control over the use of shared memory if the associated accelerator supports it. Whether an accelerator supports shared memory is determined by the accelerator's [supports_cpu_shared_memory](reference/accelerator-class.md#supports_cpu_shared_memory) property, which returns **`true`** when shared memory is supported. If shared memory is supported, the default [access_type Enumeration](reference/concurrency-namespace-enums-amp.md#access_type) for memory allocations on the accelerator is determined by the `default_cpu_access_type` property. By default, `array` and `array_view` objects take on the same `access_type` as the primary associated `accelerator`. - -By setting the [array::cpu_access_type Data Member](reference/array-class.md#cpu_access_type) property of an `array` explicitly, you can exercise fine-grained control over how shared memory is used, so that you can optimize the app for the hardware's performance characteristics, based on the memory access patterns of its computation kernels. An `array_view` reflects the same `cpu_access_type` as the `array` that it's associated with; or, if the array_view is constructed without a data source, its `access_type` reflects the environment that first causes it to allocate storage. That is, if it's first accessed by the host (CPU), then it behaves as if it were created over a CPU data source and shares the `access_type` of the `accelerator_view` associated by capture; however, if it's first accessed by an `accelerator_view`, then it behaves as if it were created over an `array` created on that `accelerator_view` and shares the `array`'s `access_type`. - -The following code example shows how to determine whether the default accelerator supports shared memory, and then creates several arrays that have different cpu_access_type configurations. - -```cpp -#include -#include - -using namespace Concurrency; - -int main() -{ - accelerator acc = accelerator(accelerator::default_accelerator); - - // Early out if the default accelerator doesn't support shared memory. - if (!acc.supports_cpu_shared_memory) - { - std::cout << "The default accelerator does not support shared memory" << std::endl; - return 1; - } - - // Override the default CPU access type. - acc.default_cpu_access_type = access_type_read_write - - // Create an accelerator_view from the default accelerator. The - // accelerator_view inherits its default_cpu_access_type from acc. - accelerator_view acc_v = acc.default_view; - - // Create an extent object to size the arrays. - extent<1> ex(10); - - // Input array that can be written on the CPU. - array arr_w(ex, acc_v, access_type_write); - - // Output array that can be read on the CPU. - array arr_r(ex, acc_v, access_type_read); - - // Read-write array that can be both written to and read from on the CPU. - array arr_rw(ex, acc_v, access_type_read_write); -} -``` - -## Executing Code over Data: parallel_for_each - -The [parallel_for_each](reference/concurrency-namespace-functions-amp.md#parallel_for_each) function defines the code that you want to run on the accelerator against the data in the `array` or `array_view` object. Consider the following code from the introduction of this topic. - -```cpp -#include -#include -using namespace concurrency; - -void AddArrays() { - int aCPP[] = {1, 2, 3, 4, 5}; - int bCPP[] = {6, 7, 8, 9, 10}; - int sumCPP[5] = {0, 0, 0, 0, 0}; - - array_view a(5, aCPP); - array_view b(5, bCPP); - array_view sum(5, sumCPP); - - parallel_for_each( - sum.extent, - [=](index<1> idx) restrict(amp) - { - sum[idx] = a[idx] + b[idx]; - } - ); - - for (int i = 0; i < 5; i++) { - std::cout << sum[i] << "\n"; - } -} -``` - -The `parallel_for_each` method takes two arguments, a compute domain and a lambda expression. - -The *compute domain* is an `extent` object or a `tiled_extent` object that defines the set of threads to create for parallel execution. One thread is generated for each element in the compute domain. In this case, the `extent` object is one-dimensional and has five elements. Therefore, five threads are started. - -The *lambda expression* defines the code to run on each thread. The capture clause, `[=]`, specifies that the body of the lambda expression accesses all captured variables by value, which in this case are `a`, `b`, and `sum`. In this example, the parameter list creates a one-dimensional `index` variable named `idx`. The value of the `idx[0]` is 0 in the first thread and increases by one in each subsequent thread. The `restrict(amp)` indicates that only the subset of the C++ language that C++ AMP can accelerate is used. The limitations on functions that have the restrict modifier are described in [restrict (C++ AMP)](../../cpp/restrict-cpp-amp.md). For more information, see, [Lambda Expression Syntax](../../cpp/lambda-expression-syntax.md). - -The lambda expression can include the code to execute or it can call a separate kernel function. The kernel function must include the `restrict(amp)` modifier. The following example is equivalent to the previous example, but it calls a separate kernel function. - -```cpp -#include -#include -using namespace concurrency; - -void AddElements( - index<1> idx, - array_view sum, - array_view a, - array_view b) restrict(amp) { - sum[idx] = a[idx] + b[idx]; -} - -void AddArraysWithFunction() { - - int aCPP[] = {1, 2, 3, 4, 5}; - int bCPP[] = {6, 7, 8, 9, 10}; - int sumCPP[5] = {0, 0, 0, 0, 0}; - - array_view a(5, aCPP); - array_view b(5, bCPP); - array_view sum(5, sumCPP); - - parallel_for_each( - sum.extent, - [=](index<1> idx) restrict(amp) { - AddElements(idx, sum, a, b); - } - ); - - for (int i = 0; i < 5; i++) { - std::cout << sum[i] << "\n"; - } -} -``` - -## Accelerating Code: Tiles and Barriers - -You can gain additional acceleration by using tiling. Tiling divides the threads into equal rectangular subsets or *tiles*. You determine the appropriate tile size based on your data set and the algorithm that you are coding. For each thread, you have access to the *global* location of a data element relative to the whole `array` or `array_view` and access to the *local* location relative to the tile. Using the local index value simplifies your code because you don't have to write the code to translate index values from global to local. To use tiling, call the [extent::tile Method](reference/extent-class.md#tile) on the compute domain in the `parallel_for_each` method, and use a [tiled_index](../../parallel/amp/reference/tiled-index-class.md) object in the lambda expression. - -In typical applications, the elements in a tile are related in some way, and the code has to access and keep track of values across the tile. Use the [tile_static Keyword](../../cpp/tile-static-keyword.md) keyword and the [tile_barrier::wait Method](reference/tile-barrier-class.md#wait) to accomplish this. A variable that has the **tile_static** keyword has a scope across an entire tile, and an instance of the variable is created for each tile. You must handle synchronization of tile-thread access to the variable. The [tile_barrier::wait Method](reference/tile-barrier-class.md#wait) stops execution of the current thread until all the threads in the tile have reached the call to `tile_barrier::wait`. So you can accumulate values across the tile by using **tile_static** variables. Then you can finish any computations that require access to all the values. - -The following diagram represents a two-dimensional array of sampling data that is arranged in tiles. - -![Index values in a tiled extent.](../../parallel/amp/media/camptiledgridexample.png "Index values in a tiled extent") - -The following code example uses the sampling data from the previous diagram. The code replaces each value in the tile by the average of the values in the tile. - -```cpp -// Sample data: -int sampledata[] = { - 2, 2, 9, 7, 1, 4, - 4, 4, 8, 8, 3, 4, - 1, 5, 1, 2, 5, 2, - 6, 8, 3, 2, 7, 2}; - -// The tiles: -// 2 2 9 7 1 4 -// 4 4 8 8 3 4 -// -// 1 5 1 2 5 2 -// 6 8 3 2 7 2 - -// Averages: -int averagedata[] = { - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -}; - -array_view sample(4, 6, sampledata); - -array_view average(4, 6, averagedata); - -parallel_for_each( - // Create threads for sample.extent and divide the extent into 2 x 2 tiles. - sample.extent.tile<2,2>(), - [=](tiled_index<2,2> idx) restrict(amp) { - // Create a 2 x 2 array to hold the values in this tile. - tile_static int nums[2][2]; - - // Copy the values for the tile into the 2 x 2 array. - nums[idx.local[1]][idx.local[0]] = sample[idx.global]; - - // When all the threads have executed and the 2 x 2 array is complete, find the average. - idx.barrier.wait(); - int sum = nums[0][0] + nums[0][1] + nums[1][0] + nums[1][1]; - - // Copy the average into the array_view. - average[idx.global] = sum / 4; - }); - -for (int i = 0; i <4; i++) { - for (int j = 0; j <6; j++) { - std::cout << average(i,j) << " "; - } - std::cout << "\n"; -} - -// Output: -// 3 3 8 8 3 3 -// 3 3 8 8 3 3 -// 5 5 2 2 4 4 -// 5 5 2 2 4 4 -``` - -## Math Libraries - -C++ AMP includes two math libraries. The double-precision library in the [Concurrency::precise_math Namespace](../../parallel/amp/reference/concurrency-precise-math-namespace.md) provides support for double-precision functions. It also provides support for single-precision functions, although double-precision support on the hardware is still required. It conforms to the [C99 Specification (ISO/IEC 9899)](https://go.microsoft.com/fwlink/p/?linkid=225887). The accelerator must support full double precision. You can determine whether it does by checking the value of the [accelerator::supports_double_precision Data Member](reference/accelerator-class.md#supports_double_precision). The fast math library, in the [Concurrency::fast_math Namespace](../../parallel/amp/reference/concurrency-fast-math-namespace.md), contains another set of math functions. These functions, which support only **`float`** operands, execute more quickly but aren't as precise as those in the double-precision math library. The functions are contained in the \ header file and all are declared with `restrict(amp)`. The functions in the \ header file are imported into both the `fast_math` and `precise_math` namespaces. The **`restrict`** keyword is used to distinguish the \ version and the C++ AMP version. The following code calculates the base-10 logarithm, using the fast method, of each value that is in the compute domain. - -```cpp -#include -#include -#include -using namespace concurrency; - -void MathExample() { - - double numbers[] = { 1.0, 10.0, 60.0, 100.0, 600.0, 1000.0 }; - array_view logs(6, numbers); - - parallel_for_each( - logs.extent, - [=] (index<1> idx) restrict(amp) { - logs[idx] = concurrency::fast_math::log10(numbers[idx]); - } - ); - - for (int i = 0; i < 6; i++) { - std::cout << logs[i] << "\n"; - } -} -``` - -## Graphics Library - -C++ AMP includes a graphics library that is designed for accelerated graphics programming. This library is used only on devices that support native graphics functionality. The methods are in the [Concurrency::graphics Namespace](../../parallel/amp/reference/concurrency-graphics-namespace.md) and are contained in the \ header file. The key components of the graphics library are: - -- [texture Class](../../parallel/amp/reference/texture-class.md): You can use the texture class to create textures from memory or from a file. Textures resemble arrays because they contain data, and they resemble containers in the C++ Standard Library with respect to assignment and copy construction. For more information, see [C++ Standard Library Containers](../../standard-library/stl-containers.md). The template parameters for the `texture` class are the element type and the rank. The rank can be 1, 2, or 3. The element type can be one of the short vector types that are described later in this article. - -- [writeonly_texture_view Class](../../parallel/amp/reference/writeonly-texture-view-class.md): Provides write-only access to any texture. - -- Short Vector Library: Defines a set of short vector types of length 2, 3, and 4 that are based on **`int`**, `uint`, **`float`**, **`double`**, [norm](../../parallel/amp/reference/norm-class.md), or [unorm](../../parallel/amp/reference/unorm-class.md). - -## Universal Windows Platform (UWP) Apps - -Like other C++ libraries, you can use C++ AMP in your UWP apps. These articles describe how to include C++ AMP code in apps that is created by using C++, C#, Visual Basic, or JavaScript: - -- [Using C++ AMP in UWP Apps](../../parallel/amp/using-cpp-amp-in-windows-store-apps.md) - -- [Walkthrough: Creating a basic Windows Runtime component in C++ and calling it from JavaScript](/previous-versions/windows/apps/hh755833(v=vs.140)) - -- [Bing Maps Trip Optimizer, a Window Store app in JavaScript and C++](/previous-versions/windows/apps/hh699893(v=vs.140)) - -- [How to use C++ AMP from C# using the Windows Runtime](https://devblogs.microsoft.com/pfxteam/how-to-use-c-amp-from-c-using-winrt/) - -- [How to use C++ AMP from C#](https://devblogs.microsoft.com/pfxteam/how-to-use-c-amp-from-c/) - -- [Calling Native Functions from Managed Code](../../dotnet/calling-native-functions-from-managed-code.md) - -## C++ AMP and Concurrency Visualizer - -The Concurrency Visualizer includes support for analyzing performance of C++ AMP code. These articles describe these features: - -- [GPU Activity Graph](/visualstudio/profiling/gpu-activity-graph) - -- [GPU Activity (Paging)](/visualstudio/profiling/gpu-activity-paging) - -- [GPU Activity (This Process)](/visualstudio/profiling/gpu-activity-this-process) - -- [GPU Activity (Other Processes)](/visualstudio/profiling/gpu-activity-other-processes) - -- [Channels (Threads View)](/visualstudio/profiling/channels-threads-view) - -- [Analyzing C++ AMP Code with the Concurrency Visualizer](/archive/blogs/nativeconcurrency/analyzing-c-amp-code-with-the-concurrency-visualizer) - -## Performance Recommendations - -Modulus and division of unsigned integers have significantly better performance than modulus and division of signed integers. We recommend that you use unsigned integers when possible. - -## See also - -[C++ AMP (C++ Accelerated Massive Parallelism)](../../parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md)
-[Lambda Expression Syntax](../../cpp/lambda-expression-syntax.md)
-[Reference (C++ AMP)](../../parallel/amp/reference/reference-cpp-amp.md)
-[Parallel Programming in Native Code Blog](/archive/blogs/nativeconcurrency/) diff --git a/docs/parallel/amp/graphics-cpp-amp.md b/docs/parallel/amp/graphics-cpp-amp.md deleted file mode 100644 index 5368ba8b88e..00000000000 --- a/docs/parallel/amp/graphics-cpp-amp.md +++ /dev/null @@ -1,428 +0,0 @@ ---- -title: "Graphics (C++ AMP)" -description: "Learn more about: Graphics (C++ AMP)" -ms.date: 11/04/2016 ---- -# Graphics (C++ AMP) - -C++ AMP contains several APIs in the [`Concurrency::graphics`](../../parallel/amp/reference/concurrency-graphics-namespace.md) namespace that you can use to access the texture support on GPUs. Some common scenarios are: - -- You can use the [`texture`](../../parallel/amp/reference/texture-class.md) class as a data container for computation and exploit the *spatial locality* of the texture cache and layouts of GPU hardware. Spatial locality is the property of data elements being physically close to each other. - -- The runtime provides efficient interoperability with non-compute shaders. Pixel, vertex, tessellation, and hull shaders frequently consume or produce textures that you can use in your C++ AMP computations. - -- The graphics APIs in C++ AMP provide alternative ways to access sub-word packed buffers. Textures that have formats that represent *texels* (texture elements) that are composed of 8-bit or 16-bit scalars allow access to such packed data storage. - -> [!NOTE] -> C++ AMP headers are deprecated starting with Visual Studio 2022 version 17.0. -> Including any AMP headers will generate build errors. Define `_SILENCE_AMP_DEPRECATION_WARNINGS` before including any AMP headers to silence the warnings. - -## The norm and unorm Types - -The `norm` and `unorm` types are scalar types that limit the range of **`float`** values; this is known as *clamping*. These types can be explicitly constructed from other scalar types. In casting, the value is first cast to **`float`** and then clamped to the respective region that's allowed by `norm [-1.0, 1.0]` or `unorm [0.0, 1.0]`. Casting from +/- infinity returns +/-1. Casting from NaN is undefined. A `norm` can be implicitly constructed from a `unorm` and there is no loss of data. The implicit conversion operator to **`float`** is defined on these types. Binary operators are defined between these types and other built-in scalar types such as **`float`** and **`int`**: `+`, `-`, `*`, `/`, `==`, `!=`, `>`, `<`, `>=`, `<=`. The compound assignment operators are also supported: `+=`, `-=`, `*=`, `/=`. The unary negation operator (`-`) is defined for `norm` types. - -## Short Vector Library - -The Short Vector Library provides some of the functionality of the [Vector Type](/windows/win32/direct3dhlsl/dx-graphics-hlsl-vector) that's defined in HLSL and is typically used to define texels. A short vector is a data structure that holds one to four values of the same type. The supported types are **`double`**, **`float`**, **`int`**, `norm`, `uint`, and `unorm`. The type names are shown in the following table. For each type, there is also a corresponding **`typedef`** that doesn't have an underscore in the name. The types that have the underscores are in the [Concurrency::graphics Namespace](../../parallel/amp/reference/concurrency-graphics-namespace.md). The types that don't have the underscores are in the [Concurrency::graphics::direct3d Namespace](../../parallel/amp/reference/concurrency-graphics-direct3d-namespace.md) so that they are clearly separated from the similarly-named fundamental types such as **`__int8`** and **`__int16`**. - -|Type|Length 2|Length 3|Length 4| -|-|--------------|--------------|--------------| -|double|double_2

double2|double_3

double3|double_4

double4| -|float|float_2

float2|float_3

float3|float_4

float4| -|int|int_2

int2|int_3

int3|int_4

int4| -|norm|norm_2

norm2|norm_3

norm3|norm_4

norm4| -|uint|uint_2

uint2|uint_3

uint3|uint_4

uint4| -|unorm|unorm_2

unorm2|unorm_3

unorm3|unorm_4

unorm4| - -### Operators - -If an operator is defined between two short vectors, then it is also defined between a short vector and a scalar. Also, one of these must be true: - -- The scalar's type must be the same as the short vector's element type. - -- The scalar's type can be implicitly converted to the vector's element type by using only one user-defined conversion. - -The operation is carried component-wise between each component of the short vector and the scalar. Here are the valid operators: - -|Operator type|Valid types| -|-------------------|-----------------| -|Binary operators|Valid on all types: `+`, `-`, `*`, `/`,

Valid on integer types: `%`, `^`, `|`, `&`, `<<`, `>>`

The two vectors must have the same size, and the result is a vector of the same size.| -|Relational operators|Valid on all types: `==` and `!=`| -|Compound assignment operator|Valid on all types: `+=`, `-=`, `*=`, `/=`

Valid on integer types: `%=`, `^=`, `|=`, `&=`, `<<=`, `>>=`| -|Increment and decrement operators|Valid on all types: `++`, `--`

Both prefix and postfix are valid.| -|Bitwise NOT operator (`~`)|Valid on integer types.| -|Unary `-` operator|Valid on all types except `unorm` and `uint`.| - -### Swizzling Expressions - -The Short Vector Library supports the `vector_type.identifier` accessor construct to access the components of a short vector. The `identifier`, which is known as a *swizzling expression*, specifies the components of the vector. The expression can be an l-value or an r-value. Individual characters in the identifier may be: x, y, z, and w; or r, g, b, and a. "x" and "r" mean the zero-th component, "y" and "g" mean the first component, and so on. (Notice that "x" and "r" cannot be used in the same identifier.) Therefore, "rgba" and "xyzw" return the same result. Single-component accessors such as "x" and "y" are scalar value types. Multi-component accessors are short vector types. For example, if you construct an `int_4` vector that's named `fourInts` and has the values 2, 4, 6, and 8, then `fourInts.y` returns the integer 4 and `fourInts.rg` returns an `int_2` object that has the values 2 and 4. - -## Texture Classes - -Many GPUs have hardware and caches that are optimized to fetch pixels and texels and to render images and textures. The [`texture`](../../parallel/amp/reference/texture-class.md) class, which is a container class for texel objects, exposes the texture functionality of these GPUs. A texel can be: - -- An **`int`**, `uint`, **`float`**, **`double`**, `norm`, or `unorm` scalar. - -- A short vector that has two or four components. The only exception is `double_4`, which is not allowed. - -The `texture` object can have a rank of 1, 2, or 3. The `texture` object can be captured only by reference in the lambda of a call to `parallel_for_each`. The texture is stored on the GPU as Direct3D texture objects. For more information about textures and texels in Direct3D, see [Introduction to Textures in Direct3D 11](/windows/win32/direct3d11/overviews-direct3d-11-resources-textures-intro). - -The texel type you use might be one of the many texture formats that are used in graphics programming. For example, an RGBA format could use 32 bits, with 8 bits each for the R, G, B, and A scalar elements. The texture hardware of a graphics card can access the individual elements based on the format. For example, if you are using the RGBA format, the texture hardware can extract each 8-bit element into a 32-bit form. In C++ AMP, you can set the bits per scalar element of your texel so that you can automatically access the individual scalar elements in the code without using bit-shifting. - -### Instantiating Texture Objects - -You can declare a texture object without initialization. The following code example declares several texture objects. - -```cpp -#include -#include -using namespace concurrency; -using namespace concurrency::graphics; - -void declareTextures() { - // Create a 16-texel texture of int. - texture intTexture1(16); - texture intTexture2(extent<1>(16)); - - // Create a 16 x 32 texture of float_2. - texture floatTexture1(16, 32); - texture floatTexture2(extent<2>(16, 32)); - - // Create a 2 x 4 x 8 texture of uint_4. - texture uintTexture1(2, 4, 8); - texture uintTexture2(extent<3>(2, 4, 8)); -} -``` - -You can also use a constructor to declare and initialize a `texture` object. The following code example instantiates a `texture` object from a vector of `float_4` objects. The bits per scalar element is set to the default. You cannot use this constructor with `norm`, `unorm`, or the short vectors of `norm` and `unorm`, because they do not have a default bits per scalar element. - -```cpp -#include -#include -#include -using namespace concurrency; -using namespace concurrency::graphics; - -void initializeTexture() { - std::vector texels; - for (int i = 0; i < 768 * 1024; i++) { - int_4 i4(i, i, i, i); - texels.push_back(i4); - } - - texture aTexture(768, 1024, texels.begin(), texels.end()); -} -``` - -You can also declare and initialize a `texture` object by using a constructor overload that takes a pointer to the source data, the size of source data in bytes, and the bits per scalar element. - -```cpp -void createTextureWithBPC() { // Create the source data. - float source[1024* 2]; - for (int i = 0; i <1024* 2; i++) { - source[i] = (float)i; - } - // Initialize the texture by using the size of source in bytes // and bits per scalar element. - texture floatTexture(1024, source, (unsigned int)sizeof(source), 32U); -} -``` - -The textures in these examples are created on the default view of the default accelerator. You can use other overloads of the constructor if you want to specify an `accelerator_view` object. You cannot create a texture object on a CPU accelerator. - -There are limits on the size of each dimension of the `texture` object, as shown in the following table. A run-time error is generated if you exceed the limits. - -|Texture|Size limitation per dimension| -|-------------|---------------------| -|texture\|16384| -|texture\|16384| -|texture\|2048| - -### Reading from Texture Objects - -You can read from a `texture` object by using [texture::operator\[\]](reference/texture-class.md#operator_at), [texture::operator() Operator](reference/texture-class.md#operator_call), or [texture::get Method](reference/texture-class.md#get). The two operators return a value, not a reference. Therefore, you cannot write to a `texture` object by using `texture::operator[]`. - -```cpp -void readTexture() { - std::vector src; - for (int i = 0; i <16 *32; i++) { - int_2 i2(i, i); - - src.push_back(i2); - } - - std::vector dst(16* 32); - - array_view arr(16, 32, dst); - - arr.discard_data(); - - const texture tex9(16, 32, src.begin(), src.end()); - - parallel_for_each(tex9.extent, [=, &tex9] (index<2> idx) restrict(amp) { // Use the subscript operator. - arr[idx].x += tex9[idx].x; // Use the function () operator. - arr[idx].x += tex9(idx).x; // Use the get method. - arr[idx].y += tex9.get(idx).y; // Use the function () operator. - arr[idx].y += tex9(idx[0], idx[1]).y; - }); - - arr.synchronize(); -} -``` - -The following code example demonstrates how to store texture channels in a short vector, and then access the individual scalar elements as properties of the short vector. - -```cpp -void UseBitsPerScalarElement() { // Create the image data. // Each unsigned int (32-bit) represents four 8-bit scalar elements(r,g,b,a values). - const int image_height = 16; - const int image_width = 16; - std::vector image(image_height* image_width); - - extent<2> image_extent(image_height, image_width); - - // By using uint_4 and 8 bits per channel, each 8-bit channel in the data source is // stored in one 32-bit component of a uint_4. - texture image_texture(image_extent, image.data(), image_extent.size()* 4U, 8U); - - // Use can access the RGBA values of the source data by using swizzling expressions of the uint_4. - parallel_for_each(image_extent, - [&image_texture](index<2> idx) restrict(amp) - { // 4 bytes are automatically extracted when reading. - uint_4 color = image_texture[idx]; - unsigned int r = color.r; - unsigned int g = color.g; - unsigned int b = color.b; - unsigned int a = color.a; - }); -} -``` - -The following table lists the valid bits per channel for each sort vector type. - -|Texture data type|Valid bits per scalar element| -|-----------------------|-----------------------------------| -|int, int_2, int_4

uint, uint_2, uint_4|8, 16, 32| -|int_3, uint_3|32| -|float, float_2, float_4|16, 32| -|float_3|32| -|double, double_2|64| -|norm, norm_2, norm_4

unorm, unorm_2, unorm, 4|8, 16| - -### Writing to Texture Objects - -Use the [texture::set](reference/texture-class.md#set) method to write to `texture` objects. A texture object can be readonly or read/write. For a texture object to be readable and writeable, the following conditions must be true: - -- T has only one scalar component. (Short vectors are not allowed.) - -- T is not **`double`**, `norm`, or `unorm`. - -- The `texture::bits_per_scalar_element` property is 32. - -If all three are not true, then the `texture` object is readonly. The first two conditions are checked during compilation. A compilation error is generated if you have code that tries to write to a `readonly` texture object. The condition for `texture::bits_per_scalar_element` is detected at run time, and the runtime generates the [unsupported_feature](../../parallel/amp/reference/unsupported-feature-class.md) exception if you try to write to a readonly `texture` object. - -The following code example writes values to a texture object. - -```cpp -void writeTexture() { - texture tex1(16); - - parallel_for_each(tex1.extent, [&tex1] (index<1> idx) restrict(amp) { - tex1.set(idx, 0); - }); -} -``` - -### Copying Texture Objects - -You can copy between texture objects by using the [copy](reference/concurrency-namespace-functions-amp.md#copy) function or the [copy_async](reference/concurrency-namespace-functions-amp.md#copy_async) function, as shown in the following code example. - -```cpp -void copyHostArrayToTexture() { // Copy from source array to texture object by using the copy function. - float floatSource[1024* 2]; - for (int i = 0; i <1024* 2; i++) { - floatSource[i] = (float)i; - } - texture floatTexture(1024); - - copy(floatSource, (unsigned int)sizeof(floatSource), floatTexture); - - // Copy from source array to texture object by using the copy function. - char charSource[16* 16]; - for (int i = 0; i <16* 16; i++) { - charSource[i] = (char)i; - } - texture charTexture(16, 16, 8U); - - copy(charSource, (unsigned int)sizeof(charSource), charTexture); - // Copy from texture object to source array by using the copy function. - copy(charTexture, charSource, (unsigned int)sizeof(charSource)); -} -``` - -You can also copy from one texture to another by using the [texture::copy_to](reference/texture-class.md#copy_to) method. The two textures can be on different accelerator_views. When you copy to a `writeonly_texture_view` object, the data is copied to the underlying `texture` object. The bits per scalar element and the extent must be the same on the source and destination `texture` objects. If those requirements are not met, the runtime throws an exception. - -## Texture View Classes - -C++ AMP introduces the [texture_view Class](../../parallel/amp/reference/texture-view-class.md) in Visual Studio 2013. Texture views support the same texel types and ranks as the [texture Class](../../parallel/amp/reference/texture-class.md), but unlike textures, they provide access to additional hardware features such as texture sampling and mipmaps. Texture views support read-only, write-only, and read-write access to the underlying texture data. - -- Read-only access is provided by the `texture_view` template specialization, which supports elements that have 1, 2, or 4 components, texture sampling, and dynamic access to a range of mipmap levels that are determined when the view is instantiated. - -- Write-only access is provided by the non-specialized template class `texture_view`, which supports elements that have either 2 or 4 components and can access one mipmap level that's determined when the view is instantiated. It does not support sampling. - -- Read-write access is provided by the non-specialized template class `texture_view`, which, like textures, supports elements that have only one component; the view can access one mipmap level that's determined when it is instantiated. It does not support sampling. - -Texture views are analogous to array views, but do not provide the automatic data management and movement functionality that the [array_view Class](../../parallel/amp/reference/array-view-class.md) provides over the [array class](../../parallel/amp/reference/array-class.md). A `texture_view` can only be accessed on the accelerator view where the underlying texture data resides. - -### writeonly_texture_view Deprecated - -For Visual Studio 2013, C++ AMP introduces better support for hardware texture features such as sampling and mipmaps, which could not be supported by the [writeonly_texture_view Class](../../parallel/amp/reference/writeonly-texture-view-class.md). The newly introduced `texture_view` class supports a superset of the functionality in `writeonly_texture_view`; as a result, `writeonly_texture_view` is deprecated. - -We recommend—at least for new code—that you use `texture_view` to access functionality that was formerly provided by `writeonly_texture_view`. Compare the following two code examples that write to a texture object that has two components (int_2). Notice that in both cases, the view, `wo_tv4`, must be captured by value in the lambda expression. Here is the example that uses the new `texture_view` class: - -```cpp -void write2ComponentTexture() { - texture tex4(16); - - texture_view wo_tv4(tex4); - - parallel_for_each(extent<1>(16), [=] (index<1> idx) restrict(amp) { - wo_tv4.set(idx, int_2(1, 1)); - }); -} -``` - -And here is the deprecated `writeonly_texture_view` class: - -```cpp -void write2ComponentTexture() { - texture tex4(16); - - writeonly_texture_view wo_tv4(tex4); - - parallel_for_each(extent<1>(16), [=] (index<1> idx) restrict(amp) { - wo_tv4.set(idx, int_2(1, 1)); - }); -} -``` - -As you can see, the two code examples are nearly identical when all you are doing is writing to the primary mipmap level. If you used `writeonly_texture_view` in existing code and you're not planning to enhance that code, you don't have to change it. However, if you're thinking about bringing that code forward, we suggest that you rewrite it to use `texture_view` because the enhancements in it support new hardware texture features. Read on for more information about these new capabilities. - -For more information about the deprecation of `writeonly_texture_view`, see [Overview of the Texture View Design in C++ AMP](/archive/blogs/nativeconcurrency/overview-of-the-texture-view-design-in-c-amp) on the Parallel Programming in Native Code blog. - -### Instantiating Texture View Objects - -Declaring a `texture_view` is similar to declaring an `array_view` that's associated with an **array**. The following code example declares several `texture` objects and `texture_view` objects that are associated with them. - -```cpp -#include -#include -using namespace concurrency; -using namespace concurrency::graphics; - -void declareTextureViews() -{ - // Create a 16-texel texture of int, with associated texture_views. - texture intTexture(16); - texture_view intTextureViewRO(intTexture); // read-only - texture_view intTextureViewRW(intTexture); // read-write - - // Create a 16 x 32 texture of float_2, with associated texture_views. - texture floatTexture(16, 32); - texture_view floatTextureViewRO(floatTexture); // read-only - texture_view floatTextureViewRO(floatTexture); // write-only - - // Create a 2 x 4 x 8 texture of uint_4, with associated texture_views. - texture uintTexture(2, 4, 8); - texture_view uintTextureViewRO(uintTexture); // read-only - texture_view uintTextureViewWO(uintTexture); // write-only -} -``` - -Notice how a texture view whose element type is non-const and has one component is read-write, but a texture view whose element type is non-const but has more than one componenent are write-only. Texture views of const element types are always read-only, but if the element type is non-const, then the number of components in the element determines whether it is read-write (1 component) or write-only (multiple components). - -The element type of a `texture_view`—its const-ness and also the number of components it has—also plays a role in determining whether the view supports texture sampling, and how mipmap levels can be accessed: - -|Type|Components|Read|Write|Sampling|Mipmap access| -|----------|----------------|----------|-----------|--------------|-------------------| -|texture_view\|1, 2, 4|Yes|No (1)|Yes|Yes, indexable. Range is determined at instantiation.| -|Texture_view\|1

2, 4|Yes

No (2)|Yes

Yes|No (1)

No (1)|Yes, one level. Level is determined at instantiation.

Yes, one level. Level is determined at instantiation.| - -From this table, you can see that read-only texture views fully support the new capabilities in exchange for not being able to write to the view. Writable texture views are limited in that they can only access one mipmap level. Read-write texture views are even more specialized than writable ones, because they add the requirement that the element type of the texture view has only one component. Notice that sampling is not supported for writable texture views because it's a read-oriented operation. - -### Reading from Texture View Objects - -Reading unsampled texture data through a texture view is just like reading it from the texture itself, except that textures are captured by reference, whereas texture views are captured by value. The following two code examples demonstrate; first, by using `texture` only: - -```cpp -void write2ComponentTexture() { - texture text_data(16); - - parallel_for_each(extent<1>(16), [&] (index<1> idx) restrict(amp) { - tex_data.set(idx, int_2(1, 1)); - }); -} -``` - -And here is the same example, except it now uses the `texture_view` class: - -```cpp -void write2ComponentTexture() { - texture tex_data(16); - - texture_view tex_view(tex_data); - - parallel_for_each(extent<1>(16), [=] (index<1> idx) restrict(amp) { - tex_view.set(idx, int_2(1, 1)); - }); -} -``` - -Texture views whose elements are based on floating-point types—for example, float, float_2, or float_4—can also be read by using texture sampling to take advantage of hardware support for various filtering modes and addressing modes. C++ AMP supports the two filtering modes that are most common in compute scenarios—point-filtering (nearest-neighbor) and linear-filtering (weighted average)—and four addressing modes—wrapped, mirrored, clamped, and border. For more information about addressing modes, see [address_mode Enumeration](reference/concurrency-graphics-namespace-enums.md#address_mode). - -In addition to modes that C++ AMP supports directly, you can access other filtering modes and addressing modes of the underlying platform by using the interop APIs to adopt a texture sampler that was created by using the platform APIs directly. For example, Direct3D supports other filtering modes such as anisotropic filtering, and can apply a different addressing mode to each dimension of a texture. You could create a texture sampler whose coordinates are wrapped vertically, mirrored horizontally, and sampled with anisotropic filtering by using the Direct3D APIs, and then leverage the sampler in your C++ AMP code by using the `make_sampler` interop API. For more information, see [Texture Sampling in C++ AMP](/archive/blogs/nativeconcurrency/texture-sampling-in-c-amp) on the Parallel Programming in Native Code blog. - -Texture views also support the reading of mipmaps. Read-only texture views (those that have a const element type) offer the most flexibility because a range of mip-levels that is determined at instantiation can be dynamically sampled, and because elements that have 1, 2, or 4 components are supported. Read-write texture views that have elements that have one component also support mipmaps, but only of a level that's determined at instantiation. For more information, see [Texture with Mipmaps](/archive/blogs/nativeconcurrency/texture-with-mipmaps) on the Parallel Programming in Native Code blog. - -### Writing to Texture View Objects - -Use the [texture_view::get Method](reference/texture-view-class.md#get) to write to the underlying `texture` through the `texture_view` object. A texture view can be read-only, read-write, or write-only. For a texture view to be writable it must have an element type that is non-const; for a texture view to be readable and writable, its element type must also have only one component. Otherwise, the texture view is read-only. You can only access one mipmap level of a texture at a time through a texture view, and the level is specified when the view is instantiated. - -This example shows how to write to the second-most detailed mipmap level of a texture that has 4 mipmap levels. The most detailed mipmap level is level 0. - -```cpp -// Create a texture that has 4 mipmap levels : 16x16, 8x8, 4x4, 2x2 -texture tex(extent<2>(16, 16), 16U, 4); - -// Create a writable texture view to the second mipmap level :4x4 -texture_view w_view(tex, 1); - -parallel_for_each(w_view.extent, [=](index<2> idx) restrict(amp) -{ - w_view.set(idx, 123); -}); -``` - -## Interoperability - -The C++ AMP runtime supports interoperability between `texture` and the [ID3D11Texture1D interface](/windows/win32/api/d3d11/nn-d3d11-id3d11texture1d), between `texture` and the [ID3D11Texture2D interface](/windows/win32/api/d3d11/nn-d3d11-id3d11texture2d), and between `texture` and the [ID3D11Texture3D interface](/windows/win32/api/d3d11/nn-d3d11-id3d11texture3d). The [get_texture](reference/concurrency-graphics-direct3d-namespace-functions.md#get_texture) method takes a `texture` object and returns an `IUnknown` interface. The [make_texture](reference/concurrency-graphics-direct3d-namespace-functions.md#make_texture) method takes an `IUnknown` interface and an `accelerator_view` object and returns a `texture` object. - -## See also - -[double_2 Class](../../parallel/amp/reference/double-2-class.md)
-[double_3 Class](../../parallel/amp/reference/double-3-class.md)
-[double_4 Class](../../parallel/amp/reference/double-4-class.md)
-[float_2 Class](../../parallel/amp/reference/float-2-class.md)
-[float_3 Class](../../parallel/amp/reference/float-3-class.md)
-[float_4 Class](../../parallel/amp/reference/float-4-class.md)
-[int_2 Class](../../parallel/amp/reference/int-2-class.md)
-[int_3 Class](../../parallel/amp/reference/int-3-class.md)
-[int_4 Class](../../parallel/amp/reference/int-4-class.md)
-[norm_2 Class](../../parallel/amp/reference/norm-2-class.md)
-[norm_3 Class](../../parallel/amp/reference/norm-3-class.md)
-[norm_4 Class](../../parallel/amp/reference/norm-4-class.md)
-[short_vector Structure](../../parallel/amp/reference/short-vector-structure.md)
-[short_vector_traits Structure](../../parallel/amp/reference/short-vector-traits-structure.md)
-[uint_2 Class](../../parallel/amp/reference/uint-2-class.md)
-[uint_3 Class](../../parallel/amp/reference/uint-3-class.md)
-[uint_4 Class](../../parallel/amp/reference/uint-4-class.md)
-[unorm_2 Class](../../parallel/amp/reference/unorm-2-class.md)
-[unorm_3 Class](../../parallel/amp/reference/unorm-3-class.md)
-[unorm_4 Class](../../parallel/amp/reference/unorm-4-class.md) diff --git a/docs/parallel/amp/media/campc.PNG b/docs/parallel/amp/media/campc.PNG deleted file mode 100644 index adbcadddb1a0e348726cae98e5c4ecc326ec5ccb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15562 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%0A9tB2i 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 Kv{YQ*|Nj6A+*6NXo+8yxnC_jH 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 diff --git a/docs/parallel/amp/media/campgpubreakpoints.png b/docs/parallel/amp/media/campgpubreakpoints.png deleted file mode 100644 index c3195246a9ddd4be7031119db5d57b1de6c1fbe1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4115 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 AwEzGB diff --git a/docs/parallel/amp/media/campl.PNG b/docs/parallel/amp/media/campl.PNG deleted file mode 100644 index aa55a8b92d1436e707b44b4fed6bf096c6697a14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35513 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 diff --git a/docs/parallel/amp/media/campmatrixanontiled.PNG b/docs/parallel/amp/media/campmatrixanontiled.PNG deleted file mode 100644 index 9d614e606398f08d4c92a75cb1b99d29ca44625e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 919 zcmV;I18Dq-P)FMd&+1a>>R>gwlv zdwb{Rgwvs%F5l{-MhQH z&d$!;+uQp3`tb1Z-rnBG$Hd0Q!_Uvm=;!6f#=_&`-pb0x=jY_t*3;(Y;p*w<>FDO( z-P_{f-SqVI`}_O;{{8>}0RR90_4W3|9)14+00L)8L_t(|+U(iaa-%R524IpX+7%Lr z>VkVOY1^wo=KWtPlz3nl*~Y`s%+8Mg8()z5ET4cl9JIaCXm6hpaLRn7>#YzpEnSZe ze58lnw&{60pm?6y?uMDKrTX_DKRvlj{YNv@bG{4D51;zI zZpKHgHaxElM}u}NO8L-)=ck+1+zfNxgXh=F?ZSKGckp~io89a#;z<(gYO~mJ zj$E>}cr-!eWN`>;z}qOs;{%w6{>}4omG==Rb$Di2#ag7Rw;gF0VH>0d?CHL zW9v^|Qu$JW&hXSo7BWUfXF~`p^Gv=QXWwg|=d(_R8ApqQjr8A9ImR9A1nex&@^j|+ znPX)?sJhvYvCXb~&Xxafd2R?K*{>-V0)odZ#$3`NlNjokI)R-wWS$&O}!eL}_Ie*c><;tI&Mk(ftVVB}jo%#9Kw+~;QU)}@d<@r--(Aa7Z zMni47?sV=z(&?+VLQAhfN*&ECk tH(*)JO9OVruLo4W+)({$MqOS77y#_ag7ZeB+Km7J002ovPDHLkV1iM6^&$WO diff --git a/docs/parallel/amp/media/campmatrixapartitioned.PNG b/docs/parallel/amp/media/campmatrixapartitioned.PNG deleted file mode 100644 index c7ea08435eba5e24332d2c877e3aca1513e8f1e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1704 zcmV;Z23PrsP)`0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy+fYnYMSFXD$jHd#Dk%Yx3{;r zxVgr~!sh1Z*4Edvv#^<&n#ae;A0HnsE-qYLTn`TqO-)T}Yix>&iv9ilsHmy-_V)Gl z_5A$&_xJa>xVZWG`R?xS)YR1I=;-qD^5Wv+ySuyU>gvD0zuMZ`%F4>l&d%H0+uhyW z<>cY(>+AaZ`rh8&@bK{G=Hu(?=f=jvwY0J2<>AQ3#OUbdwzjg@*3-($#=E+==jY|m z&&|00960|Mm6u)~phg000GJ zNklzF3}~#sKYV@v z`R+yk?e4e3lgS$mrntuQ57AKU&(q^~lleH|I`}#mu0M|69-kbFny}e427Syx7`_>q?0?Jw(W)R1Z&N2+V7$PfTMj8ScQ9c1duA zJm2n5CS0n!{Ea`&Mwc%i%5zD%<>iJj^&1C8*TaM`+##fLT?&(nxPE#yd5y~(|2P}H z`W9UJ9Tr^ny&7DYn{kL3hHJQ9x5-5$s>3Dp@XQ+%(R1L!EPdZq<1p}ysE(~`E+Mlp zs=}qei#@x;cKt;prIMJbOUk6J3Kw8NP}nus(>%61wIyvuT#mn`%K-QVvjZY6kFQNu z#8nVu<+^N?OTGMtxwubA=UjwJ%9`b(OuD#pf2r}1-U91vAVpm+hdNOpvrd*7re!Xu zYFOE*zx42evSWWi8Xy50^%qy^&<7p+OU=26!bbf?NgRsZ`YTXNhj3#)1iHX6D~^Dr z!E19luF6DsQ|OC)SS(AJFcgjEL$YQ5Dyn)hbE5TiFM?=umugZ6o;fHHl75@>auF9r zQH}aAzJn3uzH%05my1fzcnCG;g)XSWWtAj|Nt_nbEpe%!!R{&;RB6GXL3J+Vnt6qI zm{ZbreQ3lYl*_hiT!33jP_T4jSuP-Jb8#cTxhQL^#AUlH(t1v?6BnV3RO9mFwTQ<7 zXGVepG;Z5fk76v5_6mfcz!gGAd!k2`;gW%bRk%o6DL6jBR^Enj+phYdzN7YX(LCTJ zcS`ib5?okj`Lj|{)0u7I(xF_all7cSs5*&xSys!(O?fV4g&OfeP~(|lVe}$Wo{P9@ z`pJY;2=h`!+3|&-wEXRIz=TdM%HYo93sN9l>uYLePW84Dc_SXC$gPtPiKG^nYDN`w z>@**u!s?8(@_H0XONMWtV>`4?9py0dnE-nhI(C%)7E_JO{)q-t^c=X5hildI$efx( z5AZbJJLGa0uDMPz1rU{}TjoNLbE80TT(C*+jpGWh?=lFKzd_eJHpv$$xhY_?KJNt^ zBrq1b!Y-wVXqJl<*Lc-+(FlXUMP2Knx;9VVloQX}q&AoIfMiulfkt)Fr!@$S>nvQC zOD`IIQN46)hKu78>&l(Dn6qYhwaS%SoHeBPhUtR3Q@uChJVLlpf4Kw!7Ip0}XDOLA z#f3u({LZuk%V`HCI^s@I1kpLPu$phaC&+FXe7)FoB8v_8+IxjYb}UH!1An)h&B z9a{jiK3ul7#l@|dK@$hgD-PqfX7T%Nu4k5aGY^_S|@ zw<~Y%SLcG%%Bw(SX3#d5F~(vIppHIoZ+z6{LAp?Bi7U{*ofsob`dM2guE3tQxreef zbWN^IEML!+>=y-YX#K28WZbr^&X#Ra<@R?FPxi(pI$K`&-`!uE_rVtIi>hnewiM?l z>E$%ND_39aJ6F%RX2axK*=JtjTtHuJ#Ew#E3( yg=dHW0000FMd&+1aK+8 zxVh@;=h)cQ0002T$H?a9=MN7LE-o(C*4G~&AN~FPnVFi3ii&%Cdt6*xYin$%sHyh$ z_VxAkO-)Vw{QS7MxcB$>`T6GS;^N}y=;*t+9>?-QDWy>dMN> zzrVlQ+S=RO+uq*Z@bK{Z`uf?})yBrd$j8LxgVO<;ojZb=jP+u z+1KOZ-sI!q;o#lE!oSMO#^~tf&(F*~JwEjG^!xk!{{H^||Nr&%_T_6u82|tR=1D|B zRCwC#nrD03Fc5&9QMDfO#sjnWNYW(TGp(@U|No=Pgak>r4FubA`sh9Yw!wORr#qdF zla>__Y4e_N5fUOX&3ep1>ZX}IKqO||Z1_R2C{=>MZ#3gIg_JV9|M=_6r`z+A<@UVQ z_ODV33}MEvS6t+Kw|D8s<~>A{6U2|sMX%jlLnQSECx~}ar`u}OlN2KMIYE4#4n{*i zzJ~}nLA>ox=Hp-kvET&pCX!|+3;qzN{2|T+MBWf8P?$3cP&2=&06>5DPzV_dT7U8o zb-|Vqgw&uKM4HD8uL1m8Lr6o%Kp^x;LqjMSAhgLdUezxIWgpjF6%L^zW@hRjtdVNbJOFLIPzc3PGUhR<7=$Mzw2FkVAgc%b z%)nrOp07DlUv}YScp9YfIV+hB*fmg5fB36zk*N!n-u&#e<0$xo+|{< za1gH1VH+VbFgR)SlBuAoA7fpj+JRne9n74~k4;p$*`j93NyLy2jM~Kwd z9MU_i5Dx?Cv=%U_HrAezXJ%zlXHAf)GcQeeFnh0ACd4Mn$cI7fU!TY^Y(Kv~ zk>?If)F(uJLewWjeM0O-1%!YQ^$Ag*5cLUBpLoIbiKonQM14X503HRw=1ml diff --git a/docs/parallel/amp/media/campmatrixbnontiled.PNG b/docs/parallel/amp/media/campmatrixbnontiled.PNG deleted file mode 100644 index 2c7633e1787587a5343ae957e79811464af3dbd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1002 zcmVgwz3>&C{z+uPgD&d$op%DcO} zzrVlT-QC*S+VJr3-rnB&`ufk$%*x8f-rd{R*3;$W;k~`P<>le$=Huq&+0v@ z;@;}%<>~3^$jHd_^z{4t`~Lp^|NsB>_4e5{m1+P00=G#-K~#9!?3ve=+At7?*;OP* za&MU4JKNKf1slKrL#^b#Ym*T0k#6`efa5{v(`Y<1$c=+wHIny$yNUpTEH{15YRYnu z0tB+(Y8#fd=O)WC+ATjKXt4SJeB!R(-GTAI2q=K;{|dS5c{IE;d^rYa{p1hu(!U=L zS`k3dY=7qu@VM)by6tAb0DR*ce}Jd;Vly@T7{L0%A7H#%&L>s^u>Z^-VCL<%uX}+2 z4R3dI1^{9rRTk_(RKBV}2Oj~rJqrL(>9ES;no!q1Uet7G+PD?~g|1vlrb1P&0b$qy zAFt}vS*prD5$3u}0DujE8m|ge?f_lBQ*w=zps`Uvmo5ST*-Vuo5IVZ9mz)hK5==+J zdH|qV9i1S=YRNYWknCQsRsd{QI{?DO<0YwDtpIUIm8H?0aY`Pbd*ZnGe*o~Y+dKil z;K*$qLR$h#X=5bG%m$nU;OGEIoxjDv`8o-p*GaZh6aY4U?C7D03edW7r^cy)H6e29w2PZ+COSR6cr?oj(8+481qaVy*RK_Unaze z)t8Xis#?g&q@$zUm`$%mGukF})!G1*xE*1^sycZd1~$r#SrGtIl8&)dXEkJV0F>7G z)QocD`*tAmkS-V?jw@jRxTl461DNzDHS;t8;%c?@18&rmVq}`MK4>n+ZhpTKYRh+%y}1EgaJ|+uc!rw_bVPEhl;2YMmcc9^}?wc;8P>(F Y0MvyOh6$Qbp#T5?07*qoM6N<$f~{BlHvj+t diff --git a/docs/parallel/amp/media/campmatrixbpartitioned.PNG b/docs/parallel/amp/media/campmatrixbpartitioned.PNG deleted file mode 100644 index 9e345d153e2024dceb32b84dbeb8b392b1442207..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1715 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 diff --git a/docs/parallel/amp/media/campmatrixproductnontiled.PNG b/docs/parallel/amp/media/campmatrixproductnontiled.PNG deleted file mode 100644 index 8632cfec78014d3b02b118e700c820df7311f4e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2971 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 diff --git a/docs/parallel/amp/media/campmatrixproductpartitioned.PNG b/docs/parallel/amp/media/campmatrixproductpartitioned.PNG deleted file mode 100644 index 82b5f65cba4249086d28b7582c4b9d6588e980b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1405 zcmV-@1%mpCP)FMd&+1bX$!ne1#;o#l4 zxVb$&J^%m!=H}&VB%%F4>SySv)j+TGpV z#>T_y>gvD0zs}Ci+uPgl@bKQ=-un9b&(F-t%EsQ^+v4Hg;o;ub*3;9^=jY|_ z?drX~yW`^D<>cYx;@dxb3G5s@Hj6#O0c& z>3G%;8K>#I=9;Io=_nr#Z@MnSVLqD93b292`uFd@{`>Le>zl62*DwF<@8%yY7;vSt zx27-hd1vokK1)lkX@9uB9lYP$ofcg4@u)vs9|s3J`=jyPa?SGoaDBSGIy=l~CD*V& zTt_Fz*B8Tz>!v?k=aa$di<|y&y_yVO_LA%MGuJjm&`m}WB$|!1Y!jjy0z$UTg#r+? z$w;X-7(_MBnytM202!8JFy_ujZj0+aC@LG1yI+=r990rjoz(ZK+vbXOz+kOORJ>HZ z*qNLRG@PE01yR&|P80-~m?XfmsTy+}M8y*rqpfoZVnS>PMusxun;bGxXhJTG^l(u_ zG%^Y=%*#=gksz8DPr#~uE`_x;p~e^o3p-%A-T-S}N*M-QmW0jcWC;#PZ9#Wb?cs#w zvYnOnwa67~g?Mam2+oRn_RCH#iHio^^o%^oLhf3Sqgt339AVqZMB7|Ah6xa}>dsat zCp1AYdBmDefo3TUVLsIu7k{>s>RPFpHQJ1esH}**R4Jc^5SbEX+)X@77%Ksx zRtRsf5MfBls9X=&lne32@_^4V^;GS#(BcvCtLYvhmGGyHn)h+Rrm%Y16J4Jpa0Lp? z<|(;EsAAI^mx5y()CP_NxriIUh27Q0R^%hNwvgql=Ms!#Tt#vc35*gaZwa1szgp#r zB*dI$W>)VLptlPtSF3L-wo#NAk1At2fjuClsm`dD$7;nC-il80wZ z*Qz=*M8COCxtlFLv`mDrdZiUr=S2NxF1k8N!ZxoxJ*sZ<*diB^EC441|D`AGwRIPd ztTDrjC)6Vzus8(AyjImIzgp#r5<-xzLC7LscP1BdV#_be5cng{&O$pCh@thWPWja) z7v<&rAaFC(tf6e(1qUgLZ7$_0my0Z<&U?M8PWja)mr`ZsVk1HG98z4`h>h~TvNAAt zVog)kDZg6fl66Mrt2OL9yBkoU2~SyR+s&G?vQl-+uQs_vAQcw^%B;lWHwcr74s9)k zwa+Ui9Mt?}Wu>|-zX(EM3taX0he9b@ChWfGOBE`jGNM`HEnrkeh(ElQs>||=+T@%5 zQQu<=uH*v+UFW{XE{>4h7SlhjZOAj%GuJcM7P)%*JM7Bu=6${AkpKVr+s98w=dZdh z=SSb2dnx15{?5VR@?pj@s-dpbNJ@X#QPXPu1jb3eNWxz4Q00000 LNkvXXu0mjfztQO1 diff --git a/docs/parallel/amp/media/campmatrixproducttiled.PNG b/docs/parallel/amp/media/campmatrixproducttiled.PNG deleted file mode 100644 index 4339e6523f4ad274493b41597f2d22b0e8eab174..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1622 zcmV-c2C4apP)FMdXxVhQc*|)d1Jv}}E z007w7)#2dXdwYAw$H?a9=MN7L=jPgwvdySv-l+rPiR-rnBu@bLQj`o_k?$j8Ll*wx|T-s0ij-Q3yZ;@{`z<>lnzF3_v+w1D*%F4#+=;r9><@EIQ`}_O;{{H{} z|Mm6ur6t9~000FANkl*becn>auWl}GuX`oseOoEN z9CWUp+_#`A@ z(BLWa4QP7J|4NAsLjHz{%#rZ8gjQ;n?TFyIuF#@p1*A#fU-3q!XlNUhbI;5jrHXXr zGnVa4B#%+n^)P1!HpM%lloW%-vWU^DXDr*fQK**EU@Pl;07+9pFj$T%rd)+NsH7A#=Pli_H!5-k@USP1^l|tmzKb^)R(*0^`;R-36s{ z3X%6ib-zT}Ui(`*iR8K-5*U{BDIJ~~mCq@aEuzpl%~?=`>?EqwiBFeTC?ztkUt7dS zRuvs?nNkUA3sYrcb?o3tbV}wmE23OwoyA(4lbV!7SZ~zsyoiXmN~viQ`GLYQTTeOF ztfbV2<=W)6l)%JOy(3Cy%FK&Zc$Njqsb(c5jJUK|=OU;kz4YDfh7v_Siv}N2m2&v! zL4X(Isb&?WbFZq%-|BwLH1-3MYG)K1QqB^acePl9sXHeIW2{zIbcAa&DHZWlbIHd> z5m-7kR7a?qQek1>G91dkR76#=8}&EaT5eh z%8Svej|K7TOI}4%DmR=j`Ldf#Y@=fzOhqKYYoV0pR1gP~2x4GtV7G$pMiUXS^7hnN zN(7?-f{j>EBq`<`hEHO+Yx2G#g~<=)OiB`?8J82*BueMm;LpVyJ|=;4cYtB(omk>s znwuUP9j!a(3^9{)Hs0G?<-%k)EZssmG?SHKNxjG>Q4$wga_?-MiNd*q1xw9|^svNF zDXCg?nBE^Yh7t+urm)yg#1TwqkP`@PBQRi*YUhKjp^!(USU1>WsZN~j73-hepXZDs z7Zbq2H^bz{VRDKequfpX@|`GGa-X(z0E7ULN6UX(~QhWcfwUoJ(tp?(?am)oIiWc~8}Ew+jE%MXYOnpeMk z4@!Y+*WI@g_-y5?8HUQQWVE&r z^RIt?{aM@O^-psB-skleWqA+1w6}`>`A6p6sl;C%fdfUj7qc0EXYF Uc?&*jr~m)}07*qoM6N<$f@U9M4FCWD diff --git a/docs/parallel/amp/media/camptiledgridexample.png b/docs/parallel/amp/media/camptiledgridexample.png deleted file mode 100644 index 8a82b2c08f98dba4d2c43c651800b1a0ba0b7907..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6789 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 diff --git a/docs/parallel/amp/media/usingtilesmatrix.PNG b/docs/parallel/amp/media/usingtilesmatrix.PNG deleted file mode 100644 index 0175a433a18b87395923c870febaa93991c83464..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8260 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 diff --git a/docs/parallel/amp/reference/accelerator-class.md b/docs/parallel/amp/reference/accelerator-class.md deleted file mode 100644 index e5f08b9b8a2..00000000000 --- a/docs/parallel/amp/reference/accelerator-class.md +++ /dev/null @@ -1,524 +0,0 @@ ---- -title: "accelerator Class" -description: "Learn more about: accelerator Class" -ms.date: 11/04/2016 -f1_keywords: ["AMPRT/accelerator", "AMPRT/Concurrency::accelerator::accelerator", "AMPRT/Concurrency::accelerator::create_view", "AMPRT/Concurrency::accelerator::get_all", "AMPRT/Concurrency::accelerator::get_auto_selection_view", "AMPRT/Concurrency::accelerator::get_dedicated_memory", "AMPRT/Concurrency::accelerator::get_default_cpu_access_type", "AMPRT/Concurrency::accelerator::get_default_view", "AMPRT/Concurrency::accelerator::get_description", "AMPRT/Concurrency::accelerator::get_device_path", "AMPRT/Concurrency::accelerator::get_has_display", "AMPRT/Concurrency::accelerator::get_is_debug", "AMPRT/Concurrency::accelerator::get_is_emulated", "AMPRT/Concurrency::accelerator::get_supports_cpu_shared_memory", "AMPRT/Concurrency::accelerator::get_supports_double_precision", "AMPRT/Concurrency::accelerator::get_supports_limited_double_precision", "AMPRT/Concurrency::accelerator::get_version", "AMPRT/Concurrency::accelerator::set_default", "AMPRT/Concurrency::accelerator::set_default_cpu_access_type", "AMPRT/Concurrency::accelerator::cpu_accelerator", "AMPRT/Concurrency::accelerator::dedicated_memory", "AMPRT/Concurrency::accelerator::default_accelerator", "AMPRT/Concurrency::accelerator::default_cpu_access_type", "AMPRT/Concurrency::accelerator::default_view", "AMPRT/Concurrency::accelerator::description", "AMPRT/Concurrency::accelerator::device_path", "AMPRT/Concurrency::accelerator::direct3d_ref", "AMPRT/Concurrency::accelerator::direct3d_warp", "AMPRT/Concurrency::accelerator::has_display", "AMPRT/Concurrency::accelerator::is_debug", "AMPRT/Concurrency::accelerator::is_emulated", "AMPRT/Concurrency::accelerator::supports_cpu_shared_memory", "AMPRT/Concurrency::accelerator::supports_double_precision", "AMPRT/Concurrency::accelerator::supports_limited_double_precision", "AMPRT/Concurrency::accelerator::version"] -helpviewer_keywords: ["accelerator class"] ---- -# accelerator Class - -An accelerator is a hardware capability that is optimized for data-parallel computing. An accelerator may be a device attached to a PCIe bus (such as a GPU), or it might be an extended instruction set on the main CPU. - -## Syntax - -```cpp -class accelerator; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[accelerator Constructor](#ctor)|Initializes a new instance of the `accelerator` class.| -|[~accelerator Destructor](#ctor)|Destroys the `accelerator` object.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[create_view](#create_view)|Creates and returns an `accelerator_view` object on this accelerator.| -|[get_all](#get_all)|Returns a vector of `accelerator` objects that represent all the available accelerators.| -|[get_auto_selection_view](#get_auto_selection_view)|Returns the auto-selection `accelerator_view`.| -|[get_dedicated_memory](#get_dedicated_memory)|Returns the dedicated memory for the `accelerator`, in kilobytes.| -|[get_default_cpu_access_type](#get_default_cpu_access_type)|Returns the default [access_type](concurrency-namespace-enums-amp.md#access_type) for buffers created on this accelerator.| -|[get_default_view](#get_default_view)|Returns the default `accelerator_view` object that is associated with the `accelerator`.| -|[get_description](#get_description)|Returns a short description of the `accelerator` device.| -|[get_device_path](#get_device_path)|Returns the path of the device.| -|[get_has_display](#get_has_display)|Determines whether the `accelerator` is attached to a display.| -|[get_is_debug](#get_is_debug)|Determines whether the `accelerator` has the DEBUG layer enabled for extensive error reporting.| -|[get_is_emulated](#get_is_emulated)|Determines whether the `accelerator` is emulated.| -|[get_supports_cpu_shared_memory](#get_supports_cpu_shared_memory)|Determines whether the `accelerator` supports shared memory| -|[get_supports_double_precision](#get_supports_double_precision)|Determines whether the `accelerator` is attached to a display.| -|[get_supports_limited_double_precision](#get_supports_limited_double_precision)|Determines whether the `accelerator` has limited support for double-precision math.| -|[get_version](#get_version)|Returns the version of the `accelerator`.| -|[set_default](#set_default)|Returns the path of the default accelerator.| -|[set_default_cpu_access_type](#set_default_cpu_access_type)|Sets the default CPU [access_type](concurrency-namespace-enums-amp.md#access_type) for arrays and implicit memory allocations made on this `accelerator`.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[operator!=](#operator_neq)|Compares this `accelerator` object with another and returns **`false`** if they are the same; otherwise, returns **`true`**.| -|[operator=](#operator_eq)|Copies the contents of the specified `accelerator` object to this one.| -|[operator==](#operator_eq_eq)|Compares this `accelerator` object with another and returns **`true`** if they are the same; otherwise, returns **`false`**.| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|[cpu_accelerator](#cpu_accelerator)|Gets a string constant for the CPU `accelerator`.| -|[dedicated_memory](#dedicated_memory)|Gets the dedicated memory for the `accelerator`, in kilobytes.| -|[default_accelerator](#default_accelerator)|Gets a string constant for the default `accelerator`.| -|[default_cpu_access_type](#default_cpu_access_type)|Gets or sets the default CPU [access_type](concurrency-namespace-enums-amp.md#access_type) for arrays and implicit memory allocations made on this `accelerator`.| -|[default_view](#default_view)|Gets the default `accelerator_view` object that is associated with the `accelerator`.| -|[description](#description)|Gets a short description of the `accelerator` device.| -|[device_path](#device_path)|Gets the path of the device.| -|[direct3d_ref](#direct3d_ref)|Gets a string constant for a Direct3D reference `accelerator`.| -|[direct3d_warp](#direct3d_warp)|Gets the string constant for an `accelerator` object that you can use for executing C++ AMP code on multi-core CPUs that use Streaming SIMD Extensions (SSE).| -|[has_display](#has_display)|Gets a Boolean value that indicates whether the `accelerator` is attached to a display.| -|[is_debug](#is_debug)|Indicates whether the `accelerator` has the DEBUG layer enabled for extensive error reporting.| -|[is_emulated](#is_emulated)|Indicates whether the `accelerator` is emulated.| -|[supports_cpu_shared_memory](#supports_cpu_shared_memory)|Indicates whether the `accelerator` supports shared memory.| -|[supports_double_precision](#supports_double_precision)|Indicates whether the accelerator supports double-precision math.| -|[supports_limited_double_precision](#supports_limited_double_precision)|Indicates whether the accelerator has limited support for double-precision math.| -|[version](#version)|Gets the version of the `accelerator`.| - -## Inheritance Hierarchy - -`accelerator` - -## Remarks - -An accelerator is a hardware capability that is optimized for data-parallel computing. An accelerator is often a discrete GPU, but it can also be a virtual host-side entity such as a DirectX REF device, a WARP (a CPU-side device that is accelerated by means of SSE instructions), or the CPU itself. - -You can construct an `accelerator` object by enumerating the available devices, or by getting the default device, the reference device, or the WARP device. - -## Requirements - -**Header:** amprt.h - -**Namespace:** Concurrency - -##
~accelerator - -Destroys the `accelerator` object. - -```cpp -~accelerator(); -``` - -### Return Value - -## accelerator - -Initializes a new instance of the [accelerator class](accelerator-class.md). - -```cpp -accelerator(); - -explicit accelerator(const std::wstring& _Device_path); - -accelerator(const accelerator& _Other); -``` - -### Parameters - -*_Device_path*
-The path of the physical device. - -*_Other*
-The accelerator to copy. - -## cpu_accelerator - -Gets a string constant for the CPU accelerator. - -```cpp -static const wchar_t cpu_accelerator[]; -``` - -## create_view - -Creates and returns an `accelerator_view` object on this accelerator, using the specified queuing mode. When the queuing mode is not specified, the new `accelerator_view` uses the [queuing_mode::immediate](concurrency-namespace-enums-amp.md#queuing_mode) queuing mode. - -```cpp -accelerator_view create_view(queuing_mode qmode = queuing_mode_automatic); -``` - -### Parameters - -*qmode*
-The queuing mode. - -### Return Value - -A new `accelerator_view` object on this accelerator, using the specified queuing mode. - -## dedicated_memory - -Gets the dedicated memory for the `accelerator`, in kilobytes. - -```cpp -__declspec(property(get= get_dedicated_memory)) size_t dedicated_memory; -``` - -## default_accelerator - -Gets a string constant for the default `accelerator`. - -```cpp -static const wchar_t default_accelerator[]; -``` - -## default_cpu_access_type - -The default cpu [access_type](concurrency-namespace-enums-amp.md#access_type) for arrays and implicit memory allocations made on this `accelerator`. - -```cpp -__declspec(property(get= get_default_cpu_access_type)) access_type default_cpu_access_type; -``` - -## default_view - -Gets the default accelerator view that is associated with the `accelerator`. - -```cpp -__declspec(property(get= get_default_view)) accelerator_view default_view; -``` - -## description - -Gets a short description of the `accelerator` device. - -```cpp -__declspec(property(get= get_description)) std::wstring description; -``` - -## device_path - -Gets the path of the accelerator. The path is unique on the system. - -```cpp -__declspec(property(get= get_device_path)) std::wstring device_path; -``` - -## direct3d_ref - -Gets a string constant for a Direct3D reference accelerator. - -```cpp -static const wchar_t direct3d_ref[]; -``` - -## direct3d_warp - -Gets the string constant for an `accelerator` object that you can use for executing your C++ AMP code on multi-core CPUs using Streaming SIMD Extensions (SSE). - -```cpp -static const wchar_t direct3d_warp[]; -``` - -## get_all - -Returns a vector of `accelerator` objects that represent all the available accelerators. - -```cpp -static inline std::vector get_all(); -``` - -### Return Value - -The vector of available accelerators - -## get_auto_selection_view - -Returns the auto selection accelerator_view, which when specified as the parallel_for_each target results in the target accelerator_view for executing the parallel_for_each kernel to be automatically selected by the runtime. For all other purposes, the accelerator_view returned by this method is the same as the default accelerator_view of the default accelerator - -```cpp -static accelerator_view __cdecl get_auto_selection_view(); -``` - -### Return Value - -The auto selection accelerator_view. - -## get_dedicated_memory - -Returns the dedicated memory for the `accelerator`, in kilobytes. - -```cpp -size_t get_dedicated_memory() const; -``` - -### Return Value - -The dedicated memory for the `accelerator`, in kilobytes. - -## get_default_cpu_access_type - -Gets the default cpu access_type for buffers created on this accelerator - -```cpp -access_type get_default_cpu_access_type() const; -``` - -### Return Value - -The default cpu access_type for buffers created on this accelerator. - -## get_default_view - -Returns the default `accelerator_view` object that is associated with the `accelerator`. - -```cpp -accelerator_view get_default_view() const; -``` - -### Return Value - -The default `accelerator_view` object that is associated with the `accelerator`. - -## get_description - -Returns a short description of the `accelerator` device. - -```cpp -std::wstring get_description() const; -``` - -### Return Value - -A short description of the `accelerator` device. - -## get_device_path - -Returns the path of the accelerator. The path is unique on the system. - -```cpp -std::wstring get_device_path() const; -``` - -### Return Value - -The system-wide unique device instance path. - -## get_has_display - -Returns a Boolean value that indicates whether the `accelerator` can output to a display. - -```cpp -bool get_has_display() const; -``` - -### Return Value - -**`true`** if the `accelerator` can output to a display; otherwise, **`false`**. - -## get_is_debug - -Determines whether the `accelerator` has the DEBUG layer enabled for extensive error reporting. - -```cpp -bool get_is_debug() const; -``` - -### Return Value - -**`true`** if the `accelerator` has the DEBUG layer enabled for extensive error reporting. Otherwise, **`false`**. - -## get_is_emulated - -Determines whether the `accelerator` is emulated. - -```cpp -bool get_is_emulated() const; -``` - -### Return Value - -**`true`** if the `accelerator` is emulated. Otherwise, **`false`**. - -## get_supports_cpu_shared_memory - -Returns a boolean value indicating whether the accelerator supports memory accessible both by the accelerator and the CPU. - -```cpp -bool get_supports_cpu_shared_memory() const; -``` - -### Return Value - -**`true`** if the accelerator supports CPU shared memory; otherwise, **`false`**. - -## get_supports_double_precision - -Returns a Boolean value that indicates whether the accelerator supports double precision math, including fused multiply add (FMA), division, reciprocal, and casting between **`int`** and **`double`** - -```cpp -bool get_supports_double_precision() const; -``` - -### Return Value - -**`true`** if the accelerator supports double precision math; otherwise, **`false`**. - -## get_supports_limited_double_precision - -Returns a Boolean value that indicates whether the accelerator has limited support for double precision math. If the accelerator has only limited support, then fused multiply add (FMA), division, reciprocal, and casting between **`int`** and **`double`** are not supported. - -```cpp -bool get_supports_limited_double_precision() const; -``` - -### Return Value - -**`true`** if the accelerator has limited support for double precision math; otherwise, **`false`**. - -## get_version - -Returns the version of the `accelerator`. - -```cpp -unsigned int get_version() const; -``` - -### Return Value - -The version of the `accelerator`. - -## has_display - -Gets a Boolean value that indicates whether the `accelerator` can output to a display. - -```cpp -__declspec(property(get= get_has_display)) bool has_display; -``` - -## is_debug - -Gets a Boolean value that indicates whether the `accelerator` has the DEBUG layer enabled for extensive error reporting. - -```cpp -__declspec(property(get= get_is_debug)) bool is_debug; -``` - -## is_emulated - -Gets a Boolean value that indicates whether the `accelerator` is emulated. - -```cpp -__declspec(property(get= get_is_emulated)) bool is_emulated; -``` - -## operator!= - -Compares this `accelerator` object with another and returns **`false`** if they are the same; otherwise, returns **`true`**. - -```cpp -bool operator!= (const accelerator& _Other) const; -``` - -### Parameters - -*_Other*
-The `accelerator` object to compare with this one. - -### Return Value - -**`false`** if the two `accelerator` objects are the same; otherwise, **`true`**. - -## operator= - -Copies the contents of the specified `accelerator` object to this one. - -```cpp -accelerator& operator= (const accelerator& _Other); -``` - -### Parameters - -*_Other*
-The `accelerator` object to copy from. - -### Return Value - -A reference to this `accelerator` object. - -## operator== - -Compares this `accelerator` object with another and returns **`true`** if they are the same; otherwise, returns **`false`**. - -```cpp -bool operator== (const accelerator& _Other) const; -``` - -### Parameters - -*_Other*
-The `accelerator` object to compare with this one. - -### Return Value - -**`true`** if the other `accelerator` object is same as this `accelerator` object; otherwise, **`false`**. - -## set_default - -Sets the default accelerator to be used for any operation that implicitly uses the default accelerator. This method only succeeds if the runtime selected default accelerator has not already been used in an operation that implicitly uses the default accelerator - -```cpp -static inline bool set_default(std::wstring _Path); -``` - -### Parameters - -*_Path*
-The path to the accelerator. - -### Return Value - -**`true`** if the call succeeds at setting the default accelerator. Otherwise, **`false`**. - -## set_default_cpu_access_type - -Set the default cpu access_type for arrays created on this accelerator or for implicit memory allocations as part of array_views accessed on this accelerator. This method only succeeds if the default_cpu_access_type for the accelerator has not already been overridden by a previous call to this method and the runtime selected default_cpu_access_type for this accelerator has not yet been used for allocating an array or for an implicit memory allocation backing an array_view accessed on this accelerator. - -```cpp -bool set_default_cpu_access_type(access_type _Default_cpu_access_type); -``` - -### Parameters - -*_Default_cpu_access_type*
-The default cpu access_type to be used for array/array_view memory allocations on this accelerator. - -### Return Value - -A boolean value indicating if the default cpu access_type for the accelerator was successfully set. - -## supports_cpu_shared_memory - -Gets a Boolean value indicating whether the `accelerator` supports shared memory. - -```cpp -__declspec(property(get= get_supports_cpu_shared_memory)) bool supports_cpu_shared_memory; -``` - -## supports_double_precision - -Gets a Boolean value that indicates whether the accelerator supports double precision math. - -```cpp -__declspec(property(get= get_supports_double_precision)) bool supports_double_precision; -``` - -## supports_limited_double_precision - -Gets a Boolean value that indicates whether the accelerator has limited support for double precision math. If the accelerator has only limited support, then fused multiply add (FMA), division, reciprocal, and casting between **`int`** and **`double`** are not supported. - -```cpp -__declspec(property(get= get_supports_limited_double_precision)) bool supports_limited_double_precision; -``` - -## version - -Gets the version of the `accelerator`. - -```cpp -__declspec(property(get= get_version)) unsigned int version; -``` - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/accelerator-view-class.md b/docs/parallel/amp/reference/accelerator-view-class.md deleted file mode 100644 index 53208aae6bf..00000000000 --- a/docs/parallel/amp/reference/accelerator-view-class.md +++ /dev/null @@ -1,327 +0,0 @@ ---- -description: "Learn more about: accelerator_view Class" -title: "accelerator_view Class" -ms.date: "03/27/2019" -f1_keywords: ["accelerator_view", "AMPRT/accelerator_view", "AMPRT/Concurrency::accelerator_view::accelerator_view", "AMPRT/Concurrency::accelerator_view::create_marker", "AMPRT/Concurrency::accelerator_view::flush", "AMPRT/Concurrency::accelerator_view::get_accelerator", "AMPRT/Concurrency::accelerator_view::get_is_auto_selection", "AMPRT/Concurrency::accelerator_view::get_is_debug", "AMPRT/Concurrency::accelerator_view::get_queuing_mode", "AMPRT/Concurrency::accelerator_view::get_version", "AMPRT/Concurrency::accelerator_view::wait", "AMPRT/Concurrency::accelerator_view::accelerator", "AMPRT/Concurrency::accelerator_view::is_auto_selection", "AMPRT/Concurrency::accelerator_view::is_debug", "AMPRT/Concurrency::accelerator_view::queuing_mode", "AMPRT/Concurrency::accelerator_view::version"] -helpviewer_keywords: ["accelerator_view class"] -ms.assetid: 9f298c21-bf62-46e0-88b8-01c5c78ef144 ---- -# accelerator_view Class - -Represents a virtual device abstraction on a C++ AMP data-parallel accelerator. - -## Syntax - -```cpp -class accelerator_view; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[accelerator_view Constructor](#ctor)|Initializes a new instance of the `accelerator_view` class.| -|[~accelerator_view Destructor](#dtor)|Destroys the `accelerator_view` object.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[create_marker](#create_marker)|Returns a future to track the completion of all commands submitted so far to this `accelerator_view` object.| -|[flush](#flush)|Submits all pending commands queued to the `accelerator_view` object to the accelerator for execution.| -|[get_accelerator](#get_accelerator)|Returns the `accelerator` object for the `accelerator_view` object.| -|[get_is_auto_selection](#get_is_auto_selection)|Returns a Boolean value that indicates whether the runtime will automatically select an appropriate accelerator when the `accelerator_view` object is passed to a [parallel_for_each](concurrency-namespace-functions-amp.md#parallel_for_each).| -|[get_is_debug](#get_is_debug)|Returns a Boolean value that indicates whether the `accelerator_view` object has the DEBUG layer enabled for extensive error reporting.| -|[get_queuing_mode](#get_queuing_mode)|Returns the queuing mode for the `accelerator_view` object.| -|[get_version](#get_version)|Returns the version of the `accelerator_view`.| -|[wait](#wait)|Waits for all commands submitted to the `accelerator_view` object to finish.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[operator!=](#operator_neq)|Compares this `accelerator_view` object with another and returns **`false`** if they are the same; otherwise, returns **`true`**.| -|[operator=](#operator_eq)|Copies the contents of the specified `accelerator_view` object into this one.| -|[operator==](#operator_eq_eq)|Compares this `accelerator_view` object with another and returns **`true`** if they are the same; otherwise, returns **`false`**.| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|[accelerator](#accelerator)|Gets the `accelerator` object for the `accelerator_view` object.| -|[is_auto_selection](#is_auto_selection)|Gets a Boolean value that indicates whether the runtime will automatically select an appropriate accelerator when the `accelerator_view` object is passed to a [parallel_for_each](concurrency-namespace-functions-amp.md#parallel_for_each).| -|[is_debug](#is_debug)|Gets a Boolean value that indicates whether the `accelerator_view` object has the DEBUG layer enabled for extensive error reporting.| -|[queuing_mode](#queuing_mode)|Gets the queuing mode for the `accelerator_view` object.| -|[version](#version)|Gets the version of the accelerator.| - -## Inheritance Hierarchy - -`accelerator_view` - -### Remarks - -An `accelerator_view` object represents a logical, isolated view of an accelerator. A single physical compute device can have many logical, isolated `accelerator_view` objects. Each accelerator has a default `accelerator_view` object. Additional `accelerator_view` objects can be created. - -Physical devices can be shared among many client threads. Client threads can cooperatively use the same `accelerator_view` object of an accelerator, or each client can communicate with a compute device via an independent `accelerator_view` object for isolation from other client threads. - -An `accelerator_view` object can have one of two [queuing_mode Enumeration](concurrency-namespace-enums-amp.md#queuing_mode) states. If the queuing mode is `immediate`, commands like `copy` and `parallel_for_each` are sent to the corresponding accelerator device as soon as they return to the caller. If the queuing mode is `deferred`, such commands are queued up on a command queue that corresponds to the `accelerator_view` object. Commands are not actually sent to the device until `flush()` is called. - -## Requirements - -**Header:** amprt.h - -**Namespace:** Concurrency - -## accelerator - -Gets the accelerator object for the accelerator_view object. - -### Syntax - -```cpp -__declspec(property(get= get_accelerator)) Concurrency::accelerator accelerator; -``` - -## accelerator_view - -Initializes a new instance of the accelerator_view class by copying an existing `accelerator_view` object. - -### Syntax - -```cpp -accelerator_view( const accelerator_view & other ); -``` - -### Parameters - -*other*
-The `accelerator_view` object to copy. - -## create_marker - -Returns a future to track the completion of all commands submitted so far to this `accelerator_view` object. - -### Syntax - -```cpp -concurrency::completion_future create_marker(); -``` - -### Return Value - -A future to track the completion of all commands submitted so far to this `accelerator_view` object. - -## flush - -Submits all pending commands queued to the accelerator_view object to the accelerator for execution. - -### Syntax - -```cpp -void flush(); -``` - -### Return Value - -Returns **`void`**. - -## get_accelerator - -Returns the accelerator object for the accelerator_view object. - -### Syntax - -```cpp -accelerator get_accelerator() const; -``` - -### Return Value - -The accelerator object for the accelerator_view object. - -## get_is_auto_selection - -Returns a Boolean value that indicates whether the runtime will automatically select an appropriate accelerator when the accelerator_view is passed to a [parallel_for_each](concurrency-namespace-functions-amp.md#parallel_for_each). - -### Syntax - -```cpp -bool get_is_auto_selection() const; -``` - -### Return Value - -**`true`** if the runtime will automatically select an appropriate accelerator; otherwise, **`false`**. - -## get_is_debug - -Returns a Boolean value that indicates whether the accelerator_view object has the DEBUG layer enabled for extensive error reporting. - -### Syntax - -```cpp -bool get_is_debug() const; -``` - -### Return Value - -A Boolean value that indicates whether the `accelerator_view` object has the DEBUG layer enabled for extensive error reporting. - -## get_queuing_mode - -Returns the queuing mode for the accelerator_view object. - -### Syntax - -```cpp -queuing_mode get_queuing_mode() const; -``` - -### Return Value - -The queuing mode for the `accelerator_view` object. - -## get_version - -Returns the version of the accelerator_view. - -### Syntax - -```cpp -unsigned int get_version() const; -``` - -### Return Value - -The version of the `accelerator_view`. - -## is_auto_selection - -Gets a Boolean value that indicates whether the runtime will automatically select an appropriate accelerator when the accelerator_view is passed to a [parallel_for_each](concurrency-namespace-functions-amp.md#parallel_for_each). - -### Syntax - -```cpp -__declspec(property(get= get_is_auto_selection)) bool is_auto_selection; -``` - -## is_debug - -Gets a Boolean value that indicates whether the accelerator_view object has the DEBUG layer enabled for extensive error reporting. - -### Syntax - -```cpp -__declspec(property(get= get_is_debug)) bool is_debug; -``` - -## operator!= - -Compares this accelerator_view object with another and returns **`false`** if they are the same; otherwise, returns **`true`**. - -### Syntax - -```cpp -bool operator!= ( const accelerator_view & other ) const; -``` - -### Parameters - -*other*
-The `accelerator_view` object to compare with this one. - -### Return Value - -**`false`** if the two objects are the same; otherwise, **`true`**. - -## operator= - -Copies the contents of the specified accelerator_view object into this one. - -### Syntax - -```cpp -accelerator_view & operator= ( const accelerator_view & other ); -``` - -### Parameters - -*other*
-The `accelerator_view` object to copy from. - -### Return Value - -A reference to the modified `accelerator_view` object. - -## operator== - -Compares this accelerator_view object with another and returns **`true`** if they are the same; otherwise, returns **`false`**. - -### Syntax - -```cpp -bool operator== ( const accelerator_view & other ) const; -``` - -### Parameters - -*other*
-The `accelerator_view` object to compare with this one. - -### Return Value - -**`true`** if the two objects are the same; otherwise, **`false`**. - -## queuing_mode - -Gets the queuing mode for the accelerator_view object. - -### Syntax - -```cpp -__declspec(property(get= get_queuing_mode)) Concurrency::queuing_mode queuing_mode; -``` - -## version - -Gets the version of the accelerator_view. - -### Syntax - -```cpp -__declspec(property(get= get_version)) unsigned int version; -``` - -## wait - -Waits for all commands submitted to the accelerator_view object to finish. - -### Syntax - -```cpp -void wait(); -``` - -### Return Value - -Returns **`void`**. - -### Remarks - -If the [queuing_mode](concurrency-namespace-enums-amp.md#queuing_mode) is `immediate`, this method returns immediately without blocking. - -## ~accelerator_view - -Destroys the accelerator_view object. - -### Syntax - -```cpp -~accelerator_view(); -``` - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/accelerator-view-removed-class.md b/docs/parallel/amp/reference/accelerator-view-removed-class.md deleted file mode 100644 index f5487950ff2..00000000000 --- a/docs/parallel/amp/reference/accelerator-view-removed-class.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -description: "Learn more about: accelerator_view_removed Class" -title: "accelerator_view_removed Class" -ms.date: "03/27/2019" -f1_keywords: ["accelerator_view_removed", "AMPRT/accelerator_view_removed", "AMPRT/Concurrency::accelerator_view_removed::accelerator_view_removed", "AMPRT/Concurrency::accelerator_view_removed::get_view_removed_reason"] -helpviewer_keywords: ["AMPRT/Concurrency::accelerator_view_removed::accelerator_view_removed Class"] -ms.assetid: 262446de-311c-454e-a5ed-e2aaced0d88a ---- -# accelerator_view_removed Class - -The exception that is thrown when an underlying DirectX call fails due to the Windows timeout detection and recovery mechanism. - -## Syntax - -```cpp -class accelerator_view_removed : public runtime_exception; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[accelerator_view_removed Constructor](#ctor)|Initializes a new instance of the `accelerator_view_removed` class.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[get_view_removed_reason](#get_view_removed_reason)|Returns an HRESULT error code indicating the cause of the `accelerator_view` object's removal.| - -## Inheritance Hierarchy - -`exception` - -`runtime_exception` - -`out_of_memory` - -## Requirements - -**Header:** amprt.h - -**Namespace:** Concurrency - -## accelerator_view_removed - -Initializes a new instance of the [accelerator_view_removed](accelerator-view-removed-class.md) class. - -### Syntax - -```cpp -explicit accelerator_view_removed( - const char * message, - HRESULT view_removed_reason ) throw(); - -explicit accelerator_view_removed( - HRESULT view_removed_reason ) throw(); -``` - -### Parameters - -*message*
-A description of the error. - -*view_removed_reason*
-An HRESULT error code indicating the cause of removal of the `accelerator_view` object. - -### Return Value - -A new instance of the `accelerator_view_removed` class. - -## get_view_removed_reason - -Returns an HRESULT error code indicating the cause of the `accelerator_view` object's removal. - -### Syntax - -```cpp -HRESULT get_view_removed_reason() const throw(); -``` - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/adopt-d3d-access-lock-t-structure.md b/docs/parallel/amp/reference/adopt-d3d-access-lock-t-structure.md deleted file mode 100644 index 9c6baf74c4d..00000000000 --- a/docs/parallel/amp/reference/adopt-d3d-access-lock-t-structure.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -description: "Learn more about: adopt_d3d_access_lock_t Structure" -title: "adopt_d3d_access_lock_t Structure" -ms.date: "11/04/2016" -f1_keywords: ["amprt/concurrency::direct3d::adopt_d3d_access_lock_t"] -ms.assetid: ef10bb06-88d6-420b-bb81-35895b2e02e6 ---- -# adopt_d3d_access_lock_t Structure - -Tag type to indicate the D3D access lock should be adopted rather than acquired. - -## Syntax - -```cpp -struct adopt_d3d_access_lock_t; -``` - -## Members - -## Inheritance Hierarchy - -`adopt_d3d_access_lock_t` - -## Requirements - -**Header:** amprt.h - -**Namespace:** concurrency::direct3d - -## See also - -[Concurrency::direct3d Namespace](concurrency-direct3d-namespace.md) diff --git a/docs/parallel/amp/reference/array-class.md b/docs/parallel/amp/reference/array-class.md deleted file mode 100644 index 5fd455d1f15..00000000000 --- a/docs/parallel/amp/reference/array-class.md +++ /dev/null @@ -1,816 +0,0 @@ ---- -title: "array Class" -description: "Learn more about: array Class" -ms.date: 11/04/2016 -f1_keywords: ["array", "AMP/array", "AMP/Concurrency::array::array", "AMP/Concurrency::array::copy_to", "AMP/Concurrency::array::data", "AMP/Concurrency::array::get_accelerator_view", "AMP/Concurrency::array::get_associated_accelerator_view", "AMP/Concurrency::array::get_cpu_access_type", "AMP/Concurrency::array::get_extent", "AMP/Concurrency::array::reinterpret_as", "AMP/Concurrency::array::section", "AMP/Concurrency::array::view_as", "AMP/Concurrency::array::rank", "AMP/Concurrency::array::accelerator_view", "AMP/Concurrency::array::associated_accelerator_view", "AMP/Concurrency::array::cpu_access_type", "AMP/Concurrency::array::extent"] -helpviewer_keywords: ["array class"] ---- -# array Class - -Represents a data container used to move data to an accelerator. - -## Syntax - -```cpp -template -friend class array; -``` - -### Parameters - -*value_type*
-The element type of the data. - -*_Rank*
-The rank of the array. - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[array Constructor](#ctor)|Initializes a new instance of the `array` class.| -|[~array Destructor](#dtor)|Destroys the `array` object.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[copy_to](#copy_to)|Copies the contents of the array to another array.| -|[data](#data)|Returns a pointer to the raw data of the array.| -|[get_accelerator_view](#get_accelerator_view)|Returns the [accelerator_view](accelerator-view-class.md) object that represents the location where the array is allocated. This property can be accessed only on the CPU.| -|[get_associated_accelerator_view](#get_associated_accelerator_view)|Gets the second [accelerator_view](accelerator-view-class.md) object that is passed as a parameter when a staging constructor is called to instantiate the `array` object.| -|[get_cpu_access_type](#get_cpu_access_type)|Returns the [access_type](concurrency-namespace-enums-amp.md#access_type) of the array. This method can be accessed only on the CPU.| -|[get_extent](#get_extent)|Returns the [extent](extent-class.md) object of the array.| -|[reinterpret_as](#reinterpret_as)|Returns a one-dimensional array that contains all the elements in the `array` object.| -|[section](#section)|Returns a subsection of the `array` object that is at the specified origin and, optionally, that has the specified extent.| -|[view_as](#view_as)|Returns an [array_view](array-view-class.md) object that is constructed from the `array` object.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[`operator std::vector`](#operator_vec)|Uses `copy(*this, vector)` to implicitly convert the array to a [std::vector](../../../standard-library/vector-class.md) object.| -|[operator()](#operator_call)|Returns the element value that is specified by the parameters.| -|[operator\[\]](#operator_at)|Returns the element that is at the specified index.| -|[operator=](#operator_eq)|Copies the contents of the specified `array` object into this one.| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[rank Constant](#rank)|Stores the rank of the array.| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|[accelerator_view](#accelerator_view)|Gets the [accelerator_view](accelerator-view-class.md) object that represents the location where the array is allocated. This property can be accessed only on the CPU.| -|[associated_accelerator_view](#associated_accelerator_view)|Gets the second [accelerator_view](accelerator-view-class.md) object that is passed as a parameter when a staging constructor is called to instantiate the `array` object.| -|[cpu_access_type](#cpu_access_type)|Gets the [access_type](concurrency-namespace-enums-amp.md#access_type) that represents how the CPU can access the storage of the array.| -|[extent](#extent)|Gets the extent that defines the shape of the array.| - -## Remarks - -The type `array` represents a dense and regular (not jagged) *N*-dimensional array that is located in a specific location, such as an accelerator or the CPU. The data type of the elements in the array is `T`, which must be of a type that is compatible with the target accelerator. Although the rank, `N`, (of the array is determined statically and is part of the type, the extent of the array is determined by the runtime and is expressed by using class `extent`. - -An array can have any number of dimensions, although some functionality is specialized for `array` objects with rank one, two, and three. If you omit the dimension argument, the default is 1. - -Array data is laid out contiguously in memory. Elements that differ by one in the least significant dimension are adjacent in memory. - -Arrays are logically considered to be value types, because when an array is copied to another array, a deep copy is performed. Two arrays never point to the same data. - -The `array` type is used in several scenarios: - -- As a data container that can be used in computations on an accelerator. - -- As a data container to hold memory on the host CPU (that can be used to copy to and from other arrays). - -- As a staging object to act as a fast intermediary in host-to-device copies. - -## Inheritance Hierarchy - -`array` - -## Requirements - -**Header:** amp.h - -**Namespace:** Concurrency - -## ~array - -Destroys the `array` object. - -```cpp -~array() restrict(cpu); -``` - -## accelerator_view - -Gets the [accelerator_view](accelerator-view-class.md) object that represents the location where the array is allocated. This property can be accessed only on the CPU. - -```cpp -__declspec(property(get= get_accelerator_view)) Concurrency::accelerator_view accelerator_view; -``` - -## array - -Initializes a new instance of the [array class](array-class.md). There is no default constructor for `array`. All constructors are run on the CPU only. They cannot be executed on a Direct3D target. - -```cpp -explicit array( - const Concurrency::extent<_Rank>& _Extent) restrict(cpu); - -explicit array( - int _E0) restrict(cpu); - -explicit array( - int _E0, - int _E1) restrict(cpu); - -explicit array( - int _E0, - int _E1, - int _E2) restrict(cpu); - -array( - const Concurrency::extent<_Rank>& _Extent, - Concurrency::accelerator_view _Av - access_type _Cpu_access_type = access_type_auto) restrict(cpu); - -array( - int _E0, - Concurrency::accelerator_view _Av - access_type _Cpu_access_type = access_type_auto) restrict(cpu); - -array( - int _E0, - int _E1, - Concurrency::accelerator_view _Av - access_type _Cpu_access_type = access_type_auto) restrict(cpu); - -array( - int _E0, - int _E1, - int _E2, - Concurrency::accelerator_view _Av - access_type _Cpu_access_type = access_type_auto) restrict(cpu); - -array( - const Concurrency::extent<_Rank>& _Extent, - Concurrency::accelerator_view _Av, - Concurrency::accelerator_view _Associated_Av) restrict(cpu); - -array( - int _E0, - accelerator_view _Av, - Concurrency::accelerator_view _Associated_Av) restrict(cpu); - -array( - int _E0, - int _E1, - Concurrency::accelerator_view _Av, - Concurrency::accelerator_view _Associated_Av) restrict(cpu); - -array( - int _E0, - int _E1, - int _E2, - Concurrency::accelerator_view _Av, - Concurrency::accelerator_view _Associated_Av) restrict(cpu); - -template -array( - const Concurrency::extent<_Rank>& _Extent, - _InputIterator _Src_first, - _InputIterator _Src_last) restrict(cpu); - -template -array( - const Concurrency::extent<_Rank>& _Extent, - _InputIterator _Src_first) restrict(cpu); - -template -array( - int _E0, - _InputIterator _Src_first, - _InputIterator _Src_last) restrict(cpu); - -template -array( - int _E0, - _InputIterator _Src_first) restrict(cpu); - -template -array( - int _E0, - int _E1, - _InputIterator _Src_first, - _InputIterator _Src_last) restrict(cpu); - -template -array( - int _E0, - int _E1, - _InputIterator _Src_first) restrict(cpu); - -template -array( - int _E0, - int _E1, - int _E2, - _InputIterator _Src_first, - _InputIterator _Src_last) restrict(cpu); - -template -array( - int _E0, - int _E1, - int _E2, - _InputIterator _Src_first) restrict(cpu); - -template -array( - const Concurrency::extent<_Rank>& _Extent, - _InputIterator _Src_first, - _InputIterator _Src_last, - Concurrency::accelerator_view _Av - access_type _Cpu_access_type = access_type_auto) restrict(cpu); - -template -array( - const Concurrency::extent<_Rank>& _Extent, - _InputIterator _Src_first, - Concurrency::accelerator_view _Av - access_type _Cpu_access_type = access_type_auto) restrict(cpu); - -template -array( - int _E0, - _InputIterator _Src_first, - _InputIterator _Src_last, - Concurrency::accelerator_view _Av - access_type _Cpu_access_type = access_type_auto) restrict(cpu); - -template -array( - int _E0, - _InputIterator _Src_first, - Concurrency::accelerator_view _Av - access_type _Cpu_access_type = access_type_auto) restrict(cpu); - -template -array( - int _E0, - int _E1, - _InputIterator _Src_first, - _InputIterator _Src_last, - Concurrency::accelerator_view _Av - access_type _Cpu_access_type = access_type_auto) restrict(cpu); - -template -array( - int _E0, - int _E1, - _InputIterator _Src_first, - Concurrency::accelerator_view _Av - access_type _Cpu_access_type = access_type_auto) restrict(cpu); - -template -array( - int _E0, - int _E1, - int _E2, - _InputIterator _Src_first, - _InputIterator _Src_last, - Concurrency::accelerator_view _Av, - access_type _Cpu_access_type = access_type_auto) restrict(cpu); - -template -array( - int _E0, - int _E1, - int _E2, - _InputIterator _Src_first, - Concurrency::accelerator_view _Av - access_type _Cpu_access_type = access_type_auto) restrict(cpu); - -template -array( - const Concurrency::extent<_Rank>& _Extent, - _InputIterator _Src_first, - _InputIterator _Src_last, - Concurrency::accelerator_view _Av, - Concurrency::accelerator_view _Associated_Av) restrict(cpu); - -template -array( - const Concurrency::extent<_Rank>& _Extent, - _InputIterator _Src_first, - Concurrency::accelerator_view _Av, - Concurrency::accelerator_view _Associated_Av) restrict(cpu); - -template -array( - int _E0, - _InputIterator _Src_first, - _InputIterator _Src_last, - Concurrency::accelerator_view _Av, - Concurrency::accelerator_view _Associated_Av) restrict(cpu); - -template -array( - int _E0, _InputIterator _Src_first, - Concurrency::accelerator_view _Av, - Concurrency::accelerator_view _Associated_Av) restrict(cpu); - -template -array( - int _E0, - int _E1, _InputIterator _Src_first, _InputIterator _Src_last, - Concurrency::accelerator_view _Av, - Concurrency::accelerator_view _Associated_Av) restrict(cpu); - -template -array( - int _E0, - int _E1, _InputIterator _Src_first, - Concurrency::accelerator_view _Av, - Concurrency::accelerator_view _Associated_Av) restrict(cpu); - -template -array( - int _E0, - int _E1, - int _E2, _InputIterator _Src_first, _InputIterator _Src_last, - Concurrency::accelerator_view _Av, - Concurrency::accelerator_view _Associated_Av) restrict(cpu); - -template -array( - int _E0, - int _E1, - int _E2, _InputIterator _Src_first, - Concurrency::accelerator_view _Av, - Concurrency::accelerator_view _Associated_Av) restrict(cpu); - -explicit array( - const array_view& _Src) restrict(cpu); - -array( - const array_view& _Src, - accelerator_view _Av, - access_type _Cpu_access_type = access_type_auto) restrict(cpu); - -array( - const array_view& _Src, - accelerator_view _Av, - accelerator_view _Associated_Av) restrict(cpu); - -array(const array& _Other) restrict(cpu); - -array(array&& _Other) restrict(cpu); -``` - -### Parameters - -*_Associated_Av*
-An accelerator_view which specifies the preferred target location of the array. - -*_Av*
-An [accelerator_view](accelerator-view-class.md) object that specifies the location of the array. - -*_Cpu_access_type*
-The desired [access_type](concurrency-namespace-enums-amp.md#access_type) for the array on the CPU. This parameter has a default value of `access_type_auto` leaving the CPU `access_type` determination to the runtime. The actual CPU `access_type` for the array can be queried using the `get_cpu_access_type` method. - -*_Extent*
-The extent in each dimension of the array. - -*_E0*
-The most significant component of the extent of this section. - -*_E1*
-The next-to-most-significant component of the extent of this section. - -*_E2*
-The least significant component of the extent of this section. - -*_InputIterator*
-The type of the input iterator. - -*_Src*
-To object to copy. - -*_Src_first*
-A beginning iterator into the source container. - -*_Src_last*
-An ending iterator into the source container. - -*_Other*
-Other data source. - -*_Rank*
-The rank of the section. - -*value_type*
-The data type of the elements that are copied. - -## associated_accelerator_view - -Gets the second [accelerator_view](accelerator-view-class.md) object that is passed as a parameter when a staging constructor is called to instantiate the `array` object. - -```cpp -__declspec(property(get= get_associated_accelerator_view)) Concurrency::accelerator_view associated_accelerator_view; -``` - -## copy_to - -Copies the contents of the `array` to another `array`. - -```cpp -void copy_to( - array& _Dest) const ; - -void copy_to( - array_view& _Dest) const ; -``` - -### Parameters - -*_Dest*
-The [array_view](array-view-class.md) object to copy to. - -## cpu_access_type - -Gets the CPU access_type allowed for this array. - -```cpp -__declspec(property(get= get_cpu_access_type)) access_type cpu_access_type; -``` - -## data - -Returns a pointer to the raw data of the `array`. - -```cpp -value_type* data() restrict(amp, cpu); - -const value_type* data() const restrict(amp, cpu); -``` - -### Return Value - -A pointer to the raw data of the array. - -## extent - -Gets the [extent](extent-class.md) object that defines the shape of the `array`. - -```cpp -__declspec(property(get= get_extent)) Concurrency::extent<_Rank> extent; -``` - -## get_accelerator_view - -Returns the [accelerator_view](accelerator-view-class.md) object that represents the location where the `array` object is allocated. This property can be accessed only on the CPU. - -```cpp -Concurrency::accelerator_view get_accelerator_view() const; -``` - -### Return Value - -The `accelerator_view` object that represents the location where the `array` object is allocated. - -## get_associated_accelerator_view - -Gets the second [accelerator_view](accelerator-view-class.md) object that is passed as a parameter when a staging constructor is called to instantiate the `array` object. - -```cpp -Concurrency::accelerator_view get_associated_accelerator_view() const ; -``` - -### Return Value - -The second [accelerator_view](accelerator-view-class.md) object passed to the staging constructor. - -## get_cpu_access_type - -Returns the CPU access_type that's allowed for this array. - -```cpp -access_type get_cpu_access_type() const restrict(cpu); -``` - -### Return Value - -## get_extent - -Returns the [extent](extent-class.md) object of the `array`. - -```cpp -Concurrency::extent<_Rank> get_extent() const restrict(amp,cpu); -``` - -### Return Value - -The `extent` object of the `array`. - -## `operator std::vector` - -Uses `copy(*this, vector)` to implicitly convert the array to a std::vector object. - -```cpp -operator std::vector() const restrict(cpu); -``` - -### Parameters - -*value_type*
-The data type of the elements of the vector. - -### Return Value - -An object of type `vector` that contains a copy of the data that is contained in the array. - -## operator() - -Returns the element value that is specified by the parameters. - -```cpp -value_type& operator() (const index<_Rank>& _Index) restrict(amp,cpu); - -const value_type& operator() (const index<_Rank>& _Index) cons t restrict(amp,cpu); - -value_type& operator() (int _I0, int _I1) restrict(amp,cpu); - -const value_type& operator() (int _I0, int _I1) const restrict(amp,cpu) ; - -value_type& operator() (int _I0, int _I1, int _I2) restrict(amp,cpu); - -const value_type& operator() (int _I0, int _I1, int _I2) const restrict(amp,cpu); - -typename details::_Projection_result_type::_Result_type operator()(int _I) restrict(amp,cpu); - -typename details::_Projection_result_type::_Const_result_type operator()(int _I) const restrict(amp,cpu); -``` - -### Parameters - -*_Index*
-The location of the element. - -*_I0*
-The most significant component of the origin of this section. - -*_I1*
-The next-to-most-significant component of the origin of this section. - -*_I2*
-The least significant component of the origin of this section. - -*_I*
-The location of the element. - -### Return Value - -The element value specified by the parameters. - -## operator[] - -Returns the element that is at the specified index. - -```cpp -value_type& operator[](const index<_Rank>& _Index) restrict(amp,cpu); - -const value_type& operator[] - (const index<_Rank>& _Index) const restrict(amp,cpu); - -typename details::_Projection_result_type::_Result_type operator[](int _i) restrict(amp,cpu); - -typename details::_Projection_result_type::_Const_result_type operator[](int _i) const restrict(amp,cpu); -``` - -### Parameters - -*_Index*
-The index. - -*_I*
-The index. - -### Return Value - -The element that is at the specified index. - -## operator= - -Copies the contents of the specified `array` object. - -```cpp -array& operator= (const array& _Other) restrict(cpu); - -array& operator= (array&& _Other) restrict(cpu); - -array& operator= ( - const array_view& _Src) restrict(cpu); -``` - -### Parameters - -*_Other*
-The `array` object to copy from. - -*_Src*
-The `array` object to copy from. - -### Return Value - -A reference to this `array` object. - -## rank - -Stores the rank of the `array`. - -```cpp -static const int rank = _Rank; -``` - -## reinterpret_as - -Reinterprets the array through a one-dimensional array_view, which optionally may have a different value type than the source array. - -### Syntax - -```cpp -template -array_view<_Value_type2,1> reinterpret_as() restrict(amp,cpu); - -template -array_view reinterpret_as() const restrict(amp,cpu); -``` - -### Parameters - -*_Value_type2*
-The data type of the returned data. - -### Return Value - -An array_view or const array_view object that is based on the array, with the element type reinterpreted from T to ElementType and the rank reduced from N to 1. - -### Remarks - -Sometimes it is convenient to view a multi-dimensional array as if it is a linear, one-dimensional array, possibly with a different value type than the source array. You can use this method to achieve this. -**Caution** Reinterpreting an array object by using a different value type is a potentially unsafe operation. We recommend that you use this functionality carefully. - -The following code provides an example. - -```cpp -struct RGB { float r; float g; float b; }; - -array a = ...; -array_view v = a.reinterpret_as(); - -assert(v.extent == 3*a.extent); -``` - -## section - -Returns a subsection of the `array` object that is at the specified origin and, optionally, that has the specified extent. - -```cpp -array_view section( - const Concurrency::index<_Rank>& _Section_origin, - const Concurrency::extent<_Rank>& _Section_extent) restrict(amp,cpu); - -array_view section( - const Concurrency::index<_Rank>& _Section_origin, - const Concurrency::extent<_Rank>& _Section_extent) const restrict(amp,cpu); - -array_view section( - const Concurrency::extent<_Rank>& _Ext) restrict(amp,cpu); - -array_view section( - const Concurrency::extent<_Rank>& _Ext) const restrict(amp,cpu); - -array_view section( - const index<_Rank>& _Idx) restrict(amp,cpu); - -array_view section( - const index<_Rank>& _Idx) const restrict(amp,cpu); - -array_view section( - int _I0, - int _E0) restrict(amp,cpu); - -array_view section( - int _I0, - int _E0) const restrict(amp,cpu); - -array_view section( - int _I0, - int _I1, - int _E0, - int _E1) restrict(amp,cpu); - -array_view section( - int _I0, - int _I1, - int _E0, - int _E1) const restrict(amp,cpu); - -array_view section( - int _I0, - int _I1, - int _I2, - int _E0, - int _E1, - int _E2) restrict(amp,cpu); - -array_view section( - int _I0, - int _I1, - int _I2, - int _E0, - int _E1, - int _E2) const restrict(amp,cpu); -``` - -### Parameters - -*_E0*
-The most significant component of the extent of this section. - -*_E1*
-The next-to-most-significant component of the extent of this section. - -*_E2*
-The least significant component of the extent of this section. - -*_Ext*
-The [extent](extent-class.md) object that specifies the extent of the section. The origin is 0. - -*_Idx*
-The [index](index-class.md) object that specifies the location of the origin. The subsection is the rest of the extent. - -*_I0*
-The most significant component of the origin of this section. - -*_I1*
-The next-to-most-significant component of the origin of this section. - -*_I2*
-The least significant component of the origin of this section. - -*_Rank*
-The rank of the section. - -*_Section_extent*
-The [extent](extent-class.md) object that specifies the extent of the section. - -*_Section_origin*
-The [index](index-class.md) object that specifies the location of the origin. - -*value_type*
-The data type of the elements that are copied. - -### Return Value - -Returns a subsection of the `array` object that is at the specified origin and, optionally, that has the specified extent. When only the `index` object is specified, the subsection contains all elements in the associated grid that have indexes that are larger than the indexes of the elements in the `index` object. - -## view_as - -Reinterprets this array as an [array_view](array-view-class.md) of a different rank. - -```cpp -template -array_view view_as( - const Concurrency::extent<_New_rank>& _View_extent) restrict(amp,cpu); - -template -array_view view_as( - const Concurrency::extent<_New_rank>& _View_extent) const restrict(amp,cpu); -``` - -### Parameters - -*_New_rank*
-The rank of the `extent` object passed as a parameter. - -*_View_extent*
-The extent that is used to construct the new [array_view](array-view-class.md) object. - -*value_type*
-The data type of the elements in both the original `array` object and the returned `array_view` object. - -### Return Value - -The [array_view](array-view-class.md) object that is constructed. - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/array-view-class.md b/docs/parallel/amp/reference/array-view-class.md deleted file mode 100644 index 26700c4f97b..00000000000 --- a/docs/parallel/amp/reference/array-view-class.md +++ /dev/null @@ -1,773 +0,0 @@ ---- -description: "Learn more about: array_view Class" -title: "array_view Class" -ms.date: "11/04/2016" -f1_keywords: ["array_view", "AMP/array_view", "AMP/Concurrency::array_view::array_view", "AMP/Concurrency::array_view::copy_to", "AMP/Concurrency::array_view::data", "AMP/Concurrency::array_view::discard_data", "AMP/Concurrency::array_view::get_extent", "AMP/Concurrency::array_view::get_ref", "AMP/Concurrency::array_view::get_source_accelerator_view", "AMP/Concurrency::array_view::refresh", "AMP/Concurrency::array_view::reinterpret_as", "AMP/Concurrency::array_view::section", "AMP/Concurrency::array_view::synchronize", "AMP/Concurrency::array_view::synchronize_async", "AMP/Concurrency::array_view::synchronize_to", "AMP/Concurrency::array_view::synchronize_to_async", "AMP/Concurrency::array_view::view_as", "AMP/Concurrency::array_view::rank", "AMP/Concurrency::array_view::extent", "AMP/Concurrency::array_view::source_accelerator_view", "AMP/Concurrency::array_view::value_type"] -helpviewer_keywords: ["array_view class"] -ms.assetid: 7e7ec9bc-05a2-4372-b05d-752b50006c5a ---- -# array_view Class - -Represents an N-dimensional view over the data held in another container. - -## Syntax - -```cpp -template < - typename value_type, - int _Rank = 1 -> -class array_view : public _Array_view_base<_Rank, sizeof(value_type)/sizeof(int)>; - -template < - typename value_type, - int _Rank -> -class array_view : public _Array_view_base<_Rank, sizeof(value_type)/sizeof(int)>; -``` - -### Parameters - -*value_type*
-The data type of the elements in the `array_view` object. - -*_Rank*
-The rank of the `array_view` object. - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[array_view Constructor](#ctor)|Initializes a new instance of the `array_view` class. There is no default constructor for `array`. All constructors are restricted to run on the CPU only and cannot be executed on a Direct3D target.| -|[~array_view Destructor](#ctor)|Destroys the `array_view` object.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[copy_to](#copy_to)|Copies the contents of the `array_view` object to the specified destination by calling `copy(*this, dest)`.| -|[data](#data)|Returns a pointer to the raw data of the `array_view`.| -|[discard_data](#discard_data)|Discards the current data underlying this view.| -|[get_extent](#get_extent)|Returns the extent object of the array_view object.| -|[get_ref](#get_ref)|Returns a reference to the indexed element.| -|[get_source_accelerator_view](#get_source_accelerator_view)|Returns the [accelerator_view](accelerator-view-class.md) where the data source of the `array_view` is located.| -|[refresh](#refresh)|Notifies the `array_view` object that its bound memory has been modified outside the `array_view` interface. A call to this method renders all cached information stale.| -|[reinterpret_as](#reinterpret_as)|Returns a one-dimensional array that contains all the elements in the `array_view` object.| -|[section](#section)|Returns a subsection of the `array_view` object that's at the specified origin and, optionally, that has the specified extent.| -|[synchronize](#synchronize)|Synchronizes any modifications made to the `array_view` object back to its source data.| -|[synchronize_async](#synchronize_async)|Asynchronously synchronizes any modifications made to the `array_view` object back to its source data.| -|[synchronize_to](#synchronize_to)|Synchronizes any modifications made to the `array_view` object to the specified [accelerator_view](accelerator-view-class.md).| -|[synchronize_to_async](#synchronize_to_async)|Asynchronously synchronizes any modifications made to the `array_view` object to the specified [accelerator_view](accelerator-view-class.md).| -|[view_as](#view_as)|Produces an `array_view` object of a different rank using this `array_view` object's data.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[operator()](#operator_call)|Returns the value of the element that is specified by the parameter or parameters.| -|[operator\[\]](#operator_at)|Returns the element that is specified by the parameters.| -|[operator=](#operator_eq)|Copies the contents of the specified `array_view` object into this one.| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[rank Constant](#rank)|Stores the rank of the `array_view` object.| - -### Data Members - -|Name|Description| -|----------|-----------------| -|[extent](#extent)|Gets the `extent` object that defines the shape of the `array_view` object.| -|[source_accelerator_view](#source_accelerator_view)|Gets the [accelerator_view](accelerator-view-class.md) where the data source of the `array_view` is located| -|[value_type](#value_type)|The value type of the `array_view` and the bound array.| - -## Remarks - -The `array_view` class represents a view into the data that is contained in an [array](array-class.md) object or a subsection of an `array` object. - -You can access the `array_view` object where the source data is located (locally) or on a different accelerator or a coherence domain (remotely). When you access the object remotely, views are copied and cached as necessary. Except for the effects of automatic caching, `array_view` objects have a performance profile similar to that of `array` objects. There is a small performance penalty when you access the data through views. - -There are three remote usage scenarios: - -- A view to a system memory pointer is passed by means of a [parallel_for_each](../../../parallel/concrt/reference/concurrency-namespace-functions.md#parallel_for_each) call to an accelerator and accessed on the accelerator. - -- A view to an array located on an accelerator is passed by means of a `parallel_for_each` call to another accelerator and is accessed there. - -- A view to an array located on an accelerator is accessed on the CPU. - -In any one of these scenarios, the referenced views are copied by the runtime to the remote location and, if modified by the calls to the `array_view` object, are copied back to the local location. The runtime might optimize the process of copying changes back, might copy only changed elements, or might copy unchanged portions also. Overlapping `array_view` objects on one data source are not guaranteed to maintain referential integrity in a remote location. - -You must synchronize any multithreaded access to the same data source. - -The runtime makes the following guarantees regarding the caching of data in `array_view` objects: - -- All well-synchronized accesses to an `array` object and an `array_view` object on it in program order obey a serial happens-before relationship. - -- All well-synchronized accesses to overlapping `array_view` objects on the same accelerator on a single `array` object are aliased through the `array` object. They induce a total occurs-before relationship which obeys program order. There is no caching. If the `array_view` objects are executing on different accelerators, the order of access is undefined, creating a race condition. - -When you create an `array_view` object using a pointer in system memory, you must change the view `array_view` object only through the `array_view` pointer. Alternatively, you must call `refresh()` on one of the `array_view` objects that are attached to the system pointer, if the underlying native memory is changed directly, instead of through the `array_view` object. - -Either action notifies the `array_view` object that the underlying native memory is changed and that any copies that are located on an accelerator are outdated. If you follow these guidelines, the pointer-based views are identical to those provided to views of data-parallel arrays. - -## Inheritance Hierarchy - -`_Array_view_shape` - -`_Array_view_base` - -`array_view` - -## Requirements - -**Header:** amp.h - -**Namespace:** Concurrency - -## ~array_view - -Destroys the `array_view` object. - -```cpp -~array_view()restrict(amp,cpu); -``` - -## array_view - -Initializes a new instance of the `array_view` class. - -```cpp -array_view( - array& _Src)restrict(amp,cpu); - -array_view( - const array_view& _Other)restrict(amp,cpu); - -explicit array_view( - const Concurrency::extent<_Rank>& _Extent) restrict(cpu); - -template < - typename _Container -> -array_view( - const Concurrency::extent<_Rank>& _Extent, - _Container& _Src) restrict(cpu); - -array_view( - const Concurrency::extent<_Rank>& _Extent, - value_type* _Src)restrict(amp,cpu); - -explicit array_view( - int _E0) restrict(cpu); - -template < - typename _Container -> -explicit array_view( - _Container& _Src, - typename std::enable_if::type::value, void **>::type = 0) restrict(cpu); - -template < - typename _Container -> -explicit array_view( - int _E0, - _Container& _Src) restrict(cpu); - -explicit array_view( - int _E0, - int _E1) __CPU_ONLY; - -template < - typename _Container -> -explicit array_view( - int _E0, - int _E1, - _Container& _Src) restrict(cpu); - -explicit array_view( - int _E0, - int _E1, - int _E2) __CPU_ONLY; - -template < - typename _Container -> -explicit array_view( - int _E0, - int _E1, - int _E2, - _Container& _Src); - -explicit array_view( - int _E0, - _In_ value_type* _Src)restrict(amp,cpu); - -template < - typename _Arr_type, - int _Size -> -explicit array_view( - _In_ _Arr_type (& _Src) [_Size]) restrict(amp,cpu); - -explicit array_view( - int _E0, - int _E1, - _In_ value_type* _Src)restrict(amp,cpu); - -explicit array_view( - int _E0, - int _E1, - int _E2, - _In_ value_type* _Src)restrict(amp,cpu); - -array_view( - const array& _Src)restrict(amp,cpu); - -array_view( - const array_view& _Src)restrict(amp,cpu); - -array_view( - const array_view& _Src)restrict(amp,cpu); - -template < - typename _Container -> -array_view( - const Concurrency::extent<_Rank>& _Extent, - const _Container& _Src) restrict(cpu); - -template < - typename _Container -> -explicit array_view( - const _Container& _Src, - typename std::enable_if::type::value, void **>::type = 0) restrict(cpu); - -array_view( - const Concurrency::extent<_Rank>& _Extent, - const value_type* _Src)restrict(amp,cpu); - -template < - typename _Arr_type, - int _Size -> -explicit array_view( - const _In_ _Arr_type (& _Src) [_Size]) restrict(amp,cpu); - -template < - typename _Container -> -array_view( - int _E0, - const _Container& _Src); - -template < - typename _Container -> -array_view( - int _E0, - int _E1, - const _Container& _Src); - -template < - typename _Container -> -array_view( - int _E0, - int _E1, - int _E2, - const _Container& _Src); - -array_view( - int _E0, - const value_type* _Src)restrict(amp,cpu); - -array_view( - int _E0, - int _E1, - const value_type* _Src) restrict(amp,cpu); - -array_view( - int _E0, - int _E1, - int _E2, - const value_type* _Src) restrict(amp,cpu); -``` - -### Parameters - -*_Arr_type*
-The element type of a C-style array from which data is supplied. - -*_Container*
-A template argument that must specify a linear container that supports `data()` and `size()` members. - -*_E0*
-The most significant component of the extent of this section. - -*_E1*
-The next-to-most-significant component of the extent of this section. - -*_E2*
-The least significant component of the extent of this section. - -*_Extent*
-The extent in each dimension of this `array_view`. - -*_Other*
-An object of type `array_view` from which to initialize the new `array_view`. - -*_Size*
-The size of a C-style array from which data is supplied. - -*_Src*
-A pointer to the source data that will be copied into the new array. - -## copy_to - -Copies the contents of the `array_view` object to the specified destination object by calling `copy(*this, dest)`. - -```cpp -void copy_to( - array& _Dest) const; - -void copy_to( - array_view& _Dest) const; -``` - -### Parameters - -*_Dest*
-The object to copy to. - -## data - -Returns a pointer to the raw data of the `array_view`. - -```cpp -value_type* data() const restrict(amp, - cpu); - -const value_type* data() const restrict(amp, - cpu); -``` - -### Return Value - -A pointer to the raw data of the `array_view`. - -## discard_data - -Discards the current data underlying this view. This is an optimization hint to the runtime used to avoid copying the current contents of the view to a target `accelerator_view` that it is accessed on, and its use is recommended if the existing content is not needed. This method is a no-op when used in a restrict(amp) context - -```cpp -void discard_data() const restrict(cpu); -``` - -## extent - -Gets the `extent` object that defines the shape of the `array_view` object. - -```cpp -__declspec(property(get= get_extent)) Concurrency::extent<_Rank> extent; -``` - -## get_extent - -Returns the [extent](extent-class.md) object of the `array_view` object. - -```cpp -Concurrency::extent<_Rank> get_extent() const restrict(cpu, amp); -``` - -### Return Value - -The `extent` object of the `array_view` object - -## get_ref - -Get a reference to the element indexed by _Index. Unlike the other indexing operators for accessing the array_view on the CPU, this method does not implicitly synchronize this array_view's contents to the CPU. After accessing the array_view on a remote location or performing a copy operation involving this array_view users are responsible to explicitly synchronize the array_view to the CPU before calling this method. Failure to do so results in undefined behavior. - -```cpp -value_type& get_ref( - const index<_Rank>& _Index) const restrict(amp, cpu); -``` - -### Parameters - -*_Index*
-The index. - -### Return Value - -Reference to the element indexed by _Index - -## get_source_accelerator_view - -Returns the accelerator_view where the data source of the array_view is located. If the array_view does not have a data source, this API throws a runtime_exception - -```cpp -accelerator_view get_source_accelerator_view() const; -``` - -### Return Value - -## operator() - -Returns the value of the element that is specified by the parameter or parameters. - -```cpp -value_type& operator() ( - const index<_Rank>& _Index) const restrict(amp,cpu); - -typename details::_Projection_result_type::_Result_type operator() ( - int _I) const restrict(amp,cpu); - -value_type& operator() ( - int _I0, - int _I1) const restrict(amp,cpu); - -value_type& operator() ( - int _I0, - int _I1, - int _I2) const restrict(amp,cpu); - -typename details::_Projection_result_type::_Const_result_type operator() ( - int _I) const restrict(amp,cpu); -``` - -### Parameters - -*_Index*
-The location of the element. - -*_I0*
-The index in the first dimension. - -*_I1*
-The index in the second dimension. - -*_I2*
-The index in the third dimension. - -*_I*
-The location of the element. - -### Return Value - -The value of the element that is specified by the parameter or parameters. - -## operator[] - -Returns the element that is specified by the parameters. - -```cpp -typename details::_Projection_result_type::_Const_result_type operator[] ( - int _I) const restrict(amp,cpu); - -value_type& operator[] ( - const index<_Rank>& _Index) const restrict(amp,cpu); -``` - -### Parameters - -*_Index*
-The index. - -*_I*
-The index. - -### Return Value - -The value of the element at the index, or an `array_view` projected on the most-significant dimension. - -## operator= - -Copies the contents of the specified `array_view` object to this one. - -```cpp -array_view& operator= ( - const array_view& _Other) restrict(amp,cpu); - -array_view& operator= ( - const array_view& _Other) restrict(amp,cpu); -``` - -### Parameters - -*_Other*
-The `array_view` object to copy from. - -### Return Value - -A reference to this `array_view` object. - -## rank - -Stores the rank of the `array_view` object. - -```cpp -static const int rank = _Rank; -``` - -## refresh - -Notifies the `array_view` object that its bound memory has been modified outside the `array_view` interface. A call to this method renders all cached information stale. - -```cpp -void refresh() const restrict(cpu); -``` - -## reinterpret_as - -Reinterprets the array_view through a one-dimensional array_view, which as an option can have a different value type than the source array_view. - -### Syntax - -```cpp -template < - typename _Value_type2 -> -array_view< _Value_type2, _Rank> reinterpret_as() const restrict(amp,cpu); - -template < - typename _Value_type2 -> -array_view reinterpret_as() const restrict(amp,cpu); -``` - -### Parameters - -*_Value_type2*
-The data type of the new `array_view` object. - -### Return Value - -An `array_view` object or a const `array_view` object that is based on this `array_view`, with the element type converted from `T` to `_Value_type2`, and the rank reduced from *N* to 1. - -### Remarks - -Sometimes it is convenient to view a multi-dimensional array as a linear, one-dimensional array, which may have a different value type than the source array. You can achieve this on an `array_view` by using this method. - -**Warning** Reinterpreting an array_view object by using a different value type is a potentially unsafe operation. This functionality should be used with care. - -Here's an example: - -```cpp -struct RGB { float r; float g; float b; }; - -array a = ...; -array_view v = a.reinterpret_as(); - -assert(v.extent == 3*a.extent); -``` - -## section - -Returns a subsection of the `array_view` object that's at the specified origin and, optionally, that has the specified extent. - -```cpp -array_view section( - const Concurrency::index<_Rank>& _Section_origin, - const Concurrency::extent<_Rank>& _Section_extent) const restrict(amp,cpu); - -array_view section( - const Concurrency::index<_Rank>& _Idx) const restrict(amp,cpu); - -array_view section( - const Concurrency::extent<_Rank>& _Ext) const restrict(amp,cpu); - -array_view section( - int _I0, - int _E0) const restrict(amp,cpu); - -array_view section( - int _I0, - int _I1, - int _E0, - int _E1) const restrict(amp,cpu); - -array_view section( - int _I0, - int _I1, - int _I2, - int _E0, - int _E1, - int _E2) const restrict(amp,cpu); -``` - -### Parameters - -*_E0*
-The most significant component of the extent of this section. - -*_E1*
-The next-to-most-significant component of the extent of this section. - -*_E2*
-The least significant component of the extent of this section. - -*_Ext*
-The [extent](extent-class.md) object that specifies the extent of the section. The origin is 0. - -*_Idx*
-The [index](index-class.md) object that specifies the location of the origin. The subsection is the rest of the extent. - -*_I0*
-The most significant component of the origin of this section. - -*_I1*
-The next-to-most-significant component of the origin of this section. - -*_I2*
-The least significant component of the origin of this section. - -*_Rank*
-The rank of the section. - -*_Section_extent*
-The [extent](extent-class.md) object that specifies the extent of the section. - -*_Section_origin*
-The [index](index-class.md) object that specifies the location of the origin. - -### Return Value - -A subsection of the `array_view` object that's at the specified origin and, optionally, that has the specified extent. When only the `index` object is specified, the subsection contains all elements in the associated extent that have indexes that are larger than the indexes of the elements in the `index` object. - -## source_accelerator_view - -Gets the source accelerator_view that this array_view is associated with. - -```cpp -__declspec(property(get= get_source_accelerator_view)) accelerator_view source_accelerator_view; -``` - -## synchronize - -Synchronizes any modifications made to the `array_view` object back to its source data. - -```cpp -void synchronize(access_type _Access_type = access_type_read) const restrict(cpu); - -void synchronize() const restrict(cpu); -``` - -### Parameters - -*_Access_type*
-The intended [access_type](concurrency-namespace-enums-amp.md#access_type) on the target [accelerator_view](accelerator-view-class.md). This parameter has a default value of `access_type_read`. - -## synchronize_async - -Asynchronously synchronizes any modifications made to the `array_view` object back to its source data. - -```cpp -concurrency::completion_future synchronize_async(access_type _Access_type = access_type_read) const restrict(cpu); - -concurrency::completion_future synchronize_async() const restrict(cpu); -``` - -### Parameters - -*_Access_type*
-The intended [access_type](concurrency-namespace-enums-amp.md#access_type) on the target [accelerator_view](accelerator-view-class.md). This parameter has a default value of `access_type_read`. - -### Return Value - -A future upon which to wait for the operation to complete. - -## synchronize_to - -Synchronizes any modifications made to this array_view to the specified accelerator_view. - -```cpp -void synchronize_to( - const accelerator_view& _Accl_view, - access_type _Access_type = access_type_read) const restrict(cpu); - -void synchronize_to( - const accelerator_view& _Accl_view) const restrict(cpu); -``` - -### Parameters - -*_Accl_view*
-The target accelerator_view to synchronize to. - -*_Access_type*
-The desired access_type on the target accelerator_view. This parameter has a default value of access_type_read. - -## synchronize_to_async - -Asynchronously synchronizes any modifications made to this array_view to the specified accelerator_view. - -```cpp -concurrency::completion_future synchronize_to_async( - const accelerator_view& _Accl_view, - access_type _Access_type = access_type_read) const restrict(cpu); - -concurrency::completion_future synchronize_to_async( - const accelerator_view& _Accl_view) const restrict(cpu); -``` - -### Parameters - -*_Accl_view*
-The target accelerator_view to synchronize to. - -*_Access_type*
-The desired access_type on the target accelerator_view. This parameter has a default value of access_type_read. - -### Return Value - -A future upon which to wait for the operation to complete. - -## value_type - -The value type of the array_view and the bound array. - -```cpp -typedef typenamevalue_type value_type; -``` - -## view_as - -Reinterprets this `array_view` as an `array_view` of a different rank. - -```cpp -template < - int _New_rank -> -array_view view_as( - const Concurrency::extent<_New_rank>& _View_extent) const restrict(amp,cpu); - -template < - int _New_rank -> -array_view view_as( - const Concurrency::extent<_New_rank> _View_extent) const restrict(amp,cpu); -``` - -### Parameters - -*_New_rank*
-The rank of the new `array_view` object. - -*_View_extent*
-The reshaping `extent`. - -*value_type*
-The data type of the elements in both the original [array](array-class.md) object and the returned `array_view` object. - -### Return Value - -The `array_view` object that is constructed. - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/completion-future-class.md b/docs/parallel/amp/reference/completion-future-class.md deleted file mode 100644 index 7441757f113..00000000000 --- a/docs/parallel/amp/reference/completion-future-class.md +++ /dev/null @@ -1,277 +0,0 @@ ---- -description: "Learn more about: completion_future Class" -title: "completion_future Class" -ms.date: "11/04/2016" -f1_keywords: ["completion_future", "AMPRT/completion_future", "AMPRT/Concurrency::completion_future::completion_future", "AMPRT/Concurrency::completion_future::get", "AMPRT/Concurrency::completion_future::then", "AMPRT/Concurrency::completion_future::to_task", "AMPRT/Concurrency::completion_future::valid", "AMPRT/Concurrency::completion_future::wait", "AMPRT/Concurrency::completion_future::wait_for", "AMPRT/Concurrency::completion_future::wait_until"] -ms.assetid: 1303c62e-546d-4b02-a578-251ed3fc0b6b ---- -# completion_future Class - -Represents a future corresponding to a C++ AMP asynchronous operation. - -## Syntax - -```cpp -class completion_future; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[completion_future Constructor](#ctor)|Initializes a new instance of the `completion_future` class.| -|[~completion_future Destructor](#dtor)|Destroys the `completion_future` object.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[get](#get)|Waits until the associated asynchronous operation completes.| -|[then](#then)|Chains a callback function object to the `completion_future` object to be executed when the associated asynchronous operation finishes execution.| -|[to_task](#to_task)|Returns a `task` object corresponding to the associated asynchronous operation.| -|[valid](#valid)|Gets a Boolean value that indicates whether the object is associated with an asynchronous operation.| -|[wait](#wait)|Blocks until the associated asynchronous operation completes.| -|[wait_for](#wait_for)|Blocks until the associated asynchronous operation completes or the time specified by `_Rel_time` has elapsed.| -|[wait_until](#wait_until)|Blocks until the associated asynchronous operation completes or until the current time exceeds the value specified by `_Abs_time`.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[operator std::shared_future\](#operator_shared_future)|Implicitly converts the `completion_future` object to an `std::shared_future` object.| -|[operator=](#operator_eq)|Copies the contents of the specified `completion_future` object into this one.| - -## Inheritance Hierarchy - -`completion_future` - -## Requirements - -**Header:** amprt.h - -**Namespace:** concurrency - -## completion_future - -Initializes a new instance of the `completion_future` class. - -### Syntax - -```cpp -completion_future(); - -completion_future( - const completion_future& _Other ); - -completion_future( - completion_future&& _Other ); -``` - -### Parameters - -*_Other*
-The `completion_future` object to copy or move. - -### Overloads List - -|Name|Description| -|----------|-----------------| -|`completion_future();`|Initializes a new instance of the `completion_future` Class| -|`completion_future(const completion_future& _Other);`|Initializes a new instance of the `completion_future` class by copying a constructor.| -|`completion_future(completion_future&& _Other);`|Initializes a new instance of the `completion_future` class by moving a constructor.| - -## get - -Waits until the associated asynchronous operation completes. Throws the stored exception if one was encountered during the asynchronous operation. - -### Syntax - -```cpp -void get() const; -``` - -## operator std::shared_future\ - -Implicitly converts the `completion_future` object to an `std::shared_future` object. - -### Syntax - -```cpp -operator std::shared_future() const; -``` - -### Return Value - -An `std::shared_future` object. - -## operator= - -Copies the contents of the specified `completion_future` object into this one. - -### Syntax - -```cpp -completion_future& operator= (const completion_future& _Other ); -completion_future& operator= (completion_future&& _Other ); -``` - -### Parameters - -*_Other*
-The object to copy from. - -### Return Value - -A reference to this `completion_future` object. - -## Overloads List - -|Name|Description| -|----------|-----------------| -|`completion_future& operator=(const completion_future& _Other);`|Copies the contents of the specified `completion_future` object into this one, using a deep copy.| -|`completion_future& operator=(completion_future&& _Other);`|Copies the contents of the specified `completion_future` object into this one, using a move assignment.| - -## then - -Chains a callback function object to the `completion_future` object to be executed when the associated asynchronous operation finishes execution. - -### Syntax - -```cpp -template -void then(const _Functor & _Func ) const; -``` - -### Parameters - -*_Functor*
-The callback functor. - -*_Func*
-The callback function object. - -## to_task - -Returns a `task` object corresponding to the associated asynchronous operation. - -### Syntax - -```cpp -concurrency::task to_task() const; -``` - -### Return Value - -A `task` object corresponding to the associated asynchronous operation. - -## valid - -Gets a Boolean value that indicates whether the object is associated with an asynchronous operation. - -### Syntax - -```cpp -bool valid() const; -``` - -### Return Value - -**`true`** if the object is associated with an asynchronous operation; otherwise, **`false`**. - -## wait - -Blocks until the associated asynchronous operation completes. - -### Syntax - -```cpp -void wait() const; -``` - -## wait_for - -Blocks until the associated asynchronous operation completes or the time that's specified by `_Rel_time` has elapsed. - -### Syntax - -```cpp -template < - class _Rep, - class _Period -> -std::future_status::future_status wait_for( - const std::chrono::duration< _Rep, _Period>& _Rel_time ) const; -``` - -### Parameters - -*_Rep*
-An arithmetic type that represents the number of ticks. - -*_Period*
-A std::ratio that represents the number of seconds that elapse per tick. - -*_Rel_time*
-The maximum amount of time to wait for the operation to complete. - -### Return Value - -Returns: - -- `std::future_status::deferred` if the associated asynchronous operation is not running. - -- `std::future_status::ready` if the associated asynchronous operation is finished. - -- `std::future_status::timeout` if the specified time period has elapsed. - -## wait_until - -Blocks until the associated asynchronous operation completes or until the current time exceeds the value specified by `_Abs_time`. - -### Syntax - -```cpp -template < - class _Clock, - class _Duration -> -std::future_status::future_status wait_until( - const std::chrono::time_point< _Clock, _Duration>& _Abs_time ) const; -``` - -### Parameters - -*_Clock*
-The clock on which this time point is measured. - -*_Duration*
-The time interval since the start of `_Clock`'s epoch, after which the function will time out. - -*_Abs_time*
-The point in time after which the function will time out. - -### Return Value - -Returns: - -1. `std::future_status::deferred` if the associated asynchronous operation is not running. - -1. `std::future_status::ready` if the associated asynchronous operation is finished. - -1. `std::future_status::timeout` if the time period specified has elapsed. - -## ~completion_future - -Destroys the `completion_future` object. - -### Syntax - -```cpp -~completion_future(); -``` - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md b/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md deleted file mode 100644 index 4576e407e43..00000000000 --- a/docs/parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md +++ /dev/null @@ -1,583 +0,0 @@ ---- -title: "Concurrency::direct3d namespace functions (AMP)" -description: "Learn more about: Concurrency::direct3d namespace functions (AMP)" -ms.date: 08/31/2018 -f1_keywords: ["amp/Concurrency::direct3d::abs", "amp/Concurrency::direct3d::countbits", "amp/Concurrency::direct3d::create_accelerator_view", "amp/Concurrency::direct3d::d3d_access_lock", "amp/Concurrency::direct3d::d3d_access_unlock", "amp/Concurrency::direct3d::firstbithigh", "amp/Concurrency::direct3d::get_buffer", "amp/Concurrency::direct3d::get_device", "amp/Concurrency::direct3d::imax", "amp/Concurrency::direct3d::is_timeout_disabled", "amp/Concurrency::direct3d::mad", "amp/Concurrency::direct3d::noise", "amp/Concurrency::direct3d::radians", "amp/Concurrency::direct3d::reversebits", "amp/Concurrency::direct3d::saturate", "amp/Concurrency::direct3d::smoothstep", "amp/Concurrency::direct3d::step", "amp/Concurrency::direct3d::umin"] ---- -# Concurrency::direct3d namespace functions (AMP) - -The following functions are defined in the `Concurrency::direct3d` namespace (AMP): - -## Requirements - -**Header:** amp.h - -**Namespace:** Concurrency - -## abs - -Returns the absolute value of the argument. - -```cpp -inline int abs(int _X) restrict(amp); -``` - -### Parameters - -*_X*\ -Integer value - -### Return Value - -Returns the absolute value of the argument. - -## clamp - -Computes the value of the first specified argument clamped to a range defined by the second and third specified arguments. - -```cpp -inline float clamp( - float _X, - float _Min, - float _Max) restrict(amp); - -inline int clamp( - int _X, - int _Min, - int _Max) restrict(amp); -``` - -### Parameters - -*_X*\ -The value to be clamped. - -*_Min*\ -The lower bound of the clamping range. - -*_Max*\ -The upper bound of the clamping range. - -### Return Value - -The clamped value of `_X`. - -## countbits - -Counts the number of set bits in `_X`. - -```cpp -inline unsigned int countbits(unsigned int _X) restrict(amp); -``` - -### Parameters - -*_X*\ -Unsigned integer value - -### Return Value - -Returns the number of set bits in `_X`. - -## create_accelerator_view - -Creates an [accelerator_view](accelerator-view-class.md) object from a pointer to a Direct3D device interface. - -## Syntax - -```cpp -accelerator_view create_accelerator_view( - IUnknown * _D3D_device, - queuing_mode _Qmode = queuing_mode_automatic); - -accelerator_view create_accelerator_view( - accelerator& _Accelerator, - bool _Disable_timeout, - queuing_mode _Qmode = queuing_mode_automatic); -``` - -### Parameters - -*_Accelerator*\ -The accelerator on which the new accelerator_view is to be created. - -*_D3D_device*\ -The pointer to the Direct3D device interface. - -*_Disable_timeout*\ -A Boolean parameter that specifies whether timeout should be disabled for the newly created accelerator_view. This corresponds to the D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT flag for Direct3D device creation and is used to indicate if the operating system should allow workloads that take more than 2 seconds to execute without resetting the device per the Windows timeout detection and recovery mechanism. Use of this flag is recommended if you need to perform time consuming tasks on the accelerator_view. - -*_Qmode*\ -The [queuing_mode](concurrency-namespace-enums-amp.md#queuing_mode) to be used for the newly created accelerator_view. This parameter has a default value of `queuing_mode_automatic`. - -## Return Value - -The `accelerator_view` object created from the passed Direct3D device interface. - -## Remarks - -This function creates a new `accelerator_view` object from an existing pointer to a Direct3D device interface. If the function call succeeds, the reference count of the parameter is incremented by means of an `AddRef` call to the interface. You can safely release the object when it is no longer required in your DirectX code. If the method call fails, a [runtime_exception](runtime-exception-class.md) is thrown. - -The `accelerator_view` object that you create by using this function is thread safe. You must synchronize concurrent use of the `accelerator_view` object. Unsynchronized concurrent usage of the `accelerator_view` object and the raw ID3D11Device interface causes undefined behavior. - -The C++ AMP runtime provides detailed error information in debug mode by using the D3D Debug layer if you use the `D3D11_CREATE_DEVICE_DEBUG` flag. - -## d3d_access_lock - -Acquire a lock on an accelerator_view for the purpose of safely performing D3D operations on resources shared with the accelerator_view. The accelerator_view and all C++ AMP resources associated with this accelerator_view internally take this lock when performing operations and will block while another thread holds the D3D access lock. This lock is non-recursive: It is undefined behavior to call this function from a thread that already holds the lock. It is undefined behavior to perform operations on the accelerator_view or any data container associated with the accelerator_view from the thread that holds the D3D access lock. See also scoped_d3d_access_lock, a RAII-style class for a scope-based D3D access lock. - -```cpp -void __cdecl d3d_access_lock(accelerator_view& _Av); -``` - -### Parameters - -*_Av*\ -The accelerator_view to lock. - -## d3d_access_try_lock - -Attempt to acquire the D3D access lock on an accelerator_view without blocking. - -```cpp -bool __cdecl d3d_access_try_lock(accelerator_view& _Av); -``` - -### Parameters - -*_Av*\ -The accelerator_view to lock. - -### Return Value - -true if the lock was acquired, or false if it is currently held by another thread. - -## d3d_access_unlock - -Release the D3D access lock on the given accelerator_view. If the calling thread does not hold the lock on the accelerator_view the results are undefined. - -```cpp -void __cdecl d3d_access_unlock(accelerator_view& _Av); -``` - -### Parameters - -*_Av*\ -The accelerator_view for which the lock is to be released. - -## firstbithigh - -Gets the location of the first set bit in `_X`, beginning with the highest-order bit and moving towards the lowest-order bit. - -```cpp -inline int firstbithigh(int _X) restrict(amp); -``` - -### Parameters - -*_X*\ -Integer value - -### Return Value - -The location of the first set bit. - -## firstbitlow - -Gets the location of the first set bit in `_X`, beginning with the lowest-order bit and working toward the highest-order bit. - -```cpp -inline int firstbitlow(int _X) restrict(amp); -``` - -### Parameters - -*_X*\ -Integer value - -### Return Value - -Returns The location of the first set bit. - -## get_buffer - -Get the Direct3D buffer interface underlying the specified array. - -```cpp -template< - typename value_type, - int _Rank -> -IUnknown *get_buffer( - const array& _Array); -``` - -### Parameters - -*value_type*\ -The type of elements in the array. - -*_Rank*\ -The rank of the array. - -*_Array*\ -An array on a Direct3D accelerator_view for which the underlying Direct3D buffer interface is returned. - -### Return Value - -The IUnknown interface pointer corresponding to the Direct3D buffer underlying the array. - -## get_device - -Get the D3D device interface underlying a accelerator_view. - -```cpp -IUnknown* get_device(const accelerator_view Av); -``` - -### Parameters - -*Av*\ -The D3D accelerator_view for which the underlying D3D device interface is returned. - -### Return value - -The `IUnknown` interface pointer of the D3D device underlying the accelerator_view. - -## imax - -Determine the maximum numeric value of the arguments. - -```cpp -inline int imax( - int _X, - int _Y) restrict(amp); -``` - -### Parameters - -*_X*\ -Integer value - -*_Y*\ -Integer value - -### Return Value - -Return the maximum numeric value of the arguments. - -## imin - -Determine the minimum numeric value of the arguments. - -```cpp -inline int imin( - int _X, - int _Y) restrict(amp); -``` - -### Parameters - -*_X*\ -Integer value - -*_Y*\ -Integer value - -### Return Value - -Return the minimum numeric value of the arguments. - -## is_timeout_disabled - -Returns a boolean flag indicating if timeout is disabled for the specified accelerator_view. This corresponds to the D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT flag for Direct3D device creation. - -```cpp -bool __cdecl is_timeout_disabled(const accelerator_view& _Accelerator_view); -``` - -### Parameters - -*_Accelerator_view*\ -The accelerator_view for which the timeout disabled setting is to be queried. - -### Return Value - -A boolean flag indicating if timeout is disabled for the specified accelerator_view. - -## mad - -Computes the product of the first and second specified argument, then adds the third specified argument. - -```cpp -inline float mad( - float _X, - float _Y, - float _Z) restrict(amp); - -inline double mad( - double _X, - double _Y, - double _Z) restrict(amp); - -inline int mad( - int _X, - int _Y, - int _Z) restrict(amp); - -inline unsigned int mad( - unsigned int _X, - unsigned int _Y, - unsigned int _Z) restrict(amp); -``` - -### Parameters - -*_X*\ -The first specified argument. - -*_Y*\ -The second specified argument. - -*_Z*\ -The third specified argument. - -### Return Value - -The result of `_X` \* `_Y` + `_Z`. - -## make_array - -Create an array from a Direct3D buffer interface pointer. - -```cpp -template< - typename value_type, - int _Rank -> -array make_array( - const extent<_Rank>& _Extent, - const Concurrency::accelerator_view& _Rv, - IUnknown* _D3D_buffer); -``` - -### Parameters - -*value_type*\ -The element type of the array to be created. - -*_Rank*\ -The rank of the array to be created. - -*_Extent*\ -An extent that describes the shape of the array aggregate. - -*_Rv*\ -A D3D accelerator view on which the array is to be created. - -*_D3D_buffer*\ -IUnknown interface pointer of the D3D buffer to create the array from. - -### Return Value - -An array created using the provided Direct3D buffer. - -## noise - -Generates a random value using the Perlin noise algorithm. - -```cpp -inline float noise(float _X) restrict(amp); -``` - -### Parameters - -*_X*\ -Floating-point value from which to generate Perlin noise. - -### Return Value - -Returns the Perlin noise value within a range between -1 and 1. - -## radians - -Converts `_X` from degrees to radians. - -```cpp -inline float radians(float _X) restrict(amp); -``` - -### Parameters - -*_X*\ -Floating-point value - -### Return Value - -Returns `_X` converted from degrees to radians. - -## rcp - -Computes the reciprocal of the specified argument by using a fast approximation. - -```cpp -inline float rcp(float _X) restrict(amp); - -inline double rcp(double _X) restrict(amp); -``` - -### Parameters - -*_X*\ -The value for which to compute the reciprocal. - -### Return Value - -The reciprocal of the specified argument. - -## reversebits - -Reverses the order of the bits in `_X`. - -```cpp -inline unsigned int reversebits(unsigned int _X) restrict(amp); -``` - -### Parameters - -*_X*\ -Unsigned integer value - -### Return Value - -Returns the value with the bit order reversed in `_X`. - -## saturate - -Clamps `_X` within the range of 0 to 1. - -```cpp -inline float saturate(float _X) restrict(amp); -``` - -### Parameters - -*_X*\ -Floating-point value - -### Return Value - -Returns `_X` clamped within the range of 0 to 1. - -## sign - -Determines the sign of the specified argument. - -```cpp -inline int sign(int _X) restrict(amp); -``` - -### Parameters - -*_X*\ -Integer value - -### Return Value - -The sign of the argument. - -## smoothstep - -Returns a smooth Hermite interpolation between 0 and 1, if `_X` is in the range [_Min, _Max]. - -```cpp -inline float smoothstep( - float _Min, - float _Max, - float _X) restrict(amp); -``` - -### Parameters - -*_Min*\ -Floating-point value - -*_Max*\ -Floating-point value - -*_X*\ -Floating-point value - -### Return Value - -Returns 0 if `_X` is less than _Min; 1 if `_X` is greater than _Max; otherwise, a value between 0 and 1 if `_X` is in the range [_Min, _Max]. - -## step - -Compares two values, returning 0 or 1 based on which value is greater. - -```cpp -inline float step( - float _Y, - float _X) restrict(amp); -``` - -### Parameters - -*_Y*\ -Floating-point value - -*_X*\ -Floating-point value - -### Return Value - -Returns 1 if the `_X` is greater than or equal to `_Y`; otherwise, 0. - -## umax - -Determine the maximum numeric value of the arguments. - -```cpp -inline unsigned int umax( - unsigned int _X, - unsigned int _Y) restrict(amp); -``` - -### Parameters - -*_X*\ -Integer value - -*_Y*\ -Integer value - -### Return Value - -Return the maximum numeric value of the arguments. - -## umin - -Determine the minimum numeric value of the arguments. - -```cpp -inline unsigned int umin( - unsigned int _X, - unsigned int _Y) restrict(amp); -``` - -### Parameters - -*_X*\ -Integer value - -*_Y*\ -Integer value - -### Return Value - -Return the minimum numeric value of the arguments. - -## See also - -[Concurrency::direct3d Namespace](concurrency-direct3d-namespace.md) diff --git a/docs/parallel/amp/reference/concurrency-direct3d-namespace.md b/docs/parallel/amp/reference/concurrency-direct3d-namespace.md deleted file mode 100644 index 3c371c751ec..00000000000 --- a/docs/parallel/amp/reference/concurrency-direct3d-namespace.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -description: "Learn more about: Concurrency::direct3d Namespace" -title: "Concurrency::direct3d Namespace" -ms.date: "11/04/2016" -f1_keywords: ["amp/Concurrency::direct3d", "amprt/Concurrency::direct3d", "amp_short_vectors/Concurrency::direct3d", "amp_graphics/Concurrency::direct3d", "amp_math/Concurrency::direct3d"] -helpviewer_keywords: ["direct3d namespace"] -ms.assetid: 9566a2f1-4d5f-43e4-a3ac-676643d38420 ---- -# Concurrency::direct3d Namespace - -The `direct3d` namespace provides functions that support D3D interoperability. It lets you use D3D resources for compute in AMP code. It also allows use of resources created in AMP in D3D code, without creating redundant intermediate copies. You can incrementally accelerate the compute intensive sections of your DirectX applications by using C++ AMP, and use the D3D API on data produced from AMP computations. - -## Syntax - -```cpp -namespace direct3d; -``` - -## Members - -### Classes - -|Name|Description| -|----------|-----------------| -|[scoped_d3d_access_lock Class](scoped-d3d-access-lock-class.md)|An RAII wrapper for a D3D access lock on an `accelerator_view` object.| - -### Structures - -|Name|Description| -|----------|-----------------| -|[adopt_d3d_access_lock_t Structure](adopt-d3d-access-lock-t-structure.md)|Tag type to indicate the D3D access lock should be adopted rather than acquired.| - -### Functions - -|Name|Description| -|----------|-----------------| -|[abs](concurrency-direct3d-namespace-functions-amp.md#abs)|Returns the absolute value of the argument| -|[clamp](concurrency-direct3d-namespace-functions-amp.md#clamp)|Overloaded. Clamps _X to the specified _Min and _Max range| -|[countbits](concurrency-direct3d-namespace-functions-amp.md#countbits)|Counts the number of set bits in _X| -|[create_accelerator_view](concurrency-direct3d-namespace-functions-amp.md#create_accelerator_view)|Creates an [accelerator_view Class](accelerator-view-class.md) from a pointer to a Direct3D device interface| -|[d3d_access_lock](concurrency-direct3d-namespace-functions-amp.md#d3d_access_lock)|Acquires a lock on an accelerator_view to safely perform D3D operations on resources shared with the accelerator_view| -|[d3d_access_try_lock](concurrency-direct3d-namespace-functions-amp.md#d3d_access_try_lock)|Attempt to acquire the D3D access lock on an accelerator_view without blocking.| -|[d3d_access_unlock](concurrency-direct3d-namespace-functions-amp.md#d3d_access_unlock)|Release the D3D access lock on the given accelerator_view.| -|[firstbithigh](concurrency-direct3d-namespace-functions-amp.md#firstbithigh)|Gets the location of the first set bit in _X, starting from the highest order bit and working downward| -|[firstbitlow](concurrency-direct3d-namespace-functions-amp.md#firstbitlow)|Gets the location of the first set bit in _X, starting from the lowest order bit and working upward| -|[get_buffer](concurrency-direct3d-namespace-functions-amp.md#get_buffer)|Get the D3D buffer interface underlying an array.| -|[imax](concurrency-direct3d-namespace-functions-amp.md#imax)|Compares two values, returning the value that's greater.| -|[imin](concurrency-direct3d-namespace-functions-amp.md#imin)|Compares two values, returning the value that's smaller.| -|[is_timeout_disabled](concurrency-direct3d-namespace-functions-amp.md#is_timeout_disabled)|Returns a boolean flag indicating if timeout is disabled for the specified accelerator_view.| -|[mad](concurrency-direct3d-namespace-functions-amp.md#mad)|Overloaded. Performs an arithmetic multiply/add operation on three arguments: _X \* _Y + _Z| -|[make_array](concurrency-direct3d-namespace-functions-amp.md#make_array)|Create an array from a D3D buffer interface pointer.| -|[noise](concurrency-direct3d-namespace-functions-amp.md#noise)|Generates a random value by using the Perlin noise algorithm| -|[radians](concurrency-direct3d-namespace-functions-amp.md#radians)|Converts _X from degrees to radians| -|[rcp](concurrency-direct3d-namespace-functions-amp.md#rcp)|Calculates a fast, approximate reciprocal of the argument| -|[reversebits](concurrency-direct3d-namespace-functions-amp.md#reversebits)|Reverses the order of the bits in _X| -|[saturate](concurrency-direct3d-namespace-functions-amp.md#saturate)|Clamps _X within the range of 0 to 1| -|[sign](concurrency-direct3d-namespace-functions-amp.md#sign)|Overloaded. Returns the sign of the argument| -|[smoothstep](concurrency-direct3d-namespace-functions-amp.md#smoothstep)|Returns a smooth Hermite interpolation between 0 and 1, if _X is in the range [_Min, _Max].| -|[step](concurrency-direct3d-namespace-functions-amp.md#step)|Compares two values, returning 0 or 1 based on which value is greater| -|[umax](concurrency-direct3d-namespace-functions-amp.md#umax)|Compares two unsigned values, returning the value that's greater.| -|[umin](concurrency-direct3d-namespace-functions-amp.md#umin)|Compares two unsigned values, returning the value that's smaller.| - -## Requirements - -**Header:** amp.h - -**Namespace:** Concurrency - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md b/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md deleted file mode 100644 index 3bbf140a6af..00000000000 --- a/docs/parallel/amp/reference/concurrency-fast-math-namespace-functions.md +++ /dev/null @@ -1,1211 +0,0 @@ ---- -title: "Concurrency::fast_math namespace functions" -description: "Learn more about: Concurrency::fast_math namespace functions" -ms.date: 11/04/2016 -f1_keywords: ["amp_math/Concurrency::fast_math::acos", "amp_math/Concurrency::fast_math::asin", "amp_math/Concurrency::fast_math::asinf", "amp_math/Concurrency::fast_math::atan2", "amp_math/Concurrency::fast_math::atan2f", "amp_math/Concurrency::fast_math::ceil", "amp_math/Concurrency::fast_math::ceilf", "amp_math/Concurrency::fast_math::cosf", "amp_math/Concurrency::fast_math::cosh", "amp_math/Concurrency::fast_math::exp", "amp_math/Concurrency::fast_math::exp2", "amp_math/Concurrency::fast_math::expf", "amp_math/Concurrency::fast_math::fabs", "amp_math/Concurrency::fast_math::floor", "amp_math/Concurrency::fast_math::floorf", "amp_math/Concurrency::fast_math::fmaxf", "amp_math/Concurrency::fast_math::fmin", "amp_math/Concurrency::fast_math::fmod", "amp_math/Concurrency::fast_math::fmodf", "amp_math/Concurrency::fast_math::frexpf", "amp_math/Concurrency::fast_math::isfinite", "amp_math/Concurrency::fast_math::isnan", "amp_math/Concurrency::fast_math::ldexp", "amp_math/Concurrency::fast_math::log", "amp_math/Concurrency::fast_math::log10", "amp_math/Concurrency::fast_math::log2", "amp_math/Concurrency::fast_math::log2f", "amp_math/Concurrency::fast_math::modf", "amp_math/Concurrency::fast_math::modff", "amp_math/Concurrency::fast_math::powf", "amp_math/Concurrency::fast_math::round", "amp_math/Concurrency::fast_math::rsqrt", "amp_math/Concurrency::fast_math::rsqrtf", "amp_math/Concurrency::fast_math::signbitf", "amp_math/Concurrency::fast_math::sin", "amp_math/Concurrency::fast_math::sincosf", "amp_math/Concurrency::fast_math::sinf", "amp_math/Concurrency::fast_math::sinhf", "amp_math/Concurrency::fast_math::sqrt", "amp_math/Concurrency::fast_math::tan", "amp_math/Concurrency::fast_math::tanf", "amp_math/Concurrency::fast_math::tanhf", "amp_math/Concurrency::fast_math::trunc"] ---- -# Concurrency::fast_math namespace functions - -The following functions are available in the `Concurrency::fast_math` namespace: - -## acos - -Calculates the arccosine of the argument - -```cpp -inline float acos(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the arccosine value of the argument - -## acosf - -Calculates the arccosine of the argument - -```cpp -inline float acosf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the arccosine value of the argument - -## asin - -Calculates the arcsine of the argument - -```cpp -inline float asin(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the arcsine value of the argument - -## asinf - -Calculates the arcsine of the argument - -```cpp -inline float asinf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the arcsine value of the argument - -## atan - -Calculates the arctangent of the argument - -```cpp -inline float atan(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the arctangent value of the argument - -## atan2 - -Calculates the arctangent of _Y/_X - -```cpp -inline float atan2( - float _Y, - float _X) restrict(amp); -``` - -### Parameters - -*_Y*
-Floating-point value - -*_X*
-Floating-point value - -### Return Value - -Returns the arctangent value of _Y/_X - -## atan2f - -Calculates the arctangent of _Y/_X - -```cpp -inline float atan2f( - float _Y, - float _X) restrict(amp); -``` - -### Parameters - -*_Y*
-Floating-point value - -*_X*
-Floating-point value - -### Return Value - -Returns the arctangent value of _Y/_X - -## atanf - -Calculates the arctangent of the argument - -```cpp -inline float atanf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the arctangent value of the argument - -## ceil - -Calculates the ceiling of the argument - -```cpp -inline float ceil(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the ceiling of the argument - -## ceilf - -Calculates the ceiling of the argument - -```cpp -inline float ceilf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the ceiling of the argument - -## cosf - -Calculates the cosine of the argument - -```cpp -inline float cosf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the cosine value of the argument - -## coshf - -Calculates the hyperbolic cosine value of the argument - -```cpp -inline float coshf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the hyperbolic cosine value of the argument - -## cos - -Calculates the cosine of the argument - -```cpp -inline float cos(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the cosine value of the argument - -## cosh - -Calculates the hyperbolic cosine value of the argument - -```cpp -inline float cosh(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the hyperbolic cosine value of the argument - -## exp - -Calculates the base-e exponential of the argument - -```cpp -inline float exp(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-e exponential of the argument - -## exp2 - -Calculates the base-2 exponential of the argument - -```cpp -inline float exp2(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-2 exponential of the argument - -## exp2f - -Calculates the base-2 exponential of the argument - -```cpp -inline float exp2f(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-2 exponential of the argument - -## expf - -Calculates the base-e exponential of the argument - -```cpp -inline float expf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-e exponential of the argument - -## fabs - -Returns the absolute value of the argument - -```cpp -inline float fabs(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Integer value - -### Return Value - -Returns the absolute value of the argument - -## fabsf - -Returns the absolute value of the argument - -```cpp -inline float fabsf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the absolute value of the argument - -## floor - -Calculates the floor of the argument - -```cpp -inline float floor(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the floor of the argument - -## floorf - -Calculates the floor of the argument - -```cpp -inline float floorf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the floor of the argument - -## fmax - -Determine the maximum numeric value of the arguments - -```cpp -inline float max( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Integer value - -*_Y*
-Integer value - -### Return Value - -Return the maximum numeric value of the arguments - -## fmaxf - -Determine the maximum numeric value of the arguments - -```cpp -inline float fmaxf( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Return the maximum numeric value of the arguments - -## fmin - -Determine the minimum numeric value of the arguments - -```cpp -inline float min( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Integer value - -*_Y*
-Integer value - -### Return Value - -Return the minimum numeric value of the arguments - -## fminf - -Determine the minimum numeric value of the arguments - -```cpp -inline float fminf( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Return the minimum numeric value of the arguments - -## fmod - -Calculates the floating-point remainder of _X/_Y - -```cpp -inline float fmod( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Returns the floating-point remainder of _X/_Y - -## fmodf - -Calculates the floating-point remainder of _X/_Y. - -```cpp -inline float fmodf( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Returns the floating-point remainder of _X/_Y - -## frexp - -Gets the mantissa and exponent of _X - -```cpp -inline float frexp( - float _X, - _Out_ int* _Exp) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Exp*
-Returns the integer exponent of _X in floating-point value - -### Return Value - -Returns the mantissa _X - -## frexpf - -Gets the mantissa and exponent of _X - -```cpp -inline float frexpf( - float _X, - _Out_ int* _Exp) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Exp*
-Returns the integer exponent of _X in floating-point value - -### Return Value - -Returns the mantissa _X - -## isfinite - -Determines whether the argument has a finite value - -```cpp -inline int isfinite(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns a nonzero value if and only if the argument has a finite value - -## isinf - -Determines whether the argument is an infinity - -```cpp -inline int isinf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns a nonzero value if and only if the argument has an infinite value - -## isnan - -Determines whether the argument is a NaN - -```cpp -inline int isnan(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns a nonzero value if and only if the argument has a NaN value - -## ldexp - -Computes a real number from the mantissa and exponent - -```cpp -inline float ldexp( - float _X, - int _Exp) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value, mentissa - -*_Exp*
-Integer exponent - -### Return Value - -Returns _X \* 2^_Exp - -## ldexpf - -Computes a real number from the mantissa and exponent - -```cpp -inline float ldexpf( - float _X, - int _Exp) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value, mentissa - -*_Exp*
-Integer exponent - -### Return Value - -Returns _X \* 2^_Exp - -## log - -Calculates the base-e logarithm of the argument - -```cpp -inline float log(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-e logarithm of the argument - -## log10 - -Calculates the base-10 logarithm of the argument - -```cpp -inline float log10(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-10 logarithm of the argument - -## log10f - -Calculates the base-10 logarithm of the argument - -```cpp -inline float log10f(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-10 logarithm of the argument - -## log2 - -Calculates the base-2 logarithm of the argument - -```cpp -inline float log2(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-2 logarithm of the argument - -## log2f - -Calculates the base-2 logarithm of the argument - -```cpp -inline float log2f(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-10 logarithm of the argument - -## logf - -Calculates the base-e logarithm of the argument - -```cpp -inline float logf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-e logarithm of the argument - -## modf - -Splits _X into fractional and integer parts. - -```cpp -inline float modf( - float _X, - float* _Ip) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Ip*
-Receives integer part of the value - -### Return Value - -Returns the signed fractional portion of _X - -## modff - -Splits _X into fractional and integer parts. - -```cpp -inline float modff( - float _X, - float* _Ip) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Ip*
-Receives integer part of the value - -### Return Value - -Returns the signed fractional portion of _X - -## pow - -Calculates _X raised to the power of _Y - -```cpp -inline float pow( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value, base - -*_Y*
-Floating-point value, exponent - -### Return Value - -Returns the value of _X raised to the power of _Y - -## powf - -Calculates _X raised to the power of _Y - -```cpp -inline float powf( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value, base - -*_Y*
-Floating-point value, exponent - -### Return Value - -## round - -Rounds _X to the nearest integer - -```cpp -inline float round(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the nearest integer of _X - -## roundf - -Rounds _X to the nearest integer - -```cpp -inline float roundf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the nearest integer of _X - -## rsqrt - -Returns the reciprocal of the square root of the argument - -```cpp -inline float rsqrt(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the reciprocal of the square root of the argument - -## rsqrtf - -Returns the reciprocal of the square root of the argument - -```cpp -inline float rsqrtf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the reciprocal of the square root of the argument - -## signbit - -Determines whether the sign of _X is negative - -```cpp -inline int signbit(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns a nonzero value if and only if the sign of _X is negative - -## signbitf - -Determines whether the sign of _X is negative - -```cpp -inline int signbitf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns a nonzero value if and only if the sign of _X is negative - -## sin - -Calculates the sine value of the argument - -```cpp -inline float sin(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the sine value of the argument - -## sinf - -Calculates the sine value of the argument - -```cpp -inline float sinf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the sine value of the argument - -## sincos - -Calculates sine and cosine value of _X - -```cpp -inline void sincos( - float _X, - float* _S, - float* _C) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_S*
-Returns the sine value of _X - -*_C*
-Returns the cosine value of _X - -## sincosf - -Calculates sine and cosine value of _X - -```cpp -inline void sincosf( - float _X, - float* _S, - float* _C) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_S*
-Returns the sine value of _X - -*_C*
-Returns the cosine value of _X - -## sinh - -Calculates the hyperbolic sine value of the argument - -```cpp -inline float sinh(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the hyperbolic sine value of the argument - -## sinhf - -Calculates the hyperbolic sine value of the argument - -```cpp -inline float sinhf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the hyperbolic sine value of the argument - -## sqrt - -Calculates the squre root of the argument - -```cpp -inline float sqrt(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the squre root of the argument - -## sqrtf - -Calculates the squre root of the argument - -```cpp -inline float sqrtf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the squre root of the argument - -## tan - -Calculates the tangent value of the argument - -```cpp -inline float tan(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the tangent value of the argument - -## tanf - -Calculates the tangent value of the argument - -```cpp -inline float tanf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the tangent value of the argument - -## tanh - -Calculates the hyperbolic tangent value of the argument - -```cpp -inline float tanh(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the hyperbolic tangent value of the argument - -## tanhf - -Calculates the hyperbolic tangent value of the argument - -```cpp -inline float tanhf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the hyperbolic tangent value of the argument - -## trunc - -Truncates the argument to the integer component - -```cpp -inline float trunc(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the integer component of the argument - -## truncf - -Truncates the argument to the integer component - -```cpp -inline float truncf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the integer component of the argument - -## Requirements - -**Header:** amp_math.h -**Namespace:** Concurrency::fast_math - -## See also - -[Concurrency::fast_math Namespace](concurrency-fast-math-namespace.md) diff --git a/docs/parallel/amp/reference/concurrency-fast-math-namespace.md b/docs/parallel/amp/reference/concurrency-fast-math-namespace.md deleted file mode 100644 index 38e9403d86e..00000000000 --- a/docs/parallel/amp/reference/concurrency-fast-math-namespace.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -description: "Learn more about: Concurrency::fast_math Namespace" -title: "Concurrency::fast_math Namespace" -ms.date: "11/04/2016" -f1_keywords: ["amp_math/Concurrency::fast_math"] -ms.assetid: 54fed939-9902-49db-9f29-e98fd9821508 ---- -# Concurrency::fast_math Namespace - -Functions in the `fast_math` namespace have lower accuracy, support only single-precision (**`float`**), and call the DirectX intrinsics. There are two versions of each function, for example `cos` and `cosf`. Both versions take and return a **`float`**, but each calls the same DirectX intrinsic. - -## Syntax - -```cpp -namespace fast_math; -``` - -## Members - -### Functions - -|Name|Description| -|----------|-----------------| -|[cos](concurrency-fast-math-namespace-functions.md#cos)|Calculates the arccosine of the argument| -|[cosf](concurrency-fast-math-namespace-functions.md#cosf)|Calculates the arccosine of the argument| -|[asin](concurrency-fast-math-namespace-functions.md#asin)|Calculates the arcsine of the argument| -|[asinf](concurrency-fast-math-namespace-functions.md#asinf)|Calculates the arcsine of the argument| -|[atan](concurrency-fast-math-namespace-functions.md#atan)|Calculates the arctangent of the argument| -|[atan2](concurrency-fast-math-namespace-functions.md#atan2)|Calculates the arctangent of _Y/_X| -|[atan2f](concurrency-fast-math-namespace-functions.md#atan2f)|Calculates the arctangent of _Y/_X| -|[atanf](concurrency-fast-math-namespace-functions.md#atanf)|Calculates the arctangent of the argument| -|[ceil](concurrency-fast-math-namespace-functions.md#ceil)|Calculates the ceiling of the argument| -|[ceilf](concurrency-fast-math-namespace-functions.md#ceilf)|Calculates the ceiling of the argument| -|[cos](concurrency-fast-math-namespace-functions.md#cos)|Calculates the cosine of the argument| -|[cosf](concurrency-fast-math-namespace-functions.md#cosf)|Calculates the cosine of the argument| -|[cosh](concurrency-fast-math-namespace-functions.md#cosh)|Calculates the hyperbolic cosine value of the argument| -|[coshf](concurrency-fast-math-namespace-functions.md#coshf)|Calculates the hyperbolic cosine value of the argument| -|[exp](concurrency-fast-math-namespace-functions.md#exp)|Calculates the base-e exponential of the argument| -|[exp2](concurrency-fast-math-namespace-functions.md#exp2)|Calculates the base-2 exponential of the argument| -|[exp2f](concurrency-fast-math-namespace-functions.md#exp2f)|Calculates the base-2 exponential of the argument| -|[expf](concurrency-fast-math-namespace-functions.md#expf)|Calculates the base-e exponential of the argument| -|[fabs](concurrency-fast-math-namespace-functions.md#fabs)|Returns the absolute value of the argument| -|[fabsf](concurrency-fast-math-namespace-functions.md#fabsf)|Returns the absolute value of the argument| -|[floor](concurrency-fast-math-namespace-functions.md#floor)|Calculates the floor of the argument| -|[floorf](concurrency-fast-math-namespace-functions.md#floorf)|Calculates the floor of the argument| -|[fmax](concurrency-fast-math-namespace-functions.md#fmax)|Determine the maximum numeric value of the arguments| -|[fmaxf](concurrency-fast-math-namespace-functions.md#fmaxf)|Determine the maximum numeric value of the arguments| -|[fmin](concurrency-fast-math-namespace-functions.md#fmin)|Determine the minimum numeric value of the arguments| -|[fminf](concurrency-fast-math-namespace-functions.md#fminf)|Determine the minimum numeric value of the arguments| -|[fmod](concurrency-fast-math-namespace-functions.md#fmod)|Calculates the floating-point remainder of _X/_Y| -|[fmodf](concurrency-fast-math-namespace-functions.md#fmodf)|Calculates the floating-point remainder of _X/_Y| -|[frexp](concurrency-fast-math-namespace-functions.md#frexp)|Gets the mantissa and exponent of _X| -|[frexpf](concurrency-fast-math-namespace-functions.md#frexpf)|Gets the mantissa and exponent of _X| -|[isfinite](concurrency-fast-math-namespace-functions.md#isfinite)|Determines whether the argument has a finite value| -|[isinf](concurrency-fast-math-namespace-functions.md#isinf)|Determines whether the argument is an infinity| -|[isnan](concurrency-fast-math-namespace-functions.md#isnan)|Determines whether the argument is a NaN| -|[ldexp](concurrency-fast-math-namespace-functions.md#ldexp)|Computes a real number from the mantissa and exponent| -|[ldexpf](concurrency-fast-math-namespace-functions.md#ldexpf)|Computes a real number from the mantissa and exponent| -|[log](concurrency-fast-math-namespace-functions.md#log)|Calculates the base-e logarithm of the argument| -|[log10](concurrency-fast-math-namespace-functions.md#log10)|Calculates the base-10 logarithm of the argument| -|[log10f](concurrency-fast-math-namespace-functions.md#log10f)|Calculates the base-10 logarithm of the argument| -|[log2](concurrency-fast-math-namespace-functions.md#log2)|Calculates the base-2 logarithm of the argument| -|[log2f](concurrency-fast-math-namespace-functions.md#log2f)|Calculates the base-2 logarithm of the argument| -|[logf](concurrency-fast-math-namespace-functions.md#logf)|Calculates the base-e logarithm of the argument| -|[modf](concurrency-fast-math-namespace-functions.md#modf)|Splits _X into fractional and integer parts.| -|[modff](concurrency-fast-math-namespace-functions.md#modff)|Splits _X into fractional and integer parts.| -|[pow](concurrency-fast-math-namespace-functions.md#pow)|Calculates _X raised to the power of _Y| -|[powf](concurrency-fast-math-namespace-functions.md#powf)|Calculates _X raised to the power of _Y| -|[round](concurrency-fast-math-namespace-functions.md#round)|Rounds _X to the nearest integer| -|[roundf](concurrency-fast-math-namespace-functions.md#roundf)|Rounds _X to the nearest integer| -|[rsqrt](concurrency-fast-math-namespace-functions.md#rsqrt)|Returns the reciprocal of the square root of the argument| -|[rsqrtf](concurrency-fast-math-namespace-functions.md#rsqrtf)|Returns the reciprocal of the square root of the argument| -|[signbit](concurrency-fast-math-namespace-functions.md#signbit)|Returns the sign of the argument| -|[signbitf](concurrency-fast-math-namespace-functions.md#signbitf)|Returns the sign of the argument| -|[sin](concurrency-fast-math-namespace-functions.md#sin)|Calculates the sine value of the argument| -|[sincos](concurrency-fast-math-namespace-functions.md#sincos)|Calculates sine and cosine value of _X| -|[sincosf](concurrency-fast-math-namespace-functions.md#sincosf)|Calculates sine and cosine value of _X| -|[sinf](concurrency-fast-math-namespace-functions.md#sinf)|Calculates the sine value of the argument| -|[sinh](concurrency-fast-math-namespace-functions.md#sinh)|Calculates the hyperbolic sine value of the argument| -|[sinhf](concurrency-fast-math-namespace-functions.md#sinhf)|Calculates the hyperbolic sine value of the argument| -|[sqrt](concurrency-fast-math-namespace-functions.md#sqrt)|Calculates the square root of the argument| -|[sqrtf](concurrency-fast-math-namespace-functions.md#sqrtf)|Calculates the square root of the argument| -|[tan](concurrency-fast-math-namespace-functions.md#tan)|Calculates the tangent value of the argument| -|[tanf](concurrency-fast-math-namespace-functions.md#tanf)|Calculates the tangent value of the argument| -|[tanh](concurrency-fast-math-namespace-functions.md#tanh)|Calculates the hyperbolic tangent value of the argument| -|[tanhf](concurrency-fast-math-namespace-functions.md#tanhf)|Calculates the hyperbolic tangent value of the argument| -|[trunc](concurrency-fast-math-namespace-functions.md#trunc)|Truncates the argument to the integer component| -|[truncf](concurrency-fast-math-namespace-functions.md#truncf)|Truncates the argument to the integer component| - -## Requirements - -**Header:** amp_math.h - -**Namespace:** Concurrency::fast_math - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md b/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md deleted file mode 100644 index cea85945655..00000000000 --- a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md +++ /dev/null @@ -1,162 +0,0 @@ ---- -title: "Concurrency::graphics::direct3d namespace functions" -description: "Learn more about: Concurrency::graphics::direct3d namespace functions" -ms.date: 11/04/2016 -f1_keywords: ["amp_graphics/Concurrency::graphics::direct3d::get_sampler", "amp_graphics/Concurrency::graphics::direct3d::make_sampler", "amp_graphics/Concurrency::graphics::direct3d::make_texture"] ---- -# Concurrency::graphics::direct3d namespace functions - -The following functions are available in the `Concurrency::graphics::direct3d` namespace: - -## get_sampler - -Get the D3D sampler state interface on the given accelerator view that represents the specified sampler object. - -```cpp -IUnknown* get_sampler( - const Concurrency::accelerator_view& _Av, - const sampler& _Sampler) restrict(amp); -``` - -### Parameters - -*_Av*
-A D3D accelerator view on which the D3D sampler state is to be created. - -*_Sampler*
-A sampler object for which the underlying D3D sampler state interface is created. - -### Return Value - -The IUnknown interface pointer corresponding to the D3D sampler state that represents the given sampler. - -## get_texture - -Gets the Direct3D texture interface underlying the specified [texture](texture-class.md) object. - -```cpp -template< - typename value_type, - int _Rank -> -_Ret_ IUnknown *get_texture( - const texture& _Texture) restrict(cpu); - -template< - typename value_type, - int _Rank -> -_Ret_ IUnknown *get_texture( - const writeonly_texture_view& _Texture) restrict(cpu); - -template< - typename value_type, - int _Rank -> -_Ret_ IUnknown *get_texture( - const texture_view& _Texture) restrict(cpu); -``` - -### Parameters - -*value_type*
-The element type of the texture. - -*_Rank*
-The rank of the texture. - -*_Texture*
-A texture or texture view associated with the accelerator_view for which the underlying Direct3D texture interface is returned. - -### Return Value - -The IUnknown interface pointer corresponding to the Direct3D texture underlying the texture. - -## make_sampler - -Create a sampler from a D3D sampler state interface pointer. - -```cpp -sampler make_sampler(_In_ IUnknown* _D3D_sampler) restrict(amp); -``` - -### Parameters - -*_D3D_sampler*
-IUnknown interface pointer of the D3D sampler state to create the sampler from. - -### Return Value - -A sampler represents the provided D3D sampler state. - -## make_texture - -Creates a [texture](texture-class.md) object by using the specified parameters. - -```cpp -template< - typename value_type, - int _Rank -> -texture make_texture( - const Concurrency::accelerator_view& _Av, - _In_ IUnknown* _D3D_texture, - DXGI_FORMAT _View_format = DXGI_FORMAT_UNKNOWN) restrict(cpu); -``` - -### Parameters - -*value_type*
-The type of the elements in the texture. - -*_Rank*
-The rank of the texture. - -*_Av*
-A D3D accelerator view on which the texture is to be created. - -*_D3D_texture*
-IUnknown interface pointer of the D3D texture to create the texture from. - -*_View_format*
-The DXGI format to use for views created from this texture. Pass DXGI_FORMAT_UNKNOWN (the default) to derive the format from the underlying format of _D3D_texture and the value_type of this template. The provided format must be compatible with the underlying format of _D3D_texture. - -### Return Value - -A texture using the provided D3D texture. - -## msad4 - -Compares a 4-byte reference value and an 8-byte source value and accumulates a vector of 4 sums. Each sum corresponds to the masked sum of absolute differences of different byte alignments between the reference value and the source value. - -```cpp -inline uint4 msad4( - uint _Reference, - uint2 _Source, - uint4 _Accum) restrict(amp); -``` - -### Parameters - -*_Reference*
-The reference array of 4 bytes in one uint value - -*_Source*
-The source array of 8 bytes in a vector of two uint values. - -*_Accum*
-A vector of 4 values to be added to the masked sum of absolute differences of the different byte alignments between the reference value and the source value. - -### Return Value - -Returns a vector of 4 sums. Each sum corresponds to the masked sum of absolute differences of different byte alignments between the reference value and the source value. - -## Requirements - -**Header:** amp_graphics.h - -**Namespace:** Concurrency::graphics::direct3d - -## See also - -[Concurrency::graphics::direct3d Namespace](concurrency-graphics-direct3d-namespace.md) diff --git a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md b/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md deleted file mode 100644 index 05afb7f5aed..00000000000 --- a/docs/parallel/amp/reference/concurrency-graphics-direct3d-namespace.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "Concurrency::graphics::direct3d Namespace" -description: "Learn more about: Concurrency::graphics::direct3d Namespace" -ms.date: 11/04/2016 -f1_keywords: ["amp_graphics/Concurrency::graphics::direct3d", "amp_short_vectors/Concurrency::graphics::direct3d"] ---- -# Concurrency::graphics::direct3d Namespace - -Provides the [get_texture](concurrency-graphics-direct3d-namespace-functions.md#get_texture) and [make_texture](concurrency-graphics-direct3d-namespace-functions.md#make_texture) methods. - -## Syntax - -```cpp -namespace direct3d; -``` - -## Members - -### Functions - -|Name|Description| -|----------|-----------------| -|[get_sampler](concurrency-graphics-direct3d-namespace-functions.md#get_sampler)|Get the Direct3D sampler state interface on the given accelerator view that represents the specified sampler object.| -|[get_texture](concurrency-graphics-direct3d-namespace-functions.md#get_texture)|Gets the Direct3D texture interface underlying the specified [texture](texture-class.md) object.| -|[make_sampler](concurrency-graphics-direct3d-namespace-functions.md#make_sampler)|Create a sampler from a Direct3D sampler state interface pointer.| -|[make_texture](concurrency-graphics-direct3d-namespace-functions.md#make_texture)|Creates a [texture](texture-class.md) object by using the specified parameters.| -|[msad4](concurrency-graphics-direct3d-namespace-functions.md#msad4)|Compares a 4-byte reference value and an 8-byte source value and accumulates a vector of 4 sums.| - -## Requirements - -**Header:** amp_graphics.h - -**Namespace:** Concurrency::graphics - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/concurrency-graphics-namespace-enums.md b/docs/parallel/amp/reference/concurrency-graphics-namespace-enums.md deleted file mode 100644 index 212776f47b4..00000000000 --- a/docs/parallel/amp/reference/concurrency-graphics-namespace-enums.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -description: "Learn more about: Concurrency::graphics namespace enums" -title: "Concurrency::graphics namespace enums" -ms.date: "11/04/2016" -f1_keywords: ["amp_graphics/concurrency::graphics::address_mode", "amp_graphics/concurrency::graphics::filter_mode"] -ms.assetid: 1d2e1859-a3d7-4d3d-8e03-1a877a86b3e0 ---- -# Concurrency::graphics namespace enums - -|Name|Description| -|-|-| -|[_mode Enumeration](#address_mode)|[filter_mode Enumeration](#filter_mode)| - -## address_mode Enumeration - -Enumeration type use to denote address modes supported for texture sampling. - -```cpp -enum address_mode; -``` - -## filter_mode Enumeration - -Enumeration type use to denote filter modes supported for texture sampling. - -```cpp -enum filter_mode; -``` - -## Requirements - -**Header:** amp_graphics.h -**Namespace:** Concurrency::graphics - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/concurrency-graphics-namespace-functions.md b/docs/parallel/amp/reference/concurrency-graphics-namespace-functions.md deleted file mode 100644 index e9e8eef1890..00000000000 --- a/docs/parallel/amp/reference/concurrency-graphics-namespace-functions.md +++ /dev/null @@ -1,293 +0,0 @@ ---- -title: "Concurrency::graphics namespace functions" -description: "Learn more about: Concurrency::graphics namespace functions" -ms.date: 11/04/2016 -f1_keywords: ["amp_graphics/Concurrency::fast_math::copy_async", "amp_graphics/Concurrency::fast_math::copy"] ---- -# Concurrency::graphics namespace functions - -The following functions are available in the `Concurrency::graphics` namespace: - -## copy Function (Concurrency::graphics Namespace) - -Copies a source texture into a destination buffer, or copies a source buffer into a destination buffer. The general form of this function is `copy(src, dest)`. - -```cpp -template < - typename _Src_type, - typename = typename std::enable_if::is_texture, void>::type> -> -void copy ( - const _Src_type& _Src, - _Out_ void* _Dst, - unsigned int _Dst_byte_size); - -template < - typename _Src_type, - typename = typename std::enable_if::is_texture, void>::type -> -void copy( - const _Src_type& _Src, - const index<_Src_type::rank>& _Src_offset, - const extent<_Src_type::rank>& _Copy_extent, - _Out_ void* _Dst, - unsigned int _Dst_byte_size); - -template < - typename _Dst_type, - typename = typename std::enable_if::is_texture, void>::type -> -void copy( - const void* _Src, - unsigned int _Src_byte_size, _Dst_type& _Dst); - -template < - typename _Dst_type, - typename = typename std::enable_if::is_texture, void>::type -> -void copy( - const void* _Src, - unsigned int _Src_byte_size, - _Dst_type& _Dst, - const index<_Dst_type::rank>& _Dst_offset, - const extent<_Dst_type::rank>& _Copy_extent); - -template < - typename InputIterator, - typename _Dst_type, - typename = typename std::enable_if::is_texture, void>::type -> -void copy(InputIterator first, InputIterator last, _Dst_type& _Dst); - -template < - typename InputIterator, - typename _Dst_type, - typename = typename std::enable_if::is_texture, void>::type ->void copy(InputIterator first, InputIterator last, _Dst_type& _Dst, - const index<_Dst_type::rank>& _Dst_offset, - const extent<_Dst_type::rank>& _Copy_extent); - -template < - typename _Src_type, - typename OutputIterator, - typename = typename std::enable_if::is_texture&& !details::texture_traits::is_texture, void>::type -> -void copy( - const _Src_type& _Src, OutputIterator _Dst); - -template < - typename _Src_type, - typename OutputIterator, - typename = typename std::enable_if::is_texture&& !details::texture_traits::is_texture, void>::type -> -void copy ( - const _Src_type& _Src, - const index<_Src_type::rank>& _Src_offset, - const extent<_Src_type::rank>& _Copy_extent, OutputIterator _Dst); - -template < - typename _Src_type, - typename _Dst_type, - typename = typename std::enable_if::is_texture&& details::texture_traits<_Dst_type>::is_texture, void>::type -> -void copy ( - const _Src_type& _Src, _Dst_type& _Dst); - -template < - typename _Src_type, - typename _Dst_type, - typename = typename std::enable_if::is_texture&& details::texture_traits<_Dst_type>::is_texture, - void>::type -> -void copy ( - const _Src_type& _Src, - const index<_Src_type::rank>& _Src_offset, _Dst_type& _Dst, - const index<_Dst_type::rank>& _Dst_offset, - const extent<_Src_type::rank>& _Copy_extent); -``` - -### Parameters - -*_Copy_extent*
-The extent of the texture section to be copied. - -*_Dst*
-The object to copy to. - -*_Dst_byte_size*
-The number of bytes in the destination. - -*_Dst_type*
-The type of the destination object. - -*_Dst_offset*
-The offset into the destination at which to begin copying. - -*InputIterator*
-The type of the input iterator. - -*OutputIterator*
-The type of the output iterator. - -*_Src*
-To object to copy. - -*_Src_byte_size*
-The number of bytes in the source. - -*_Src_type*
-The type of the source object. - -*_Src_offset*
-The offset into the source from which to begin copying. - -*first*
-A beginning iterator into the source container. - -*last*
-An ending iterator into the source container. - -## copy_async Function (Concurrency::graphics Namespace) - -Asynchronously copies a source texture into a destination buffer, or copies a source buffer into a destination buffer, and then returns a [completion_future](completion-future-class.md) object that can be waited on. Data can't be copied when code is running on an accelerator. The general form of this function is `copy(src, dest)`. - -```cpp -template< - typename _Src_type, - typename = typename std::enable_if::is_texture, void>::type -> -concurrency::completion_future copy_async( - const _Src_type& _Src, - _Out_ void* _Dst, - unsigned int _Dst_byte_size); - -template< - typename _Src_type, - typename = typename std::enable_if::is_texture, void>::type -> -concurrency::completion_future copy_async( - const _Src_type& _Src, - const index<_Src_type::rank>& _Src_offset, - const extent<_Src_type::rank>& _Copy_extent, - _Out_ void* _Dst, - unsigned int _Dst_byte_size); - -template < - typename _Dst_type, - typename = typename std::enable_if::is_texture, void>::type -> -concurrency::completion_future copy_async( - const void* _Src, - unsigned int _Src_byte_size, _Dst_type& _Dst); - -template < - typename _Dst_type, - typename = typename std::enable_if::is_texture, void>::type -> -concurrency::completion_future copy_async( - const void* _Src, - unsigned int _Src_byte_size, _Dst_type& _Dst, - const index<_Dst_type::rank>& _Dst_offset, - const extent<_Dst_type::rank>& _Copy_extent); - -template < - typename InputIterator, - typename _Dst_type, - typename = typename std::enable_if::is_texture, void>::type -> -concurrency::completion_future copy_async(InputIterator first, InputIterator last, _Dst_type& _Dst); - -template < - typename InputIterator, - typename _Dst_type, - typename = typename std::enable_if::is_texture, void>::type -> -concurrency::completion_future copy_async(InputIterator first, InputIterator last, _Dst_type& _Dst, - const index<_Dst_type::rank>& _Dst_offset, - const extent<_Dst_type::rank>& _Copy_extent); - -template < - typename _Src_type, - typename OutputIterator, - typename = typename std::enable_if::is_texture&& !details::texture_traits::is_texture, void>::type -> -concurrency::completion_future copy_async(_Src_type& _Src, OutputIterator _Dst); - -template < - typename _Src_type, - typename OutputIterator, - typename = typename std::enable_if::is_texture&& !details::texture_traits::is_texture, void>::type -> -concurrency::completion_future copy_async(_Src_type& _Src, - const index<_Src_type::rank>& _Src_offset, - const extent<_Src_type::rank>& _Copy_extent, - OutputIterator _Dst); - -template < - typename _Src_type, - typename _Dst_type, - typename = typename std::enable_if::is_texture&& details::texture_traits<_Dst_type>::is_texture, void>::type -> -concurrency::completion_future copy_async(_Src_type& _Src, _Dst_type& _Dst); - -template < - typename _Src_type, - typename _Dst_type, - typename = typename std::enable_if::is_texture&& details::texture_traits<_Dst_type>::is_texture, void>::type -> -concurrency::completion_future copy_async(_Src_type& _Src, - const index<_Src_type::rank>& _Src_offset, _Dst_type &_Dst, - const index<_Dst_type::rank>& _Dst_offset, - const extent<_Src_type::rank>& _Copy_extent); -``` - -### Parameters - -*_Copy_extent*
-The extent of the texture section to be copied. - -*_Dst*
-The object to copy to. - -*_Dst_byte_size*
-The number of bytes in the destination. - -*_Dst_type*
-The type of the destination object. - -*_Dst_offset*
-The offset into the destination at which to begin copying. - -*InputIterator*
-The type of the input iterator. - -*OutputIterator*
-The type of the output iterator. - -*_Src*
-To object to copy. - -*_Src_byte_size*
-The number of bytes in the source. - -*_Src_type*
-The type of the source object. - -*_Src_offset*
-The offset into the source from which to begin copying. - -*first*
-A beginning iterator into the source container. - -*last*
-An ending iterator into the source container. - -## Requirements - -**Header:** amp_graphics.h - -**Namespace:** Concurrency::graphics - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/concurrency-graphics-namespace.md b/docs/parallel/amp/reference/concurrency-graphics-namespace.md deleted file mode 100644 index cf1517f385d..00000000000 --- a/docs/parallel/amp/reference/concurrency-graphics-namespace.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -description: "Learn more about: Concurrency::graphics Namespace" -title: "Concurrency::graphics Namespace" -ms.date: "11/04/2016" -f1_keywords: ["AMP_GRAPHICS/Concurrency"] -ms.assetid: 4529d3b1-d7da-4ffb-82bf-080915e0f23e ---- -# Concurrency::graphics Namespace - -The graphics namespace provides types and functions that are designed for graphics programming. - -## Syntax - -```cpp -namespace graphics; -``` - -## Members - -### Namespaces - -|Name|Description| -|----------|-----------------| -|[Concurrency::graphics::direct3d Namespace](concurrency-graphics-direct3d-namespace.md)|Provides functions for Direct3D interop.| - -### Typedefs - -|Name|Description| -|----------|-----------------| -|`uint`|The element type for [uint_2 Class](uint-2-class.md), [uint_3 Class](uint-3-class.md), and [uint_4 Class](uint-4-class.md). Defined as `typedef unsigned int uint;`.| - -### Enumerations - -|Name|Description| -|----------|-----------------| -|[address_mode Enumeration](concurrency-graphics-namespace-enums.md#address_mode).|Specifies address modes supported for texture sampling.| -|[filter_mode Enumeration](concurrency-graphics-namespace-enums.md#filter_mode)|Specifies filter modes supported for texture sampling.| - -### Classes - -|Name|Description| -|----------|-----------------| -|[texture Class](texture-class.md)|A texture is a data aggregate on an accelerator_view in the extent domain. It is a collection of variables, one for each element in an extent domain. Each variable holds a value corresponding to C++ primitive type (unsigned int, int, float, double), or scalar type norm, or unorm (defined in concurrency::graphics), or eligible short vector types defined in concurrency::graphics.| -|[writeonly_texture_view Class](writeonly-texture-view-class.md)|A writeonly_texture_view provides writeonly access to a texture.| -|[double_2 Class](double-2-class.md)|Represents a short vector of 2 **`double`** values.| -|[double_3 Class](double-3-class.md)|Represents a short vector of 3 **`double`** values.| -|[double_4 Class](double-4-class.md)|Represents a short vector of 4 **`double`** values.| -|[float_2 Class](float-2-class.md)|Represents a short vector of 2 **`float`** values.| -|[float_3 Class](float-3-class.md)|Represents a short vector of 3 **`float`** values.| -|[float_4 Class](float-4-class.md)|Represents a short vector of 4 **`float`** values.| -|[int_2 Class](int-2-class.md)|Represents a short vector of 2 **`int`** values.| -|[int_3 Class](int-3-class.md)|Represents a short vector of 3 **`int`** values.| -|[int_4 Class](int-4-class.md)|Represents a short vector of 4 **`int`** values.| -|[norm_2 Class](norm-2-class.md)|Represents a short vector of 2 `norm` values.| -|[norm_3 Class](norm-3-class.md)|Represents a short vector of 3 `norm` values.| -|[norm_4 Class](norm-4-class.md)|Represents a short vector of 4 `norm` values.| -|[uint_2 Class](uint-2-class.md)|Represents a short vector of 2 `uint` values.| -|[uint_3 Class](uint-3-class.md)|Represents a short vector of 3 `uint` values.| -|[uint_4 Class](uint-4-class.md)|Represents a short vector of 4 `uint` values.| -|[unorm_2 Class](unorm-2-class.md)|Represents a short vector of 2 `unorm` values.| -|[unorm_3 Class](unorm-3-class.md)|Represents a short vector of 3 `unorm` values.| -|[unorm_4 Class](unorm-4-class.md)|Represents a short vector of 4 `unorm` values.| -|[sampler Class](sampler-class.md)|Represents the sampler configuration used for texture sampling.| -|[short_vector Structure](short-vector-structure.md)|Provides a basic implementation of a short vector of values.| -|[short_vector_traits Structure](short-vector-traits-structure.md)|Provides for retrieval of the length and type of a short vector.| -|[texture_view Class](texture-view-class.md)|Provides read access and write access to a texture.| - -### Functions - -|Name|Description| -|----------|-----------------| -|[copy](concurrency-graphics-namespace-functions.md#copy)|Overloaded. Copies the contents of the source texture into the destination host buffer.| -|[copy_async](concurrency-graphics-namespace-functions.md#copy_async)|Overloaded. Asynchronously copies the contents of the source texture into the destination host buffer.| - -## Requirements - -**Header:** amp_graphics.h - -**Namespace:** Concurrency - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/concurrency-namespace-constants-amp.md b/docs/parallel/amp/reference/concurrency-namespace-constants-amp.md deleted file mode 100644 index a03bea4d1af..00000000000 --- a/docs/parallel/amp/reference/concurrency-namespace-constants-amp.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Concurrency namespace constants (AMP)" -description: "Learn more about: Concurrency namespace constants (AMP)" -ms.date: 11/04/2016 -f1_keywords: ["amp/Concurrency::HLSL_MAX_NUM_BUFFERS", "amp/Concurrency::MODULENAME_MAX_LENGTH"] ---- -# Concurrency namespace constants (AMP) - -The following constants are defined in the `Concurrency` namespace (AMP): - -## `HLSL_MAX_NUM_BUFFERS` Constant - -The maximum number of buffers allowed by DirectX. - -```cpp -static const UINT HLSL_MAX_NUM_BUFFERS = 64 + 128; -``` - -## `MODULENAME_MAX_LENGTH` constant - -Stores the maximum length of the module name. This value must be the same at compile time and runtime. - -```cpp -static const UINT MODULENAME_MAX_LENGTH = 1024; -``` - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/concurrency-namespace-cpp-amp.md b/docs/parallel/amp/reference/concurrency-namespace-cpp-amp.md deleted file mode 100644 index df6d09b52f2..00000000000 --- a/docs/parallel/amp/reference/concurrency-namespace-cpp-amp.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -description: "Learn more about: Concurrency Namespace (C++ AMP)" -title: "Concurrency Namespace (C++ AMP)" -ms.date: "11/04/2016" -f1_keywords: ["AMP/Concurrency"] -helpviewer_keywords: ["Concurrency namespace"] -ms.assetid: b5aab265-3bac-42c5-8ead-f92ce05ef267 ---- -# Concurrency Namespace (C++ AMP) - -Provides classes and functions that accelerate the execution of C++ code on data-parallel hardware. For more information, see [C++ AMP Overview](../cpp-amp-overview.md) - -## Syntax - -```cpp -namespace Concurrency; -``` - -## Members - -### Namespaces - -|Name|Description| -|----------|-----------------| -|[Concurrency::direct3d Namespace](concurrency-direct3d-namespace.md)|Provides functions that support D3D interoperability. Enables seamless use of D3D resources for compute in AMP code and the use of resources created in AMP in D3D code, without creating redundant intermediate copies. You can use C++ AMP to incrementally accelerate the compute-intensive sections of your DirectX applications and use the D3D API on data produced from AMP computations.| -|[Concurrency::fast_math Namespace](concurrency-fast-math-namespace.md)|Functions in the `fast_math` namespace are not C99-conformant. Only single-precision versions of each function are provided. These functions use the DirectX intrinsic functions, which are faster than the corresponding functions in the `precise_math` namespace and do not require extended double-precision support on the accelerator, but they are less accurate. There are two versions of each function for source-level compatibility with C99 code; both versions take and return single-precision values.| -|[Concurrency::graphics Namespace](concurrency-graphics-namespace.md)|Provides types and functions that are designed for graphics programming.| -|[Concurrency::precise_math Namespace](concurrency-precise-math-namespace.md)|Functions in the `precise_math` namespace are C99 conformant. Both single-precision and double-precision versions of each function are included. These functions—this includes the single-precision functions—require extended double-precision support on the accelerator.| - -### Classes - -|Name|Description| -|----------|-----------------| -|[accelerator Class](accelerator-class.md)|Represents an abstraction of a physical DP-optimized compute node.| -|[accelerator_view Class](accelerator-view-class.md)|Represents a virtual device abstraction on a C++ AMP data-parallel accelerator.| -|[accelerator_view_removed Class](accelerator-view-removed-class.md)|The exception that is thrown when an underlying DirectX call fails due to the Windows timeout-detection-and-recovery mechanism.| -|[array Class](array-class.md)|A data aggregate on an `accelerator_view` in the grid domain. It is a collection of variables, one for each element in a grid domain. Each variable holds a value that corresponds to some C++ type.| -|[array_view Class](array-view-class.md)|Represents a view into the data in an array\.| -|[completion_future Class](completion-future-class.md)|Represents a future that corresponds to a C++ AMP asynchronous operation.| -|[extent Class](extent-class.md)|Represents a vector of N integer values that specify the bounds of an N-dimensional space that has an origin of 0. The values in the coordinate vector are ordered from most significant to least significant. For example, in Cartesian 3-dimensional space, the extent vector (7,5,3) represents a space in which the z coordinate ranges from 0 to 7, the y coordinate ranges from 0 to 5, and the x coordinate ranges from 0 to 3.| -|[index Class](index-class.md)|Defines an N-dimensional index point.| -|[invalid_compute_domain Class](invalid-compute-domain-class.md)|The exception that's thrown when the runtime can't start a kernel by using the compute domain specified at the `parallel_for_each` call site.| -|[out_of_memory Class](out-of-memory-class.md)|The exception that is thrown when a method fails because of a lack of system or device memory.| -|[runtime_exception Class](runtime-exception-class.md)|The base type for exceptions in the C++ AMP library.| -|[tile_barrier Class](tile-barrier-class.md)|A capability class that is only creatable by the system and is passed to a tiled `parallel_for_each` lambda as part of the `tiled_index` parameter. It provides one method, `wait()`, whose purpose is to synchronize execution of threads that are running in the thread group (tile).| -|[tiled_extent Class](tiled-extent-class.md)|A `tiled_extent` object is an `extent` object of one to three dimensions that subdivides the extent space into one-dimensional, two-dimensional, or three-dimensional tiles.| -|[tiled_index Class](tiled-index-class.md)|Provides an index into a `tiled_grid` object. This class has properties to access element relative to the local tile origin and relative to the global origin.| -|[uninitialized_object Class](uninitialized-object-class.md)|The exception that is thrown when an uninitialized object is used.| -|[unsupported_feature Class](unsupported-feature-class.md)|The exception that is thrown when an unsupported feature is used.| - -### Enumerations - -|Name|Description| -|----------|-----------------| -|[access_type Enumeration](concurrency-namespace-enums-amp.md#access_type)|Specifies the data access type.| -|[queuing_mode Enumeration](concurrency-namespace-enums-amp.md#queuing_mode)|Specifies the queuing modes that are supported on the accelerator.| - -### Operators - -|Operator|Description| -|--------------|-----------------| -|[operator== Operator (C++ AMP)](concurrency-namespace-operators-amp.md#operator_eq_eq)|Determines whether the specified data structures are equal.| -|[operator!= Operator (C++ AMP)](concurrency-namespace-operators-amp.md#operator_neq)|Determines whether the specified data structures are unequal.| -|[operator+ Operator (C++ AMP)](concurrency-namespace-operators-amp.md#operator_add)|Computes the component-wise sum of the specified arguments.| -|[operator- Operator (C++ AMP)](concurrency-namespace-operators-amp.md#operator-)|Computes the component-wise difference between the specified arguments.| -|[operator* Operator (C++ AMP)](concurrency-namespace-operators-amp.md#operator_star)|Computes the component-wise product of the specified arguments.| -|[operator/ Operator (C++ AMP)](concurrency-namespace-operators-amp.md#operator_div)|Computes the component-wise quotient of the specified arguments.| -|[operator% Operator (C++ AMP)](concurrency-namespace-operators-amp.md#operator_mod)|Computes the modulus of the first specified argument by the second specified argument.| - -### Functions - -|Name|Description| -|----------|-----------------| -|[all_memory_fence](concurrency-namespace-functions-amp.md#all_memory_fence)|Blocks execution of all threads in a tile until all memory accesses have been completed.| -|[amp_uninitialize](concurrency-namespace-functions-amp.md#amp_uninitialize)|Uninitializes the C++ AMP runtime.| -|[atomic_compare_exchange](concurrency-namespace-functions-amp.md#atomic_compare_exchange)|Overloaded. If the value stored at the specified location compares equal to the first specified value, then the second specified value is stored in the same location as an atomic operation.| -|[atomic_exchange](concurrency-namespace-functions-amp.md#atomic_exchange)|Overloaded. Sets the value stored at the specified location to the specified value as an atomic operation.| -|[atomic_fetch_add](concurrency-namespace-functions-amp.md#atomic_fetch_add)|Overloaded. Sets the value stored at the specified location to the sum of that value and a specified value as an atomic operation.| -|[atomic_fetch_and](concurrency-namespace-functions-amp.md#atomic_fetch_and)|Overloaded. Sets the value stored at the specified location to the bitwise `and` of that value and a specified value as an atomic operation.| -|[atomic_fetch_dec](concurrency-namespace-functions-amp.md#atomic_fetch_dec)|Overloaded. Decrements the value stored at the specified location and stores the result in the same location as an atomic operation.| -|[atomic_fetch_inc](concurrency-namespace-functions-amp.md#atomic_fetch_inc)|Overloaded. Increments the value stored at the specified location and stores the result in the same location as an atomic operation.| -|[atomic_fetch_max](concurrency-namespace-functions-amp.md#atomic_fetch_max)|Overloaded. Sets the value stored at the specified location to the larger of that value and a specified value as an atomic operation.| -|[atomic_fetch_min](concurrency-namespace-functions-amp.md#atomic_fetch_min)|Overloaded. Sets the value stored at the specified location to the smaller of that value and a specified value as an atomic operation.| -|[atomic_fetch_or](concurrency-namespace-functions-amp.md#atomic_fetch_or)|Overloaded. Sets the value stored at the specified location to the bitwise `or` of that value and a specified value as an atomic operation.| -|[atomic_fetch_sub](concurrency-namespace-functions-amp.md#atomic_fetch_sub)|Overloaded. Sets the value stored at the specified location to the difference of that value and a specified value as an atomic operation.| -|[atomic_fetch_xor](concurrency-namespace-functions-amp.md#atomic_fetch_xor)|Overloaded. Sets the value stored at the specified location to the bitwise `xor` of that value and a specified value as an atomic operation.| -|[copy](concurrency-namespace-functions-amp.md#copy)|Copies a C++ AMP object. All synchronous data transfer requirements are met. Data can't be copied when code is running code on an accelerator. The general form of this function is `copy(src, dest)`.| -|[copy_async](concurrency-namespace-functions-amp.md#copy_async)|Copies a C++ AMP object and returns [completion_future](completion-future-class.md) that can be waited on. Data can't be copied when code is running on an accelerator. The general form of this function is `copy(src, dest)`.| -|[direct3d_abort](concurrency-namespace-functions-amp.md#direct3d_abort)|Aborts the execution of a function that has the `restrict(amp)` restriction clause.| -|[direct3d_errorf](concurrency-namespace-functions-amp.md#direct3d_errorf)|Prints a formatted string to the Visual Studio **Output** window and raises a [runtime_exception](runtime-exception-class.md) exception that has the same formatting string.| -|[direct3d_printf](concurrency-namespace-functions-amp.md#direct3d_printf)|Prints a formatted string to the Visual Studio **Output** window. It is called from a function that has the `restrict(amp)` restriction clause.| -|[global_memory_fence](concurrency-namespace-functions-amp.md#global_memory_fence)|Blocks execution of all threads in a tile until all global memory accesses have been completed.| -|[parallel_for_each Function (C++ AMP)](concurrency-namespace-functions-amp.md#parallel_for_each)|Runs a function across the compute domain.| -|[tile_static_memory_fence](concurrency-namespace-functions-amp.md#tile_static_memory_fence)|Blocks execution of all threads in a tile until `tile_static` memory accesses have been completed.| - -## Constants - -|Name|Description| -|----------|-----------------| -|[HLSL_MAX_NUM_BUFFERS Constant](concurrency-namespace-constants-amp.md#hlsl_max_num_buffers)|The maximum number of buffers allowed by DirectX.| -|[MODULENAME_MAX_LENGTH Constant](concurrency-namespace-constants-amp.md#modulename_max_length)|Stores the maximum length of the module name. This value must be the same on the compiler and the runtime.| - -## Requirements - -**Header:** amp.h - -## See also - -[Reference (C++ AMP)](reference-cpp-amp.md) diff --git a/docs/parallel/amp/reference/concurrency-namespace-enums-amp.md b/docs/parallel/amp/reference/concurrency-namespace-enums-amp.md deleted file mode 100644 index feef3abec33..00000000000 --- a/docs/parallel/amp/reference/concurrency-namespace-enums-amp.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Concurrency namespace enums (AMP)" -description: "Learn more about: Concurrency namespace enums (AMP)" -ms.date: 11/04/2016 -f1_keywords: ["amp/Concurrency::access_type", "amp/Concurrency::queuing_mode"] ---- -# `Concurrency` namespace enums (AMP) - -The following enumerations are available in the `Concurrency` namespace: - -## `access_type` enumeration - -```cpp -enum access_type; -``` - -### Values - -|Name|Description| -|----------|-----------------| -|`access_type_auto`|Automatically choose the best `access_type` for the accelerator.| -|`access_type_none`|Dedicated. The allocation is only accessible on the accelerator and not on the CPU.| -|`access_type_read`|Shared. The allocation is accessible on the accelerator and is readable on the CPU.| -|`access_type_read_write`|Shared. The allocation is accessible on the accelerator and is writable on the CPU.| -|`access_type_write`|Shared. The allocation is accessible on the accelerator and is both readable and writable on the CPU.| - -## `queuing_mode` enumeration - -Specifies the queuing modes that are supported on the accelerator. - -```cpp -enum queuing_mode; -``` - -### Values - -|Name|Description| -|----------|-----------------| -|`queuing_mode_immediate`|A queuing mode that specifies that any commands, for example, [parallel_for_each Function (C++ AMP)](concurrency-namespace-functions-amp.md#parallel_for_each), are sent to the corresponding accelerator device as soon as they return to the caller.| -|`queuing_mode_automatic`|A queuing mode that specifies that commands be queued up on a command queue that corresponds to the [accelerator_view](accelerator-view-class.md) object. Commands are sent to the device when [accelerator_view::flush](accelerator-view-class.md#flush) is called.| - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md b/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md deleted file mode 100644 index ebc67e6ab11..00000000000 --- a/docs/parallel/amp/reference/concurrency-namespace-functions-amp.md +++ /dev/null @@ -1,655 +0,0 @@ ---- -title: "Concurrency namespace functions (AMP)" -description: "Learn more about: Concurrency namespace functions (AMP)" -ms.date: 11/04/2016 -f1_keywords: ["amp/Concurrency::all_memory_fence", "amp/Concurrency::atomic_compare_exchange", "amp/Concurrency::atomic_fetch_dec", "amp/Concurrency::atomic_fetch_max", "amp/Concurrency::atomic_fetch_min", "amp/Concurrency::copy", "amp/Concurrency::direct3d_abort", "amp/Concurrency::direct3d_printf", "amp/Concurrency::global_memory_fence", "amp/Concurrency::tile_static_memory_fence"] ---- -# Concurrency namespace functions (AMP) - -The following functions are defined in the `Concurrency` namespace (AMP): - -## all_memory_fence - -Blocks execution of all threads in a tile until all memory accesses have been completed. This ensures that all memory accesses are visible to other threads in the thread tile, and are executed in program order. - -```cpp -inline void all_memory_fence(const tile_barrier& _Barrier) restrict(amp); -``` - -### Parameters - -*_Barrier*
-A `tile_barrier` object. - -## amp_uninitialize - -Uninitializes the C++ AMP runtime. It is legal to call this function multiple times during an applications lifetime. Calling any C++ AMP API after calling this function will reinitialize the C++ AMP runtime. Note that it is illegal to use C++ AMP objects across calls to this function and doing so will result in undefined behavior. Also, concurrently calling this function and any other AMP APIs is illegal and would result in undefined behavior. - -```cpp -void __cdecl amp_uninitialize(); -``` - -## atomic_compare_exchange - -Atomically compares the value stored at a memory location specified in the first argument for equality with the value of the second specified argument, and if the values are the same, the value at the memory location is changed to that of the third specified argument. - -```cpp -inline bool atomic_compare_exchange( - _Inout_ int* _Dest, - _Inout_ int* _Expected_value, - int value - ) restrict(amp) - -inline bool atomic_compare_exchange( - _Inout_ unsigned int* _Dest, - _Inout_ unsigned int* _Expected_value, - unsigned int value - ) restrict(amp) -``` - -### Parameters - -*_Dest*
-The location from which one of the values to be compared is read, and to which the new value, if any, is to be stored. - -*_Expected_value*
-The location from which the second value to be compared is read. - -*value*
-The value to be stored to the memory location specified in by `_Dest` if `_Dest` is equal to `_Expected_value`. - -### Return Value - -**`true`** if the operation is successful; otherwise, **`false`**. - -## atomic_exchange Function (C++ AMP) - -Sets the value of destination location as an atomic operation. - -```cpp -inline int atomic_exchange( - _Inout_ int* _Dest, - int value - ) restrict(amp) - -inline unsigned int atomic_exchange( - _Inout_ unsigned int* _Dest, - unsigned int value - ) restrict(amp) - -inline float atomic_exchange( - _Inout_ float* _Dest, - float value - ) restrict(amp) -``` - -### Parameters - -*_Dest*
-Pointer to the destination location. - -*value*
-The new value. - -### Return Value - -The original value of the destination location. - -## atomic_fetch_add Function (C++ AMP) - -Atomically add a value to the value of a memory location. - -```cpp -inline int atomic_fetch_add( - _Inout_ int* _Dest, - int value - ) restrict(amp) - -inline unsigned int atomic_fetch_add( - _Inout_ unsigned int* _Dest, - unsigned int value - ) restrict(amp) -``` - -### Parameters - -*_Dest*
-Pointer to the memory location. - -*value*
-The value to be added. - -### Return Value - -The original value of the memory location. - -## atomic_fetch_and Function (C++ AMP) - -Atomically performs a bitwise AND operation of a value and the value of a memory location. - -```cpp -inline int atomic_fetch_and( - _Inout_ int* _Dest, - int value - ) restrict(amp) - -inline unsigned int atomic_fetch_and( - _Inout_ unsigned int* _Dest, - unsigned int value - ) restrict(amp) -``` - -### Parameters - -*_Dest*
-Pointer to the memory location. - -*value*
-The value to use in the bitwise AND calculation. - -### Return Value - -The original value of the memory location. - -## atomic_fetch_dec - -Atomically decrements the value stored at the specified memory location. - -```cpp -inline int atomic_fetch_dec(_Inout_ int* _Dest - ) restrict(amp) - -inline unsigned int atomic_fetch_dec(_Inout_ unsigned int* _Dest) restrict(amp); -``` - -### Parameters - -*_Dest*
-The location in memory of the value to be decremented. - -### Return Value - -The original value stored at the memory location. - -## atomic_fetch_inc - -Atomically increments the value stored at the specified memory location. - -```cpp -inline int atomic_fetch_inc(_Inout_ int* _Dest) restrict(amp); - -inline unsigned int atomic_fetch_inc(_Inout_ unsigned int* _Dest) restrict(amp); -``` - -### Parameters - -*_Dest*
-The location in memory of the value to be incremented. - -### Return Value - -The original value stored at the memory location. - -## atomic_fetch_max - -Atomically computes the maximum value between the value stored at the memory location specified in the first argument and the value specified in the second argument, and stores it at the same memory location. - -```cpp -inline int atomic_fetch_max( - _Inout_ int* _Dest, - int value - ) restrict(amp) - -inline unsigned int atomic_fetch_max( - _Inout_ unsigned int* _Dest, - unsigned int value - ) restrict(amp) -``` - -### Parameters - -*_Dest*
-The location from which one of the values to be compared is read, and to which the maximum of the two values is to be stored. - -*value*
-The value to be compared to the value at the specified location. - -### Return Value - -The original value stored at the specified location location. - -## atomic_fetch_min - -Atomically computes the minimum value between the value stored at the memory location specified in the first argument and the value specified in the second argument, and stores it at the same memory location. - -```cpp -inline int atomic_fetch_min( - _Inout_ int* _Dest, - int value - ) restrict(amp) - -inline unsigned int atomic_fetch_min( - _Inout_ unsigned int* _Dest, - unsigned int value - ) restrict(amp) -``` - -### Parameters - -*_Dest*
-The location from which one of the values to be compared is read, and to which the minimum of the two values is to be stored. - -*value*
-The value to be compared to the value at the specified location. - -### Return Value - -The original value stored at the specified location location. - -## atomic_fetch_or Function (C++ AMP) - -Atomically performs a bitwise OR operation with a value and the value of a memory location. - -```cpp -inline int atomic_fetch_or( - _Inout_ int* _Dest, - int value - ) restrict(amp) - -inline unsigned int atomic_fetch_or( - _Inout_ unsigned int* _Dest, - unsigned int value - ) restrict(amp) -``` - -### Parameters - -*_Dest*
-Pointer to the memory location. - -*value*
-The value to use in the bitwise OR calculation. - -### Return Value - -The original value of the memory location. - -## atomic_fetch_sub Function (C++ AMP) - -Atomically subtracts a value from a memory location. - -```cpp -inline int atomic_fetch_sub( - _Inout_ int* _Dest, - int value - ) restrict(amp) - -inline unsigned int atomic_fetch_sub( - _Inout_ unsigned int* _Dest, - unsigned int value - ) restrict(amp) -``` - -### Parameters - -*_Dest*
-Pointer to the destination location. - -*value*
-The value to be subtracted. - -### Return Value - -The original value of the memory location. - -## atomic_fetch_xor Function (C++ AMP) - -Atomically performs an bitwise XOR operation of a value and a memory location. - -```cpp -inline int atomic_fetch_xor( - _Inout_ int* _Dest, - int value - ) restrict(amp) - -inline unsigned int atomic_fetch_xor( - _Inout_ unsigned int* _Dest, - unsigned int value - ) restrict(amp) -``` - -### Parameters - -*_Dest*
-Pointer to the memory location. - -*value*
-The value to use in the XOR calculation. - -### Return Value - -The original value of the memory location. - -## copy - -Copies a C++ AMP object. All synchronous data transfer requirements are met. You can't copy data when running code on an accelerator. The general form of this function is `copy(src, dest)`. - -```cpp -template -void copy( - const array& _Src, - array& _Dest); - -template -void copy( - InputIterator _SrcFirst, - InputIterator _SrcLast, - array& _Dest); - -template -void copy( - InputIterator _SrcFirst, - array& _Dest); - -template -void copy( - const array& _Src, - OutputIterator _DestIter); - -template -void copy( - const array& _Src, - array_view& _Dest); - -template -void copy( - const array_view& _Src, - array& _Dest); - -template -void copy( - const array_view& _Src, - array& _Dest); - -template -void copy( - const array_view& _Src, - array_view& _Dest); - -template -void copy( - const array_view& _Src, - array_view& _Dest); - -template -void copy( - InputIterator _SrcFirst, - InputIterator _SrcLast, - array_view& _Dest); - -template -void copy( - InputIterator _SrcFirst, - array_view& _Dest); - -template -void copy( - const array_view& _Src, - OutputIterator _DestIter); -``` - -### Parameters - -*_Dest*
-The object to copy to. - -*_DestIter*
-An output iterator to the beginning position at destination. - -*InputIterator*
-The type of the input iterator. - -*OutputIterator*
-The type of the output iterator. - -*_Rank*
-The rank of the object to copy from or the object to copy to. - -*_Src*
-To object to copy. - -*_SrcFirst*
-A beginning iterator into the source container. - -*_SrcLast*
-An ending iterator into the source container. - -*value_type*
-The data type of the elements that are copied. - -## copy_async - -Copies a C++ AMP object and returns a [completion_future](completion-future-class.md) object that can be waited on. You can't copy data when running code on an accelerator. The general form of this function is `copy(src, dest)`. - -```cpp -template -concurrency::completion_future copy_async( - const array& _Src, - array& _Dest); - -template -concurrency::completion_future copy_async(InputIterator _SrcFirst, InputIterator _SrcLast, - array& _Dest); - -template -concurrency::completion_future copy_async(InputIterator _SrcFirst, - array& _Dest); - -template -concurrency::completion_future copy_async( - const array& _Src, OutputIterator _DestIter); - -template -concurrency::completion_future copy_async( - const array& _Src, - array_view& _Dest); - -template -concurrency::completion_future copy_async( - const array_view& _Src, - array& _Dest); - -template -concurrency::completion_future copy_async( - const array_view& _Src, - array& _Dest); - -template -concurrency::completion_future copy_async( - const array_view& _Src, - array_view& _Dest); - -template -concurrency::completion_future copy_async( - const array_view& _Src, - array_view& _Dest); - -template -concurrency::completion_future copy_async(InputIterator _SrcFirst, InputIterator _SrcLast, - array_view& _Dest); - -template -concurrency::completion_future copy_async(InputIterator _SrcFirst, - array_view& _Dest); - -template -concurrency::completion_future copy_async( - const array_view& _Src, OutputIterator _DestIter); -``` - -### Parameters - -*_Dest*
-The object to copy to. - -*_DestIter*
-An output iterator to the beginning position at destination. - -*InputIterator*
-The type of the input iterator. - -*OutputIterator*
-The type of the output iterator. - -*_Rank*
-The rank of the object to copy from or the object to copy to. - -*_Src*
-To object to copy. - -*_SrcFirst*
-A beginning iterator into the source container. - -*_SrcLast*
-An ending iterator into the source container. - -*value_type*
-The data type of the elements that are copied. - -### Return Value - -A `future` that can be waited on. - -## direct3d_abort - -Aborts the execution of a function with the `restrict(amp)` restriction clause. When the AMP runtime detects the call, it raises a [runtime_exception](runtime-exception-class.md) exception with the error message "Reference Rasterizer: Shader abort instruction hit". - -```cpp -void direct3d_abort() restrict(amp); -``` - -## direct3d_errorf - -Prints a formatted string to the Visual Studio output window. It is called from a function with the `restrict(amp)` restriction clause. When the AMP runtime detects the call, it raises a [runtime_exception](runtime-exception-class.md) exception with the same formatting string. - -```cpp -void direct3d_errorf( - const char *, -...) restrict(amp); -``` - -## direct3d_printf - -Prints a formatted string to the Visual Studio output window. It is called from a function with the `restrict(amp)` restriction clause. - -```cpp -void direct3d_printf( - const char *, -...) restrict(amp); -``` - -## global_memory_fence - -Blocks execution of all threads in a tile until all global memory accesses have been completed. This ensures that global memory accesses are visible to other threads in the thread tile, and are executed in program order. - -```cpp -inline void global_memory_fence(const tile_barrier& _Barrier) restrict(amp); -``` - -### Parameters - -*_Barrier*
-A tile_barrier object - -## parallel_for_each Function (C++ AMP) - -Runs a function across the compute domain. For more information, see [C++ AMP Overview](../../../parallel/amp/cpp-amp-overview.md). - -```cpp -template -void parallel_for_each( - const extent<_Rank>& _Compute_domain, - const _Kernel_type& _Kernel); - -template -void parallel_for_each( - const tiled_extent<_Dim0, _Dim1, _Dim2>& _Compute_domain, - const _Kernel_type& _Kernel); - -template -void parallel_for_each( - const tiled_extent<_Dim0, _Dim1>& _Compute_domain, - const _Kernel_type& _Kernel); - -template -void parallel_for_each( - const tiled_extent<_Dim0>& _Compute_domain, - const _Kernel_type& _Kernel); - -template -void parallel_for_each( - const accelerator_view& _Accl_view, - const extent<_Rank>& _Compute_domain, - const _Kernel_type& _Kernel); - -template -void parallel_for_each( - const accelerator_view& _Accl_view, - const tiled_extent<_Dim0, _Dim1, _Dim2>& _Compute_domain, - const _Kernel_type& _Kernel); - -template -void parallel_for_each( - const accelerator_view& _Accl_view, - const tiled_extent<_Dim0, _Dim1>& _Compute_domain, - const _Kernel_type& _Kernel); - -template -void parallel_for_each( - const accelerator_view& _Accl_view, - const tiled_extent<_Dim0>& _Compute_domain, - const _Kernel_type& _Kernel); -``` - -### Parameters - -*_Accl_view*
-The `accelerator_view` object to run the parallel computation on. - -*_Compute_domain*
-An `extent` object that contains the data for the computation. - -*_Dim0*
-The dimension of the `tiled_extent` object. - -*_Dim1*
-The dimension of the `tiled_extent` object. - -*_Dim2*
-The dimension of the `tiled_extent` object. - -*_Kernel*
-A lambda or function object that takes an argument of type "index\<_Rank>" and performs the parallel computation. - -*_Kernel_type*
-A lambda or functor. - -*_Rank*
-The rank of the extent. - -## tile_static_memory_fence - -Blocks execution of all threads in a tile until all outstanding `tile_static` memory accesses have been completed. This ensures that `tile_static` memory accesses are visible to other threads in the thread tile, and that accesses are executed in program order. - -```cpp -inline void tile_static_memory_fence(const tile_barrier& _Barrier) restrict(amp); -``` - -### Parameters - -*_Barrier*
-A tile_barrier object. - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md b/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md deleted file mode 100644 index fff2ed01733..00000000000 --- a/docs/parallel/amp/reference/concurrency-namespace-operators-amp.md +++ /dev/null @@ -1,271 +0,0 @@ ---- -title: "Concurrency namespace operators (AMP)" -description: "Learn more about: Concurrency namespace operators (AMP)" -ms.date: 11/04/2016 ---- -# Concurrency namespace operators (AMP) - -The following operators are defined in the `Concurrency` namespace (AMP): - -## operator== - -Determines whether the specified arguments are equal. - -```cpp -template < - int _Rank, - template class _Tuple_type -> -bool operator== ( - const _Tuple_type<_Rank>& _Lhs, - const _Tuple_type<_Rank>& _Rhs) restrict(amp); -``` - -### Parameters - -*_Rank*
-The rank of the tuple arguments. - -*_Lhs*
-One of the tuples to compare. - -*_Rhs*
-One of the tuples to compare. - -### Return Value - -**`true`** if the tuples are equal; otherwise, **`false`**. - -## operator!= - -Determines whether the specified arguments are not equal. - -```cpp -template < - int _Rank, - template class _Tuple_type -> -bool operator!= ( - const _Tuple_type<_Rank>& _Lhs, - const _Tuple_type<_Rank>& _Rhs) restrict(amp); -``` - -### Parameters - -*_Rank*
-The rank of the tuple arguments. - -*_Lhs*
-One of the tuples to compare. - -*_Rhs*
-One of the tuples to compare. - -### Return Value - -**`true`** if the tuples are not equal; otherwise, **`false`**. - -## operator+ - -Computes the component-wise sum of the specified arguments. - -```cpp -template < - int _Rank, - template class _Tuple_type -> -class _Tuple_type> _Tuple_type<_Rank> operator+( - const _Tuple_type<_Rank>& _Lhs, - const _Tuple_type<_Rank>& _Rhs) restrict(amp,cpu); - -template < - int _Rank, - template class _Tuple_type -> -class _Tuple_type> _Tuple_type<_Rank> operator+( - const _Tuple_type<_Rank>& _Lhs, - typename _Tuple_type<_Rank>::value_type _Rhs) restrict(amp,cpu); - -template < - int _Rank, - template class _Tuple_type -> -class _Tuple_type> _Tuple_type<_Rank> operator+( - typename _Tuple_type<_Rank>::value_type _Lhs, - const _Tuple_type<_Rank>& _Rhs) restrict(amp,cpu); -``` - -### Parameters - -*_Rank*
-The rank of the tuple arguments. - -*_Lhs*
-One of the arguments to add. - -*_Rhs*
-One of the arguments to add. - -### Return Value - -The component-wise sum of the specified arguments. - -## operator- - -Computes the component-wise difference between the specified arguments. - -```cpp -template < - int _Rank, - template class _Tuple_type -> -_Tuple_type<_Rank> operator-( - const _Tuple_type<_Rank>& _Lhs, - const _Tuple_type<_Rank>& _Rhs) restrict(amp,cpu); - -template < - int _Rank, - template class _Tuple_type -> -_Tuple_type<_Rank> operator-( - const _Tuple_type<_Rank>& _Lhs, - typename _Tuple_type<_Rank>::value_type _Rhs) restrict(amp,cpu); - -template < - int _Rank, - template class _Tuple_type -> -_Tuple_type<_Rank> operator-( - typename _Tuple_type<_Rank>::value_type _Lhs, - const _Tuple_type<_Rank>& _Rhs) restrict(amp,cpu); -``` - -### Parameters - -*_Rank*
-The rank of the tuple arguments. - -*_Lhs*
-The argument to be subtracted from. - -*_Rhs*
-The argument to subtract. - -### Return Value - -The component-wise difference between the specified arguments. - -## operator* - -Computes the component-wise product of the specified arguments. - -```cpp -template < - int _Rank, - template class _Tuple_type -> -_Tuple_type<_Rank> operator*( - const _Tuple_type<_Rank>& _Lhs, - typename _Tuple_type<_Rank>::value_type _Rhs) restrict(amp,cpu); - -template < - int _Rank, - template class _Tuple_type -> -_Tuple_type<_Rank> operator*( - typename _Tuple_type<_Rank>::value_type _Lhs, - const _Tuple_type<_Rank>& _Rhs) restrict(amp, cpu); -``` - -### Parameters - -*_Rank*
-The rank of the tuple arguments. - -*_Lhs*
-One of the tuples to multiply. - -*_Rhs*
-One of the tuples to multiply. - -### Return Value - -The component-wise product of the specified arguments. - -## operator/ - -Computes the component-wise quotient of the specified arguments. - -```cpp -template < - int _Rank, - template class _Tuple_type -> -_Tuple_type<_Rank> operator/( - const _Tuple_type<_Rank>& _Lhs, - typename _Tuple_type<_Rank>::value_type _Rhs) restrict(amp,cpu); - -template < - int _Rank, - template class _Tuple_type -> -_Tuple_type<_Rank> operator/( - typename _Tuple_type<_Rank>::value_type _Lhs, - const _Tuple_type<_Rank>& _Rhs) restrict(amp,cpu); -``` - -### Parameters - -*_Rank*
-The rank of the tuple arguments. - -*_Lhs*
-The tuple to be divided. - -*_Rhs*
-The tuple to divide by. - -### Return Value - -The component-wise quotient of the specified arguments. - -## operator% - -Computes the modulus of the first specified argument by the second specified argument. - -```cpp -template < - int _Rank, - template class _Tuple_type -> -_Tuple_type<_Rank> operator%( - const _Tuple_type<_Rank>& _Lhs, - typename _Tuple_type<_Rank>::value_type _Rhs) restrict(amp,cpu); - -template < - int _Rank, - template class _Tuple_type -> -_Tuple_type<_Rank> operator%( - typename _Tuple_type<_Rank>::value_type _Lhs, - const _Tuple_type<_Rank>& _Rhs) restrict(amp,cpu); -``` - -### Parameters - -*_Rank*
-The rank of the tuple arguments. - -*_Lhs*
-The tuple from which the modulo is calculated. - -*_Rhs*
-The tuple to modulo by. - -### Return Value - -The result of the first specified argument modulus the second specified argument. - -## See also - -[Concurrency Namespace](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md b/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md deleted file mode 100644 index 4c85696fdd1..00000000000 --- a/docs/parallel/amp/reference/concurrency-precise-math-namespace-functions.md +++ /dev/null @@ -1,2622 +0,0 @@ ---- -title: "Concurrency::precise_math namespace functions" -description: "Learn more about: Concurrency::precise_math namespace functions" -ms.date: 11/04/2016 -f1_keywords: ["amp_math/Concurrency::precise_math::acos", "amp_math/Concurrency::precise_math::acosh", "amp_math/Concurrency::precise_math::acoshf", "amp_math/Concurrency::precise_math::asinf", "amp_math/Concurrency::precise_math::asinh", "amp_math/Concurrency::precise_math::atan", "amp_math/Concurrency::precise_math::atan2", "amp_math/Concurrency::precise_math::atanf", "amp_math/Concurrency::precise_math::atanh", "amp_math/Concurrency::precise_math::cbrt", "amp_math/Concurrency::precise_math::cbrtf", "amp_math/Concurrency::precise_math::ceilf", "amp_math/Concurrency::precise_math::copysign", "amp_math/Concurrency::precise_math::cos", "amp_math/Concurrency::precise_math::cosf", "amp_math/Concurrency::precise_math::coshf", "amp_math/Concurrency::precise_math::cospi", "amp_math/Concurrency::precise_math::erf", "amp_math/Concurrency::precise_math::erfc", "amp_math/Concurrency::precise_math::erfcinv", "amp_math/Concurrency::precise_math::erfcinvf", "amp_math/Concurrency::precise_math::erfinv", "amp_math/Concurrency::precise_math::erfinvf", "amp_math/Concurrency::precise_math::exp10", "amp_math/Concurrency::precise_math::exp10f", "amp_math/Concurrency::precise_math::exp2f", "amp_math/Concurrency::precise_math::expf", "amp_math/Concurrency::precise_math::expm1f", "amp_math/Concurrency::precise_math::fabs", "amp_math/Concurrency::precise_math::floor", "amp_math/Concurrency::precise_math::fdim", "amp_math/Concurrency::precise_math::floorf", "amp_math/Concurrency::precise_math::fmaf", "amp_math/Concurrency::precise_math::fmaxf", "amp_math/Concurrency::precise_math::fmin", "amp_math/Concurrency::precise_math::fmod", "amp_math/Concurrency::precise_math::fmodf", "amp_math/Concurrency::precise_math::frexp", "amp_math/Concurrency::precise_math::frexpf", "amp_math/Concurrency::precise_math::hypotf", "amp_math/Concurrency::precise_math::ilogb", "amp_math/Concurrency::precise_math::isfinite", "amp_math/Concurrency::precise_math::isinf", "amp_math/Concurrency::precise_math::isnormal", "amp_math/Concurrency::precise_math::ldexp", "amp_math/Concurrency::precise_math::lgamma", "amp_math/Concurrency::precise_math::lgammaf", "amp_math/Concurrency::precise_math::log10", "amp_math/Concurrency::precise_math::log10f", "amp_math/Concurrency::precise_math::log1pf", "amp_math/Concurrency::precise_math::log2", "amp_math/Concurrency::precise_math::logb", "amp_math/Concurrency::precise_math::logbf", "amp_math/Concurrency::precise_math::modf", "amp_math/Concurrency::precise_math::modff", "amp_math/Concurrency::precise_math::nanf", "amp_math/Concurrency::precise_math::nearbyint", "amp_math/Concurrency::precise_math::nextafter", "amp_math/Concurrency::precise_math::nextafterf", "amp_math/Concurrency::precise_math::phif", "amp_math/Concurrency::precise_math::pow", "amp_math/Concurrency::precise_math::probit", "amp_math/Concurrency::precise_math::probitf", "amp_math/Concurrency::precise_math::rcbrtf", "amp_math/Concurrency::precise_math::remainder", "amp_math/Concurrency::precise_math::remquo", "amp_math/Concurrency::precise_math::remquof", "amp_math/Concurrency::precise_math::roundf", "amp_math/Concurrency::precise_math::rsqrt", "amp_math/Concurrency::precise_math::scalb", "amp_math/Concurrency::precise_math::scalbf", "amp_math/Concurrency::precise_math::scalbnf", "amp_math/Concurrency::precise_math::signbit", "amp_math/Concurrency::precise_math::sin", "amp_math/Concurrency::precise_math::sincos", "amp_math/Concurrency::precise_math::sinf", "amp_math/Concurrency::precise_math::sinh", "amp_math/Concurrency::precise_math::sinpi", "amp_math/Concurrency::precise_math::sinpif", "amp_math/Concurrency::precise_math::sqrtf", "amp_math/Concurrency::precise_math::tan", "amp_math/Concurrency::precise_math::tanh", "amp_math/Concurrency::precise_math::tanhf", "amp_math/Concurrency::precise_math::tanpif", "amp_math/Concurrency::precise_math::tgamma", "amp_math/Concurrency::precise_math::trunc", "amp_math/Concurrency::precise_math::truncf"] ---- -# Concurrency::precise_math namespace functions - -The following functions are available in the `Concurrency::precise_math` namespace: - -## acos - -Calculates the arccosine of the argument - -```cpp -inline float acos(float _X) restrict(amp); - -inline double acos(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the arccosine value of the argument - -## acosf - -Calculates the arccosine of the argument - -```cpp -inline float acosf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the arccosine value of the argument - -## acosh - -Calculates the inverse hyperbolic cosine of the argument - -```cpp -inline float acosh(float _X) restrict(amp); - -inline double acosh(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the inverse hyperbolic cosine value of the argument - -## acoshf - -Calculates the inverse hyperbolic cosine of the argument - -```cpp -inline float acoshf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the inverse hyperbolic cosine value of the argument - -## asin - -Calculates the arcsine of the argument - -```cpp -inline float asin(float _X) restrict(amp); - -inline double asin(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the arcsine value of the argument - -## asinf - -Calculates the arcsine of the argument - -```cpp -inline float asinf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the arcsine value of the argument - -## asinh - -Calculates the inverse hyperbolic sine of the argument - -```cpp -inline float asinh(float _X) restrict(amp); - -inline double asinh(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the inverse hyperbolic sine value of the argument - -## asinhf - -Calculates the inverse hyperbolic sine of the argument - -```cpp -inline float asinhf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the inverse hyperbolic sine value of the argument - -## atan - -Calculates the arctangent of the argument - -```cpp -inline float atan(float _X) restrict(amp); - -inline double atan(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the arctangent value of the argument - -## atan2 - -Calculates the arctangent of _Y/_X - -```cpp -inline float atan2( - float _Y, - float _X) restrict(amp); - -inline double atan2( - double _Y, - double _X) restrict(amp); -``` - -### Parameters - -*_Y*
-Floating-point value - -*_X*
-Floating-point value - -### Return Value - -Returns the arctangent value of _Y/_X - -## atan2f - -Calculates the arctangent of _Y/_X - -```cpp -inline float atan2f( - float _Y, - float _X) restrict(amp); -``` - -### Parameters - -*_Y*
-Floating-point value - -*_X*
-Floating-point value - -### Return Value - -Returns the arctangent value of _Y/_X - -## atanf - -Calculates the arctangent of the argument - -```cpp -inline float atanf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the arctangent value of the argument - -## atanh - -Calculates the inverse hyperbolic tangent of the argument - -```cpp -inline float atanh(float _X) restrict(amp); - -inline double atanh(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the inverse hyperbolic tangent value of the argument - -## atanhf - -Calculates the inverse hyperbolic tangent of the argument - -```cpp -inline float atanhf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the inverse hyperbolic tangent value of the argument - -## cbrt - -Computes the real cube root of the argument - -```cpp -inline float cbrt(float _X) restrict(amp); - -inline double cbrt(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the real cube root of the argument - -## cbrtf - -Computes the real cube root of the argument - -```cpp -inline float cbrtf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the real cube root of the argument - -## ceil - -Calculates the ceiling of the argument - -```cpp -inline float ceil(float _X) restrict(amp); - -inline double ceil(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the ceiling of the argument - -## ceilf - -Calculates the ceiling of the argument - -```cpp -inline float ceilf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the ceiling of the argument - -## copysign - -Produces a value with the magnitude of _X and the sign of _Y - -```cpp -inline float copysign( - float _X, - float _Y) restrict(amp); - -inline double copysign( - double _X, - double _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Returns a value with the magnitude of _X and the sign of _Y - -## copysignf - -Produces a value with the magnitude of _X and the sign of _Y - -```cpp -inline float copysignf( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Returns a value with the magnitude of _X and the sign of _Y - -## cos - -Calculates the cosine of the argument - -```cpp -inline float cos(float _X) restrict(amp); - -inline double cos(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the cosine value of the argument - -## cosf - -Calculates the cosine of the argument - -```cpp -inline float cosf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the cosine value of the argument - -## cosh - -Calculates the hyperbolic cosine value of the argument - -```cpp -inline float cosh(float _X) restrict(amp); - -inline double cosh(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the hyperbolic cosine value of the argument - -## coshf - -Calculates the hyperbolic cosine value of the argument - -```cpp -inline float coshf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the hyperbolic cosine value of the argument - -## cospi - -Calculates the cosine value of pi \* _X - -```cpp -inline float cospi(float _X) restrict(amp); - -inline double cospi(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the cosine value of pi \* _X - -## cospif - -Calculates the cosine value of pi \* _X - -```cpp -inline float cospif(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the cosine value of pi \* _X - -## erf - -Computes the error function of _X - -```cpp -inline float erf(float _X) restrict(amp); - -inline double erf(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the error function of _X - -## erfc - -Computes the complementary error function of _X - -```cpp -inline float erfc(float _X) restrict(amp); - -inline double erfc(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the complementary error function of _X - -## erfcf - -Computes the complementary error function of _X - -```cpp -inline float erfcf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the complementary error function of _X - -## erfcinv - -Computes the inverse complementary error function of _X - -```cpp -inline float erfcinv(float _X) restrict(amp); - -inline double erfcinv(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the inverse complementary error function of _X - -## erfcinvf - -Computes the inverse complementary error function of _X - -```cpp -inline float erfcinvf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the inverse complementary error function of _X - -## erff - -Computes the error function of _X - -```cpp -inline float erff(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the error function of _X - -## erfinv - -Computes the inverse error function of _X - -```cpp -inline float erfinv(float _X) restrict(amp); - -inline double erfinv(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the inverse error function of _X - -## erfinvf - -Computes the inverse error function of _X - -```cpp -inline float erfinvf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the inverse error function of _X - -## exp10 - -Calculates the base-10 exponential of the argument - -```cpp -inline float exp10(float _X) restrict(amp); - -inline double exp10(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-10 exponential of the argument - -## exp10f - -Calculates the base-10 exponential of the argument - -```cpp -inline float exp10f(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-10 exponential of the argument - -## expm1 - -Calculates the base-e exponential of the argument, minus 1 - -```cpp -inline float expm1(float exponent) restrict(amp); - -inline double expm1(double exponent) restrict(amp); -``` - -### Parameters - -*exponent*
-The exponential term *n* of the mathematical expression `e`n, where `e` is the base of the natural logarithm. - -### Return Value - -Returns the base-e exponential of the argument, minus 1 - -## expm1f - -Calculates the base-e exponential of the argument, minus 1 - -```cpp -inline float expm1f(float exponent) restrict(amp); -``` - -### Parameters - -*exponent*
-The exponential term *n* of the mathematical expression `e`n, where `e` is the base of the natural logarithm. - -### Return Value - -Returns the base-e exponential of the argument, minus 1 - -## exp - -Calculates the base-e exponential of the argument - -```cpp -inline float exp(float _X) restrict(amp); - -inline double exp(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-e exponential of the argument - -## expf - -Calculates the base-e exponential of the argument - -```cpp -inline float expf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-e exponential of the argument - -## exp2 - -Calculates the base-2 exponential of the argument - -```cpp -inline float exp2(float _X) restrict(amp); - -inline double exp2(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-2 exponential of the argument - -## exp2f - -Calculates the base-2 exponential of the argument - -```cpp -inline float exp2f(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-2 exponential of the argument - -## fabs - -Returns the absolute value of the argument - -```cpp -inline float fabs(float _X) restrict(amp); - -inline double fabs(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the absolute value of the argument - -## fabsf - -Returns the absolute value of the argument - -```cpp -inline float fabsf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the absolute value of the argument - -## fdim - -Computes the positive difference between the arguments. - -```cpp -inline float fdim( - float _X, - float _Y -) restrict(amp); -inline double fdim( - double _X, - double _Y -) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -The difference between _X and _Y if _X is greater than _Y; otherwise, +0. - -## fdimf - -Computes the positive difference between the arguments. - -```cpp -inline float fdimf( - float _X, - float _Y -) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -The difference between _X and _Y if _X is greater than _Y; otherwise, +0. - -## floor - -Calculates the floor of the argument - -```cpp -inline float floor(float _X) restrict(amp); - -inline double floor(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the floor of the argument - -## floorf - -Calculates the floor of the argument - -```cpp -inline float floorf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the floor of the argument - -## fma - -Computes the product of the first and second specified arguments, then adds the third specified argument to the result; the entire computation is performed as a single operation. - -```cpp -inline float fma( - float _X, - float _Y, - float _Z -) restrict(amp); - -inline double fma( - double _X, - double _Y, - double _Z -) restrict(amp); -``` - -### Parameters - -*_X*
-The first floating-point argument. - -*_Y*
-The second floating-point argument. - -*_Z*
-The third floating-point argument. - -### Return Value - -The result of the expression (_X \* _Y) + _Z. The entire computation is performed as a single operation; that is, the sub-expressions are calculated to infinite precision, and only the final result is rounded. - -## fmaf - -Computes the product of the first and second specified arguments, then adds the third specified argument to the result; the entire computation is performed as a single operation. - -```cpp -inline float fmaf( - float _X, - float _Y, - float _Z -) restrict(amp); -``` - -### Parameters - -*_X*
-The first floating-point argument. - -*_Y*
-The second floating-point argument. - -*_Z*
-The third floating-point argument. - -### Return Value - -The result of the expression (_X \* _Y) + _Z. The entire computation is performed as a single operation; that is, the sub-expressions are calculated to infinite precision, and only the final result is rounded. - -## fmax - -Determine the maximum numeric value of the arguments - -```cpp -inline float fmax( - float _X, - float _Y) restrict(amp); - -inline double fmax( - double _X, - double _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Return the maximum numeric value of the arguments - -## fmaxf - -Determine the maximum numeric value of the arguments - -```cpp -inline float fmaxf( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Return the maximum numeric value of the arguments - -## fmin - -Determine the minimum numeric value of the arguments - -```cpp -inline float fmin( - float _X, - float _Y) restrict(amp); - -inline double fmin( - double _X, - double _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Return the minimum numeric value of the arguments - -## fminf - -Determine the minimum numeric value of the arguments - -```cpp -inline float fminf( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Return the minimum numeric value of the arguments - -## fmod Function (C++ AMP) - -Computes the remainder of the first specified argument divided by the second specified argument. - -```cpp -inline float fmod( - float _X, - float _Y) restrict(amp); - -inline double fmod( - double _X, - double _Y) restrict(amp); -``` - -### Parameters - -*_X*
-The first floating-point argument. - -*_Y*
-The second floating-point argument. - -### Return Value - -The remainder of `_X` divided by `_Y`; that is, the value of `_X` - `_Y`*n*, where *n* is a whole integer such that the magnitude of `_X` - `_Y`*n* is less than the magnitude of `_Y`. - -## fmodf - -Computes the remainder of the first specified argument divided by the second specified argument. - -```cpp -inline float fmodf( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-The first floating-point argument. - -*_Y*
-The second floating-point argument. - -### Return Value - -The remainder of `_X` divided by `_Y`; that is, the value of `_X` - `_Y`*n*, where *n* is a whole integer such that the magnitude of `_X` - `_Y`*n* is less than the magnitude of `_Y`. - -## fpclassify - -Classifies the argument value as NaN, infinite, normal, subnormal, zero - -```cpp -inline int fpclassify(float _X) restrict(amp); - -inline int fpclassify(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the value of the number classification macro appropriate to the value of the argument. - -## frexp - -Gets the mantissa and exponent of _X - -```cpp -inline float frexp( - float _X, - _Out_ int* _Exp) restrict(amp); - -inline double frexp( - double _X, - _Out_ int* _Exp) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Exp*
-Returns the integer exponent of _X in floating-point value - -### Return Value - -Returns the mantissa _X - -## frexpf - -Gets the mantissa and exponent of _X - -```cpp -inline float frexpf( - float _X, - _Out_ int* _Exp) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Exp*
-Returns the integer exponent of _X in floating-point value - -### Return Value - -Returns the mantissa _X - -## hypot - -Computes the square root of the sum of the squares of _X and _Y - -```cpp -inline float hypot( - float _X, - float _Y) restrict(amp); - -inline double hypot( - double _X, - double _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Returns the square root of the sum of the squares of _X and _Y - -## hypotf - -Computes the square root of the sum of the squares of _X and _Y - -```cpp -inline float hypotf( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Returns the square root of the sum of the squares of _X and _Y - -## ilogb - -Extract the exponent of _X as a signed int value - -```cpp -inline int ilogb(float _X) restrict(amp); - -inline int ilogb(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the exponent of _X as a signed int value - -## ilogbf - -Extract the exponent of _X as a signed int value - -```cpp -inline int ilogbf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the exponent of _X as a signed int value - -## isfinite - -Determines whether the argument has a finite value - -```cpp -inline int isfinite(float _X) restrict(amp); - -inline int isfinite(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns a nonzero value if and only if the argument has a finite value - -## isinf - -Determines whether the argument is an infinity - -```cpp -inline int isinf(float _X) restrict(amp); - -inline int isinf(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns a nonzero value if and only if the argument has an infinite value - -## isnan - -Determines whether the argument is a NaN - -```cpp -inline int isnan(float _X) restrict(amp); - -inline int isnan(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns a nonzero value if and only if the argument has a NaN value - -## isnormal - -Determines whether the argument is a normal - -```cpp -inline int isnormal(float _X) restrict(amp); - -inline int isnormal(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns a nonzero value if and only if the argument has a normal value - -## ldexp - -Computes a real number from the specified mantissa and exponent. - -```cpp -inline float ldexp( - float _X, - int _Exp) restrict(amp); - -inline double ldexp( - double _X, - double _Exp) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value, mantissa - -*_Exp*
-Integer value, exponent - -### Return Value - -Returns _X \* 2^_Exp - -## ldexpf - -Computes a real number from the specified mantissa and exponent. - -```cpp -inline float ldexpf( - float _X, - int _Exp) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value, mantissa - -*_Exp*
-Integer value, exponent - -### Return Value - -Returns _X \* 2^_Exp - -## lgamma - -Computes the natural logarithm of the absolute value of gamma of the argument - -```cpp -inline float lgamma( - float _X, - _Out_ int* _Sign) restrict(amp); - -inline double lgamma( - double _X, - _Out_ int* _Sign) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Sign*
-Returns the sign - -### Return Value - -Returns the natural logarithm of the absolute value of gamma of the argument - -## lgammaf - -Computes the natural logarithm of the absolute value of gamma of the argument - -```cpp -inline float lgammaf( - float _X, - _Out_ int* _Sign) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Sign*
-Returns the sign - -### Return Value - -Returns the natural logarithm of the absolute value of gamma of the argument - -## log - -Calculates the base-e logarithm of the argument - -```cpp -inline float log(float _X) restrict(amp); - -inline double log(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-e logarithm of the argument - -## log10 - -Calculates the base-10 logarithm of the argument - -```cpp -inline float log10(float _X) restrict(amp); - -inline double log10(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-10 logarithm of the argument - -## log10f - -Calculates the base-10 logarithm of the argument - -```cpp -inline float log10f(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-10 logarithm of the argument - -## log1p - -Calculates the base-e logarithm of 1 plus the argument - -```cpp -inline float log1p(float _X) restrict(amp); - -inline double log1p(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-e logarithm of 1 plus the argument - -## log1pf - -Calculates the base-e logarithm of 1 plus the argument - -```cpp -inline float log1pf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-e logarithm of 1 plus the argument - -## log2 - -Calculates the base-2 logarithm of the argument - -```cpp -inline float log2(float _X) restrict(amp); - -inline double log2(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-10 logarithm of the argument - -## log2f - -Calculates the base-2 logarithm of the argument - -```cpp -inline float log2f(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-10 logarithm of the argument - -## logb - -Extracts the exponent of _X, as a signed integer value in floating-point format - -```cpp -inline float logb(float _X) restrict(amp); - -inline double logb(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the signed exponent of _X - -## logbf - -Extracts the exponent of _X, as a signed integer value in floating-point format - -```cpp -inline float logbf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the signed exponent of _X - -## logf - -Calculates the base-e logarithm of the argument - -```cpp -inline float logf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the base-e logarithm of the argument - -## modf - -Splits the specified argument into fractional and integer parts. - -```cpp -inline float modf( - float _X, - _Out_ float* _Iptr) restrict(amp); - -inline double modf( - double _X, - _Out_ double* _Iptr) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Iptr*
-[out] The integer portion of `_X`, as a floating-point value. - -### Return Value - -The signed fractional portion of `_X`. - -## modff - -Splits the specified argument into fractional and integer parts. - -```cpp -inline float modff( - float _X, - _Out_ float* _Iptr) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Iptr*
-The integer portion of `_X`, as a floating-point value. - -### Return Value - -Returns the signed fractional portion of `_X`. - -## nan - -Returns a quiet NaN - -```cpp -inline double nan(int _X) restrict(amp); -``` - -### Parameters - -*_X*
-Integer value - -### Return Value - -Returns a quiet NaN, if available, with the content indicated in _X - -## nanf - -Returns a quiet NaN - -```cpp -inline float nanf(int _X) restrict(amp); -``` - -### Parameters - -*_X*
-Integer value - -### Return Value - -Returns a quiet NaN, if available, with the content indicated in _X - -## nearbyint - -Rounds the argument to an integer value in floating-point format, using the current rounding direction. - -```cpp -inline float nearbyint(float _X) restrict(amp); - -inline double nearbyint(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the rounded integer value. - -## nearbyintf - -Rounds the argument to an integer value in floating-point format, using the current rounding direction. - -```cpp -inline float nearbyintf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the rounded integer value. - -## nextafter - -Determine the next representable value, in the type of the function, after _X in the direction of _Y - -```cpp -inline float nextafter( - float _X, - float _Y) restrict(amp); - -inline double nextafter( - double _X, - double _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Returns the next representable value, in the type of the function, after _X in the direction of _Y - -## nextafterf - -Determine the next representable value, in the type of the function, after _X in the direction of _Y - -```cpp -inline float nextafterf( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Returns the next representable value, in the type of the function, after _X in the direction of _Y - -## phi - -Returns the cumulative distribution function of the argument - -```cpp -inline float phi(float _X) restrict(amp); - -inline double phi(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the cumulative distribution function of the argument - -## phif - -Returns the cumulative distribution function of the argument - -```cpp -inline float phif(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the cumulative distribution function of the argument - -## pow - -Calculates _X raised to the power of _Y - -```cpp -inline float pow( - float _X, - float _Y) restrict(amp); - -inline double pow( - double _X, - double _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value, base - -*_Y*
-Floating-point value, exponent - -### Return Value - -## powf - -Calculates _X raised to the power of _Y - -```cpp -inline float powf( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value, base - -*_Y*
-Floating-point value, exponent - -### Return Value - -## probit - -Returns the inverse cumulative distribution function of the argument - -```cpp -inline float probit(float _X) restrict(amp); - -inline double probit(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the inverse cumulative distribution function of the argument - -## probitf - -Returns the inverse cumulative distribution function of the argument - -```cpp -inline float probitf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the inverse cumulative distribution function of the argument - -## rcbrt - -Returns the reciprocal of the cube root of the argument - -```cpp -inline float rcbrt(float _X) restrict(amp); - -inline double rcbrt(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the reciprocal of the cube root of the argument - -## rcbrtf - -Returns the reciprocal of the cube root of the argument - -```cpp -inline float rcbrtf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the reciprocal of the cube root of the argument - -## remainder - -Computes the remainder: _X REM _Y - -```cpp -inline float remainder( - float _X, - float _Y) restrict(amp); - -inline double remainder( - double _X, - double _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Returns _X REM _Y - -## remainderf - -Computes the remainder: _X REM _Y - -```cpp -inline float remainderf( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Returns _X REM _Y - -## remquo - -Computes the remainder of the first specified argument divided by the second specified argument. Also computes the quotient of the significand of the first specified argument divided by the significand of the second specified argument, and returns the quotient using the location specified in the third argument. - -```cpp -inline float remquo( - float _X, - float _Y, - _Out_ int* _Quo) restrict(amp); - -inline double remquo( - double _X, - double _Y, - _Out_ int* _Quo) restrict(amp); -``` - -### Parameters - -*_X*
-The first floating-point argument. - -*_Y*
-The second floating-point argument. - -*_Quo*
-[out] The address of an integer that's used to return the quotient of the fractional bits of `_X` divided by the fractional bits of `_Y`. - -### Return Value - -Returns the remainder of `_X` divided by `_Y`. - -## remquof - -Computes the remainder of the first specified argument divided by the second specified argument. Also computes the quotient of the significand of the first specified argument divided by the significand of the second specified argument, and returns the quotient using the location specified in the third argument. - -```cpp -inline float remquof( - float _X, - float _Y, - _Out_ int* _Quo) restrict(amp); -``` - -### Parameters - -*_X*
-The first floating-point argument. - -*_Y*
-The second floating-point argument. - -*_Quo*
-[out] The address of an integer that's used to return the quotient of the fractional bits of `_X` divided by the fractional bits of `_Y`. - -### Return Value - -Returns the remainder of `_X` divided by `_Y`. - -## round - -Rounds _X to the nearest integer - -```cpp -inline float round(float _X) restrict(amp); - -inline double round(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the nearest integer of _X - -## roundf - -Rounds _X to the nearest integer - -```cpp -inline float roundf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the nearest integer of _X - -## rsqrt - -Returns the reciprocal of the square root of the argument - -```cpp -inline float rsqrt(float _X) restrict(amp); - -inline double rsqrt(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the reciprocal of the square root of the argument - -## rsqrtf - -Returns the reciprocal of the square root of the argument - -```cpp -inline float rsqrtf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the reciprocal of the square root of the argument - -## scalb - -Multiplies _X by FLT_RADIX to the power _Y - -```cpp -inline float scalb( - float _X, - float _Y) restrict(amp); - -inline double scalb( - double _X, - double _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Returns _X \* (FLT_RADIX ^ _Y) - -## scalbf - -Multiplies _X by FLT_RADIX to the power _Y - -```cpp -inline float scalbf( - float _X, - float _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Floating-point value - -### Return Value - -Returns _X \* (FLT_RADIX ^ _Y) - -## scalbn - -Multiplies _X by FLT_RADIX to the power _Y - -```cpp -inline float scalbn( - float _X, - int _Y) restrict(amp); - -inline double scalbn( - double _X, - int _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Integer value - -### Return Value - -Returns _X \* (FLT_RADIX ^ _Y) - -## scalbnf - -Multiplies _X by FLT_RADIX to the power _Y - -```cpp -inline float scalbnf( - float _X, - int _Y) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_Y*
-Integer value - -### Return Value - -Returns _X \* (FLT_RADIX ^ _Y) - -## signbit - -Determines whether the sign of _X is negative - -```cpp -inline int signbit(float _X) restrict(amp); - -inline int signbit(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns a nonzero value if and only if the sign of _X is negative - -## signbitf - -Determines whether the sign of _X is negative - -```cpp -inline int signbitf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns a nonzero value if and only if the sign of _X is negative - -## sin - -Calculates the sine value of the argument - -```cpp -inline float sin(float _X) restrict(amp); - -inline double sin(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the sine value of the argument - -## sinf - -Calculates the sine value of the argument - -```cpp -inline float sinf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the sine value of the argument - -## sincos - -Calculates sine and cosine value of _X - -```cpp -inline void sincos( - float _X, - _Out_ float* _S, - _Out_ float* _C) restrict(amp); - -inline void sincos( - double _X, - _Out_ double* _S, - _Out_ double* _C) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_S*
-Returns the sine value of _X - -*_C*
-Returns the cosine value of _X - -## sincosf - -Calculates sine and cosine value of _X - -```cpp -inline void sincosf( - float _X, - _Out_ float* _S, - _Out_ float* _C) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -*_S*
-Returns the sine value of _X - -*_C*
-Returns the cosine value of _X - -## sinh - -Calculates the hyperbolic sine value of the argument - -```cpp -inline float sinh(float _X) restrict(amp); - -inline double sinh(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the hyperbolic sine value of the argument - -## sinhf - -Calculates the hyperbolic sine value of the argument - -```cpp -inline float sinhf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the hyperbolic sine value of the argument - -## sinpi - -Calculates the sine value of pi \* _X - -```cpp -inline float sinpi(float _X) restrict(amp); - -inline double sinpi(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the sine value of pi \* _X - -## sinpif - -Calculates the sine value of pi \* _X - -```cpp -inline float sinpif(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the sine value of pi \* _X - -## sqrt - -Calculates the squre root of the argument - -```cpp -inline float sqrt(float _X) restrict(amp); - -inline double sqrt(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the squre root of the argument - -## sqrtf - -Calculates the squre root of the argument - -```cpp -inline float sqrtf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the squre root of the argument - -## tan - -Calculates the tangent value of the argument - -```cpp -inline float tan(float _X) restrict(amp); - -inline double tan(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the tangent value of the argument - -## tanf - -Calculates the tangent value of the argument - -```cpp -inline float tanf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the tangent value of the argument - -## tanh - -Calculates the hyperbolic tangent value of the argument - -```cpp -inline float tanh(float _X) restrict(amp); - -inline double tanh(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the hyperbolic tangent value of the argument - -## tanhf - -Calculates the hyperbolic tangent value of the argument - -```cpp -inline float tanhf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the hyperbolic tangent value of the argument - -## tanpi - -Calculates the tangent value of pi \* _X - -```cpp -inline float tanpi(float _X) restrict(amp); - -inline double tanpi(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the tangent value of pi \* _X - -## tanpif - -Calculates the tangent value of pi \* _X - -```cpp -inline float tanpif(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the tangent value of pi \* _X - -## tgamma - -Computes the gamma function of _X - -```cpp -inline float tgamma(float _X) restrict(amp); - -inline double tgamma(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the result of gamma function of _X - -## tgammaf - -Computes the gamma function of _X - -```cpp -inline float tgammaf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the result of gamma function of _X - -## trunc - -Truncates the argument to the integer component - -```cpp -inline float trunc(float _X) restrict(amp); - -inline double trunc(double _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the integer component of the argument - -## truncf - -Truncates the argument to the integer component - -```cpp -inline float truncf(float _X) restrict(amp); -``` - -### Parameters - -*_X*
-Floating-point value - -### Return Value - -Returns the integer component of the argument - -## See also - -[Concurrency::precise_math Namespace](concurrency-precise-math-namespace.md) diff --git a/docs/parallel/amp/reference/concurrency-precise-math-namespace.md b/docs/parallel/amp/reference/concurrency-precise-math-namespace.md deleted file mode 100644 index ade1b8c16cc..00000000000 --- a/docs/parallel/amp/reference/concurrency-precise-math-namespace.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -description: "Learn more about: Concurrency::precise_math Namespace" -title: "Concurrency::precise_math Namespace" -ms.date: "11/04/2016" -f1_keywords: ["AMP_MATH/Concurrency::acos", "AMP_MATH/Concurrency::acosf", "AMP_MATH/Concurrency::acosh", "AMP_MATH/Concurrency::acoshf", "AMP_MATH/Concurrency::asin", "AMP_MATH/Concurrency::asinf", "AMP_MATH/Concurrency::asinh", "AMP_MATH/Concurrency::asinhf", "AMP_MATH/Concurrency::atan", "AMP_MATH/Concurrency::atan2", "AMP_MATH/Concurrency::atan2f", "AMP_MATH/Concurrency::atanf", "AMP_MATH/Concurrency::atanh", "AMP_MATH/Concurrency::atanhf", "AMP_MATH/Concurrency::cbrt", "AMP_MATH/Concurrency::cbrtf", "AMP_MATH/Concurrency::ceil", "AMP_MATH/Concurrency::ceilf", "AMP_MATH/Concurrency::copysign", "AMP_MATH/Concurrency::copysignf", "AMP_MATH/Concurrency::cos", "AMP_MATH/Concurrency::cosf", "AMP_MATH/Concurrency::cosh", "AMP_MATH/Concurrency::coshf", "AMP_MATH/Concurrency::cospi", "AMP_MATH/Concurrency::cospif", "AMP_MATH/Concurrency::erf", "AMP_MATH/Concurrency::erfc", "AMP_MATH/Concurrency::erfcf", "AMP_MATH/Concurrency::erfcinv", "AMP_MATH/Concurrency::erfcinvf", "AMP_MATH/Concurrency::erff", "AMP_MATH/Concurrency::erfinv", "AMP_MATH/Concurrency::erfinvf", "AMP_MATH/Concurrency::exp", "AMP_MATH/Concurrency::exp10", "AMP_MATH/Concurrency::exp10f", "AMP_MATH/Concurrency::exp2", "AMP_MATH/Concurrency::exp2f", "AMP_MATH/Concurrency::expf", "AMP_MATH/Concurrency::expm1", "AMP_MATH/Concurrency::expm1f", "AMP_MATH/Concurrency::fabs", "AMP_MATH/Concurrency::fabsf", "AMP_MATH/Concurrency::fdim", "AMP_MATH/Concurrency::fdimf", "AMP_MATH/Concurrency::floor", "AMP_MATH/Concurrency::floorf", "AMP_MATH/Concurrency::fma", "AMP_MATH/Concurrency::fmaf", "AMP_MATH/Concurrency::fmax", "AMP_MATH/Concurrency::fmaxf", "AMP_MATH/Concurrency::fmin", "AMP_MATH/Concurrency::fminf", "AMP_MATH/Concurrency::fmodf", "AMP_MATH/Concurrency::fpclassify", "AMP_MATH/Concurrency::frexp", "AMP_MATH/Concurrency::frexpf", "AMP_MATH/Concurrency::hypot", "AMP_MATH/Concurrency::hypotf", "AMP_MATH/Concurrency::ilogb", "AMP_MATH/Concurrency::ilogbf", "AMP_MATH/Concurrency::isfinite", "AMP_MATH/Concurrency::isinf", "AMP_MATH/Concurrency::isnan", "AMP_MATH/Concurrency::isnormal", "AMP_MATH/Concurrency::ldexp", "AMP_MATH/Concurrency::ldexpf", "AMP_MATH/Concurrency::lgamma", "AMP_MATH/Concurrency::lgammaf", "AMP_MATH/Concurrency::log", "AMP_MATH/Concurrency::log10", "AMP_MATH/Concurrency::log10f", "AMP_MATH/Concurrency::log1p", "AMP_MATH/Concurrency::log1pf", "AMP_MATH/Concurrency::log2", "AMP_MATH/Concurrency::log2f", "AMP_MATH/Concurrency::logb", "AMP_MATH/Concurrency::logbf", "AMP_MATH/Concurrency::logf", "AMP_MATH/Concurrency::modf", "AMP_MATH/Concurrency::modff", "AMP_MATH/Concurrency::nan", "AMP_MATH/Concurrency::nanf", "AMP_MATH/Concurrency::nearbyint", "AMP_MATH/Concurrency::nearbyintf", "AMP_MATH/Concurrency::nextafter", "AMP_MATH/Concurrency::nextafterf", "AMP_MATH/Concurrency::phi", "AMP_MATH/Concurrency::phif", "AMP_MATH/Concurrency::pow", "AMP_MATH/Concurrency::powf", "AMP_MATH/Concurrency::probit", "AMP_MATH/Concurrency::probitf", "AMP_MATH/Concurrency::rcbrt", "AMP_MATH/Concurrency::rcbrtf", "AMP_MATH/Concurrency::remainder", "AMP_MATH/Concurrency::remainderf", "AMP_MATH/Concurrency::remquo", "AMP_MATH/Concurrency::remquof", "AMP_MATH/Concurrency::round", "AMP_MATH/Concurrency::roundf", "AMP_MATH/Concurrency::rsqrt", "AMP_MATH/Concurrency::rsqrtf", "AMP_MATH/Concurrency::scalb", "AMP_MATH/Concurrency::scalbf", "AMP_MATH/Concurrency::scalbn", "AMP_MATH/Concurrency::scalbnf", "AMP_MATH/Concurrency::signbit", "AMP_MATH/Concurrency::signbitf", "AMP_MATH/Concurrency::sin", "AMP_MATH/Concurrency::sincos", "AMP_MATH/Concurrency::sincosf", "AMP_MATH/Concurrency::sinf", "AMP_MATH/Concurrency::sinh", "AMP_MATH/Concurrency::sinhf", "AMP_MATH/Concurrency::sinpi", "AMP_MATH/Concurrency::sinpif", "AMP_MATH/Concurrency::sqrt", "AMP_MATH/Concurrency::sqrtf", "AMP_MATH/Concurrency::tan", "AMP_MATH/Concurrency::tanf", "AMP_MATH/Concurrency::tanh", "AMP_MATH/Concurrency::tanhf", "AMP_MATH/Concurrency::tanpi", "AMP_MATH/Concurrency::tanpif", "AMP_MATH/Concurrency::tgamma", "AMP_MATH/Concurrency::tgammaf", "AMP_MATH/Concurrency::trunc", "AMP_MATH/Concurrency::truncf"] -ms.assetid: ba653308-dc28-4384-b2fd-6cd718a72f91 ---- -# Concurrency::precise_math Namespace - -Functions in the `precise_math` namespace are C99 conformant. Both single precision and double precision versions of each function are included. For example, `acos` is the double-precision version and `acosf` is the single-precision version. These functions, including the single-precision functions, require extended double-precision support on the accelerator. You can use the [accelerator::supports_double_precision](accelerator-class.md#supports_double_precision) to determine if you can run these functions on a specific accelerator. - -## Syntax - -```cpp -namespace precise_math; -``` - -### Parameters - -## Members - -### Functions - -|Name|Description| -|----------|-----------------| -|[acos](concurrency-precise-math-namespace-functions.md#acos)|Overloaded. Calculates the arccosine of the argument| -|[acosf](concurrency-precise-math-namespace-functions.md#acosf)|Calculates the arccosine of the argument| -|[acosh](concurrency-precise-math-namespace-functions.md#acosh)|Overloaded. Calculates the inverse hyperbolic cosine of the argument| -|[acoshf](concurrency-precise-math-namespace-functions.md#acoshf)|Calculates the inverse hyperbolic cosine of the argument| -|[asin](concurrency-precise-math-namespace-functions.md#asin)|Overloaded. Calculates the arcsine of the argument| -|[asinf](concurrency-precise-math-namespace-functions.md#asinf)|Calculates the arcsine of the argument| -|[asinh](concurrency-precise-math-namespace-functions.md#asinh)|Overloaded. Calculates the inverse hyperbolic sine of the argument| -|[asinhf](concurrency-precise-math-namespace-functions.md#asinhf)|Calculates the inverse hyperbolic sine of the argument| -|[atan](concurrency-precise-math-namespace-functions.md#atan)|Overloaded. Calculates the arctangent of the argument| -|[atan2](concurrency-precise-math-namespace-functions.md#atan2)|Overloaded. Calculates the arctangent of _Y/_X| -|[atan2f](concurrency-precise-math-namespace-functions.md#atan2f)|Calculates the arctangent of _Y/_X| -|[atanf](concurrency-precise-math-namespace-functions.md#atanf)|Calculates the arctangent of the argument| -|[atanh](concurrency-precise-math-namespace-functions.md#atanh)|Overloaded. Calculates the inverse hyperbolic tangent of the argument| -|[atanhf](concurrency-precise-math-namespace-functions.md#atanhf)|Calculates the inverse hyperbolic tangent of the argument| -|[cbrt](concurrency-precise-math-namespace-functions.md#cbrt)|Overloaded. Computes the real cube root of the argument| -|[cbrtf](concurrency-precise-math-namespace-functions.md#cbrtf)|Computes the real cube root of the argument| -|[ceil](concurrency-precise-math-namespace-functions.md#ceil)|Overloaded. Calculates the ceiling of the argument| -|[ceilf](concurrency-precise-math-namespace-functions.md#ceilf)|Calculates the ceiling of the argument| -|[copysign](concurrency-precise-math-namespace-functions.md#copysign)|Overloaded. Produces a value with the magnitude of _X and the sign of _Y| -|[copysignf](concurrency-precise-math-namespace-functions.md#copysignf)|Produces a value with the magnitude of _X and the sign of _Y| -|[cos](concurrency-precise-math-namespace-functions.md#cos)|Overloaded. Calculates the cosine of the argument| -|[cosf](concurrency-precise-math-namespace-functions.md#cosf)|Calculates the cosine of the argument| -|[cosh](concurrency-precise-math-namespace-functions.md#cosh)|Overloaded. Calculates the hyperbolic cosine value of the argument| -|[coshf](concurrency-precise-math-namespace-functions.md#coshf)|Calculates the hyperbolic cosine value of the argument| -|[cospi](concurrency-precise-math-namespace-functions.md#cospi)|Overloaded. Calculates the cosine value of pi \* _X| -|[cospif](concurrency-precise-math-namespace-functions.md#cospif)|Calculates the cosine value of pi \* _X| -|[erf](concurrency-precise-math-namespace-functions.md#erf)|Overloaded. Computes the error function of _X| -|[erfc](concurrency-precise-math-namespace-functions.md#erfc)|Overloaded. Computes the complementary error function of _X| -|[erfcf](concurrency-precise-math-namespace-functions.md#erfcf)|Computes the complementary error function of _X| -|[erfcinv](concurrency-precise-math-namespace-functions.md#erfcinv)|Overloaded. Computes the inverse complementary error function of _X| -|[erfcinvf](concurrency-precise-math-namespace-functions.md#erfcinvf)|Computes the inverse complementary error function of _X| -|[erff](concurrency-precise-math-namespace-functions.md#erff)|Computes the error function of _X| -|[erfinv](concurrency-precise-math-namespace-functions.md#erfinv)|Overloaded. Computes the inverse error function of _X| -|[erfinvf](concurrency-precise-math-namespace-functions.md#erfinvf)|Computes the inverse error function of _X| -|[exp](concurrency-precise-math-namespace-functions.md#exp)|Overloaded. Calculates the base-e exponential of the argument| -|[exp10](concurrency-precise-math-namespace-functions.md#exp10)|Overloaded. Calculates the base-10 exponential of the argument| -|[exp10f](concurrency-precise-math-namespace-functions.md#exp10f)|Calculates the base-10 exponential of the argument| -|[exp2](concurrency-precise-math-namespace-functions.md#exp2)|Overloaded. Calculates the base-2 exponential of the argument| -|[exp2f](concurrency-precise-math-namespace-functions.md#exp2f)|Calculates the base-2 exponential of the argument| -|[expf](concurrency-precise-math-namespace-functions.md#expf)|Calculates the base-e exponential of the argument| -|[expm1](concurrency-precise-math-namespace-functions.md#expm1)|Overloaded. Calculates the base-e exponential of the argument, minus 1| -|[expm1f](concurrency-precise-math-namespace-functions.md#expm1f)|Calculates the base-e exponential of the argument, minus 1| -|[fabs](concurrency-precise-math-namespace-functions.md#fabs)|Overloaded. Returns the absolute value of the argument| -|[fabsf](concurrency-precise-math-namespace-functions.md#fabsf)|Returns the absolute value of the argument| -|[fdim](concurrency-precise-math-namespace-functions.md#fdim)|Overloaded. Determines the positive difference between the arguments| -|[fdimf](concurrency-precise-math-namespace-functions.md#fdimf)|Determines the positive difference between the arguments| -|[floor](concurrency-precise-math-namespace-functions.md#floor)|Overloaded. Calculates the floor of the argument| -|[floorf](concurrency-precise-math-namespace-functions.md#floorf)|Calculates the floor of the argument| -|[fma](concurrency-precise-math-namespace-functions.md#fma)|Overloaded. Compute (_X \* _Y) + _Z, rounded as one ternary operation| -|[fmaf](concurrency-precise-math-namespace-functions.md#fmaf)|Compute (_X \* _Y) + _Z, rounded as one ternary operation| -|[fmax](concurrency-precise-math-namespace-functions.md#fmax)|Overloaded. Determine the maximum numeric value of the arguments| -|[fmaxf](concurrency-precise-math-namespace-functions.md#fmaxf)|Determine the maximum numeric value of the arguments| -|[fmin](concurrency-precise-math-namespace-functions.md#fmin)|Overloaded. Determine the minimum numeric value of the arguments| -|[fminf](concurrency-precise-math-namespace-functions.md#fminf)|Determine the minimum numeric value of the arguments| -|[fmod Function (C++ AMP)](concurrency-precise-math-namespace-functions.md#fmod)|Overloaded. Calculates the floating-point remainder of _X/_Y| -|[fmodf](concurrency-precise-math-namespace-functions.md#fmodf)|Calculates the floating-point remainder of _X/_Y| -|[fpclassify](concurrency-precise-math-namespace-functions.md#fpclassify)|Overloaded. Classifies the argument value as NaN, infinite, normal, subnormal, zero| -|[frexp](concurrency-precise-math-namespace-functions.md#frexp)|Overloaded. Gets the mantissa and exponent of _X| -|[frexpf](concurrency-precise-math-namespace-functions.md#frexpf)|Gets the mantissa and exponent of _X| -|[hypot](concurrency-precise-math-namespace-functions.md#hypot)|Overloaded. Computes the square root of the sum of the squares of _X and _Y| -|[hypotf](concurrency-precise-math-namespace-functions.md#hypotf)|Computes the square root of the sum of the squares of _X and _Y| -|[ilogb](concurrency-precise-math-namespace-functions.md#ilogb)|Overloaded. Extract the exponent of _X as a signed int value| -|[ilogbf](concurrency-precise-math-namespace-functions.md#ilogbf)|Extract the exponent of _X as a signed int value| -|[isfinite](concurrency-precise-math-namespace-functions.md#isfinite)|Overloaded. Determines whether the argument has a finite value| -|[isinf](concurrency-precise-math-namespace-functions.md#isinf)|Overloaded. Determines whether the argument is an infinity| -|[isnan](concurrency-precise-math-namespace-functions.md#isnan)|Overloaded. Determines whether the argument is a NaN| -|[isnormal](concurrency-precise-math-namespace-functions.md#isnormal)|Overloaded. Determines whether the argument is a normal| -|[ldexp](concurrency-precise-math-namespace-functions.md#ldexp)|Overloaded. Computes a real number from the mantissa and exponent| -|[ldexpf](concurrency-precise-math-namespace-functions.md#ldexpf)|Computes a real number from the mantissa and exponent| -|[lgamma](concurrency-precise-math-namespace-functions.md#lgamma)|Overloaded. Computes the natural logarithm of the absolute value of gamma of the argument| -|[lgammaf](concurrency-precise-math-namespace-functions.md#lgammaf)|Computes the natural logarithm of the absolute value of gamma of the argument| -|[log](concurrency-precise-math-namespace-functions.md#log)|Overloaded. Calculates the base-e logarithm of the argument| -|[log10](concurrency-precise-math-namespace-functions.md#log10)|Overloaded. Calculates the base-10 logarithm of the argument| -|[log10f](concurrency-precise-math-namespace-functions.md#log10f)|Calculates the base-10 logarithm of the argument| -|[log1p](concurrency-precise-math-namespace-functions.md#log1p)|Overloaded. Calculates the base-e logarithm of 1 plus the argument| -|[log1pf](concurrency-precise-math-namespace-functions.md#log1pf)|Calculates the base-e logarithm of 1 plus the argument| -|[log2](concurrency-precise-math-namespace-functions.md#log2)|Overloaded. Calculates the base-2 logarithm of the argument| -|[log2f](concurrency-precise-math-namespace-functions.md#log2f)|Calculates the base-2 logarithm of the argument| -|[logb](concurrency-precise-math-namespace-functions.md#logb)|Overloaded. Extracts the exponent of _X, as a signed integer value in floating-point format| -|[logbf](concurrency-precise-math-namespace-functions.md#logbf)|Extracts the exponent of _X, as a signed integer value in floating-point format| -|[logf](concurrency-precise-math-namespace-functions.md#logf)|Calculates the base-e logarithm of the argument| -|[modf](concurrency-precise-math-namespace-functions.md#modf)|Overloaded. Splits _X into fractional and integer parts.| -|[modff](concurrency-precise-math-namespace-functions.md#modff)|Splits _X into fractional and integer parts.| -|[nan](concurrency-precise-math-namespace-functions.md#nan)|Returns a quiet NaN| -|[nanf](concurrency-precise-math-namespace-functions.md#nanf)|Returns a quiet NaN| -|[nearbyint](concurrency-precise-math-namespace-functions.md#nearbyint)|Overloaded. Rounds the argument to an integer value in floating-point format, using the current rounding direction.| -|[nearbyintf](concurrency-precise-math-namespace-functions.md#nearbyintf)|Rounds the argument to an integer value in floating-point format, using the current rounding direction.| -|[nextafter](concurrency-precise-math-namespace-functions.md#nextafter)|Overloaded. Determine the next representable value, in the type of the function, after _X in the direction of _Y| -|[nextafterf](concurrency-precise-math-namespace-functions.md#nextafterf)|Determine the next representable value, in the type of the function, after _X in the direction of _Y| -|[phi](concurrency-precise-math-namespace-functions.md#phi)|Overloaded. Returns the cumulative distribution function of the argument| -|[phif](concurrency-precise-math-namespace-functions.md#phif)|Returns the cumulative distribution function of the argument| -|[pow](concurrency-precise-math-namespace-functions.md#pow)|Overloaded. Calculates _X raised to the power of _Y| -|[powf](concurrency-precise-math-namespace-functions.md#powf)|Calculates _X raised to the power of _Y| -|[probit](concurrency-precise-math-namespace-functions.md#probit)|Overloaded. Returns the inverse cumulative distribution function of the argument| -|[probitf](concurrency-precise-math-namespace-functions.md#probitf)|Returns the inverse cumulative distribution function of the argument| -|[rcbrt](concurrency-precise-math-namespace-functions.md#rcbrt)|Overloaded. Returns the reciprocal of the cube root of the argument| -|[rcbrtf](concurrency-precise-math-namespace-functions.md#rcbrtf)|Returns the reciprocal of the cube root of the argument| -|[remainder](concurrency-precise-math-namespace-functions.md#remainder)|Overloaded. Computes the remainder: _X REM _Y| -|[remainderf](concurrency-precise-math-namespace-functions.md#remainderf)|Computes the remainder: _X REM _Y| -|[remquo](concurrency-precise-math-namespace-functions.md#remquo)|Overloaded. Computes the same remainder as _X REM _Y. Also calculates the lower 23 bits of the integral quotient _X/_Y, and gives that value the same sign as _X/_Y. It stores this signed value in the integer pointed to by _Quo.| -|[remquof](concurrency-precise-math-namespace-functions.md#remquof)|Computes the same remainder as _X REM _Y. Also calculates the lower 23 bits of the integral quotient _X/_Y, and gives that value the same sign as _X/_Y. It stores this signed value in the integer pointed to by _Quo.| -|[round](concurrency-precise-math-namespace-functions.md#round)|Overloaded. Rounds _X to the nearest integer| -|[roundf](concurrency-precise-math-namespace-functions.md#roundf)|Rounds _X to the nearest integer| -|[rsqrt](concurrency-precise-math-namespace-functions.md#rsqrt)|Overloaded. Returns the reciprocal of the square root of the argument| -|[rsqrtf](concurrency-precise-math-namespace-functions.md#rsqrtf)|Returns the reciprocal of the square root of the argument| -|[scalb](concurrency-precise-math-namespace-functions.md#scalb)|Overloaded. Multiplies _X by FLT_RADIX to the power _Y| -|[scalbf](concurrency-precise-math-namespace-functions.md#scalbf)|Multiplies _X by FLT_RADIX to the power _Y| -|[scalbn](concurrency-precise-math-namespace-functions.md#scalbn)|Overloaded. Multiplies _X by FLT_RADIX to the power _Y| -|[scalbnf](concurrency-precise-math-namespace-functions.md#scalbnf)|Multiplies _X by FLT_RADIX to the power _Y| -|[signbit](concurrency-precise-math-namespace-functions.md#signbit)|Overloaded. Determines whether the sign of _X is negative| -|[signbitf](concurrency-precise-math-namespace-functions.md#signbitf)|Determines whether the sign of _X is negative| -|[sin](concurrency-precise-math-namespace-functions.md#sin)|Overloaded. Calculates the sine value of the argument| -|[sincos](concurrency-precise-math-namespace-functions.md#sincos)|Overloaded. Calculates sine and cosine value of _X| -|[sincosf](concurrency-precise-math-namespace-functions.md#sincosf)|Calculates sine and cosine value of _X| -|[sinf](concurrency-precise-math-namespace-functions.md#sinf)|Calculates the sine value of the argument| -|[sinh](concurrency-precise-math-namespace-functions.md#sinh)|Overloaded. Calculates the hyperbolic sine value of the argument| -|[sinhf](concurrency-precise-math-namespace-functions.md#sinhf)|Calculates the hyperbolic sine value of the argument| -|[sinpi](concurrency-precise-math-namespace-functions.md#sinpi)|Overloaded. Calculates the sine value of pi \* _X| -|[sinpif](concurrency-precise-math-namespace-functions.md#sinpif)|Calculates the sine value of pi \* _X| -|[sqrt](concurrency-precise-math-namespace-functions.md#sqrt)|Overloaded. Calculates the squre root of the argument| -|[sqrtf](concurrency-precise-math-namespace-functions.md#sqrtf)|Calculates the squre root of the argument| -|[tan](concurrency-precise-math-namespace-functions.md#tan)|Overloaded. Calculates the tangent value of the argument| -|[tanf](concurrency-precise-math-namespace-functions.md#tanf)|Calculates the tangent value of the argument| -|[tanh](concurrency-precise-math-namespace-functions.md#tanh)|Overloaded. Calculates the hyperbolic tangent value of the argument| -|[tanhf](concurrency-precise-math-namespace-functions.md#tanhf)|Calculates the hyperbolic tangent value of the argument| -|[tanpi](concurrency-precise-math-namespace-functions.md#tanpi)|Overloaded. Calculates the tangent value of pi \* _X| -|[tanpif](concurrency-precise-math-namespace-functions.md#tanpif)|Calculates the tangent value of pi \* _X| -|[tgamma](concurrency-precise-math-namespace-functions.md#tgamma)|Overloaded. Computes the gamma function of _X| -|[tgammaf](concurrency-precise-math-namespace-functions.md#tgammaf)|Computes the gamma function of _X| -|[trunc](concurrency-precise-math-namespace-functions.md#trunc)|Overloaded. Truncates the argument to the integer component| -|[truncf](concurrency-precise-math-namespace-functions.md#truncf)|Truncates the argument to the integer component| - -## Requirements - -**Header:** amp_math.h - -**Namespace:** Concurrency - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/double-2-class.md b/docs/parallel/amp/reference/double-2-class.md deleted file mode 100644 index 59d983be77d..00000000000 --- a/docs/parallel/amp/reference/double-2-class.md +++ /dev/null @@ -1,155 +0,0 @@ ---- -description: "Learn more about: double_2 Class" -title: "double_2 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::double_2::set_x", "amp_short_vectors/Concurrency::graphics::double_2::operator+=", "amp_short_vectors/Concurrency::graphics::double_2::operator=", "amp_short_vectors/Concurrency::graphics::double_2::operator/=", "amp_short_vectors/Concurrency::graphics::double_2::operator*=", "amp_short_vectors/Concurrency::graphics::double_2::yx", "amp_short_vectors/Concurrency::graphics::double_2::y", "amp_short_vectors/Concurrency::graphics::double_2::xy", "amp_short_vectors/Concurrency::graphics::double_2::set_xy", "amp_short_vectors/Concurrency::graphics::double_2::get_yx", "amp_short_vectors/Concurrency::graphics::double_2::set_yx", "amp_short_vectors/Concurrency::graphics::double_2::get_xy", "amp_short_vectors/Concurrency::graphics::double_2::operator++", "amp_short_vectors/Concurrency::graphics::double_2::get_x", "amp_short_vectors/Concurrency::graphics::double_2::operator-=", "amp_short_vectors/Concurrency::graphics::double_2::rg", "amp_short_vectors/Concurrency::graphics::double_2::gr", "amp_short_vectors/Concurrency::graphics::double_2::get_y", "amp_short_vectors/Concurrency::graphics::double_2::x", "amp_short_vectors/Concurrency::graphics::double_2::r", "amp_short_vectors/Concurrency::graphics::double_2::operator--", "amp_short_vectors/Concurrency::graphics::double_2", "amp_short_vectors/Concurrency::graphics::double_2::operator-", "amp_short_vectors/Concurrency::graphics::double_2::g", "amp_short_vectors/Concurrency::graphics::double_2::set_y"] -ms.assetid: c19c2d21-3cbf-4ce5-b460-3b8253688f82 ---- -# double_2 Class - -Represent a short vector of 2 double's. - -## Syntax - -```cpp -class double_2; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[double_2 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|double_2::get_x|| -|double_2::get_xy|| -|double_2::get_y|| -|double_2::get_yx|| -|double_2::ref_g|| -|double_2::ref_r|| -|double_2::ref_x|| -|double_2::ref_y|| -|double_2::set_x|| -|double_2::set_xy|| -|double_2::set_y|| -|double_2::set_yx|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|double_2::operator-|| -|double_2::operator--|| -|double_2::operator*=|| -|double_2::operator/=|| -|double_2::operator++|| -|double_2::operator+=|| -|double_2::operator=|| -|double_2::operator-=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|double_2::size Constant|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|double_2::g|| -|double_2::gr|| -|double_2::r|| -|double_2::rg|| -|double_2::x|| -|double_2::xy|| -|double_2::y|| -|double_2::yx|| - -## Inheritance Hierarchy - -`double_2` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## double_2 - -Default constructor, initializes all elements with 0. - -```cpp -double_2() restrict(amp, - cpu); - -double_2( - double _V0, - double _V1) restrict(amp, - cpu); - -double_2( - double _V) restrict(amp, - cpu); - -double_2( - const double_2& _Other) restrict(amp, - cpu); - -explicit inline double_2( - const uint_2& _Other) restrict(amp, - cpu); - -explicit inline double_2( - const int_2& _Other) restrict(amp, - cpu); - -explicit inline double_2( - const float_2& _Other) restrict(amp, - cpu); - -explicit inline double_2( - const unorm_2& _Other) restrict(amp, - cpu); - -explicit inline double_2( - const norm_2& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 2; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/double-3-class.md b/docs/parallel/amp/reference/double-3-class.md deleted file mode 100644 index 67dd97384bb..00000000000 --- a/docs/parallel/amp/reference/double-3-class.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -description: "Learn more about: double_3 Class" -title: "double_3 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::double_3::get_xzy", "amp_short_vectors/Concurrency::graphics::double_3", "amp_short_vectors/Concurrency::graphics::double_3::set_yz", "amp_short_vectors/Concurrency::graphics::double_3::bgr", "amp_short_vectors/Concurrency::graphics::double_3::get_zyx", "amp_short_vectors/Concurrency::graphics::double_3::r", "amp_short_vectors/Concurrency::graphics::double_3::g", "amp_short_vectors/Concurrency::graphics::double_3::gr", "amp_short_vectors/Concurrency::graphics::double_3::yz", "amp_short_vectors/Concurrency::graphics::double_3::gbr", "amp_short_vectors/Concurrency::graphics::double_3::xyz", "amp_short_vectors/Concurrency::graphics::double_3::grb", "amp_short_vectors/Concurrency::graphics::double_3::get_z", "amp_short_vectors/Concurrency::graphics::double_3::get_xyz", "amp_short_vectors/Concurrency::graphics::double_3::set_yxz", "amp_short_vectors/Concurrency::graphics::double_3::z", "amp_short_vectors/Concurrency::graphics::double_3::zx", "amp_short_vectors/Concurrency::graphics::double_3::operator+=", "amp_short_vectors/Concurrency::graphics::double_3::rg", "amp_short_vectors/Concurrency::graphics::double_3::get_x", "amp_short_vectors/Concurrency::graphics::double_3::x", "amp_short_vectors/Concurrency::graphics::double_3::set_y", "amp_short_vectors/Concurrency::graphics::double_3::set_yx", "amp_short_vectors/Concurrency::graphics::double_3::operator-=", "amp_short_vectors/Concurrency::graphics::double_3::operator/=", "amp_short_vectors/Concurrency::graphics::double_3::get_y", "amp_short_vectors/Concurrency::graphics::double_3::zy", "amp_short_vectors/Concurrency::graphics::double_3::xy", "amp_short_vectors/Concurrency::graphics::double_3::operator-", "amp_short_vectors/Concurrency::graphics::double_3::bg", "amp_short_vectors/Concurrency::graphics::double_3::get_xz", "amp_short_vectors/Concurrency::graphics::double_3::zxy", "amp_short_vectors/Concurrency::graphics::double_3::set_xzy", "amp_short_vectors/Concurrency::graphics::double_3::set_zx", "amp_short_vectors/Concurrency::graphics::double_3::xzy", "amp_short_vectors/Concurrency::graphics::double_3::get_yzx", "amp_short_vectors/Concurrency::graphics::double_3::br", "amp_short_vectors/Concurrency::graphics::double_3::set_zxy", "amp_short_vectors/Concurrency::graphics::double_3::zyx", "amp_short_vectors/Concurrency::graphics::double_3::get_zx", "amp_short_vectors/Concurrency::graphics::double_3::operator--", "amp_short_vectors/Concurrency::graphics::double_3::b", "amp_short_vectors/Concurrency::graphics::double_3::set_xy", "amp_short_vectors/Concurrency::graphics::double_3::set_x", "amp_short_vectors/Concurrency::graphics::double_3::rb", "amp_short_vectors/Concurrency::graphics::double_3::y", "amp_short_vectors/Concurrency::graphics::double_3::set_xyz", "amp_short_vectors/Concurrency::graphics::double_3::get_xy", "amp_short_vectors/Concurrency::graphics::double_3::operator++", "amp_short_vectors/Concurrency::graphics::double_3::set_z", "amp_short_vectors/Concurrency::graphics::double_3::yx", "amp_short_vectors/Concurrency::graphics::double_3::operator*=", "amp_short_vectors/Concurrency::graphics::double_3::set_zy", "amp_short_vectors/Concurrency::graphics::double_3::rgb", "amp_short_vectors/Concurrency::graphics::double_3::set_zyx", "amp_short_vectors/Concurrency::graphics::double_3::gb", "amp_short_vectors/Concurrency::graphics::double_3::get_zy", "amp_short_vectors/Concurrency::graphics::double_3::get_yz", "amp_short_vectors/Concurrency::graphics::double_3::operator=", "amp_short_vectors/Concurrency::graphics::double_3::yxz", "amp_short_vectors/Concurrency::graphics::double_3::xz", "amp_short_vectors/Concurrency::graphics::double_3::get_zxy", "amp_short_vectors/Concurrency::graphics::double_3::set_yzx", "amp_short_vectors/Concurrency::graphics::double_3::yzx", "amp_short_vectors/Concurrency::graphics::double_3::brg", "amp_short_vectors/Concurrency::graphics::double_3::set_xz", "amp_short_vectors/Concurrency::graphics::double_3::get_yx", "amp_short_vectors/Concurrency::graphics::double_3::rbg", "amp_short_vectors/Concurrency::graphics::double_3::get_yxz"] -ms.assetid: baeb3ff0-2862-4c81-857e-b1a4c085be25 ---- -# double_3 Class - -Represents a short vector of three doubles. - -## Syntax - -```cpp -class double_3; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|value_type|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[double_3 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|double_3::get_x|| -|double_3::get_xy|| -|double_3::get_xyz|| -|double_3::get_xz|| -|double_3::get_xzy|| -|double_3::get_y|| -|double_3::get_yx|| -|double_3::get_yxz|| -|double_3::get_yz|| -|double_3::get_yzx|| -|double_3::get_z|| -|double_3::get_zx|| -|double_3::get_zxy|| -|double_3::get_zy|| -|double_3::get_zyx|| -|double_3::ref_b|| -|double_3::ref_g|| -|double_3::ref_r|| -|double_3::ref_x|| -|double_3::ref_y|| -|double_3::ref_z|| -|double_3::set_x|| -|double_3::set_xy|| -|double_3::set_xyz|| -|double_3::set_xz|| -|double_3::set_xzy|| -|double_3::set_y|| -|double_3::set_yx|| -|double_3::set_yxz|| -|double_3::set_yz|| -|double_3::set_yzx|| -|double_3::set_z|| -|double_3::set_zx|| -|double_3::set_zxy|| -|double_3::set_zy|| -|double_3::set_zyx|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|double_3::operator-|| -|double_3::operator--|| -|double_3::operator*=|| -|double_3::operator/=|| -|double_3::operator++|| -|double_3::operator+=|| -|double_3::operator=|| -|double_3::operator-=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#double_3__size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|double_3::b|| -|double_3::bg|| -|double_3::bgr|| -|double_3::br|| -|double_3::brg|| -|double_3::g|| -|double_3::gb|| -|double_3::gbr|| -|double_3::gr|| -|double_3::grb|| -|double_3::r|| -|double_3::rb|| -|double_3::rbg|| -|double_3::rg|| -|double_3::rgb|| -|double_3::x|| -|double_3::xy|| -|double_3::xyz|| -|double_3::xz|| -|double_3::xzy|| -|double_3::y|| -|double_3::yx|| -|double_3::yxz|| -|double_3::yz|| -|double_3::yzx|| -|double_3::z|| -|double_3::zx|| -|double_3::zxy|| -|double_3::zy|| -|double_3::zyx|| - -## Inheritance Hierarchy - -`double_3` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## double_3 - -Default constructor, initializes all elements with 0. - -```cpp -double_3() restrict(amp, - cpu); - -double_3( - double _V0, - double _V1, - double _V2) restrict(amp, - cpu); - -double_3( - double _V) restrict(amp, - cpu); - -double_3( - const double_3& _Other) restrict(amp, - cpu); - -explicit inline double_3( - const uint_3& _Other) restrict(amp, - cpu); - -explicit inline double_3( - const int_3& _Other) restrict(amp, - cpu); - -explicit inline double_3( - const float_3& _Other) restrict(amp, - cpu); - -explicit inline double_3( - const unorm_3& _Other) restrict(amp, - cpu); - -explicit inline double_3( - const norm_3& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V2*
-The value to initialize element 2. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 3; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/double-4-class.md b/docs/parallel/amp/reference/double-4-class.md deleted file mode 100644 index ef7b6325492..00000000000 --- a/docs/parallel/amp/reference/double-4-class.md +++ /dev/null @@ -1,407 +0,0 @@ ---- -description: "Learn more about: double_4 Class" -title: "double_4 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::double_4::get_xw", "amp_short_vectors/Concurrency::graphics::double_4::wxz", "amp_short_vectors/Concurrency::graphics::double_4::rag", "amp_short_vectors/Concurrency::graphics::double_4::wzx", "amp_short_vectors/Concurrency::graphics::double_4::get_yzxw", "amp_short_vectors/Concurrency::graphics::double_4::zxw", "amp_short_vectors/Concurrency::graphics::double_4::set_zwx", "amp_short_vectors/Concurrency::graphics::double_4::get_yxwz", "amp_short_vectors/Concurrency::graphics::double_4::get_wy", "amp_short_vectors/Concurrency::graphics::double_4::set_yx", "amp_short_vectors/Concurrency::graphics::double_4::rbag", "amp_short_vectors/Concurrency::graphics::double_4::ab", "amp_short_vectors/Concurrency::graphics::double_4::ywx", "amp_short_vectors/Concurrency::graphics::double_4::set_xwzy", "amp_short_vectors/Concurrency::graphics::double_4::set_wxyz", "amp_short_vectors/Concurrency::graphics::double_4::xw", "amp_short_vectors/Concurrency::graphics::double_4::set_wxz", "amp_short_vectors/Concurrency::graphics::double_4::ga", "amp_short_vectors/Concurrency::graphics::double_4::yxz", "amp_short_vectors/Concurrency::graphics::double_4::wyx", "amp_short_vectors/Concurrency::graphics::double_4::get_yz", "amp_short_vectors/Concurrency::graphics::double_4::rgba", "amp_short_vectors/Concurrency::graphics::double_4::yzwx", "amp_short_vectors/Concurrency::graphics::double_4::rgb", "amp_short_vectors/Concurrency::graphics::double_4::ywz", "amp_short_vectors/Concurrency::graphics::double_4::set_yw", "amp_short_vectors/Concurrency::graphics::double_4::get_yw", "amp_short_vectors/Concurrency::graphics::double_4::get_xy", "amp_short_vectors/Concurrency::graphics::double_4::set_zwxy", "amp_short_vectors/Concurrency::graphics::double_4::arb", "amp_short_vectors/Concurrency::graphics::double_4::abgr", "amp_short_vectors/Concurrency::graphics::double_4::xwyz", "amp_short_vectors/Concurrency::graphics::double_4::get_wxy", "amp_short_vectors/Concurrency::graphics::double_4::wzyx", "amp_short_vectors/Concurrency::graphics::double_4::zwx", "amp_short_vectors/Concurrency::graphics::double_4::wyz", "amp_short_vectors/Concurrency::graphics::double_4::xwz", "amp_short_vectors/Concurrency::graphics::double_4::set_wy", "amp_short_vectors/Concurrency::graphics::double_4::g", "amp_short_vectors/Concurrency::graphics::double_4::set_zxwy", "amp_short_vectors/Concurrency::graphics::double_4::abg", "amp_short_vectors/Concurrency::graphics::double_4::xzyw", "amp_short_vectors/Concurrency::graphics::double_4::operator++", "amp_short_vectors/Concurrency::graphics::double_4::get_yzx", "amp_short_vectors/Concurrency::graphics::double_4::set_wzx", "amp_short_vectors/Concurrency::graphics::double_4::arg", "amp_short_vectors/Concurrency::graphics::double_4::rab", "amp_short_vectors/Concurrency::graphics::double_4::set_zwyx", "amp_short_vectors/Concurrency::graphics::double_4::ba", "amp_short_vectors/Concurrency::graphics::double_4::w", "amp_short_vectors/Concurrency::graphics::double_4::set_yxwz", "amp_short_vectors/Concurrency::graphics::double_4::ywxz", "amp_short_vectors/Concurrency::graphics::double_4::bar", "amp_short_vectors/Concurrency::graphics::double_4::set_xz", "amp_short_vectors/Concurrency::graphics::double_4::yxzw", "amp_short_vectors/Concurrency::graphics::double_4::get_xzyw", "amp_short_vectors/Concurrency::graphics::double_4::get_wxzy", "amp_short_vectors/Concurrency::graphics::double_4::garb", "amp_short_vectors/Concurrency::graphics::double_4::zwyx", "amp_short_vectors/Concurrency::graphics::double_4::set_yxz", "amp_short_vectors/Concurrency::graphics::double_4::get_xzw", "amp_short_vectors/Concurrency::graphics::double_4::wzy", "amp_short_vectors/Concurrency::graphics::double_4::get_xz", "amp_short_vectors/Concurrency::graphics::double_4::barg", "amp_short_vectors/Concurrency::graphics::double_4::get_zwyx", "amp_short_vectors/Concurrency::graphics::double_4::operator-=", "amp_short_vectors/Concurrency::graphics::double_4::set_yzwx", "amp_short_vectors/Concurrency::graphics::double_4::get_wxz", "amp_short_vectors/Concurrency::graphics::double_4::gabr", "amp_short_vectors/Concurrency::graphics::double_4::set_wxzy", "amp_short_vectors/Concurrency::graphics::double_4::operator/=", "amp_short_vectors/Concurrency::graphics::double_4::zxy", "amp_short_vectors/Concurrency::graphics::double_4::set_zx", "amp_short_vectors/Concurrency::graphics::double_4::get_ywzx", "amp_short_vectors/Concurrency::graphics::double_4::grab", "amp_short_vectors/Concurrency::graphics::double_4::set_ywzx", "amp_short_vectors/Concurrency::graphics::double_4::get_zy", "amp_short_vectors/Concurrency::graphics::double_4::wxzy", "amp_short_vectors/Concurrency::graphics::double_4::yzx", "amp_short_vectors/Concurrency::graphics::double_4::brag", "amp_short_vectors/Concurrency::graphics::double_4::get_wyz", "amp_short_vectors/Concurrency::graphics::double_4::set_yxw", "amp_short_vectors/Concurrency::graphics::double_4::set_xzw", "amp_short_vectors/Concurrency::graphics::double_4::get_zx", "amp_short_vectors/Concurrency::graphics::double_4::get_zxyw", "amp_short_vectors/Concurrency::graphics::double_4::get_zyxw", "amp_short_vectors/Concurrency::graphics::double_4::set_xzwy", "amp_short_vectors/Concurrency::graphics::double_4::get_xyzw", "amp_short_vectors/Concurrency::graphics::double_4::get_xywz", "amp_short_vectors/Concurrency::graphics::double_4::operator-", "amp_short_vectors/Concurrency::graphics::double_4::bga", "amp_short_vectors/Concurrency::graphics::double_4::bgra", "amp_short_vectors/Concurrency::graphics::double_4::set_yzxw", "amp_short_vectors/Concurrency::graphics::double_4::abr", "amp_short_vectors/Concurrency::graphics::double_4::brga", "amp_short_vectors/Concurrency::graphics::double_4::rga", "amp_short_vectors/Concurrency::graphics::double_4::yxw", "amp_short_vectors/Concurrency::graphics::double_4::abrg", "amp_short_vectors/Concurrency::graphics::double_4::gbr", "amp_short_vectors/Concurrency::graphics::double_4::set_wzyx", "amp_short_vectors/Concurrency::graphics::double_4::set_zyxw", "amp_short_vectors/Concurrency::graphics::double_4::xz", "amp_short_vectors/Concurrency::graphics::double_4::get_zxy", "amp_short_vectors/Concurrency::graphics::double_4::set_zw", "amp_short_vectors/Concurrency::graphics::double_4::wy", "amp_short_vectors/Concurrency::graphics::double_4::zx", "amp_short_vectors/Concurrency::graphics::double_4::set_xy", "amp_short_vectors/Concurrency::graphics::double_4::rabg", "amp_short_vectors/Concurrency::graphics::double_4::set_zwy", "amp_short_vectors/Concurrency::graphics::double_4::xzwy", "amp_short_vectors/Concurrency::graphics::double_4::bgar", "amp_short_vectors/Concurrency::graphics::double_4::operator+=", "amp_short_vectors/Concurrency::graphics::double_4::get_xwz", "amp_short_vectors/Concurrency::graphics::double_4::operator*=", "amp_short_vectors/Concurrency::graphics::double_4::get_yxw", "amp_short_vectors/Concurrency::graphics::double_4::y", "amp_short_vectors/Concurrency::graphics::double_4::set_zy", "amp_short_vectors/Concurrency::graphics::double_4::wzxy", "amp_short_vectors/Concurrency::graphics::double_4::get_xwy", "amp_short_vectors/Concurrency::graphics::double_4::xzy", "amp_short_vectors/Concurrency::graphics::double_4::set_zywx", "amp_short_vectors/Concurrency::graphics::double_4::yxwz", "amp_short_vectors/Concurrency::graphics::double_4::ragb", "amp_short_vectors/Concurrency::graphics::double_4::get_zyx", "amp_short_vectors/Concurrency::graphics::double_4::agb", "amp_short_vectors/Concurrency::graphics::double_4::gar", "amp_short_vectors/Concurrency::graphics::double_4::get_wyxz", "amp_short_vectors/Concurrency::graphics::double_4::a", "amp_short_vectors/Concurrency::graphics::double_4::set_wyx", "amp_short_vectors/Concurrency::graphics::double_4::rg", "amp_short_vectors/Concurrency::graphics::double_4::set_xzyw", "amp_short_vectors/Concurrency::graphics::double_4::get_ywx", "amp_short_vectors/Concurrency::graphics::double_4::yx", "amp_short_vectors/Concurrency::graphics::double_4::get_wyzx", "amp_short_vectors/Concurrency::graphics::double_4::set_w", "amp_short_vectors/Concurrency::graphics::double_4::set_zyx", "amp_short_vectors/Concurrency::graphics::double_4::set_wyz", "amp_short_vectors/Concurrency::graphics::double_4::set_wzxy", "amp_short_vectors/Concurrency::graphics::double_4::wyzx", "amp_short_vectors/Concurrency::graphics::double_4::gbar", "amp_short_vectors/Concurrency::graphics::double_4::operator=", "amp_short_vectors/Concurrency::graphics::double_4::x", "amp_short_vectors/Concurrency::graphics::double_4::get_y", "amp_short_vectors/Concurrency::graphics::double_4::set_wx", "amp_short_vectors/Concurrency::graphics::double_4::get_zyw", "amp_short_vectors/Concurrency::graphics::double_4::set_xywz", "amp_short_vectors/Concurrency::graphics::double_4::zyxw", "amp_short_vectors/Concurrency::graphics::double_4::get_zywx", "amp_short_vectors/Concurrency::graphics::double_4::yzw", "amp_short_vectors/Concurrency::graphics::double_4::xyw", "amp_short_vectors/Concurrency::graphics::double_4::bra", "amp_short_vectors/Concurrency::graphics::double_4::agr", "amp_short_vectors/Concurrency::graphics::double_4::zw", "amp_short_vectors/Concurrency::graphics::double_4::get_xwyz", "amp_short_vectors/Concurrency::graphics::double_4::gbra", "amp_short_vectors/Concurrency::graphics::double_4::get_wz", "amp_short_vectors/Concurrency::graphics::double_4::brg", "amp_short_vectors/Concurrency::graphics::double_4::xyz", "amp_short_vectors/Concurrency::graphics::double_4::set_y", "amp_short_vectors/Concurrency::graphics::double_4::set_wyxz", "amp_short_vectors/Concurrency::graphics::double_4::set_z", "amp_short_vectors/Concurrency::graphics::double_4::zwxy", "amp_short_vectors/Concurrency::graphics::double_4::get_ywxz", "amp_short_vectors/Concurrency::graphics::double_4::set_xwy", "amp_short_vectors/Concurrency::graphics::double_4::xyzw", "amp_short_vectors/Concurrency::graphics::double_4::get_x", "amp_short_vectors/Concurrency::graphics::double_4::get_zw", "amp_short_vectors/Concurrency::graphics::double_4::rbga", "amp_short_vectors/Concurrency::graphics::double_4::gr", "amp_short_vectors/Concurrency::graphics::double_4::set_xyzw", "amp_short_vectors/Concurrency::graphics::double_4::get_xzwy", "amp_short_vectors/Concurrency::graphics::double_4::gb", "amp_short_vectors/Concurrency::graphics::double_4::zxyw", "amp_short_vectors/Concurrency::graphics::double_4::set_zxw", "amp_short_vectors/Concurrency::graphics::double_4::gab", "amp_short_vectors/Concurrency::graphics::double_4::xwy", "amp_short_vectors/Concurrency::graphics::double_4::wxyz", "amp_short_vectors/Concurrency::graphics::double_4::wx", "amp_short_vectors/Concurrency::graphics::double_4::gra", "amp_short_vectors/Concurrency::graphics::double_4::xwzy", "amp_short_vectors/Concurrency::graphics::double_4::wxy", "amp_short_vectors/Concurrency::graphics::double_4::set_ywz", "amp_short_vectors/Concurrency::graphics::double_4::set_xw", "amp_short_vectors/Concurrency::graphics::double_4::set_yxzw", "amp_short_vectors/Concurrency::graphics::double_4::set_zyw", "amp_short_vectors/Concurrency::graphics::double_4::get_zwy", "amp_short_vectors/Concurrency::graphics::double_4::agrb", "amp_short_vectors/Concurrency::graphics::double_4::get_yxzw", "amp_short_vectors/Concurrency::graphics::double_4::grb", "amp_short_vectors/Concurrency::graphics::double_4::get_yx", "amp_short_vectors/Concurrency::graphics::double_4::gba", "amp_short_vectors/Concurrency::graphics::double_4::set_ywxz", "amp_short_vectors/Concurrency::graphics::double_4::ywzx", "amp_short_vectors/Concurrency::graphics::double_4::yzxw", "amp_short_vectors/Concurrency::graphics::double_4::zyx", "amp_short_vectors/Concurrency::graphics::double_4::get_yxz", "amp_short_vectors/Concurrency::graphics::double_4::set_yzw", "amp_short_vectors/Concurrency::graphics::double_4::xzw", "amp_short_vectors/Concurrency::graphics::double_4::wz", "amp_short_vectors/Concurrency::graphics::double_4::yw", "amp_short_vectors/Concurrency::graphics::double_4::set_zxyw", "amp_short_vectors/Concurrency::graphics::double_4::get_yzw", "amp_short_vectors/Concurrency::graphics::double_4::get_xyw", "amp_short_vectors/Concurrency::graphics::double_4::get_wzx", "amp_short_vectors/Concurrency::graphics::double_4::argb", "amp_short_vectors/Concurrency::graphics::double_4::set_ywx", "amp_short_vectors/Concurrency::graphics::double_4::get_zwx", "amp_short_vectors/Concurrency::graphics::double_4::set_xyw", "amp_short_vectors/Concurrency::graphics::double_4::r", "amp_short_vectors/Concurrency::graphics::double_4::set_yzx", "amp_short_vectors/Concurrency::graphics::double_4::agbr", "amp_short_vectors/Concurrency::graphics::double_4::set_wzy", "amp_short_vectors/Concurrency::graphics::double_4::xywz", "amp_short_vectors/Concurrency::graphics::double_4::set_wyzx", "amp_short_vectors/Concurrency::graphics::double_4::grba", "amp_short_vectors/Concurrency::graphics::double_4::bg", "amp_short_vectors/Concurrency::graphics::double_4::get_zwxy", "amp_short_vectors/Concurrency::graphics::double_4::get_wyx", "amp_short_vectors/Concurrency::graphics::double_4::get_zxwy", "amp_short_vectors/Concurrency::graphics::double_4::set_zxy", "amp_short_vectors/Concurrency::graphics::double_4::get_w", "amp_short_vectors/Concurrency::graphics::double_4", "amp_short_vectors/Concurrency::graphics::double_4::set_x", "amp_short_vectors/Concurrency::graphics::double_4::bgr", "amp_short_vectors/Concurrency::graphics::double_4::xy", "amp_short_vectors/Concurrency::graphics::double_4::yz", "amp_short_vectors/Concurrency::graphics::double_4::get_wzxy", "amp_short_vectors/Concurrency::graphics::double_4::rbg", "amp_short_vectors/Concurrency::graphics::double_4::get_xzy", "amp_short_vectors/Concurrency::graphics::double_4::operator--", "amp_short_vectors/Concurrency::graphics::double_4::z", "amp_short_vectors/Concurrency::graphics::double_4::b", "amp_short_vectors/Concurrency::graphics::double_4::set_wz", "amp_short_vectors/Concurrency::graphics::double_4::arbg", "amp_short_vectors/Concurrency::graphics::double_4::rba", "amp_short_vectors/Concurrency::graphics::double_4::get_zxw", "amp_short_vectors/Concurrency::graphics::double_4::get_wxyz", "amp_short_vectors/Concurrency::graphics::double_4::ag", "amp_short_vectors/Concurrency::graphics::double_4::zxwy", "amp_short_vectors/Concurrency::graphics::double_4::get_ywz", "amp_short_vectors/Concurrency::graphics::double_4::get_xyz", "amp_short_vectors/Concurrency::graphics::double_4::get_wzy", "amp_short_vectors/Concurrency::graphics::double_4::zy", "amp_short_vectors/Concurrency::graphics::double_4::set_xyz", "amp_short_vectors/Concurrency::graphics::double_4::set_wxy", "amp_short_vectors/Concurrency::graphics::double_4::get_wx", "amp_short_vectors/Concurrency::graphics::double_4::rb", "amp_short_vectors/Concurrency::graphics::double_4::get_wzyx", "amp_short_vectors/Concurrency::graphics::double_4::get_yzwx", "amp_short_vectors/Concurrency::graphics::double_4::rgab", "amp_short_vectors/Concurrency::graphics::double_4::set_xwz", "amp_short_vectors/Concurrency::graphics::double_4::get_z", "amp_short_vectors/Concurrency::graphics::double_4::br", "amp_short_vectors/Concurrency::graphics::double_4::bagr", "amp_short_vectors/Concurrency::graphics::double_4::zywx", "amp_short_vectors/Concurrency::graphics::double_4::set_xzy", "amp_short_vectors/Concurrency::graphics::double_4::set_yz", "amp_short_vectors/Concurrency::graphics::double_4::zyw", "amp_short_vectors/Concurrency::graphics::double_4::ar", "amp_short_vectors/Concurrency::graphics::double_4::wyxz", "amp_short_vectors/Concurrency::graphics::double_4::get_xwzy", "amp_short_vectors/Concurrency::graphics::double_4::ra", "amp_short_vectors/Concurrency::graphics::double_4::set_xwyz", "amp_short_vectors/Concurrency::graphics::double_4::bag", "amp_short_vectors/Concurrency::graphics::double_4::zwy"] -ms.assetid: a81c1595-24c6-4b3f-9574-d5942275e5e8 ---- -# double_4 Class - -Represents a short vector of four doubles. - -## Syntax - -```cpp -class double_4; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[double_4 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|double_4::get_w|| -|double_4::get_wx|| -|double_4::get_wxy|| -|double_4::get_wxyz|| -|double_4::get_wxz|| -|double_4::get_wxzy|| -|double_4::get_wy|| -|double_4::get_wyx|| -|double_4::get_wyxz|| -|double_4::get_wyz|| -|double_4::get_wyzx|| -|double_4::get_wz|| -|double_4::get_wzx|| -|double_4::get_wzxy|| -|double_4::get_wzy|| -|double_4::get_wzyx|| -|double_4::get_x|| -|double_4::get_xw|| -|double_4::get_xwy|| -|double_4::get_xwyz|| -|double_4::get_xwz|| -|double_4::get_xwzy|| -|double_4::get_xy|| -|double_4::get_xyw|| -|double_4::get_xywz|| -|double_4::get_xyz|| -|double_4::get_xyzw|| -|double_4::get_xz|| -|double_4::get_xzw|| -|double_4::get_xzwy|| -|double_4::get_xzy|| -|double_4::get_xzyw|| -|double_4::get_y|| -|double_4::get_yw|| -|double_4::get_ywx|| -|double_4::get_ywxz|| -|double_4::get_ywz|| -|double_4::get_ywzx|| -|double_4::get_yx|| -|double_4::get_yxw|| -|double_4::get_yxwz|| -|double_4::get_yxz|| -|double_4::get_yxzw|| -|double_4::get_yz|| -|double_4::get_yzw|| -|double_4::get_yzwx|| -|double_4::get_yzx|| -|double_4::get_yzxw|| -|double_4::get_z|| -|double_4::get_zw|| -|double_4::get_zwx|| -|double_4::get_zwxy|| -|double_4::get_zwy|| -|double_4::get_zwyx|| -|double_4::get_zx|| -|double_4::get_zxw|| -|double_4::get_zxwy|| -|double_4::get_zxy|| -|double_4::get_zxyw|| -|double_4::get_zy|| -|double_4::get_zyw|| -|double_4::get_zywx|| -|double_4::get_zyx|| -|double_4::get_zyxw|| -|double_4::ref_a|| -|double_4::ref_b|| -|double_4::ref_g|| -|double_4::ref_r|| -|double_4::ref_w|| -|double_4::ref_x|| -|double_4::ref_y|| -|double_4::ref_z|| -|double_4::set_w|| -|double_4::set_wx|| -|double_4::set_wxy|| -|double_4::set_wxyz|| -|double_4::set_wxz|| -|double_4::set_wxzy|| -|double_4::set_wy|| -|double_4::set_wyx|| -|double_4::set_wyxz|| -|double_4::set_wyz|| -|double_4::set_wyzx|| -|double_4::set_wz|| -|double_4::set_wzx|| -|double_4::set_wzxy|| -|double_4::set_wzy|| -|double_4::set_wzyx|| -|double_4::set_x|| -|double_4::set_xw|| -|double_4::set_xwy|| -|double_4::set_xwyz|| -|double_4::set_xwz|| -|double_4::set_xwzy|| -|double_4::set_xy|| -|double_4::set_xyw|| -|double_4::set_xywz|| -|double_4::set_xyz|| -|double_4::set_xyzw|| -|double_4::set_xz|| -|double_4::set_xzw|| -|double_4::set_xzwy|| -|double_4::set_xzy|| -|double_4::set_xzyw|| -|double_4::set_y|| -|double_4::set_yw|| -|double_4::set_ywx|| -|double_4::set_ywxz|| -|double_4::set_ywz|| -|double_4::set_ywzx|| -|double_4::set_yx|| -|double_4::set_yxw|| -|double_4::set_yxwz|| -|double_4::set_yxz|| -|double_4::set_yxzw|| -|double_4::set_yz|| -|double_4::set_yzw|| -|double_4::set_yzwx|| -|double_4::set_yzx|| -|double_4::set_yzxw|| -|double_4::set_z|| -|double_4::set_zw|| -|double_4::set_zwx|| -|double_4::set_zwxy|| -|double_4::set_zwy|| -|double_4::set_zwyx|| -|double_4::set_zx|| -|double_4::set_zxw|| -|double_4::set_zxwy|| -|double_4::set_zxy|| -|double_4::set_zxyw|| -|double_4::set_zy|| -|double_4::set_zyw|| -|double_4::set_zywx|| -|double_4::set_zyx|| -|double_4::set_zyxw|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|double_4::operator-|| -|double_4::operator--|| -|double_4::operator*=|| -|double_4::operator/=|| -|double_4::operator++|| -|double_4::operator+=|| -|double_4::operator=|| -|double_4::operator-=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#double_4__size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|double_4::a|| -|double_4::ab|| -|double_4::abg|| -|double_4::abgr|| -|double_4::abr|| -|double_4::abrg|| -|double_4::ag|| -|double_4::agb|| -|double_4::agbr|| -|double_4::agr|| -|double_4::agrb|| -|double_4::ar|| -|double_4::arb|| -|double_4::arbg|| -|double_4::arg|| -|double_4::argb|| -|double_4::b|| -|double_4::ba|| -|double_4::bag|| -|double_4::bagr|| -|double_4::bar|| -|double_4::barg|| -|double_4::bg|| -|double_4::bga|| -|double_4::bgar|| -|double_4::bgr|| -|double_4::bgra|| -|double_4::br|| -|double_4::bra|| -|double_4::brag|| -|double_4::brg|| -|double_4::brga|| -|double_4::g|| -|double_4::ga|| -|double_4::gab|| -|double_4::gabr|| -|double_4::gar|| -|double_4::garb|| -|double_4::gb|| -|double_4::gba|| -|double_4::gbar|| -|double_4::gbr|| -|double_4::gbra|| -|double_4::gr|| -|double_4::gra|| -|double_4::grab|| -|double_4::grb|| -|double_4::grba|| -|double_4::r|| -|double_4::ra|| -|double_4::rab|| -|double_4::rabg|| -|double_4::rag|| -|double_4::ragb|| -|double_4::rb|| -|double_4::rba|| -|double_4::rbag|| -|double_4::rbg|| -|double_4::rbga|| -|double_4::rg|| -|double_4::rga|| -|double_4::rgab|| -|double_4::rgb|| -|double_4::rgba|| -|double_4::w|| -|double_4::wx|| -|double_4::wxy|| -|double_4::wxyz|| -|double_4::wxz|| -|double_4::wxzy|| -|double_4::wy|| -|double_4::wyx|| -|double_4::wyxz|| -|double_4::wyz|| -|double_4::wyzx|| -|double_4::wz|| -|double_4::wzx|| -|double_4::wzxy|| -|double_4::wzy|| -|double_4::wzyx|| -|double_4::x|| -|double_4::xw|| -|double_4::xwy|| -|double_4::xwyz|| -|double_4::xwz|| -|double_4::xwzy|| -|double_4::xy|| -|double_4::xyw|| -|double_4::xywz|| -|double_4::xyz|| -|double_4::xyzw|| -|double_4::xz|| -|double_4::xzw|| -|double_4::xzwy|| -|double_4::xzy|| -|double_4::xzyw|| -|double_4::y|| -|double_4::yw|| -|double_4::ywx|| -|double_4::ywxz|| -|double_4::ywz|| -|double_4::ywzx|| -|double_4::yx|| -|double_4::yxw|| -|double_4::yxwz|| -|double_4::yxz|| -|double_4::yxzw|| -|double_4::yz|| -|double_4::yzw|| -|double_4::yzwx|| -|double_4::yzx|| -|double_4::yzxw|| -|double_4::z|| -|double_4::zw|| -|double_4::zwx|| -|double_4::zwxy|| -|double_4::zwy|| -|double_4::zwyx|| -|double_4::zx|| -|double_4::zxw|| -|double_4::zxwy|| -|double_4::zxy|| -|double_4::zxyw|| -|double_4::zy|| -|double_4::zyw|| -|double_4::zywx|| -|double_4::zyx|| -|double_4::zyxw|| - -## Inheritance Hierarchy - -`double_4` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## double_4 - -Default constructor, initializes all elements with 0. - -```cpp -double_4() restrict(amp, - cpu); - -double_4( - double _V0, - double _V1, - double _V2, - double _V3) restrict(amp, - cpu); - -double_4( - double _V) restrict(amp, - cpu); - -double_4( - const double_4& _Other) restrict(amp, - cpu); - -explicit inline double_4( - const uint_4& _Other) restrict(amp, - cpu); - -explicit inline double_4( - const int_4& _Other) restrict(amp, - cpu); - -explicit inline double_4( - const float_4& _Other) restrict(amp, - cpu); - -explicit inline double_4( - const unorm_4& _Other) restrict(amp, - cpu); - -explicit inline double_4( - const norm_4& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V2*
-The value to initialize element 2. - -*_V3*
-The value to initialize element 3. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 4; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/extent-class.md b/docs/parallel/amp/reference/extent-class.md deleted file mode 100644 index f547bd38c0f..00000000000 --- a/docs/parallel/amp/reference/extent-class.md +++ /dev/null @@ -1,386 +0,0 @@ ---- -title: "extent Class (C++ AMP)" -description: "Learn more about: extent Class (C++ AMP)" -ms.date: 03/27/2019 -f1_keywords: ["extent", "AMP/extent", "AMP/Concurrency::extent::extent", "AMP/Concurrency::extent::contains", "AMP/Concurrency::extent::size", "AMP/Concurrency::extent::tile", "AMP/Concurrency::extent::rank Constant"] -helpviewer_keywords: ["extent structure"] ---- -# extent Class (C++ AMP) - -Represents a vector of *N* integer values that specify the bounds of an *N*-dimensional space that has an origin of 0. The values in the vector are ordered from most significant to least significant. - -## Syntax - -```cpp -template -class extent; -``` - -### Parameters - -*_Rank*
-The rank of the `extent` object. - -## Requirements - -**Header:** amp.h - -**Namespace:** Concurrency - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[extent Constructor](#ctor)|Initializes a new instance of the `extent` class.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[contains](#contains)|Verifies that the specified `extent` object has the specified rank.| -|[size](#size)|Returns the total linear size of the extent (in units of elements).| -|[tile](#tile)|Produces a `tiled_extent` object with the tile extents given by specified dimensions.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[operator-](#operator_min)|Returns a new `extent` object that's created by subtracting the `index` elements from the corresponding `extent` elements.| -|[operator--](#operator_min_min)|Decrements each element of the `extent` object.| -|[operator%=](#operator_mod_eq)|Calculates the modulus (remainder) of each element in the `extent` object when that element is divided by a number.| -|[operator*=](#operator_star_eq)|Multiplies each element of the `extent` object by a number.| -|[operator/=](#operator_min_eq)|Divides each element of the `extent` object by a number.| -|[extent::operator\[\]](#operator_at)|Returns the element that's at the specified index.| -|[operator+](#operator_add)|Returns a new `extent` object that's created by adding the corresponding `index` and `extent` elements.| -|[operator++](#operator_add_add)|Increments each element of the `extent` object.| -|[operator+=](#operator_add_eq)|Adds the specified number to each element of the `extent` object.| -|[operator=](#operator_eq)|Copies the contents of another `extent` object into this one.| -|[operator-=](#operator_min_eq)|Subtracts the specified number from each element of the `extent` object.| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[rank Constant](#rank_constant)|Gets the rank of the `extent` object.| - -## Inheritance Hierarchy - -`extent` - -## contains - -Indicates whether the specified [index](index-class.md) value is contained within the `extent` object. - -### Syntax - -```cpp -bool contains(const index& _Index) const restrict(amp,cpu); -``` - -### Parameters - -*_Index*
-The `index` value to test. - -### Return Value - -**`true`** if the specified *index* value is contained in the `extent` object; otherwise, **`false`**. - -## extent - -Initializes a new instance of the `extent` class. - -### Syntax - -```cpp -extent() restrict(amp,cpu); -extent(const extent<_Rank>& _Other) restrict(amp,cpu); -explicit extent(int _I) restrict(amp,cpu); -extent(int _I0, int _I1) restrict(amp,cpu); -extent(int _I0, int _I1, int _I2) restrict(amp,cpu); -explicit extent(const int _Array[_Rank])restrict(amp,cpu); -``` - -### Parameters - -*_Array*
-An array of `_Rank` integers that is used to create the new `extent` object. - -*_I*
-The length of the extent. - -*_I0*
-The length of the most significant dimension. - -*_I1*
-The length of the next-to-most-significant dimension. - -*_I2*
-The length of the least significant dimension. - -*_Other*
-An `extent` object on which the new `extent` object is based. - -## Remarks - -The default constructor initializes an `extent` object that has a rank of three. - -If an array is used to construct an `extent` object, the length of the array must match the rank of the `extent` object. - -## operator%= - -Calculates the modulus (remainder) of each element in the `extent` when that element is divided by a number. - -### Syntax - -```cpp -extent<_Rank>& operator%=(int _Rhs) restrict(cpu, direct3d); -``` - -### Parameters - -*_Rhs*
-The number to find the modulus of. - -### Return Value - -The `extent` object. - -## operator*= - -Multiplies each element in the `extent` object by the specified number. - -### Syntax - -```cpp -extent<_Rank>& operator*=(int _Rhs) restrict(amp,cpu); -``` - -### Parameters - -*_Rhs*
-The number to multiply. - -### Return Value - -The `extent` object. - -## operator+ - -Returns a new `extent` object created by adding the corresponding `index` and `extent` elements. - -### Syntax - -```cpp -extent<_Rank> operator+(const index<_Rank>& _Rhs) restrict(amp,cpu); -``` - -### Parameters - -*_Rhs*
-The `index` object that contains the elements to add. - -### Return Value - -The new `extent` object. - -## operator++ - -Increments each element of the `extent` object. - -### Syntax - -```cpp -extent<_Rank>& operator++() restrict(amp,cpu); -extent<_Rank> operator++(int)restrict(amp,cpu); -``` - -### Return Value - -For the prefix operator, the `extent` object (**`*this`**). For the suffix operator, a new `extent` object. - -## operator+= - -Adds the specified number to each element of the `extent` object. - -### Syntax - -```cpp -extent<_Rank>& operator+=(const extent<_Rank>& _Rhs) restrict(amp,cpu); -extent<_Rank>& operator+=(const index<_Rank>& _Rhs) restrict(amp,cpu); -extent<_Rank>& operator+=(int _Rhs) restrict(amp,cpu); -``` - -### Parameters - -*_Rhs*
-The number, index, or extent to add. - -### Return Value - -The resulting `extent` object. - -## operator- - -Creates a new `extent` object by subtracting each element in the specified `index` object from the corresponding element in this `extent` object. - -### Syntax - -```cpp -extent<_Rank> operator-(const index<_Rank>& _Rhs) restrict(amp,cpu); -``` - -### Parameters - -*_Rhs*
-The `index` object that contains the elements to subtract. - -### Return Value - -The new `extent` object. - -## operator-- - -Decrements each element in the `extent` object. - -### Syntax - -```cpp -extent<_Rank>& operator--() restrict(amp,cpu); -extent<_Rank> operator--(int)restrict(amp,cpu); -``` - -### Return Value - -For the prefix operator, the `extent` object (**`*this`**). For the suffix operator, a new `extent` object. - -## operator/= - -Divides each element in the `extent` object by the specified number. - -### Syntax - -```cpp -extent<_Rank>& operator/=(int _Rhs) restrict(amp,cpu); -``` - -### Parameters - -*_Rhs*
-The number to divide by. - -### Return Value - -The `extent` object. - -## operator-= - -Subtracts the specified number from each element of the `extent` object. - -### Syntax - -```cpp -extent<_Rank>& operator-=(const extent<_Rank>& _Rhs) restrict(amp,cpu); -extent<_Rank>& operator-=(const index<_Rank>& _Rhs) restrict(amp,cpu); -extent<_Rank>& operator-=(int _Rhs) restrict(amp,cpu); -``` - -### Parameters - -*_Rhs*
-The number to subtract. - -### Return Value - -The resulting `extent` object. - -## operator= - -Copies the contents of another `extent` object into this one. - -### Syntax - -```cpp -extent<_Rank>& operator=(const extent<_Rank>& _Other) restrict(amp,cpu); -``` - -### Parameters - -*_Other*
-The `extent` object to copy from. - -### Return Value - -A reference to this `extent` object. - -## extent::operator \[\] - -Returns the element that's at the specified index. - -### Syntax - -```cpp -int operator[](unsigned int _Index) const restrict(amp,cpu); -int& operator[](unsigned int _Index) restrict(amp,cpu); -``` - -### Parameters - -*_Index*
-An integer from 0 through the rank minus 1. - -### Return Value - -The element that's at the specified index. - -## rank - -Stores the rank of the `extent` object. - -### Syntax - -```cpp -static const int rank = _Rank; -``` - -## size - -Returns the total linear size of the `extent` object (in units of elements). - -### Syntax - -```cpp -unsigned int size() const restrict(amp,cpu); -``` - -## tile - -Produces a tiled_extent object with the specified tile dimensions. - -```cpp -template -tiled_extent<_Dim0> tile() const ; - -template -tiled_extent<_Dim0, _Dim1> tile() const ; - -template -tiled_extent<_Dim0, _Dim1, _Dim2> tile() const ; -``` - -### Parameters - -*_Dim0*
-The most significant component of the tiled extent. - -*_Dim1*
-The next-to-most-significant component of the tiled extent. - -*_Dim2*
-The least significant component of the tiled extent. - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/float-2-class.md b/docs/parallel/amp/reference/float-2-class.md deleted file mode 100644 index 4f6befc7b98..00000000000 --- a/docs/parallel/amp/reference/float-2-class.md +++ /dev/null @@ -1,155 +0,0 @@ ---- -description: "Learn more about: float_2 Class" -title: "float_2 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::float_2::yx", "amp_short_vectors/Concurrency::graphics::float_2::operator-=", "amp_short_vectors/Concurrency::graphics::float_2::operator++", "amp_short_vectors/Concurrency::graphics::float_2::operator-", "amp_short_vectors/Concurrency::graphics::float_2::r", "amp_short_vectors/Concurrency::graphics::float_2::get_yx", "amp_short_vectors/Concurrency::graphics::float_2::get_xy", "amp_short_vectors/Concurrency::graphics::float_2::operator/=", "amp_short_vectors/Concurrency::graphics::float_2::set_yx", "amp_short_vectors/Concurrency::graphics::float_2::x", "amp_short_vectors/Concurrency::graphics::float_2::get_y", "amp_short_vectors/Concurrency::graphics::float_2::operator+=", "amp_short_vectors/Concurrency::graphics::float_2::gr", "amp_short_vectors/Concurrency::graphics::float_2::operator=", "amp_short_vectors/Concurrency::graphics::float_2::set_x", "amp_short_vectors/Concurrency::graphics::float_2::operator--", "amp_short_vectors/Concurrency::graphics::float_2::get_x", "amp_short_vectors/Concurrency::graphics::float_2::operator*=", "amp_short_vectors/Concurrency::graphics::float_2::rg", "amp_short_vectors/Concurrency::graphics::float_2::set_xy", "amp_short_vectors/Concurrency::graphics::float_2::xy", "amp_short_vectors/Concurrency::graphics::float_2", "amp_short_vectors/Concurrency::graphics::float_2::set_y", "amp_short_vectors/Concurrency::graphics::float_2::y", "amp_short_vectors/Concurrency::graphics::float_2::g"] -ms.assetid: b3ebd48e-f8c8-4f00-a640-357f702f0cae ---- -# float_2 Class - -Represents a short vector of two floats. - -## Syntax - -```cpp -class float_2; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[float_2 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|float_2::get_x|| -|float_2::get_xy|| -|float_2::get_y|| -|float_2::get_yx|| -|float_2::ref_g|| -|float_2::ref_r|| -|float_2::ref_x|| -|float_2::ref_y|| -|float_2::set_x|| -|float_2::set_xy|| -|float_2::set_y|| -|float_2::set_yx|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|float_2::operator-|| -|float_2::operator--|| -|float_2::operator*=|| -|float_2::operator/=|| -|float_2::operator++|| -|float_2::operator+=|| -|float_2::operator=|| -|float_2::operator-=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#float_2__size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|float_2::g|| -|float_2::gr|| -|float_2::r|| -|float_2::rg|| -|float_2::x|| -|float_2::xy|| -|float_2::y|| -|float_2::yx|| - -## Inheritance Hierarchy - -`float_2` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## float_2 - -Default constructor, initializes all elements with 0. - -```cpp -float_2() restrict(amp, - cpu); - -float_2( - float _V0, - float _V1) restrict(amp, - cpu); - -float_2( - float _V) restrict(amp, - cpu); - -float_2( - const float_2& _Other) restrict(amp, - cpu); - -explicit inline float_2( - const uint_2& _Other) restrict(amp, - cpu); - -explicit inline float_2( - const int_2& _Other) restrict(amp, - cpu); - -explicit inline float_2( - const unorm_2& _Other) restrict(amp, - cpu); - -explicit inline float_2( - const norm_2& _Other) restrict(amp, - cpu); - -explicit inline float_2( - const double_2& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 2; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/float-3-class.md b/docs/parallel/amp/reference/float-3-class.md deleted file mode 100644 index 0a4ac77c7da..00000000000 --- a/docs/parallel/amp/reference/float-3-class.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -description: "Learn more about: float_3 Class" -title: "float_3 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::float_3::get_zyx", "amp_short_vectors/Concurrency::graphics::float_3::set_y", "amp_short_vectors/Concurrency::graphics::float_3::b", "amp_short_vectors/Concurrency::graphics::float_3::operator-=", "amp_short_vectors/Concurrency::graphics::float_3::get_y", "amp_short_vectors/Concurrency::graphics::float_3::set_zy", "amp_short_vectors/Concurrency::graphics::float_3::get_yzx", "amp_short_vectors/Concurrency::graphics::float_3::xz", "amp_short_vectors/Concurrency::graphics::float_3::xyz", "amp_short_vectors/Concurrency::graphics::float_3::operator+=", "amp_short_vectors/Concurrency::graphics::float_3::brg", "amp_short_vectors/Concurrency::graphics::float_3::get_x", "amp_short_vectors/Concurrency::graphics::float_3::get_zx", "amp_short_vectors/Concurrency::graphics::float_3::y", "amp_short_vectors/Concurrency::graphics::float_3::rbg", "amp_short_vectors/Concurrency::graphics::float_3::operator-", "amp_short_vectors/Concurrency::graphics::float_3::get_yz", "amp_short_vectors/Concurrency::graphics::float_3::set_xz", "amp_short_vectors/Concurrency::graphics::float_3::operator/=", "amp_short_vectors/Concurrency::graphics::float_3::zxy", "amp_short_vectors/Concurrency::graphics::float_3::yx", "amp_short_vectors/Concurrency::graphics::float_3::g", "amp_short_vectors/Concurrency::graphics::float_3::r", "amp_short_vectors/Concurrency::graphics::float_3::zy", "amp_short_vectors/Concurrency::graphics::float_3::set_zxy", "amp_short_vectors/Concurrency::graphics::float_3::set_zyx", "amp_short_vectors/Concurrency::graphics::float_3::get_yx", "amp_short_vectors/Concurrency::graphics::float_3", "amp_short_vectors/Concurrency::graphics::float_3::get_xz", "amp_short_vectors/Concurrency::graphics::float_3::get_yxz", "amp_short_vectors/Concurrency::graphics::float_3::set_xy", "amp_short_vectors/Concurrency::graphics::float_3::get_xzy", "amp_short_vectors/Concurrency::graphics::float_3::bgr", "amp_short_vectors/Concurrency::graphics::float_3::zx", "amp_short_vectors/Concurrency::graphics::float_3::gr", "amp_short_vectors/Concurrency::graphics::float_3::set_z", "amp_short_vectors/Concurrency::graphics::float_3::get_zy", "amp_short_vectors/Concurrency::graphics::float_3::gb", "amp_short_vectors/Concurrency::graphics::float_3::set_xzy", "amp_short_vectors/Concurrency::graphics::float_3::set_zx", "amp_short_vectors/Concurrency::graphics::float_3::set_yzx", "amp_short_vectors/Concurrency::graphics::float_3::operator=", "amp_short_vectors/Concurrency::graphics::float_3::x", "amp_short_vectors/Concurrency::graphics::float_3::grb", "amp_short_vectors/Concurrency::graphics::float_3::zyx", "amp_short_vectors/Concurrency::graphics::float_3::set_yxz", "amp_short_vectors/Concurrency::graphics::float_3::get_zxy", "amp_short_vectors/Concurrency::graphics::float_3::set_yz", "amp_short_vectors/Concurrency::graphics::float_3::operator--", "amp_short_vectors/Concurrency::graphics::float_3::set_xyz", "amp_short_vectors/Concurrency::graphics::float_3::operator++", "amp_short_vectors/Concurrency::graphics::float_3::z", "amp_short_vectors/Concurrency::graphics::float_3::xy", "amp_short_vectors/Concurrency::graphics::float_3::rgb", "amp_short_vectors/Concurrency::graphics::float_3::rg", "amp_short_vectors/Concurrency::graphics::float_3::yzx", "amp_short_vectors/Concurrency::graphics::float_3::set_yx", "amp_short_vectors/Concurrency::graphics::float_3::xzy", "amp_short_vectors/Concurrency::graphics::float_3::rb", "amp_short_vectors/Concurrency::graphics::float_3::get_z", "amp_short_vectors/Concurrency::graphics::float_3::br", "amp_short_vectors/Concurrency::graphics::float_3::bg", "amp_short_vectors/Concurrency::graphics::float_3::get_xyz", "amp_short_vectors/Concurrency::graphics::float_3::set_x", "amp_short_vectors/Concurrency::graphics::float_3::yxz", "amp_short_vectors/Concurrency::graphics::float_3::yz", "amp_short_vectors/Concurrency::graphics::float_3::gbr", "amp_short_vectors/Concurrency::graphics::float_3::operator*=", "amp_short_vectors/Concurrency::graphics::float_3::get_xy"] -helpviewer_keywords: ["amp_short_vectors/Concurrency::graphics::float_3"] -ms.assetid: 209df7a5-08d7-48b4-8ba5-77603642cdd8 ---- -# float_3 Class - -Represents a short vector of three floats. - -## Syntax - -```cpp -class float_3; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[float_3 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|float_3::get_x|| -|float_3::get_xy|| -|float_3::get_xyz|| -|float_3::get_xz|| -|float_3::get_xzy|| -|float_3::get_y|| -|float_3::get_yx|| -|float_3::get_yxz|| -|float_3::get_yz|| -|float_3::get_yzx|| -|float_3::get_z|| -|float_3::get_zx|| -|float_3::get_zxy|| -|float_3::get_zy|| -|float_3::get_zyx|| -|float_3::ref_b|| -|float_3::ref_g|| -|float_3::ref_r|| -|float_3::ref_x|| -|float_3::ref_y|| -|float_3::ref_z|| -|float_3::set_x|| -|float_3::set_xy|| -|float_3::set_xyz|| -|float_3::set_xz|| -|float_3::set_xzy|| -|float_3::set_y|| -|float_3::set_yx|| -|float_3::set_yxz|| -|float_3::set_yz|| -|float_3::set_yzx|| -|float_3::set_z|| -|float_3::set_zx|| -|float_3::set_zxy|| -|float_3::set_zy|| -|float_3::set_zyx|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|float_3::operator-|| -|float_3::operator--|| -|float_3::operator*=|| -|float_3::operator/=|| -|float_3::operator++|| -|float_3::operator+=|| -|float_3::operator=|| -|float_3::operator-=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#float_3__size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|float_3::b|| -|float_3::bg|| -|float_3::bgr|| -|float_3::br|| -|float_3::brg|| -|float_3::g|| -|float_3::gb|| -|float_3::gbr|| -|float_3::gr|| -|float_3::grb|| -|float_3::r|| -|float_3::rb|| -|float_3::rbg|| -|float_3::rg|| -|float_3::rgb|| -|float_3::x|| -|float_3::xy|| -|float_3::xyz|| -|float_3::xz|| -|float_3::xzy|| -|float_3::y|| -|float_3::yx|| -|float_3::yxz|| -|float_3::yz|| -|float_3::yzx|| -|float_3::z|| -|float_3::zx|| -|float_3::zxy|| -|float_3::zy|| -|float_3::zyx|| - -## Inheritance Hierarchy - -`float_3` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## float_3 - -Default constructor, initializes all elements with 0. - -```cpp -float_3() restrict(amp, - cpu); - -float_3( - float _V0, - float _V1, - float _V2) restrict(amp, - cpu); - -float_3( - float _V) restrict(amp, - cpu); - -float_3( - const float_3& _Other) restrict(amp, - cpu); - -explicit inline float_3( - const uint_3& _Other) restrict(amp, - cpu); - -explicit inline float_3( - const int_3& _Other) restrict(amp, - cpu); - -explicit inline float_3( - const unorm_3& _Other) restrict(amp, - cpu); - -explicit inline float_3( - const norm_3& _Other) restrict(amp, - cpu); - -explicit inline float_3( - const double_3& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V2*
-The value to initialize element 2. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 3; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/float-4-class.md b/docs/parallel/amp/reference/float-4-class.md deleted file mode 100644 index 386b6fa124a..00000000000 --- a/docs/parallel/amp/reference/float-4-class.md +++ /dev/null @@ -1,407 +0,0 @@ ---- -description: "Learn more about: float_4 Class" -title: "float_4 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::float_4::get_wyxz", "amp_short_vectors/Concurrency::graphics::float_4::zxw", "amp_short_vectors/Concurrency::graphics::float_4::bgra", "amp_short_vectors/Concurrency::graphics::float_4::get_xz", "amp_short_vectors/Concurrency::graphics::float_4::get_yxw", "amp_short_vectors/Concurrency::graphics::float_4::r", "amp_short_vectors/Concurrency::graphics::float_4::set_wzx", "amp_short_vectors/Concurrency::graphics::float_4::brga", "amp_short_vectors/Concurrency::graphics::float_4::get_xyw", "amp_short_vectors/Concurrency::graphics::float_4::gr", "amp_short_vectors/Concurrency::graphics::float_4::operator/=", "amp_short_vectors/Concurrency::graphics::float_4::agrb", "amp_short_vectors/Concurrency::graphics::float_4::set_wxz", "amp_short_vectors/Concurrency::graphics::float_4::get_wzy", "amp_short_vectors/Concurrency::graphics::float_4::rag", "amp_short_vectors/Concurrency::graphics::float_4::yzx", "amp_short_vectors/Concurrency::graphics::float_4::gbr", "amp_short_vectors/Concurrency::graphics::float_4::set_zxwy", "amp_short_vectors/Concurrency::graphics::float_4::wx", "amp_short_vectors/Concurrency::graphics::float_4::zwx", "amp_short_vectors/Concurrency::graphics::float_4::zwyx", "amp_short_vectors/Concurrency::graphics::float_4::wxy", "amp_short_vectors/Concurrency::graphics::float_4::set_wyx", "amp_short_vectors/Concurrency::graphics::float_4::set_zyx", "amp_short_vectors/Concurrency::graphics::float_4::set_yz", "amp_short_vectors/Concurrency::graphics::float_4::rbag", "amp_short_vectors/Concurrency::graphics::float_4::rb", "amp_short_vectors/Concurrency::graphics::float_4::get_zxyw", "amp_short_vectors/Concurrency::graphics::float_4::xz", "amp_short_vectors/Concurrency::graphics::float_4::get_zy", "amp_short_vectors/Concurrency::graphics::float_4::abrg", "amp_short_vectors/Concurrency::graphics::float_4::bg", "amp_short_vectors/Concurrency::graphics::float_4::xwy", "amp_short_vectors/Concurrency::graphics::float_4::get_xwz", "amp_short_vectors/Concurrency::graphics::float_4::ragb", "amp_short_vectors/Concurrency::graphics::float_4::wzx", "amp_short_vectors/Concurrency::graphics::float_4::rgba", "amp_short_vectors/Concurrency::graphics::float_4::set_zyw", "amp_short_vectors/Concurrency::graphics::float_4::get_zw", "amp_short_vectors/Concurrency::graphics::float_4::zywx", "amp_short_vectors/Concurrency::graphics::float_4::set_zwxy", "amp_short_vectors/Concurrency::graphics::float_4::set_wyzx", "amp_short_vectors/Concurrency::graphics::float_4::zyxw", "amp_short_vectors/Concurrency::graphics::float_4::yw", "amp_short_vectors/Concurrency::graphics::float_4::set_xw", "amp_short_vectors/Concurrency::graphics::float_4::gar", "amp_short_vectors/Concurrency::graphics::float_4::get_yzx", "amp_short_vectors/Concurrency::graphics::float_4::get_w", "amp_short_vectors/Concurrency::graphics::float_4::wzy", "amp_short_vectors/Concurrency::graphics::float_4::ywx", "amp_short_vectors/Concurrency::graphics::float_4::get_zx", "amp_short_vectors/Concurrency::graphics::float_4::operator=", "amp_short_vectors/Concurrency::graphics::float_4::set_wx", "amp_short_vectors/Concurrency::graphics::float_4::get_zyx", "amp_short_vectors/Concurrency::graphics::float_4::ra", "amp_short_vectors/Concurrency::graphics::float_4::zy", "amp_short_vectors/Concurrency::graphics::float_4::grab", "amp_short_vectors/Concurrency::graphics::float_4::get_xwy", "amp_short_vectors/Concurrency::graphics::float_4::get_yw", "amp_short_vectors/Concurrency::graphics::float_4::set_xyz", "amp_short_vectors/Concurrency::graphics::float_4::get_zywx", "amp_short_vectors/Concurrency::graphics::float_4::w", "amp_short_vectors/Concurrency::graphics::float_4::get_ywxz", "amp_short_vectors/Concurrency::graphics::float_4::xy", "amp_short_vectors/Concurrency::graphics::float_4::yzwx", "amp_short_vectors/Concurrency::graphics::float_4::rabg", "amp_short_vectors/Concurrency::graphics::float_4::get_ywx", "amp_short_vectors/Concurrency::graphics::float_4::get_zwyx", "amp_short_vectors/Concurrency::graphics::float_4::rbg", "amp_short_vectors/Concurrency::graphics::float_4::get_yxzw", "amp_short_vectors/Concurrency::graphics::float_4::a", "amp_short_vectors/Concurrency::graphics::float_4::ba", "amp_short_vectors/Concurrency::graphics::float_4::operator+=", "amp_short_vectors/Concurrency::graphics::float_4::brag", "amp_short_vectors/Concurrency::graphics::float_4::yxz", "amp_short_vectors/Concurrency::graphics::float_4::get_yzxw", "amp_short_vectors/Concurrency::graphics::float_4::set_xyw", "amp_short_vectors/Concurrency::graphics::float_4::set_yxwz", "amp_short_vectors/Concurrency::graphics::float_4::ab", "amp_short_vectors/Concurrency::graphics::float_4", "amp_short_vectors/Concurrency::graphics::float_4::set_wz", "amp_short_vectors/Concurrency::graphics::float_4::gabr", "amp_short_vectors/Concurrency::graphics::float_4::operator-", "amp_short_vectors/Concurrency::graphics::float_4::set_zwyx", "amp_short_vectors/Concurrency::graphics::float_4::set_zxy", "amp_short_vectors/Concurrency::graphics::float_4::set_x", "amp_short_vectors/Concurrency::graphics::float_4::get_wzxy", "amp_short_vectors/Concurrency::graphics::float_4::gbar", "amp_short_vectors/Concurrency::graphics::float_4::gb", "amp_short_vectors/Concurrency::graphics::float_4::zxwy", "amp_short_vectors/Concurrency::graphics::float_4::yxzw", "amp_short_vectors/Concurrency::graphics::float_4::get_wxz", "amp_short_vectors/Concurrency::graphics::float_4::zyx", "amp_short_vectors/Concurrency::graphics::float_4::xzyw", "amp_short_vectors/Concurrency::graphics::float_4::operator*=", "amp_short_vectors/Concurrency::graphics::float_4::yxwz", "amp_short_vectors/Concurrency::graphics::float_4::xywz", "amp_short_vectors/Concurrency::graphics::float_4::arb", "amp_short_vectors/Concurrency::graphics::float_4::get_yzw", "amp_short_vectors/Concurrency::graphics::float_4::wyxz", "amp_short_vectors/Concurrency::graphics::float_4::get_yzwx", "amp_short_vectors/Concurrency::graphics::float_4::wy", "amp_short_vectors/Concurrency::graphics::float_4::zwxy", "amp_short_vectors/Concurrency::graphics::float_4::set_wyz", "amp_short_vectors/Concurrency::graphics::float_4::set_wyxz", "amp_short_vectors/Concurrency::graphics::float_4::gab", "amp_short_vectors/Concurrency::graphics::float_4::get_xyzw", "amp_short_vectors/Concurrency::graphics::float_4::get_wyz", "amp_short_vectors/Concurrency::graphics::float_4::rbga", "amp_short_vectors/Concurrency::graphics::float_4::bagr", "amp_short_vectors/Concurrency::graphics::float_4::xyz", "amp_short_vectors/Concurrency::graphics::float_4::set_wzxy", "amp_short_vectors/Concurrency::graphics::float_4::agb", "amp_short_vectors/Concurrency::graphics::float_4::brg", "amp_short_vectors/Concurrency::graphics::float_4::zxyw", "amp_short_vectors/Concurrency::graphics::float_4::arg", "amp_short_vectors/Concurrency::graphics::float_4::g", "amp_short_vectors/Concurrency::graphics::float_4::get_zxy", "amp_short_vectors/Concurrency::graphics::float_4::set_yzxw", "amp_short_vectors/Concurrency::graphics::float_4::set_yzx", "amp_short_vectors/Concurrency::graphics::float_4::gba", "amp_short_vectors/Concurrency::graphics::float_4::ywzx", "amp_short_vectors/Concurrency::graphics::float_4::get_wx", "amp_short_vectors/Concurrency::graphics::float_4::set_z", "amp_short_vectors/Concurrency::graphics::float_4::set_xwyz", "amp_short_vectors/Concurrency::graphics::float_4::grba", "amp_short_vectors/Concurrency::graphics::float_4::yxw", "amp_short_vectors/Concurrency::graphics::float_4::set_zw", "amp_short_vectors/Concurrency::graphics::float_4::get_yx", "amp_short_vectors/Concurrency::graphics::float_4::get_zwxy", "amp_short_vectors/Concurrency::graphics::float_4::get_wz", "amp_short_vectors/Concurrency::graphics::float_4::garb", "amp_short_vectors/Concurrency::graphics::float_4::set_yxw", "amp_short_vectors/Concurrency::graphics::float_4::rba", "amp_short_vectors/Concurrency::graphics::float_4::xzwy", "amp_short_vectors/Concurrency::graphics::float_4::get_zxwy", "amp_short_vectors/Concurrency::graphics::float_4::zw", "amp_short_vectors/Concurrency::graphics::float_4::abgr", "amp_short_vectors/Concurrency::graphics::float_4::set_wxzy", "amp_short_vectors/Concurrency::graphics::float_4::wz", "amp_short_vectors/Concurrency::graphics::float_4::agbr", "amp_short_vectors/Concurrency::graphics::float_4::ar", "amp_short_vectors/Concurrency::graphics::float_4::bra", "amp_short_vectors/Concurrency::graphics::float_4::zxy", "amp_short_vectors/Concurrency::graphics::float_4::set_wy", "amp_short_vectors/Concurrency::graphics::float_4::argb", "amp_short_vectors/Concurrency::graphics::float_4::abr", "amp_short_vectors/Concurrency::graphics::float_4::get_wyzx", "amp_short_vectors/Concurrency::graphics::float_4::set_xywz", "amp_short_vectors/Concurrency::graphics::float_4::get_xwzy", "amp_short_vectors/Concurrency::graphics::float_4::b", "amp_short_vectors/Concurrency::graphics::float_4::ywz", "amp_short_vectors/Concurrency::graphics::float_4::wxz", "amp_short_vectors/Concurrency::graphics::float_4::rga", "amp_short_vectors/Concurrency::graphics::float_4::set_zx", "amp_short_vectors/Concurrency::graphics::float_4::ga", "amp_short_vectors/Concurrency::graphics::float_4::get_y", "amp_short_vectors/Concurrency::graphics::float_4::agr", "amp_short_vectors/Concurrency::graphics::float_4::wzxy", "amp_short_vectors/Concurrency::graphics::float_4::set_xzy", "amp_short_vectors/Concurrency::graphics::float_4::arbg", "amp_short_vectors/Concurrency::graphics::float_4::gbra", "amp_short_vectors/Concurrency::graphics::float_4::set_xy", "amp_short_vectors/Concurrency::graphics::float_4::yx", "amp_short_vectors/Concurrency::graphics::float_4::set_yxz", "amp_short_vectors/Concurrency::graphics::float_4::wxzy", "amp_short_vectors/Concurrency::graphics::float_4::bgr", "amp_short_vectors/Concurrency::graphics::float_4::get_wxyz", "amp_short_vectors/Concurrency::graphics::float_4::xyw", "amp_short_vectors/Concurrency::graphics::float_4::set_ywx", "amp_short_vectors/Concurrency::graphics::float_4::get_wzyx", "amp_short_vectors/Concurrency::graphics::float_4::wyx", "amp_short_vectors/Concurrency::graphics::float_4::get_xzyw", "amp_short_vectors/Concurrency::graphics::float_4::get_zwy", "amp_short_vectors/Concurrency::graphics::float_4::get_wzx", "amp_short_vectors/Concurrency::graphics::float_4::barg", "amp_short_vectors/Concurrency::graphics::float_4::get_ywzx", "amp_short_vectors/Concurrency::graphics::float_4::set_wxyz", "amp_short_vectors/Concurrency::graphics::float_4::get_wxy", "amp_short_vectors/Concurrency::graphics::float_4::set_zyxw", "amp_short_vectors/Concurrency::graphics::float_4::set_zywx", "amp_short_vectors/Concurrency::graphics::float_4::operator-=", "amp_short_vectors/Concurrency::graphics::float_4::set_y", "amp_short_vectors/Concurrency::graphics::float_4::wyzx", "amp_short_vectors/Concurrency::graphics::float_4::bgar", "amp_short_vectors/Concurrency::graphics::float_4::set_yx", "amp_short_vectors/Concurrency::graphics::float_4::set_xzyw", "amp_short_vectors/Concurrency::graphics::float_4::set_yxzw", "amp_short_vectors/Concurrency::graphics::float_4::xyzw", "amp_short_vectors/Concurrency::graphics::float_4::abg", "amp_short_vectors/Concurrency::graphics::float_4::x", "amp_short_vectors/Concurrency::graphics::float_4::gra", "amp_short_vectors/Concurrency::graphics::float_4::get_zyw", "amp_short_vectors/Concurrency::graphics::float_4::set_xz", "amp_short_vectors/Concurrency::graphics::float_4::get_xw", "amp_short_vectors/Concurrency::graphics::float_4::bag", "amp_short_vectors/Concurrency::graphics::float_4::xwz", "amp_short_vectors/Concurrency::graphics::float_4::get_xwyz", "amp_short_vectors/Concurrency::graphics::float_4::get_zxw", "amp_short_vectors/Concurrency::graphics::float_4::set_xwzy", "amp_short_vectors/Concurrency::graphics::float_4::get_wxzy", "amp_short_vectors/Concurrency::graphics::float_4::get_xzwy", "amp_short_vectors/Concurrency::graphics::float_4::get_xzw", "amp_short_vectors/Concurrency::graphics::float_4::get_xzy", "amp_short_vectors/Concurrency::graphics::float_4::set_yzw", "amp_short_vectors/Concurrency::graphics::float_4::zwy", "amp_short_vectors/Concurrency::graphics::float_4::operator--", "amp_short_vectors/Concurrency::graphics::float_4::set_xzw", "amp_short_vectors/Concurrency::graphics::float_4::get_wy", "amp_short_vectors/Concurrency::graphics::float_4::xzy", "amp_short_vectors/Concurrency::graphics::float_4::set_zy", "amp_short_vectors/Concurrency::graphics::float_4::set_xwz", "amp_short_vectors/Concurrency::graphics::float_4::set_zwx", "amp_short_vectors/Concurrency::graphics::float_4::bar", "amp_short_vectors/Concurrency::graphics::float_4::set_wzy", "amp_short_vectors/Concurrency::graphics::float_4::set_zxyw", "amp_short_vectors/Concurrency::graphics::float_4::set_wzyx", "amp_short_vectors/Concurrency::graphics::float_4::set_w", "amp_short_vectors/Concurrency::graphics::float_4::get_yxz", "amp_short_vectors/Concurrency::graphics::float_4::get_ywz", "amp_short_vectors/Concurrency::graphics::float_4::set_ywzx", "amp_short_vectors/Concurrency::graphics::float_4::get_zwx", "amp_short_vectors/Concurrency::graphics::float_4::set_zwy", "amp_short_vectors/Concurrency::graphics::float_4::set_yzwx", "amp_short_vectors/Concurrency::graphics::float_4::wyz", "amp_short_vectors/Concurrency::graphics::float_4::yzxw", "amp_short_vectors/Concurrency::graphics::float_4::yz", "amp_short_vectors/Concurrency::graphics::float_4::xw", "amp_short_vectors/Concurrency::graphics::float_4::bga", "amp_short_vectors/Concurrency::graphics::float_4::ywxz", "amp_short_vectors/Concurrency::graphics::float_4::set_wxy", "amp_short_vectors/Concurrency::graphics::float_4::get_wyx", "amp_short_vectors/Concurrency::graphics::float_4::yzw", "amp_short_vectors/Concurrency::graphics::float_4::grb", "amp_short_vectors/Concurrency::graphics::float_4::operator++", "amp_short_vectors/Concurrency::graphics::float_4::xwyz", "amp_short_vectors/Concurrency::graphics::float_4::br", "amp_short_vectors/Concurrency::graphics::float_4::set_zxw", "amp_short_vectors/Concurrency::graphics::float_4::rgab", "amp_short_vectors/Concurrency::graphics::float_4::get_xy", "amp_short_vectors/Concurrency::graphics::float_4::xzw", "amp_short_vectors/Concurrency::graphics::float_4::zyw", "amp_short_vectors/Concurrency::graphics::float_4::set_ywz", "amp_short_vectors/Concurrency::graphics::float_4::zx", "amp_short_vectors/Concurrency::graphics::float_4::wxyz", "amp_short_vectors/Concurrency::graphics::float_4::set_xzwy", "amp_short_vectors/Concurrency::graphics::float_4::rab", "amp_short_vectors/Concurrency::graphics::float_4::ag", "amp_short_vectors/Concurrency::graphics::float_4::set_xwy", "amp_short_vectors/Concurrency::graphics::float_4::get_xywz", "amp_short_vectors/Concurrency::graphics::float_4::get_xyz", "amp_short_vectors/Concurrency::graphics::float_4::y", "amp_short_vectors/Concurrency::graphics::float_4::rg", "amp_short_vectors/Concurrency::graphics::float_4::wzyx", "amp_short_vectors/Concurrency::graphics::float_4::z", "amp_short_vectors/Concurrency::graphics::float_4::set_ywxz", "amp_short_vectors/Concurrency::graphics::float_4::get_yxwz", "amp_short_vectors/Concurrency::graphics::float_4::rgb", "amp_short_vectors/Concurrency::graphics::float_4::get_zyxw", "amp_short_vectors/Concurrency::graphics::float_4::get_yz", "amp_short_vectors/Concurrency::graphics::float_4::set_yw", "amp_short_vectors/Concurrency::graphics::float_4::xwzy", "amp_short_vectors/Concurrency::graphics::float_4::get_x", "amp_short_vectors/Concurrency::graphics::float_4::get_z", "amp_short_vectors/Concurrency::graphics::float_4::set_xyzw"] -ms.assetid: 10f92170-e58c-4afc-8198-fc5778d56038 ---- -# float_4 Class - -Represents a short vector of four floats. - -## Syntax - -```cpp -class float_4; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[float_4 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|float_4::get_w|| -|float_4::get_wx|| -|float_4::get_wxy|| -|float_4::get_wxyz|| -|float_4::get_wxz|| -|float_4::get_wxzy|| -|float_4::get_wy|| -|float_4::get_wyx|| -|float_4::get_wyxz|| -|float_4::get_wyz|| -|float_4::get_wyzx|| -|float_4::get_wz|| -|float_4::get_wzx|| -|float_4::get_wzxy|| -|float_4::get_wzy|| -|float_4::get_wzyx|| -|float_4::get_x|| -|float_4::get_xw|| -|float_4::get_xwy|| -|float_4::get_xwyz|| -|float_4::get_xwz|| -|float_4::get_xwzy|| -|float_4::get_xy|| -|float_4::get_xyw|| -|float_4::get_xywz|| -|float_4::get_xyz|| -|float_4::get_xyzw|| -|float_4::get_xz|| -|float_4::get_xzw|| -|float_4::get_xzwy|| -|float_4::get_xzy|| -|float_4::get_xzyw|| -|float_4::get_y|| -|float_4::get_yw|| -|float_4::get_ywx|| -|float_4::get_ywxz|| -|float_4::get_ywz|| -|float_4::get_ywzx|| -|float_4::get_yx|| -|float_4::get_yxw|| -|float_4::get_yxwz|| -|float_4::get_yxz|| -|float_4::get_yxzw|| -|float_4::get_yz|| -|float_4::get_yzw|| -|float_4::get_yzwx|| -|float_4::get_yzx|| -|float_4::get_yzxw|| -|float_4::get_z|| -|float_4::get_zw|| -|float_4::get_zwx|| -|float_4::get_zwxy|| -|float_4::get_zwy|| -|float_4::get_zwyx|| -|float_4::get_zx|| -|float_4::get_zxw|| -|float_4::get_zxwy|| -|float_4::get_zxy|| -|float_4::get_zxyw|| -|float_4::get_zy|| -|float_4::get_zyw|| -|float_4::get_zywx|| -|float_4::get_zyx|| -|float_4::get_zyxw|| -|float_4::ref_a|| -|float_4::ref_b|| -|float_4::ref_g|| -|float_4::ref_r|| -|float_4::ref_w|| -|float_4::ref_x|| -|float_4::ref_y|| -|float_4::ref_z|| -|float_4::set_w|| -|float_4::set_wx|| -|float_4::set_wxy|| -|float_4::set_wxyz|| -|float_4::set_wxz|| -|float_4::set_wxzy|| -|float_4::set_wy|| -|float_4::set_wyx|| -|float_4::set_wyxz|| -|float_4::set_wyz|| -|float_4::set_wyzx|| -|float_4::set_wz|| -|float_4::set_wzx|| -|float_4::set_wzxy|| -|float_4::set_wzy|| -|float_4::set_wzyx|| -|float_4::set_x|| -|float_4::set_xw|| -|float_4::set_xwy|| -|float_4::set_xwyz|| -|float_4::set_xwz|| -|float_4::set_xwzy|| -|float_4::set_xy|| -|float_4::set_xyw|| -|float_4::set_xywz|| -|float_4::set_xyz|| -|float_4::set_xyzw|| -|float_4::set_xz|| -|float_4::set_xzw|| -|float_4::set_xzwy|| -|float_4::set_xzy|| -|float_4::set_xzyw|| -|float_4::set_y|| -|float_4::set_yw|| -|float_4::set_ywx|| -|float_4::set_ywxz|| -|float_4::set_ywz|| -|float_4::set_ywzx|| -|float_4::set_yx|| -|float_4::set_yxw|| -|float_4::set_yxwz|| -|float_4::set_yxz|| -|float_4::set_yxzw|| -|float_4::set_yz|| -|float_4::set_yzw|| -|float_4::set_yzwx|| -|float_4::set_yzx|| -|float_4::set_yzxw|| -|float_4::set_z|| -|float_4::set_zw|| -|float_4::set_zwx|| -|float_4::set_zwxy|| -|float_4::set_zwy|| -|float_4::set_zwyx|| -|float_4::set_zx|| -|float_4::set_zxw|| -|float_4::set_zxwy|| -|float_4::set_zxy|| -|float_4::set_zxyw|| -|float_4::set_zy|| -|float_4::set_zyw|| -|float_4::set_zywx|| -|float_4::set_zyx|| -|float_4::set_zyxw|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|float_4::operator-|| -|float_4::operator--|| -|float_4::operator*=|| -|float_4::operator/=|| -|float_4::operator++|| -|float_4::operator+=|| -|float_4::operator=|| -|float_4::operator-=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#float_4__size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|float_4::a|| -|float_4::ab|| -|float_4::abg|| -|float_4::abgr|| -|float_4::abr|| -|float_4::abrg|| -|float_4::ag|| -|float_4::agb|| -|float_4::agbr|| -|float_4::agr|| -|float_4::agrb|| -|float_4::ar|| -|float_4::arb|| -|float_4::arbg|| -|float_4::arg|| -|float_4::argb|| -|float_4::b|| -|float_4::ba|| -|float_4::bag|| -|float_4::bagr|| -|float_4::bar|| -|float_4::barg|| -|float_4::bg|| -|float_4::bga|| -|float_4::bgar|| -|float_4::bgr|| -|float_4::bgra|| -|float_4::br|| -|float_4::bra|| -|float_4::brag|| -|float_4::brg|| -|float_4::brga|| -|float_4::g|| -|float_4::ga|| -|float_4::gab|| -|float_4::gabr|| -|float_4::gar|| -|float_4::garb|| -|float_4::gb|| -|float_4::gba|| -|float_4::gbar|| -|float_4::gbr|| -|float_4::gbra|| -|float_4::gr|| -|float_4::gra|| -|float_4::grab|| -|float_4::grb|| -|float_4::grba|| -|float_4::r|| -|float_4::ra|| -|float_4::rab|| -|float_4::rabg|| -|float_4::rag|| -|float_4::ragb|| -|float_4::rb|| -|float_4::rba|| -|float_4::rbag|| -|float_4::rbg|| -|float_4::rbga|| -|float_4::rg|| -|float_4::rga|| -|float_4::rgab|| -|float_4::rgb|| -|float_4::rgba|| -|float_4::w|| -|float_4::wx|| -|float_4::wxy|| -|float_4::wxyz|| -|float_4::wxz|| -|float_4::wxzy|| -|float_4::wy|| -|float_4::wyx|| -|float_4::wyxz|| -|float_4::wyz|| -|float_4::wyzx|| -|float_4::wz|| -|float_4::wzx|| -|float_4::wzxy|| -|float_4::wzy|| -|float_4::wzyx|| -|float_4::x|| -|float_4::xw|| -|float_4::xwy|| -|float_4::xwyz|| -|float_4::xwz|| -|float_4::xwzy|| -|float_4::xy|| -|float_4::xyw|| -|float_4::xywz|| -|float_4::xyz|| -|float_4::xyzw|| -|float_4::xz|| -|float_4::xzw|| -|float_4::xzwy|| -|float_4::xzy|| -|float_4::xzyw|| -|float_4::y|| -|float_4::yw|| -|float_4::ywx|| -|float_4::ywxz|| -|float_4::ywz|| -|float_4::ywzx|| -|float_4::yx|| -|float_4::yxw|| -|float_4::yxwz|| -|float_4::yxz|| -|float_4::yxzw|| -|float_4::yz|| -|float_4::yzw|| -|float_4::yzwx|| -|float_4::yzx|| -|float_4::yzxw|| -|float_4::z|| -|float_4::zw|| -|float_4::zwx|| -|float_4::zwxy|| -|float_4::zwy|| -|float_4::zwyx|| -|float_4::zx|| -|float_4::zxw|| -|float_4::zxwy|| -|float_4::zxy|| -|float_4::zxyw|| -|float_4::zy|| -|float_4::zyw|| -|float_4::zywx|| -|float_4::zyx|| -|float_4::zyxw|| - -## Inheritance Hierarchy - -`float_4` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## float_4 - -Default constructor, initializes all elements with 0. - -```cpp -float_4() restrict(amp, - cpu); - -float_4( - float _V0, - float _V1, - float _V2, - float _V3) restrict(amp, - cpu); - -float_4( - float _V) restrict(amp, - cpu); - -float_4( - const float_4& _Other) restrict(amp, - cpu); - -explicit inline float_4( - const uint_4& _Other) restrict(amp, - cpu); - -explicit inline float_4( - const int_4& _Other) restrict(amp, - cpu); - -explicit inline float_4( - const unorm_4& _Other) restrict(amp, - cpu); - -explicit inline float_4( - const norm_4& _Other) restrict(amp, - cpu); - -explicit inline float_4( - const double_4& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V2*
-The value to initialize element 2. - -*_V3*
-The value to initialize element 3. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 4; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/index-class.md b/docs/parallel/amp/reference/index-class.md deleted file mode 100644 index 7e4fe7573d1..00000000000 --- a/docs/parallel/amp/reference/index-class.md +++ /dev/null @@ -1,311 +0,0 @@ ---- -description: "Learn more about: index Class" -title: "index Class" -ms.date: 06/21/2022 -f1_keywords: ["AMP/index", "AMP/Concurrency::index::index", "AMP/Concurrency::index::rank"] -helpviewer_keywords: ["index structure"] -ms.assetid: cbe79b08-0ba7-474c-9828-f1a71da39eb3 -ms.custom: devdivchpfy22 ---- - -# index Class - -Defines an *N*-dimensional index vector. - -## Syntax - -```cpp -template -class index; -``` - -### Parameters - -*_Rank*
-The rank, or number of dimensions. - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[index Constructor](#index_ctor)|Initializes a new instance of the `index` class.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[operator--](#operator--)|Decrements each element of the `index` object.| -|[operator%=](#operator_mod_eq)|Calculates the modulus (remainder) of each element in the `index` object when that element is divided by a number.| -|[operator*=](#operator_star_eq)|Multiplies each element of the `index` object by a number.| -|[operator/=](#operator_div_eq)|Divides each element of the `index` object by a number.| -|[index::operator\[\]](#operator_at)|Returns the element that's at the specified index.| -|[operator++](#operator_add_add)|Increments each element of the `index` object.| -|[operator+=](#operator_add_eq)|Adds the specified number to each element of the `index` object.| -|[operator=](#operator_eq)|Copies the contents of the specified `index` object into this one.| -|[operator-=](#operator_-_eq)|Subtracts the specified number from each element of the `index` object.| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[rank Constant](#rank)|Stores the rank of the `index` object.| - -## Inheritance Hierarchy - -`index` - -## Remarks - -The `index` structure represents a coordinate vector of *N* integers that specifies a unique position in an *N*-dimensional space. The values in the vector are ordered from most significant to least significant. You can retrieve the values of the components using [operator=](#operator_eq). - -## Requirements - -**Header:** amp.h - -**Namespace:** Concurrency - -## index Constructor - -Initializes a new instance of the index class. - -```cpp -index() restrict(amp,cpu); - -index( - const index<_Rank>& _Other -) restrict(amp,cpu); - -explicit index( - int _I -) restrict(amp,cpu); - -index( - int _I0, - int _I1 -) restrict(amp,cpu); - -index( - int _I0, - int _I1, - int _I2 -) restrict(amp,cpu); - -explicit index( - const int _Array[_Rank] -) restrict(amp,cpu); -``` - -### Parameters - -*_Array*
-A one-dimensional array with the rank values. - -*_I*
-The index location in a one-dimensional index. - -*_I0*
-The length of the most significant dimension. - -*_I1*
-The length of the next-to-most-significant dimension. - -*_I2*
-The length of the least significant dimension. - -*_Other*
-An index object on which the new index object is based. - -## operator-- - -Decrements each element of the index object. - -```cpp -index<_Rank>& operator--() restrict(amp,cpu); - -index operator--( - int -) restrict(amp,cpu); -``` - -### Return values - -For the prefix operator, the index object (`*this`). For the suffix operator, a new index object. - -## operator%= - -Calculates the modulus (remainder) of each element in the index object when that element is divided by the specified number. - -```cpp -index<_Rank>& operator%=( - int _Rhs -) restrict(cpu, amp); -``` - -### Parameters - -*_Rhs*
-The number to divide by to find the modulus. - -## Return Value - -The index object. - -## operator*= - -Multiplies each element in the index object by the specified number. - -```cpp -index<_Rank>& operator*=( - int _Rhs -) restrict(amp,cpu); -``` - -### Parameters - -*_Rhs*
-The number to multiply. - -## operator/= - -Divides each element in the index object by the specified number. - -```cpp -index<_Rank>& operator/=( - int _Rhs -) restrict(amp,cpu); -``` - -### Parameters - -*_Rhs*
-The number to divide by. - -## operator\[\] - -Returns the component of the index at the specified location. - -```cpp -int operator[] ( - unsigned _Index -) const restrict(amp,cpu); - -int& operator[] ( - unsigned _Index -) restrict(amp,cpu); -``` - -### Parameters - -*_Index*
-An integer from 0 through the rank minus 1. - -### Return Value - -The element that's at the specified index. - -### Remarks - -This following example displays the component values of the index. - -```cpp -// Prints 1 2 3. -concurrency::index<3> idx(1, 2, 3); -std::cout << idx[0] << "\n"; -std::cout << idx[1] << "\n"; -std::cout << idx[2] << "\n"; -``` - -## operator++ - -Increments each element of the index object. - -```cpp -index<_Rank>& operator++() restrict(amp,cpu); - -index<_Rank> operator++( - int -) restrict(amp,cpu); -``` - -### Return Value - -For the prefix operator, the index object (`*this`). For the suffix operator, a new index object. - -## operator+= - -Adds the specified number to each element of the index object. - -```cpp -index<_Rank>& operator+=( - const index<_Rank>& _Rhs -) restrict(amp,cpu); - -index<_Rank>& operator+=( - int _Rhs -) restrict(amp,cpu); -``` - -### Parameters - -*_Rhs*
-The number to add. - -### Return Value - -The index object. - -## operator= - -Copies the contents of the specified index object into this one. - -```cpp -index<_Rank>& operator=( - const index<_Rank>& _Other -) restrict(amp,cpu); -``` - -### Parameters - -*_Other*
-The index object to copy from. - -### Return Value - -A reference to this index object. - -## operator-= - -Subtracts the specified number from each element of the index object. - -```cpp -index<_Rank>& operator-=( - const index<_Rank>& _Rhs -) restrict(amp,cpu); - -index<_Rank>& operator-=( - int _Rhs -) restrict(amp,cpu); -``` - -### Parameters - -*_Rhs*
-The number to subtract. - -### Return Value - -The index object. - -## Rank - -Gets the rank of the index object. - -```cpp -static const int rank = _Rank; -``` - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/int-2-class.md b/docs/parallel/amp/reference/int-2-class.md deleted file mode 100644 index 6b5e99b2225..00000000000 --- a/docs/parallel/amp/reference/int-2-class.md +++ /dev/null @@ -1,162 +0,0 @@ ---- -description: "Learn more about: int_2 Class" -title: "int_2 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::int_2::y", "amp_short_vectors/Concurrency::graphics::int_2::set_x", "amp_short_vectors/Concurrency::graphics::int_2::set_y", "amp_short_vectors/Concurrency::graphics::int_2::get_yx", "amp_short_vectors/Concurrency::graphics::int_2::operator++", "amp_short_vectors/Concurrency::graphics::int_2::x", "amp_short_vectors/Concurrency::graphics::int_2::set_yx", "amp_short_vectors/Concurrency::graphics::int_2::operator/=", "amp_short_vectors/Concurrency::graphics::int_2::get_y", "amp_short_vectors/Concurrency::graphics::int_2::gr", "amp_short_vectors/Concurrency::graphics::int_2::operator*=", "amp_short_vectors/Concurrency::graphics::int_2::r", "amp_short_vectors/Concurrency::graphics::int_2::get_xy", "amp_short_vectors/Concurrency::graphics::int_2::operator=", "amp_short_vectors/Concurrency::graphics::int_2::g", "amp_short_vectors/Concurrency::graphics::int_2::rg", "amp_short_vectors/Concurrency::graphics::int_2::xy", "amp_short_vectors/Concurrency::graphics::int_2::operator-=", "amp_short_vectors/Concurrency::graphics::int_2::get_x", "amp_short_vectors/Concurrency::graphics::int_2::yx", "amp_short_vectors/Concurrency::graphics::int_2", "amp_short_vectors/Concurrency::graphics::int_2::operator-", "amp_short_vectors/Concurrency::graphics::int_2::set_xy", "amp_short_vectors/Concurrency::graphics::int_2::operator+=", "amp_short_vectors/Concurrency::graphics::int_2::operator--"] -ms.assetid: 258b02e9-f1ee-46c2-8edd-dc9f69184846 ---- -# int_2 Class - -Represents a short vector of two integers. - -## Syntax - -```cpp -class int_2; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[int_2 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|int_2::get_x|| -|int_2::get_xy|| -|int_2::get_y|| -|int_2::get_yx|| -|int_2::ref_g|| -|int_2::ref_r|| -|int_2::ref_x|| -|int_2::ref_y|| -|int_2::set_x|| -|int_2::set_xy|| -|int_2::set_y|| -|int_2::set_yx|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|int_2::operator-|| -|int_2::operator--|| -|int_2::operator%=|| -|int_2::operator&=|| -|int_2::operator*=|| -|int_2::operator/=|| -|int_2::operator^=|| -|int_2::operator\|=|| -|int_2::operator~|| -|int_2::operator++|| -|int_2::operator+=|| -|int_2::operator<\<=|| -|int_2::operator=|| -|int_2::operator-=|| -|int_2::operator>>=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#int_2__size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|int_2::g|| -|int_2::gr|| -|int_2::r|| -|int_2::rg|| -|int_2::x|| -|int_2::xy|| -|int_2::y|| -|int_2::yx|| - -## Inheritance Hierarchy - -`int_2` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## int_2 - -Default constructor, initializes all elements with 0. - -```cpp -int_2() restrict(amp, - cpu); - -int_2( - int _V0, - int _V1) restrict(amp, - cpu); - -int_2( - int _V) restrict(amp, - cpu); - -int_2( - const int_2& _Other) restrict(amp, - cpu); - -explicit inline int_2( - const uint_2& _Other) restrict(amp, - cpu); - -explicit inline int_2( - const float_2& _Other) restrict(amp, - cpu); - -explicit inline int_2( - const unorm_2& _Other) restrict(amp, - cpu); - -explicit inline int_2( - const norm_2& _Other) restrict(amp, - cpu); - -explicit inline int_2( - const double_2& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 2; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/int-3-class.md b/docs/parallel/amp/reference/int-3-class.md deleted file mode 100644 index 460a6983ff9..00000000000 --- a/docs/parallel/amp/reference/int-3-class.md +++ /dev/null @@ -1,207 +0,0 @@ ---- -description: "Learn more about: int_3 Class" -title: "int_3 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::int_3::get_x", "amp_short_vectors/Concurrency::graphics::int_3::operator-=", "amp_short_vectors/Concurrency::graphics::int_3::get_y", "amp_short_vectors/Concurrency::graphics::int_3::operator=", "amp_short_vectors/Concurrency::graphics::int_3::operator++", "amp_short_vectors/Concurrency::graphics::int_3::zyx", "amp_short_vectors/Concurrency::graphics::int_3::get_z", "amp_short_vectors/Concurrency::graphics::int_3::operator*=", "amp_short_vectors/Concurrency::graphics::int_3::grb", "amp_short_vectors/Concurrency::graphics::int_3::get_xz", "amp_short_vectors/Concurrency::graphics::int_3::br", "amp_short_vectors/Concurrency::graphics::int_3::operator--", "amp_short_vectors/Concurrency::graphics::int_3", "amp_short_vectors/Concurrency::graphics::int_3::set_yx", "amp_short_vectors/Concurrency::graphics::int_3::x", "amp_short_vectors/Concurrency::graphics::int_3::yxz", "amp_short_vectors/Concurrency::graphics::int_3::set_y", "amp_short_vectors/Concurrency::graphics::int_3::zy", "amp_short_vectors/Concurrency::graphics::int_3::z", "amp_short_vectors/Concurrency::graphics::int_3::get_zx", "amp_short_vectors/Concurrency::graphics::int_3::rb", "amp_short_vectors/Concurrency::graphics::int_3::yzx", "amp_short_vectors/Concurrency::graphics::int_3::gb", "amp_short_vectors/Concurrency::graphics::int_3::set_zxy", "amp_short_vectors/Concurrency::graphics::int_3::xy", "amp_short_vectors/Concurrency::graphics::int_3::set_zx", "amp_short_vectors/Concurrency::graphics::int_3::g", "amp_short_vectors/Concurrency::graphics::int_3::operator/=", "amp_short_vectors/Concurrency::graphics::int_3::get_zy", "amp_short_vectors/Concurrency::graphics::int_3::yx", "amp_short_vectors/Concurrency::graphics::int_3::xzy", "amp_short_vectors/Concurrency::graphics::int_3::set_x", "amp_short_vectors/Concurrency::graphics::int_3::set_xz", "amp_short_vectors/Concurrency::graphics::int_3::get_yzx", "amp_short_vectors/Concurrency::graphics::int_3::b", "amp_short_vectors/Concurrency::graphics::int_3::gbr", "amp_short_vectors/Concurrency::graphics::int_3::operator+=", "amp_short_vectors/Concurrency::graphics::int_3::gr", "amp_short_vectors/Concurrency::graphics::int_3::brg", "amp_short_vectors/Concurrency::graphics::int_3::bg", "amp_short_vectors/Concurrency::graphics::int_3::zx", "amp_short_vectors/Concurrency::graphics::int_3::get_xyz", "amp_short_vectors/Concurrency::graphics::int_3::set_zyx", "amp_short_vectors/Concurrency::graphics::int_3::set_yzx", "amp_short_vectors/Concurrency::graphics::int_3::y", "amp_short_vectors/Concurrency::graphics::int_3::set_z", "amp_short_vectors/Concurrency::graphics::int_3::r", "amp_short_vectors/Concurrency::graphics::int_3::set_xzy", "amp_short_vectors/Concurrency::graphics::int_3::rg", "amp_short_vectors/Concurrency::graphics::int_3::xyz", "amp_short_vectors/Concurrency::graphics::int_3::get_yz", "amp_short_vectors/Concurrency::graphics::int_3::operator-", "amp_short_vectors/Concurrency::graphics::int_3::set_xy", "amp_short_vectors/Concurrency::graphics::int_3::zxy", "amp_short_vectors/Concurrency::graphics::int_3::yz", "amp_short_vectors/Concurrency::graphics::int_3::set_zy", "amp_short_vectors/Concurrency::graphics::int_3::bgr", "amp_short_vectors/Concurrency::graphics::int_3::get_xzy", "amp_short_vectors/Concurrency::graphics::int_3::get_yx", "amp_short_vectors/Concurrency::graphics::int_3::rbg", "amp_short_vectors/Concurrency::graphics::int_3::get_zxy", "amp_short_vectors/Concurrency::graphics::int_3::set_yxz", "amp_short_vectors/Concurrency::graphics::int_3::rgb", "amp_short_vectors/Concurrency::graphics::int_3::get_xy", "amp_short_vectors/Concurrency::graphics::int_3::set_xyz", "amp_short_vectors/Concurrency::graphics::int_3::get_yxz", "amp_short_vectors/Concurrency::graphics::int_3::get_zyx", "amp_short_vectors/Concurrency::graphics::int_3::xz", "amp_short_vectors/Concurrency::graphics::int_3::set_yz"] -ms.assetid: d4af182f-30f1-455c-b16d-aa99cd314038 ---- -# int_3 Class - -Represents a short vector of three integers. - -## Syntax - -```cpp -class int_3; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[int_3 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|int_3::get_x|| -|int_3::get_xy|| -|int_3::get_xyz|| -|int_3::get_xz|| -|int_3::get_xzy|| -|int_3::get_y|| -|int_3::get_yx|| -|int_3::get_yxz|| -|int_3::get_yz|| -|int_3::get_yzx|| -|int_3::get_z|| -|int_3::get_zx|| -|int_3::get_zxy|| -|int_3::get_zy|| -|int_3::get_zyx|| -|int_3::ref_b|| -|int_3::ref_g|| -|int_3::ref_r|| -|int_3::ref_x|| -|int_3::ref_y|| -|int_3::ref_z|| -|int_3::set_x|| -|int_3::set_xy|| -|int_3::set_xyz|| -|int_3::set_xz|| -|int_3::set_xzy|| -|int_3::set_y|| -|int_3::set_yx|| -|int_3::set_yxz|| -|int_3::set_yz|| -|int_3::set_yzx|| -|int_3::set_z|| -|int_3::set_zx|| -|int_3::set_zxy|| -|int_3::set_zy|| -|int_3::set_zyx|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|int_3::operator-|| -|int_3::operator--|| -|int_3::operator%=|| -|int_3::operator&=|| -|int_3::operator*=|| -|int_3::operator/=|| -|int_3::operator^=|| -|int_3::operator\|=|| -|int_3::operator~|| -|int_3::operator++|| -|int_3::operator+=|| -|int_3::operator<\<=|| -|int_3::operator=|| -|int_3::operator-=|| -|int_3::operator>>=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|int_3::b|| -|int_3::bg|| -|int_3::bgr|| -|int_3::br|| -|int_3::brg|| -|int_3::g|| -|int_3::gb|| -|int_3::gbr|| -|int_3::gr|| -|int_3::grb|| -|int_3::r|| -|int_3::rb|| -|int_3::rbg|| -|int_3::rg|| -|int_3::rgb|| -|int_3::x|| -|int_3::xy|| -|int_3::xyz|| -|int_3::xz|| -|int_3::xzy|| -|int_3::y|| -|int_3::yx|| -|int_3::yxz|| -|int_3::yz|| -|int_3::yzx|| -|int_3::z|| -|int_3::zx|| -|int_3::zxy|| -|int_3::zy|| -|int_3::zyx|| - -## Inheritance Hierarchy - -`int_3` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## int_3 - -Default constructor, initializes all elements with 0. - -### Syntax - -```cpp -int_3() restrict(amp,cpu); -int_3( - int _V0, - int _V1, - int _V2 -) restrict(amp,cpu); -int_3( - int _V -) restrict(amp,cpu); -int_3( - const int_3& _Other -) restrict(amp,cpu); -explicit inline int_3( - const uint_3& _Other -) restrict(amp,cpu); -explicit inline int_3( - const float_3& _Other -) restrict(amp,cpu); -explicit inline int_3( - const unorm_3& _Other -) restrict(amp,cpu); -explicit inline int_3( - const norm_3& _Other -) restrict(amp,cpu); -explicit inline int_3( - const double_3& _Other -) restrict(amp,cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V2*
-The value to initialize element 2. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -### Syntax - -```cpp -static const int size = 3; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/int-4-class.md b/docs/parallel/amp/reference/int-4-class.md deleted file mode 100644 index ad9e159065f..00000000000 --- a/docs/parallel/amp/reference/int-4-class.md +++ /dev/null @@ -1,414 +0,0 @@ ---- -description: "Learn more about: int_4 Class" -title: "int_4 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::int_4::get_ywxz", "amp_short_vectors/Concurrency::graphics::int_4::xzyw", "amp_short_vectors/Concurrency::graphics::int_4::get_x", "amp_short_vectors/Concurrency::graphics::int_4::agr", "amp_short_vectors/Concurrency::graphics::int_4::set_ywxz", "amp_short_vectors/Concurrency::graphics::int_4::set_yzxw", "amp_short_vectors/Concurrency::graphics::int_4::get_zyw", "amp_short_vectors/Concurrency::graphics::int_4::set_zwyx", "amp_short_vectors/Concurrency::graphics::int_4::abgr", "amp_short_vectors/Concurrency::graphics::int_4::get_wzxy", "amp_short_vectors/Concurrency::graphics::int_4::get_wyxz", "amp_short_vectors/Concurrency::graphics::int_4::zyxw", "amp_short_vectors/Concurrency::graphics::int_4::rgb", "amp_short_vectors/Concurrency::graphics::int_4::wyxz", "amp_short_vectors/Concurrency::graphics::int_4::get_xwz", "amp_short_vectors/Concurrency::graphics::int_4::set_wyz", "amp_short_vectors/Concurrency::graphics::int_4::set_xz", "amp_short_vectors/Concurrency::graphics::int_4::gabr", "amp_short_vectors/Concurrency::graphics::int_4::gbr", "amp_short_vectors/Concurrency::graphics::int_4::set_wx", "amp_short_vectors/Concurrency::graphics::int_4::yxw", "amp_short_vectors/Concurrency::graphics::int_4::get_ywx", "amp_short_vectors/Concurrency::graphics::int_4::set_wxzy", "amp_short_vectors/Concurrency::graphics::int_4::get_yzx", "amp_short_vectors/Concurrency::graphics::int_4::yz", "amp_short_vectors/Concurrency::graphics::int_4::rg", "amp_short_vectors/Concurrency::graphics::int_4::rba", "amp_short_vectors/Concurrency::graphics::int_4::operator/=", "amp_short_vectors/Concurrency::graphics::int_4::get_wxy", "amp_short_vectors/Concurrency::graphics::int_4::set_yx", "amp_short_vectors/Concurrency::graphics::int_4::get_ywz", "amp_short_vectors/Concurrency::graphics::int_4::abg", "amp_short_vectors/Concurrency::graphics::int_4::get_y", "amp_short_vectors/Concurrency::graphics::int_4::ra", "amp_short_vectors/Concurrency::graphics::int_4::wxzy", "amp_short_vectors/Concurrency::graphics::int_4::rabg", "amp_short_vectors/Concurrency::graphics::int_4::ag", "amp_short_vectors/Concurrency::graphics::int_4::xwyz", "amp_short_vectors/Concurrency::graphics::int_4::zxy", "amp_short_vectors/Concurrency::graphics::int_4::x", "amp_short_vectors/Concurrency::graphics::int_4::bag", "amp_short_vectors/Concurrency::graphics::int_4::grb", "amp_short_vectors/Concurrency::graphics::int_4::xwz", "amp_short_vectors/Concurrency::graphics::int_4::get_wzx", "amp_short_vectors/Concurrency::graphics::int_4::operator*=", "amp_short_vectors/Concurrency::graphics::int_4::r", "amp_short_vectors/Concurrency::graphics::int_4::get_xzwy", "amp_short_vectors/Concurrency::graphics::int_4::bgra", "amp_short_vectors/Concurrency::graphics::int_4::xyzw", "amp_short_vectors/Concurrency::graphics::int_4::ab", "amp_short_vectors/Concurrency::graphics::int_4::set_xwyz", "amp_short_vectors/Concurrency::graphics::int_4::brg", "amp_short_vectors/Concurrency::graphics::int_4::garb", "amp_short_vectors/Concurrency::graphics::int_4::set_xzw", "amp_short_vectors/Concurrency::graphics::int_4::set_ywz", "amp_short_vectors/Concurrency::graphics::int_4::xywz", "amp_short_vectors/Concurrency::graphics::int_4::get_w", "amp_short_vectors/Concurrency::graphics::int_4::wzy", "amp_short_vectors/Concurrency::graphics::int_4::zwy", "amp_short_vectors/Concurrency::graphics::int_4::arb", "amp_short_vectors/Concurrency::graphics::int_4::agbr", "amp_short_vectors/Concurrency::graphics::int_4::get_yw", "amp_short_vectors/Concurrency::graphics::int_4::gra", "amp_short_vectors/Concurrency::graphics::int_4::get_yx", "amp_short_vectors/Concurrency::graphics::int_4::get_zyx", "amp_short_vectors/Concurrency::graphics::int_4::rag", "amp_short_vectors/Concurrency::graphics::int_4::b", "amp_short_vectors/Concurrency::graphics::int_4::rbag", "amp_short_vectors/Concurrency::graphics::int_4::set_zyw", "amp_short_vectors/Concurrency::graphics::int_4::grab", "amp_short_vectors/Concurrency::graphics::int_4::xzy", "amp_short_vectors/Concurrency::graphics::int_4::get_xwzy", "amp_short_vectors/Concurrency::graphics::int_4::wxy", "amp_short_vectors/Concurrency::graphics::int_4::abr", "amp_short_vectors/Concurrency::graphics::int_4::yw", "amp_short_vectors/Concurrency::graphics::int_4::set_zxyw", "amp_short_vectors/Concurrency::graphics::int_4::get_xyzw", "amp_short_vectors/Concurrency::graphics::int_4::set_wxz", "amp_short_vectors/Concurrency::graphics::int_4::get_yxwz", "amp_short_vectors/Concurrency::graphics::int_4::bar", "amp_short_vectors/Concurrency::graphics::int_4::zwxy", "amp_short_vectors/Concurrency::graphics::int_4::operator+=", "amp_short_vectors/Concurrency::graphics::int_4::get_zwy", "amp_short_vectors/Concurrency::graphics::int_4::get_xwyz", "amp_short_vectors/Concurrency::graphics::int_4::zxwy", "amp_short_vectors/Concurrency::graphics::int_4::barg", "amp_short_vectors/Concurrency::graphics::int_4::set_yxwz", "amp_short_vectors/Concurrency::graphics::int_4::operator=", "amp_short_vectors/Concurrency::graphics::int_4::get_xz", "amp_short_vectors/Concurrency::graphics::int_4::wz", "amp_short_vectors/Concurrency::graphics::int_4::w", "amp_short_vectors/Concurrency::graphics::int_4::set_zwy", "amp_short_vectors/Concurrency::graphics::int_4::yzx", "amp_short_vectors/Concurrency::graphics::int_4::set_xwzy", "amp_short_vectors/Concurrency::graphics::int_4::set_wzxy", "amp_short_vectors/Concurrency::graphics::int_4::get_yxz", "amp_short_vectors/Concurrency::graphics::int_4::set_ywx", "amp_short_vectors/Concurrency::graphics::int_4::get_zyxw", "amp_short_vectors/Concurrency::graphics::int_4::ragb", "amp_short_vectors/Concurrency::graphics::int_4::xzwy", "amp_short_vectors/Concurrency::graphics::int_4::get_wx", "amp_short_vectors/Concurrency::graphics::int_4::arbg", "amp_short_vectors/Concurrency::graphics::int_4::set_zxw", "amp_short_vectors/Concurrency::graphics::int_4::get_wyx", "amp_short_vectors/Concurrency::graphics::int_4::gab", "amp_short_vectors/Concurrency::graphics::int_4::agrb", "amp_short_vectors/Concurrency::graphics::int_4::bagr", "amp_short_vectors/Concurrency::graphics::int_4::get_wzyx", "amp_short_vectors/Concurrency::graphics::int_4::operator-=", "amp_short_vectors/Concurrency::graphics::int_4::get_wxz", "amp_short_vectors/Concurrency::graphics::int_4::get_xzw", "amp_short_vectors/Concurrency::graphics::int_4::gar", "amp_short_vectors/Concurrency::graphics::int_4::zw", "amp_short_vectors/Concurrency::graphics::int_4::yxzw", "amp_short_vectors/Concurrency::graphics::int_4::get_yxw", "amp_short_vectors/Concurrency::graphics::int_4::get_yxzw", "amp_short_vectors/Concurrency::graphics::int_4::operator++", "amp_short_vectors/Concurrency::graphics::int_4::xzw", "amp_short_vectors/Concurrency::graphics::int_4::arg", "amp_short_vectors/Concurrency::graphics::int_4::get_zwyx", "amp_short_vectors/Concurrency::graphics::int_4::g", "amp_short_vectors/Concurrency::graphics::int_4::set_zywx", "amp_short_vectors/Concurrency::graphics::int_4::z", "amp_short_vectors/Concurrency::graphics::int_4::get_z", "amp_short_vectors/Concurrency::graphics::int_4::get_zwxy", "amp_short_vectors/Concurrency::graphics::int_4::set_zyx", "amp_short_vectors/Concurrency::graphics::int_4", "amp_short_vectors/Concurrency::graphics::int_4::set_wy", "amp_short_vectors/Concurrency::graphics::int_4::bgr", "amp_short_vectors/Concurrency::graphics::int_4::xwy", "amp_short_vectors/Concurrency::graphics::int_4::xz", "amp_short_vectors/Concurrency::graphics::int_4::get_zwx", "amp_short_vectors/Concurrency::graphics::int_4::set_z", "amp_short_vectors/Concurrency::graphics::int_4::ywz", "amp_short_vectors/Concurrency::graphics::int_4::set_yz", "amp_short_vectors/Concurrency::graphics::int_4::wyx", "amp_short_vectors/Concurrency::graphics::int_4::get_yzwx", "amp_short_vectors/Concurrency::graphics::int_4::grba", "amp_short_vectors/Concurrency::graphics::int_4::bra", "amp_short_vectors/Concurrency::graphics::int_4::set_zxy", "amp_short_vectors/Concurrency::graphics::int_4::set_xzyw", "amp_short_vectors/Concurrency::graphics::int_4::get_zx", "amp_short_vectors/Concurrency::graphics::int_4::xyz", "amp_short_vectors/Concurrency::graphics::int_4::operator--", "amp_short_vectors/Concurrency::graphics::int_4::y", "amp_short_vectors/Concurrency::graphics::int_4::yzwx", "amp_short_vectors/Concurrency::graphics::int_4::agb", "amp_short_vectors/Concurrency::graphics::int_4::set_wyxz", "amp_short_vectors/Concurrency::graphics::int_4::set_xyzw", "amp_short_vectors/Concurrency::graphics::int_4::wzyx", "amp_short_vectors/Concurrency::graphics::int_4::rgab", "amp_short_vectors/Concurrency::graphics::int_4::set_wzy", "amp_short_vectors/Concurrency::graphics::int_4::set_wxyz", "amp_short_vectors/Concurrency::graphics::int_4::set_wyzx", "amp_short_vectors/Concurrency::graphics::int_4::wyzx", "amp_short_vectors/Concurrency::graphics::int_4::set_ywzx", "amp_short_vectors/Concurrency::graphics::int_4::zyw", "amp_short_vectors/Concurrency::graphics::int_4::get_xyw", "amp_short_vectors/Concurrency::graphics::int_4::ywxz", "amp_short_vectors/Concurrency::graphics::int_4::brag", "amp_short_vectors/Concurrency::graphics::int_4::get_yzw", "amp_short_vectors/Concurrency::graphics::int_4::get_xzy", "amp_short_vectors/Concurrency::graphics::int_4::get_xw", "amp_short_vectors/Concurrency::graphics::int_4::xw", "amp_short_vectors/Concurrency::graphics::int_4::gbra", "amp_short_vectors/Concurrency::graphics::int_4::set_wxy", "amp_short_vectors/Concurrency::graphics::int_4::get_xyz", "amp_short_vectors/Concurrency::graphics::int_4::get_zxyw", "amp_short_vectors/Concurrency::graphics::int_4::zwx", "amp_short_vectors/Concurrency::graphics::int_4::get_xzyw", "amp_short_vectors/Concurrency::graphics::int_4::set_xzwy", "amp_short_vectors/Concurrency::graphics::int_4::set_yxw", "amp_short_vectors/Concurrency::graphics::int_4::get_xy", "amp_short_vectors/Concurrency::graphics::int_4::get_wz", "amp_short_vectors/Concurrency::graphics::int_4::set_yw", "amp_short_vectors/Concurrency::graphics::int_4::rbga", "amp_short_vectors/Concurrency::graphics::int_4::ywzx", "amp_short_vectors/Concurrency::graphics::int_4::get_wxyz", "amp_short_vectors/Concurrency::graphics::int_4::ba", "amp_short_vectors/Concurrency::graphics::int_4::gba", "amp_short_vectors/Concurrency::graphics::int_4::set_zw", "amp_short_vectors/Concurrency::graphics::int_4::set_x", "amp_short_vectors/Concurrency::graphics::int_4::set_xwy", "amp_short_vectors/Concurrency::graphics::int_4::get_zxy", "amp_short_vectors/Concurrency::graphics::int_4::set_xwz", "amp_short_vectors/Concurrency::graphics::int_4::wyz", "amp_short_vectors/Concurrency::graphics::int_4::set_y", "amp_short_vectors/Concurrency::graphics::int_4::get_wyzx", "amp_short_vectors/Concurrency::graphics::int_4::set_zyxw", "amp_short_vectors/Concurrency::graphics::int_4::rgba", "amp_short_vectors/Concurrency::graphics::int_4::gr", "amp_short_vectors/Concurrency::graphics::int_4::set_yzx", "amp_short_vectors/Concurrency::graphics::int_4::set_xyz", "amp_short_vectors/Concurrency::graphics::int_4::get_xwy", "amp_short_vectors/Concurrency::graphics::int_4::get_wxzy", "amp_short_vectors/Concurrency::graphics::int_4::set_xzy", "amp_short_vectors/Concurrency::graphics::int_4::set_xy", "amp_short_vectors/Concurrency::graphics::int_4::rbg", "amp_short_vectors/Concurrency::graphics::int_4::br", "amp_short_vectors/Concurrency::graphics::int_4::get_yzxw", "amp_short_vectors/Concurrency::graphics::int_4::rab", "amp_short_vectors/Concurrency::graphics::int_4::set_xw", "amp_short_vectors/Concurrency::graphics::int_4::ga", "amp_short_vectors/Concurrency::graphics::int_4::wxyz", "amp_short_vectors/Concurrency::graphics::int_4::set_wzyx", "amp_short_vectors/Concurrency::graphics::int_4::zywx", "amp_short_vectors/Concurrency::graphics::int_4::xyw", "amp_short_vectors/Concurrency::graphics::int_4::bgar", "amp_short_vectors/Concurrency::graphics::int_4::xy", "amp_short_vectors/Concurrency::graphics::int_4::zxw", "amp_short_vectors/Concurrency::graphics::int_4::get_xywz", "amp_short_vectors/Concurrency::graphics::int_4::wy", "amp_short_vectors/Concurrency::graphics::int_4::zyx", "amp_short_vectors/Concurrency::graphics::int_4::get_zw", "amp_short_vectors/Concurrency::graphics::int_4::bga", "amp_short_vectors/Concurrency::graphics::int_4::set_zx", "amp_short_vectors/Concurrency::graphics::int_4::get_zywx", "amp_short_vectors/Concurrency::graphics::int_4::yzw", "amp_short_vectors/Concurrency::graphics::int_4::set_yzw", "amp_short_vectors/Concurrency::graphics::int_4::rb", "amp_short_vectors/Concurrency::graphics::int_4::set_w", "amp_short_vectors/Concurrency::graphics::int_4::get_wy", "amp_short_vectors/Concurrency::graphics::int_4::yzxw", "amp_short_vectors/Concurrency::graphics::int_4::wzx", "amp_short_vectors/Concurrency::graphics::int_4::zxyw", "amp_short_vectors/Concurrency::graphics::int_4::set_zwxy", "amp_short_vectors/Concurrency::graphics::int_4::get_wzy", "amp_short_vectors/Concurrency::graphics::int_4::zwyx", "amp_short_vectors/Concurrency::graphics::int_4::set_xywz", "amp_short_vectors/Concurrency::graphics::int_4::set_zxwy", "amp_short_vectors/Concurrency::graphics::int_4::set_zy", "amp_short_vectors/Concurrency::graphics::int_4::yx", "amp_short_vectors/Concurrency::graphics::int_4::set_yxzw", "amp_short_vectors/Concurrency::graphics::int_4::ar", "amp_short_vectors/Concurrency::graphics::int_4::yxwz", "amp_short_vectors/Concurrency::graphics::int_4::get_zxwy", "amp_short_vectors/Concurrency::graphics::int_4::rga", "amp_short_vectors/Concurrency::graphics::int_4::zy", "amp_short_vectors/Concurrency::graphics::int_4::operator-", "amp_short_vectors/Concurrency::graphics::int_4::xwzy", "amp_short_vectors/Concurrency::graphics::int_4::wxz", "amp_short_vectors/Concurrency::graphics::int_4::set_wzx", "amp_short_vectors/Concurrency::graphics::int_4::gb", "amp_short_vectors/Concurrency::graphics::int_4::get_yz", "amp_short_vectors/Concurrency::graphics::int_4::set_yzwx", "amp_short_vectors/Concurrency::graphics::int_4::get_wyz", "amp_short_vectors/Concurrency::graphics::int_4::set_wyx", "amp_short_vectors/Concurrency::graphics::int_4::get_zy", "amp_short_vectors/Concurrency::graphics::int_4::zx", "amp_short_vectors/Concurrency::graphics::int_4::set_xyw", "amp_short_vectors/Concurrency::graphics::int_4::wx", "amp_short_vectors/Concurrency::graphics::int_4::get_zxw", "amp_short_vectors/Concurrency::graphics::int_4::brga", "amp_short_vectors/Concurrency::graphics::int_4::set_zwx", "amp_short_vectors/Concurrency::graphics::int_4::a", "amp_short_vectors/Concurrency::graphics::int_4::ywx", "amp_short_vectors/Concurrency::graphics::int_4::wzxy", "amp_short_vectors/Concurrency::graphics::int_4::argb", "amp_short_vectors/Concurrency::graphics::int_4::set_wz", "amp_short_vectors/Concurrency::graphics::int_4::gbar", "amp_short_vectors/Concurrency::graphics::int_4::set_yxz", "amp_short_vectors/Concurrency::graphics::int_4::get_ywzx", "amp_short_vectors/Concurrency::graphics::int_4::abrg", "amp_short_vectors/Concurrency::graphics::int_4::bg", "amp_short_vectors/Concurrency::graphics::int_4::yxz"] -ms.assetid: 01768c28-23a8-4965-8267-96834864f4eb ---- -# int_4 Class - -Represents a short vector of four integers. - -## Syntax - -```cpp -class int_4; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[int_4 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|int_4::get_w|| -|int_4::get_wx|| -|int_4::get_wxy|| -|int_4::get_wxyz|| -|int_4::get_wxz|| -|int_4::get_wxzy|| -|int_4::get_wy|| -|int_4::get_wyx|| -|int_4::get_wyxz|| -|int_4::get_wyz|| -|int_4::get_wyzx|| -|int_4::get_wz|| -|int_4::get_wzx|| -|int_4::get_wzxy|| -|int_4::get_wzy|| -|int_4::get_wzyx|| -|int_4::get_x|| -|int_4::get_xw|| -|int_4::get_xwy|| -|int_4::get_xwyz|| -|int_4::get_xwz|| -|int_4::get_xwzy|| -|int_4::get_xy|| -|int_4::get_xyw|| -|int_4::get_xywz|| -|int_4::get_xyz|| -|int_4::get_xyzw|| -|int_4::get_xz|| -|int_4::get_xzw|| -|int_4::get_xzwy|| -|int_4::get_xzy|| -|int_4::get_xzyw|| -|int_4::get_y|| -|int_4::get_yw|| -|int_4::get_ywx|| -|int_4::get_ywxz|| -|int_4::get_ywz|| -|int_4::get_ywzx|| -|int_4::get_yx|| -|int_4::get_yxw|| -|int_4::get_yxwz|| -|int_4::get_yxz|| -|int_4::get_yxzw|| -|int_4::get_yz|| -|int_4::get_yzw|| -|int_4::get_yzwx|| -|int_4::get_yzx|| -|int_4::get_yzxw|| -|int_4::get_z|| -|int_4::get_zw|| -|int_4::get_zwx|| -|int_4::get_zwxy|| -|int_4::get_zwy|| -|int_4::get_zwyx|| -|int_4::get_zx|| -|int_4::get_zxw|| -|int_4::get_zxwy|| -|int_4::get_zxy|| -|int_4::get_zxyw|| -|int_4::get_zy|| -|int_4::get_zyw|| -|int_4::get_zywx|| -|int_4::get_zyx|| -|int_4::get_zyxw|| -|int_4::ref_a|| -|int_4::ref_b|| -|int_4::ref_g|| -|int_4::ref_r|| -|int_4::ref_w|| -|int_4::ref_x|| -|int_4::ref_y|| -|int_4::ref_z|| -|int_4::set_w|| -|int_4::set_wx|| -|int_4::set_wxy|| -|int_4::set_wxyz|| -|int_4::set_wxz|| -|int_4::set_wxzy|| -|int_4::set_wy|| -|int_4::set_wyx|| -|int_4::set_wyxz|| -|int_4::set_wyz|| -|int_4::set_wyzx|| -|int_4::set_wz|| -|int_4::set_wzx|| -|int_4::set_wzxy|| -|int_4::set_wzy|| -|int_4::set_wzyx|| -|int_4::set_x|| -|int_4::set_xw|| -|int_4::set_xwy|| -|int_4::set_xwyz|| -|int_4::set_xwz|| -|int_4::set_xwzy|| -|int_4::set_xy|| -|int_4::set_xyw|| -|int_4::set_xywz|| -|int_4::set_xyz|| -|int_4::set_xyzw|| -|int_4::set_xz|| -|int_4::set_xzw|| -|int_4::set_xzwy|| -|int_4::set_xzy|| -|int_4::set_xzyw|| -|int_4::set_y|| -|int_4::set_yw|| -|int_4::set_ywx|| -|int_4::set_ywxz|| -|int_4::set_ywz|| -|int_4::set_ywzx|| -|int_4::set_yx|| -|int_4::set_yxw|| -|int_4::set_yxwz|| -|int_4::set_yxz|| -|int_4::set_yxzw|| -|int_4::set_yz|| -|int_4::set_yzw|| -|int_4::set_yzwx|| -|int_4::set_yzx|| -|int_4::set_yzxw|| -|int_4::set_z|| -|int_4::set_zw|| -|int_4::set_zwx|| -|int_4::set_zwxy|| -|int_4::set_zwy|| -|int_4::set_zwyx|| -|int_4::set_zx|| -|int_4::set_zxw|| -|int_4::set_zxwy|| -|int_4::set_zxy|| -|int_4::set_zxyw|| -|int_4::set_zy|| -|int_4::set_zyw|| -|int_4::set_zywx|| -|int_4::set_zyx|| -|int_4::set_zyxw|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|int_4::operator-|| -|int_4::operator--|| -|int_4::operator%=|| -|int_4::operator&=|| -|int_4::operator*=|| -|int_4::operator/=|| -|int_4::operator^=|| -|int_4::operator\|=|| -|int_4::operator~|| -|int_4::operator++|| -|int_4::operator+=|| -|int_4::operator<\<=|| -|int_4::operator=|| -|int_4::operator-=|| -|int_4::operator>>=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#int_4__size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|int_4::a|| -|int_4::ab|| -|int_4::abg|| -|int_4::abgr|| -|int_4::abr|| -|int_4::abrg|| -|int_4::ag|| -|int_4::agb|| -|int_4::agbr|| -|int_4::agr|| -|int_4::agrb|| -|int_4::ar|| -|int_4::arb|| -|int_4::arbg|| -|int_4::arg|| -|int_4::argb|| -|int_4::b|| -|int_4::ba|| -|int_4::bag|| -|int_4::bagr|| -|int_4::bar|| -|int_4::barg|| -|int_4::bg|| -|int_4::bga|| -|int_4::bgar|| -|int_4::bgr|| -|int_4::bgra|| -|int_4::br|| -|int_4::bra|| -|int_4::brag|| -|int_4::brg|| -|int_4::brga|| -|int_4::g|| -|int_4::ga|| -|int_4::gab|| -|int_4::gabr|| -|int_4::gar|| -|int_4::garb|| -|int_4::gb|| -|int_4::gba|| -|int_4::gbar|| -|int_4::gbr|| -|int_4::gbra|| -|int_4::gr|| -|int_4::gra|| -|int_4::grab|| -|int_4::grb|| -|int_4::grba|| -|int_4::r|| -|int_4::ra|| -|int_4::rab|| -|int_4::rabg|| -|int_4::rag|| -|int_4::ragb|| -|int_4::rb|| -|int_4::rba|| -|int_4::rbag|| -|int_4::rbg|| -|int_4::rbga|| -|int_4::rg|| -|int_4::rga|| -|int_4::rgab|| -|int_4::rgb|| -|int_4::rgba|| -|int_4::w|| -|int_4::wx|| -|int_4::wxy|| -|int_4::wxyz|| -|int_4::wxz|| -|int_4::wxzy|| -|int_4::wy|| -|int_4::wyx|| -|int_4::wyxz|| -|int_4::wyz|| -|int_4::wyzx|| -|int_4::wz|| -|int_4::wzx|| -|int_4::wzxy|| -|int_4::wzy|| -|int_4::wzyx|| -|int_4::x|| -|int_4::xw|| -|int_4::xwy|| -|int_4::xwyz|| -|int_4::xwz|| -|int_4::xwzy|| -|int_4::xy|| -|int_4::xyw|| -|int_4::xywz|| -|int_4::xyz|| -|int_4::xyzw|| -|int_4::xz|| -|int_4::xzw|| -|int_4::xzwy|| -|int_4::xzy|| -|int_4::xzyw|| -|int_4::y|| -|int_4::yw|| -|int_4::ywx|| -|int_4::ywxz|| -|int_4::ywz|| -|int_4::ywzx|| -|int_4::yx|| -|int_4::yxw|| -|int_4::yxwz|| -|int_4::yxz|| -|int_4::yxzw|| -|int_4::yz|| -|int_4::yzw|| -|int_4::yzwx|| -|int_4::yzx|| -|int_4::yzxw|| -|int_4::z|| -|int_4::zw|| -|int_4::zwx|| -|int_4::zwxy|| -|int_4::zwy|| -|int_4::zwyx|| -|int_4::zx|| -|int_4::zxw|| -|int_4::zxwy|| -|int_4::zxy|| -|int_4::zxyw|| -|int_4::zy|| -|int_4::zyw|| -|int_4::zywx|| -|int_4::zyx|| -|int_4::zyxw|| - -## Inheritance Hierarchy - -`int_4` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## int_4 - -Default constructor, initializes all elements with 0. - -```cpp -int_4() restrict(amp, - cpu); - -int_4( - int _V0, - int _V1, - int _V2, - int _V3) restrict(amp, - cpu); - -int_4( - int _V) restrict(amp, - cpu); - -int_4( - const int_4& _Other) restrict(amp, - cpu); - -explicit inline int_4( - const uint_4& _Other) restrict(amp, - cpu); - -explicit inline int_4( - const float_4& _Other) restrict(amp, - cpu); - -explicit inline int_4( - const unorm_4& _Other) restrict(amp, - cpu); - -explicit inline int_4( - const norm_4& _Other) restrict(amp, - cpu); - -explicit inline int_4( - const double_4& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V2*
-The value to initialize element 2. - -*_V3*
-The value to initialize element 3. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 4; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/invalid-compute-domain-class.md b/docs/parallel/amp/reference/invalid-compute-domain-class.md deleted file mode 100644 index 333ee60fc80..00000000000 --- a/docs/parallel/amp/reference/invalid-compute-domain-class.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: "Learn more about: invalid_compute_domain Class" -title: "invalid_compute_domain Class" -ms.date: "11/04/2016" -f1_keywords: ["invalid_compute_domain", "AMPRT/invalid_compute_domain", "AMPRT/Concurrency::invalid_compute_domain::invalid_compute_domain"] -helpviewer_keywords: ["invalid_compute_domain class"] -ms.assetid: ac7a7166-8bdb-4db1-8caf-ea129ab5117e ---- -# invalid_compute_domain Class - -The exception that's thrown when the runtime can't start a kernel by using the compute domain specified at the [parallel_for_each](concurrency-namespace-functions-amp.md#parallel_for_each) call site. - -## Syntax - -```cpp -class invalid_compute_domain : public runtime_exception; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[invalid_compute_domain Constructor](#ctor)|Initializes a new instance of the `invalid_compute_domain` class.| - -## Inheritance Hierarchy - -`exception` - -`runtime_exception` - -`invalid_compute_domain` - -## Requirements - -**Header:** amprt.h - -**Namespace:** Concurrency - -## invalid_compute_domain - -Initializes a new instance of the class. - -### Syntax - -```cpp -explicit invalid_compute_domain( - const char * _Message ) throw(); - -invalid_compute_domain() throw(); -``` - -### Parameters - -*_Message*
-A description of the error. - -### Return Value - -An instance of the `invalid_compute_domain` class - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/norm-2-class.md b/docs/parallel/amp/reference/norm-2-class.md deleted file mode 100644 index 4a244b33204..00000000000 --- a/docs/parallel/amp/reference/norm-2-class.md +++ /dev/null @@ -1,169 +0,0 @@ ---- -description: "Learn more about: norm_2 Class" -title: "norm_2 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::norm_2::set_x", "amp_short_vectors/Concurrency::graphics::norm_2::set_xy", "amp_short_vectors/Concurrency::graphics::norm_2::g", "amp_short_vectors/Concurrency::graphics::norm_2::get_yx", "amp_short_vectors/Concurrency::graphics::norm_2::set_yx", "amp_short_vectors/Concurrency::graphics::norm_2::operator-=", "amp_short_vectors/Concurrency::graphics::norm_2::operator/=", "amp_short_vectors/Concurrency::graphics::norm_2::operator*=", "amp_short_vectors/Concurrency::graphics::norm_2::yx", "amp_short_vectors/Concurrency::graphics::norm_2::y", "amp_short_vectors/Concurrency::graphics::norm_2::xy", "amp_short_vectors/Concurrency::graphics::norm_2::operator++", "amp_short_vectors/Concurrency::graphics::norm_2::operator-", "amp_short_vectors/Concurrency::graphics::norm_2::rg", "amp_short_vectors/Concurrency::graphics::norm_2::operator=", "amp_short_vectors/Concurrency::graphics::norm_2::get_y", "amp_short_vectors/Concurrency::graphics::norm_2::r", "amp_short_vectors/Concurrency::graphics::norm_2::get_x", "amp_short_vectors/Concurrency::graphics::norm_2::get_xy", "amp_short_vectors/Concurrency::graphics::norm_2::gr", "amp_short_vectors/Concurrency::graphics::norm_2::set_y", "amp_short_vectors/Concurrency::graphics::norm_2::x", "amp_short_vectors/Concurrency::graphics::norm_2::operator+=", "amp_short_vectors/Concurrency::graphics::norm_2", "amp_short_vectors/Concurrency::graphics::norm_2::operator--"] -ms.assetid: 80703f9b-61f4-414a-93fd-bc774f7d3393 ---- -# norm_2 Class - -Represents a short vector of two normal numbers. - -## Syntax - -```cpp -class norm_2; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[norm_2 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|norm_2::get_x|| -|norm_2::get_xy|| -|norm_2::get_y|| -|norm_2::get_yx|| -|norm_2::ref_g|| -|norm_2::ref_r|| -|norm_2::ref_x|| -|norm_2::ref_y|| -|norm_2::set_x|| -|norm_2::set_xy|| -|norm_2::set_y|| -|norm_2::set_yx|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|norm_2::operator-|| -|norm_2::operator--|| -|norm_2::operator*=|| -|norm_2::operator/=|| -|norm_2::operator++|| -|norm_2::operator+=|| -|norm_2::operator=|| -|norm_2::operator-=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#norm_2__size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|norm_2::g|| -|norm_2::gr|| -|norm_2::r|| -|norm_2::rg|| -|norm_2::x|| -|norm_2::xy|| -|norm_2::y|| -|norm_2::yx|| - -## Inheritance Hierarchy - -`norm_2` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## norm_2 - -Default constructor, initializes all elements with 0. - -```cpp -norm_2() restrict(amp, - cpu); - -norm_2( - norm _V0, - norm _V1) restrict(amp, - cpu); - -norm_2( - float _V0, - float _V1) restrict(amp, - cpu); - -norm_2( - unorm _V0, - unorm _V1) restrict(amp, - cpu); - -norm_2( - norm _V) restrict(amp, - cpu); - -explicit norm_2( - float _V) restrict(amp, - cpu); - -norm_2( - const norm_2& _Other) restrict(amp, - cpu); - -explicit inline norm_2( - const uint_2& _Other) restrict(amp, - cpu); - -explicit inline norm_2( - const int_2& _Other) restrict(amp, - cpu); - -explicit inline norm_2( - const float_2& _Other) restrict(amp, - cpu); - -explicit inline norm_2( - const unorm_2& _Other) restrict(amp, - cpu); - -explicit inline norm_2( - const double_2& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 2; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/norm-3-class.md b/docs/parallel/amp/reference/norm-3-class.md deleted file mode 100644 index a0e3841d4dd..00000000000 --- a/docs/parallel/amp/reference/norm-3-class.md +++ /dev/null @@ -1,212 +0,0 @@ ---- -title: "norm_3 Class" -description: "Learn more about: norm_3 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::norm_3::get_z", "amp_short_vectors/Concurrency::graphics::norm_3::operator=", "amp_short_vectors/Concurrency::graphics::norm_3::r", "amp_short_vectors/Concurrency::graphics::norm_3::set_zyx", "amp_short_vectors/Concurrency::graphics::norm_3::xyz", "amp_short_vectors/Concurrency::graphics::norm_3::operator/=", "amp_short_vectors/Concurrency::graphics::norm_3::yz", "amp_short_vectors/Concurrency::graphics::norm_3::get_xyz", "amp_short_vectors/Concurrency::graphics::norm_3::br", "amp_short_vectors/Concurrency::graphics::norm_3::xy", "amp_short_vectors/Concurrency::graphics::norm_3::get_yzx", "amp_short_vectors/Concurrency::graphics::norm_3::set_xyz", "amp_short_vectors/Concurrency::graphics::norm_3::gr", "amp_short_vectors/Concurrency::graphics::norm_3::g", "amp_short_vectors/Concurrency::graphics::norm_3::set_yxz", "amp_short_vectors/Concurrency::graphics::norm_3::get_zyx", "amp_short_vectors/Concurrency::graphics::norm_3::get_y", "amp_short_vectors/Concurrency::graphics::norm_3::zx", "amp_short_vectors/Concurrency::graphics::norm_3::yzx", "amp_short_vectors/Concurrency::graphics::norm_3::gb", "amp_short_vectors/Concurrency::graphics::norm_3::xzy", "amp_short_vectors/Concurrency::graphics::norm_3::xz", "amp_short_vectors/Concurrency::graphics::norm_3::rb", "amp_short_vectors/Concurrency::graphics::norm_3::rgb", "amp_short_vectors/Concurrency::graphics::norm_3::b", "amp_short_vectors/Concurrency::graphics::norm_3::z", "amp_short_vectors/Concurrency::graphics::norm_3::operator*=", "amp_short_vectors/Concurrency::graphics::norm_3::operator+=", "amp_short_vectors/Concurrency::graphics::norm_3::get_zy", "amp_short_vectors/Concurrency::graphics::norm_3::get_xz", "amp_short_vectors/Concurrency::graphics::norm_3::gbr", "amp_short_vectors/Concurrency::graphics::norm_3::get_yz", "amp_short_vectors/Concurrency::graphics::norm_3::get_zx", "amp_short_vectors/Concurrency::graphics::norm_3::get_xzy", "amp_short_vectors/Concurrency::graphics::norm_3::set_xz", "amp_short_vectors/Concurrency::graphics::norm_3::set_xzy", "amp_short_vectors/Concurrency::graphics::norm_3::set_zy", "amp_short_vectors/Concurrency::graphics::norm_3::get_xy", "amp_short_vectors/Concurrency::graphics::norm_3::y", "amp_short_vectors/Concurrency::graphics::norm_3::yx", "amp_short_vectors/Concurrency::graphics::norm_3::rbg", "amp_short_vectors/Concurrency::graphics::norm_3::zxy", "amp_short_vectors/Concurrency::graphics::norm_3", "amp_short_vectors/Concurrency::graphics::norm_3::set_yz", "amp_short_vectors/Concurrency::graphics::norm_3::brg", "amp_short_vectors/Concurrency::graphics::norm_3::operator--", "amp_short_vectors/Concurrency::graphics::norm_3::yxz", "amp_short_vectors/Concurrency::graphics::norm_3::x", "amp_short_vectors/Concurrency::graphics::norm_3::set_x", "amp_short_vectors/Concurrency::graphics::norm_3::get_x", "amp_short_vectors/Concurrency::graphics::norm_3::get_yxz", "amp_short_vectors/Concurrency::graphics::norm_3::grb", "amp_short_vectors/Concurrency::graphics::norm_3::get_yx", "amp_short_vectors/Concurrency::graphics::norm_3::zy", "amp_short_vectors/Concurrency::graphics::norm_3::rg", "amp_short_vectors/Concurrency::graphics::norm_3::set_yzx", "amp_short_vectors/Concurrency::graphics::norm_3::operator-=", "amp_short_vectors/Concurrency::graphics::norm_3::bg", "amp_short_vectors/Concurrency::graphics::norm_3::operator++", "amp_short_vectors/Concurrency::graphics::norm_3::set_y", "amp_short_vectors/Concurrency::graphics::norm_3::zyx", "amp_short_vectors/Concurrency::graphics::norm_3::set_z", "amp_short_vectors/Concurrency::graphics::norm_3::operator-", "amp_short_vectors/Concurrency::graphics::norm_3::get_zxy", "amp_short_vectors/Concurrency::graphics::norm_3::set_xy", "amp_short_vectors/Concurrency::graphics::norm_3::set_zxy", "amp_short_vectors/Concurrency::graphics::norm_3::set_yx", "amp_short_vectors/Concurrency::graphics::norm_3::set_zx", "amp_short_vectors/Concurrency::graphics::norm_3::bgr"] ---- -# norm_3 Class - -Represents a short vector of three normal numbers. - -## Syntax - -```cpp -class norm_3; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[norm_3 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|norm_3::get_x|| -|norm_3::get_xy|| -|norm_3::get_xyz|| -|norm_3::get_xz|| -|norm_3::get_xzy|| -|norm_3::get_y|| -|norm_3::get_yx|| -|norm_3::get_yxz|| -|norm_3::get_yz|| -|norm_3::get_yzx|| -|norm_3::get_z|| -|norm_3::get_zx|| -|norm_3::get_zxy|| -|norm_3::get_zy|| -|norm_3::get_zyx|| -|norm_3::ref_b|| -|norm_3::ref_g|| -|norm_3::ref_r|| -|norm_3::ref_x|| -|norm_3::ref_y|| -|norm_3::ref_z|| -|norm_3::set_x|| -|norm_3::set_xy|| -|norm_3::set_xyz|| -|norm_3::set_xz|| -|norm_3::set_xzy|| -|norm_3::set_y|| -|norm_3::set_yx|| -|norm_3::set_yxz|| -|norm_3::set_yz|| -|norm_3::set_yzx|| -|norm_3::set_z|| -|norm_3::set_zx|| -|norm_3::set_zxy|| -|norm_3::set_zy|| -|norm_3::set_zyx|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|norm_3::operator-|| -|norm_3::operator--|| -|norm_3::operator*=|| -|norm_3::operator/=|| -|norm_3::operator++|| -|norm_3::operator+=|| -|norm_3::operator=|| -|norm_3::operator-=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|norm_3::b|| -|norm_3::bg|| -|norm_3::bgr|| -|norm_3::br|| -|norm_3::brg|| -|norm_3::g|| -|norm_3::gb|| -|norm_3::gbr|| -|norm_3::gr|| -|norm_3::grb|| -|norm_3::r|| -|norm_3::rb|| -|norm_3::rbg|| -|norm_3::rg|| -|norm_3::rgb|| -|norm_3::x|| -|norm_3::xy|| -|norm_3::xyz|| -|norm_3::xz|| -|norm_3::xzy|| -|norm_3::y|| -|norm_3::yx|| -|norm_3::yxz|| -|norm_3::yz|| -|norm_3::yzx|| -|norm_3::z|| -|norm_3::zx|| -|norm_3::zxy|| -|norm_3::zy|| -|norm_3::zyx|| - -## Inheritance Hierarchy - -`norm_3` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## norm_3 Constructor - -Default constructor, initializes all elements with 0. - -### Syntax - -```cpp -norm_3() restrict(amp,cpu); -norm_3( - norm _V0, - norm _V1, - norm _V2 -) restrict(amp,cpu); -norm_3( - float _V0, - float _V1, - float _V2 -) restrict(amp,cpu); -norm_3( - unorm _V0, - unorm _V1, - unorm _V2 -) restrict(amp,cpu); -norm_3( - norm _V -) restrict(amp,cpu); -explicit norm_3( - float _V -) restrict(amp,cpu); -norm_3( - const norm_3& _Other -) restrict(amp,cpu); -explicit inline norm_3( - const uint_3& _Other -) restrict(amp,cpu); -explicit inline norm_3( - const int_3& _Other -) restrict(amp,cpu); -explicit inline norm_3( - const float_3& _Other -) restrict(amp,cpu); -explicit inline norm_3( - const unorm_3& _Other -) restrict(amp,cpu); -explicit inline norm_3( - const double_3& _Other -) restrict(amp,cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V2*
-The value to initialize element 2. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size Constant - -### Syntax - -```cpp -static const int size = 3; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/norm-4-class.md b/docs/parallel/amp/reference/norm-4-class.md deleted file mode 100644 index 0b0262d23a5..00000000000 --- a/docs/parallel/amp/reference/norm-4-class.md +++ /dev/null @@ -1,425 +0,0 @@ ---- -description: "Learn more about: norm_4 Class" -title: "norm_4 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::norm_4::grab", "amp_short_vectors/Concurrency::graphics::norm_4::agrb", "amp_short_vectors/Concurrency::graphics::norm_4::bg", "amp_short_vectors/Concurrency::graphics::norm_4::get_wx", "amp_short_vectors/Concurrency::graphics::norm_4::rabg", "amp_short_vectors/Concurrency::graphics::norm_4::get_wxz", "amp_short_vectors/Concurrency::graphics::norm_4::get_zxyw", "amp_short_vectors/Concurrency::graphics::norm_4::get_ywxz", "amp_short_vectors/Concurrency::graphics::norm_4::zwyx", "amp_short_vectors/Concurrency::graphics::norm_4::set_yxzw", "amp_short_vectors/Concurrency::graphics::norm_4::rag", "amp_short_vectors/Concurrency::graphics::norm_4::operator--", "amp_short_vectors/Concurrency::graphics::norm_4::agbr", "amp_short_vectors/Concurrency::graphics::norm_4::set_zyw", "amp_short_vectors/Concurrency::graphics::norm_4::y", "amp_short_vectors/Concurrency::graphics::norm_4::get_xzy", "amp_short_vectors/Concurrency::graphics::norm_4::get_wxy", "amp_short_vectors/Concurrency::graphics::norm_4::get_ywzx", "amp_short_vectors/Concurrency::graphics::norm_4::grba", "amp_short_vectors/Concurrency::graphics::norm_4::get_xwz", "amp_short_vectors/Concurrency::graphics::norm_4::xzy", "amp_short_vectors/Concurrency::graphics::norm_4::get_xywz", "amp_short_vectors/Concurrency::graphics::norm_4::get_ywx", "amp_short_vectors/Concurrency::graphics::norm_4::abgr", "amp_short_vectors/Concurrency::graphics::norm_4::get_xyzw", "amp_short_vectors/Concurrency::graphics::norm_4::ywx", "amp_short_vectors/Concurrency::graphics::norm_4::argb", "amp_short_vectors/Concurrency::graphics::norm_4::set_ywx", "amp_short_vectors/Concurrency::graphics::norm_4::set_yzx", "amp_short_vectors/Concurrency::graphics::norm_4::b", "amp_short_vectors/Concurrency::graphics::norm_4::arb", "amp_short_vectors/Concurrency::graphics::norm_4::rab", "amp_short_vectors/Concurrency::graphics::norm_4::gb", "amp_short_vectors/Concurrency::graphics::norm_4::yzxw", "amp_short_vectors/Concurrency::graphics::norm_4::bagr", "amp_short_vectors/Concurrency::graphics::norm_4::wyzx", "amp_short_vectors/Concurrency::graphics::norm_4::gba", "amp_short_vectors/Concurrency::graphics::norm_4::wz", "amp_short_vectors/Concurrency::graphics::norm_4::get_yz", "amp_short_vectors/Concurrency::graphics::norm_4::rgab", "amp_short_vectors/Concurrency::graphics::norm_4::get_wxzy", "amp_short_vectors/Concurrency::graphics::norm_4::set_wzyx", "amp_short_vectors/Concurrency::graphics::norm_4::set_yzxw", "amp_short_vectors/Concurrency::graphics::norm_4::xzw", "amp_short_vectors/Concurrency::graphics::norm_4::zwxy", "amp_short_vectors/Concurrency::graphics::norm_4::yzw", "amp_short_vectors/Concurrency::graphics::norm_4::set_zxw", "amp_short_vectors/Concurrency::graphics::norm_4::ywxz", "amp_short_vectors/Concurrency::graphics::norm_4::yxz", "amp_short_vectors/Concurrency::graphics::norm_4::rbg", "amp_short_vectors/Concurrency::graphics::norm_4::get_wyz", "amp_short_vectors/Concurrency::graphics::norm_4::get_zwyx", "amp_short_vectors/Concurrency::graphics::norm_4::set_zxwy", "amp_short_vectors/Concurrency::graphics::norm_4::set_xzwy", "amp_short_vectors/Concurrency::graphics::norm_4::set_zxyw", "amp_short_vectors/Concurrency::graphics::norm_4::get_wzyx", "amp_short_vectors/Concurrency::graphics::norm_4::barg", "amp_short_vectors/Concurrency::graphics::norm_4::set_zywx", "amp_short_vectors/Concurrency::graphics::norm_4::set_wx", "amp_short_vectors/Concurrency::graphics::norm_4::bar", "amp_short_vectors/Concurrency::graphics::norm_4::a", "amp_short_vectors/Concurrency::graphics::norm_4::set_xyz", "amp_short_vectors/Concurrency::graphics::norm_4::gab", "amp_short_vectors/Concurrency::graphics::norm_4::gbra", "amp_short_vectors/Concurrency::graphics::norm_4::agr", "amp_short_vectors/Concurrency::graphics::norm_4::xzyw", "amp_short_vectors/Concurrency::graphics::norm_4::rg", "amp_short_vectors/Concurrency::graphics::norm_4::get_wzxy", "amp_short_vectors/Concurrency::graphics::norm_4::operator=", "amp_short_vectors/Concurrency::graphics::norm_4::wxzy", "amp_short_vectors/Concurrency::graphics::norm_4::get_x", "amp_short_vectors/Concurrency::graphics::norm_4::bra", "amp_short_vectors/Concurrency::graphics::norm_4::get_xwzy", "amp_short_vectors/Concurrency::graphics::norm_4::yzwx", "amp_short_vectors/Concurrency::graphics::norm_4::wzyx", "amp_short_vectors/Concurrency::graphics::norm_4::gbar", "amp_short_vectors/Concurrency::graphics::norm_4::set_wyzx", "amp_short_vectors/Concurrency::graphics::norm_4::set_yxz", "amp_short_vectors/Concurrency::graphics::norm_4::wzxy", "amp_short_vectors/Concurrency::graphics::norm_4::garb", "amp_short_vectors/Concurrency::graphics::norm_4::bgar", "amp_short_vectors/Concurrency::graphics::norm_4::set_zx", "amp_short_vectors/Concurrency::graphics::norm_4::bgr", "amp_short_vectors/Concurrency::graphics::norm_4::ga", "amp_short_vectors/Concurrency::graphics::norm_4::set_wzy", "amp_short_vectors/Concurrency::graphics::norm_4::zxw", "amp_short_vectors/Concurrency::graphics::norm_4::get_xwyz", "amp_short_vectors/Concurrency::graphics::norm_4::yzx", "amp_short_vectors/Concurrency::graphics::norm_4::get_wy", "amp_short_vectors/Concurrency::graphics::norm_4::get_xwy", "amp_short_vectors/Concurrency::graphics::norm_4::set_xw", "amp_short_vectors/Concurrency::graphics::norm_4::yz", "amp_short_vectors/Concurrency::graphics::norm_4::w", "amp_short_vectors/Concurrency::graphics::norm_4::wxyz", "amp_short_vectors/Concurrency::graphics::norm_4::set_w", "amp_short_vectors/Concurrency::graphics::norm_4::gar", "amp_short_vectors/Concurrency::graphics::norm_4::get_yzx", "amp_short_vectors/Concurrency::graphics::norm_4::set_zwx", "amp_short_vectors/Concurrency::graphics::norm_4::set_wxzy", "amp_short_vectors/Concurrency::graphics::norm_4::xyz", "amp_short_vectors/Concurrency::graphics::norm_4::set_wz", "amp_short_vectors/Concurrency::graphics::norm_4::get_xz", "amp_short_vectors/Concurrency::graphics::norm_4::set_zwxy", "amp_short_vectors/Concurrency::graphics::norm_4::get_w", "amp_short_vectors/Concurrency::graphics::norm_4::set_yzw", "amp_short_vectors/Concurrency::graphics::norm_4::set_yx", "amp_short_vectors/Concurrency::graphics::norm_4::rga", "amp_short_vectors/Concurrency::graphics::norm_4::xwy", "amp_short_vectors/Concurrency::graphics::norm_4::wzy", "amp_short_vectors/Concurrency::graphics::norm_4::wzx", "amp_short_vectors/Concurrency::graphics::norm_4::xz", "amp_short_vectors/Concurrency::graphics::norm_4::brga", "amp_short_vectors/Concurrency::graphics::norm_4::brag", "amp_short_vectors/Concurrency::graphics::norm_4::set_wyz", "amp_short_vectors/Concurrency::graphics::norm_4::ra", "amp_short_vectors/Concurrency::graphics::norm_4::get_xzwy", "amp_short_vectors/Concurrency::graphics::norm_4::zyx", "amp_short_vectors/Concurrency::graphics::norm_4::yw", "amp_short_vectors/Concurrency::graphics::norm_4::set_yzwx", "amp_short_vectors/Concurrency::graphics::norm_4::get_yxz", "amp_short_vectors/Concurrency::graphics::norm_4::xwzy", "amp_short_vectors/Concurrency::graphics::norm_4::get_zyw", "amp_short_vectors/Concurrency::graphics::norm_4::gbr", "amp_short_vectors/Concurrency::graphics::norm_4::zxyw", "amp_short_vectors/Concurrency::graphics::norm_4::wyx", "amp_short_vectors/Concurrency::graphics::norm_4::get_zyxw", "amp_short_vectors/Concurrency::graphics::norm_4::get_zwy", "amp_short_vectors/Concurrency::graphics::norm_4::set_zxy", "amp_short_vectors/Concurrency::graphics::norm_4::ywz", "amp_short_vectors/Concurrency::graphics::norm_4::xy", "amp_short_vectors/Concurrency::graphics::norm_4", "amp_short_vectors/Concurrency::graphics::norm_4::set_wxyz", "amp_short_vectors/Concurrency::graphics::norm_4::r", "amp_short_vectors/Concurrency::graphics::norm_4::get_zwx", "amp_short_vectors/Concurrency::graphics::norm_4::get_xw", "amp_short_vectors/Concurrency::graphics::norm_4::xyw", "amp_short_vectors/Concurrency::graphics::norm_4::wxy", "amp_short_vectors/Concurrency::graphics::norm_4::set_wxz", "amp_short_vectors/Concurrency::graphics::norm_4::agb", "amp_short_vectors/Concurrency::graphics::norm_4::bga", "amp_short_vectors/Concurrency::graphics::norm_4::gr", "amp_short_vectors/Concurrency::graphics::norm_4::arg", "amp_short_vectors/Concurrency::graphics::norm_4::rgba", "amp_short_vectors/Concurrency::graphics::norm_4::arbg", "amp_short_vectors/Concurrency::graphics::norm_4::yx", "amp_short_vectors/Concurrency::graphics::norm_4::set_yz", "amp_short_vectors/Concurrency::graphics::norm_4::set_yxwz", "amp_short_vectors/Concurrency::graphics::norm_4::get_wyzx", "amp_short_vectors/Concurrency::graphics::norm_4::get_yzw", "amp_short_vectors/Concurrency::graphics::norm_4::set_yw", "amp_short_vectors/Concurrency::graphics::norm_4::brg", "amp_short_vectors/Concurrency::graphics::norm_4::zxy", "amp_short_vectors/Concurrency::graphics::norm_4::operator-", "amp_short_vectors/Concurrency::graphics::norm_4::yxzw", "amp_short_vectors/Concurrency::graphics::norm_4::rbga", "amp_short_vectors/Concurrency::graphics::norm_4::set_zyxw", "amp_short_vectors/Concurrency::graphics::norm_4::zwy", "amp_short_vectors/Concurrency::graphics::norm_4::abr", "amp_short_vectors/Concurrency::graphics::norm_4::get_zwxy", "amp_short_vectors/Concurrency::graphics::norm_4::br", "amp_short_vectors/Concurrency::graphics::norm_4::set_xzy", "amp_short_vectors/Concurrency::graphics::norm_4::get_zx", "amp_short_vectors/Concurrency::graphics::norm_4::rgb", "amp_short_vectors/Concurrency::graphics::norm_4::get_zy", "amp_short_vectors/Concurrency::graphics::norm_4::zw", "amp_short_vectors/Concurrency::graphics::norm_4::set_ywzx", "amp_short_vectors/Concurrency::graphics::norm_4::set_xy", "amp_short_vectors/Concurrency::graphics::norm_4::get_xzw", "amp_short_vectors/Concurrency::graphics::norm_4::rba", "amp_short_vectors/Concurrency::graphics::norm_4::get_wyx", "amp_short_vectors/Concurrency::graphics::norm_4::operator+=", "amp_short_vectors/Concurrency::graphics::norm_4::set_xwz", "amp_short_vectors/Concurrency::graphics::norm_4::set_zwy", "amp_short_vectors/Concurrency::graphics::norm_4::abg", "amp_short_vectors/Concurrency::graphics::norm_4::xywz", "amp_short_vectors/Concurrency::graphics::norm_4::ar", "amp_short_vectors/Concurrency::graphics::norm_4::set_y", "amp_short_vectors/Concurrency::graphics::norm_4::get_xzyw", "amp_short_vectors/Concurrency::graphics::norm_4::set_yxw", "amp_short_vectors/Concurrency::graphics::norm_4::set_ywxz", "amp_short_vectors/Concurrency::graphics::norm_4::yxw", "amp_short_vectors/Concurrency::graphics::norm_4::get_z", "amp_short_vectors/Concurrency::graphics::norm_4::get_zxy", "amp_short_vectors/Concurrency::graphics::norm_4::ag", "amp_short_vectors/Concurrency::graphics::norm_4::operator/=", "amp_short_vectors/Concurrency::graphics::norm_4::gra", "amp_short_vectors/Concurrency::graphics::norm_4::ragb", "amp_short_vectors/Concurrency::graphics::norm_4::get_yxwz", "amp_short_vectors/Concurrency::graphics::norm_4::get_wyxz", "amp_short_vectors/Concurrency::graphics::norm_4::xyzw", "amp_short_vectors/Concurrency::graphics::norm_4::zyw", "amp_short_vectors/Concurrency::graphics::norm_4::set_wzxy", "amp_short_vectors/Concurrency::graphics::norm_4::set_x", "amp_short_vectors/Concurrency::graphics::norm_4::set_xwyz", "amp_short_vectors/Concurrency::graphics::norm_4::wyz", "amp_short_vectors/Concurrency::graphics::norm_4::zwx", "amp_short_vectors/Concurrency::graphics::norm_4::set_zw", "amp_short_vectors/Concurrency::graphics::norm_4::zy", "amp_short_vectors/Concurrency::graphics::norm_4::set_zwyx", "amp_short_vectors/Concurrency::graphics::norm_4::set_xwzy", "amp_short_vectors/Concurrency::graphics::norm_4::get_yzxw", "amp_short_vectors/Concurrency::graphics::norm_4::get_yzwx", "amp_short_vectors/Concurrency::graphics::norm_4::z", "amp_short_vectors/Concurrency::graphics::norm_4::g", "amp_short_vectors/Concurrency::graphics::norm_4::get_xyz", "amp_short_vectors/Concurrency::graphics::norm_4::xwyz", "amp_short_vectors/Concurrency::graphics::norm_4::get_wxyz", "amp_short_vectors/Concurrency::graphics::norm_4::zywx", "amp_short_vectors/Concurrency::graphics::norm_4::operator++", "amp_short_vectors/Concurrency::graphics::norm_4::operator-=", "amp_short_vectors/Concurrency::graphics::norm_4::set_wyx", "amp_short_vectors/Concurrency::graphics::norm_4::wxz", "amp_short_vectors/Concurrency::graphics::norm_4::set_xyw", "amp_short_vectors/Concurrency::graphics::norm_4::set_ywz", "amp_short_vectors/Concurrency::graphics::norm_4::operator*=", "amp_short_vectors/Concurrency::graphics::norm_4::wx", "amp_short_vectors/Concurrency::graphics::norm_4::x", "amp_short_vectors/Concurrency::graphics::norm_4::get_y", "amp_short_vectors/Concurrency::graphics::norm_4::set_xzyw", "amp_short_vectors/Concurrency::graphics::norm_4::bag", "amp_short_vectors/Concurrency::graphics::norm_4::get_zw", "amp_short_vectors/Concurrency::graphics::norm_4::abrg", "amp_short_vectors/Concurrency::graphics::norm_4::get_xy", "amp_short_vectors/Concurrency::graphics::norm_4::set_wyxz", "amp_short_vectors/Concurrency::graphics::norm_4::ywzx", "amp_short_vectors/Concurrency::graphics::norm_4::set_xwy", "amp_short_vectors/Concurrency::graphics::norm_4::set_wxy", "amp_short_vectors/Concurrency::graphics::norm_4::set_xyzw", "amp_short_vectors/Concurrency::graphics::norm_4::wyxz", "amp_short_vectors/Concurrency::graphics::norm_4::ba", "amp_short_vectors/Concurrency::graphics::norm_4::xwz", "amp_short_vectors/Concurrency::graphics::norm_4::zxwy", "amp_short_vectors/Concurrency::graphics::norm_4::gabr", "amp_short_vectors/Concurrency::graphics::norm_4::set_wzx", "amp_short_vectors/Concurrency::graphics::norm_4::get_xyw", "amp_short_vectors/Concurrency::graphics::norm_4::grb", "amp_short_vectors/Concurrency::graphics::norm_4::get_zxw", "amp_short_vectors/Concurrency::graphics::norm_4::get_yw", "amp_short_vectors/Concurrency::graphics::norm_4::set_xzw", "amp_short_vectors/Concurrency::graphics::norm_4::set_wy", "amp_short_vectors/Concurrency::graphics::norm_4::get_yxw", "amp_short_vectors/Concurrency::graphics::norm_4::get_ywz", "amp_short_vectors/Concurrency::graphics::norm_4::get_wz", "amp_short_vectors/Concurrency::graphics::norm_4::yxwz", "amp_short_vectors/Concurrency::graphics::norm_4::get_zxwy", "amp_short_vectors/Concurrency::graphics::norm_4::set_zy", "amp_short_vectors/Concurrency::graphics::norm_4::xzwy", "amp_short_vectors/Concurrency::graphics::norm_4::bgra", "amp_short_vectors/Concurrency::graphics::norm_4::set_xz", "amp_short_vectors/Concurrency::graphics::norm_4::rbag", "amp_short_vectors/Concurrency::graphics::norm_4::zx", "amp_short_vectors/Concurrency::graphics::norm_4::get_zyx", "amp_short_vectors/Concurrency::graphics::norm_4::zyxw", "amp_short_vectors/Concurrency::graphics::norm_4::set_z", "amp_short_vectors/Concurrency::graphics::norm_4::xw", "amp_short_vectors/Concurrency::graphics::norm_4::set_xywz", "amp_short_vectors/Concurrency::graphics::norm_4::get_yxzw", "amp_short_vectors/Concurrency::graphics::norm_4::get_yx", "amp_short_vectors/Concurrency::graphics::norm_4::get_wzx", "amp_short_vectors/Concurrency::graphics::norm_4::ab", "amp_short_vectors/Concurrency::graphics::norm_4::rb", "amp_short_vectors/Concurrency::graphics::norm_4::get_zywx", "amp_short_vectors/Concurrency::graphics::norm_4::get_wzy", "amp_short_vectors/Concurrency::graphics::norm_4::set_zyx", "amp_short_vectors/Concurrency::graphics::norm_4::wy"] -ms.assetid: d628b2bf-2cdb-4dbb-95c6-cd778f5e991f ---- -# norm_4 Class - -Represents a short vector of four normal numbers. - -## Syntax - -```cpp -class norm_4; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[norm_4 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|norm_4::get_w|| -|norm_4::get_wx|| -|norm_4::get_wxy|| -|norm_4::get_wxyz|| -|norm_4::get_wxz|| -|norm_4::get_wxzy|| -|norm_4::get_wy|| -|norm_4::get_wyx|| -|norm_4::get_wyxz|| -|norm_4::get_wyz|| -|norm_4::get_wyzx|| -|norm_4::get_wz|| -|norm_4::get_wzx|| -|norm_4::get_wzxy|| -|norm_4::get_wzy|| -|norm_4::get_wzyx|| -|norm_4::get_x|| -|norm_4::get_xw|| -|norm_4::get_xwy|| -|norm_4::get_xwyz|| -|norm_4::get_xwz|| -|norm_4::get_xwzy|| -|norm_4::get_xy|| -|norm_4::get_xyw|| -|norm_4::get_xywz|| -|norm_4::get_xyz|| -|norm_4::get_xyzw|| -|norm_4::get_xz|| -|norm_4::get_xzw|| -|norm_4::get_xzwy|| -|norm_4::get_xzy|| -|norm_4::get_xzyw|| -|norm_4::get_y|| -|norm_4::get_yw|| -|norm_4::get_ywx|| -|norm_4::get_ywxz|| -|norm_4::get_ywz|| -|norm_4::get_ywzx|| -|norm_4::get_yx|| -|norm_4::get_yxw|| -|norm_4::get_yxwz|| -|norm_4::get_yxz|| -|norm_4::get_yxzw|| -|norm_4::get_yz|| -|norm_4::get_yzw|| -|norm_4::get_yzwx|| -|norm_4::get_yzx|| -|norm_4::get_yzxw|| -|norm_4::get_z|| -|norm_4::get_zw|| -|norm_4::get_zwx|| -|norm_4::get_zwxy|| -|norm_4::get_zwy|| -|norm_4::get_zwyx|| -|norm_4::get_zx|| -|norm_4::get_zxw|| -|norm_4::get_zxwy|| -|norm_4::get_zxy|| -|norm_4::get_zxyw|| -|norm_4::get_zy|| -|norm_4::get_zyw|| -|norm_4::get_zywx|| -|norm_4::get_zyx|| -|norm_4::get_zyxw|| -|norm_4::ref_a|| -|norm_4::ref_b|| -|norm_4::ref_g|| -|norm_4::ref_r|| -|norm_4::ref_w|| -|norm_4::ref_x|| -|norm_4::ref_y|| -|norm_4::ref_z|| -|norm_4::set_w|| -|norm_4::set_wx|| -|norm_4::set_wxy|| -|norm_4::set_wxyz|| -|norm_4::set_wxz|| -|norm_4::set_wxzy|| -|norm_4::set_wy|| -|norm_4::set_wyx|| -|norm_4::set_wyxz|| -|norm_4::set_wyz|| -|norm_4::set_wyzx|| -|norm_4::set_wz|| -|norm_4::set_wzx|| -|norm_4::set_wzxy|| -|norm_4::set_wzy|| -|norm_4::set_wzyx|| -|norm_4::set_x|| -|norm_4::set_xw|| -|norm_4::set_xwy|| -|norm_4::set_xwyz|| -|norm_4::set_xwz|| -|norm_4::set_xwzy|| -|norm_4::set_xy|| -|norm_4::set_xyw|| -|norm_4::set_xywz|| -|norm_4::set_xyz|| -|norm_4::set_xyzw|| -|norm_4::set_xz|| -|norm_4::set_xzw|| -|norm_4::set_xzwy|| -|norm_4::set_xzy|| -|norm_4::set_xzyw|| -|norm_4::set_y|| -|norm_4::set_yw|| -|norm_4::set_ywx|| -|norm_4::set_ywxz|| -|norm_4::set_ywz|| -|norm_4::set_ywzx|| -|norm_4::set_yx|| -|norm_4::set_yxw|| -|norm_4::set_yxwz|| -|norm_4::set_yxz|| -|norm_4::set_yxzw|| -|norm_4::set_yz|| -|norm_4::set_yzw|| -|norm_4::set_yzwx|| -|norm_4::set_yzx|| -|norm_4::set_yzxw|| -|norm_4::set_z|| -|norm_4::set_zw|| -|norm_4::set_zwx|| -|norm_4::set_zwxy|| -|norm_4::set_zwy|| -|norm_4::set_zwyx|| -|norm_4::set_zx|| -|norm_4::set_zxw|| -|norm_4::set_zxwy|| -|norm_4::set_zxy|| -|norm_4::set_zxyw|| -|norm_4::set_zy|| -|norm_4::set_zyw|| -|norm_4::set_zywx|| -|norm_4::set_zyx|| -|norm_4::set_zyxw|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|norm_4::operator-|| -|norm_4::operator--|| -|norm_4::operator*=|| -|norm_4::operator/=|| -|norm_4::operator++|| -|norm_4::operator+=|| -|norm_4::operator=|| -|norm_4::operator-=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#norm_4__size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|norm_4::a|| -|norm_4::ab|| -|norm_4::abg|| -|norm_4::abgr|| -|norm_4::abr|| -|norm_4::abrg|| -|norm_4::ag|| -|norm_4::agb|| -|norm_4::agbr|| -|norm_4::agr|| -|norm_4::agrb|| -|norm_4::ar|| -|norm_4::arb|| -|norm_4::arbg|| -|norm_4::arg|| -|norm_4::argb|| -|norm_4::b|| -|norm_4::ba|| -|norm_4::bag|| -|norm_4::bagr|| -|norm_4::bar|| -|norm_4::barg|| -|norm_4::bg|| -|norm_4::bga|| -|norm_4::bgar|| -|norm_4::bgr|| -|norm_4::bgra|| -|norm_4::br|| -|norm_4::bra|| -|norm_4::brag|| -|norm_4::brg|| -|norm_4::brga|| -|norm_4::g|| -|norm_4::ga|| -|norm_4::gab|| -|norm_4::gabr|| -|norm_4::gar|| -|norm_4::garb|| -|norm_4::gb|| -|norm_4::gba|| -|norm_4::gbar|| -|norm_4::gbr|| -|norm_4::gbra|| -|norm_4::gr|| -|norm_4::gra|| -|norm_4::grab|| -|norm_4::grb|| -|norm_4::grba|| -|norm_4::r|| -|norm_4::ra|| -|norm_4::rab|| -|norm_4::rabg|| -|norm_4::rag|| -|norm_4::ragb|| -|norm_4::rb|| -|norm_4::rba|| -|norm_4::rbag|| -|norm_4::rbg|| -|norm_4::rbga|| -|norm_4::rg|| -|norm_4::rga|| -|norm_4::rgab|| -|norm_4::rgb|| -|norm_4::rgba|| -|norm_4::w|| -|norm_4::wx|| -|norm_4::wxy|| -|norm_4::wxyz|| -|norm_4::wxz|| -|norm_4::wxzy|| -|norm_4::wy|| -|norm_4::wyx|| -|norm_4::wyxz|| -|norm_4::wyz|| -|norm_4::wyzx|| -|norm_4::wz|| -|norm_4::wzx|| -|norm_4::wzxy|| -|norm_4::wzy|| -|norm_4::wzyx|| -|norm_4::x|| -|norm_4::xw|| -|norm_4::xwy|| -|norm_4::xwyz|| -|norm_4::xwz|| -|norm_4::xwzy|| -|norm_4::xy|| -|norm_4::xyw|| -|norm_4::xywz|| -|norm_4::xyz|| -|norm_4::xyzw|| -|norm_4::xz|| -|norm_4::xzw|| -|norm_4::xzwy|| -|norm_4::xzy|| -|norm_4::xzyw|| -|norm_4::y|| -|norm_4::yw|| -|norm_4::ywx|| -|norm_4::ywxz|| -|norm_4::ywz|| -|norm_4::ywzx|| -|norm_4::yx|| -|norm_4::yxw|| -|norm_4::yxwz|| -|norm_4::yxz|| -|norm_4::yxzw|| -|norm_4::yz|| -|norm_4::yzw|| -|norm_4::yzwx|| -|norm_4::yzx|| -|norm_4::yzxw|| -|norm_4::z|| -|norm_4::zw|| -|norm_4::zwx|| -|norm_4::zwxy|| -|norm_4::zwy|| -|norm_4::zwyx|| -|norm_4::zx|| -|norm_4::zxw|| -|norm_4::zxwy|| -|norm_4::zxy|| -|norm_4::zxyw|| -|norm_4::zy|| -|norm_4::zyw|| -|norm_4::zywx|| -|norm_4::zyx|| -|norm_4::zyxw|| - -## Inheritance Hierarchy - -`norm_4` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## norm_4 - -Default constructor, initializes all elements with 0. - -```cpp -norm_4() restrict(amp, - cpu); - -norm_4( - norm _V0, - norm _V1, - norm _V2, - norm _V3) restrict(amp, - cpu); - -norm_4( - float _V0, - float _V1, - float _V2, - float _V3) restrict(amp, - cpu); - -norm_4( - unorm _V0, - unorm _V1, - unorm _V2, - unorm _V3) restrict(amp, - cpu); - -norm_4( - norm _V) restrict(amp, - cpu); - -explicit norm_4( - float _V) restrict(amp, - cpu); - -norm_4( - const norm_4& _Other) restrict(amp, - cpu); - -explicit inline norm_4( - const uint_4& _Other) restrict(amp, - cpu); - -explicit inline norm_4( - const int_4& _Other) restrict(amp, - cpu); - -explicit inline norm_4( - const float_4& _Other) restrict(amp, - cpu); - -explicit inline norm_4( - const unorm_4& _Other) restrict(amp, - cpu); - -explicit inline norm_4( - const double_4& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V2*
-The value to initialize element 2. - -*_V3*
-The value to initialize element 3. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 4; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/norm-class.md b/docs/parallel/amp/reference/norm-class.md deleted file mode 100644 index 56952e2cf8f..00000000000 --- a/docs/parallel/amp/reference/norm-class.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -description: "Learn more about: norm Class" -title: "norm Class" -ms.date: "11/04/2016" -f1_keywords: ["AMP_SHORT_VECTORS/norm", "AMP_SHORT_VECTORS/Concurrency::graphics::norm Constructor"] -ms.assetid: 73002f3d-c25e-4119-bcd3-4c46c9b6abf1 ---- -# norm Class - -Represent a norm number. Each element is a floating point number in the range of [-1.0f, 1.0f]. - -## Syntax - -```cpp -class norm; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[norm Constructor](#ctor)|Overloaded. Default constructor. Initialize to 0.0f.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|norm::operator-|| -|norm::operator--|| -|norm::operator float|Conversion operator. Convert the norm number to a floating point value.| -|norm::operator*=|| -|norm::operator/=|| -|norm::operator++|| -|norm::operator+=|| -|norm::operator=|| -|norm::operator-=|| - -## Inheritance Hierarchy - -`norm` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## norm - -Default constructor. Initialize to 0.0f. - -```cpp -norm( - void) restrict(amp, - cpu); - -explicit norm( - float _V) restrict(amp, - cpu); - -explicit norm( - unsigned int _V) restrict(amp, - cpu); - -explicit norm( - int _V) restrict(amp, - cpu); - -explicit norm( - double _V) restrict(amp, - cpu); - -norm( - const norm& _Other) restrict(amp, - cpu); - -norm( - const unorm& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V*
-The value used to initialize. - -*_Other*
-The object used to initialize. - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/out-of-memory-class.md b/docs/parallel/amp/reference/out-of-memory-class.md deleted file mode 100644 index c59ef294a0a..00000000000 --- a/docs/parallel/amp/reference/out-of-memory-class.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: "Learn more about: out_of_memory Class" -title: "out_of_memory Class" -ms.date: "11/04/2016" -f1_keywords: ["out_of_memory", "AMPRT/out_of_memory", "AMPRT/Concurrency::out_of_memory::out_of_memory"] -helpviewer_keywords: ["out_of_memory class"] -ms.assetid: 3aa7e682-8f13-4ae6-9188-31fb423956e4 ---- -# out_of_memory Class - -The exception that is thrown when a method fails because of a lack of system or device memory. - -## Syntax - -```cpp -class out_of_memory : public runtime_exception; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[out_of_memory Constructor](#ctor)|Initializes a new instance of the `out_of_memory` class.| - -## Inheritance Hierarchy - -`exception` - -`runtime_exception` - -`out_of_memory` - -## Requirements - -**Header:** amprt.h - -**Namespace:** Concurrency - -## out_of_memory - -Initializes a new instance of the class. - -### Syntax - -```cpp -explicit out_of_memory( - const char * _Message ) throw(); - -out_of_memory () throw(); -``` - -### Parameters - -*_Message*
-A description of the error. - -### Return Value - -A new instance of the `out_of_memory` class. - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/reference-cpp-amp.md b/docs/parallel/amp/reference/reference-cpp-amp.md deleted file mode 100644 index 21e44bd2a83..00000000000 --- a/docs/parallel/amp/reference/reference-cpp-amp.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -description: "Learn more about: Reference (C++ AMP)" -title: "Reference (C++ AMP)" -ms.date: "11/04/2016" -f1_keywords: ["amp/Concurrency::Reference (C++ AMP)"] -helpviewer_keywords: ["C++ Accelerated Massive Parallelism, reference"] -ms.assetid: 372a8aed-8a53-48c9-996f-9c3cf09c9fa8 ---- -# Reference (C++ AMP) - -This section contains reference information for the C++ Accelerated Massive Parallelism (C++ AMP) runtime. - -> [!NOTE] -> The C++ language standard reserves the use of identifiers that begin with an underscore (`_`) character for implementations such as libraries. Do not use names beginning with an underscore in your code. The behavior of code elements whose names follow this convention are not guaranteed and are subject to change in future releases. For these reasons, such code elements are omitted from this documentation. - -## In This Section - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md)
-Provides classes and functions that enable the acceleration of C++ code on data parallel hardware. - -[Concurrency::direct3d Namespace](concurrency-direct3d-namespace.md)
-Provides functions that support D3D interoperability. Enables seamless use of D3D resources for compute in AMP code and the use of resources created in AMP in D3D code, without creating redundant intermediate copies. You can use C++ AMP to incrementally accelerate the compute-intensive sections of your DirectX applications and use the D3D API on data produced from AMP computations. - -[Concurrency::fast_math Namespace](concurrency-fast-math-namespace.md)
-Functions in the `fast_math` namespace are not C99-conformant. Only single-precision versions of each function are provided. These functions use the DirectX intrinsic functions, which are faster than the corresponding functions in the `precise_math` namespace and do not require extended double-precision support on the accelerator, but they are less accurate. There are two versions of each function for source-level compatibility with C99 code; both versions take and return single-precision values. - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md)
-Provides types and functions that are designed for graphics programming. - -[Concurrency::precise_math Namespace](concurrency-precise-math-namespace.md)
-Functions in the `precise_math` namespace are C99 conformant. Both single-precision and double-precision versions of each function are included. These functions—this includes the single-precision functions—require extended double-precision support on the accelerator. - -## Related Sections - -[C++ AMP (C++ Accelerated Massive Parallelism)](../../../parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md)
-C++ AMP accelerates the execution of your C++ code by taking advantage of the data-parallel hardware that's commonly present as a graphics processing unit (GPU) on a discrete graphics card. diff --git a/docs/parallel/amp/reference/runtime-exception-class.md b/docs/parallel/amp/reference/runtime-exception-class.md deleted file mode 100644 index ae03941949e..00000000000 --- a/docs/parallel/amp/reference/runtime-exception-class.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: "runtime_exception Class" -description: "Learn more about: runtime_exception Class" -ms.date: 03/27/2019 -f1_keywords: ["runtime_exception", "AMPRT/runtime_exception", "AMPRT/Concurrency::runtime_exception", "AMPRT/Concurrency::runtime_exception::get_error_code"] -helpviewer_keywords: ["runtime_exception class"] ---- -# runtime_exception Class - -The base type for exceptions in the C++ Accelerated Massive Parallelism (AMP) library. - -### Syntax - -```cpp -class runtime_exception : public std::exception; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[runtime_exception Constructor](#ctor)|Initializes a new instance of the `runtime_exception` class.| -|[~runtime_exception Destructor](#dtor)|Destroys the `runtime_exception` object.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[get_error_code](#get_error_code)|Returns the error code that caused the exception.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[operator=](#operator_eq)|Copies the contents of the specified `runtime_exception` object into this one.| - -## Inheritance Hierarchy - -`exception` - -`runtime_exception` - -## Requirements - -**Header:** amprt.h - -**Namespace:** Concurrency - -## runtime_exception Constructor - -Initializes a new instance of the class. - -### Syntax - -```cpp -runtime_exception( - const char * _Message, - HRESULT _Hresult ) throw(); - -explicit runtime_exception( - HRESULT _Hresult ) throw(); - -runtime_exception( - const runtime_exception & _Other ) throw(); -``` - -### Parameters - -*_Message*
-A description of the error that caused the exception. - -*_Hresult*
-The HRESULT of error that caused the exception. - -*_Other*
-The `runtime_exception` object to copy. - -### Return Value - -The `runtime_exception` object. - -## ~runtime_exception Destructor - -Destroys the object. - -### Syntax - -```cpp -virtual ~runtime_exception() throw(); -``` - -## get_error_code - -Returns the error code that caused the exception. - -### Syntax - -```cpp -HRESULT get_error_code() const throw(); -``` - -### Return Value - -The HRESULT of error that caused the exception. - -## operator= - -Copies the contents of the specified `runtime_exception` object into this one. - -### Syntax - -```cpp -runtime_exception & operator= ( const runtime_exception & _Other ) throw(); -``` - -### Parameters - -*_Other*
-The `runtime_exception` object to copy. - -### Return Value - -A reference to this `runtime_exception` object. - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/sampler-class.md b/docs/parallel/amp/reference/sampler-class.md deleted file mode 100644 index 5542115588c..00000000000 --- a/docs/parallel/amp/reference/sampler-class.md +++ /dev/null @@ -1,197 +0,0 @@ ---- -description: "Learn more about: sampler Class" -title: "sampler Class" -ms.date: "06/28/2018" -f1_keywords: ["sampler", "AMP_GRAPHICS/sampler", "AMP_GRAPHICS/concurrency::sampler::graphics::sampler", "AMP_GRAPHICS/concurrency::sampler::graphics::get_address_mode", "AMP_GRAPHICS/concurrency::sampler::graphics::get_border_color", "AMP_GRAPHICS/concurrency::sampler::graphics::get_filter_mode", "AMP_GRAPHICS/concurrency::sampler::graphics::address_mode", "AMP_GRAPHICS/concurrency::sampler::graphics::border_color", "AMP_GRAPHICS/concurrency::sampler::graphics::filter_mode"] -ms.assetid: 9a6a9807-497d-402d-b092-8c4d86275b80 ---- -# sampler Class - -The sampler class aggregates sampling configuration information to be used for texture sampling. - -## Syntax - -```cpp -class sampler; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[sampler Constructor](#ctor)|Overloaded. Constructs a sampler instance.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[get_address_mode](#get_address_mode)|Returns the `address_mode` that's associated with the sampler object.| -|[get_border_color](#get_border_color)|Returns the border color that's associated with the sampler object.| -|[get_filter_mode](#get_filter_mode)|Returns the `filter_mode` that's associated with the sampler object.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[operator=](#operator_eq)|Overloaded. Assignment operator.| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|[address_mode](#address_mode)|Gets the address mode of the `sampler` object.| -|[border_color](#border_color)|Gets the border color of the `sampler` object.| -|[filter_mode](#filter_mode)|Gets the filter mode of the `sampler` object.| - -## Inheritance Hierarchy - -`sampler` - -## Requirements - -**Header:** amp_graphics.h - -**Namespace:** concurrency::graphics - -## sampler - -Constructs an instance of the [sampler Class](sampler-class.md). - -```cpp -sampler() restrict(cpu); // [1] default constructor - -sampler( // [2] constructor - filter_mode _Filter_mode) restrict(cpu); - -sampler( // [3] constructor - address_mode _Address_mode, - float_4 _Border_color = float_4(0.0f, - 0.0f, - 0.0f, - 0.0f)) restrict(cpu); - -sampler( // [4] constructor - filter_mode _Filter_mode, - address_mode _Address_mode, - float_4 _Border_color = float_4(0.0f, - 0.0f, - 0.0f, - 0.0f)) restrict(cpu); - -sampler( // [5] copy constructor - const sampler& _Other) restrict(amp, - cpu); - -sampler( // [6] move constructor - sampler&& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_Filter_mode*
-The filter mode to be used in sampling. - -*_Address_mode*
-The addressing mode to be used in sampling for all dimensions. - -*_Border_color*
-The border color to be used if the address mode is address_border. The default value is `float_4(0.0f, 0.0f, 0.0f, 0.0f)`. - -*_Other*
-[5] Copy Constructor -The `sampler` object to copy into the new `sampler` instance. - -[6] Move Constructor -The `sampler` object to move into the new `sampler` instance. - -## address_mode - -Gets the address mode of the `sampler` object. - -```cpp -__declspec(property(get= get_address_mode)) Concurrency::graphics::address_mode address_mode; -``` - -## border_color - -Gets the border color of the `sampler` object. - -```cpp -__declspec(property(get= get_border_color)) Concurrency::graphics::float_4 border_color; -``` - -## filter_mode - -Gets the filter mode of the `sampler` object. - -```cpp -__declspec(property(get= get_filter_mode)) Concurrency::graphics::filter_mode filter_mode; -``` - -## get_address_mode - -Returns the filter mode that's configured for this `sampler`. - -```cpp -Concurrency::graphics::address_mode get_address_mode() const __GPU; -``` - -### Return Value - -The address mode that's configured for the sampler. - -## get_border_color - -Returns the border color that's configured for this `sampler`. - -```cpp -Concurrency::graphics::float_4 get_border_color() const restrict(amp, cpu); -``` - -### Return Value - -A float_4 that contains the border color. - -## get_filter_mode - -Returns the filter mode that's configured for this `sampler`. - -```cpp -Concurrency::graphics::filter_mode get_filter_mode() const restrict(amp, cpu); -``` - -### Return Value - -The filter mode that's configured for the sampler. - -## operator= - -Assigns the value of another sampler object to an existing sampler. - -```cpp -sampler& operator= ( // [1] copy assignment operator - const sampler& _Other) restrict(amp, cpu); - -sampler& operator= ( // [2] move assignment operator - sampler&& _Other) restrict(amp, cpu); -``` - -### Parameters - -*_Other*
-[1] Copy Assignment Operator -The `sampler` object to copy into this `sampler`. - -[2] Move Assignment Operator -The `sampler` object to move into this `sampler`. - -### Return Value - -A reference to this sampler instance. - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/scoped-d3d-access-lock-class.md b/docs/parallel/amp/reference/scoped-d3d-access-lock-class.md deleted file mode 100644 index 8a6888a479a..00000000000 --- a/docs/parallel/amp/reference/scoped-d3d-access-lock-class.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -description: "Learn more about: scoped_d3d_access_lock Class" -title: "scoped_d3d_access_lock Class" -ms.date: "11/04/2016" -f1_keywords: ["scoped_d3d_access_lock", "AMPRT/scoped_d3d_access_lock", "AMPRT/concurrency::direct3d::scoped_d3d_access_lock::scoped_d3d_access_lock"] -ms.assetid: 0ad333e6-9839-4736-a722-16d95d70c4b1 ---- -# scoped_d3d_access_lock Class - -RAII wrapper for a D3D access lock on an accelerator_view object. - -## Syntax - -```cpp -class scoped_d3d_access_lock; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[scoped_d3d_access_lock Constructor](#ctor)|Overloaded. Constructs a `scoped_d3d_access_lock` object. The lock is released when this object goes out of scope.| -|[~scoped_d3d_access_lock Destructor](#dtor)|Releases the D3D access lock on the associated `accelerator_view` object.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[operator=](#operator_eq)|Takes ownership of a lock from another `scoped_d3d_access_lock`.| - -## Inheritance Hierarchy - -`scoped_d3d_access_lock` - -## Requirements - -**Header:** amprt.h - -**Namespace:** concurrency::direct3d - -## scoped_d3d_access_lock - -Constructs a `scoped_d3d_access_lock` object. The lock is released when this object goes out of scope. - -```cpp -explicit scoped_d3d_access_lock(// [1] constructor - accelerator_view& _Av); - -explicit scoped_d3d_access_lock(// [2] constructor - accelerator_view& _Av, - adopt_d3d_access_lock_t _T); - -scoped_d3d_access_lock(// [3] move constructor - scoped_d3d_access_lock&& _Other); -``` - -### Parameters - -*_Av*
-The `accelerator_view` for the lock to adopt. - -*_T*
-The `adopt_d3d_access_lock_t` object. - -*_Other*
-The `scoped_d3d_access_lock` object from which to move an existing lock. - -## Construction - -[1] Constructor -Acquires a D3D access lock on the given [accelerator_view](accelerator-view-class.md) object. Construction blocks until the lock is acquired. - -[2] Constructor -Adopt a D3D access lock from the given [accelerator_view](accelerator-view-class.md) object. - -[3] Move Constructor -Takes an existing D3D access lock from another `scoped_d3d_access_lock` object. Construction does not block. - -## ~scoped_d3d_access_lock - -Releases the D3D access lock on the associated `accelerator_view` object. - -```cpp -~scoped_d3d_access_lock(); -``` - -## operator= - -Takes ownership of a D3D access lock from another `scoped_d3d_access_lock` object, releasing the previous lock. - -```cpp -scoped_d3d_access_lock& operator= (scoped_d3d_access_lock&& _Other); -``` - -### Parameters - -*_Other*
-The accelerator_view from which to move the D3D access lock. - -### Return Value - -A reference to this `scoped_accelerator_view_lock`. - -## See also - -[Concurrency::direct3d Namespace](concurrency-direct3d-namespace.md) diff --git a/docs/parallel/amp/reference/short-vector-structure.md b/docs/parallel/amp/reference/short-vector-structure.md deleted file mode 100644 index f35a36cbd38..00000000000 --- a/docs/parallel/amp/reference/short-vector-structure.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -description: "Learn more about: short_vector Structure" -title: "short_vector Structure" -ms.date: "11/04/2016" -f1_keywords: ["short_vector", "AMP_SHORT_VECTORS/short_vector", "AMP_SHORT_VECTORS/Concurrency::graphics::short_vector::short_vector Constructor"] -ms.assetid: e4f50b8f-1150-437d-b58c-79c5fb883708 ---- -# short_vector Structure - -short_vector provides metaprogramming definitions which are useful for programming short vectors generically. - -## Syntax - -```cpp -template< - typename _Scalar_type, - int _Size -> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -template<> -struct short_vector; -``` - -### Parameters - -*_Scalar_type*
- -*_Size*
- -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[short_vector::short_vector Constructor](#ctor)|| - -## Inheritance Hierarchy - -`short_vector` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## short_vector::short_vector Constructor - -```cpp -short_vector(); -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/short-vector-traits-structure.md b/docs/parallel/amp/reference/short-vector-traits-structure.md deleted file mode 100644 index 671761e5cdf..00000000000 --- a/docs/parallel/amp/reference/short-vector-traits-structure.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -description: "Learn more about: short_vector_traits Structure" -title: "short_vector_traits Structure" -ms.date: "11/04/2016" -f1_keywords: ["short_vector_traits", "AMP_SHORT_VECTORS/short_vector_traits", "AMP_SHORT_VECTORS/Concurrency::graphics::short_vector_traits::short_vector_traits", "AMP_SHORT_VECTORS/Concurrency::graphics::short_vector_traits::size Constant"] -ms.assetid: cd9492da-9e02-4a6e-9d50-b61252cdb460 ---- -# short_vector_traits Structure - -short_vector_traits allows retrieval of the underlying vector length and scalar type of a short vector type or a scalar type - -## Syntax - -```cpp -template< - typename T -> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -template<> -struct short_vector_traits; -``` - -### Parameters - -`T` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[short_vector_traits::short_vector_traits Constructor](#ctor)|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[short_vector_traits::size Constant](#size)|| - -## Inheritance Hierarchy - -`short_vector_traits` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## short_vector_traits::short_vector_traits Constructor - -```cpp -short_vector_traits(); -``` - -## short_vector_traits::size Constant - -```cpp -static int const size = 1; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/texture-class.md b/docs/parallel/amp/reference/texture-class.md deleted file mode 100644 index 67d5044baea..00000000000 --- a/docs/parallel/amp/reference/texture-class.md +++ /dev/null @@ -1,579 +0,0 @@ ---- -title: "texture Class" -description: "Learn more about: texture Class" -ms.date: 11/04/2016 -f1_keywords: ["texture", "AMP_GRAPHICS/texture", "AMP_GRAPHICS/concurrency::graphics::texture::texture", "AMP_GRAPHICS/concurrency::graphics::texture::copy_to", "AMP_GRAPHICS/concurrency::graphics::texture::data", "AMP_GRAPHICS/concurrency::graphics::texture::get", "AMP_GRAPHICS/concurrency::graphics::texture::get_associated_accelerator_view", "AMP_GRAPHICS/concurrency::graphics::texture::get_depth_pitch", "AMP_GRAPHICS/concurrency::graphics::texture::get_row_pitch", "AMP_GRAPHICS/concurrency::graphics::texture::set", "AMP_GRAPHICS/concurrency::graphics::texture::rank", "AMP_GRAPHICS/concurrency::graphics::texture::associated_accelerator_view", "AMP_GRAPHICS/concurrency::graphics::texture::depth_pitch", "AMP_GRAPHICS/concurrency::graphics::texture::row_pitch"] ---- -# texture Class - -A texture is a data aggregate on an `accelerator_view` in the extent domain. It is a collection of variables, one for each element in an extent domain. Each variable holds a value corresponding to C++ primitive type ( **`unsigned int`**, **`int`**, **`float`**, **`double`**), a scalar type (`norm`, or `unorm`), or a short vector type. - -## Syntax - -```cpp -template -class texture; -``` - -### Parameters - -*value_type*
-The type of the elements in the texture. - -*_Rank*
-The rank of the texture. - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`scalar_type`|Scalar types.| -|`value_type`|Value types.| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[texture Constructor](#ctor)|Initializes a new instance of the `texture` class.| -|[~texture Destructor](#ctor)|Destroys the `texture` object.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[copy_to](#copy_to)|Copies the `texture` object to the destination, by doing a deep copy.| -|[data](#data)|Returns a CPU pointer to the raw data of this texture.| -|[get](#get)|Returns the value of the element at the specified index.| -|[get_associated_accelerator_view](#get_associated_accelerator_view)|Returns the [accelerator_view](accelerator-view-class.md) that is the preferred target for this texture to be copied to.| -|[get_depth_pitch](#get_depth_pitch)|Returns the number of bytes between each depth slice in a 3D staging texture on the CPU.| -|[get_row_pitch](#get_row_pitch)|Returns the number of bytes between each row in a 2D or 3D staging texture on the CPU.| -|[set](#set)|Sets the value of the element at the specified index.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[operator()](#operator_call)|Returns the element value that is specified by the parameters.| -|[operator\[\]](#operator_at)|Returns the element that is at the specified index.| -|[operator=](#operator_eq)|Copies the specified [texture](texture-class.md) object to this one.| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[rank Constant](#rank)|Gets the rank of the `texture` object.| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|[associated_accelerator_view](#associated_accelerator_view)|Gets the [accelerator_view](accelerator-view-class.md) that is the preferred target for this texture to be copied to.| -|[depth_pitch](#depth_pitch)|Gets the number of bytes between each depth slice in a 3D staging texture on the CPU.| -|[row_pitch](#row_pitch)|Gets the number of bytes between each row in a 2D or 3D staging texture on the CPU.| - -## Inheritance Hierarchy - -`_Texture_base` - -`texture` - -## Requirements - -**Header:** amp_graphics.h - -**Namespace:** Concurrency::graphics - -## ~texture - -Destroys the `texture` object. - -```cpp -~texture() restrict(cpu); -``` - -## associated_accelerator_view - -Gets the [accelerator_view](accelerator-view-class.md) that is the preferred target for this texture to be copied to. - -```cpp -__declspec(property(get= get_associated_accelerator_view)) Concurrency::accelerator_view associated_accelerator_view; -``` - -## copy_to - -Copies the `texture` object to the destination, by doing a deep copy. - -```cpp -void copy_to(texture& _Dest) const; -void copy_to(writeonly_texture_view& _Dest) const; -``` - -### Parameters - -*_Dest*
-The object to copy to. - -*_Rank*
-The rank of the texture. - -*value_type*
-The type of the elements in the texture. - -## data - -Returns a CPU pointer to the raw data of this texture. - -```cpp -void* data() restrict(cpu); - -const void* data() const restrict(cpu); -``` - -### Return Value - -A pointer to the raw data of the texture. - -## depth_pitch - -Gets the number of bytes between each depth slice in a 3D staging texture on the CPU. - -```cpp -__declspec(property(get= get_depth_pitch)) unsigned int depth_pitch; -``` - -## get - -Returns the value of the element at the specified index. - -```cpp -const value_type get(const index<_Rank>& _Index) const restrict(amp); -``` - -### Parameters - -*_Index*
-The index of the element. - -### Return Value - -The value of the element at the specified index. - -## get_associated_accelerator_view - -Returns the accelerator_view that is the preferred target for this texture to be copied to. - -```cpp -Concurrency::accelerator_view get_associated_accelerator_view() const restrict(cpu); -``` - -### Return Value - -The [accelerator_view](accelerator-view-class.md) that is the preferred target for this texture to be copied to. - -## get_depth_pitch - -Returns the number of bytes between each depth slice in a 3D staging texture on the CPU. - -```cpp -unsigned int get_depth_pitch() const restrict(cpu); -``` - -### Return Value - -The number of bytes between each depth slice in a 3D staging texture on the CPU. - -## get_row_pitch - -Returns the number of bytes between each row in a 2-dimensional staging texture, or between each row of a depth slice in 3-dimensional staging texture. - -```cpp -unsigned int get_row_pitch() const restrict(cpu); -``` - -### Return Value - -The number of bytes between each row in a 2-dimensional staging texture, or between each row of a depth slice in 3-dimensional staging texture. - -## operator() - -Returns the element value that is specified by the parameters. - -```cpp -const value_type operator() ( - const index<_Rank>& _Index) const restrict(amp); - -const value_type operator() ( - int _I0) const restrict(amp); - -const value_type operator() ( - int _I0, - int _I1) const restrict(amp); - -const value_type operator() ( - int _I0, - int _I1, - int _I2) const restrict(amp); -``` - -### Parameters - -*_Index*
-The index. - -*_I0*
-The most-significant component of the index. - -*_I1*
-The next-to-most-significant component of the index. - -*_I2*
-The least-significant component of the index. - -*_Rank*
-The rank of the index. - -### Return Value - -The element value that is specified by the parameters. - -## operator[] - -Returns the element that is at the specified index. - -```cpp -const value_type operator[] (const index<_Rank>& _Index) const restrict(amp); - -const value_type operator[] (int _I0) const restrict(amp); -``` - -### Parameters - -*_Index*
-The index. - -*_I0*
-The index. - -### Return Value - -The element that is at the specified index. - -## operator= - -Copies the specified [texture](texture-class.md) object to this one. - -```cpp -texture& operator= ( - const texture& _Other); - -texture& operator= ( - texture&& _Other); -``` - -### Parameters - -*_Other*
-The `texture` object to copy from. - -### Return Value - -A reference to this `texture` object. - -## rank - -Gets the rank of the `texture` object. - -```cpp -static const int rank = _Rank; -``` - -## row_pitch - -Gets the number of bytes between each row in a 2D or 3D staging texture on the CPU. - -```cpp -__declspec(property(get= get_row_pitch)) unsigned int row_pitch; -``` - -## set - -Sets the value of the element at the specified index. - -```cpp -void set( - const index<_Rank>& _Index, - const value_type& value) restrict(amp); -``` - -### Parameters - -*_Index*
-The index of the element. - -*_Rank*
-The rank of the index. - -*value*
-The new value of the element. - -## texture - -Initializes a new instance of the `texture` class. - -```cpp -texture(const Concurrency::extent<_Rank>& _Ext) restrict(cpu); - -texture(int _E0) restrict(cpu); - -texture(int _E0, int _E1) restrict(cpu); - -texture(int _E0, int _E1, int _E2) restrict(cpu); - -texture( - const Concurrency::extent<_Rank>& _Ext, - const Concurrency::accelerator_view& _Av) restrict(cpu); - -texture( - int _E0, - const Concurrency::accelerator_view& _Av) restrict(cpu); - -texture( - int _E0, - int _E1, - const Concurrency::accelerator_view& _Av) restrict(cpu); - -texture( - int _E0, - int _E1, - int _E2, - const Concurrency::accelerator_view& _Av) restrict(cpu); - -template -texture( - const Concurrency::extent<_Rank>& _Ext, - _Input_iterator _Src_first, - _Input_iterator _Src_last) restrict(cpu); - -template -texture( - int _E0, _Input_iterator _Src_first, _Input_iterator _Src_last) restrict(cpu); - -template -texture( - int _E0, - int _E1, - _Input_iterator _Src_first, - _Input_iterator _Src_last) restrict(cpu); - -template -texture( - int _E0, - int _E1, - int _E2, - _Input_iterator _Src_first, - _Input_iterator _Src_last) restrict(cpu); - -template -texture( - const Concurrency::extent<_Rank>& _Ext, - _Input_iterator _Src_first, - _Input_iterator _Src_last, - const Concurrency::accelerator_view& _Av) restrict(cpu); - -template -texture( - int _E0, - _Input_iterator _Src_first, - _Input_iterator _Src_last, - const Concurrency::accelerator_view& _Av) restrict(cpu); - -template -texture( - int _E0, - int _E1, - _Input_iterator _Src_first, - _Input_iterator _Src_last, - const Concurrency::accelerator_view& _Av) restrict(cpu); - -template -texture( - int _E0, - int _E1, - int _E2, - _Input_iterator _Src_first, - _Input_iterator _Src_last, - const Concurrency::accelerator_view& _Av) restrict(cpu)) ; - -texture( - int _E0, - unsigned int _Bits_per_scalar_element) restrict(cpu); - -texture( - int _E0, - int _E1, - unsigned int _Bits_per_scalar_element) restrict(cpu); - -texture( - int _E0, - int _E1, - int _E2, - unsigned int _Bits_per_scalar_element) restrict(cpu); - -texture( - const Concurrency::extent<_Rank>& _Ext, - unsigned int _Bits_per_scalar_element, - const Concurrency::accelerator_view& _Av) restrict(cpu); - -texture( - int _E0, - unsigned int _Bits_per_scalar_element, - const Concurrency::accelerator_view& _Av) ; - -texture( - int _E0, - int _E1, - unsigned int _Bits_per_scalar_element, - const Concurrency::accelerator_view& _Av) restrict(cpu); - -texture( - int _E0, - int _E1, - int _E2, - unsigned int _Bits_per_scalar_element, - const Concurrency::accelerator_view& _Av) restrict(cpu); - -texture( - const Concurrency::extent<_Rank>& _Ext, - _In_ void* _Source, - unsigned int _Src_byte_size, - unsigned int _Bits_per_scalar_element) restrict(cpu); - -texture( - int _E0, - _In_ void* _Source, - unsigned int _Src_byte_size, - unsigned int _Bits_per_scalar_element) restrict(cpu); - -texture( - int _E0, - int _E1, - _In_ void* _Source, - unsigned int _Src_byte_size, - unsigned int _Bits_per_scalar_element) restrict(cpu); - -texture( - int _E0, - int _E1, - int _E2, - _In_ void* _Source, - unsigned int _Src_byte_size, - unsigned int _Bits_per_scalar_element) restrict(cpu); - -texture( - const Concurrency::extent<_Rank>& _Ext, - _In_ void* _Source, - unsigned int _Src_byte_size, - unsigned int _Bits_per_scalar_element, - const Concurrency::accelerator_view& _Av) ; - -texture( - int _E0, - _In_ void* _Source, - unsigned int _Src_byte_size, - unsigned int _Bits_per_scalar_element, - const Concurrency::accelerator_view& _Av) restrict(cpu); - -texture( - int _E0, - int _E1, - _In_ void* _Source, - unsigned int _Src_byte_size, - unsigned int _Bits_per_scalar_element, - const Concurrency::accelerator_view& _Av) restrict(cpu); - -texture( - int _E0, - int _E1, - int _E2, - _In_ void* _Source, - unsigned int _Src_byte_size, - unsigned int _Bits_per_scalar_element, - const Concurrency::accelerator_view& _Av) restrict(cpu); - -texture( - const texture& _Src, - const Concurrency::accelerator_view& _Acc_view); - -texture( - texture&& _Other); - -texture( - const Concurrency::extent<_Rank>& _Ext, - unsigned int _Bits_per_scalar_element, - const Concurrency::accelerator_view& _Av); - -texture( - const texture& _Src); -``` - -### Parameters - -*_Acc_view*
-The [accelerator_view](accelerator-view-class.md) that specifies the location of the texture. - -*_Av*
-The [accelerator_view](accelerator-view-class.md) that specifies the location of the texture. - -*_Associated_av*
-An accelerator_view that specifies the preferred target for copies to or from this texture. - -*_Bits_per_scalar_element*
-The number of bits per each scalar element in the underlying scalar type of the texture. In general, supported value are 8, 16, 32, and 64. If 0 is specified, the number of bits is the same as the underlying scalar_type. 64 is only valid for double-based textures. - -*_Ext*
-The extent in each dimension of the texture. - -*_E0*
-The most significant component of the texture. - -*_E1*
-The next-to-most-significant component of the texture. - -*_E2*
-The least significant component of the extent of the texture. - -*_Input_iterator*
-The type of the input iterator. - -*_Mipmap_levels*
-The number of mipmap levels in the underlying texture. If 0 is specified, the texture will have the full range of mipmap levels down to the smallest possible size for the specified extent. - -*_Rank*
-The rank of the extent. - -*_Source*
-A pointer to a host buffer. - -*_Src*
-To texture to copy. - -*_Src_byte_size*
-The number of bytes in the source buffer. - -*_Src_first*
-A beginning iterator into the source container. - -*_Src_last*
-An ending iterator into the source container. - -*_Other*
-Other data source. - -*_Rank*
-The rank of the section. - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/texture-view-class.md b/docs/parallel/amp/reference/texture-view-class.md deleted file mode 100644 index 2ab64c9f966..00000000000 --- a/docs/parallel/amp/reference/texture-view-class.md +++ /dev/null @@ -1,479 +0,0 @@ ---- -description: "Learn more about: texture_view Class" -title: "texture_view Class" -ms.date: "11/04/2016" -f1_keywords: ["texture_view", "AMP_GRAPHICS/texture_view", "AMP_GRAPHICS/Concurrency::graphics::texture_view::texture_view", "AMP_GRAPHICS/Concurrency::graphics::texture_view::gather_alpha", "AMP_GRAPHICS/Concurrency::graphics::texture_view::gather_blue", "AMP_GRAPHICS/Concurrency::graphics::texture_view::gather_green", "AMP_GRAPHICS/Concurrency::graphics::texture_view::gather_red", "AMP_GRAPHICS/Concurrency::graphics::texture_view::get", "AMP_GRAPHICS/Concurrency::graphics::texture_view::sample", "AMP_GRAPHICS/Concurrency::graphics::texture_view::set", "AMP_GRAPHICS/Concurrency::graphics::texture_view::value_type"] -ms.assetid: 6ec2e289-1626-4727-9592-07981cf1d27d ---- -# texture_view Class - -Provides read access and write access to a texture. `texture_view` can only be used to read textures whose value type is **`int`**, **`unsigned int`**, or **`float`** that have default 32-bit bpse. To read other texture formats, use `texture_view`. - -## Syntax - -```cpp -template -class texture_view; - -template -class texture_view - : public details::_Texture_base; - -template -class texture_view - : public details::_Texture_base; -``` - -### Parameters - -*value_type*
-The type of the elements in the texture aggregate. - -*_Rank*
-The rank of the `texture_view`. - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|The type of the elements in the texture aggregates.| -|`coordinates_type`|The type of the coordinate used to specify a texel in the `texture_view`—that is, a `short_vector` that has the same rank as the associated texture that has a value type of **`float`**.| -|`gather_return_type`|The return type used for gather operations—that is, a rank 4 `short_vector` that holds the four homogeneous color components gathered from the four texel values sampled.| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[texture_view Constructor](#ctor)|Overloaded. Constructs a `texture_view` instance.| -|[~texture_view Destructor](#ctor)|Destroys the `texture_view` instance.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[gather_alpha](#gather_alpha)|Overloaded. Samples the texture at the specified coordinates by using the specified sampling configuration and returns the alpha (w) components of the four sampled texels.| -|[gather_blue](#gather_blue)|Overloaded. Samples the texture at the specified coordinates by using the specified sampling configuration and returns the blue (z) components of the four sampled texels.| -|[gather_green](#gather_green)|Overloaded. Samples the texture at the specified coordinates by using the specified sampling configuration and returns the green (y) components of the four sampled texels.| -|[gather_red](#gather_red)|Overloaded. Samples the texture at the specified coordinates by using the specified sampling configuration and returns the red (x) components of the four sampled texels.| -|[get](#get)|Overloaded. Gets the element value by index.| -|[sample](#sample)|Overloaded. Samples the texture at the specified coordinates and level of detail by using the specified sampling configuration.| -|[set](#set)|Sets the value of an element by index.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[operator()](#operator_call)|Overloaded. Gets the element value by index.| -|[operator\[\]](#operator_at)|Overloaded. Gets the element value by index.| -|[operator=](#operator_eq)|Overloaded. Assignment operator.| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|[value_type](#value_type)|The value type of the elements of the `texture_view`.| - -## Inheritance Hierarchy - -`_Texture_base` - -`texture_view` - -## Requirements - -**Header:** amp_graphics.h - -**Namespace:** concurrency::graphics - -## ~texture_view - -Destroys the `texture_view` instance. - -```cpp -~texture_view() restrict(amp, cpu); -``` - -## texture_view - -Constructs a `texture_view` instance. - -```cpp -texture_view(// [1] constructor - texture& _Src) restrict(amp); - -texture_view(// [2] constructor - texture& _Src, - unsigned int _Mipmap_level = 0) restrict(cpu); - -texture_view(// [3] constructor - const texture& _Src) restrict(amp); - -texture_view(// [4] constructor - const texture& _Src, - unsigned int _Most_detailed_mip, - unsigned int _Mip_levels) restrict(cpu); - -texture_view(// [5] copy constructor - const texture_view& _Other) restrict(amp, cpu); - -texture_view(// [6] copy constructor - const texture_view& _Other) restrict(amp, cpu); - -texture_view(// [7] copy constructor - const texture_view& _Other, - unsigned int _Most_detailed_mip, - unsigned int _Mip_levels) restrict(cpu); -``` - -### Parameters - -*_Src*
-[1, 2] Constructor -The `texture` on which the writable `texture_view` is created. - -[3, 4] Constructor -The `texture` on which the non-writable `texture_view` is created. - -*_Other*
-[5] Copy Constructor -The source writable `texture_view`. - -[6, 7] Copy Constructor -The source non-writable `texture_view`. - -*_Mipmap_level*
-The specific mipmap level on the source `texture` that this writeable `texture_view` binds to. The default value is 0, which represents the top level (most detailed) mip level. - -*_Most_detailed_mip*
-Top level (most detailed) mip level for the view, relative to the specified `texture_view` object. - -*_Mip_levels*
-The number of mipmap levels accessible through the `texture_view`. - -## gather_red - -Samples the texture at the specified coordinates by using the specified sampling configuration and returns the red (x) components of the four sampled texels. - -```cpp -const gather_return_type gather_red( - const sampler& _Sampler, - const coordinates_type& _Coord) const restrict(amp); - -template< - address_mode _Address_mode = address_clamp -> -const gather_return_type gather_red( - const coordinates_type& _Coord) const restrict(amp); -``` - -### Parameters - -*_Address_mode*
-The address mode to use to sample the `texture_view`. The address mode is the same for all dimensions. - -*_Sampler*
-The sampler configuration to use to sample the `texture_view`. - -*_Coord*
-The coordinates to take the sample from. Fractional coordinate values are used to interpolate between sample texels. - -### Return Value - -A rank 4 short vector containing the red (x) component of the 4 sampled texel values. - -## gather_green - -Samples the texture at the specified coordinates by using the specified sampling configuration and returns the green (y) components of the four sampled texels. - -```cpp -const gather_return_type gather_green( - const sampler& _Sampler, - const coordinates_type& _Coord) const restrict(amp); - -template< - address_mode _Address_mode = address_clamp -> -const gather_return_type gather_green( - const coordinates_type& _Coord) const restrict(amp); -``` - -### Parameters - -*_Address_mode*
-The address mode to use to sample the `texture_view`. The address mode is the same for all dimensions. - -*_Sampler*
-The sampler configuration to use to sample the `texture_view`. - -*_Coord*
-The coordinates to take the sample from. Fractional coordinate values are used to interpolate between sample texels. - -### Return Value - -A rank 4 short vector containing the green (y) component of the 4 sampled texel values. - -## gather_blue - -Samples the texture at the specified coordinates by using the specified sampling configuration and returns the blue (z) components of the four sampled texels. - -```cpp -const gather_return_type gather_blue( - const sampler& _Sampler, - const coordinates_type& _Coord) const restrict(amp); - -template< - address_mode _Address_mode = address_clamp -> -const gather_return_type gather_blue( - const coordinates_type& _Coord) const restrict(amp); -``` - -### Parameters - -*_Address_mode*
-The address mode to use to sample the `texture_view`. The address mode is the same for all dimensions. - -*_Sampler*
-The sampler configuration to use to sample the `texture_view`. - -*_Coord*
-The coordinates to take the sample from. Fractional coordinate values are used to interpolate between sample texels. - -### Return Value - -A rank 4 short vector containing the red (x) component of the 4 sampled texel values. - -## gather_alpha - -Samples the texture at the specified coordinates by using the specified sampling configuration and returns the alpha (w) components of the four sampled texels. - -```cpp -const gather_return_type gather_alpha( - const sampler& _Sampler, - const coordinates_type& _Coord) const restrict(amp); - -template< - address_mode _Address_mode = address_clamp -> -const gather_return_type gather_alpha( - const coordinates_type& _Coord) const restrict(amp); -``` - -### Parameters - -*_Address_mode*
-The address mode to use to sample the `texture_view`. The address mode is the same for all dimensions. - -*_Sampler*
-The sampler configuration to use to sample the `texture_view`. - -*_Coord*
-The coordinates to take the sample from. Fractional coordinate values are used to interpolate between sample texels. - -### Return Value - -A rank 4 short vector containing the alpha (w) component of the 4 sampled texel values. - -## get - -Gets the value of the element at the specified index. - -```cpp -const value_type get( - const index<_Rank>& _Index) const restrict(amp); - -value_type get( - const index<_Rank>& _Index, - unsigned int _Mip_level = 0) const restrict(amp); -``` - -### Parameters - -*_Index*
-The index of the element to get, possibly multi-dimensional. - -*_Mip_level*
-The mipmap level from which we should get the value. The default value 0 represents the most detailed mipmap level. - -### Return Value - -The value of the element. - -## operator= - -Assigns a view of the same texture as the specified `texture_view` to this `texture_view` instance. - -```cpp -texture_view& operator= (// [1] copy constructor - const texture_view& _Other) restrict(amp, cpu); - -texture_view& operator= (// [2] copy constructor - const texture_view& _Other) restrict(cpu); - -texture_view& operator= (// [3] copy constructor - const texture_view& _Other) restrict(amp, cpu); -``` - -### Parameters - -*_Other*
-[1, 2] Copy Constructor -A writable `texture_view` object. - -[3] Copy Constructor -A non-writable `texture_view` object. - -### Return Value - -A reference to this `texture_view` instance. - -## operator[] - -Returns the element value by index. - -```cpp -const value_type operator[] (const index<_Rank>& _Index) const restrict(amp); - -const value_type operator[] (int _I0) const restrict(amp); - -value_type operator[] (const index<_Rank>& _Index) const restrict(amp); - -value_type operator[] (int _I0) const restrict(amp); -``` - -### Parameters - -*_Index*
-The index, possibly multi-dimensional. - -*_I0*
-The one-dimensional index. - -### Return Value - -The element value indexed by `_Index`. - -## operator() - -Returns the element value by index. - -```cpp -const value_type operator() ( - const index<_Rank>& _Index) const restrict(amp); - -const value_type operator() ( - int _I0) const restrict(amp); - -const value_type operator() ( - int _I0, int _I1) const restrict(amp); - -const value_type operator() ( - int _I0, - int _I1, - int _I2) const restrict(amp); - -value_type operator() ( - const index<_Rank>& _Index) const restrict(amp); - -value_type operator() ( - int _I0) const restrict(amp); - -value_type operator() ( - int _I0, - int _I1) const restrict(amp); - -value_type operator() ( - int _I0, - int _I1, - int _I2) const restrict(amp); -``` - -### Parameters - -*_Index*
-The index, possibly multi-dimensional. - -*_I0*
-The most-significant component of the index. - -*_I1*
-The next-to-most-significant component of the index. - -*_I2*
-The least-significant component of the index. - -### Return Value - -The element value indexed by `_Index`. - -## sample - -Samples the texture at the specified coordinates and level of detail by using the specified sampling configuration. - -```cpp -value_type sample( - const sampler& _Sampler, - const coordinates_type& _Coord, - float _Level_of_detail = 0.0f) const restrict(amp); - -template< - filter_mode _Filter_mode = filter_linear, - address_mode _Address_mode = address_clamp -> -value_type sample( - const coordinates_type& _Coord, - float _Level_of_detail = 0.0f) const restrict(amp); -``` - -### Parameters - -*_Filter_mode*
-The filter mode to use to sample the texture_view. The filter mode is the same for the minimization, maximization, and mipmap filters. - -*_Address_mode*
-The address mode to use to sample the texture_view. The address mode is the same for all dimensions. - -*_Sampler*
-The sampler configuration to use to sample the texture_view. - -*_Coord*
-The coordinates to take the sample from. Fractional coordinate values are used to interpolate between texel values. - -*_Level_of_detail*
-The value specifies the mipmap level to sample from. Fractional values are used to interpolate between two mipmap levels. The default level of detail is 0, which represents the most detailed mip level. - -### Return Value - -The interpolated sample value. - -## set - -Sets the value of the element at the specified index to the specified value. - -```cpp -void set( - const index<_Rank>& _Index, - const value_type& value) const restrict(amp); -``` - -### Parameters - -*_Index*
-The index of the element to set, possibly multi-dimensional. - -*value*
-The value to set the element to. - -## value_type - -The value type of the elements of the texture_view. - -```cpp -typedef typename const value_type value_type; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/tile-barrier-class.md b/docs/parallel/amp/reference/tile-barrier-class.md deleted file mode 100644 index d9c181b68bd..00000000000 --- a/docs/parallel/amp/reference/tile-barrier-class.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: "tile_barrier Class" -description: "Learn more about: tile_barrier Class" -ms.date: "03/27/2019" -f1_keywords: ["tile_barrier", "AMP/tile_barrier", "AMP/Concurrency::tile_barrier::tile_barrier::tile_barrier", "AMP/Concurrency::tile_barrier::tile_barrier::wait", "AMP/Concurrency::tile_barrier::tile_barrier::wait_with_all_memory_fence", "AMP/Concurrency::tile_barrier::tile_barrier::wait_with_global_memory_fence", "AMP/Concurrency::tile_barrier::tile_barrier::wait_with_tile_static_memory_fence"] -helpviewer_keywords: ["tile_barrier class"] ---- -# tile_barrier Class - -Synchronizes the execution of threads that are running in the thread group (the tile) by using `wait` methods. Only the runtime can instantiate this class. - -## Syntax - -```cpp -class tile_barrier; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[tile_barrier Constructor](#ctor)|Initializes a new instance of the `tile_barrier` class.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[wait](#wait)|Instructs all threads in the thread group (tile) to stop executing until all threads in the tile have finished waiting.| -|[wait_with_all_memory_fence](#wait_with_all_memory_fence)|Blocks execution of all threads in a tile until all memory accesses have been completed and all threads in the tile have reached this call.| -|[wait_with_global_memory_fence](#wait_with_global_memory_fence)|Blocks execution of all threads in a tile until all global memory accesses have been completed and all threads in the tile have reached this call.| -|[wait_with_tile_static_memory_fence](#wait_with_tile_static_memory_fence)|Blocks execution of all threads in a tile until all `tile_static` memory accesses have been completed and all threads in the tile have reached this call.| - -## Inheritance Hierarchy - -`tile_barrier` - -## Requirements - -**Header:** amp.h - -**Namespace:** Concurrency - -## tile_barrier Constructor - -Initializes a new instance of the class by copying an existing one. - -### Syntax - -```cpp -tile_barrier( - const tile_barrier& _Other ) restrict(amp,cpu); -``` - -### Parameters - -*_Other*
-The `tile_barrier` object to copy. - -## wait - -Instructs all threads in the thread group (tile) to stop execution until all threads in the tile have finished waiting. - -### Syntax - -```cpp -void wait() const restrict(amp); -``` - -## wait_with_all_memory_fence - -Blocks execution of all threads in a tile until all threads in a tile have reached this call. This ensures that all memory accesses are visible to other threads in the thread tile, and have been executed in program order. - -### Syntax - -```cpp -void wait_with_all_memory_fence() const restrict(amp); -``` - -## wait_with_global_memory_fence - -Blocks execution of all threads in a tile until all threads in a tile have reached this call. This ensures that all global memory accesses are visible to other threads in the thread tile, and have been executed in program order. - -### Syntax - -```cpp -void wait_with_global_memory_fence() const restrict(amp); -``` - -## wait_with_tile_static_memory_fence - -Blocks execution of all threads in a tile until all threads in a tile have reached this call. This ensures that `tile_static` memory accesses are visible to other threads in the thread tile, and have been executed in program order. - -### Syntax - -```cpp -void wait_with_tile_static_memory_fence() const restrict(amp); -``` - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/tiled-extent-class.md b/docs/parallel/amp/reference/tiled-extent-class.md deleted file mode 100644 index ba3df5b31f3..00000000000 --- a/docs/parallel/amp/reference/tiled-extent-class.md +++ /dev/null @@ -1,218 +0,0 @@ ---- -description: "Learn more about: tiled_extent Class" -title: "tiled_extent Class" -ms.date: "11/04/2016" -f1_keywords: ["tiled_extent", "AMP/tiled_extent", "AMP/Concurrency::tiled_extent::tiled_extent", "AMP/Concurrency::tiled_extent::get_tile_extent", "AMP/Concurrency::tiled_extent::pad", "AMP/Concurrency::tiled_extent::truncate", "AMP/Concurrency::tiled_extent::tile_dim0", "AMP/Concurrency::tiled_extent::tile_dim1", "AMP/Concurrency::tiled_extent::tile_dim2", "AMP/Concurrency::tiled_extent::tile_extent"] -ms.assetid: 671ecaf8-c7b0-4ac8-bbdc-e30bd92da7c0 ---- -# tiled_extent Class - -A `tiled_extent` object is an `extent` object of one to three dimensions that subdivides the extent space into one-, two-, or three-dimensional tiles. - -## Syntax - -```cpp -template < - int _Dim0, - int _Dim1, - int _Dim2 -> -class tiled_extent : public Concurrency::extent<3>; - -template < - int _Dim0, - int _Dim1 -> -class tiled_extent<_Dim0, _Dim1, 0> : public Concurrency::extent<2>; - -template < - int _Dim0 -> -class tiled_extent<_Dim0, 0, 0> : public Concurrency::extent<1>; -``` - -### Parameters - -*_Dim0*
-The length of the most significant dimension. - -*_Dim1*
-The length of the next-to-most significant dimension. - -*_Dim2*
-The length of the least significant dimension. - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[tiled_extent Constructor](#ctor)|Initializes a new instance of the `tiled_extent` class.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[get_tile_extent](#get_tile_extent)|Returns an `extent` object that captures the values of the `tiled_extent` template arguments `_Dim0`, `_Dim1`, and `_Dim2`.| -|[pad](#pad)|Returns a new `tiled_extent` object with extents adjusted up to be evenly divisible by the tile dimensions.| -|[truncate](#truncate)|Returns a new `tiled_extent` object with extents adjusted down to be evenly divisible by the tile dimensions.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[operator=](#operator_eq)|Copies the contents of the specified `tiled_index` object into this one.| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[tile_dim0 Constant](#tile_dim0)|Stores the length of the most significant dimension.| -|[tile_dim1 Constant](#tile_dim1)|Stores the length of the next-to-most significant dimension.| -|[tile_dim2 Constant](#tile_dim2)|Stores the length of the least significant dimension.| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|[tile_extent](#tile_extent)|Gets an `extent` object that captures the values of the `tiled_extent` template arguments `_Dim0`, `_Dim1`, and `_Dim2`.| - -## Inheritance Hierarchy - -`extent` - -`tiled_extent` - -## Requirements - -**Header:** amp.h - -**Namespace:** Concurrency - -## tiled_extent Constructor - -Initializes a new instance of the `tiled_extent` class. - -### Syntax - -```cpp -tiled_extent(); - -tiled_extent( - const Concurrency::extent& _Other ); - -tiled_extent( - const tiled_extent& _Other ); -``` - -### Parameters - -*_Other*
-The `extent` or `tiled_extent` object to copy. - -## get_tile_extent - -Returns an `extent` object that captures the values of the `tiled_extent` template arguments `_Dim0`, `_Dim1`, and `_Dim2`. - -### Syntax - -```cpp -Concurrency::extent get_tile_extent() const restrict(amp,cpu); -``` - -### Return Value - -An `extent` object that captures the dimensions of this `tiled_extent` instance. - -## pad - -Returns a new `tiled_extent` object with extents adjusted up to be evenly divisible by the tile dimensions. - -### Syntax - -```cpp -tiled_extent pad() const; -``` - -### Return Value - -The new `tiled_extent` object, by value. - -## truncate - -Returns a new `tiled_extent` object with extents adjusted down to be evenly divisible by the tile dimensions. - -### Syntax - -```cpp -tiled_extent truncate() const; -``` - -### Return Value - -Returns a new `tiled_extent` object with extents adjusted down to be evenly divisible by the tile dimensions. - -## operator= - -Copies the contents of the specified `tiled_index` object into this one. - -### Syntax - -```cpp -tiled_extent& operator= ( - const tiled_extent& _Other ) restrict (amp, cpu); -``` - -### Parameters - -*_Other*
-The `tiled_index` object to copy from. - -### Return Value - -A reference to this `tiled_index` instance. - -## tile_dim0 - -Stores the length of the most significant dimension. - -### Syntax - -```cpp -static const int tile_dim0 = _Dim0; -``` - -## tile_dim1 - -Stores the length of the next-to-most significant dimension. - -### Syntax - -```cpp -static const int tile_dim1 = _Dim1; -``` - -## tile_dim2 - -Stores the length of the least significant dimension. - -### Syntax - -```cpp -static const int tile_dim2 = _Dim2; -``` - -## tile_extent - -Gets an `extent` object that captures the values of the `tiled_extent` template arguments `_Dim0`, `_Dim1`, and `_Dim2`. - -### Syntax - -```cpp -__declspec(property(get= get_tile_extent)) Concurrency::extent tile_extent; -``` - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/tiled-index-class.md b/docs/parallel/amp/reference/tiled-index-class.md deleted file mode 100644 index 0ce0b17509e..00000000000 --- a/docs/parallel/amp/reference/tiled-index-class.md +++ /dev/null @@ -1,253 +0,0 @@ ---- -description: "Learn more about: tiled_index Class" -title: "tiled_index Class" -ms.date: "03/27/2019" -f1_keywords: ["tiled_index", "AMP/tiled_index", "AMP/Concurrency::tiled_index::tiled_index", "AMP/Concurrency::tiled_index::get_tile_extent", "AMP/Concurrency::tiled_index::barrier", "AMP/Concurrency::tiled_index::global", "AMP/Concurrency::tiled_index::local", "AMP/Concurrency::tiled_index::rank", "AMP/Concurrency::tiled_index::tile", "AMP/Concurrency::tiled_index::tile_dim0", "AMP/Concurrency::tiled_index::tile_dim1", "AMP/Concurrency::tiled_index::tile_dim2", "AMP/Concurrency::tiled_index::tile_origin", "AMP/Concurrency::tiled_index::tile_extent"] -helpviewer_keywords: ["tiled_index class"] -ms.assetid: 0ce2ae26-f1bb-4436-b473-a9e1b619bb38 ---- -# tiled_index Class - -Provides an index into a [tiled_extent](tiled-extent-class.md) object. This class has properties to access elements relative to the local tile origin and relative to the global origin. For more information about tiled spaces, see [Using Tiles](../../../parallel/amp/using-tiles.md). - -## Syntax - -```cpp -template < - int _Dim0, - int _Dim1 = 0, - int _Dim2 = 0 -> -class tiled_index : public _Tiled_index_base<3>; - -template < - int _Dim0, - int _Dim1 -> -class tiled_index<_Dim0, _Dim1, 0> : public _Tiled_index_base<2>; - -template < - int _Dim0 -> -class tiled_index<_Dim0, 0, 0> : public _Tiled_index_base<1>; -``` - -### Parameters - -*_Dim0*
-The length of the most significant dimension. - -*_Dim1*
-The length of the next-to-most significant dimension. - -*_Dim2*
-The length of the least significant dimension. - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[tiled_index Constructor](#ctor)|Initializes a new instance of the `tile_index` class.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[get_tile_extent](#tiled_index__get_tile_extent)|Returns an [extent](extent-class.md) object that has the values of the `tiled_index` template arguments `_Dim0`, `_Dim1`, and `_Dim2`.| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[barrier Constant](#tiled_index__barrier)|Stores a [tile_barrier](tile-barrier-class.md) object that represents a barrier in the current tile of threads.| -|[global Constant](#tiled_index__global)|Stores an [index](index-class.md) object of rank 1, 2, or 3 that represents the global index in a grid object.| -|[local Constant](#tiled_index__local)|Stores an `index` object of rank 1, 2, or 3 that represents the relative index in the current tile of a [tiled_extent](tiled-extent-class.md) object.| -|[rank Constant](#tiled_index__rank)|Stores the rank of the `tiled_index` object.| -|[tile Constant](#tiled_index__tile)|Stores an `index` object of rank 1, 2, or 3 that represents the coordinates of the current tile of a `tiled_extent` object.| -|[tile_dim0 Constant](#tiled_index__tile_dim0)|Stores the length of the most significant dimension.| -|[tile_dim1 Constant](#tiled_index__tile_dim1)|Stores the length of the next-to-most significant dimension.| -|[tile_dim2 Constant](#tiled_index__tile_dim2)|Stores the length of the least significant dimension.| -|[tile_origin Constant](#tiled_index__tile_origin)|Stores an `index` object of rank 1, 2, or 3 that represents the global coordinates of the origin of the current tile in a `tiled_extent` object.| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|[tile_extent](#tile_extent)|Gets an [extent](extent-class.md) object that has the values of the `tiled_index` template arguments `tiled_index` template arguments `_Dim0`, `_Dim1`, and `_Dim2`.| - -## Inheritance Hierarchy - -`_Tiled_index_base` - -`tiled_index` - -## Requirements - -**Header:** amp.h - -**Namespace:** Concurrency - -## tiled_index Constructor - -Initializes a new instance of the `tiled_index` class. - -### Syntax - -```cpp -tiled_index( - const index& _Global, - const index& _Local, - const index& _Tile, - const index& _Tile_origin, - const tile_barrier& _Barrier ) restrict(amp,cpu); - -tiled_index( - const tiled_index& _Other ) restrict(amp,cpu); -``` - -### Parameters - -*_Global*
-The global [index](index-class.md) of the constructed `tiled_index`. - -*_Local*
-The local [index](index-class.md) of the constructed `tiled_index` - -*_Tile*
-The tile [index](index-class.md) of the constructed `tiled_index` - -*_Tile_origin*
-The tile origin [index](index-class.md) of the constructed `tiled_index` - -*_Barrier*
-The [tile_barrier](tile-barrier-class.md) object of the constructed `tiled_index`. - -*_Other*
-The `tile_index` object to be copied to the constructed `tiled_index`. - -### Overloads - -|Name|Description| -|-|-| -|`tiled_index(const index& _Global, const index& _Local, const index& _Tile, const index& _Tile_origin, const tile_barrier& _Barrier restrict(amp,cpu);`|Initializes a new instance of the `tile_index` class from the index of the tile in global coordinates and the relative position in the tile in local coordinates. The `_Global` and `_Tile_origin` parameters are computed.| -|`tiled_index( const tiled_index& _Other) restrict(amp,cpu);`|Initializes a new instance of the `tile_index` class by copying the specified `tiled_index` object.| - -## get_tile_extent - -Returns an [extent](extent-class.md) object that has the values of the `tiled_index` template arguments `_Dim0`, `_Dim1`, and `_Dim2`. - -### Syntax - -```cpp -extent get_tile_extent()restrict(amp,cpu); -``` - -### Return Value - -An `extent` object that has the values of the `tiled_index` template arguments `_Dim0`, `_Dim1`, and `_Dim2`. - -## barrier - -Stores a [tile_barrier](tile-barrier-class.md) object that represents a barrier in the current tile of threads. - -### Syntax - -```cpp -const tile_barrier barrier; -``` - -## global - -Stores an [index](index-class.md) object of rank 1, 2, or 3 that represents the global index of an object. - -### Syntax - -```cpp -const index global; -``` - -## local - -Stores an [index](index-class.md) object of rank 1, 2, or 3 that represents the relative index in the current tile of a [tiled_extent](tiled-extent-class.md) object. - -### Syntax - -```cpp -const index local; -``` - -## rank - -Stores the rank of the `tiled_index` object. - -### Syntax - -```cpp -static const int rank = _Rank; -``` - -## tile - -Stores an [index](index-class.md) object of rank 1, 2, or 3 that represents the coordinates of the current tile of a [tiled_extent](tiled-extent-class.md) object. - -### Syntax - -```cpp -const index tile; -``` - -## tile_dim0 - -Stores the length of the most significant dimension. - -### Syntax - -```cpp -static const int tile_dim0 = _Dim0; -``` - -## tile_dim1 - -Stores the length of the next-to-most significant dimension. - -### Syntax - -```cpp -static const int tile_dim1 = _Dim1; -``` - -## tile_dim2 - -Stores the length of the least significant dimension. - -### Syntax - -```cpp -static const int tile_dim2 = _Dim2; -``` - -## tile_origin - -Stores an [index](index-class.md) object of rank 1, 2, or 3 that represents the global coordinates of the origin of the current tile within a [tiled_extent](tiled-extent-class.md) object. - -### Syntax - -```cpp -const index tile_origin -``` - -## tile_extent - -Gets an [extent](extent-class.md) object that has the values of the `tiled_index` template arguments `tiled_index` template arguments `_Dim0`, `_Dim1`, and `_Dim2`. - -### Syntax - -```cpp -__declspec(property(get= get_tile_extent)) extent tile_extent; -``` - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/uint-2-class.md b/docs/parallel/amp/reference/uint-2-class.md deleted file mode 100644 index b94c30a56f3..00000000000 --- a/docs/parallel/amp/reference/uint-2-class.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -description: "Learn more about: uint_2 Class" -title: "uint_2 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::uint_2::set_xy", "amp_short_vectors/Concurrency::graphics::uint_2::y", "amp_short_vectors/Concurrency::graphics::uint_2::gr", "amp_short_vectors/Concurrency::graphics::uint_2::operator-", "amp_short_vectors/Concurrency::graphics::uint_2::get_x", "amp_short_vectors/Concurrency::graphics::uint_2::operator-=", "amp_short_vectors/Concurrency::graphics::uint_2::r", "amp_short_vectors/Concurrency::graphics::uint_2::yx", "amp_short_vectors/Concurrency::graphics::uint_2::operator--", "amp_short_vectors/Concurrency::graphics::uint_2::set_yx", "amp_short_vectors/Concurrency::graphics::uint_2::operator=", "amp_short_vectors/Concurrency::graphics::uint_2::set_x", "amp_short_vectors/Concurrency::graphics::uint_2::operator+=", "amp_short_vectors/Concurrency::graphics::uint_2::get_y", "amp_short_vectors/Concurrency::graphics::uint_2::xy", "amp_short_vectors/Concurrency::graphics::uint_2::x", "amp_short_vectors/Concurrency::graphics::uint_2::get_xy", "amp_short_vectors/Concurrency::graphics::uint_2::set_y", "amp_short_vectors/Concurrency::graphics::uint_2", "amp_short_vectors/Concurrency::graphics::uint_2::operator*=", "amp_short_vectors/Concurrency::graphics::uint_2::get_yx", "amp_short_vectors/Concurrency::graphics::uint_2::operator/=", "amp_short_vectors/Concurrency::graphics::uint_2::g", "amp_short_vectors/Concurrency::graphics::uint_2::operator++", "amp_short_vectors/Concurrency::graphics::uint_2::rg"] -ms.assetid: 9fcc9129-72b1-4da7-9012-4d3be15f1c52 ---- -# uint_2 Class - -Represents a short vector of two unsigned integers. - -## Syntax - -```cpp -class uint_2; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[uint_2 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|uint_2::get_x|| -|uint_2::get_xy|| -|uint_2::get_y|| -|uint_2::get_yx|| -|uint_2::ref_g_Method|| -|uint_2::ref_r_Method|| -|uint_2::ref_x_Method|| -|uint_2::ref_y_Method|| -|uint_2::set_x|| -|uint_2::set_xy|| -|uint_2::set_y|| -|uint_2::set_yx|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|uint_2::operator--|| -|uint_2::operator%=|| -|uint_2::operator&=|| -|uint_2::operator*=|| -|uint_2::operator/=|| -|uint_2::operator^=|| -|uint_2::operator\|=|| -|uint_2::operator~|| -|uint_2::operator++|| -|uint_2::operator+=|| -|uint_2::operator<\<=|| -|uint_2::operator=|| -|uint_2::operator-=|| -|uint_2::operator>>=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#uint_2__size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|uint_2::g|| -|uint_2::gr|| -|uint_2::r|| -|uint_2::rg|| -|uint_2::x|| -|uint_2::xy|| -|uint_2::y|| -|uint_2::yx|| - -## Inheritance Hierarchy - -`uint_2` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## uint_2 - -Default constructor, initializes all elements with 0. - -```cpp -uint_2() restrict(amp, - cpu); - -uint_2( - unsigned int _V0, - unsigned int _V1) restrict(amp, - cpu); - -uint_2( - unsigned int _V) restrict(amp, - cpu); - -uint_2( - const uint_2& _Other) restrict(amp, - cpu); - -explicit inline uint_2( - const int_2& _Other) restrict(amp, - cpu); - -explicit inline uint_2( - const float_2& _Other) restrict(amp, - cpu); - -explicit inline uint_2( - const unorm_2& _Other) restrict(amp, - cpu); - -explicit inline uint_2( - const norm_2& _Other) restrict(amp, - cpu); - -explicit inline uint_2( - const double_2& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 2; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/uint-3-class.md b/docs/parallel/amp/reference/uint-3-class.md deleted file mode 100644 index f6eba197139..00000000000 --- a/docs/parallel/amp/reference/uint-3-class.md +++ /dev/null @@ -1,211 +0,0 @@ ---- -description: "Learn more about: uint_3 Class" -title: "uint_3 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::uint_3::get_xz", "amp_short_vectors/Concurrency::graphics::uint_3::set_yzx", "amp_short_vectors/Concurrency::graphics::uint_3::get_y", "amp_short_vectors/Concurrency::graphics::uint_3::get_yzx", "amp_short_vectors/Concurrency::graphics::uint_3::get_yz", "amp_short_vectors/Concurrency::graphics::uint_3::yzx", "amp_short_vectors/Concurrency::graphics::uint_3::get_z", "amp_short_vectors/Concurrency::graphics::uint_3::z", "amp_short_vectors/Concurrency::graphics::uint_3::xy", "amp_short_vectors/Concurrency::graphics::uint_3::gr", "amp_short_vectors/Concurrency::graphics::uint_3::operator=", "amp_short_vectors/Concurrency::graphics::uint_3::x", "amp_short_vectors/Concurrency::graphics::uint_3::gbr", "amp_short_vectors/Concurrency::graphics::uint_3::set_xy", "amp_short_vectors/Concurrency::graphics::uint_3::g", "amp_short_vectors/Concurrency::graphics::uint_3::set_yz", "amp_short_vectors/Concurrency::graphics::uint_3::br", "amp_short_vectors/Concurrency::graphics::uint_3::get_xyz", "amp_short_vectors/Concurrency::graphics::uint_3::b", "amp_short_vectors/Concurrency::graphics::uint_3::get_yxz", "amp_short_vectors/Concurrency::graphics::uint_3::set_zyx", "amp_short_vectors/Concurrency::graphics::uint_3::get_x", "amp_short_vectors/Concurrency::graphics::uint_3::rgb", "amp_short_vectors/Concurrency::graphics::uint_3::set_zy", "amp_short_vectors/Concurrency::graphics::uint_3::brg", "amp_short_vectors/Concurrency::graphics::uint_3::set_xyz", "amp_short_vectors/Concurrency::graphics::uint_3::xyz", "amp_short_vectors/Concurrency::graphics::uint_3::set_zxy", "amp_short_vectors/Concurrency::graphics::uint_3", "amp_short_vectors/Concurrency::graphics::uint_3::get_xy", "amp_short_vectors/Concurrency::graphics::uint_3::set_yx", "amp_short_vectors/Concurrency::graphics::uint_3::get_zyx", "amp_short_vectors/Concurrency::graphics::uint_3::get_zxy", "amp_short_vectors/Concurrency::graphics::uint_3::set_y", "amp_short_vectors/Concurrency::graphics::uint_3::yx", "amp_short_vectors/Concurrency::graphics::uint_3::grb", "amp_short_vectors/Concurrency::graphics::uint_3::operator+=", "amp_short_vectors/Concurrency::graphics::uint_3::set_x", "amp_short_vectors/Concurrency::graphics::uint_3::operator/=", "amp_short_vectors/Concurrency::graphics::uint_3::rbg", "amp_short_vectors/Concurrency::graphics::uint_3::set_zx", "amp_short_vectors/Concurrency::graphics::uint_3::set_z", "amp_short_vectors/Concurrency::graphics::uint_3::get_zx", "amp_short_vectors/Concurrency::graphics::uint_3::bgr", "amp_short_vectors/Concurrency::graphics::uint_3::get_xzy", "amp_short_vectors/Concurrency::graphics::uint_3::get_yx", "amp_short_vectors/Concurrency::graphics::uint_3::bg", "amp_short_vectors/Concurrency::graphics::uint_3::r", "amp_short_vectors/Concurrency::graphics::uint_3::xzy", "amp_short_vectors/Concurrency::graphics::uint_3::zyx", "amp_short_vectors/Concurrency::graphics::uint_3::set_xz", "amp_short_vectors/Concurrency::graphics::uint_3::rg", "amp_short_vectors/Concurrency::graphics::uint_3::zxy", "amp_short_vectors/Concurrency::graphics::uint_3::zy", "amp_short_vectors/Concurrency::graphics::uint_3::yz", "amp_short_vectors/Concurrency::graphics::uint_3::zx", "amp_short_vectors/Concurrency::graphics::uint_3::gb", "amp_short_vectors/Concurrency::graphics::uint_3::operator--", "amp_short_vectors/Concurrency::graphics::uint_3::set_yxz", "amp_short_vectors/Concurrency::graphics::uint_3::get_zy", "amp_short_vectors/Concurrency::graphics::uint_3::operator++", "amp_short_vectors/Concurrency::graphics::uint_3::operator-", "amp_short_vectors/Concurrency::graphics::uint_3::y", "amp_short_vectors/Concurrency::graphics::uint_3::xz", "amp_short_vectors/Concurrency::graphics::uint_3::rb", "amp_short_vectors/Concurrency::graphics::uint_3::operator*=", "amp_short_vectors/Concurrency::graphics::uint_3::yxz", "amp_short_vectors/Concurrency::graphics::uint_3::set_xzy", "amp_short_vectors/Concurrency::graphics::uint_3::operator-="] -ms.assetid: 5e22c277-9d4f-4a3a-b38c-a83d5fcab33c ---- -# uint_3 Class - -Represents a short vector of three unsigned integers. - -## Syntax - -```cpp -class uint_3; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[uint_3 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|uint_3::get_x|| -|uint_3::get_xy|| -|uint_3::get_xyz|| -|uint_3::get_xz|| -|uint_3::get_xzy|| -|uint_3::get_y|| -|uint_3::get_yx|| -|uint_3::get_yxz|| -|uint_3::get_yz|| -|uint_3::get_yzx|| -|uint_3::get_z|| -|uint_3::get_zx|| -|uint_3::get_zxy|| -|uint_3::get_zy|| -|uint_3::get_zyx|| -|uint_t::ref_b|| -|uint_t::ref_g|| -|uint_t::ref_r|| -|uint_t::ref_x|| -|uint_t::ref_y|| -|uint_t::ref_z|| -|uint_3::set_x|| -|uint_3::set_xy|| -|uint_3::set_xyz|| -|uint_3::set_xz|| -|uint_3::set_xzy|| -|uint_3::set_y|| -|uint_3::set_yx|| -|uint_3::set_yxz|| -|uint_3::set_yz|| -|uint_3::set_yzx|| -|uint_3::set_z|| -|uint_3::set_zx|| -|uint_3::set_zxy|| -|uint_3::set_zy|| -|uint_3::set_zyx|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|uint_3::operator--|| -|uint_3::operator%=|| -|uint_3::operator&=|| -|uint_3::operator*=|| -|uint_3::operator/=|| -|uint_3::operator^=|| -|uint_3::operator\|=|| -|uint_3::operator~|| -|uint_3::operator++|| -|uint_3::operator+=|| -|uint_3::operator<\<=|| -|uint_3::operator=|| -|uint_3::operator-=|| -|uint_3::operator>>=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#uint_3__size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|uint_3::b|| -|uint_3::bg|| -|uint_3::bgr|| -|uint_3::br|| -|uint_3::brg|| -|uint_3::g|| -|uint_3::gb|| -|uint_3::gbr|| -|uint_3::gr|| -|uint_3::grb|| -|uint_3::r|| -|uint_3::rb|| -|uint_3::rbg|| -|uint_3::rg|| -|uint_3::rgb|| -|uint_3::x|| -|uint_3::xy|| -|uint_3::xyz|| -|uint_3::xz|| -|uint_3::xzy|| -|uint_3::y|| -|uint_3::yx|| -|uint_3::yxz|| -|uint_3::yz|| -|uint_3::yzx|| -|uint_3::z|| -|uint_3::zx|| -|uint_3::zxy|| -|uint_3::zy|| -|uint_3::zyx|| - -## Inheritance Hierarchy - -`uint_3` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## uint_3 - -Default constructor, initializes all elements with 0. - -```cpp -uint_3() restrict(amp, - cpu); - -uint_3( - unsigned int _V0, - unsigned int _V1, - unsigned int _V2) restrict(amp, - cpu); - -uint_3( - unsigned int _V) restrict(amp, - cpu); - -uint_3( - const uint_3& _Other) restrict(amp, - cpu); - -explicit inline uint_3( - const int_3& _Other) restrict(amp, - cpu); - -explicit inline uint_3( - const float_3& _Other) restrict(amp, - cpu); - -explicit inline uint_3( - const unorm_3& _Other) restrict(amp, - cpu); - -explicit inline uint_3( - const norm_3& _Other) restrict(amp, - cpu); - -explicit inline uint_3( - const double_3& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V2*
-The value to initialize element 2. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 3; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/uint-4-class.md b/docs/parallel/amp/reference/uint-4-class.md deleted file mode 100644 index 52c3c56b77a..00000000000 --- a/docs/parallel/amp/reference/uint-4-class.md +++ /dev/null @@ -1,402 +0,0 @@ ---- -description: "Learn more about: uint_4 Class" -title: "uint_4 Class" -ms.date: "03/27/2019" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::uint_4::ywx", "amp_short_vectors/Concurrency::graphics::uint_4::get_yxw", "amp_short_vectors/Concurrency::graphics::uint_4::xw", "amp_short_vectors/Concurrency::graphics::uint_4::brga", "amp_short_vectors/Concurrency::graphics::uint_4::get_zw", "amp_short_vectors/Concurrency::graphics::uint_4::get_wzyx", "amp_short_vectors/Concurrency::graphics::uint_4::operator+=", "amp_short_vectors/Concurrency::graphics::uint_4::zw", "amp_short_vectors/Concurrency::graphics::uint_4::set_zy", "amp_short_vectors/Concurrency::graphics::uint_4::rgba", "amp_short_vectors/Concurrency::graphics::uint_4::grab", "amp_short_vectors/Concurrency::graphics::uint_4::xzwy", "amp_short_vectors/Concurrency::graphics::uint_4::get_ywzx", "amp_short_vectors/Concurrency::graphics::uint_4::set_xzwy", "amp_short_vectors/Concurrency::graphics::uint_4::set_wz", "amp_short_vectors/Concurrency::graphics::uint_4::ab", "amp_short_vectors/Concurrency::graphics::uint_4::set_zxy", "amp_short_vectors/Concurrency::graphics::uint_4::gabr", "amp_short_vectors/Concurrency::graphics::uint_4::agrb", "amp_short_vectors/Concurrency::graphics::uint_4::zxy", "amp_short_vectors/Concurrency::graphics::uint_4::br", "amp_short_vectors/Concurrency::graphics::uint_4::ragb", "amp_short_vectors/Concurrency::graphics::uint_4::rgb", "amp_short_vectors/Concurrency::graphics::uint_4::arb", "amp_short_vectors/Concurrency::graphics::uint_4::xyzw", "amp_short_vectors/Concurrency::graphics::uint_4::wzyx", "amp_short_vectors/Concurrency::graphics::uint_4::zxwy", "amp_short_vectors/Concurrency::graphics::uint_4::set_yzxw", "amp_short_vectors/Concurrency::graphics::uint_4::zwxy", "amp_short_vectors/Concurrency::graphics::uint_4::operator*=", "amp_short_vectors/Concurrency::graphics::uint_4::yzwx", "amp_short_vectors/Concurrency::graphics::uint_4::bg", "amp_short_vectors/Concurrency::graphics::uint_4::set_yz", "amp_short_vectors/Concurrency::graphics::uint_4::x", "amp_short_vectors/Concurrency::graphics::uint_4::set_z", "amp_short_vectors/Concurrency::graphics::uint_4::grba", "amp_short_vectors/Concurrency::graphics::uint_4::zwy", "amp_short_vectors/Concurrency::graphics::uint_4::get_yzwx", "amp_short_vectors/Concurrency::graphics::uint_4::xz", "amp_short_vectors/Concurrency::graphics::uint_4::set_wxyz", "amp_short_vectors/Concurrency::graphics::uint_4::b", "amp_short_vectors/Concurrency::graphics::uint_4::set_zx", "amp_short_vectors/Concurrency::graphics::uint_4::set_wyzx", "amp_short_vectors/Concurrency::graphics::uint_4::get_xyw", "amp_short_vectors/Concurrency::graphics::uint_4::get_ywz", "amp_short_vectors/Concurrency::graphics::uint_4::g", "amp_short_vectors/Concurrency::graphics::uint_4::get_zwxy", "amp_short_vectors/Concurrency::graphics::uint_4::yxzw", "amp_short_vectors/Concurrency::graphics::uint_4::set_ywx", "amp_short_vectors/Concurrency::graphics::uint_4::ar", "amp_short_vectors/Concurrency::graphics::uint_4::get_zyxw", "amp_short_vectors/Concurrency::graphics::uint_4::get_yxz", "amp_short_vectors/Concurrency::graphics::uint_4::set_xy", "amp_short_vectors/Concurrency::graphics::uint_4::get_y", "amp_short_vectors/Concurrency::graphics::uint_4::ga", "amp_short_vectors/Concurrency::graphics::uint_4::zyx", "amp_short_vectors/Concurrency::graphics::uint_4::get_zyx", "amp_short_vectors/Concurrency::graphics::uint_4::get_zxyw", "amp_short_vectors/Concurrency::graphics::uint_4::wy", "amp_short_vectors/Concurrency::graphics::uint_4::set_y", "amp_short_vectors/Concurrency::graphics::uint_4::bgr", "amp_short_vectors/Concurrency::graphics::uint_4::gbr", "amp_short_vectors/Concurrency::graphics::uint_4::wzxy", "amp_short_vectors/Concurrency::graphics::uint_4::set_wxz", "amp_short_vectors/Concurrency::graphics::uint_4::get_wxy", "amp_short_vectors/Concurrency::graphics::uint_4::set_zxyw", "amp_short_vectors/Concurrency::graphics::uint_4::bagr", "amp_short_vectors/Concurrency::graphics::uint_4::zxw", "amp_short_vectors/Concurrency::graphics::uint_4::operator/=", "amp_short_vectors/Concurrency::graphics::uint_4::rabg", "amp_short_vectors/Concurrency::graphics::uint_4::get_xwzy", "amp_short_vectors/Concurrency::graphics::uint_4::get_xzwy", "amp_short_vectors/Concurrency::graphics::uint_4::xywz", "amp_short_vectors/Concurrency::graphics::uint_4::get_ywxz", "amp_short_vectors/Concurrency::graphics::uint_4::get_z", "amp_short_vectors/Concurrency::graphics::uint_4::set_xyw", "amp_short_vectors/Concurrency::graphics::uint_4::get_wxzy", "amp_short_vectors/Concurrency::graphics::uint_4::get_yxzw", "amp_short_vectors/Concurrency::graphics::uint_4::z", "amp_short_vectors/Concurrency::graphics::uint_4::operator=", "amp_short_vectors/Concurrency::graphics::uint_4::wxyz", "amp_short_vectors/Concurrency::graphics::uint_4::set_xwzy", "amp_short_vectors/Concurrency::graphics::uint_4::set_yw", "amp_short_vectors/Concurrency::graphics::uint_4::a", "amp_short_vectors/Concurrency::graphics::uint_4::set_zwyx", "amp_short_vectors/Concurrency::graphics::uint_4::xy", "amp_short_vectors/Concurrency::graphics::uint_4::get_yzx", "amp_short_vectors/Concurrency::graphics::uint_4::rg", "amp_short_vectors/Concurrency::graphics::uint_4::rgab", "amp_short_vectors/Concurrency::graphics::uint_4::set_xwz", "amp_short_vectors/Concurrency::graphics::uint_4::set_zyxw", "amp_short_vectors/Concurrency::graphics::uint_4::gra", "amp_short_vectors/Concurrency::graphics::uint_4::rbg", "amp_short_vectors/Concurrency::graphics::uint_4::set_zwxy", "amp_short_vectors/Concurrency::graphics::uint_4::get_wzxy", "amp_short_vectors/Concurrency::graphics::uint_4::zyxw", "amp_short_vectors/Concurrency::graphics::uint_4::set_wzxy", "amp_short_vectors/Concurrency::graphics::uint_4::set_yxw", "amp_short_vectors/Concurrency::graphics::uint_4::yz", "amp_short_vectors/Concurrency::graphics::uint_4::zwx", "amp_short_vectors/Concurrency::graphics::uint_4::w", "amp_short_vectors/Concurrency::graphics::uint_4::get_xwyz", "amp_short_vectors/Concurrency::graphics::uint_4::rab", "amp_short_vectors/Concurrency::graphics::uint_4::set_wzy", "amp_short_vectors/Concurrency::graphics::uint_4::get_xwy", "amp_short_vectors/Concurrency::graphics::uint_4::get_zywx", "amp_short_vectors/Concurrency::graphics::uint_4::set_wx", "amp_short_vectors/Concurrency::graphics::uint_4::set_wxy", "amp_short_vectors/Concurrency::graphics::uint_4::get_ywx", "amp_short_vectors/Concurrency::graphics::uint_4::set_wyx", "amp_short_vectors/Concurrency::graphics::uint_4::bag", "amp_short_vectors/Concurrency::graphics::uint_4::zyw", "amp_short_vectors/Concurrency::graphics::uint_4::get_wx", "amp_short_vectors/Concurrency::graphics::uint_4::get_xyzw", "amp_short_vectors/Concurrency::graphics::uint_4::abg", "amp_short_vectors/Concurrency::graphics::uint_4::bra", "amp_short_vectors/Concurrency::graphics::uint_4::get_zx", "amp_short_vectors/Concurrency::graphics::uint_4::gab", "amp_short_vectors/Concurrency::graphics::uint_4::barg", "amp_short_vectors/Concurrency::graphics::uint_4::agbr", "amp_short_vectors/Concurrency::graphics::uint_4::yzxw", "amp_short_vectors/Concurrency::graphics::uint_4::set_xwyz", "amp_short_vectors/Concurrency::graphics::uint_4::get_zyw", "amp_short_vectors/Concurrency::graphics::uint_4::ag", "amp_short_vectors/Concurrency::graphics::uint_4::zxyw", "amp_short_vectors/Concurrency::graphics::uint_4::operator++", "amp_short_vectors/Concurrency::graphics::uint_4::wxy", "amp_short_vectors/Concurrency::graphics::uint_4::set_xyz", "amp_short_vectors/Concurrency::graphics::uint_4::grb", "amp_short_vectors/Concurrency::graphics::uint_4", "amp_short_vectors/Concurrency::graphics::uint_4::wyz", "amp_short_vectors/Concurrency::graphics::uint_4::gr", "amp_short_vectors/Concurrency::graphics::uint_4::get_zxw", "amp_short_vectors/Concurrency::graphics::uint_4::set_zwx", "amp_short_vectors/Concurrency::graphics::uint_4::ra", "amp_short_vectors/Concurrency::graphics::uint_4::bgar", "amp_short_vectors/Concurrency::graphics::uint_4::get_yz", "amp_short_vectors/Concurrency::graphics::uint_4::abrg", "amp_short_vectors/Concurrency::graphics::uint_4::zywx", "amp_short_vectors/Concurrency::graphics::uint_4::set_yxwz", "amp_short_vectors/Concurrency::graphics::uint_4::get_wzy", "amp_short_vectors/Concurrency::graphics::uint_4::set_zxw", "amp_short_vectors/Concurrency::graphics::uint_4::get_xzy", "amp_short_vectors/Concurrency::graphics::uint_4::agr", "amp_short_vectors/Concurrency::graphics::uint_4::set_wzyx", "amp_short_vectors/Concurrency::graphics::uint_4::r", "amp_short_vectors/Concurrency::graphics::uint_4::operator-=", "amp_short_vectors/Concurrency::graphics::uint_4::set_wxzy", "amp_short_vectors/Concurrency::graphics::uint_4::set_yxzw", "amp_short_vectors/Concurrency::graphics::uint_4::agb", "amp_short_vectors/Concurrency::graphics::uint_4::set_zyx", "amp_short_vectors/Concurrency::graphics::uint_4::get_zwyx", "amp_short_vectors/Concurrency::graphics::uint_4::get_yzw", "amp_short_vectors/Concurrency::graphics::uint_4::set_wy", "amp_short_vectors/Concurrency::graphics::uint_4::xwzy", "amp_short_vectors/Concurrency::graphics::uint_4::set_zyw", "amp_short_vectors/Concurrency::graphics::uint_4::wyx", "amp_short_vectors/Concurrency::graphics::uint_4::zx", "amp_short_vectors/Concurrency::graphics::uint_4::yx", "amp_short_vectors/Concurrency::graphics::uint_4::get_xyz", "amp_short_vectors/Concurrency::graphics::uint_4::get_wy", "amp_short_vectors/Concurrency::graphics::uint_4::get_xzw", "amp_short_vectors/Concurrency::graphics::uint_4::set_yzw", "amp_short_vectors/Concurrency::graphics::uint_4::get_wz", "amp_short_vectors/Concurrency::graphics::uint_4::xzy", "amp_short_vectors/Concurrency::graphics::uint_4::bar", "amp_short_vectors/Concurrency::graphics::uint_4::set_xzyw", "amp_short_vectors/Concurrency::graphics::uint_4::get_wyx", "amp_short_vectors/Concurrency::graphics::uint_4::wxz", "amp_short_vectors/Concurrency::graphics::uint_4::yzw", "amp_short_vectors/Concurrency::graphics::uint_4::get_xwz", "amp_short_vectors/Concurrency::graphics::uint_4::ywxz", "amp_short_vectors/Concurrency::graphics::uint_4::wyzx", "amp_short_vectors/Concurrency::graphics::uint_4::set_xz", "amp_short_vectors/Concurrency::graphics::uint_4::get_yxwz", "amp_short_vectors/Concurrency::graphics::uint_4::get_yx", "amp_short_vectors/Concurrency::graphics::uint_4::zwyx", "amp_short_vectors/Concurrency::graphics::uint_4::arg", "amp_short_vectors/Concurrency::graphics::uint_4::wzx", "amp_short_vectors/Concurrency::graphics::uint_4::rbga", "amp_short_vectors/Concurrency::graphics::uint_4::set_zwy", "amp_short_vectors/Concurrency::graphics::uint_4::get_xzyw", "amp_short_vectors/Concurrency::graphics::uint_4::get_xywz", "amp_short_vectors/Concurrency::graphics::uint_4::yxz", "amp_short_vectors/Concurrency::graphics::uint_4::rbag", "amp_short_vectors/Concurrency::graphics::uint_4::yzx", "amp_short_vectors/Concurrency::graphics::uint_4::set_zw", "amp_short_vectors/Concurrency::graphics::uint_4::wzy", "amp_short_vectors/Concurrency::graphics::uint_4::get_zxy", "amp_short_vectors/Concurrency::graphics::uint_4::get_zy", "amp_short_vectors/Concurrency::graphics::uint_4::abr", "amp_short_vectors/Concurrency::graphics::uint_4::gbra", "amp_short_vectors/Concurrency::graphics::uint_4::xzyw", "amp_short_vectors/Concurrency::graphics::uint_4::get_wxz", "amp_short_vectors/Concurrency::graphics::uint_4::xwy", "amp_short_vectors/Concurrency::graphics::uint_4::set_ywzx", "amp_short_vectors/Concurrency::graphics::uint_4::set_zywx", "amp_short_vectors/Concurrency::graphics::uint_4::wyxz", "amp_short_vectors/Concurrency::graphics::uint_4::set_x", "amp_short_vectors/Concurrency::graphics::uint_4::gb", "amp_short_vectors/Concurrency::graphics::uint_4::ba", "amp_short_vectors/Concurrency::graphics::uint_4::set_ywxz", "amp_short_vectors/Concurrency::graphics::uint_4::get_xy", "amp_short_vectors/Concurrency::graphics::uint_4::get_wzx", "amp_short_vectors/Concurrency::graphics::uint_4::bga", "amp_short_vectors/Concurrency::graphics::uint_4::get_x", "amp_short_vectors/Concurrency::graphics::uint_4::get_wyzx", "amp_short_vectors/Concurrency::graphics::uint_4::set_xwy", "amp_short_vectors/Concurrency::graphics::uint_4::set_xzy", "amp_short_vectors/Concurrency::graphics::uint_4::wxzy", "amp_short_vectors/Concurrency::graphics::uint_4::set_wzx", "amp_short_vectors/Concurrency::graphics::uint_4::set_ywz", "amp_short_vectors/Concurrency::graphics::uint_4::set_yx", "amp_short_vectors/Concurrency::graphics::uint_4::get_wyxz", "amp_short_vectors/Concurrency::graphics::uint_4::rga", "amp_short_vectors/Concurrency::graphics::uint_4::set_xw", "amp_short_vectors/Concurrency::graphics::uint_4::get_zwx", "amp_short_vectors/Concurrency::graphics::uint_4::get_w", "amp_short_vectors/Concurrency::graphics::uint_4::get_xw", "amp_short_vectors/Concurrency::graphics::uint_4::get_wxyz", "amp_short_vectors/Concurrency::graphics::uint_4::garb", "amp_short_vectors/Concurrency::graphics::uint_4::y", "amp_short_vectors/Concurrency::graphics::uint_4::get_xz", "amp_short_vectors/Concurrency::graphics::uint_4::yxw", "amp_short_vectors/Concurrency::graphics::uint_4::xzw", "amp_short_vectors/Concurrency::graphics::uint_4::set_xzw", "amp_short_vectors/Concurrency::graphics::uint_4::get_zxwy", "amp_short_vectors/Concurrency::graphics::uint_4::arbg", "amp_short_vectors/Concurrency::graphics::uint_4::ywzx", "amp_short_vectors/Concurrency::graphics::uint_4::zy", "amp_short_vectors/Concurrency::graphics::uint_4::brg", "amp_short_vectors/Concurrency::graphics::uint_4::gar", "amp_short_vectors/Concurrency::graphics::uint_4::get_yzxw", "amp_short_vectors/Concurrency::graphics::uint_4::bgra", "amp_short_vectors/Concurrency::graphics::uint_4::xwyz", "amp_short_vectors/Concurrency::graphics::uint_4::ywz", "amp_short_vectors/Concurrency::graphics::uint_4::yxwz", "amp_short_vectors/Concurrency::graphics::uint_4::set_zxwy", "amp_short_vectors/Concurrency::graphics::uint_4::wz", "amp_short_vectors/Concurrency::graphics::uint_4::set_yzwx", "amp_short_vectors/Concurrency::graphics::uint_4::get_zwy", "amp_short_vectors/Concurrency::graphics::uint_4::abgr", "amp_short_vectors/Concurrency::graphics::uint_4::brag", "amp_short_vectors/Concurrency::graphics::uint_4::set_w", "amp_short_vectors/Concurrency::graphics::uint_4::set_wyz", "amp_short_vectors/Concurrency::graphics::uint_4::gba", "amp_short_vectors/Concurrency::graphics::uint_4::rb", "amp_short_vectors/Concurrency::graphics::uint_4::gbar", "amp_short_vectors/Concurrency::graphics::uint_4::xyz", "amp_short_vectors/Concurrency::graphics::uint_4::yw", "amp_short_vectors/Concurrency::graphics::uint_4::operator-", "amp_short_vectors/Concurrency::graphics::uint_4::get_yw", "amp_short_vectors/Concurrency::graphics::uint_4::wx", "amp_short_vectors/Concurrency::graphics::uint_4::set_wyxz", "amp_short_vectors/Concurrency::graphics::uint_4::xwz", "amp_short_vectors/Concurrency::graphics::uint_4::operator--", "amp_short_vectors/Concurrency::graphics::uint_4::set_xyzw", "amp_short_vectors/Concurrency::graphics::uint_4::xyw", "amp_short_vectors/Concurrency::graphics::uint_4::get_wyz", "amp_short_vectors/Concurrency::graphics::uint_4::rag", "amp_short_vectors/Concurrency::graphics::uint_4::argb", "amp_short_vectors/Concurrency::graphics::uint_4::set_yxz", "amp_short_vectors/Concurrency::graphics::uint_4::set_xywz", "amp_short_vectors/Concurrency::graphics::uint_4::rba", "amp_short_vectors/Concurrency::graphics::uint_4::set_yzx"] -ms.assetid: 1cda9e2c-5970-4ced-ae54-d7ff3c6746f4 ---- -# uint_4 Class - -Represents a short vector of four unsigned integers. - -## Syntax - -```cpp -class uint_4; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[uint_4 Constructor](#uint_4__ctor) |Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|uint_4::get_w|| -|uint_4::get_wx|| -|uint_4::get_wxy|| -|uint_4::get_wxyz|| -|uint_4::get_wxz|| -|uint_4::get_wxzy|| -|uint_4::get_wy|| -|uint_4::get_wyx|| -|uint_4::get_wyxz|| -|uint_4::get_wyz|| -|uint_4::get_wyzx|| -|uint_4::get_wz|| -|uint_4::get_wzx|| -|uint_4::get_wzxy|| -|uint_4::get_wzy|| -|uint_4::get_wzyx|| -|uint_4::get_x|| -|uint_4::get_xw|| -|uint_4::get_xwy|| -|uint_4::get_xwyz|| -|uint_4::get_xwz|| -|uint_4::get_xwzy|| -|uint_4::get_xy|| -|uint_4::get_xyw|| -|uint_4::get_xywz|| -|uint_4::get_xyz|| -|uint_4::get_xyzw|| -|uint_4::get_xz|| -|uint_4::get_xzw|| -|uint_4::get_xzwy|| -|uint_4::get_xzy|| -|uint_4::get_xzyw|| -|uint_4::get_y|| -|uint_4::get_yw|| -|uint_4::get_ywx|| -|uint_4::get_ywxz|| -|uint_4::get_ywz|| -|uint_4::get_ywzx|| -|uint_4::get_yx|| -|uint_4::get_yxw|| -|uint_4::get_yxwz|| -|uint_4::get_yxz|| -|uint_4::get_yxzw|| -|uint_4::get_yz|| -|uint_4::get_yzw|| -|uint_4::get_yzwx|| -|uint_4::get_yzx|| -|uint_4::get_yzxw|| -|uint_4::get_z|| -|uint_4::get_zw|| -|uint_4::get_zwx|| -|uint_4::get_zwxy|| -|uint_4::get_zwy|| -|uint_4::get_zwyx|| -|uint_4::get_zx|| -|uint_4::get_zxw|| -|uint_4::get_zxwy|| -|uint_4::get_zxy|| -|uint_4::get_zxyw|| -|uint_4::get_zy|| -|uint_4::get_zyw|| -|uint_4::get_zywx|| -|uint_4::get_zyx|| -|uint_4::get_zyxw|| -|uint_4::ref_a|| -|uint_4::ref_b|| -|uint_4::ref_g|| -|uint_4::ref_r|| -|uint_4::ref_w|| -|uint_4::ref_x|| -|uint_4::ref_y|| -|uint_4::ref_z|| -|uint_4::set_w|| -|uint_4::set_wx|| -|uint_4::set_wxy|| -|uint_4::set_wxyz|| -|uint_4::set_wxz|| -|uint_4::set_wxzy|| -|uint_4::set_wy|| -|uint_4::set_wyx|| -|uint_4::set_wyxz|| -|uint_4::set_wyz|| -|uint_4::set_wyzx|| -|uint_4::set_wz|| -|uint_4::set_wzx|| -|uint_4::set_wzxy|| -|uint_4::set_wzy|| -|uint_4::set_wzyx|| -|uint_4::set_x|| -|uint_4::set_xw|| -|uint_4::set_xwy|| -|uint_4::set_xwyz|| -|uint_4::set_xwz|| -|uint_4::set_xwzy|| -|uint_4::set_xy|| -|uint_4::set_xyw|| -|uint_4::set_xywz|| -|uint_4::set_xyz|| -|uint_4::set_xyzw|| -|uint_4::set_xz|| -|uint_4::set_xzw|| -|uint_4::set_xzwy|| -|uint_4::set_xzy|| -|uint_4::set_xzyw|| -|uint_4::set_y|| -|uint_4::set_yw|| -|uint_4::set_ywx|| -|uint_4::set_ywxz|| -|uint_4::set_ywz|| -|uint_4::set_ywzx|| -|uint_4::set_yx|| -|uint_4::set_yxw|| -|uint_4::set_yxwz|| -|uint_4::set_yxz|| -|uint_4::set_yxzw|| -|uint_4::set_yz|| -|uint_4::set_yzw|| -|uint_4::set_yzwx|| -|uint_4::set_yzx|| -|uint_4::set_yzxw|| -|uint_4::set_z|| -|uint_4::set_zw|| -|uint_4::set_zwx|| -|uint_4::set_zwxy|| -|uint_4::set_zwy|| -|uint_4::set_zwyx|| -|uint_4::set_zx|| -|uint_4::set_zxw|| -|uint_4::set_zxwy|| -|uint_4::set_zxy|| -|uint_4::set_zxyw|| -|uint_4::set_zy|| -|uint_4::set_zyw|| -|uint_4::set_zywx|| -|uint_4::set_zyx|| -|uint_4::set_zyxw|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|uint_4::operator-|| -|uint_4::operator--|| -|uint_4::operator*=|| -|uint_4::operator/=|| -|uint_4::operator++|| -|uint_4::operator+=|| -|uint_4::operator=|| -|uint_4::operator-=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|uint_4::a|| -|uint_4::ab|| -|uint_4::abg|| -|uint_4::abgr|| -|uint_4::abr|| -|uint_4::abrg|| -|uint_4::ag|| -|uint_4::agb|| -|uint_4::agbr|| -|uint_4::agr|| -|uint_4::agrb|| -|uint_4::ar|| -|uint_4::arb|| -|uint_4::arbg|| -|uint_4::arg|| -|uint_4::argb|| -|uint_4::b|| -|uint_4::ba|| -|uint_4::bag|| -|uint_4::bagr|| -|uint_4::bar|| -|uint_4::barg|| -|uint_4::bg|| -|uint_4::bga|| -|uint_4::bgar|| -|uint_4::bgr|| -|uint_4::bgra|| -|uint_4::br|| -|uint_4::bra|| -|uint_4::brag|| -|uint_4::brg|| -|uint_4::brga|| -|uint_4::g|| -|uint_4::ga|| -|uint_4::gab|| -|uint_4::gabr|| -|uint_4::gar|| -|uint_4::garb|| -|uint_4::gb|| -|uint_4::gba|| -|uint_4::gbar|| -|uint_4::gbr|| -|uint_4::gbra|| -|uint_4::gr|| -|uint_4::gra|| -|uint_4::grab|| -|uint_4::grb|| -|uint_4::grba|| -|uint_4::r|| -|uint_4::ra|| -|uint_4::rab|| -|uint_4::rabg|| -|uint_4::rag|| -|uint_4::ragb|| -|uint_4::rb|| -|uint_4::rba|| -|uint_4::rbag|| -|uint_4::rbg|| -|uint_4::rbga|| -|uint_4::rg|| -|uint_4::rga|| -|uint_4::rgab|| -|uint_4::rgb|| -|uint_4::rgba|| -|uint_4::w|| -|uint_4::wx|| -|uint_4::wxy|| -|uint_4::wxyz|| -|uint_4::wxz|| -|uint_4::wxzy|| -|uint_4::wy|| -|uint_4::wyx|| -|uint_4::wyxz|| -|uint_4::wyz|| -|uint_4::wyzx|| -|uint_4::wz|| -|uint_4::wzx|| -|uint_4::wzxy|| -|uint_4::wzy|| -|uint_4::wzyx|| -|uint_4::x|| -|uint_4::xw|| -|uint_4::xwy|| -|uint_4::xwyz|| -|uint_4::xwz|| -|uint_4::xwzy|| -|uint_4::xy|| -|uint_4::xyw|| -|uint_4::xywz|| -|uint_4::xyz|| -|uint_4::xyzw|| -|uint_4::xz|| -|uint_4::xzw|| -|uint_4::xzwy|| -|uint_4::xzy|| -|uint_4::xzyw|| -|uint_4::y|| -|uint_4::yw|| -|uint_4::ywx|| -|uint_4::ywxz|| -|uint_4::ywz|| -|uint_4::ywzx|| -|uint_4::yx|| -|uint_4::yxw|| -|uint_4::yxwz|| -|uint_4::yxz|| -|uint_4::yxzw|| -|uint_4::yz|| -|uint_4::yzw|| -|uint_4::yzwx|| -|uint_4::yzx|| -|uint_4::yzxw|| -|uint_4::z|| -|uint_4::zw|| -|uint_4::zwx|| -|uint_4::zwxy|| -|uint_4::zwy|| -|uint_4::zwyx|| -|uint_4::zx|| -|uint_4::zxw|| -|uint_4::zxwy|| -|uint_4::zxy|| -|uint_4::zxyw|| -|uint_4::zy|| -|uint_4::zyw|| -|uint_4::zywx|| -|uint_4::zyx|| -|uint_4::zyxw|| - -## Inheritance Hierarchy - -`uint_4` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## uint_4 - -Default constructor, initializes all elements with 0. - -### Syntax - -```cpp -uint_4() restrict(amp,cpu); -uint_4( - unsigned int _V0, - unsigned int _V1, - unsigned int _V2, - unsigned int _V3 -) restrict(amp,cpu); -uint_4( - unsigned int _V -) restrict(amp,cpu); -uint_4( - const uint_4& _Other -) restrict(amp,cpu); -explicit inline uint_4( - const int_4& _Other -) restrict(amp,cpu); -explicit inline uint_4( - const float_4& _Other -) restrict(amp,cpu); -explicit inline uint_4( - const unorm_4& _Other -) restrict(amp,cpu); -explicit inline uint_4( - const norm_4& _Other -) restrict(amp,cpu); -explicit inline uint_4( - const double_4& _Other -) restrict(amp,cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V2*
-The value to initialize element 2. - -*_V3*
-The value to initialize element 3. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -### Syntax - -```cpp -static const int size = 4; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/uninitialized-object-class.md b/docs/parallel/amp/reference/uninitialized-object-class.md deleted file mode 100644 index bfa77321403..00000000000 --- a/docs/parallel/amp/reference/uninitialized-object-class.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: "Learn more about: uninitialized_object Class" -title: "uninitialized_object Class" -ms.date: "03/27/2019" -f1_keywords: ["uninitialized_object", "AMPRT/uninitialized_object", "AMPRT/Concurrency::uninitialized_object"] -helpviewer_keywords: ["uninitialized_object class"] -ms.assetid: 6ae3c4e8-64a6-4511-a158-03be197b63af ---- -# uninitialized_object Class - -The exception that is thrown when an uninitialized object is used. - -## Syntax - -```cpp -class uninitialized_object : public runtime_exception; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[uninitialized_object Constructor](#uninitialized_object)|Initializes a new instance of the `uninitialized_object` class.| - -## Inheritance Hierarchy - -`exception` - -`runtime_exception` - -`uninitialized_object` - -## Requirements - -**Header:** amprt.h - -**Namespace:** Concurrency - -## uninitialized_object - -Constructs a new instance of the `uninitialized_object` exception. - -### Syntax - -```cpp -explicit uninitialized_object( - const char * _Message ) throw(); - -uninitialized_object() throw(); -``` - -### Parameters - -*_Message*
-A description of the error. - -### Return Value - -The `uninitialized_object` exception object. - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/unorm-2-class.md b/docs/parallel/amp/reference/unorm-2-class.md deleted file mode 100644 index 56ca540fa1a..00000000000 --- a/docs/parallel/amp/reference/unorm-2-class.md +++ /dev/null @@ -1,163 +0,0 @@ ---- -description: "Learn more about: unorm_2 Class" -title: "unorm_2 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::unnorm_2::operator+=", "amp_short_vectors/Concurrency::graphics::unnorm_2::y", "amp_short_vectors/Concurrency::graphics::unnorm_2::set_y", "amp_short_vectors/Concurrency::graphics::unnorm_2::x", "amp_short_vectors/Concurrency::graphics::unnorm_2::get_yx", "amp_short_vectors/Concurrency::graphics::unnorm_2::operator--", "amp_short_vectors/Concurrency::graphics::unnorm_2::set_xy", "amp_short_vectors/Concurrency::graphics::unnorm_2::operator*=", "amp_short_vectors/Concurrency::graphics::unnorm_2::xy", "amp_short_vectors/Concurrency::graphics::unnorm_2::get_y", "amp_short_vectors/Concurrency::graphics::unnorm_2::operator=", "amp_short_vectors/Concurrency::graphics::unnorm_2::set_x", "amp_short_vectors/Concurrency::graphics::unnorm_2::rg", "amp_short_vectors/Concurrency::graphics::unorm_2", "amp_short_vectors/Concurrency::graphics::unnorm_2::operator-=", "amp_short_vectors/Concurrency::graphics::unnorm_2::operator/=", "amp_short_vectors/Concurrency::graphics::unnorm_2::get_xy", "amp_short_vectors/Concurrency::graphics::unnorm_2::set_yx", "amp_short_vectors/Concurrency::graphics::unnorm_2::yx", "amp_short_vectors/Concurrency::graphics::unnorm_2::gr", "amp_short_vectors/Concurrency::graphics::unnorm_2::r", "amp_short_vectors/Concurrency::graphics::unnorm_2::operator-", "amp_short_vectors/Concurrency::graphics::unnorm_2::get_x", "amp_short_vectors/Concurrency::graphics::unnorm_2::g", "amp_short_vectors/Concurrency::graphics::unnorm_2::operator++"] -ms.assetid: 62e88ea7-e29f-4f62-95ce-61a1f39f5e34 ---- -# unorm_2 Class - -Represents a short vector of two unsigned normal numbers. - -## Syntax - -```cpp -class unorm_2; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[unorm_2 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|unorm_2::get_x|| -|unorm_2::get_xy|| -|unorm_2::get_y|| -|unorm_2::get_yx|| -|unorm_2::ref_g|| -|unorm_2::ref_r|| -|unorm_2::ref_x|| -|unorm_2::ref_y|| -|unorm_2::set_x|| -|unorm_2::set_xy|| -|unorm_2::set_y|| -|unorm_2::set_yx|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|unorm_2::operator--|| -|unorm_2::operator*=|| -|unorm_2::operator/=|| -|unorm_2::operator++|| -|unorm_2::operator+=|| -|unorm_2::operator=|| -|unorm_2::operator-=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|unorm_2::size Constant|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|unorm_2::g|| -|unorm_2::gr|| -|unorm_2::r|| -|unorm_2::rg|| -|unorm_2::x|| -|unorm_2::xy|| -|unorm_2::y|| -|unorm_2::yx|| - -## Inheritance Hierarchy - -`unorm_2` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## unorm_2 - -Default constructor, initializes all elements with 0. - -```cpp -unorm_2() restrict(amp, - cpu); - -unorm_2( - unorm _V0, - unorm _V1) restrict(amp, - cpu); - -unorm_2( - float _V0, - float _V1) restrict(amp, - cpu); - -unorm_2( - unorm _V) restrict(amp, - cpu); - -explicit unorm_2( - float _V) restrict(amp, - cpu); - -unorm_2( - const unorm_2& _Other) restrict(amp, - cpu); - -explicit inline unorm_2( - const uint_2& _Other) restrict(amp, - cpu); - -explicit inline unorm_2( - const int_2& _Other) restrict(amp, - cpu); - -explicit inline unorm_2( - const float_2& _Other) restrict(amp, - cpu); - -explicit inline unorm_2( - const norm_2& _Other) restrict(amp, - cpu); - -explicit inline unorm_2( - const double_2& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 2; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/unorm-3-class.md b/docs/parallel/amp/reference/unorm-3-class.md deleted file mode 100644 index d79203d802b..00000000000 --- a/docs/parallel/amp/reference/unorm-3-class.md +++ /dev/null @@ -1,214 +0,0 @@ ---- -description: "Learn more about: unorm_3 Class" -title: "unorm_3 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::unorm_3::set_zy", "amp_short_vectors/Concurrency::graphics::unorm_3::zxy", "amp_short_vectors/Concurrency::graphics::unorm_3::set_zyx", "amp_short_vectors/Concurrency::graphics::unorm_3::operator-=", "amp_short_vectors/Concurrency::graphics::unorm_3::xzy", "amp_short_vectors/Concurrency::graphics::unorm_3::get_xzy", "amp_short_vectors/Concurrency::graphics::unorm_3::zyx", "amp_short_vectors/Concurrency::graphics::unorm_3::rgb", "amp_short_vectors/Concurrency::graphics::unorm_3::set_xz", "amp_short_vectors/Concurrency::graphics::unorm_3::set_yxz", "amp_short_vectors/Concurrency::graphics::unorm_3::set_yx", "amp_short_vectors/Concurrency::graphics::unorm_3::br", "amp_short_vectors/Concurrency::graphics::unorm_3::get_zy", "amp_short_vectors/Concurrency::graphics::unorm_3::set_zx", "amp_short_vectors/Concurrency::graphics::unorm_3::get_xyz", "amp_short_vectors/Concurrency::graphics::unorm_3::b", "amp_short_vectors/Concurrency::graphics::unorm_3::set_xyz", "amp_short_vectors/Concurrency::graphics::unorm_3", "amp_short_vectors/Concurrency::graphics::unorm_3::set_z", "amp_short_vectors/Concurrency::graphics::unorm_3::set_xy", "amp_short_vectors/Concurrency::graphics::unorm_3::get_zyx", "amp_short_vectors/Concurrency::graphics::unorm_3::get_xy", "amp_short_vectors/Concurrency::graphics::unorm_3::x", "amp_short_vectors/Concurrency::graphics::unorm_3::get_zxy", "amp_short_vectors/Concurrency::graphics::unorm_3::z", "amp_short_vectors/Concurrency::graphics::unorm_3::get_x", "amp_short_vectors/Concurrency::graphics::unorm_3::operator=", "amp_short_vectors/Concurrency::graphics::unorm_3::yxz", "amp_short_vectors/Concurrency::graphics::unorm_3::get_yx", "amp_short_vectors/Concurrency::graphics::unorm_3::gbr", "amp_short_vectors/Concurrency::graphics::unorm_3::get_yxz", "amp_short_vectors/Concurrency::graphics::unorm_3::operator--", "amp_short_vectors/Concurrency::graphics::unorm_3::operator/=", "amp_short_vectors/Concurrency::graphics::unorm_3::brg", "amp_short_vectors/Concurrency::graphics::unorm_3::gb", "amp_short_vectors/Concurrency::graphics::unorm_3::zy", "amp_short_vectors/Concurrency::graphics::unorm_3::set_xzy", "amp_short_vectors/Concurrency::graphics::unorm_3::get_yzx", "amp_short_vectors/Concurrency::graphics::unorm_3::rb", "amp_short_vectors/Concurrency::graphics::unorm_3::gr", "amp_short_vectors/Concurrency::graphics::unorm_3::zx", "amp_short_vectors/Concurrency::graphics::unorm_3::r", "amp_short_vectors/Concurrency::graphics::unorm_3::xyz", "amp_short_vectors/Concurrency::graphics::unorm_3::grb", "amp_short_vectors/Concurrency::graphics::unorm_3::bg", "amp_short_vectors/Concurrency::graphics::unorm_3::get_y", "amp_short_vectors/Concurrency::graphics::unorm_3::g", "amp_short_vectors/Concurrency::graphics::unorm_3::yz", "amp_short_vectors/Concurrency::graphics::unorm_3::yx", "amp_short_vectors/Concurrency::graphics::unorm_3::get_xz", "amp_short_vectors/Concurrency::graphics::unorm_3::set_zxy", "amp_short_vectors/Concurrency::graphics::unorm_3::get_z", "amp_short_vectors/Concurrency::graphics::unorm_3::bgr", "amp_short_vectors/Concurrency::graphics::unorm_3::set_x", "amp_short_vectors/Concurrency::graphics::unorm_3::operator-", "amp_short_vectors/Concurrency::graphics::unorm_3::y", "amp_short_vectors/Concurrency::graphics::unorm_3::set_yzx", "amp_short_vectors/Concurrency::graphics::unorm_3::get_zx", "amp_short_vectors/Concurrency::graphics::unorm_3::yzx", "amp_short_vectors/Concurrency::graphics::unorm_3::operator++", "amp_short_vectors/Concurrency::graphics::unorm_3::set_yz", "amp_short_vectors/Concurrency::graphics::unorm_3::operator+=", "amp_short_vectors/Concurrency::graphics::unorm_3::xz", "amp_short_vectors/Concurrency::graphics::unorm_3::rg", "amp_short_vectors/Concurrency::graphics::unorm_3::xy", "amp_short_vectors/Concurrency::graphics::unorm_3::operator*=", "amp_short_vectors/Concurrency::graphics::unorm_3::set_y", "amp_short_vectors/Concurrency::graphics::unorm_3::get_yz", "amp_short_vectors/Concurrency::graphics::unorm_3::rbg"] -ms.assetid: ea4e7a17-5256-464c-af28-8b01962564c0 ---- -# unorm_3 Class - -Represents a short vector of three unsigned normal numbers. - -## Syntax - -```cpp -class unorm_3; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[unorm_3 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|unorm_3::get_x|| -|unorm_3::get_xy|| -|unorm_3::get_xyz|| -|unorm_3::get_xz|| -|unorm_3::get_xzy|| -|unorm_3::get_y|| -|unorm_3::get_yx|| -|unorm_3::get_yxz|| -|unorm_3::get_yz|| -|unorm_3::get_yzx|| -|unorm_3::get_z|| -|unorm_3::get_zx|| -|unorm_3::get_zxy|| -|unorm_3::get_zy|| -|unorm_3::get_zyx|| -|Unorm_3::ref_b|| -|Unorm_3::ref_g|| -|Unorm_3::ref_r|| -|Unorm_3::ref_x|| -|Unorm_3::ref_y|| -|Unorm_3::ref_z|| -|unorm_3::set_x|| -|unorm_3::set_xy|| -|unorm_3::set_xyz|| -|unorm_3::set_xz|| -|unorm_3::set_xzy|| -|unorm_3::set_y|| -|unorm_3::set_yx|| -|unorm_3::set_yxz|| -|unorm_3::set_yz|| -|unorm_3::set_yzx|| -|unorm_3::set_z|| -|unorm_3::set_zx|| -|unorm_3::set_zxy|| -|unorm_3::set_zy|| -|unorm_3::set_zyx|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|unorm_3::operator--|| -|unorm_3::operator*=|| -|unorm_3::operator/=|| -|unorm_3::operator++|| -|unorm_3::operator+=|| -|unorm_3::operator=|| -|unorm_3::operator-=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#unorm_3__size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|unorm_3::b|| -|unorm_3::bg|| -|unorm_3::bgr|| -|unorm_3::br|| -|unorm_3::brg|| -|unorm_3::g|| -|unorm_3::gb|| -|unorm_3::gbr|| -|unorm_3::gr|| -|unorm_3::grb|| -|unorm_3::r|| -|unorm_3::rb|| -|unorm_3::rbg|| -|unorm_3::rg|| -|unorm_3::rgb|| -|unorm_3::x|| -|unorm_3::xy|| -|unorm_3::xyz|| -|unorm_3::xz|| -|unorm_3::xzy|| -|unorm_3::y|| -|unorm_3::yx|| -|unorm_3::yxz|| -|unorm_3::yz|| -|unorm_3::yzx|| -|unorm_3::z|| -|unorm_3::zx|| -|unorm_3::zxy|| -|unorm_3::zy|| -|unorm_3::zyx|| - -## Inheritance Hierarchy - -`unorm_3` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## unorm_3 - -Default constructor, initializes all elements with 0. - -```cpp -unorm_3() restrict(amp, - cpu); - -unorm_3( - unorm _V0, - unorm _V1, - unorm _V2) restrict(amp, - cpu); - -unorm_3( - float _V0, - float _V1, - float _V2) restrict(amp, - cpu); - -unorm_3( - unorm _V) restrict(amp, - cpu); - -explicit unorm_3( - float _V) restrict(amp, - cpu); - -unorm_3( - const unorm_3& _Other) restrict(amp, - cpu); - -explicit inline unorm_3( - const uint_3& _Other) restrict(amp, - cpu); - -explicit inline unorm_3( - const int_3& _Other) restrict(amp, - cpu); - -explicit inline unorm_3( - const float_3& _Other) restrict(amp, - cpu); - -explicit inline unorm_3( - const norm_3& _Other) restrict(amp, - cpu); - -explicit inline unorm_3( - const double_3& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V2*
-The value to initialize element 2. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 3; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/unorm-4-class.md b/docs/parallel/amp/reference/unorm-4-class.md deleted file mode 100644 index 1726971da23..00000000000 --- a/docs/parallel/amp/reference/unorm-4-class.md +++ /dev/null @@ -1,418 +0,0 @@ ---- -description: "Learn more about: unorm_4 Class" -title: "unorm_4 Class" -ms.date: "11/04/2016" -f1_keywords: ["amp_short_vectors/Concurrency::graphics::unorm_4::set_yxzw", "amp_short_vectors/Concurrency::graphics::unorm_4::gbra", "amp_short_vectors/Concurrency::graphics::unorm_4::abg", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zx", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xzyw", "amp_short_vectors/Concurrency::graphics::unorm_4::brag", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zywx", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xwy", "amp_short_vectors/Concurrency::graphics::unorm_4::get_x", "amp_short_vectors/Concurrency::graphics::unorm_4::ra", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xyw", "amp_short_vectors/Concurrency::graphics::unorm_4::rg", "amp_short_vectors/Concurrency::graphics::unorm_4::get_yxwz", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xw", "amp_short_vectors/Concurrency::graphics::unorm_4::get_z", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wxyz", "amp_short_vectors/Concurrency::graphics::unorm_4::operator*=", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zyw", "amp_short_vectors/Concurrency::graphics::unorm_4::b", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wyzx", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wyz", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wyzx", "amp_short_vectors/Concurrency::graphics::unorm_4::ywx", "amp_short_vectors/Concurrency::graphics::unorm_4::ragb", "amp_short_vectors/Concurrency::graphics::unorm_4::yxzw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wzy", "amp_short_vectors/Concurrency::graphics::unorm_4::get_y", "amp_short_vectors/Concurrency::graphics::unorm_4::rag", "amp_short_vectors/Concurrency::graphics::unorm_4::zwxy", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wyxz", "amp_short_vectors/Concurrency::graphics::unorm_4::gab", "amp_short_vectors/Concurrency::graphics::unorm_4::set_yzw", "amp_short_vectors/Concurrency::graphics::unorm_4::rgb", "amp_short_vectors/Concurrency::graphics::unorm_4::arbg", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wyx", "amp_short_vectors/Concurrency::graphics::unorm_4::y", "amp_short_vectors/Concurrency::graphics::unorm_4::wz", "amp_short_vectors/Concurrency::graphics::unorm_4::set_yxwz", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xw", "amp_short_vectors/Concurrency::graphics::unorm_4::bgra", "amp_short_vectors/Concurrency::graphics::unorm_4::grb", "amp_short_vectors/Concurrency::graphics::unorm_4::wzx", "amp_short_vectors/Concurrency::graphics::unorm_4::set_ywzx", "amp_short_vectors/Concurrency::graphics::unorm_4::yz", "amp_short_vectors/Concurrency::graphics::unorm_4::xywz", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xzwy", "amp_short_vectors/Concurrency::graphics::unorm_4::rba", "amp_short_vectors/Concurrency::graphics::unorm_4::set_ywx", "amp_short_vectors/Concurrency::graphics::unorm_4::wzy", "amp_short_vectors/Concurrency::graphics::unorm_4::bg", "amp_short_vectors/Concurrency::graphics::unorm_4::agb", "amp_short_vectors/Concurrency::graphics::unorm_4::get_w", "amp_short_vectors/Concurrency::graphics::unorm_4::bag", "amp_short_vectors/Concurrency::graphics::unorm_4::bga", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wx", "amp_short_vectors/Concurrency::graphics::unorm_4::arb", "amp_short_vectors/Concurrency::graphics::unorm_4::get_ywz", "amp_short_vectors/Concurrency::graphics::unorm_4::a", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zxyw", "amp_short_vectors/Concurrency::graphics::unorm_4::operator/=", "amp_short_vectors/Concurrency::graphics::unorm_4::w", "amp_short_vectors/Concurrency::graphics::unorm_4::operator++", "amp_short_vectors/Concurrency::graphics::unorm_4::wyxz", "amp_short_vectors/Concurrency::graphics::unorm_4::get_yzx", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zyx", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xywz", "amp_short_vectors/Concurrency::graphics::unorm_4::xyzw", "amp_short_vectors/Concurrency::graphics::unorm_4::rbag", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wxy", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xwzy", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wxzy", "amp_short_vectors/Concurrency::graphics::unorm_4::gabr", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xyzw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xyz", "amp_short_vectors/Concurrency::graphics::unorm_4::br", "amp_short_vectors/Concurrency::graphics::unorm_4::yw", "amp_short_vectors/Concurrency::graphics::unorm_4::zxyw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wxzy", "amp_short_vectors/Concurrency::graphics::unorm_4::argb", "amp_short_vectors/Concurrency::graphics::unorm_4::x", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wzxy", "amp_short_vectors/Concurrency::graphics::unorm_4::ab", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_yzwx", "amp_short_vectors/Concurrency::graphics::unorm_4::xyz", "amp_short_vectors/Concurrency::graphics::unorm_4::gbr", "amp_short_vectors/Concurrency::graphics::unorm_4::rab", "amp_short_vectors/Concurrency::graphics::unorm_4::set_yw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xy", "amp_short_vectors/Concurrency::graphics::unorm_4::operator--", "amp_short_vectors/Concurrency::graphics::unorm_4::gba", "amp_short_vectors/Concurrency::graphics::unorm_4::bra", "amp_short_vectors/Concurrency::graphics::unorm_4::garb", "amp_short_vectors/Concurrency::graphics::unorm_4::zwyx", "amp_short_vectors/Concurrency::graphics::unorm_4::get_ywx", "amp_short_vectors/Concurrency::graphics::unorm_4::get_ywzx", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xwy", "amp_short_vectors/Concurrency::graphics::unorm_4::get_yx", "amp_short_vectors/Concurrency::graphics::unorm_4::get_ywxz", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zxwy", "amp_short_vectors/Concurrency::graphics::unorm_4::agr", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xz", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wzx", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zxyw", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zy", "amp_short_vectors/Concurrency::graphics::unorm_4::set_yxz", "amp_short_vectors/Concurrency::graphics::unorm_4::zxy", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zxw", "amp_short_vectors/Concurrency::graphics::unorm_4::ga", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zyw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wxyz", "amp_short_vectors/Concurrency::graphics::unorm_4::wxy", "amp_short_vectors/Concurrency::graphics::unorm_4::wzxy", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zwy", "amp_short_vectors/Concurrency::graphics::unorm_4::xwz", "amp_short_vectors/Concurrency::graphics::unorm_4::set_yz", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wzx", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xzwy", "amp_short_vectors/Concurrency::graphics::unorm_4::ywxz", "amp_short_vectors/Concurrency::graphics::unorm_4::yx", "amp_short_vectors/Concurrency::graphics::unorm_4::xzy", "amp_short_vectors/Concurrency::graphics::unorm_4::zy", "amp_short_vectors/Concurrency::graphics::unorm_4::bgar", "amp_short_vectors/Concurrency::graphics::unorm_4::set_y", "amp_short_vectors/Concurrency::graphics::unorm_4::xw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xwyz", "amp_short_vectors/Concurrency::graphics::unorm_4::xzyw", "amp_short_vectors/Concurrency::graphics::unorm_4::ar", "amp_short_vectors/Concurrency::graphics::unorm_4::rgba", "amp_short_vectors/Concurrency::graphics::unorm_4::gra", "amp_short_vectors/Concurrency::graphics::unorm_4::ba", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zyx", "amp_short_vectors/Concurrency::graphics::unorm_4::operator=", "amp_short_vectors/Concurrency::graphics::unorm_4::set_x", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xzw", "amp_short_vectors/Concurrency::graphics::unorm_4::rga", "amp_short_vectors/Concurrency::graphics::unorm_4::get_yw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_z", "amp_short_vectors/Concurrency::graphics::unorm_4::yzx", "amp_short_vectors/Concurrency::graphics::unorm_4::set_yzx", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zwx", "amp_short_vectors/Concurrency::graphics::unorm_4::xwzy", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zwxy", "amp_short_vectors/Concurrency::graphics::unorm_4::get_yxz", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xzy", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xwyz", "amp_short_vectors/Concurrency::graphics::unorm_4::yzwx", "amp_short_vectors/Concurrency::graphics::unorm_4::bagr", "amp_short_vectors/Concurrency::graphics::unorm_4::yxwz", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xz", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xyz", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zyxw", "amp_short_vectors/Concurrency::graphics::unorm_4::bar", "amp_short_vectors/Concurrency::graphics::unorm_4::zyw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wxz", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xy", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zxy", "amp_short_vectors/Concurrency::graphics::unorm_4::yzw", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wyxz", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zwyx", "amp_short_vectors/Concurrency::graphics::unorm_4::wyzx", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wz", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zwy", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wx", "amp_short_vectors/Concurrency::graphics::unorm_4::zyxw", "amp_short_vectors/Concurrency::graphics::unorm_4::rbga", "amp_short_vectors/Concurrency::graphics::unorm_4::rabg", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zwxy", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zxy", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xwz", "amp_short_vectors/Concurrency::graphics::unorm_4::abr", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zwyx", "amp_short_vectors/Concurrency::graphics::unorm_4::set_yzxw", "amp_short_vectors/Concurrency::graphics::unorm_4::zywx", "amp_short_vectors/Concurrency::graphics::unorm_4::get_yzwx", "amp_short_vectors/Concurrency::graphics::unorm_4::zyx", "amp_short_vectors/Concurrency::graphics::unorm_4::g", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xwz", "amp_short_vectors/Concurrency::graphics::unorm_4::zwy", "amp_short_vectors/Concurrency::graphics::unorm_4::gbar", "amp_short_vectors/Concurrency::graphics::unorm_4::zx", "amp_short_vectors/Concurrency::graphics::unorm_4::xzwy", "amp_short_vectors/Concurrency::graphics::unorm_4::bgr", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xwzy", "amp_short_vectors/Concurrency::graphics::unorm_4::set_yx", "amp_short_vectors/Concurrency::graphics::unorm_4::set_w", "amp_short_vectors/Concurrency::graphics::unorm_4::set_yxw", "amp_short_vectors/Concurrency::graphics::unorm_4::wxzy", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wy", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zywx", "amp_short_vectors/Concurrency::graphics::unorm_4::agrb", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zxwy", "amp_short_vectors/Concurrency::graphics::unorm_4::zxw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xywz", "amp_short_vectors/Concurrency::graphics::unorm_4::get_yzw", "amp_short_vectors/Concurrency::graphics::unorm_4::ywzx", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wxy", "amp_short_vectors/Concurrency::graphics::unorm_4::get_yxzw", "amp_short_vectors/Concurrency::graphics::unorm_4::rgab", "amp_short_vectors/Concurrency::graphics::unorm_4::yxz", "amp_short_vectors/Concurrency::graphics::unorm_4::rbg", "amp_short_vectors/Concurrency::graphics::unorm_4::set_ywz", "amp_short_vectors/Concurrency::graphics::unorm_4::get_yzxw", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wy", "amp_short_vectors/Concurrency::graphics::unorm_4::zxwy", "amp_short_vectors/Concurrency::graphics::unorm_4::gr", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xzyw", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wzy", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xzw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zwx", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zy", "amp_short_vectors/Concurrency::graphics::unorm_4::zw", "amp_short_vectors/Concurrency::graphics::unorm_4::xz", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zyxw", "amp_short_vectors/Concurrency::graphics::unorm_4::agbr", "amp_short_vectors/Concurrency::graphics::unorm_4::gb", "amp_short_vectors/Concurrency::graphics::unorm_4::get_yxw", "amp_short_vectors/Concurrency::graphics::unorm_4::get_yz", "amp_short_vectors/Concurrency::graphics::unorm_4::operator+=", "amp_short_vectors/Concurrency::graphics::unorm_4::ag", "amp_short_vectors/Concurrency::graphics::unorm_4::grab", "amp_short_vectors/Concurrency::graphics::unorm_4::barg", "amp_short_vectors/Concurrency::graphics::unorm_4::r", "amp_short_vectors/Concurrency::graphics::unorm_4::wx", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wyx", "amp_short_vectors/Concurrency::graphics::unorm_4::abgr", "amp_short_vectors/Concurrency::graphics::unorm_4::yxw", "amp_short_vectors/Concurrency::graphics::unorm_4::z", "amp_short_vectors/Concurrency::graphics::unorm_4::grba", "amp_short_vectors/Concurrency::graphics::unorm_4::operator-=", "amp_short_vectors/Concurrency::graphics::unorm_4::gar", "amp_short_vectors/Concurrency::graphics::unorm_4::operator-", "amp_short_vectors/Concurrency::graphics::unorm_4::xyw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xyw", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wzxy", "amp_short_vectors/Concurrency::graphics::unorm_4::brg", "amp_short_vectors/Concurrency::graphics::unorm_4::wy", "amp_short_vectors/Concurrency::graphics::unorm_4::wxz", "amp_short_vectors/Concurrency::graphics::unorm_4::wxyz", "amp_short_vectors/Concurrency::graphics::unorm_4::wyz", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wxz", "amp_short_vectors/Concurrency::graphics::unorm_4::get_xyzw", "amp_short_vectors/Concurrency::graphics::unorm_4::xzw", "amp_short_vectors/Concurrency::graphics::unorm_4::xwyz", "amp_short_vectors/Concurrency::graphics::unorm_4::zwx", "amp_short_vectors/Concurrency::graphics::unorm_4::xy", "amp_short_vectors/Concurrency::graphics::unorm_4::set_zx", "amp_short_vectors/Concurrency::graphics::unorm_4::brga", "amp_short_vectors/Concurrency::graphics::unorm_4::get_zxw", "amp_short_vectors/Concurrency::graphics::unorm_4", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wzyx", "amp_short_vectors/Concurrency::graphics::unorm_4::wzyx", "amp_short_vectors/Concurrency::graphics::unorm_4::yzxw", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wz", "amp_short_vectors/Concurrency::graphics::unorm_4::xwy", "amp_short_vectors/Concurrency::graphics::unorm_4::set_ywxz", "amp_short_vectors/Concurrency::graphics::unorm_4::set_xzy", "amp_short_vectors/Concurrency::graphics::unorm_4::arg", "amp_short_vectors/Concurrency::graphics::unorm_4::set_wyz", "amp_short_vectors/Concurrency::graphics::unorm_4::ywz", "amp_short_vectors/Concurrency::graphics::unorm_4::abrg", "amp_short_vectors/Concurrency::graphics::unorm_4::wyx", "amp_short_vectors/Concurrency::graphics::unorm_4::rb", "amp_short_vectors/Concurrency::graphics::unorm_4::get_wzyx"] -ms.assetid: dd216a9d-95f7-4978-8e78-6cb9c781a7e9 ---- -# unorm_4 Class - -Represents a short vector of four unsigned normal numbers. - -## Syntax - -```cpp -class unorm_4; -``` - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`value_type`|| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[unorm_4 Constructor](#ctor)|Overloaded. Default constructor, initializes all elements with 0.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|unorm_4::get_w|| -|unorm_4::get_wx|| -|unorm_4::get_wxy|| -|unorm_4::get_wxyz|| -|unorm_4::get_wxz|| -|unorm_4::get_wxzy|| -|unorm_4::get_wy|| -|unorm_4::get_wyx|| -|unorm_4::get_wyxz|| -|unorm_4::get_wyz|| -|unorm_4::get_wyzx|| -|unorm_4::get_wz|| -|unorm_4::get_wzx|| -|unorm_4::get_wzxy|| -|unorm_4::get_wzy|| -|unorm_4::get_wzyx|| -|unorm_4::get_x|| -|unorm_4::get_xw|| -|unorm_4::get_xwy|| -|unorm_4::get_xwyz|| -|unorm_4::get_xwz|| -|unorm_4::get_xwzy|| -|unorm_4::get_xy|| -|unorm_4::get_xyw|| -|unorm_4::get_xywz|| -|unorm_4::get_xyz|| -|unorm_4::get_xyzw|| -|unorm_4::get_xz|| -|unorm_4::get_xzw|| -|unorm_4::get_xzwy|| -|unorm_4::get_xzy|| -|unorm_4::get_xzyw|| -|unorm_4::get_y|| -|unorm_4::get_yw|| -|unorm_4::get_ywx|| -|unorm_4::get_ywxz|| -|unorm_4::get_ywz|| -|unorm_4::get_ywzx|| -|unorm_4::get_yx|| -|unorm_4::get_yxw|| -|unorm_4::get_yxwz|| -|unorm_4::get_yxz|| -|unorm_4::get_yxzw|| -|unorm_4::get_yz|| -|unorm_4::get_yzw|| -|unorm_4::get_yzwx|| -|unorm_4::get_yzx|| -|unorm_4::get_yzxw|| -|unorm_4::get_z|| -|unorm_4::get_zw|| -|unorm_4::get_zwx|| -|unorm_4::get_zwxy|| -|unorm_4::get_zwy|| -|unorm_4::get_zwyx|| -|unorm_4::get_zx|| -|unorm_4::get_zxw|| -|unorm_4::get_zxwy|| -|unorm_4::get_zxy|| -|unorm_4::get_zxyw|| -|unorm_4::get_zy|| -|unorm_4::get_zyw|| -|unorm_4::get_zywx|| -|unorm_4::get_zyx|| -|unorm_4::get_zyxw|| -|unorm_4::ref_a|| -|unorm_4::ref_b|| -|unorm_4::ref_g|| -|unorm_4::ref_r|| -|unorm_4::ref_w|| -|unorm_4::ref_x|| -|unorm_4::ref_y|| -|unorm_4::ref_z|| -|unorm_4::set_w|| -|unorm_4::set_wx|| -|unorm_4::set_wxy|| -|unorm_4::set_wxyz|| -|unorm_4::set_wxz|| -|unorm_4::set_wxzy|| -|unorm_4::set_wy|| -|unorm_4::set_wyx|| -|unorm_4::set_wyxz|| -|unorm_4::set_wyz|| -|unorm_4::set_wyzx|| -|unorm_4::set_wz|| -|unorm_4::set_wzx|| -|unorm_4::set_wzxy|| -|unorm_4::set_wzy|| -|unorm_4::set_wzyx|| -|unorm_4::set_x|| -|unorm_4::set_xw|| -|unorm_4::set_xwy|| -|unorm_4::set_xwyz|| -|unorm_4::set_xwz|| -|unorm_4::set_xwzy|| -|unorm_4::set_xy|| -|unorm_4::set_xyw|| -|unorm_4::set_xywz|| -|unorm_4::set_xyz|| -|unorm_4::set_xyzw|| -|unorm_4::set_xz|| -|unorm_4::set_xzw|| -|unorm_4::set_xzwy|| -|unorm_4::set_xzy|| -|unorm_4::set_xzyw|| -|unorm_4::set_y|| -|unorm_4::set_yw|| -|unorm_4::set_ywx|| -|unorm_4::set_ywxz|| -|unorm_4::set_ywz|| -|unorm_4::set_ywzx|| -|unorm_4::set_yx|| -|unorm_4::set_yxw|| -|unorm_4::set_yxwz|| -|unorm_4::set_yxz|| -|unorm_4::set_yxzw|| -|unorm_4::set_yz|| -|unorm_4::set_yzw|| -|unorm_4::set_yzwx|| -|unorm_4::set_yzx|| -|unorm_4::set_yzxw|| -|unorm_4::set_z|| -|unorm_4::set_zw|| -|unorm_4::set_zwx|| -|unorm_4::set_zwxy|| -|unorm_4::set_zwy|| -|unorm_4::set_zwyx|| -|unorm_4::set_zx|| -|unorm_4::set_zxw|| -|unorm_4::set_zxwy|| -|unorm_4::set_zxy|| -|unorm_4::set_zxyw|| -|unorm_4::set_zy|| -|unorm_4::set_zyw|| -|unorm_4::set_zywx|| -|unorm_4::set_zyx|| -|unorm_4::set_zyxw|| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|unorm_4::operator-|| -|unorm_4::operator--|| -|unorm_4::operator*=|| -|unorm_4::operator/=|| -|unorm_4::operator++|| -|unorm_4::operator+=|| -|unorm_4::operator=|| -|unorm_4::operator-=|| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[size Constant](#unorm_4__size)|| - -### Public Data Members - -|Name|Description| -|----------|-----------------| -|unorm_4::a|| -|unorm_4::ab|| -|unorm_4::abg|| -|unorm_4::abgr|| -|unorm_4::abr|| -|unorm_4::abrg|| -|unorm_4::ag|| -|unorm_4::agb|| -|unorm_4::agbr|| -|unorm_4::agr|| -|unorm_4::agrb|| -|unorm_4::ar|| -|unorm_4::arb|| -|unorm_4::arbg|| -|unorm_4::arg|| -|unorm_4::argb|| -|unorm_4::b|| -|unorm_4::ba|| -|unorm_4::bag|| -|unorm_4::bagr|| -|unorm_4::bar|| -|unorm_4::barg|| -|unorm_4::bg|| -|unorm_4::bga|| -|unorm_4::bgar|| -|unorm_4::bgr|| -|unorm_4::bgra|| -|unorm_4::br|| -|unorm_4::bra|| -|unorm_4::brag|| -|unorm_4::brg|| -|unorm_4::brga|| -|unorm_4::g|| -|unorm_4::ga|| -|unorm_4::gab|| -|unorm_4::gabr|| -|unorm_4::gar|| -|unorm_4::garb|| -|unorm_4::gb|| -|unorm_4::gba|| -|unorm_4::gbar|| -|unorm_4::gbr|| -|unorm_4::gbra|| -|unorm_4::gr|| -|unorm_4::gra|| -|unorm_4::grab|| -|unorm_4::grb|| -|unorm_4::grba|| -|unorm_4::r|| -|unorm_4::ra|| -|unorm_4::rab|| -|unorm_4::rabg|| -|unorm_4::rag|| -|unorm_4::ragb|| -|unorm_4::rb|| -|unorm_4::rba|| -|unorm_4::rbag|| -|unorm_4::rbg|| -|unorm_4::rbga|| -|unorm_4::rg|| -|unorm_4::rga|| -|unorm_4::rgab|| -|unorm_4::rgb|| -|unorm_4::rgba|| -|unorm_4::w|| -|unorm_4::wx|| -|unorm_4::wxy|| -|unorm_4::wxyz|| -|unorm_4::wxz|| -|unorm_4::wxzy|| -|unorm_4::wy|| -|unorm_4::wyx|| -|unorm_4::wyxz|| -|unorm_4::wyz|| -|unorm_4::wyzx|| -|unorm_4::wz|| -|unorm_4::wzx|| -|unorm_4::wzxy|| -|unorm_4::wzy|| -|unorm_4::wzyx|| -|unorm_4::x|| -|unorm_4::xw|| -|unorm_4::xwy|| -|unorm_4::xwyz|| -|unorm_4::xwz|| -|unorm_4::xwzy|| -|unorm_4::xy|| -|unorm_4::xyw|| -|unorm_4::xywz|| -|unorm_4::xyz|| -|unorm_4::xyzw|| -|unorm_4::xz|| -|unorm_4::xzw|| -|unorm_4::xzwy|| -|unorm_4::xzy|| -|unorm_4::xzyw|| -|unorm_4::y|| -|unorm_4::yw|| -|unorm_4::ywx|| -|unorm_4::ywxz|| -|unorm_4::ywz|| -|unorm_4::ywzx|| -|unorm_4::yx|| -|unorm_4::yxw|| -|unorm_4::yxwz|| -|unorm_4::yxz|| -|unorm_4::yxzw|| -|unorm_4::yz|| -|unorm_4::yzw|| -|unorm_4::yzwx|| -|unorm_4::yzx|| -|unorm_4::yzxw|| -|unorm_4::z|| -|unorm_4::zw|| -|unorm_4::zwx|| -|unorm_4::zwxy|| -|unorm_4::zwy|| -|unorm_4::zwyx|| -|unorm_4::zx|| -|unorm_4::zxw|| -|unorm_4::zxwy|| -|unorm_4::zxy|| -|unorm_4::zxyw|| -|unorm_4::zy|| -|unorm_4::zyw|| -|unorm_4::zywx|| -|unorm_4::zyx|| -|unorm_4::zyxw|| - -## Inheritance Hierarchy - -`unorm_4` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## unorm_4 - -Default constructor, initializes all elements with 0. - -```cpp -unorm_4() restrict(amp, - cpu); - -unorm_4( - unorm _V0, - unorm _V1, - unorm _V2, - unorm _V3) restrict(amp, - cpu); - -unorm_4( - float _V0, - float _V1, - float _V2, - float _V3) restrict(amp, - cpu); - -unorm_4( - unorm _V) restrict(amp, - cpu); - -explicit unorm_4( - float _V) restrict(amp, - cpu); - -unorm_4( - const unorm_4& _Other) restrict(amp, - cpu); - -explicit inline unorm_4( - const uint_4& _Other) restrict(amp, - cpu); - -explicit inline unorm_4( - const int_4& _Other) restrict(amp, - cpu); - -explicit inline unorm_4( - const float_4& _Other) restrict(amp, - cpu); - -explicit inline unorm_4( - const norm_4& _Other) restrict(amp, - cpu); - -explicit inline unorm_4( - const double_4& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V0*
-The value to initialize element 0. - -*_V1*
-The value to initialize element 1. - -*_V2*
-The value to initialize element 2. - -*_V3*
-The value to initialize element 3. - -*_V*
-The value for initialization. - -*_Other*
-The object used to initialize. - -## size - -```cpp -static const int size = 4; -``` - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/unorm-class.md b/docs/parallel/amp/reference/unorm-class.md deleted file mode 100644 index a59ea39f7c5..00000000000 --- a/docs/parallel/amp/reference/unorm-class.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -description: "Learn more about: unorm Class" -title: "unorm Class" -ms.date: "11/04/2016" -f1_keywords: ["unorm", "AMP_SHORT_VECTORS/unorm", "AMP_SHORT_VECTORS/Concurrency::graphics::unorm Constructor"] -ms.assetid: bc30bd20-6452-4d5f-9158-3b11c4c16ed2 ---- -# unorm Class - -Represent a unorm number. Each element is a floating point number in the range of [0.0f, 1.0f]. - -## Syntax - -```cpp -class unorm; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[unorm Constructor](#ctor)|Overloaded. Default constructor. Initialize to 0.0f.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|unorm::operator--|| -|unorm::operator float|Conversion operator. Convert the unorm number to a floating point value.| -|unorm::operator*=|| -|unorm::operator/=|| -|unorm::operator++|| -|unorm::operator+=|| -|unorm::operator=|| -|unorm::operator-=|| - -## Inheritance Hierarchy - -`unorm` - -## Requirements - -**Header:** amp_short_vectors.h - -**Namespace:** Concurrency::graphics - -## unorm - -Default constructor. Initialize to 0.0f. - -```cpp -unorm( - void) restrict(amp, - cpu); - -explicit unorm( - float _V) restrict(amp, - cpu); - -explicit unorm( - unsigned int _V) restrict(amp, - cpu); - -explicit unorm( - int _V) restrict(amp, - cpu); - -explicit unorm( - double _V) restrict(amp, - cpu); - -unorm( - const unorm& _Other) restrict(amp, - cpu); - -inline explicit unorm( - const norm& _Other) restrict(amp, - cpu); -``` - -### Parameters - -*_V*
-The value used to initialize. - -*_Other*
-The norm object used to initialize. - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/reference/unsupported-feature-class.md b/docs/parallel/amp/reference/unsupported-feature-class.md deleted file mode 100644 index 637c3551bbd..00000000000 --- a/docs/parallel/amp/reference/unsupported-feature-class.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -description: "Learn more about: unsupported_feature Class" -title: "unsupported_feature Class" -ms.date: "03/27/2019" -f1_keywords: ["unsupported_feature", "AMPRT/unsupported_feature", "AMPRT/Concurrency::unsupported_feature"] -helpviewer_keywords: ["unsupported_feature class"] -ms.assetid: 6b1ab917-df13-48c7-9648-7cb2465a0ff5 ---- -# unsupported_feature Class - -The exception that is thrown when an unsupported feature is used. - -## Syntax - -```cpp -class unsupported_feature : public runtime_exception; -``` - -## Members - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[unsupported_feature Constructor](#unsupported_feature)|Constructs a new instance of the `unsupported_feature` exception.| - -## Inheritance Hierarchy - -`exception` - -`runtime_exception` - -`unsupported_feature` - -## unsupported_feature - - Constructs a new instance of the `unsupported_feature` exception. - -### Syntax - -```cpp -explicit unsupported_feature( - const char * _Message ) throw(); - -unsupported_feature() throw(); -``` - -### Parameters - -*_Message*
-A description of the error. - -### Return Value - -The `unsupported_feature` object. - -## Requirements - -**Header:** amprt.h - -**Namespace:** Concurrency - -## See also - -[Concurrency Namespace (C++ AMP)](concurrency-namespace-cpp-amp.md) diff --git a/docs/parallel/amp/reference/writeonly-texture-view-class.md b/docs/parallel/amp/reference/writeonly-texture-view-class.md deleted file mode 100644 index cedd6714dc1..00000000000 --- a/docs/parallel/amp/reference/writeonly-texture-view-class.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -description: "Learn more about: writeonly_texture_view Class" -title: "writeonly_texture_view Class" -ms.date: "11/04/2016" -f1_keywords: ["writeonly_texture_view", "AMP_GRAPHICS/writeonly_texture_view", "AMP_GRAPHICS/Concurrency::graphics::writeonly_texture_view", "AMP_GRAPHICS/Concurrency::graphics::writeonly_texture_view::set", "AMP_GRAPHICS/Concurrency::graphics::rank Constant"] -ms.assetid: 8d117ad3-0a1c-41ae-b29c-7c95fdd4d04d ---- -# writeonly_texture_view Class - -Provides writeonly access to a texture. - -## Syntax - -```cpp -template < - typename value_type, - int _Rank -> -class writeonly_texture_view; - -template < - typename value_type, - int _Rank -> -class writeonly_texture_view : public details::_Texture_base; -``` - -### Parameters - -*value_type*
-The type of the elements in the texture. - -*_Rank*
-The rank of the texture. - -## Members - -### Public Typedefs - -|Name|Description| -|----------|-----------------| -|`scalar_type`|| -|`value_type`|The type of the elements in the texture.| - -### Public Constructors - -|Name|Description| -|----------|-----------------| -|[writeonly_texture_view Constructor](#ctor)|Initializes a new instance of the `writeonly_texture_view` class.| -|[~writeonly_texture_view Destructor](#ctor)|Destroys the `writeonly_texture_view` object.| - -### Public Methods - -|Name|Description| -|----------|-----------------| -|[set](#set)|Sets the value of the element at the specified index.| - -### Public Operators - -|Name|Description| -|----------|-----------------| -|[operator=](#operator_eq)|Copies the specified `writeonly_texture_view` object to this one.| - -### Public Constants - -|Name|Description| -|----------|-----------------| -|[rank Constant](#rank)|Gets the rank of the `writeonly_texture_view` object.| - -## Inheritance Hierarchy - -`_Texture_base` - -`writeonly_texture_view` - -## Requirements - -**Header:** amp_graphics.h - -**Namespace:** Concurrency::graphics - -## ~writeonly_texture_view - -Destroys the `writeonly_texture_view` object. - -```cpp -~writeonly_texture_view() restrict(amp,cpu); -``` - -## operator= - -Copies the specified `writeonly_texture_view` object to this one. - -```cpp -writeonly_texture_view& operator= ( - const writeonly_texture_view& _Other) restrict(amp,cpu); -``` - -### Parameters - -*_Other*
-`writeonly_texture_view` object to copy from. - -### Return Value - -A reference to this `writeonly_texture_view` object. - -## rank - -Gets the rank of the `writeonly_texture_view` object. - -```cpp -static const int rank = _Rank; -``` - -## set - -Sets the value of the element at the specified index. - -```cpp -void set( - const index<_Rank>& _Index, - const value_type& value) const restrict(amp); -``` - -### Parameters - -*_Index*
-The index of the element. - -*value*
-The new value of the element. - -## writeonly_texture_view - -Initializes a new instance of the `writeonly_texture_view` class. - -```cpp -writeonly_texture_view( - texture& _Src) restrict(amp); - -writeonly_texture_view( - const writeonly_texture_view& _Src) restrict(amp,cpu); -``` - -### Parameters - -*_Rank*
-The rank of the texture. - -*value_type*
-The type of the elements in the texture. - -*_Src*
-The texture that is used to create the `writeonly_texture_view`. - -## See also - -[Concurrency::graphics Namespace](concurrency-graphics-namespace.md) diff --git a/docs/parallel/amp/using-accelerator-and-accelerator-view-objects.md b/docs/parallel/amp/using-accelerator-and-accelerator-view-objects.md deleted file mode 100644 index 5546f803840..00000000000 --- a/docs/parallel/amp/using-accelerator-and-accelerator-view-objects.md +++ /dev/null @@ -1,184 +0,0 @@ ---- -title: "Using accelerator and accelerator_view Objects" -description: "Learn more about: Using accelerator and accelerator_view Objects" -ms.date: "11/04/2016" -ms.topic: how-to ---- -# Using accelerator and accelerator_view Objects - -You can use the [accelerator](reference/accelerator-class.md) and [accelerator_view](reference/accelerator-view-class.md) classes to specify the device or emulator to run your C++ AMP code on. A system might have several devices or emulators that differ by amount of memory, shared memory support, debugging support, or double-precision support. C++ Accelerated Massive Parallelism (C++ AMP) provides APIs that you can use to examine the available accelerators, set one as the default, specify multiple accelerator_views for multiple calls to parallel_for_each, and perform special debugging tasks. - -> [!NOTE] -> C++ AMP headers are deprecated starting with Visual Studio 2022 version 17.0. -> Including any AMP headers will generate build errors. Define `_SILENCE_AMP_DEPRECATION_WARNINGS` before including any AMP headers to silence the warnings. - -## Using the Default Accelerator - -The C++ AMP runtime picks a default accelerator, unless you write code to pick a specific one. The runtime chooses the default accelerator as follows: - -1. If the app is running in debug mode, an accelerator that supports debugging. - -2. Otherwise, the accelerator that's specified by the `CPPAMP_DEFAULT_ACCELERATOR` environment variable, if it's set. - -3. Otherwise, a non-emulated device. - -4. Otherwise, the device that has the greatest amount of available memory. - -5. Otherwise, a device that's not attached to the display. - -Additionally, the runtime specifies an `access_type` of `access_type_auto` for the default accelerator. This means that the default accelerator uses shared memory if it's supported and if its performance characteristics (bandwidth and latency) are known to be the same as dedicated (non-shared) memory. - -You can determine the properties of the default accelerator by constructing the default accelerator and examining its properties. The following code example prints the path, amount of accelerator memory, shared memory support, double-precision support, and limited double-precision support of the default accelerator. - -```cpp -void default_properties() { - accelerator default_acc; - std::wcout << default_acc.device_path << "\n"; - std::wcout << default_acc.dedicated_memory << "\n"; - std::wcout << (accs[i].supports_cpu_shared_memory ? - "CPU shared memory: true" : "CPU shared memory: false") << "\n"; - std::wcout << (accs[i].supports_double_precision ? - "double precision: true" : "double precision: false") << "\n"; - std::wcout << (accs[i].supports_limited_double_precision ? - "limited double precision: true" : "limited double precision: false") << "\n"; -} -``` - -### CPPAMP_DEFAULT_ACCELERATOR Environment Variable - -You can set the `CPPAMP_DEFAULT_ACCELERATOR` environment variable to specify the `accelerator::device_path` of the default accelerator. The path is hardware-dependent. The following code uses the `accelerator::get_all` function to retrieve a list of the available accelerators and then displays the path and characteristics of each accelerator. - -```cpp -void list_all_accelerators() -{ - std::vector accs = accelerator::get_all(); - - for (int i = 0; i accs = accelerator::get_all(); - accelerator acc_chosen = accs[0]; - - for (int i = 0; i acc_chosen.dedicated_memory) { - acc_chosen = accs[i]; - } - } - - std::wcout << "The accelerator with the most memory is " - << acc_chosen.device_path << "\n" - << acc_chosen.dedicated_memory << ".\n"; -} -``` - -> [!NOTE] -> One of the accelerators that are returned by `accelerator::get_all` is the CPU accelerator. You cannot execute code on the CPU accelerator. To filter out the CPU accelerator, compare the value of the [device_path](reference/accelerator-class.md#device_path) property of the accelerator that's returned by `accelerator::get_all` with the value of the [accelerator::cpu_accelerator](reference/accelerator-class.md#cpu_accelerator). For more information, see the "Special Accelerators" section in this article. - -## Shared Memory - -Shared memory is memory that can be accessed by both the CPU and the accelerator. The use of shared memory eliminates or significantly reduces the overhead of copying data between the CPU and the accelerator. Although the memory is shared, it cannot be accessed concurrently by both the CPU and the accelerator, and doing so causes undefined behavior. The accelerator property [supports_cpu_shared_memory](reference/accelerator-class.md#supports_cpu_shared_memory) returns **`true`** if the accelerator supports shared memory, and the [default_cpu_access_type](reference/accelerator-class.md#default_cpu_access_type) property gets the default [access_type](reference/concurrency-namespace-enums-amp.md#access_type) for memory allocated on the `accelerator`—for example, **array**s associated with the `accelerator`, or `array_view` objects accessed on the `accelerator`. - -The C++ AMP runtime automatically chooses the best default `access_type` for each `accelerator`, but the performance characteristics (bandwidth and latency) of shared memory can be worse than those of dedicated (non-shared) accelerator memory when reading from the CPU, writing from the CPU, or both. If shared memory performs as well as dedicated memory for reading and writing from the CPU, the runtime defaults to `access_type_read_write`; otherwise, the runtime chooses a more conservative default `access_type`, and allows the app to override it if the memory access patterns of its computation kernels benefit from a different `access_type`. - -The following code example shows how to determine whether the default accelerator supports shared memory, and then overrides its default access type and creates an `accelerator_view` from it. - -```cpp -#include -#include - -using namespace Concurrency; - -int main() -{ - accelerator acc = accelerator(accelerator::default_accelerator); - - // Early out if the default accelerator doesn't support shared memory. - if (!acc.supports_cpu_shared_memory) - { - std::cout << "The default accelerator does not support shared memory" << std::endl; - return 1; - } - - // Override the default CPU access type. - acc.set_default_cpu_access_type(access_type_read_write); - - // Create an accelerator_view from the default accelerator. The - // accelerator_view reflects the default_cpu_access_type of the - // accelerator it's associated with. - accelerator_view acc_v = acc.default_view; -} -``` - -An `accelerator_view` always reflects the `default_cpu_access_type` of the `accelerator` it's associated with, and it provides no interface to override or change its `access_type`. - -## Changing the Default Accelerator - -You can change the default accelerator by calling the `accelerator::set_default` method. You can change the default accelerator only once per app execution and you must change it before any code is executed on the GPU. Any subsequent function calls to change the accelerator return **`false`**. If you want to use a different accelerator in a call to `parallel_for_each`, read the "Using Multiple Accelerators" section in this article. The following code example sets the default accelerator to one that is not emulated, is not connected to a display, and supports double-precision. - -```cpp -bool pick_accelerator() -{ - std::vector accs = accelerator::get_all(); - accelerator chosen_one; - - auto result = std::find_if(accs.begin(), accs.end(), - [] (const accelerator& acc) { - return !acc.is_emulated && - acc.supports_double_precision && - !acc.has_display; - }); - - if (result != accs.end()) { - chosen_one = *(result); - } - - std::wcout < [!NOTE] -> C++ AMP headers are deprecated starting with Visual Studio 2022 version 17.0. -> Including any AMP headers will generate build errors. Define `_SILENCE_AMP_DEPRECATION_WARNINGS` before including any AMP headers to silence the warnings. - -## Performance considerations - -If you're using Visual C++ component extensions C++/CX to create your Universal Windows Platform (UWP) app, we recommend that you use plain-old-data (POD) types together with contiguous storage—for example, `std::vector` or C-style arrays—for data that will be used with C++ AMP. This can help you achieve higher performance than by using non-POD types or Windows Runtime containers because no marshaling has to occur. - -In a C++ AMP kernel, to access data that's stored in this way, just wrap the `std::vector` or array storage in a `concurrency::array_view` and then use the array view in a `concurrency::parallel_for_each` loop: - -```cpp -// simple vector addition example -std::vector data0(1024, 1); -std::vector data1(1024, 2); -std::vector data_out(data0.size(), 0); - -concurrency::array_view av0(data0.size(), data0); -concurrency::array_view av1(data1.size(), data1); -concurrency::array_view av2(data_out.size(), data2); - -av2.discard_data(); - -concurrency::parallel_for_each(av0.extent, [=](concurrency::index<1> idx) restrict(amp) - { - av2[idx] = av0[idx] + av1[idx]; - }); -``` - -## Marshaling Windows Runtime types - -When you work with Windows Runtime APIs, you might want to use C++ AMP on data that's stored in a Windows Runtime container such as a `Platform::Array^` or in complex data types such as classes or structs that are declared by using the **ref** keyword or the **value** keyword. In these situations, you have to do some extra work to make the data available to C++ AMP. - -### Platform::Array\^, where T is a POD type - -When you encounter a `Platform::Array^` and T is a POD type, you can access its underlying storage just by using the `get` member function: - -```cpp -Platform::Array^ arr; // Assume that this was returned by a Windows Runtime API -concurrency::array_view av(arr->Length, &arr->get(0)); -``` - -If T is not a POD type, use the technique that's described in the following section to use the data with C++ AMP. - -### Windows Runtime types: ref classes and value classes - -C++ AMP doesn't support complex data types. This includes non-POD types and any types that are declared by using the **ref** keyword or the **value** keyword. If an unsupported type is used in a `restrict(amp)` context, a compile-time error is generated. - -When you encounter an unsupported type, you can copy interesting parts of its data into a `concurrency::array` object. In addition to making the data available for C++ AMP to consume, this manual-copy approach can also improve performance by maximizing data locality, and by ensuring that data that won't be used isn't copied to the accelerator. You can improve performance further by using a *staging array*, which is a special form of `concurrency::array` that provides a hint to the AMP runtime that the array should be optimized for frequent transfer between it and other arrays on the specified accelerator. - -```cpp -// pixel_color.h -ref class pixel_color sealed -{ -public: - pixel_color(Platform::String^ color_name, int red, int green, int blue) - { - name = color_name; - r = red; - g = green; - b = blue; - } - - property Platform::String^ name; - property int r; - property int g; - property int b; -}; - -// Some other file - -std::vector pixels (256); - -for (pixel_color ^pixel : pixels) -{ - pixels.push_back(ref new pixel_color("blue", 0, 0, 255)); -} - -// Create the accelerators -auto cpuAccelerator = concurrency::accelerator(concurrency::accelerator::cpu_accelerator); -auto devAccelerator = concurrency::accelerator(concurrency::accelerator::default_accelerator); - -// Create the staging arrays -concurrency::array red_vec(256, cpuAccelerator.default_view, devAccelerator.default_view); -concurrency::array blue_vec(256, cpuAccelerator.default_view, devAccelerator.default_view); - -// Extract data from the complex array of structs into staging arrays. -concurrency::parallel_for(0, 256, [&](int i) - { - red_vec[i] = pixels[i]->r; - blue_vec[i] = pixels[i]->b; - }); - -// Array views are still used to copy data to the accelerator -concurrency::array_view av_red(red_vec); -concurrency::array_view av_blue(blue_vec); - -// Change all pixels from blue to red. -concurrency::parallel_for_each(av_red.extent, [=](index<1> idx) restrict(amp) - { - av_red[idx] = 255; - av_blue[idx] = 0; - }); -``` - -## See also - -[Create your first UWP app using C++](/windows/uwp/get-started/create-a-basic-windows-10-app-in-cpp)
-[Creating Windows Runtime Components in C++](/windows/uwp/winrt-components/creating-windows-runtime-components-in-cpp) diff --git a/docs/parallel/amp/using-lambdas-function-objects-and-restricted-functions.md b/docs/parallel/amp/using-lambdas-function-objects-and-restricted-functions.md deleted file mode 100644 index dfe089c6702..00000000000 --- a/docs/parallel/amp/using-lambdas-function-objects-and-restricted-functions.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -description: "Learn more about: Using Lambdas, Function Objects, and Restricted Functions" -title: "Using Lambdas, Function Objects, and Restricted Functions" -ms.date: "11/04/2016" -ms.topic: concept-article ---- -# Using Lambdas, Function Objects, and Restricted Functions - -The C++ AMP code that you want to run on the accelerator is specified as an argument in a call to the [`parallel_for_each`](reference/concurrency-namespace-functions-amp.md#parallel_for_each) method. You can provide either a lambda expression or a function object (functor) as that argument. Additionally, the lambda expression or function object can call a C++ AMP-restricted function. This topic uses an array addition algorithm to demonstrate lambdas, function objects, and restricted functions. The following example shows the algorithm without C++ AMP code. Two 1-dimensional arrays of equal length are created. The corresponding integer elements are added and stored in a third 1-dimensional array. C++ AMP is not used. - -```cpp -void CpuMethod() { - - int aCPP[] = {1, 2, 3, 4, 5}; - int bCPP[] = {6, 7, 8, 9, 10}; - int sumCPP[5]; - - for (int idx = 0; idx <5; idx++) - { - sumCPP[idx] = aCPP[idx] + bCPP[idx]; - } - - for (int idx = 0; idx <5; idx++) - { - std::cout < a(5, aCPP); - - array_view b(5, bCPP); - - array_view sum(5, sumCPP); - - sum.discard_data(); - - parallel_for_each( - sum.extent, - [=](index<1> idx) restrict(amp) - { - sum[idx] = a[idx] + b[idx]; - }); - - for (int i = 0; i <5; i++) { - std::cout <& a, - const array_view& b, - const array_view& sum) - : a(a), b(b), sum(sum) - { - } - - void operator()(index<1> idx) restrict(amp) - { - sum[idx] = a[idx] + b[idx]; - } - -private: - array_view a; - array_view b; - array_view sum; -}; - -void AddArraysWithFunctionObject() { - int aCPP[] = {1, 2, 3, 4, 5}; - int bCPP[] = {6, 7, 8, 9, 10}; - int sumCPP[5]; - - array_view a(5, aCPP); - - array_view b(5, bCPP); - - array_view sum(5, sumCPP); - - sum.discard_data(); - - parallel_for_each( - sum.extent, - AdditionFunctionObject(a, b, sum)); - - for (int i = 0; i <5; i++) { - std::cout < idx, array_view sum, array_view a, array_view b) restrict(amp) -{ - sum[idx] = a[idx] + b[idx]; -} - -void AddArraysWithFunction() { - - int aCPP[] = {1, 2, 3, 4, 5}; - int bCPP[] = {6, 7, 8, 9, 10}; - int sumCPP[5]; - - array_view a(5, aCPP); - - array_view b(5, bCPP); - - array_view sum(5, sumCPP); - - sum.discard_data(); - - parallel_for_each( - sum.extent, - [=](index<1> idx) restrict(amp) - { - AddElementsWithRestrictedFunction(idx, sum, a, b); - }); - - for (int i = 0; i <5; i++) { - std::cout < -[Lambda Expression Syntax](../../cpp/lambda-expression-syntax.md)
-[Function Call](../../cpp/function-call-cpp.md)
-[Function Objects in the C++ Standard Library](../../standard-library/function-objects-in-the-stl.md)
-[restrict (C++ AMP)](../../cpp/restrict-cpp-amp.md) diff --git a/docs/parallel/amp/using-tiles.md b/docs/parallel/amp/using-tiles.md deleted file mode 100644 index e8b2840cdca..00000000000 --- a/docs/parallel/amp/using-tiles.md +++ /dev/null @@ -1,334 +0,0 @@ ---- -description: "Learn more about: Using Tiles" -title: "Using Tiles" -ms.date: "11/19/2018" -ms.topic: how-to ---- -# Using Tiles - -You can use tiling to maximize the acceleration of your app. Tiling divides threads into equal rectangular subsets or *tiles*. If you use an appropriate tile size and tiled algorithm, you can get even more acceleration from your C++ AMP code. The basic components of tiling are: - -- `tile_static` variables. The primary benefit of tiling is the performance gain from `tile_static` access. Access to data in `tile_static` memory can be significantly faster than access to data in the global space (`array` or `array_view` objects). An instance of a `tile_static` variable is created for each tile, and all threads in the tile have access to the variable. In a typical tiled algorithm, data is copied into `tile_static` memory once from global memory and then accessed many times from the `tile_static` memory. - -- [tile_barrier::wait Method](reference/tile-barrier-class.md#wait). A call to `tile_barrier::wait` suspends execution of the current thread until all of the threads in the same tile reach the call to `tile_barrier::wait`. You cannot guarantee the order that the threads will run in, only that no threads in the tile will execute past the call to `tile_barrier::wait` until all of the threads have reached the call. This means that by using the `tile_barrier::wait` method, you can perform tasks on a tile-by-tile basis rather than a thread-by-thread basis. A typical tiling algorithm has code to initialize the `tile_static` memory for the whole tile followed by a call to `tile_barrier::wait`. Code that follows `tile_barrier::wait` contains computations that require access to all the `tile_static` values. - -- Local and global indexing. You have access to the index of the thread relative to the entire `array_view` or `array` object and the index relative to the tile. Using the local index can make your code easier to read and debug. Typically, you use local indexing to access `tile_static` variables, and global indexing to access `array` and `array_view` variables. - -- [tiled_extent Class](../../parallel/amp/reference/tiled-extent-class.md) and [tiled_index Class](../../parallel/amp/reference/tiled-index-class.md). You use a `tiled_extent` object instead of an `extent` object in the `parallel_for_each` call. You use a `tiled_index` object instead of an `index` object in the `parallel_for_each` call. - -To take advantage of tiling, your algorithm must partition the compute domain into tiles and then copy the tile data into `tile_static` variables for faster access. - -## Example of Global, Tile, and Local Indices - -> [!NOTE] -> C++ AMP headers are deprecated starting with Visual Studio 2022 version 17.0. -> Including any AMP headers will generate build errors. Define `_SILENCE_AMP_DEPRECATION_WARNINGS` before including any AMP headers to silence the warnings. - -The following diagram represents an 8x9 matrix of data that is arranged in 2x3 tiles. - -![Diagram of an 8 by 9 matrix divided into 2 by 3 tiles.](../../parallel/amp/media/usingtilesmatrix.png) - -The following example displays the global, tile, and local indices of this tiled matrix. An `array_view` object is created by using elements of type `Description`. The `Description` holds the global, tile, and local indices of the element in the matrix. The code in the call to `parallel_for_each` sets the values of the global, tile, and local indices of each element. The output displays the values in the `Description` structures. - -```cpp -#include -#include -#include -#include -using namespace concurrency; - -const int ROWS = 8; -const int COLS = 9; - -// tileRow and tileColumn specify the tile that each thread is in. -// globalRow and globalColumn specify the location of the thread in the array_view. -// localRow and localColumn specify the location of the thread relative to the tile. -struct Description { - int value; - int tileRow; - int tileColumn; - int globalRow; - int globalColumn; - int localRow; - int localColumn; -}; - -// A helper function for formatting the output. -void SetConsoleColor(int color) { - int colorValue = (color == 0) 4 : 2; - SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), colorValue); -} - -// A helper function for formatting the output. -void SetConsoleSize(int height, int width) { - COORD coord; - - coord.X = width; - coord.Y = height; - SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coord); - - SMALL_RECT* rect = new SMALL_RECT(); - rect->Left = 0; - rect->Top = 0; - rect->Right = width; - rect->Bottom = height; - SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), true, rect); -} - -// This method creates an 8x9 matrix of Description structures. -// In the call to parallel_for_each, the structure is updated -// with tile, global, and local indices. -void TilingDescription() { - // Create 72 (8x9) Description structures. - std::vector descs; - for (int i = 0; i < ROWS * COLS; i++) { - Description d = {i, 0, 0, 0, 0, 0, 0}; - descs.push_back(d); - } - - // Create an array_view from the Description structures. - extent<2> matrix(ROWS, COLS); - array_view descriptions(matrix, descs); - - // Update each Description with the tile, global, and local indices. - parallel_for_each(descriptions.extent.tile< 2, 3>(), - [=] (tiled_index< 2, 3> t_idx) restrict(amp) - { - descriptions[t_idx].globalRow = t_idx.global[0]; - descriptions[t_idx].globalColumn = t_idx.global[1]; - descriptions[t_idx].tileRow = t_idx.tile[0]; - descriptions[t_idx].tileColumn = t_idx.tile[1]; - descriptions[t_idx].localRow = t_idx.local[0]; - descriptions[t_idx].localColumn= t_idx.local[1]; - }); - - // Print out the Description structure for each element in the matrix. - // Tiles are displayed in red and green to distinguish them from each other. - SetConsoleSize(100, 150); - for (int row = 0; row < ROWS; row++) { - for (int column = 0; column < COLS; column++) { - SetConsoleColor((descriptions(row, column).tileRow + descriptions(row, column).tileColumn) % 2); - std::cout << "Value: " << std::setw(2) << descriptions(row, column).value << " "; - } - std::cout << "\n"; - - for (int column = 0; column < COLS; column++) { - SetConsoleColor((descriptions(row, column).tileRow + descriptions(row, column).tileColumn) % 2); - std::cout << "Tile: " << "(" << descriptions(row, column).tileRow << "," << descriptions(row, column).tileColumn << ") "; - } - std::cout << "\n"; - - for (int column = 0; column < COLS; column++) { - SetConsoleColor((descriptions(row, column).tileRow + descriptions(row, column).tileColumn) % 2); - std::cout << "Global: " << "(" << descriptions(row, column).globalRow << "," << descriptions(row, column).globalColumn << ") "; - } - std::cout << "\n"; - - for (int column = 0; column < COLS; column++) { - SetConsoleColor((descriptions(row, column).tileRow + descriptions(row, column).tileColumn) % 2); - std::cout << "Local: " << "(" << descriptions(row, column).localRow << "," << descriptions(row, column).localColumn << ") "; - } - std::cout << "\n"; - std::cout << "\n"; - } -} - -int main() { - TilingDescription(); - char wait; - std::cin >> wait; -} -``` - -The main work of the example is in the definition of the `array_view` object and the call to `parallel_for_each`. - -1. The vector of `Description` structures is copied into an 8x9 `array_view` object. - -2. The `parallel_for_each` method is called with a `tiled_extent` object as the compute domain. The `tiled_extent` object is created by calling the `extent::tile()` method of the `descriptions` variable. The type parameters of the call to `extent::tile()`, `<2,3>`, specify that 2x3 tiles are created. Thus, the 8x9 matrix is tiled into 12 tiles, four rows and three columns. - -3. The `parallel_for_each` method is called by using a `tiled_index<2,3>` object (`t_idx`) as the index. The type parameters of the index (`t_idx`) must match the type parameters of the compute domain (`descriptions.extent.tile< 2, 3>()`). - -4. When each thread is executed, the index `t_idx` returns information about which tile the thread is in (`tiled_index::tile` property) and the location of the thread within the tile (`tiled_index::local` property). - -## Tile Synchronization—tile_static and tile_barrier::wait - -The previous example illustrates the tile layout and indices, but is not in itself very useful. Tiling becomes useful when the tiles are integral to the algorithm and exploit `tile_static` variables. Because all threads in a tile have access to `tile_static` variables, calls to `tile_barrier::wait` are used to synchronize access to the `tile_static` variables. Although all of the threads in a tile have access to the `tile_static` variables, there is no guaranteed order of execution of threads in the tile. The following example shows how to use `tile_static` variables and the `tile_barrier::wait` method to calculate the average value of each tile. Here are the keys to understanding the example: - -1. The rawData is stored in an 8x8 matrix. - -2. The tile size is 2x2. This creates a 4x4 grid of tiles and the averages can be stored in a 4x4 matrix by using an `array` object. There are only a limited number of types that you can capture by reference in an AMP-restricted function. The `array` class is one of them. - -3. The matrix size and sample size are defined by using `#define` statements, because the type parameters to `array`, `array_view`, `extent`, and `tiled_index` must be constant values. You can also use `const int static` declarations. As an additional benefit, it is trivial to change the sample size to calculate the average over 4x4 tiles. - -4. A `tile_static` 2x2 array of float values is declared for each tile. Although the declaration is in the code path for every thread, only one array is created for each tile in the matrix. - -5. There is a line of code to copy the values in each tile to the `tile_static` array. For each thread, after the value is copied to the array, execution on the thread stops due to the call to `tile_barrier::wait`. - -6. When all of the threads in a tile have reached the barrier, the average can be calculated. Because the code executes for every thread, there is an `if` statement to only calculate the average on one thread. The average is stored in the averages variable. The barrier is essentially the construct that controls calculations by tile, much as you might use a **`for`** loop. - -7. The data in the `averages` variable, because it is an `array` object, must be copied back to the host. This example uses the vector conversion operator. - -8. In the complete example, you can change SAMPLESIZE to 4 and the code executes correctly without any other changes. - -```cpp -#include -#include -using namespace concurrency; - -#define SAMPLESIZE 2 -#define MATRIXSIZE 8 -void SamplingExample() { - - // Create data and array_view for the matrix. - std::vector rawData; - for (int i = 0; i < MATRIXSIZE * MATRIXSIZE; i++) { - rawData.push_back((float)i); - } - extent<2> dataExtent(MATRIXSIZE, MATRIXSIZE); - array_view matrix(dataExtent, rawData); - - // Create the array for the averages. - // There is one element in the output for each tile in the data. - std::vector outputData; - int outputSize = MATRIXSIZE / SAMPLESIZE; - for (int j = 0; j < outputSize * outputSize; j++) { - outputData.push_back((float)0); - } - extent<2> outputExtent(MATRIXSIZE / SAMPLESIZE, MATRIXSIZE / SAMPLESIZE); - array averages(outputExtent, outputData.begin(), outputData.end()); - - // Use tiles that are SAMPLESIZE x SAMPLESIZE. - // Find the average of the values in each tile. - // The only reference-type variable you can pass into the parallel_for_each call - // is a concurrency::array. - parallel_for_each(matrix.extent.tile(), - [=, &averages] (tiled_index t_idx) restrict(amp) - { - // Copy the values of the tile into a tile-sized array. - tile_static float tileValues[SAMPLESIZE][SAMPLESIZE]; - tileValues[t_idx.local[0]][t_idx.local[1]] = matrix[t_idx]; - - // Wait for the tile-sized array to load before you calculate the average. - t_idx.barrier.wait(); - - // If you remove the if statement, then the calculation executes for every - // thread in the tile, and makes the same assignment to averages each time. - if (t_idx.local[0] == 0 && t_idx.local[1] == 0) { - for (int trow = 0; trow < SAMPLESIZE; trow++) { - for (int tcol = 0; tcol < SAMPLESIZE; tcol++) { - averages(t_idx.tile[0],t_idx.tile[1]) += tileValues[trow][tcol]; - } - } - averages(t_idx.tile[0],t_idx.tile[1]) /= (float) (SAMPLESIZE * SAMPLESIZE); - } - }); - - // Print out the results. - // You cannot access the values in averages directly. You must copy them - // back to a CPU variable. - outputData = averages; - for (int row = 0; row < outputSize; row++) { - for (int col = 0; col < outputSize; col++) { - std::cout << outputData[row*outputSize + col] << " "; - } - std::cout << "\n"; - } - // Output for SAMPLESIZE = 2 is: - // 4.5 6.5 8.5 10.5 - // 20.5 22.5 24.5 26.5 - // 36.5 38.5 40.5 42.5 - // 52.5 54.5 56.5 58.5 - - // Output for SAMPLESIZE = 4 is: - // 13.5 17.5 - // 45.5 49.5 -} - -int main() { - SamplingExample(); -} -``` - -## Race Conditions - -It might be tempting to create a `tile_static` variable named `total` and increment that variable for each thread, like this: - -```cpp -// Do not do this. -tile_static float total; -total += matrix[t_idx]; -t_idx.barrier.wait(); - -averages(t_idx.tile[0],t_idx.tile[1]) /= (float) (SAMPLESIZE* SAMPLESIZE); -``` - -The first problem with this approach is that `tile_static` variables cannot have initializers. The second problem is that there is a race condition on the assignment to `total`, because all of the threads in the tile have access to the variable in no particular order. You could program an algorithm to only allow one thread to access the total at each barrier, as shown next. However, this solution is not extensible. - -```cpp -// Do not do this. -tile_static float total; -if (t_idx.local[0] == 0&& t_idx.local[1] == 0) { - total = matrix[t_idx]; -} -t_idx.barrier.wait(); - -if (t_idx.local[0] == 0&& t_idx.local[1] == 1) { - total += matrix[t_idx]; -} -t_idx.barrier.wait(); - -// etc. -``` - -## Memory Fences - -There are two kinds of memory accesses that must be synchronized—global memory access and `tile_static` memory access. A `concurrency::array` object allocates only global memory. A `concurrency::array_view` can reference global memory, `tile_static` memory, or both, depending on how it was constructed. There are two kinds of memory that must be synchronized: - -- global memory - -- `tile_static` - -A *memory fence* ensures that memory accesses are available to other threads in the thread tile, and that memory accesses are executed according to program order. To ensure this, compilers and processors do not reorder reads and writes across the fence. In C++ AMP, a memory fence is created by a call to one of these methods: - -- [tile_barrier::wait Method](reference/tile-barrier-class.md#wait): Creates a fence around both global and `tile_static` memory. - -- [tile_barrier::wait_with_all_memory_fence Method](reference/tile-barrier-class.md#wait_with_all_memory_fence): Creates a fence around both global and `tile_static` memory. - -- [tile_barrier::wait_with_global_memory_fence Method](reference/tile-barrier-class.md#wait_with_global_memory_fence): Creates a fence around only global memory. - -- [tile_barrier::wait_with_tile_static_memory_fence Method](reference/tile-barrier-class.md#wait_with_tile_static_memory_fence): Creates a fence around only `tile_static` memory. - -Calling the specific fence that you require can improve the performance of your app. The barrier type affects how the compiler and the hardware reorder statements. For example, if you use a global memory fence, it applies only to global memory accesses and therefore, the compiler and the hardware might reorder reads and writes to `tile_static` variables on the two sides of the fence. - -In the next example, the barrier synchronizes the writes to `tileValues`, a `tile_static` variable. In this example, `tile_barrier::wait_with_tile_static_memory_fence` is called instead of `tile_barrier::wait`. - -```cpp -// Using a tile_static memory fence. -parallel_for_each(matrix.extent.tile(), - [=, &averages] (tiled_index t_idx) restrict(amp) -{ - // Copy the values of the tile into a tile-sized array. - tile_static float tileValues[SAMPLESIZE][SAMPLESIZE]; - tileValues[t_idx.local[0]][t_idx.local[1]] = matrix[t_idx]; - - // Wait for the tile-sized array to load before calculating the average. - t_idx.barrier.wait_with_tile_static_memory_fence(); - - // If you remove the if statement, then the calculation executes - // for every thread in the tile, and makes the same assignment to - // averages each time. - if (t_idx.local[0] == 0&& t_idx.local[1] == 0) { - for (int trow = 0; trow -[tile_static Keyword](../../cpp/tile-static-keyword.md) diff --git a/docs/parallel/amp/walkthrough-debugging-a-cpp-amp-application.md b/docs/parallel/amp/walkthrough-debugging-a-cpp-amp-application.md deleted file mode 100644 index d9c3ddfd4e3..00000000000 --- a/docs/parallel/amp/walkthrough-debugging-a-cpp-amp-application.md +++ /dev/null @@ -1,405 +0,0 @@ ---- -description: "Learn more about: Walkthrough: Debugging a C++ AMP application" -title: "Walkthrough: Debugging a C++ AMP application" -ms.date: 10/27/2021 -helpviewer_keywords: ["debugging, C++ Accelerated Massive Parallelism", "C++ AMP, debugging", "C++ Accelerated Massive Parallelism, debugging", "debugging, C++ AMP"] ---- -# Walkthrough: Debugging a C++ AMP application - -This article demonstrates how to debug an application that uses C++ Accelerated Massive Parallelism (C++ AMP) to take advantage of the graphics processing unit (GPU). It uses a parallel-reduction program that sums up a large array of integers. This walkthrough illustrates the following tasks: - -- Launching the GPU debugger. -- Inspecting GPU threads in the GPU Threads window. -- Using the **Parallel Stacks** window to simultaneously observe the call stacks of multiple GPU threads. -- Using the **Parallel Watch** window to inspect values of a single expression across multiple threads at the same time. -- Flagging, freezing, thawing, and grouping GPU threads. -- Executing all the threads of a tile to a specific location in code. - -## Prerequisites - -Before you start this walkthrough: - -> [!NOTE] -> C++ AMP headers are deprecated starting with Visual Studio 2022 version 17.0. -> Including any AMP headers will generate build errors. Define `_SILENCE_AMP_DEPRECATION_WARNINGS` before including any AMP headers to silence the warnings. - -- Read [C++ AMP Overview](../../parallel/amp/cpp-amp-overview.md). -- Make sure that line numbers are displayed in the text editor. For more information, see [How to: Display line numbers in the editor](/visualstudio/ide/reference/how-to-display-line-numbers-in-the-editor). -- Make sure you're running at least Windows 8 or Windows Server 2012 to support debugging on the software emulator. - -[!INCLUDE[note_settings_general](../../mfc/includes/note_settings_general_md.md)] - -### To create the sample project - -The instructions for creating a project vary depending on which version of Visual Studio you're using. Make sure you have the correct documentation version selected above the table of contents on this page. - -::: moniker range=">=msvc-160" - -### To create the sample project in Visual Studio - -1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a New Project** dialog box. - -1. At the top of the dialog, set **Language** to **C++**, set **Platform** to **Windows**, and set **Project type** to **Console**. - -1. From the filtered list of project types, choose **Console App** then choose **Next**. In the next page, enter `AMPMapReduce` in the **Name** box to specify a name for the project, and specify the project location if you want a different one. - - ![Screenshot showing the Create a new project dialog with the Console App template selected.](../../build/media/mathclient-project-name-2019.png) - -1. Choose the **Create** button to create the client project. - -::: moniker-end - -::: moniker range="<=msvc-150" - -### To create the sample project in Visual Studio 2017 or Visual Studio 2015 - -1. Start Visual Studio. - -1. On the menu bar, choose **File** > **New** > **Project**. - -1. Under **Installed** in the templates pane, choose **Visual C++**. - -1. Choose **Win32 Console Application**, type `AMPMapReduce` in the **Name** box, and then choose the **OK** button. - -1. Choose the **Next** button. - -1. Clear the **Precompiled header** check box, and then choose the **Finish** button. - -1. In **Solution Explorer**, delete *stdafx.h*, *targetver.h*, and *stdafx.cpp* from the project. - -::: moniker-end - -Next: - -1. Open AMPMapReduce.cpp and replace its content with the following code. - - ```cpp - // AMPMapReduce.cpp defines the entry point for the program. - // The program performs a parallel-sum reduction that computes the sum of an array of integers. - - #include - #include - #include - - const int BLOCK_DIM = 32; - - using namespace concurrency; - - void sum_kernel_tiled(tiled_index t_idx, array &A, int stride_size) restrict(amp) - { - tile_static int localA[BLOCK_DIM]; - - index<1> globalIdx = t_idx.global * stride_size; - index<1> localIdx = t_idx.local; - - localA[localIdx[0]] = A[globalIdx]; - - t_idx.barrier.wait(); - - // Aggregate all elements in one tile into the first element. - for (int i = BLOCK_DIM / 2; i > 0; i /= 2) - { - if (localIdx[0] < i) - { - - localA[localIdx[0]] += localA[localIdx[0] + i]; - } - - t_idx.barrier.wait(); - } - - if (localIdx[0] == 0) - { - A[globalIdx] = localA[0]; - } - } - - int size_after_padding(int n) - { - // The extent might have to be slightly bigger than num_stride to - // be evenly divisible by BLOCK_DIM. You can do this by padding with zeros. - // The calculation to do this is BLOCK_DIM * ceil(n / BLOCK_DIM) - return ((n - 1) / BLOCK_DIM + 1) * BLOCK_DIM; - } - - int reduction_sum_gpu_kernel(array input) - { - int len = input.extent[0]; - - //Tree-based reduction control that uses the CPU. - for (int stride_size = 1; stride_size < len; stride_size *= BLOCK_DIM) - { - // Number of useful values in the array, given the current - // stride size. - int num_strides = len / stride_size; - - extent<1> e(size_after_padding(num_strides)); - - // The sum kernel that uses the GPU. - parallel_for_each(extent<1>(e).tile(), [&input, stride_size] (tiled_index idx) restrict(amp) - { - sum_kernel_tiled(idx, input, stride_size); - }); - } - - array_view output = input.section(extent<1>(1)); - return output[0]; - } - - int cpu_sum(const std::vector &arr) { - int sum = 0; - for (size_t i = 0; i < arr.size(); i++) { - sum += arr[i]; - } - return sum; - } - - std::vector rand_vector(unsigned int size) { - srand(2011); - - std::vector vec(size); - for (size_t i = 0; i < size; i++) { - vec[i] = rand(); - } - return vec; - } - - array vector_to_array(const std::vector &vec) { - array arr(vec.size()); - copy(vec.begin(), vec.end(), arr); - return arr; - } - - int _tmain(int argc, _TCHAR* argv[]) - { - std::vector vec = rand_vector(10000); - array arr = vector_to_array(vec); - - int expected = cpu_sum(vec); - int actual = reduction_sum_gpu_kernel(arr); - - bool passed = (expected == actual); - if (!passed) { - printf("Actual (GPU): %d, Expected (CPU): %d", actual, expected); - } - printf("sum: %s\n", passed ? "Passed!" : "Failed!"); - - getchar(); - - return 0; - } - ``` - -1. On the menu bar, choose **File** > **Save All**. - -1. In **Solution Explorer**, open the shortcut menu for **AMPMapReduce**, and then choose **Properties**. - -1. In the **Property Pages** dialog box, under **Configuration Properties**, choose **C/C++** > **Precompiled Headers**. - -1. For the **Precompiled Header** property, select **Not Using Precompiled Headers**, and then choose the **OK** button. - -1. On the menu bar, choose **Build** > **Build Solution**. - -## Debugging the CPU Code - -In this procedure, you'll use the Local Windows Debugger to make sure that the CPU code in this application is correct. The segment of the CPU code in this application that is especially interesting is the **`for`** loop in the `reduction_sum_gpu_kernel` function. It controls the tree-based parallel reduction that is run on the GPU. - -### To debug the CPU code - -1. In **Solution Explorer**, open the shortcut menu for **AMPMapReduce**, and then choose **Properties**. - -2. In the **Property Pages** dialog box, under **Configuration Properties**, choose **Debugging**. Verify that **Local Windows Debugger** is selected in the **Debugger to launch** list. - -3. Return to the **Code Editor**. - -4. Set breakpoints on the lines of code shown in the following illustration (approximately lines 67 line 70). - - ![CPU breakpoints marked next to lines of code in the editor.](../../parallel/amp/media/campcpubreakpoints.png "CPU breakpoints")
- CPU breakpoints - -5. On the menu bar, choose **Debug** > **Start Debugging**. - -6. In the **Locals** window, observe the value for `stride_size` until the breakpoint at line 70 is reached. - -7. On the menu bar, choose **Debug** > **Stop Debugging**. - -## Debugging the GPU Code - -This section shows how to debug the GPU code, which is the code contained in the `sum_kernel_tiled` function. The GPU code computes the sum of integers for each "block" in parallel. - -### To debug the GPU code - -1. In **Solution Explorer**, open the shortcut menu for **AMPMapReduce**, and then choose **Properties**. - -2. In the **Property Pages** dialog box, under **Configuration Properties**, choose **Debugging**. - -3. In the **Debugger to launch** list, select **Local Windows Debugger**. - -4. In the **Debugger Type** list, verify that **Auto** is selected. - - **Auto** is the default value. In versions before Windows 10, **GPU Only** is the required value instead of **Auto**. - -5. Choose the **OK** button. - -6. Set a breakpoint at line 30, as shown in the following illustration. - - ![GPU breakpoints marked next to a line of code in the editor.](../../parallel/amp/media/campgpubreakpoints.png "GPU breakpoints")
- GPU breakpoint - -7. On the menu bar, choose **Debug** > **Start Debugging**. The breakpoints in the CPU code at lines 67 and 70 don't get executed during GPU debugging because those lines of code run on the CPU. - -### To use the GPU Threads window - -1. To open the **GPU Threads** window, on the menu bar, choose **Debug** > **Windows** > **GPU Threads**. - - You can inspect the state the GPU threads in the **GPU Threads** window that appears. - -2. Dock the **GPU Threads** window at the bottom of Visual Studio. Choose the **Expand Thread Switch** button to display the tile and thread text boxes. The **GPU Threads** window shows the total number of active and blocked GPU threads, as shown in the following illustration. - - ![GPU Threads window with 4 active threads.](../../parallel/amp/media/campc.png "GPU Threads window with 4 active threads")
- GPU Threads window - - 313 tiles get allocated for this computation. Each tile contains 32 threads. Because local GPU debugging occurs on a software emulator, there are four active GPU threads. The four threads execute the instructions simultaneously and then move on together to the next instruction. - - In the **GPU Threads** window, there are four GPU threads active and 28 GPU threads blocked at the [tile_barrier::wait](reference/tile-barrier-class.md#wait) statement defined at about line 21 (`t_idx.barrier.wait();`). All 32 GPU threads belong to the first tile, `tile[0]`. An arrow points to the row that includes the current thread. To switch to a different thread, use one of the following methods: - - - In the row for the thread to switch to in the **GPU Threads** window, open the shortcut menu and choose **Switch To Thread**. If the row represents more than one thread, you'll switch to the first thread according to the thread coordinates. - - - Enter the tile and thread values of the thread in the corresponding text boxes and then choose the **Switch Thread** button. - - The **Call Stack** window displays the call stack of the current GPU thread. - -### To use the Parallel Stacks window - -1. To open the **Parallel Stacks** window, on the menu bar, choose **Debug** > **Windows** > **Parallel Stacks**. - - You can use the **Parallel Stacks** window to simultaneously inspect the stack frames of multiple GPU threads. - -2. Dock the **Parallel Stacks** window at the bottom of Visual Studio. - -3. Make sure that **Threads** is selected in the list in the upper-left corner. In the following illustration, the **Parallel Stacks** window shows a call-stack focused view of the GPU threads that you saw in the **GPU Threads** window. - - ![Parallel Stacks window with 4 active threads.](../../parallel/amp/media/campd.png "Parallel Stacks window with 4 active threads")
- Parallel Stacks window - - 32 threads went from `_kernel_stub` to the lambda statement in the `parallel_for_each` function call and then to the `sum_kernel_tiled` function, where the parallel reduction occurs. 28 out of the 32 threads have progressed to the [`tile_barrier::wait`](reference/tile-barrier-class.md#wait) statement and remain blocked at line 22, while the other four threads remain active in the `sum_kernel_tiled` function at line 30. - - You can inspect the properties of a GPU thread. They're available in the **GPU Threads** window in the rich DataTip of the **Parallel Stacks** window. To see them, hover the pointer on the stack frame of `sum_kernel_tiled`. The following illustration shows the DataTip. - - ![DataTip for Parallel Stacks window.](../../parallel/amp/media/campe.png "DataTip for Parallel Stacks window")
- GPU thread DataTip - - For more information about the **Parallel Stacks** window, see [Using the Parallel Stacks Window](/visualstudio/debugger/using-the-parallel-stacks-window). - -### To use the Parallel Watch window - -1. To open the **Parallel Watch** window, on the menu bar, choose **Debug** > **Windows** > **Parallel Watch** > **Parallel Watch 1**. - - You can use the **Parallel Watch** window to inspect the values of an expression across multiple threads. - -2. Dock the **Parallel Watch 1** window to the bottom of Visual Studio. There are 32 rows in the table of the **Parallel Watch** window. Each corresponds to a GPU thread that appeared in both the GPU Threads window and the **Parallel Stacks** window. Now, you can enter expressions whose values you want to inspect across all 32 GPU threads. - -3. Select the **Add Watch** column header, enter `localIdx`, and then choose the **Enter** key. - -4. Select the **Add Watch** column header again, type `globalIdx`, and then choose the **Enter** key. - -5. Select the **Add Watch** column header again, type `localA[localIdx[0]]`, and then choose the **Enter** key. - - You can sort by a specified expression by selecting its corresponding column header. - - Select the **localA[localIdx[0]]** column header to sort the column. The following illustration shows the results of sorting by **localA[localIdx[0]]**. - - ![Parallel Watch window with sorted results.](../../parallel/amp/media/campf.png "Parallel Watch window with sorted results")
- Results of sort - - You can export the content in the **Parallel Watch** window to Excel by choosing the **Excel** button and then choosing **Open in Excel**. If you have Excel installed on your development computer, the button opens an Excel worksheet that contains the content. - -6. In the upper-right corner of the **Parallel Watch** window, there's a filter control that you can use to filter the content by using Boolean expressions. Enter `localA[localIdx[0]] > 20000` in the filter control text box and then choose the **Enter** key. - - The window now contains only threads on which the `localA[localIdx[0]]` value is greater than 20000. The content is still sorted by the `localA[localIdx[0]]` column, which is the sorting action you chose earlier. - -## Flagging GPU Threads - -You can mark specific GPU threads by flagging them in the **GPU Threads** window, the **Parallel Watch** window, or the DataTip in the **Parallel Stacks** window. If a row in the GPU Threads window contains more than one thread, flagging that row flags all threads contained in the row. - -### To flag GPU threads - -1. Select the **[Thread]** column header in the **Parallel Watch 1** window to sort by tile index and thread index. - -2. On the menu bar, choose **Debug** > **Continue**, which causes the four threads that were active to progress to the next barrier (defined at line 32 of AMPMapReduce.cpp). - -3. Choose the flag symbol on the left side of the row that contains the four threads that are now active. - - The following illustration shows the four active flagged threads in the **GPU Threads** window. - - ![GPU Threads window with flagged threads.](../../parallel/amp/media/campg.png "GPU Threads window with flagged threads")
- Active threads in the GPU Threads window - - The **Parallel Watch** window and the DataTip of the **Parallel Stacks** window both indicate the flagged threads. - -4. If you want to focus on the four threads that you flagged, you can choose to show only the flagged threads. It limits what you see in the **GPU Threads**, **Parallel Watch**, and **Parallel Stacks** windows. - - Choose the **Show Flagged Only** button on any of the windows or on the **Debug Location** toolbar. The following illustration shows the **Show Flagged Only** button on the **Debug Location** toolbar. - - ![Debug Location toolbar with Show Only Flagged icon.](../../parallel/amp/media/camph.png "Debug Location toolbar with Show Only Flagged icon")
- **Show Flagged Only** button - - Now the **GPU Threads**, **Parallel Watch**, and **Parallel Stacks** windows display only the flagged threads. - -## Freezing and Thawing GPU Threads - -You can freeze (suspend) and thaw (resume) GPU threads from either the **GPU Threads** window or the **Parallel Watch** window. You can freeze and thaw CPU threads the same way; for information, see [How to: Use the Threads Window](/visualstudio/debugger/how-to-use-the-threads-window). - -### To freeze and thaw GPU threads - -1. Choose the **Show Flagged Only** button to display all the threads. - -2. On the menu bar, choose **Debug** > **Continue**. - -3. Open the shortcut menu for the active row and then choose **Freeze**. - - The following illustration of the **GPU Threads** window shows that all four threads are frozen. - - ![GPU Threads windows showing frozen threads.](../../parallel/amp/media/campk.png "GPU Threads windows showing frozen threads")
- Frozen threads in the **GPU Threads** window - - Similarly, the **Parallel Watch** window shows that all four threads are frozen. - -4. On the menu bar, choose **Debug** > **Continue** to allow the next four GPU threads to progress past the barrier at line 22 and to reach the breakpoint at line 30. The **GPU Threads** window shows that the four previously frozen threads remain frozen and in the active state. - -5. On the menu bar, choose **Debug**, **Continue**. - -6. From the **Parallel Watch** window, you can also thaw individual or multiple GPU threads. - -### To group GPU threads - -1. On the shortcut menu for one of the threads in the **GPU Threads** window, choose **Group By**, **Address**. - - The threads in the **GPU Threads** window are grouped by address. The address corresponds to the instruction in disassembly where each group of threads is located. 24 threads are at line 22 where the [tile_barrier::wait Method](reference/tile-barrier-class.md#wait) is executed. 12 threads are at the instruction for the barrier at line 32. Four of these threads are flagged. Eight threads are at the breakpoint at line 30. Four of these threads are frozen. The following illustration shows the grouped threads in the **GPU Threads** window. - - ![GPU Threads window with threads grouped by Address.](../../parallel/amp/media/campl.png "GPU Threads window with threads grouped by Address")
- Grouped threads in the **GPU Threads** window - -2. You can also do the **Group By** operation by opening the shortcut menu for the **Parallel Watch** window's data grid. Select **Group By**, and then choose the menu item that corresponds to how you want to group the threads. - -## Running All Threads to a Specific Location in Code - -You run all the threads in a given tile to the line that contains the cursor by using **Run Current Tile To Cursor**. - -### To run all threads to the location marked by the cursor - -1. On the shortcut menu for the frozen threads, choose **Thaw**. - -2. In the **Code Editor**, put the cursor in line 30. - -3. On the shortcut menu for the **Code Editor**, choose **Run Current Tile To Cursor**. - - The 24 threads that were previously blocked at the barrier at line 21 have progressed to line 32. It's shown in the **GPU Threads** window. - -## See also - -[C++ AMP overview](../../parallel/amp/cpp-amp-overview.md)\ -[Debugging GPU code](/visualstudio/debugger/debugging-gpu-code)\ -[How to: Use the GPU Threads window](/visualstudio/debugger/how-to-use-the-gpu-threads-window)\ -[How to: Use the Parallel Watch window](/visualstudio/debugger/how-to-use-the-parallel-watch-window)\ -[Analyzing C++ AMP code with the Concurrency Visualizer](/archive/blogs/nativeconcurrency/analyzing-c-amp-code-with-the-concurrency-visualizer) diff --git a/docs/parallel/amp/walkthrough-matrix-multiplication.md b/docs/parallel/amp/walkthrough-matrix-multiplication.md deleted file mode 100644 index b3dbcffba19..00000000000 --- a/docs/parallel/amp/walkthrough-matrix-multiplication.md +++ /dev/null @@ -1,322 +0,0 @@ ---- -description: "Learn more about: Walkthrough: Matrix Multiplication" -title: "Walkthrough: Matrix Multiplication" -ms.date: 10/27/2021 ---- -# Walkthrough: Matrix Multiplication - -This step-by-step walkthrough demonstrates how to use C++ AMP to accelerate the execution of matrix multiplication. Two algorithms are presented, one without tiling and one with tiling. - -## Prerequisites - -Before you start: - -- Read [C++ AMP Overview](../../parallel/amp/cpp-amp-overview.md). -- Read [Using Tiles](../../parallel/amp/using-tiles.md). -- Make sure that you are running at least Windows 7, or Windows Server 2008 R2. - -> [!NOTE] -> C++ AMP headers are deprecated starting with Visual Studio 2022 version 17.0. -> Including any AMP headers will generate build errors. Define `_SILENCE_AMP_DEPRECATION_WARNINGS` before including any AMP headers to silence the warnings. - -### To create the project - -Instructions for creating a new project vary depending on which version of Visual Studio you have installed. 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. - -::: moniker range=">=msvc-160" - -### To create the project in Visual Studio - -1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a New Project** dialog box. - -1. At the top of the dialog, set **Language** to **C++**, set **Platform** to **Windows**, and set **Project type** to **Console**. - -1. From the filtered list of project types, choose **Empty Project** then choose **Next**. In the next page, enter *MatrixMultiply* in the **Name** box to specify a name for the project, and specify the project location if desired. - - ![Screenshot showing the Create a new project dialog with the Console App template selected.](../../build/media/mathclient-project-name-2019.png) - -1. Choose the **Create** button to create the client project. - -1. In **Solution Explorer**, open the shortcut menu for **Source Files**, and then choose **Add** > **New Item**. - -1. In the **Add New Item** dialog box, select **C++ File (.cpp)**, enter *MatrixMultiply.cpp* in the **Name** box, and then choose the **Add** button. - -::: moniker-end - -::: moniker range="<=msvc-150" - -### To create a project in Visual Studio 2017 or 2015 - -1. On the menu bar in Visual Studio, choose **File** > **New** > **Project**. - -1. Under **Installed** in the templates pane, select **Visual C++**. - -1. Select **Empty Project**, enter *MatrixMultiply* in the **Name** box, and then choose the **OK** button. - -1. Choose the **Next** button. - -1. In **Solution Explorer**, open the shortcut menu for **Source Files**, and then choose **Add** > **New Item**. - -1. In the **Add New Item** dialog box, select **C++ File (.cpp)**, enter *MatrixMultiply.cpp* in the **Name** box, and then choose the **Add** button. - -::: moniker-end - -## Multiplication without tiling - -In this section, consider the multiplication of two matrices, A and B, which are defined as follows: - -![Diagram showing 3 by 2 matrix A.](../../parallel/amp/media/campmatrixanontiled.png) - -![Diagram showing 2 by 3 matrix B.](../../parallel/amp/media/campmatrixbnontiled.png) - -A is a 3-by-2 matrix and B is a 2-by-3 matrix. The product of multiplying A by B is the following 3-by-3 matrix. The product is calculated by multiplying the rows of A by the columns of B element by element. - -![Diagram showing the result 3 by 3 product matrix.](../../parallel/amp/media/campmatrixproductnontiled.png) - -### To multiply without using C++ AMP - -1. Open MatrixMultiply.cpp and use the following code to replace the existing code. - - ```cpp - #include - - void MultiplyWithOutAMP() { - int aMatrix[3][2] = {{1, 4}, {2, 5}, {3, 6}}; - int bMatrix[2][3] = {{7, 8, 9}, {10, 11, 12}}; - int product[3][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}}; - - for (int row = 0; row < 3; row++) { - for (int col = 0; col < 3; col++) { - // Multiply the row of A by the column of B to get the row, column of product. - for (int inner = 0; inner < 2; inner++) { - product[row][col] += aMatrix[row][inner] * bMatrix[inner][col]; - } - std::cout << product[row][col] << " "; - } - std::cout << "\n"; - } - } - - int main() { - MultiplyWithOutAMP(); - getchar(); - } - ``` - - The algorithm is a straightforward implementation of the definition of matrix multiplication. It does not use any parallel or threaded algorithms to reduce the computation time. - -1. On the menu bar, choose **File** > **Save All**. - -1. Choose the **F5** keyboard shortcut to start debugging and verify that the output is correct. - -1. Choose **Enter** to exit the application. - -### To multiply by using C++ AMP - -1. In MatrixMultiply.cpp, add the following code before the `main` method. - - ```cpp - void MultiplyWithAMP() { - int aMatrix[] = { 1, 4, 2, 5, 3, 6 }; - int bMatrix[] = { 7, 8, 9, 10, 11, 12 }; - int productMatrix[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - - array_view a(3, 2, aMatrix); - - array_view b(2, 3, bMatrix); - - array_view product(3, 3, productMatrix); - - parallel_for_each(product.extent, - [=] (index<2> idx) restrict(amp) { - int row = idx[0]; - int col = idx[1]; - for (int inner = 0; inner <2; inner++) { - product[idx] += a(row, inner)* b(inner, col); - } - }); - - product.synchronize(); - - for (int row = 0; row <3; row++) { - for (int col = 0; col <3; col++) { - //std::cout << productMatrix[row*3 + col] << " "; - std::cout << product(row, col) << " "; - } - std::cout << "\n"; - } - } - ``` - - The AMP code resembles the non-AMP code. The call to `parallel_for_each` starts one thread for each element in `product.extent`, and replaces the **`for`** loops for row and column. The value of the cell at the row and column is available in `idx`. You can access the elements of an `array_view` object by using either the `[]` operator and an index variable, or the `()` operator and the row and column variables. The example demonstrates both methods. The `array_view::synchronize` method copies the values of the `product` variable back to the `productMatrix` variable. - -1. Add the following `include` and **`using`** statements at the top of MatrixMultiply.cpp. - - ```cpp - #include - using namespace concurrency; - ``` - -1. Modify the `main` method to call the `MultiplyWithAMP` method. - - ```cpp - int main() { - MultiplyWithOutAMP(); - MultiplyWithAMP(); - getchar(); - } - ``` - -1. Press the **Ctrl**+**F5** keyboard shortcut to start debugging and verify that the output is correct. - -1. Press the **Spacebar** to exit the application. - -## Multiplication with tiling - -Tiling is a technique in which you partition data into equal-sized subsets, which are known as tiles. Three things change when you use tiling. - -- You can create `tile_static` variables. Access to data in `tile_static` space can be many times faster than access to data in the global space. An instance of a `tile_static` variable is created for each tile, and all threads in the tile have access to the variable. The primary benefit of tiling is the performance gain due to `tile_static` access. - -- You can call the [tile_barrier::wait](reference/tile-barrier-class.md#wait) method to stop all of the threads in one tile at a specified line of code. You cannot guarantee the order that the threads will run in, only that all of the threads in one tile will stop at the call to `tile_barrier::wait` before they continue execution. - -- You have access to the index of the thread relative to the entire `array_view` object and the index relative to the tile. By using the local index, you can make your code easier to read and debug. - -To take advantage of tiling in matrix multiplication, the algorithm must partition the matrix into tiles and then copy the tile data into `tile_static` variables for faster access. In this example, the matrix is partitioned into submatrices of equal size. The product is found by multiplying the submatrices. The two matrices and their product in this example are: - -![Diagram showing 4 by 4 matrix A.](../../parallel/amp/media/campmatrixatiled.png) - -![Diagram showing 4 by 4 matrix B.](../../parallel/amp/media/campmatrixbtiled.png) - -![Diagram showing result 4 by 4 product matrix.](../../parallel/amp/media/campmatrixproducttiled.png) - -The matrices are partitioned into four 2x2 matrices, which are defined as follows: - -![Diagram showing 4 by 4 matrix A partitioned into 2 by 2 sub matrices.](../../parallel/amp/media/campmatrixapartitioned.png) - -![Diagram showing 4 by 4 matrix B partitioned into 2 by 2 sub matrices.](../../parallel/amp/media/campmatrixbpartitioned.png) - -The product of A and B can now be written and calculated as follows: - -![Diagram showing 4 by 4 matrix A B partitioned into 2 by 2 sub matrices.](../../parallel/amp/media/campmatrixproductpartitioned.png) - -Because matrices `a` through `h` are 2x2 matrices, all of the products and sums of them are also 2x2 matrices. It also follows that the product of A and B is a 4x4 matrix, as expected. To quickly check the algorithm, calculate the value of the element in the first row, first column in the product. In the example, that would be the value of the element in the first row and first column of `ae + bg`. You only have to calculate the first column, first row of `ae` and `bg` for each term. That value for `ae` is `(1 * 1) + (2 * 5) = 11`. The value for `bg` is `(3 * 1) + (4 * 5) = 23`. The final value is `11 + 23 = 34`, which is correct. - -To implement this algorithm, the code: - -- Uses a `tiled_extent` object instead of an `extent` object in the `parallel_for_each` call. - -- Uses a `tiled_index` object instead of an `index` object in the `parallel_for_each` call. - -- Creates `tile_static` variables to hold the submatrices. - -- Uses the `tile_barrier::wait` method to stop the threads for the calculation of the products of the submatrices. - -### To multiply by using AMP and tiling - -1. In MatrixMultiply.cpp, add the following code before the `main` method. - - ```cpp - void MultiplyWithTiling() { - // The tile size is 2. - static const int TS = 2; - - // The raw data. - int aMatrix[] = { 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8 }; - int bMatrix[] = { 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8 }; - int productMatrix[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - - // Create the array_view objects. - array_view a(4, 4, aMatrix); - array_view b(4, 4, bMatrix); - array_view product(4, 4, productMatrix); - - // Call parallel_for_each by using 2x2 tiles. - parallel_for_each(product.extent.tile(), - [=] (tiled_index t_idx) restrict(amp) - { - // Get the location of the thread relative to the tile (row, col) - // and the entire array_view (rowGlobal, colGlobal). - int row = t_idx.local[0]; - int col = t_idx.local[1]; - int rowGlobal = t_idx.global[0]; - int colGlobal = t_idx.global[1]; - int sum = 0; - - // Given a 4x4 matrix and a 2x2 tile size, this loop executes twice for each thread. - // For the first tile and the first loop, it copies a into locA and e into locB. - // For the first tile and the second loop, it copies b into locA and g into locB. - for (int i = 0; i < 4; i += TS) { - tile_static int locA[TS][TS]; - tile_static int locB[TS][TS]; - locA[row][col] = a(rowGlobal, col + i); - locB[row][col] = b(row + i, colGlobal); - // The threads in the tile all wait here until locA and locB are filled. - t_idx.barrier.wait(); - - // Return the product for the thread. The sum is retained across - // both iterations of the loop, in effect adding the two products - // together, for example, a*e. - for (int k = 0; k < TS; k++) { - sum += locA[row][k] * locB[k][col]; - } - - // All threads must wait until the sums are calculated. If any threads - // moved ahead, the values in locA and locB would change. - t_idx.barrier.wait(); - // Now go on to the next iteration of the loop. - } - - // After both iterations of the loop, copy the sum to the product variable by using the global location. - product[t_idx.global] = sum; - }); - - // Copy the contents of product back to the productMatrix variable. - product.synchronize(); - - for (int row = 0; row <4; row++) { - for (int col = 0; col <4; col++) { - // The results are available from both the product and productMatrix variables. - //std::cout << productMatrix[row*3 + col] << " "; - std::cout << product(row, col) << " "; - } - std::cout << "\n"; - } - } - ``` - - This example is significantly different than the example without tiling. The code uses these conceptual steps: - 1. Copy the elements of tile[0,0] of `a` into `locA`. Copy the elements of tile[0,0] of `b` into `locB`. Notice that `product` is tiled, not `a` and `b`. Therefore, you use global indices to access `a, b`, and `product`. The call to `tile_barrier::wait` is essential. It stops all of the threads in the tile until both `locA` and `locB` are filled. - - 1. Multiply `locA` and `locB` and put the results in `product`. - - 1. Copy the elements of tile[0,1] of `a` into `locA`. Copy the elements of tile [1,0] of `b` into `locB`. - - 1. Multiply `locA` and `locB` and add them to the results that are already in `product`. - - 1. The multiplication of tile[0,0] is complete. - - 1. Repeat for the other four tiles. There is no indexing specifically for the tiles and the threads can execute in any order. As each thread executes, the `tile_static` variables are created for each tile appropriately and the call to `tile_barrier::wait` controls the program flow. - - 1. As you examine the algorithm closely, notice that each submatrix is loaded into a `tile_static` memory twice. That data transfer does take time. However, once the data is in `tile_static` memory, access to the data is much faster. Because calculating the products requires repeated access to the values in the submatrices, there is an overall performance gain. For each algorithm, experimentation is required to find the optimal algorithm and tile size. - - In the non-AMP and non-tile examples, each element of A and B is accessed four times from the global memory to calculate the product. In the tile example, each element is accessed twice from the global memory and four times from the `tile_static` memory. That is not a significant performance gain. However, if the A and B were 1024x1024 matrices and the tile size were 16, there would be a significant performance gain. In that case, each element would be copied into `tile_static` memory only 16 times and accessed from `tile_static` memory 1024 times. - -1. Modify the main method to call the `MultiplyWithTiling` method, as shown. - - ```cpp - int main() { - MultiplyWithOutAMP(); - MultiplyWithAMP(); - MultiplyWithTiling(); - getchar(); - } - ``` - -1. Press the **Ctrl**+**F5** keyboard shortcut to start debugging and verify that the output is correct. - -1. Press the **Space** bar to exit the application. - -## See also - -[C++ AMP (C++ Accelerated Massive Parallelism)](../../parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md)
-[Walkthrough: Debugging a C++ AMP Application](../../parallel/amp/walkthrough-debugging-a-cpp-amp-application.md) From 8cb8aa01e2be976b41af94711e0265dafbb8189c Mon Sep 17 00:00:00 2001 From: Saisang Cai Date: Wed, 1 Apr 2026 12:17:02 +0800 Subject: [PATCH 400/619] Remove amp from toc --- docs/parallel/toc.yml | 164 ------------------------------------------ 1 file changed, 164 deletions(-) diff --git a/docs/parallel/toc.yml b/docs/parallel/toc.yml index e140a198cc1..0543f1e5c49 100644 --- a/docs/parallel/toc.yml +++ b/docs/parallel/toc.yml @@ -3,170 +3,6 @@ items: href: ../parallel/parallel-programming-in-visual-cpp.md - name: Auto-parallelization and auto-vectorization href: ../parallel/auto-parallelization-and-auto-vectorization.md -- name: C++ Accelerated Massive Parallelism (AMP) - items: - - name: C++ AMP (C++ Accelerated Massive Parallelism) - href: ../parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md - - name: C++ AMP overview - href: ../parallel/amp/cpp-amp-overview.md - - name: Using tiles - href: ../parallel/amp/using-tiles.md - - name: Using C++ AMP in UWP apps - href: ../parallel/amp/using-cpp-amp-in-windows-store-apps.md - - name: 'Walkthrough: Matrix multiplication' - href: ../parallel/amp/walkthrough-matrix-multiplication.md - - name: 'Walkthrough: Debugging a C++ AMP application' - href: ../parallel/amp/walkthrough-debugging-a-cpp-amp-application.md - - name: Using lambdas, function objects, and restricted functions - href: ../parallel/amp/using-lambdas-function-objects-and-restricted-functions.md - - name: Graphics (C++ AMP) - href: ../parallel/amp/graphics-cpp-amp.md - - name: Using accelerator and accelerator_view objects - href: ../parallel/amp/using-accelerator-and-accelerator-view-objects.md - - name: Reference (C++ AMP) - items: - - name: Reference (C++ AMP) - href: ../parallel/amp/reference/reference-cpp-amp.md - - name: Concurrency namespace (C++ AMP) - items: - - name: Concurrency namespace (C++ AMP) - href: ../parallel/amp/reference/concurrency-namespace-cpp-amp.md - - name: Concurrency namespace functions (AMP) - href: ../parallel/amp/reference/concurrency-namespace-functions-amp.md - - name: Concurrency namespace enums (AMP) - href: ../parallel/amp/reference/concurrency-namespace-enums-amp.md - - name: Concurrency namespace operators (AMP) - href: ../parallel/amp/reference/concurrency-namespace-operators-amp.md - - name: Concurrency namespace constants (AMP) - href: ../parallel/amp/reference/concurrency-namespace-constants-amp.md - - name: accelerator class - href: ../parallel/amp/reference/accelerator-class.md - - name: accelerator_view class - href: ../parallel/amp/reference/accelerator-view-class.md - - name: accelerator_view_removed class - href: ../parallel/amp/reference/accelerator-view-removed-class.md - - name: array class - href: ../parallel/amp/reference/array-class.md - - name: array_view class - href: ../parallel/amp/reference/array-view-class.md - - name: completion_future class - href: ../parallel/amp/reference/completion-future-class.md - - name: extent class (C++ AMP) - href: ../parallel/amp/reference/extent-class.md - - name: index class - href: ../parallel/amp/reference/index-class.md - - name: invalid_compute_domain class - href: ../parallel/amp/reference/invalid-compute-domain-class.md - - name: out_of_memory class - href: ../parallel/amp/reference/out-of-memory-class.md - - name: runtime_exception class - href: ../parallel/amp/reference/runtime-exception-class.md - - name: tile_barrier class - href: ../parallel/amp/reference/tile-barrier-class.md - - name: tiled_extent class - href: ../parallel/amp/reference/tiled-extent-class.md - - name: tiled_index class - href: ../parallel/amp/reference/tiled-index-class.md - - name: uninitialized_object class - href: ../parallel/amp/reference/uninitialized-object-class.md - - name: unsupported_feature class - href: ../parallel/amp/reference/unsupported-feature-class.md - expanded: false - - name: Concurrency::direct3d Namespace - items: - - name: Concurrency::direct3d Namespace - href: ../parallel/amp/reference/concurrency-direct3d-namespace.md - - name: Concurrency::direct3d namespace functions (AMP) - href: ../parallel/amp/reference/concurrency-direct3d-namespace-functions-amp.md - - name: adopt_d3d_access_lock_t Structure - href: ../parallel/amp/reference/adopt-d3d-access-lock-t-structure.md - - name: scoped_d3d_access_lock class - href: ../parallel/amp/reference/scoped-d3d-access-lock-class.md - expanded: false - - name: Concurrency::fast_math Namespace - items: - - name: Concurrency::fast_math Namespace - href: ../parallel/amp/reference/concurrency-fast-math-namespace.md - - name: Concurrency::fast_math namespace functions - href: ../parallel/amp/reference/concurrency-fast-math-namespace-functions.md - expanded: false - - name: Concurrency::graphics Namespace - items: - - name: Concurrency::graphics Namespace - href: ../parallel/amp/reference/concurrency-graphics-namespace.md - - name: Concurrency::graphics::direct3d namespace - items: - - name: Concurrency::graphics::direct3d namespace - href: ../parallel/amp/reference/concurrency-graphics-direct3d-namespace.md - - name: Concurrency::graphics::direct3d namespace functions - href: ../parallel/amp/reference/concurrency-graphics-direct3d-namespace-functions.md - expanded: false - - name: Concurrency::graphics namespace functions - href: ../parallel/amp/reference/concurrency-graphics-namespace-functions.md - - name: Concurrency::graphics namespace enums - href: ../parallel/amp/reference/concurrency-graphics-namespace-enums.md - - name: double_2 class - href: ../parallel/amp/reference/double-2-class.md - - name: double_3 class - href: ../parallel/amp/reference/double-3-class.md - - name: double_4 class - href: ../parallel/amp/reference/double-4-class.md - - name: float_2 class - href: ../parallel/amp/reference/float-2-class.md - - name: float_3 class - href: ../parallel/amp/reference/float-3-class.md - - name: float_4 class - href: ../parallel/amp/reference/float-4-class.md - - name: int_2 class - href: ../parallel/amp/reference/int-2-class.md - - name: int_3 class - href: ../parallel/amp/reference/int-3-class.md - - name: int_4 class - href: ../parallel/amp/reference/int-4-class.md - - name: norm class - href: ../parallel/amp/reference/norm-class.md - - name: norm_2 class - href: ../parallel/amp/reference/norm-2-class.md - - name: norm_3 class - href: ../parallel/amp/reference/norm-3-class.md - - name: norm_4 class - href: ../parallel/amp/reference/norm-4-class.md - - name: sampler class - href: ../parallel/amp/reference/sampler-class.md - - name: short_vector Structure - href: ../parallel/amp/reference/short-vector-structure.md - - name: short_vector_traits Structure - href: ../parallel/amp/reference/short-vector-traits-structure.md - - name: texture class - href: ../parallel/amp/reference/texture-class.md - - name: texture_view class - href: ../parallel/amp/reference/texture-view-class.md - - name: writeonly_texture_view class - href: ../parallel/amp/reference/writeonly-texture-view-class.md - - name: uint_2 class - href: ../parallel/amp/reference/uint-2-class.md - - name: uint_3 class - href: ../parallel/amp/reference/uint-3-class.md - - name: uint_4 class - href: ../parallel/amp/reference/uint-4-class.md - - name: unorm class - href: ../parallel/amp/reference/unorm-class.md - - name: unorm_2 class - href: ../parallel/amp/reference/unorm-2-class.md - - name: unorm_3 class - href: ../parallel/amp/reference/unorm-3-class.md - - name: unorm_4 class - href: ../parallel/amp/reference/unorm-4-class.md - expanded: false - - name: Concurrency::precise_math namespace - items: - - name: Concurrency::precise_math namespace - href: ../parallel/amp/reference/concurrency-precise-math-namespace.md - - name: Concurrency::precise_math namespace functions - href: ../parallel/amp/reference/concurrency-precise-math-namespace-functions.md - expanded: false - expanded: false - expanded: false - name: Concurrency Runtime (ConcRT) items: - name: Concurrency Runtime From 5f15d6f2e55478416ec5fdf8b679c5cf884be7ec Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 10 Apr 2026 12:46:44 -0700 Subject: [PATCH 401/619] UUF fixes --- docs/build/walkthrough-build-debug-wsl2.md | 1 + .../reference/time-time32-time64.md | 4 +- ...-create-and-use-unique-ptr-instances_1.cpp | 49 +++++++++++++----- ...-create-and-use-unique-ptr-instances_2.cpp | 45 +++++++++++------ ...-create-and-use-unique-ptr-instances_3.cpp | 36 ++++++++----- ...-create-and-use-unique-ptr-instances_4.cpp | 20 +++++--- ...-to-create-and-use-unique-ptr-instances.md | 50 ++++++++++++++++--- 7 files changed, 152 insertions(+), 53 deletions(-) diff --git a/docs/build/walkthrough-build-debug-wsl2.md b/docs/build/walkthrough-build-debug-wsl2.md index 33e08ae4dcf..55f0a393600 100644 --- a/docs/build/walkthrough-build-debug-wsl2.md +++ b/docs/build/walkthrough-build-debug-wsl2.md @@ -27,6 +27,7 @@ CMake Presets integration in Visual Studio supports the WSL 2 toolset. To learn Install the tools necessary to build and debug on WSL 2. You'll install a recent version of CMake using Visual Studio's CMake binary deployment in a later step. 1. Install WSL and a WSL 2 distro by following the instructions at [Install WSL](/windows/wsl/install-win10). +1. In the Visual Studio installer, verify that **C++ CMake tools for Linux** is installed. To do that, choose **Modify** for your version of Visual Studio. Under the **Individual components** tab, search for **C++ CMake tools for Linux and Mac** and make sure it is selected and installed. This component is required for Visual Studio to detect your WSL installations. 1. Assuming your distro uses `apt` (this walkthrough uses Ubuntu), use the following commands to install the required build tools on your WSL 2 distro: ```bash diff --git a/docs/c-runtime-library/reference/time-time32-time64.md b/docs/c-runtime-library/reference/time-time32-time64.md index 1087f1997a6..8db058298e9 100644 --- a/docs/c-runtime-library/reference/time-time32-time64.md +++ b/docs/c-runtime-library/reference/time-time32-time64.md @@ -34,7 +34,9 @@ Returns the time as seconds elapsed since midnight, January 1, 1970, or -1 if th The **`time`** function returns the number of seconds elapsed since midnight (00:00:00), January 1, 1970, Coordinated Universal Time (UTC), according to the system clock. The return value is stored in the location given by *`destTime`*. This parameter may be `NULL`, in which case the return value isn't stored. -**`time`** is a wrapper for **`_time64`** and **`time_t`** is, by default, equivalent to **`__time64_t`**. If you need to force the compiler to interpret **`time_t`** as the old 32-bit **`time_t`**, you can define `_USE_32BIT_TIME_T`. We don't recommend `_USE_32BIT_TIME_T`, because your application may fail after January 18, 2038; the use of this macro isn't allowed on 64-bit platforms. +**`time_t`** is defined in `` and ``. It represents time as an integer count of seconds. It's equivalent to **`__time64_t`** by default, which is a 64-bit signed integer that supports dates through 23:59:59, December 31, 3000 UTC. If you need the compiler to interpret **`time_t`** as the old 32-bit **`time_t`**, define `_USE_32BIT_TIME_T`. We don't recommend `_USE_32BIT_TIME_T` because your application may fail after January 18, 2038. This macro isn't allowed on 64-bit platforms. + +**`time`** is a wrapper for **`_time64`**. > [!Note] > When you use Windows SDK version 10.0.26100.6901 and Visual Studio 2026 or later together, `time` is no longer `static inline` (internal linkage). Instead, it's `inline` (external linkage).\ diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_1.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_1.cpp index 3ca09b621c1..838fe5a5607 100644 --- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_1.cpp +++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_1.cpp @@ -1,20 +1,43 @@ -unique_ptr SongFactory(const std::wstring& artist, const std::wstring& title) -{ - // Implicit move operation into the variable that stores the result. - return make_unique(artist, title); +// Compile with: cl /EHsc /std:c++17 + +#include +#include +#include + +struct Song { + std::string artist; + std::string title; + Song(const std::string& a, const std::string& t) : artist(a), title(t) { + std::cout << "Created: " << title << "\n"; + } + ~Song() { std::cout << "Destroyed: " << title << "\n"; } +}; + +// Returning a unique_ptr by value transfers ownership to the caller. +std::unique_ptr SongFactory(const std::string& artist, const std::string& title) { + return std::make_unique(artist, title); +} + +// Passing a unique_ptr by value transfers ownership to the function. +// The Song is automatically destroyed when the function exits. +void SingSong(std::unique_ptr song) { + std::cout << "Singing: " << song->title << " by " << song->artist << "\n"; } -void MakeSongs() -{ +int main() { // Create a new unique_ptr with a new object. - auto song = make_unique(L"Mr. Children", L"Namonaki Uta"); + auto song = std::make_unique("Mr. Children", "Namonaki Uta"); + std::cout << "song points to: " << song->title << "\n"; - // Use the unique_ptr. - vector titles = { song->title }; + // Move ownership from one unique_ptr to another. + std::unique_ptr song2 = std::move(song); + std::cout << "After move, song is " << (song ? "not null" : "null") << "\n"; + std::cout << "song2 points to: " << song2->title << "\n"; - // Move raw pointer from one unique_ptr to another. - unique_ptr song2 = std::move(song); + // Obtain unique_ptr from a factory function that returns by value. + auto song3 = SongFactory("Michael Jackson", "Beat It"); - // Obtain unique_ptr from function that returns by value. - auto song3 = SongFactory(L"Michael Jackson", L"Beat It"); + // Transfer ownership to a function. + SingSong(std::move(song3)); + std::cout << "After SingSong, song3 is " << (song3 ? "not null" : "null") << "\n"; } \ No newline at end of file diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_2.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_2.cpp index b1f6a067f95..862c0293cd8 100644 --- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_2.cpp +++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_2.cpp @@ -1,17 +1,32 @@ -void SongVector() -{ - vector> songs; - - // Create a few new unique_ptr instances - // and add them to vector using implicit move semantics. - songs.push_back(make_unique(L"B'z", L"Juice")); - songs.push_back(make_unique(L"Namie Amuro", L"Funky Town")); - songs.push_back(make_unique(L"Kome Kome Club", L"Kimi ga Iru Dake de")); - songs.push_back(make_unique(L"Ayumi Hamasaki", L"Poker Face")); +// Compile with: cl /EHsc /std:c++17 - // Pass by const reference when possible to avoid copying. - for (const auto& song : songs) - { - wcout << L"Artist: " << song->artist << L" Title: " << song->title << endl; - } +#include +#include +#include +#include + +struct Song { + std::string artist; + std::string title; + Song(const std::string& a, const std::string& t) : artist(a), title(t) {} +}; + +int main() { + std::vector> songs; + + // Create unique_ptr instances and add them to the vector + // using implicit move semantics. + songs.push_back(std::make_unique("B'z", "Juice")); + songs.push_back(std::make_unique("Namie Amuro", "Funky Town")); + songs.push_back(std::make_unique("Kome Kome Club", "Kimi ga Iru Dake de")); + songs.push_back(std::make_unique("Ayumi Hamasaki", "Poker Face")); + + // Pass by const reference to avoid copying. + // Passing by value causes a compile error because + // the unique_ptr copy constructor is deleted. + for (const auto& song : songs) { + std::cout << "Artist: " << song->artist + << " Title: " << song->title << "\n"; + } + // The unique_ptr instances in the vector are automatically destroyed when the vector goes out of scope at the end of main() } \ No newline at end of file diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp index 29baefa191f..35b67cc059c 100644 --- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp +++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp @@ -1,17 +1,29 @@ -class MyClass -{ -private: - // MyClass owns the unique_ptr. - unique_ptr factory; +// Compile with: cl /EHsc /std:c++17 + +#include +#include + +class Engine { public: + Engine() { std::cout << "Engine created\n"; } + ~Engine() { std::cout << "Engine destroyed\n"; } + void Run() { std::cout << "Engine running\n"; } +}; - // Initialize by using make_unique with ClassFactory default constructor. - MyClass() : factory (make_unique()) - { - } +class Car { +private: + // Car owns the unique_ptr. + std::unique_ptr engine; +public: + // Initialize by using make_unique in the member initializer list. + Car() : engine(std::make_unique()) {} - void MakeClass() - { - factory->DoSomething(); + void Start() { + engine->Run(); } }; + +int main() { + Car car; + car.Start(); +} \ No newline at end of file diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_4.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_4.cpp index c7d62f9ca60..4637f942998 100644 --- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_4.cpp +++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_4.cpp @@ -1,9 +1,17 @@ +// Compile with: cl /EHsc /std:c++17 + +#include +#include + +int main() { // Create a unique_ptr to an array of 5 integers. - auto p = make_unique(5); + // The elements are value-initialized to 0. + auto p = std::make_unique(5); - // Initialize the array. - for (int i = 0; i < 5; ++i) - { + // Assign values to the array elements. + for (int i = 0; i < 5; ++i) { p[i] = i; - wcout << p[i] << endl; - } \ No newline at end of file + std::cout << p[i] << "\n"; + } + // The array is automatically deleted when p goes out of scope. +} \ No newline at end of file diff --git a/docs/cpp/how-to-create-and-use-unique-ptr-instances.md b/docs/cpp/how-to-create-and-use-unique-ptr-instances.md index b679190aeee..eeed4d64c8e 100644 --- a/docs/cpp/how-to-create-and-use-unique-ptr-instances.md +++ b/docs/cpp/how-to-create-and-use-unique-ptr-instances.md @@ -2,12 +2,11 @@ description: "Learn more about: How to: Create and use unique_ptr instances" title: "How to: Create and use unique_ptr instances" ms.custom: "how-to" -ms.date: "11/19/2018" -ms.assetid: 9a373030-e587-452f-b9a5-c5f9d58b7673 +ms.date: 04/10/2026 --- # How to: Create and use unique_ptr instances -A [unique_ptr](../standard-library/unique-ptr-class.md) does not share its pointer. It cannot be copied to another `unique_ptr`, passed by value to a function, or used in any C++ Standard Library algorithm that requires copies to be made. A `unique_ptr` can only be moved. This means that the ownership of the memory resource is transferred to another `unique_ptr` and the original `unique_ptr` no longer owns it. We recommend that you restrict an object to one owner, because multiple ownership adds complexity to the program logic. Therefore, when you need a smart pointer for a plain C++ object, use `unique_ptr`, and when you construct a `unique_ptr`, use the [make_unique](../standard-library/memory-functions.md#make_unique) helper function. +A [unique_ptr](../standard-library/unique-ptr-class.md) does not share its pointer. It cannot be copied to another `unique_ptr`, passed by value to a function, or used in any C++ Standard Library algorithm that requires copies to be made. A `unique_ptr` can only be moved. This means that the ownership of the memory resource is transferred to another `unique_ptr` and the original `unique_ptr` no longer owns it. We recommend that you restrict an object to one owner, because multiple ownership adds complexity. When you need a smart pointer for a plain C++ object, use `unique_ptr`, and when you construct a `unique_ptr`, use the [`make_unique`](../standard-library/memory-functions.md#make_unique) helper function. The following diagram illustrates the transfer of ownership between two `unique_ptr` instances. @@ -15,12 +14,26 @@ The following diagram illustrates the transfer of ownership between two `unique_ `unique_ptr` is defined in the `` header in the C++ Standard Library. It is exactly as efficient as a raw pointer and can be used in C++ Standard Library containers. The addition of `unique_ptr` instances to C++ Standard Library containers is efficient because the move constructor of the `unique_ptr` eliminates the need for a copy operation. +To use `unique_ptr` and `make_unique`, include the `` header. The following examples each compile and run as standalone programs. + ## Example 1 -The following example shows how to create `unique_ptr` instances and pass them between functions. +The following example shows how to create `unique_ptr` instances and pass them between functions. Returning a `unique_ptr` by value transfers ownership to the caller. Passing a `unique_ptr` by value to a function transfers ownership to the callee. [!code-cpp[stl_smart_pointers#210](codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_1.cpp)] +```output +Created: Namonaki Uta +song points to: Namonaki Uta +After move, song is null +song2 points to: Namonaki Uta +Created: Beat It +Singing: Beat It by Michael Jackson +Destroyed: Beat It +After SingSong, song3 is null +Destroyed: Namonaki Uta +``` + These examples demonstrate this basic characteristic of `unique_ptr`: it can be moved, but not copied. "Moving" transfers ownership to a new `unique_ptr` and resets the old `unique_ptr`. ## Example 2 @@ -29,7 +42,18 @@ The following example shows how to create `unique_ptr` instances and use them in [!code-cpp[stl_smart_pointers#211](codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_2.cpp)] -In the range for loop, notice that the `unique_ptr` is passed by reference. If you try to pass by value here, the compiler will throw an error because the `unique_ptr` copy constructor is deleted. +```output +Artist: B'z Title: Juice +Artist: Namie Amuro Title: Funky Town +Artist: Kome Kome Club Title: Kimi ga Iru Dake de +Artist: Ayumi Hamasaki Title: Poker Face +Destroyed: Juice +Destroyed: Funky Town +Destroyed: Kimi ga Iru Dake de +Destroyed: Poker Face +``` + +In the range for loop, notice that the `unique_ptr` is passed by reference. If you try to pass by value here, the compiler reports an error because the `unique_ptr` copy constructor is deleted. ## Example 3 @@ -37,12 +61,26 @@ The following example shows how to initialize a `unique_ptr` that is a class mem [!code-cpp[stl_smart_pointers#212](codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp)] +```output +Engine created +Engine running +Engine destroyed +``` + ## Example 4 -You can use [make_unique](../standard-library/memory-functions.md#make_unique) to create a `unique_ptr` to an array, but you cannot use `make_unique` to initialize the array elements. +You can use [make_unique](../standard-library/memory-functions.md#make_unique) to create a `unique_ptr` to an array. `make_unique(5)` creates a 5-element array that is value-initialized to zero. You can't pass individual element values to `make_unique`, so assign them after creation. [!code-cpp[stl_smart_pointers#213](codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_4.cpp)] +```output +0 +1 +2 +3 +4 +``` + For more examples, see [make_unique](../standard-library/memory-functions.md#make_unique). ## See also From 5863a513b276ca160f4b6a3a922c540761493a9f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 10 Apr 2026 12:58:07 -0700 Subject: [PATCH 402/619] acrolinx --- docs/build/walkthrough-build-debug-wsl2.md | 14 +++++++------- .../how-to-create-and-use-unique-ptr-instances.md | 7 ++++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/docs/build/walkthrough-build-debug-wsl2.md b/docs/build/walkthrough-build-debug-wsl2.md index 55f0a393600..34a242b1a10 100644 --- a/docs/build/walkthrough-build-debug-wsl2.md +++ b/docs/build/walkthrough-build-debug-wsl2.md @@ -24,10 +24,10 @@ CMake Presets integration in Visual Studio supports the WSL 2 toolset. To learn ## Install the build tools -Install the tools necessary to build and debug on WSL 2. You'll install a recent version of CMake using Visual Studio's CMake binary deployment in a later step. +Install the tools necessary to build and debug on WSL 2. You install a recent version of CMake using Visual Studio's CMake binary deployment in a later step. 1. Install WSL and a WSL 2 distro by following the instructions at [Install WSL](/windows/wsl/install-win10). -1. In the Visual Studio installer, verify that **C++ CMake tools for Linux** is installed. To do that, choose **Modify** for your version of Visual Studio. Under the **Individual components** tab, search for **C++ CMake tools for Linux and Mac** and make sure it is selected and installed. This component is required for Visual Studio to detect your WSL installations. +1. In the Visual Studio installer, verify that **C++ CMake tools for Linux** is installed. To do that, choose **Modify** for your version of Visual Studio. Under the **Individual components** tab, search for **C++ CMake tools for Linux and Mac** and make sure it's selected and installed. This component is required for Visual Studio to detect your WSL installations. 1. Assuming your distro uses `apt` (this walkthrough uses Ubuntu), use the following commands to install the required build tools on your WSL 2 distro: ```bash @@ -35,7 +35,7 @@ Install the tools necessary to build and debug on WSL 2. You'll install a recent sudo apt install cmake g++ gdb make ninja-build rsync zip ``` - The `apt` commands above install: + Which installs: * A C++ compiler * `gdb` @@ -55,9 +55,9 @@ Visual Studio defines a CMake project as a folder with a `CMakeLists.txt` file a :::image type="content" source="media/vs2022-get-started.png" alt-text="Screenshot of the Visual Studio 2022 get started dialog box."::: The available options are: Clone a repository, Open a project or solution, Open a local folder, Create a new project, or Continue without code."::: -4. In the **Search for templates** textbox, type "cmake". Choose the **CMake Project** type and select **Next**. Give the project a name and location, and then select **Create**. +4. In the **Search for templates** textbox, type "cmake". Choose the **CMake Project** type and select **Next**. Give the project a name and location, and then select **Create**. -5. Enable Visual Studio's CMake Presets integration. Select **Tools** > **Options** > **CMake** > **General**. Select **Prefer using CMake Presets for configure, build, and test**, then select **OK**. Instead, you could have added a `CMakePresets.json` file to the root of the project. For more information, see [Enable CMake Presets integration](cmake-presets-vs.md#enable-cmakepresets-json-integration). +5. Enable Visual Studio's CMake Presets integration. Select **Tools** > **Options** > **CMake** > **General**. Select **Prefer using CMake Presets for configure, build, and test**, then select **OK**. Alternatively, you could add a `CMakePresets.json` file to the root of the project. For more information, see [Enable CMake Presets integration](cmake-presets-vs.md#enable-cmakepresets-json-integration). :::image type="complex" source="media/cmake-general-prefer-cmake-presets.png" alt-text="Screenshot of the Visual Studio project options. Cmake > General is selected."::: In the CMake configuration file group, 'Use CMake Presets if available, otherwise use CMakeSettings.json' is called out and is selected. @@ -70,7 +70,7 @@ Visual Studio defines a CMake project as a folder with a `CMakeLists.txt` file a :::image type="content" source="media/vs2022-target-system-dropdown.png" alt-text="Screenshot of the Visual Studio target system dropdown. WSL2: Ubuntu-20.04 is the selected."::: > [!NOTE] - > If Visual Studio starts to configure your project automatically, read step 11 to manage CMake binary deployment, and then continue to the step below. To customize this behavior, see [Modify automatic configuration and cache notifications](cmake-presets-vs.md#modify-automatic-configuration-and-cache-notifications). + > If Visual Studio starts to configure your project automatically, read step 11 to manage CMake binary deployment, and then continue to the following step. To customize this behavior, see [Modify automatic configuration and cache notifications](cmake-presets-vs.md#modify-automatic-configuration-and-cache-notifications). 8. Use the dropdown in the middle to select your active Configure Preset. Configure Presets tell Visual Studio how to invoke CMake and generate the underlying build system. In step 7, the active Configure Preset is the **linux-default** Preset created by Visual Studio. To create a custom Configure Preset, select **Manage Configurations…** For more information about Configure Presets, see [Select a Configure Preset](cmake-presets-vs.md#select-a-configure-preset) and [Edit Presets](cmake-presets-vs.md#edit-presets). @@ -134,7 +134,7 @@ If you have a MSBuild-based Linux project, then you can upgrade to the WSL 2 too :::image type="content" source="media/wsl-platform-toolset-selection.png" alt-text="Screenshot of a Visual Studio dropdown with Platform Toolset selected, and to the right, another dropdown with WSL2 Toolset selected."::: -If you're targeting a WSL 2 distribution and you don't want to use the WSL 2 toolset, then in the **Platform Toolset** dropdown, select the **GCC for Windows Subsystem for Linux** or **Clang for Windows Subsystem for Linux** toolset. If either of these toolsets are selected, Visual Studio doesn't maintain a copy of your source files in the WSL file system and instead accesses source files over the mounted Windows drive (`/mnt/`…). System headers are still automatically copied to the Windows file system to provide a native IntelliSense experience. Customize the headers that are included or excluded from this copy in **Property Pages** > **General**. +If you're targeting a WSL 2 distribution and you don't want to use the WSL 2 toolset, then in the **Platform Toolset** dropdown, select the **GCC for Windows Subsystem for Linux** or **Clang for Windows Subsystem for Linux** toolset. If either of these toolsets are selected, Visual Studio doesn't maintain a copy of your source files in the WSL file system, and instead accesses source files over the mounted Windows drive (`/mnt/`…). System headers are still automatically copied to the Windows file system to provide a native IntelliSense experience. Customize the headers that are included or excluded from this copy in **Property Pages** > **General**. In most cases, it's best to use the WSL 2 toolset with WSL 2 distributions because WSL 2 is slower when project files are stored in the Windows file system. To learn more, see [Comparing WSL 1 and WSL 2](/windows/wsl/compare-versions). diff --git a/docs/cpp/how-to-create-and-use-unique-ptr-instances.md b/docs/cpp/how-to-create-and-use-unique-ptr-instances.md index eeed4d64c8e..f0c566944c2 100644 --- a/docs/cpp/how-to-create-and-use-unique-ptr-instances.md +++ b/docs/cpp/how-to-create-and-use-unique-ptr-instances.md @@ -3,16 +3,17 @@ description: "Learn more about: How to: Create and use unique_ptr instances" title: "How to: Create and use unique_ptr instances" ms.custom: "how-to" ms.date: 04/10/2026 +ai-usage: ai-assisted --- # How to: Create and use unique_ptr instances -A [unique_ptr](../standard-library/unique-ptr-class.md) does not share its pointer. It cannot be copied to another `unique_ptr`, passed by value to a function, or used in any C++ Standard Library algorithm that requires copies to be made. A `unique_ptr` can only be moved. This means that the ownership of the memory resource is transferred to another `unique_ptr` and the original `unique_ptr` no longer owns it. We recommend that you restrict an object to one owner, because multiple ownership adds complexity. When you need a smart pointer for a plain C++ object, use `unique_ptr`, and when you construct a `unique_ptr`, use the [`make_unique`](../standard-library/memory-functions.md#make_unique) helper function. +A [unique_ptr](../standard-library/unique-ptr-class.md) doesn't share its pointer. It can't be copied to another `unique_ptr`, passed by value to a function, or used in any C++ Standard Library algorithm that requires copies to be made. A `unique_ptr` can only be moved. This means that the ownership of the memory resource is transferred to another `unique_ptr` and the original `unique_ptr` no longer owns it. We recommend that you restrict an object to one owner, because multiple ownership adds complexity. When you need a smart pointer for a plain C++ object, use `unique_ptr`, and when you construct a `unique_ptr`, use the [`make_unique`](../standard-library/memory-functions.md#make_unique) helper function. The following diagram illustrates the transfer of ownership between two `unique_ptr` instances. ![Diagram that shows moving the ownership of a unique pointer.](media/unique_ptr.png) -`unique_ptr` is defined in the `` header in the C++ Standard Library. It is exactly as efficient as a raw pointer and can be used in C++ Standard Library containers. The addition of `unique_ptr` instances to C++ Standard Library containers is efficient because the move constructor of the `unique_ptr` eliminates the need for a copy operation. +`unique_ptr` is defined in the `` header in the C++ Standard Library. It's exactly as efficient as a raw pointer and can be used in C++ Standard Library containers. The addition of `unique_ptr` instances to C++ Standard Library containers is efficient because the move constructor of the `unique_ptr` eliminates the need for a copy operation. To use `unique_ptr` and `make_unique`, include the `` header. The following examples each compile and run as standalone programs. @@ -69,7 +70,7 @@ Engine destroyed ## Example 4 -You can use [make_unique](../standard-library/memory-functions.md#make_unique) to create a `unique_ptr` to an array. `make_unique(5)` creates a 5-element array that is value-initialized to zero. You can't pass individual element values to `make_unique`, so assign them after creation. +You can use [make_unique](../standard-library/memory-functions.md#make_unique) to create a `unique_ptr` to an array. `make_unique(5)` creates a five element array that is value-initialized to zero. You can't pass individual element values to `make_unique`, so assign them after creation. [!code-cpp[stl_smart_pointers#213](codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_4.cpp)] From 65ea7664deeec9cd4e0650aefba6f124d35ff1a7 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 10 Apr 2026 13:41:31 -0700 Subject: [PATCH 403/619] draft changes --- docs/build/building-on-the-command-line.md | 2 +- docs/build/reference/zf.md | 2 +- .../c-runtime-library/reference/calloc-dbg.md | 6 +- ...printf-snprintf-l-snwprintf-snwprintf-l.md | 9 ++- .../reference/wcstombs-s-wcstombs-s-l.md | 6 +- docs/code-quality/c6387.md | 28 ++++++- ...-analysis-properties-for-c-cpp-projects.md | 3 + docs/cpp/abstract-classes-cpp.md | 10 ++- .../tool-errors/linker-tools-error-lnk1140.md | 6 +- .../linker-tools-errors-and-warnings.md | 1 + ...mpiler-warnings-that-are-off-by-default.md | 1 + .../binary-function-struct.md | 1 + docs/standard-library/identity-structure.md | 3 + docs/standard-library/scoped-lock-class.md | 79 +++++++++++++++++++ .../redistributing-visual-cpp-files.md | 2 +- 15 files changed, 141 insertions(+), 18 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 07501e59a26..5f7a2fdff45 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -17,7 +17,7 @@ You can build C and C++ applications on the command line by using tools that are ::: moniker range=">=msvc-160" -If you've installed Visual Studio and a C++ workload, you have all the command-line tools. For information on how to install C++ and Visual Studio, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). If you only want the command-line toolset, download the [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022). When you run the downloaded executable, it updates and runs the Visual Studio Installer. To install only the tools you need for C++ development, select the **Desktop development with C++** workload. You can select optional libraries and toolsets to include under **Installation details**. To build code by using the Visual Studio 2015, 2017, or 2019 toolsets, select the optional MSVC v140, v141, or v142 build tools. When you're satisfied with your selections, choose **Install**. +If you've installed Visual Studio and a C++ workload, you have all the command-line tools. For information on how to install C++ and Visual Studio, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). If you only want the command-line toolset, download the [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/). On the downloads page, expand the **Tools for Visual Studio** section to find the Build Tools download. When you run the downloaded executable, it updates and runs the Visual Studio Installer. To install only the tools you need for C++ development, select the **Desktop development with C++** workload. You can select optional libraries and toolsets to include under **Installation details**. To build code by using the Visual Studio 2015, 2017, or 2019 toolsets, select the optional MSVC v140, v141, or v142 build tools. When you're satisfied with your selections, choose **Install**. ::: moniker-end ::: moniker range="<=msvc-150" diff --git a/docs/build/reference/zf.md b/docs/build/reference/zf.md index d15547b2e8c..cb7b1c17ec3 100644 --- a/docs/build/reference/zf.md +++ b/docs/build/reference/zf.md @@ -19,7 +19,7 @@ The **/Zf** option enables compiler support for faster generation of PDB files w Because the **/Zf** option only applies to PDB generation, it requires the [/Zi](z7-zi-zi-debug-information-format.md) or [/ZI](z7-zi-zi-debug-information-format.md) option. -The **/Zf** option is available beginning in Visual Studio 2017 version 15.1, where it is off by default. Starting in Visual Studio 2017 version 15.7, this option is on by default when the **/Zi** or **/ZI** option is enabled. +The **/Zf** option is available beginning in Visual Studio 2017 version 15.1, where it is off by default. Starting in Visual Studio 2017 version 15.7, this option is on by default when the **/Zi** or **/ZI** option is enabled. To explicitly disable this option, use **/Zf-**. ### To set this compiler option in the Visual Studio development environment diff --git a/docs/c-runtime-library/reference/calloc-dbg.md b/docs/c-runtime-library/reference/calloc-dbg.md index fbff456b61b..3c513e24f87 100644 --- a/docs/c-runtime-library/reference/calloc-dbg.md +++ b/docs/c-runtime-library/reference/calloc-dbg.md @@ -68,9 +68,9 @@ For information about how memory blocks are allocated, initialized, and managed ## Requirements -| Routine | Required header | -|---|---| -| **`_calloc_dbg`** | \ | +| Routine | Required header | Required library | +|---|---|---| +| **`_calloc_dbg`** | \ | The debug C Runtime Library (for example, `ucrtd.lib`). Only available in debug builds. See [CRT library features](../crt-library-features.md). | For more compatibility information, see [Compatibility](../compatibility.md). diff --git a/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md b/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md index a9ceb9d7a60..f3760790f34 100644 --- a/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md +++ b/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md @@ -109,7 +109,7 @@ For more information, see [Format specification syntax: `printf` and `wprintf` f ## Return value -The number of characters that which would have been written to the buffer if `count` was ignored. The count doesn't include the terminating `NULL` character. +The number of characters that would have been written to the buffer if `count` was ignored. The count doesn't include the terminating `NULL` character. Let **`len`** be the length of the formatted data string, not including the terminating `NULL`.\ For all functions, if `len < count`, then **`len`** characters are stored in *`buffer`*, a null-terminator is appended, and the number of characters written, not including the terminating `NULL`, is returned. @@ -120,7 +120,12 @@ See [Behavior summary](#behavior-summary) for details. ## Remarks -Beginning with the UCRT in Visual Studio 2015 and Windows 10, **`snprintf`** is no longer identical to **`_snprintf`**. The **`snprintf`** behavior is now C99 standard conformant. The difference is that if you run out of buffer, `snprintf` null-terminates the end of the buffer and returns the number of characters that would have been required whereas `_snprintf` doesn't null-terminate the buffer and returns -1. Also, `_snprintf()` includes one more character in the output because it doesn't null-terminate the buffer. +Beginning with the UCRT in Visual Studio 2015 and Windows 10, **`snprintf`** is no longer identical to **`_snprintf`**. The **`snprintf`** behavior is now C99 standard conformant. The differences are: + +- **`snprintf`** always null-terminates the buffer (even when truncating), and returns the total number of characters that would have been written if the buffer were large enough (not counting the null-terminator). +- **`_snprintf`** does **not** null-terminate the buffer when the output is truncated, and returns **-1** when truncation occurs. + +Because `_snprintf` doesn't write a null-terminator when it truncates, it can fit one more data character into the same buffer size. However, the resulting string is not null-terminated, so you must handle termination yourself. - **`snprintf`** and the **`_snprintf`** family of functions format and store *`count`* or fewer characters in *`buffer`*. - **`snprintf`** always stores a terminating `NULL` character, truncating the output if necessary. diff --git a/docs/c-runtime-library/reference/wcstombs-s-wcstombs-s-l.md b/docs/c-runtime-library/reference/wcstombs-s-wcstombs-s-l.md index 058ddb9ccbf..0fa56ead86e 100644 --- a/docs/c-runtime-library/reference/wcstombs-s-wcstombs-s-l.md +++ b/docs/c-runtime-library/reference/wcstombs-s-wcstombs-s-l.md @@ -114,9 +114,9 @@ By default, this function's global state is scoped to the application. To change ## Requirements -| Routine | Required header | -|---|---| -| **`wcstombs_s`** | `` | +| Routine | Required header | Required library | +|---|---|---| +| **`wcstombs_s`** | `` | The Universal C Runtime Library (UCRT). Linked automatically when you build with the Visual C++ compiler. | For more compatibility information, see [Compatibility](../compatibility.md). diff --git a/docs/code-quality/c6387.md b/docs/code-quality/c6387.md index fc082680d9d..16211974f1d 100644 --- a/docs/code-quality/c6387.md +++ b/docs/code-quality/c6387.md @@ -13,11 +13,16 @@ helpviewer_keywords: ["C6387"] This warning is raised if an annotated function parameter is being passed an unexpected value. For example, passing a potentially null value to a parameter that is marked with `_In_` annotation generates this warning. +This commonly happens when one function is annotated with `_Post_ _Null_` on its return value (meaning it may return null), and the result is then passed to another function that expects a non-null `_In_` parameter. To fix the issue, either change the first function's annotation to `_Post_ _Notnull_` if it truly never returns null, or add a null check before passing the value to the second function. + +> [!NOTE] +> The SAL annotations (`_Post_ _Null_`, `_Post_ _Notnull_`, `_In_`, etc.) are used on function declarations to describe the contract of the function's parameters and return values. They do not apply to local variable declarations. + Code analysis name: `INVALID_PARAM_VALUE_1` ## Example -The following code generates this warning because a null parameter is passed to `f(char *)`: +The following code generates this warning because the function `g` is annotated as potentially returning null (`_Post_ _Null_`), and the result is passed to `f`, which requires a non-null input (`_In_`): ```cpp #include @@ -33,7 +38,7 @@ int main() } ``` -To correct this warning, use the following code: +To correct this warning, you can change the annotation on `g` if it never actually returns null: ```cpp #include @@ -49,6 +54,25 @@ int main() } ``` +Alternatively, you can add a null check before passing the value: + +```cpp +#include + +_Post_ _Null_ char * g(); + +void f(_In_ char *pch); + +int main() +{ + char *pCh = g(); + if (pCh != nullptr) + { + f(pCh); + } +} +``` + ## See also [strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l](../c-runtime-library/reference/strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l.md) diff --git a/docs/code-quality/how-to-set-code-analysis-properties-for-c-cpp-projects.md b/docs/code-quality/how-to-set-code-analysis-properties-for-c-cpp-projects.md index d4b1e95e891..ef67f41285e 100644 --- a/docs/code-quality/how-to-set-code-analysis-properties-for-c-cpp-projects.md +++ b/docs/code-quality/how-to-set-code-analysis-properties-for-c-cpp-projects.md @@ -18,6 +18,9 @@ ms.assetid: 7af52097-6d44-4785-9b9f-43b7a7d447d7 You can configure which rules the code analysis tool uses to analyze the code in each configuration of your project. In addition, you can direct code analysis to suppress warnings from code that was generated and added to your project by a third-party tool. +> [!NOTE] +> In recent versions of Visual Studio, the legacy **Code Analysis** property page in the project properties dialog may appear empty or show a deprecation notice. Use the individual settings described below to configure code analysis. For CMake projects, use `CMakeSettings.json` or `CMakePresets.json` instead. + ## Code Analysis Property Page The **Code Analysis** property page contains all code analysis configuration settings for an MSBuild project. To open the code analysis property page for a project in **Solution Explorer**, right-click the project and then click **Properties**. Next, expand **Configuration Properties** and select the **Code Analysis** tab. diff --git a/docs/cpp/abstract-classes-cpp.md b/docs/cpp/abstract-classes-cpp.md index dd7181e7171..af5343782dd 100644 --- a/docs/cpp/abstract-classes-cpp.md +++ b/docs/cpp/abstract-classes-cpp.md @@ -31,13 +31,15 @@ The only difference between this declaration and the previous one is that `Print Abstract classes can't be used for: -- Variables or member data +- Variables or member data (you can't declare a variable of an abstract class type) -- Argument types +- Argument types (you can't pass an abstract class by value as a function parameter) -- Function return types +- Function return types (a function can't return an abstract class by value) -- Types of explicit conversions +- Types of explicit conversions (you can't cast to an abstract class type) + +In each case, you can use pointers or references to the abstract class type instead. For example, a function can take `AbstractBase&` or `AbstractBase*` as a parameter, and you can declare pointers or references of the abstract class type. If the constructor for an abstract class calls a pure virtual function, either directly or indirectly, the result is undefined. However, constructors and destructors for abstract classes can call other member functions. diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md index 32776a589dc..8bbcbead89f 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md @@ -11,7 +11,9 @@ helpviewer_keywords: ["LNK1140"] ## Remarks -The project contains more than 4096 modules. +The project exceeds the maximum number of modules allowed in a program database (PDB) file. This limit was originally 4,096 modules and was later increased to 65,535. + +This error can also occur when other PDB size limits are exceeded, such as very large symbol tables or an excessive number of type records. ### To fix by using the following possible solutions @@ -20,3 +22,5 @@ The project contains more than 4096 modules. 1. Compile some modules without debugging information. 1. Reduce the number of modules. + +1. Split your project into multiple smaller libraries or DLLs. diff --git a/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md b/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md index 102d426b6e8..1e2d72eaa4a 100644 --- a/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md +++ b/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md @@ -25,6 +25,7 @@ The linker tools LINK, LIB, DUMPBIN, and EDITBIN share a common executable that | [Linker Tools Error LNK1120](linker-tools-error-lnk1120.md) | *number* unresolved externals | | [Linker Tools Error LNK1123](linker-tools-error-lnk1123.md) | failure during conversion to COFF: file invalid or corrupt | | [Linker Tools Error LNK1127](linker-tools-error-lnk1127.md) | library is corrupt | +| Linker Tools Error LNK1131 | no library specified | | [Linker Tools Error LNK1136](linker-tools-error-lnk1136.md) | invalid or corrupt file | | [Linker Tools Error LNK1140](linker-tools-error-lnk1140.md) | too many modules for program database; link with /PDB:NONE | | [Linker Tools Error LNK1141](linker-tools-error-lnk1141.md) | failure during build of exports file | diff --git a/docs/preprocessor/compiler-warnings-that-are-off-by-default.md b/docs/preprocessor/compiler-warnings-that-are-off-by-default.md index 04ffb783279..e09e8a00d50 100644 --- a/docs/preprocessor/compiler-warnings-that-are-off-by-default.md +++ b/docs/preprocessor/compiler-warnings-that-are-off-by-default.md @@ -101,6 +101,7 @@ The following warnings are turned off by default in Visual Studio 2015 and later | [C4686](../error-messages/compiler-warnings/compiler-warning-level-3-c4686.md) (level 3) | '*user-defined type*': possible change in behavior, change in UDT return calling convention | | [C4692](../error-messages/compiler-warnings/compiler-warning-level-1-c4692.md) (level 1) | '*function*': signature of non-private member contains assembly private native type '*native_type*' | | [C4710](../error-messages/compiler-warnings/compiler-warning-level-4-c4710.md) (level 4) | '*function*': function not inlined | +| [C4711](../error-messages/compiler-warnings/compiler-warning-level-1-c4711.md) (level 1) | function '*function*' selected for inline expansion | | [C4738](../error-messages/compiler-warnings/compiler-warning-level-3-c4738.md) (level 3) | storing 32-bit float result in memory, possible loss of performance | | [C4746](../error-messages/compiler-warnings/compiler-warning-c4746.md) | volatile access of '*expression*' is subject to /volatile:\ setting; consider using __iso_volatile_load/store intrinsic functions | | C4749 (level 4) | conditionally supported: offsetof applied to non-standard-layout type '*type*' | diff --git a/docs/standard-library/binary-function-struct.md b/docs/standard-library/binary-function-struct.md index 719614bb1a7..510df3fc07f 100644 --- a/docs/standard-library/binary-function-struct.md +++ b/docs/standard-library/binary-function-struct.md @@ -13,6 +13,7 @@ An empty base struct that defines types that may be inherited by derived classes ## Syntax ```cpp +template struct binary_function { typedef Arg1 first_argument_type; typedef Arg2 second_argument_type; diff --git a/docs/standard-library/identity-structure.md b/docs/standard-library/identity-structure.md index bfb04dac3b2..0214efd578b 100644 --- a/docs/standard-library/identity-structure.md +++ b/docs/standard-library/identity-structure.md @@ -10,6 +10,9 @@ ms.assetid: 990756fd-7969-4b39-ad7e-0878e8dac8fd A struct that provides a type definition as the template parameter. +> [!NOTE] +> This Microsoft-specific `identity` structure from `` is deprecated and may not be available in all versions of Visual Studio. In C++20 and later, use `std::identity` from [``](functional.md) instead, which is the standard-conforming equivalent. + ## Syntax ```cpp diff --git a/docs/standard-library/scoped-lock-class.md b/docs/standard-library/scoped-lock-class.md index 42b35183393..45c76d8ff0f 100644 --- a/docs/standard-library/scoped-lock-class.md +++ b/docs/standard-library/scoped-lock-class.md @@ -6,6 +6,8 @@ f1_keywords: ["mutex/std::scoped_lock"] --- # scoped_lock Class +The `scoped_lock` class is an RAII (Resource Acquisition Is Initialization) wrapper that acquires one or more mutexes on construction and releases them on destruction. When multiple mutexes are provided, they are locked using a deadlock-avoidance algorithm (equivalent to `std::lock`), which prevents deadlocks regardless of the order in which different threads lock the same set of mutexes. Introduced in C++17. + ## Syntax ```cpp @@ -19,3 +21,80 @@ class scoped_lock { scoped_lock& operator=(const scoped_lock&) = delete; }; ``` + +## Remarks + +The `scoped_lock` class manages locking and unlocking of one or more mutexes throughout a scope. When you create a `scoped_lock` object, it acquires ownership of the mutexes passed to it. When the `scoped_lock` object is destroyed (for example, when it goes out of scope), the mutexes are released. This ensures that mutexes are always properly released, even if an exception is thrown. + +If you need to lock only a single mutex, consider using [`lock_guard`](lock-guard-class.md) or [`unique_lock`](unique-lock-class.md). Use `scoped_lock` when you need to lock multiple mutexes simultaneously without risk of deadlock. + +### Constructors + +| Constructor | Description | +|---|---| +| `scoped_lock(MutexTypes&... m)` | Constructs a `scoped_lock` object and locks all the supplied mutexes. If multiple mutexes are supplied, they're locked using a deadlock-avoidance algorithm. | +| `scoped_lock(MutexTypes&... m, adopt_lock_t)` | Constructs a `scoped_lock` object and adopts ownership of the supplied mutexes, which must already be locked by the calling thread. | + +### Destructor + +| Destructor | Description | +|---|---| +| `~scoped_lock()` | Destroys the `scoped_lock` object and releases all owned mutexes. | + +## Example + +```cpp +#include +#include +#include +#include + +std::mutex mutex1; +std::mutex mutex2; +int shared_data1 = 0; +int shared_data2 = 0; + +void update_both(int iterations) +{ + for (int i = 0; i < iterations; ++i) + { + // Lock both mutexes simultaneously without risk of deadlock + std::scoped_lock lock(mutex1, mutex2); + ++shared_data1; + ++shared_data2; + } +} + +int main() +{ + std::vector threads; + for (int i = 0; i < 4; ++i) + { + threads.emplace_back(update_both, 1000); + } + + for (auto& t : threads) + { + t.join(); + } + + std::cout << "shared_data1: " << shared_data1 << '\n'; + std::cout << "shared_data2: " << shared_data2 << '\n'; + // Output: + // shared_data1: 4000 + // shared_data2: 4000 +} +``` + +## Requirements + +**Header:** \ + +**Namespace:** std + +## See also + +[Header files reference](../standard-library/header-files-reference.md)\ +[`lock_guard` Class](lock-guard-class.md)\ +[`unique_lock` Class](unique-lock-class.md)\ +[``](mutex.md) diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index afeae969425..c9ab8d102c5 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -68,7 +68,7 @@ The version number is stored in the `REG_SZ` string value `Version` and also in The Visual C++ Redistributable supports several command-line options. The `/?`, `/h`, or `/help` options display a dialog that lists the available options. You can specify `/install` to install, `/repair` to repair, or `/uninstall` to uninstall the Redistributable. The `/layout` option copies the complete contents of the Redistributable in the current directory. -By default, the Redistributable installs its contents and prompts the user for information and whether to restart after installation. You can specify the `/passive` option, which displays progress but doesn't otherwise require user interaction. You can also specify a `/quiet` option, which doesn't display a user interface or require any user interaction. The `/norestart` option suppresses any attempts to restart. By default, a log file is created in `%TEMP%`. You can use `/log filename.txt` to log to a specific file. +By default, the Redistributable installs its contents and prompts the user for information and whether to restart after installation. You can specify the `/passive` option, which displays a progress bar but doesn't otherwise require user interaction (however, a license acceptance dialog may still appear if the Redistributable hasn't been installed before). You can also specify a `/quiet` option, which doesn't display a user interface or require any user interaction, including no license dialog. Use `/quiet` for fully unattended installations. The `/norestart` option suppresses any attempts to restart. By default, a log file is created in `%TEMP%`. You can use `/log filename.txt` to log to a specific file. This example command installs the x64 Redistributable. It shows installation progress but doesn't require user interaction or a restart: From 88b555b4d0c978c596fb357ae4ee67424a27da46 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 10 Apr 2026 13:45:19 -0700 Subject: [PATCH 404/619] fix numbering --- docs/build/walkthrough-build-debug-wsl2.md | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/build/walkthrough-build-debug-wsl2.md b/docs/build/walkthrough-build-debug-wsl2.md index 34a242b1a10..ad9e42efd9c 100644 --- a/docs/build/walkthrough-build-debug-wsl2.md +++ b/docs/build/walkthrough-build-debug-wsl2.md @@ -50,57 +50,57 @@ This walkthrough uses GCC and Ninja on Ubuntu. And Visual Studio 2022 version 17 Visual Studio defines a CMake project as a folder with a `CMakeLists.txt` file at the project root. In this walkthrough, you create a new CMake project by using the Visual Studio **CMake Project** template: -3. From the Visual Studio **Get started** screen, select **Create a new project**. +1. From the Visual Studio **Get started** screen, select **Create a new project**. :::image type="content" source="media/vs2022-get-started.png" alt-text="Screenshot of the Visual Studio 2022 get started dialog box."::: The available options are: Clone a repository, Open a project or solution, Open a local folder, Create a new project, or Continue without code."::: -4. In the **Search for templates** textbox, type "cmake". Choose the **CMake Project** type and select **Next**. Give the project a name and location, and then select **Create**. +1. In the **Search for templates** textbox, type "cmake". Choose the **CMake Project** type and select **Next**. Give the project a name and location, and then select **Create**. -5. Enable Visual Studio's CMake Presets integration. Select **Tools** > **Options** > **CMake** > **General**. Select **Prefer using CMake Presets for configure, build, and test**, then select **OK**. Alternatively, you could add a `CMakePresets.json` file to the root of the project. For more information, see [Enable CMake Presets integration](cmake-presets-vs.md#enable-cmakepresets-json-integration). +1. Enable Visual Studio's CMake Presets integration. Select **Tools** > **Options** > **CMake** > **General**. Select **Prefer using CMake Presets for configure, build, and test**, then select **OK**. Alternatively, you could add a `CMakePresets.json` file to the root of the project. For more information, see [Enable CMake Presets integration](cmake-presets-vs.md#enable-cmakepresets-json-integration). :::image type="complex" source="media/cmake-general-prefer-cmake-presets.png" alt-text="Screenshot of the Visual Studio project options. Cmake > General is selected."::: In the CMake configuration file group, 'Use CMake Presets if available, otherwise use CMakeSettings.json' is called out and is selected. :::image-end::: -6. To activate the integration: from the main menu, select **File** > **Close Folder**. The **Get started** page appears. Under **Open recent**, select the folder you just closed to reopen the folder. +1. To activate the integration: from the main menu, select **File** > **Close Folder**. The **Get started** page appears. Under **Open recent**, select the folder you just closed to reopen the folder. -7. There are three dropdowns across the Visual Studio main menu bar. Use the dropdown on the left to select your active target system. This is the system where CMake is invoked to configure and build the project. Visual Studio queries for WSL installations with `wsl -l -v`. In the following image, **WSL2: Ubuntu-20.04** is shown selected as the **Target System**. +1. There are three dropdowns across the Visual Studio main menu bar. Use the dropdown on the left to select your active target system. This is the system where CMake is invoked to configure and build the project. Visual Studio queries for WSL installations with `wsl -l -v`. In the following image, **WSL2: Ubuntu-20.04** is shown selected as the **Target System**. :::image type="content" source="media/vs2022-target-system-dropdown.png" alt-text="Screenshot of the Visual Studio target system dropdown. WSL2: Ubuntu-20.04 is the selected."::: > [!NOTE] > If Visual Studio starts to configure your project automatically, read step 11 to manage CMake binary deployment, and then continue to the following step. To customize this behavior, see [Modify automatic configuration and cache notifications](cmake-presets-vs.md#modify-automatic-configuration-and-cache-notifications). -8. Use the dropdown in the middle to select your active Configure Preset. Configure Presets tell Visual Studio how to invoke CMake and generate the underlying build system. In step 7, the active Configure Preset is the **linux-default** Preset created by Visual Studio. To create a custom Configure Preset, select **Manage Configurations…** For more information about Configure Presets, see [Select a Configure Preset](cmake-presets-vs.md#select-a-configure-preset) and [Edit Presets](cmake-presets-vs.md#edit-presets). +1. Use the dropdown in the middle to select your active Configure Preset. Configure Presets tell Visual Studio how to invoke CMake and generate the underlying build system. In step 7, the active Configure Preset is the **linux-default** Preset created by Visual Studio. To create a custom Configure Preset, select **Manage Configurations…** For more information about Configure Presets, see [Select a Configure Preset](cmake-presets-vs.md#select-a-configure-preset) and [Edit Presets](cmake-presets-vs.md#edit-presets). :::image type="content" source="media/vs2022-ActivePresetDropdown.png" alt-text="Screenshot of the Visual Studio active configure preset dropdown. Manage Configurations... is selected."::: -9. Use the dropdown on the right to select your active Build Preset. Build Presets tell Visual Studio how to invoke build. In the illustration for step 7, the active Build Preset is the **Default** Build Preset created by Visual Studio. For more information about Build Presets, see [Select a Build Preset](cmake-presets-vs.md#select-a-build-preset). +1. Use the dropdown on the right to select your active Build Preset. Build Presets tell Visual Studio how to invoke build. In the illustration for step 7, the active Build Preset is the **Default** Build Preset created by Visual Studio. For more information about Build Presets, see [Select a Build Preset](cmake-presets-vs.md#select-a-build-preset). -10. Configure the project on WSL 2. If project generation doesn't start automatically, then manually invoke configure with **Project** > **Configure** *project-name* +1. Configure the project on WSL 2. If project generation doesn't start automatically, then manually invoke configure with **Project** > **Configure** *project-name* :::image type="content" source="media/vs2022-project-configure.png" alt-text="Screenshot of the Visual Studio project configure dropdown. Configure CMakeProject is selected."::: -11. If you don't have a supported version of CMake installed on your WSL 2 distro, then Visual Studio prompts you beneath the main menu ribbon to deploy a recent version of CMake. Select **Yes** to deploy CMake binaries to your WSL 2 distro. +1. If you don't have a supported version of CMake installed on your WSL 2 distro, then Visual Studio prompts you beneath the main menu ribbon to deploy a recent version of CMake. Select **Yes** to deploy CMake binaries to your WSL 2 distro. :::image type="complex" source="media/vs2022-supported-cmake-not-present-prompt.png" alt-text="Screenshot of a prompt beneath the Visual Studio toolbar"::: The user is prompted whether to install the latest C Make binaries from C make . org because the supported C Make version isn't installed." :::image-end::: -12. Confirm that the configure step completed and that you can see the **CMake generation finished** message in the **Output** window under the **CMake** pane. Build files are written to a directory in the WSL 2 distro's file system. +1. Confirm that the configure step completed and that you can see the **CMake generation finished** message in the **Output** window under the **CMake** pane. Build files are written to a directory in the WSL 2 distro's file system. :::image type="content" source="media/vs-output-window-cmake-generation.png" alt-text="Screenshot of the Visual Studio Output window. It contains messages generated during the configure step, including that C Make generation is complete."::: -13. Select the active debug target. The debug dropdown menu lists all the CMake targets available to the project. +1. Select the active debug target. The debug dropdown menu lists all the CMake targets available to the project. :::image type="content" source="media/vs-debug-dropdown-menu-cmake.png" alt-text="Screenshot of the Visual Studio debug dropdown menu. CMakeProject is selected."::: -14. Expand the project subfolder in the **Solution Explorer**. In the `CMakeProject.cpp` file, set a breakpoint in `main()`. You can also navigate to CMake targets view by selecting the View Picker button in the **Solution Explorer**, highlighted in following screenshot: +1. Expand the project subfolder in the **Solution Explorer**. In the `CMakeProject.cpp` file, set a breakpoint in `main()`. You can also navigate to CMake targets view by selecting the View Picker button in the **Solution Explorer**, highlighted in following screenshot: :::image type="content" source="media/solution-explorer-switch-view.png" alt-text="Screenshot of the Visual Studio solution explorer showing the button to switch views. It's located to the right of the home button."::: -15. Select **Debug** > **Start**, or press **F5**. Your project builds, the executable launches on your WSL 2 distro, and Visual Studio halts execution at the breakpoint. The output of your program (in this case, `"Hello CMake."`) is visible in the Linux Console Window: +1. Select **Debug** > **Start**, or press **F5**. Your project builds, the executable launches on your WSL 2 distro, and Visual Studio halts execution at the breakpoint. The output of your program (in this case, `"Hello CMake."`) is visible in the Linux Console Window: :::image type="complex" source="media/walkthrough-build-debug-wsl2-breakpoint.png" alt-text="Screenshot of a running hello world program."::: The Visual Studio Linux console window displays the output of the program: 'Hello C Make.' The editor window shows the hello world program. Execution stopped at a breakpoint on the line that says return 0;." From 4a10187b5a2f70b051222ad4a21e1f76dc7def0f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 10 Apr 2026 19:16:12 -0700 Subject: [PATCH 405/619] draft updates --- .../c-runtime-library/reference/calloc-dbg.md | 2 +- ...printf-snprintf-l-snwprintf-snwprintf-l.md | 4 +- .../reference/wcstombs-s-wcstombs-s-l.md | 2 +- docs/code-quality/c6387.md | 52 +++++++--- .../tool-errors/linker-tools-error-lnk1140.md | 7 +- docs/standard-library/identity-structure.md | 94 ++++++++++++++++--- docs/standard-library/scoped-lock-class.md | 21 +++-- 7 files changed, 134 insertions(+), 48 deletions(-) diff --git a/docs/c-runtime-library/reference/calloc-dbg.md b/docs/c-runtime-library/reference/calloc-dbg.md index 3c513e24f87..1b02d2cf193 100644 --- a/docs/c-runtime-library/reference/calloc-dbg.md +++ b/docs/c-runtime-library/reference/calloc-dbg.md @@ -70,7 +70,7 @@ For information about how memory blocks are allocated, initialized, and managed | Routine | Required header | Required library | |---|---|---| -| **`_calloc_dbg`** | \ | The debug C Runtime Library (for example, `ucrtd.lib`). Only available in debug builds. See [CRT library features](../crt-library-features.md). | +| **`_calloc_dbg`** | `` | The debug C Runtime Library (for example, `ucrtd.lib`). Only available in debug builds. For information about Microsoft C runtime library `.lib` files, see [CRT library features](../crt-library-features.md). | For more compatibility information, see [Compatibility](../compatibility.md). diff --git a/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md b/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md index f3760790f34..ee4a0b52726 100644 --- a/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md +++ b/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md @@ -123,9 +123,9 @@ See [Behavior summary](#behavior-summary) for details. Beginning with the UCRT in Visual Studio 2015 and Windows 10, **`snprintf`** is no longer identical to **`_snprintf`**. The **`snprintf`** behavior is now C99 standard conformant. The differences are: - **`snprintf`** always null-terminates the buffer (even when truncating), and returns the total number of characters that would have been written if the buffer were large enough (not counting the null-terminator). -- **`_snprintf`** does **not** null-terminate the buffer when the output is truncated, and returns **-1** when truncation occurs. +- **`_snprintf`** doesn't null-terminate the buffer when the output is truncated, and returns `-1` when truncation occurs. -Because `_snprintf` doesn't write a null-terminator when it truncates, it can fit one more data character into the same buffer size. However, the resulting string is not null-terminated, so you must handle termination yourself. +Because `_snprintf` doesn't write a null-terminator when it truncates, it can fit one more character into the same buffer size. However, the resulting string is not null-terminated, so you must handle termination yourself. - **`snprintf`** and the **`_snprintf`** family of functions format and store *`count`* or fewer characters in *`buffer`*. - **`snprintf`** always stores a terminating `NULL` character, truncating the output if necessary. diff --git a/docs/c-runtime-library/reference/wcstombs-s-wcstombs-s-l.md b/docs/c-runtime-library/reference/wcstombs-s-wcstombs-s-l.md index 0fa56ead86e..aed6aa514a8 100644 --- a/docs/c-runtime-library/reference/wcstombs-s-wcstombs-s-l.md +++ b/docs/c-runtime-library/reference/wcstombs-s-wcstombs-s-l.md @@ -116,7 +116,7 @@ By default, this function's global state is scoped to the application. To change | Routine | Required header | Required library | |---|---|---| -| **`wcstombs_s`** | `` | The Universal C Runtime Library (UCRT). Linked automatically when you build with the Visual C++ compiler. | +| **`wcstombs_s`** | `` | ucrt.lib (the Universal C Runtime Library) | For more compatibility information, see [Compatibility](../compatibility.md). diff --git a/docs/code-quality/c6387.md b/docs/code-quality/c6387.md index 16211974f1d..ab1c36f2927 100644 --- a/docs/code-quality/c6387.md +++ b/docs/code-quality/c6387.md @@ -1,7 +1,7 @@ --- title: "Warning C6387" description: "Learn more about: Warning C6387" -ms.date: 11/04/2016 +ms.date: 04/10/2026 f1_keywords: ["C6387", "INVALID_PARAM_VALUE_1", "__WARNING_INVALID_PARAM_VALUE_1"] helpviewer_keywords: ["C6387"] --- @@ -16,7 +16,7 @@ This warning is raised if an annotated function parameter is being passed an une This commonly happens when one function is annotated with `_Post_ _Null_` on its return value (meaning it may return null), and the result is then passed to another function that expects a non-null `_In_` parameter. To fix the issue, either change the first function's annotation to `_Post_ _Notnull_` if it truly never returns null, or add a null check before passing the value to the second function. > [!NOTE] -> The SAL annotations (`_Post_ _Null_`, `_Post_ _Notnull_`, `_In_`, etc.) are used on function declarations to describe the contract of the function's parameters and return values. They do not apply to local variable declarations. +> The SAL annotations (`_Post_ _Null_`, `_Post_ _Notnull_`, `_In_`, and so on) are used on function declarations to describe the contract of the function's parameters and return values. They do not apply to local variable declarations. Code analysis name: `INVALID_PARAM_VALUE_1` @@ -26,14 +26,21 @@ The following code generates this warning because the function `g` is annotated ```cpp #include +#include -_Post_ _Null_ char * g(); +_Post_ _Null_ char* g() +{ + return nullptr; +} -void f(_In_ char *pch); +void f(_In_ char* pch) +{ + printf("%s\n", pch);; +} int main() { - char *pCh = g(); + char* pCh = g(); f(pCh); // Warning C6387 } ``` @@ -42,15 +49,23 @@ To correct this warning, you can change the annotation on `g` if it never actual ```cpp #include +#include -_Post_ _Notnull_ char * g(); +_Post_ _Notnull_ char* g() +{ + static char buf[] = "hello"; + return buf; +} -void f(_In_ char *pch); +void f(_In_ char* pch) +{ + printf("%s\n", pch); +} int main() { - char *pCh = g(); - f(pCh); + char* pCh = g(); + f(pCh); // No warning C6387 } ``` @@ -58,21 +73,28 @@ Alternatively, you can add a null check before passing the value: ```cpp #include +#include -_Post_ _Null_ char * g(); - -void f(_In_ char *pch); +_Post_ _Null_ char* g() +{ + return nullptr; +} + +void f(_In_ char* pch) +{ + printf("%s\n", pch); +} int main() { - char *pCh = g(); + char* pCh = g(); if (pCh != nullptr) { - f(pCh); + f(pCh); // No warning C6387 } } ``` ## See also -[strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l](../c-runtime-library/reference/strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l.md) +[`strlen`, `wcslen`, `_mbslen`, `_mbslen_l`, `_mbstrlen`, `_mbstrlen_l`](../c-runtime-library/reference/strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l.md) diff --git a/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md b/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md index 8bbcbead89f..28bd6c168d8 100644 --- a/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md +++ b/docs/error-messages/tool-errors/linker-tools-error-lnk1140.md @@ -11,16 +11,13 @@ helpviewer_keywords: ["LNK1140"] ## Remarks -The project exceeds the maximum number of modules allowed in a program database (PDB) file. This limit was originally 4,096 modules and was later increased to 65,535. +The project exceeds the maximum number of modules allowed in a program database (PDB) file. This limit was originally 4,096 modules and was later increased to 65,533. -This error can also occur when other PDB size limits are exceeded, such as very large symbol tables or an excessive number of type records. +This error can also occur when other PDB size limits are exceeded, such as too many symbols or an excessive number of types. ### To fix by using the following possible solutions 1. Relink using [/PDB:NONE](../../build/reference/pdb-use-program-database.md). - 1. Compile some modules without debugging information. - 1. Reduce the number of modules. - 1. Split your project into multiple smaller libraries or DLLs. diff --git a/docs/standard-library/identity-structure.md b/docs/standard-library/identity-structure.md index 0214efd578b..b337411706c 100644 --- a/docs/standard-library/identity-structure.md +++ b/docs/standard-library/identity-structure.md @@ -4,31 +4,95 @@ title: "identity Structure" ms.date: "11/04/2016" f1_keywords: ["utility/std::identity"] helpviewer_keywords: ["identity class", "identity structure"] -ms.assetid: 990756fd-7969-4b39-ad7e-0878e8dac8fd +ai-usage: ai-assisted --- -# identity Structure - -A struct that provides a type definition as the template parameter. +# `identity` Structure > [!NOTE] -> This Microsoft-specific `identity` structure from `` is deprecated and may not be available in all versions of Visual Studio. In C++20 and later, use `std::identity` from [``](functional.md) instead, which is the standard-conforming equivalent. +> There's a Microsoft-specific `identity` structure from `` that is deprecated and isn't available in later versions of Visual Studio. For C++20 and later, use `std::identity` from [``](functional.md) instead, which is the standard-conforming equivalent described below. + +## `std::identity` (C++20) + +`std::identity` (introduced in C++20) is a function object whose `operator()` returns its argument unchanged. -## Syntax +Many standard library APIs take a callable argument such as a projection or transformation function. If you need to pass a callable but don't want to change the data, pass `std::identity`. This is common in ranges algorithms. Most `` ranges overloads have a projection parameter that defaults to `std::identity{}`. + +### Syntax ```cpp -struct identity { - typedef Type type; - Type operator()(const Type& left) const; +struct identity +{ + template + _NODISCARD constexpr T&& operator()(T&& t) const noexcept; + using is_transparent = int; }; ``` -### Parameters +### Remarks -*left*\ -The value to identify. +The `is_transparent` member type is a tag that marks `std::identity` as a transparent function object. Its presence indicates that algorithms can perform comparisons or projections without needing to convert types to a common form first. This is useful for associative containers and algorithms that support heterogeneous lookup, allowing them to compare different types directly without constructing temporary objects. -## Remarks +### Example -The class contains the public type definition `type`, which is the same as the template parameter Type. It is used in conjunction with template function [forward](../standard-library/utility-functions.md#forward) to ensure that a function parameter has the desired type. +```cpp +#include +#include +#include +#include +#include -For compatibility with older code, the class also defines the identity function `operator()` which returns its argument *left*. +int main() +{ + std::vector v{3, 1, 4, 1, 5, 9, 2, 6}; + + // Ranges algorithms can apply a projection before comparison. + // But if you don't want to apply a projection, i.e. you don't want to modify the data + // before comparison, you can use std::identity to leave each element unchanged. + // Here, std::identity{} means "project each element as itself". + // So the comparator sees the original int values unchanged. + std::ranges::sort(v, std::less{}, std::identity{}); + + // This call is equivalent because std::identity{} is the default projection. + // In both calls, elements are sorted directly; no field extraction or + // value transformation happens first. + std::ranges::sort(v); + + for (int n : v) + { + std::cout << n << ' '; + } + std::cout << '\n'; + // Output: 1 1 2 3 4 5 6 9 +} +``` + +### Why `is_transparent` matters + +This example searches a `std::vector` with a `std::string_view` key. Because `std::identity` has the `is_transparent` member, the algorithm knows to compare these types directly. This way the key doesn't get converted to a temporary `std::string` just to do the comparison. + +```cpp +#include +#include +#include +#include +#include +#include +#include + +int main() +{ + std::vector words{"apple", "banana", "cherry", "date"}; + std::string_view key = "cherry"; + + // `std::less<>` is transparent, so it can compare `std::string` and + // `std::string_view` directly. + // `std::identity` is also marked transparent (`is_transparent`), so the + // projection stays type-flexible instead of forcing one fixed type. + auto it = std::ranges::lower_bound(words, key, std::less<>{}, std::identity{}); + + if (it != words.end() && *it == key) + { + std::cout << "Found: " << *it << '\n'; + } +} +``` diff --git a/docs/standard-library/scoped-lock-class.md b/docs/standard-library/scoped-lock-class.md index 45c76d8ff0f..fba9b3153b0 100644 --- a/docs/standard-library/scoped-lock-class.md +++ b/docs/standard-library/scoped-lock-class.md @@ -1,24 +1,25 @@ --- title: "scoped_lock Class" description: "Learn more about: scoped_lock Class" -ms.date: 11/04/2016 +ms.date: 04/10/2026 f1_keywords: ["mutex/std::scoped_lock"] +ai-usage: ai-generated --- # scoped_lock Class -The `scoped_lock` class is an RAII (Resource Acquisition Is Initialization) wrapper that acquires one or more mutexes on construction and releases them on destruction. When multiple mutexes are provided, they are locked using a deadlock-avoidance algorithm (equivalent to `std::lock`), which prevents deadlocks regardless of the order in which different threads lock the same set of mutexes. Introduced in C++17. +The `scoped_lock` class acquires one or more mutexes on construction and releases them on destruction. When multiple mutexes are provided, a deadlock-avoidance algorithm (equivalent to `std::lock`) is used to prevent deadlocks. Introduced in C++17. ## Syntax ```cpp template class scoped_lock { - using mutex_type = Mutex; // If MutexTypes... consists of the single type Mutex + using mutex_type = Mutex; explicit scoped_lock(MutexTypes&... m); explicit scoped_lock(MutexTypes&... m, adopt_lock_t); ~scoped_lock(); - scoped_lock(const scoped_lock&) = delete; - scoped_lock& operator=(const scoped_lock&) = delete; + scoped_lock(const scoped_lock&) = delete; // prevent creating a new scoped_lock by copying an existing one + scoped_lock& operator=(const scoped_lock&) = delete; // prevent assigning one scoped_lock to another }; ``` @@ -28,6 +29,8 @@ The `scoped_lock` class manages locking and unlocking of one or more mutexes thr If you need to lock only a single mutex, consider using [`lock_guard`](lock-guard-class.md) or [`unique_lock`](unique-lock-class.md). Use `scoped_lock` when you need to lock multiple mutexes simultaneously without risk of deadlock. +The `scoped_lock` class isn't copyable. + ### Constructors | Constructor | Description | @@ -88,13 +91,13 @@ int main() ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` ## See also [Header files reference](../standard-library/header-files-reference.md)\ -[`lock_guard` Class](lock-guard-class.md)\ -[`unique_lock` Class](unique-lock-class.md)\ +[`lock_guard` class](lock-guard-class.md)\ +[`unique_lock` class](unique-lock-class.md)\ [``](mutex.md) From 6b0c71c6692948552d8cc7a5f935767b8340b4dd Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Sat, 11 Apr 2026 19:21:31 -0700 Subject: [PATCH 406/619] updates --- .../tool-errors/linker-tools-errors-and-warnings.md | 1 - docs/standard-library/scoped-lock-class.md | 1 - 2 files changed, 2 deletions(-) diff --git a/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md b/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md index 1e2d72eaa4a..102d426b6e8 100644 --- a/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md +++ b/docs/error-messages/tool-errors/linker-tools-errors-and-warnings.md @@ -25,7 +25,6 @@ The linker tools LINK, LIB, DUMPBIN, and EDITBIN share a common executable that | [Linker Tools Error LNK1120](linker-tools-error-lnk1120.md) | *number* unresolved externals | | [Linker Tools Error LNK1123](linker-tools-error-lnk1123.md) | failure during conversion to COFF: file invalid or corrupt | | [Linker Tools Error LNK1127](linker-tools-error-lnk1127.md) | library is corrupt | -| Linker Tools Error LNK1131 | no library specified | | [Linker Tools Error LNK1136](linker-tools-error-lnk1136.md) | invalid or corrupt file | | [Linker Tools Error LNK1140](linker-tools-error-lnk1140.md) | too many modules for program database; link with /PDB:NONE | | [Linker Tools Error LNK1141](linker-tools-error-lnk1141.md) | failure during build of exports file | diff --git a/docs/standard-library/scoped-lock-class.md b/docs/standard-library/scoped-lock-class.md index fba9b3153b0..ed3f86176a7 100644 --- a/docs/standard-library/scoped-lock-class.md +++ b/docs/standard-library/scoped-lock-class.md @@ -97,7 +97,6 @@ int main() ## See also -[Header files reference](../standard-library/header-files-reference.md)\ [`lock_guard` class](lock-guard-class.md)\ [`unique_lock` class](unique-lock-class.md)\ [``](mutex.md) From b12152b37dedfd62045c65da9ed79ed30fa1f301 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Sat, 11 Apr 2026 19:31:37 -0700 Subject: [PATCH 407/619] undo a file --- .../how-to-set-code-analysis-properties-for-c-cpp-projects.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/code-quality/how-to-set-code-analysis-properties-for-c-cpp-projects.md b/docs/code-quality/how-to-set-code-analysis-properties-for-c-cpp-projects.md index ef67f41285e..d4b1e95e891 100644 --- a/docs/code-quality/how-to-set-code-analysis-properties-for-c-cpp-projects.md +++ b/docs/code-quality/how-to-set-code-analysis-properties-for-c-cpp-projects.md @@ -18,9 +18,6 @@ ms.assetid: 7af52097-6d44-4785-9b9f-43b7a7d447d7 You can configure which rules the code analysis tool uses to analyze the code in each configuration of your project. In addition, you can direct code analysis to suppress warnings from code that was generated and added to your project by a third-party tool. -> [!NOTE] -> In recent versions of Visual Studio, the legacy **Code Analysis** property page in the project properties dialog may appear empty or show a deprecation notice. Use the individual settings described below to configure code analysis. For CMake projects, use `CMakeSettings.json` or `CMakePresets.json` instead. - ## Code Analysis Property Page The **Code Analysis** property page contains all code analysis configuration settings for an MSBuild project. To open the code analysis property page for a project in **Solution Explorer**, right-click the project and then click **Properties**. Next, expand **Configuration Properties** and select the **Code Analysis** tab. From 06db2193cdb16b07d9f8f71f4d6babeda31ba270 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Sat, 11 Apr 2026 20:06:19 -0700 Subject: [PATCH 408/619] updates --- docs/standard-library/identity-structure.md | 8 +++--- docs/standard-library/scoped-lock-class.md | 28 ++++++++++++++++++++- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/docs/standard-library/identity-structure.md b/docs/standard-library/identity-structure.md index b337411706c..7bc79322de2 100644 --- a/docs/standard-library/identity-structure.md +++ b/docs/standard-library/identity-structure.md @@ -1,7 +1,7 @@ --- description: "Learn more about: identity Structure" title: "identity Structure" -ms.date: "11/04/2016" +ms.date: 04/11/2026 f1_keywords: ["utility/std::identity"] helpviewer_keywords: ["identity class", "identity structure"] ai-usage: ai-assisted @@ -15,7 +15,7 @@ ai-usage: ai-assisted `std::identity` (introduced in C++20) is a function object whose `operator()` returns its argument unchanged. -Many standard library APIs take a callable argument such as a projection or transformation function. If you need to pass a callable but don't want to change the data, pass `std::identity`. This is common in ranges algorithms. Most `` ranges overloads have a projection parameter that defaults to `std::identity{}`. +Many standard library APIs take a callable argument such as a projection or transformation function. If you need to pass a callable but don't want to change the data, pass `std::identity`. This is common in ranges algorithms. Many `` ranges overloads have a projection parameter that defaults to `std::identity{}`. ### Syntax @@ -32,7 +32,7 @@ struct identity The `is_transparent` member type is a tag that marks `std::identity` as a transparent function object. Its presence indicates that algorithms can perform comparisons or projections without needing to convert types to a common form first. This is useful for associative containers and algorithms that support heterogeneous lookup, allowing them to compare different types directly without constructing temporary objects. -### Example +### Examples ```cpp #include @@ -66,8 +66,6 @@ int main() } ``` -### Why `is_transparent` matters - This example searches a `std::vector` with a `std::string_view` key. Because `std::identity` has the `is_transparent` member, the algorithm knows to compare these types directly. This way the key doesn't get converted to a temporary `std::string` just to do the comparison. ```cpp diff --git a/docs/standard-library/scoped-lock-class.md b/docs/standard-library/scoped-lock-class.md index ed3f86176a7..58e64719100 100644 --- a/docs/standard-library/scoped-lock-class.md +++ b/docs/standard-library/scoped-lock-class.md @@ -12,9 +12,31 @@ The `scoped_lock` class acquires one or more mutexes on construction and release ## Syntax ```cpp + +// Single mutex type version +template +class _NODISCARD_LOCK scoped_lock<_Mutex> { +public: + using mutex_type = _Mutex; + + explicit scoped_lock(_Mutex& _Mtx) : _MyMutex(_Mtx) { // construct and lock + _MyMutex.lock(); + } + + explicit scoped_lock(adopt_lock_t, _Mutex& _Mtx) noexcept + : _MyMutex(_Mtx) {} // construct but don't lock + + ~scoped_lock() noexcept { + _MyMutex.unlock(); + } + + scoped_lock(const scoped_lock&) = delete; // prevent creating a new scoped_lock by copying an existing one + scoped_lock& operator=(const scoped_lock&) = delete; // prevent assigning one scoped_lock to another +}; + +// multiple mutex types version template class scoped_lock { - using mutex_type = Mutex; explicit scoped_lock(MutexTypes&... m); explicit scoped_lock(MutexTypes&... m, adopt_lock_t); ~scoped_lock(); @@ -25,12 +47,16 @@ class scoped_lock { ## Remarks +`adopt_lock_t` is a tag type that indicates the `scoped_lock` constructor should assume ownership of mutexes that are already locked by the calling thread. This allows you to create a `scoped_lock` object without locking the mutexes again, which can be useful in certain scenarios where you have already acquired the locks and want to manage their lifetime with a `scoped_lock`. + The `scoped_lock` class manages locking and unlocking of one or more mutexes throughout a scope. When you create a `scoped_lock` object, it acquires ownership of the mutexes passed to it. When the `scoped_lock` object is destroyed (for example, when it goes out of scope), the mutexes are released. This ensures that mutexes are always properly released, even if an exception is thrown. If you need to lock only a single mutex, consider using [`lock_guard`](lock-guard-class.md) or [`unique_lock`](unique-lock-class.md). Use `scoped_lock` when you need to lock multiple mutexes simultaneously without risk of deadlock. The `scoped_lock` class isn't copyable. +If only one mutex type is passed to `scoped_lock`, the `scoped_lock` provides a type alias named `mutex_type` that refers to that one mutex type. However, if you create a `scoped_lock` with two or more mutex types, the `mutex_type` alias does not exist because `mutex_type` only makes sense when there is a single underlying mutex type. With multiple mutexes, there isn’t one mutex type to expose. + ### Constructors | Constructor | Description | From 1fda8913024873771366fcda948ec829883c21da Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Sat, 11 Apr 2026 20:26:53 -0700 Subject: [PATCH 409/619] update flag description --- docs/windows/redistributing-visual-cpp-files.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index c9ab8d102c5..24caab37063 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -68,9 +68,13 @@ The version number is stored in the `REG_SZ` string value `Version` and also in The Visual C++ Redistributable supports several command-line options. The `/?`, `/h`, or `/help` options display a dialog that lists the available options. You can specify `/install` to install, `/repair` to repair, or `/uninstall` to uninstall the Redistributable. The `/layout` option copies the complete contents of the Redistributable in the current directory. -By default, the Redistributable installs its contents and prompts the user for information and whether to restart after installation. You can specify the `/passive` option, which displays a progress bar but doesn't otherwise require user interaction (however, a license acceptance dialog may still appear if the Redistributable hasn't been installed before). You can also specify a `/quiet` option, which doesn't display a user interface or require any user interaction, including no license dialog. Use `/quiet` for fully unattended installations. The `/norestart` option suppresses any attempts to restart. By default, a log file is created in `%TEMP%`. You can use `/log filename.txt` to log to a specific file. +By default, the Redistributable installs its contents and prompts the user for information and whether to restart after installation. You can modify this behavior with the following options: +- `/passive`: shows a progress bar but doesn't otherwise require user interaction (however, a license acceptance dialog may still appear if the Redistributable hasn't been installed before). +- `/quiet`: doesn't display a user interface or require any user interaction, including no license dialog. Use `/quiet` for fully unattended installations. +- `norestart`: suppresses any attempts to restart. By default, a log file is created in `%TEMP%`. +- `/log filename.txt` to log to a specific file. -This example command installs the x64 Redistributable. It shows installation progress but doesn't require user interaction or a restart: +This example command installs the x64 Redistributable. It shows installation progress but doesn't require user interaction (aside from a license acceptance dialog) or a restart: ```cmd vc_redist.x64.exe /install /passive /norestart From 8bd2a67195bf075676600cb79414cdb109cd7131 Mon Sep 17 00:00:00 2001 From: Ivan Povazan Date: Mon, 13 Apr 2026 16:31:24 +0200 Subject: [PATCH 410/619] [docs] Add SHA384 and SHA512 options for checksum in debug info --- .../ml-and-ml64-command-line-reference.md | 2 ++ .../compiler-options-listed-alphabetically.md | 2 +- .../compiler-options-listed-by-category.md | 2 +- docs/build/reference/zh.md | 27 +++++++++++++------ ...ompiler-fatal-errors-c999-through-c1999.md | 1 + .../compiler-errors-1/fatal-error-c1029.md | 16 +++++++++++ docs/error-messages/toc.yml | 2 ++ 7 files changed, 42 insertions(+), 10 deletions(-) create mode 100644 docs/error-messages/compiler-errors-1/fatal-error-c1029.md diff --git a/docs/assembler/masm/ml-and-ml64-command-line-reference.md b/docs/assembler/masm/ml-and-ml64-command-line-reference.md index e4ea469e36f..fd18e15dcdd 100644 --- a/docs/assembler/masm/ml-and-ml64-command-line-reference.md +++ b/docs/assembler/masm/ml-and-ml64-command-line-reference.md @@ -69,6 +69,8 @@ The options listed in the following table: | **`/Zf`** | Makes all symbols public. | | **`/ZH:MD5`** | Use MD5 for checksum in debug info. | | **`/ZH:SHA_256`** | Use SHA256 for checksum in debug info (default in Visual Studio 2022 version 17.0 and later). | +| **`/ZH:SHA384`** | Use SHA384 for checksum in debug info. | +| **`/ZH:SHA512`** | Use SHA512 for checksum in debug info. | | **`/Zi`** | Generates CodeView information in object file. | | **`/Zm`** | Enables **`M510`** option for maximum compatibility with MASM 5.1.
Not available in ml64.exe. | | **`/Zp`**⟦*`alignment`*⟧ | Packs structures on the specified byte boundary. The *`alignment`* can be 1, 2, 4, 8, or 16. | diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md index 193a21544b1..8f81c023df6 100644 --- a/docs/build/reference/compiler-options-listed-alphabetically.md +++ b/docs/build/reference/compiler-options-listed-alphabetically.md @@ -251,7 +251,7 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/Zc:zeroSizeArrayNew[-]`](zc-zerosizearraynew.md) | Call member `new`/`delete` for zero-size arrays of objects (on by default). | | [`/Ze`](za-ze-disable-language-extensions.md) | Deprecated. Enables C89 language extensions. | | [`/Zf`](zf.md) | Improves PDB generation time in parallel builds. | -| [`/ZH:[MD5|SHA1|SHA_256]`](zh.md) | Specifies MD5, SHA-1, or SHA-256 for checksums in debug info. | +| [`/ZH:[MD5|SHA1|SHA_256|SHA384|SHA512]`](zh.md) | Specifies MD5, SHA-1, SHA-256, SHA-384, or SHA-512 for checksums in debug info. | | [`/ZI`](z7-zi-zi-debug-information-format.md) | Includes debug information in a program database compatible with Edit and Continue. (x86 only) | | [`/Zi`](z7-zi-zi-debug-information-format.md) | Generates complete debugging information. | | [`/Zl`](zl-omit-default-library-name.md) | Removes the default library name from the *`.obj`* file. | diff --git a/docs/build/reference/compiler-options-listed-by-category.md b/docs/build/reference/compiler-options-listed-by-category.md index 5b2a78c030d..95220b83c1b 100644 --- a/docs/build/reference/compiler-options-listed-by-category.md +++ b/docs/build/reference/compiler-options-listed-by-category.md @@ -210,7 +210,7 @@ This article contains a categorical list of compiler options. For an alphabetica | [`/Zc:zeroSizeArrayNew[-]`](zc-zerosizearraynew.md) | Call member `new`/`delete` for 0-size arrays of objects (on by default). | | [`/Ze`](za-ze-disable-language-extensions.md) | Deprecated. Enables C89 language extensions. | | [`/Zf`](zf.md) | Improves PDB generation time in parallel builds. | -| [`/ZH`:[MD5|SHA1|SHA_256]](zh.md) | Specifies MD5, SHA-1, or SHA-256 for checksums in debug info. | +| [`/ZH`:[MD5|SHA1|SHA_256|SHA384|SHA512]](zh.md) | Specifies MD5, SHA-1, SHA-256, SHA-384, or SHA-512 for checksums in debug info. | | [`/ZI`](z7-zi-zi-debug-information-format.md) | Includes debug information in a program database compatible with Edit and Continue. (x86 only) | | [`/Zi`](z7-zi-zi-debug-information-format.md) | Generates complete debugging information. | | [`/Zl`](zl-omit-default-library-name.md) | Removes the default library name from the *`.obj`* file. | diff --git a/docs/build/reference/zh.md b/docs/build/reference/zh.md index 3cefaf8e712..5e77baaa831 100644 --- a/docs/build/reference/zh.md +++ b/docs/build/reference/zh.md @@ -1,9 +1,9 @@ --- title: "/ZH (Hash algorithm for calculation of file checksum in debug info)" -description: "Use the /ZH compiler option to enable MD5, SHA-1, or SHA-256 source file checksums in debug info" -ms.date: 02/01/2022 -f1_keywords: ["/ZH", "/ZH:MD5", "/ZH:SHA1", "/ZH:SHA_256"] -helpviewer_keywords: ["/ZH", "/ZH:MD5", "/ZH:SHA1", "/ZH:SHA_256", "/ZH compiler option", "/ZH:MD5 compiler option", "/ZH:SHA1 compiler option", "/ZH:SHA_256 compiler option", "Hash algorithm for file checksum in debug info"] +description: "Use the /ZH compiler option to enable MD5, SHA-1, SHA-256, SHA-384, or SHA-512 source file checksums in debug info" +ms.date: 04/13/2026 +f1_keywords: ["/ZH", "/ZH:MD5", "/ZH:SHA1", "/ZH:SHA_256", "/ZH:SHA384", "/ZH:SHA512"] +helpviewer_keywords: ["/ZH", "/ZH:MD5", "/ZH:SHA1", "/ZH:SHA_256", "/ZH:SHA384", "/ZH:SHA512", "/ZH compiler option", "/ZH:MD5 compiler option", "/ZH:SHA1 compiler option", "/ZH:SHA_256 compiler option", "/ZH:SHA384 compiler option", "/ZH:SHA512 compiler option", "Hash algorithm for file checksum in debug info"] --- # `/ZH` (Hash algorithm for calculation of file checksum in debug info) @@ -13,7 +13,9 @@ Specifies which cryptographic hash algorithm to use to generate a checksum of ea > **`/ZH:MD5`**\ > **`/ZH:SHA1`**\ -> **`/ZH:SHA_256`** +> **`/ZH:SHA_256`**\ +> **`/ZH:SHA384`**\ +> **`/ZH:SHA512`** ## Arguments @@ -26,11 +28,20 @@ Use an SHA-1 hash for the checksum. **`/ZH:SHA_256`**\ Use an SHA-256 hash for the checksum. This option is the default in Visual Studio 2022 version 17.0 and later. +**`/ZH:SHA384`**\ +Use an SHA-384 hash for the checksum. + +**`/ZH:SHA512`**\ +Use an SHA-512 hash for the checksum. + ## Remarks -PDB files store a checksum for each source file, compiled into the object code in the associated executable. The checksum allows the debugger to verify that the source code it loads matches the executable. The compiler and debugger support MD5, SHA-1, and SHA-256 hash algorithms. By default, in Visual Studio 2019 the compiler uses an MD5 hash to generate the checksum. To specify this hash algorithm explicitly, use the **`/ZH:MD5`** option. +PDB files store a checksum for each source file, compiled into the object code in the associated executable. The checksum allows the debugger to verify that the source code it loads matches the executable. The compiler and debugger support MD5, SHA-1, SHA-256, SHA-384, and SHA-512 hash algorithms. By default, in Visual Studio 2019 the compiler uses an MD5 hash to generate the checksum. To specify this hash algorithm explicitly, use the **`/ZH:MD5`** option. + +Because of a risk of collision problems in MD5 and SHA-1, Microsoft recommends you use the **`/ZH:SHA_256`** option or stronger. The SHA-384 and SHA-512 options provide stronger checksums but might result in a larger increase in compile times. The **`/ZH:SHA_256`** option is the default in Visual Studio 2022 version 17.0 and later. -Because of a risk of collision problems in MD5 and SHA-1, Microsoft recommends you use the **`/ZH:SHA_256`** option. The SHA-256 hash might result in a small increase in compile times. The **`/ZH:SHA_256`** option is the default in Visual Studio 2022 version 17.0 and later. +> [!NOTE] +> The **`/ZH:SHA384`** and **`/ZH:SHA512`** options aren't supported for IFC (module interface) files. If you compile modules with one of these options, the compiler emits [fatal error C1029](../../error-messages/compiler-errors-1/fatal-error-c1029.md). Use **`/ZH:SHA_256`** or a smaller hash algorithm when you compile C++ modules. When more than one **`/ZH`** option is specified, the last option is used. @@ -44,7 +55,7 @@ The **`/ZH`** option is available in Visual Studio 2019 version 16.4 and later. 1. Select the **Configuration Properties** > **C/C++** > **Command Line** property page. -1. Modify the **Additional options** property to add a **`/ZH:MD5`**, **`/ZH:SHA1`**, or **`/ZH:SHA_256`** option, and then choose **OK**. +1. Modify the **Additional options** property to add a **`/ZH:MD5`**, **`/ZH:SHA1`**, **`/ZH:SHA_256`**, **`/ZH:SHA384`**, or **`/ZH:SHA512`** option, and then choose **OK**. ## See also diff --git a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md index 8ba3fceb817..d19b4ce9368 100644 --- a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md +++ b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md @@ -43,6 +43,7 @@ The articles in this section of the documentation explain a subset of the error | [Fatal error C1026](fatal-error-c1026.md) | parser stack overflow, program too complex | | Fatal error C1027 | **(Obsolete)** Inconsistent values for /Ym between creation and use of precompiled header | | Fatal error C1028 | missing IFC for analysis. Please rebuild *module* '*ifc filename*' with `/analyze`. | +| [Fatal error C1029](fatal-error-c1029.md) | '*filename*': source file hash (*number* bytes) exceeds the IFC format's maximum supported hash size (*number* bytes); use a smaller hash algorithm such as SHA-256 | | Fatal error C1030 | WMMX types not allowed in the function signature by the calling convention | | Fatal error C1032 | `__eabi` requires VFP code generation (`/QRfpe-`) | | [Fatal error C1033](fatal-error-c1033.md) | cannot open program database '*file*' | diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1029.md b/docs/error-messages/compiler-errors-1/fatal-error-c1029.md new file mode 100644 index 00000000000..0e52957dfe2 --- /dev/null +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1029.md @@ -0,0 +1,16 @@ +--- +title: "Fatal error C1029" +description: "Learn more about: Fatal error C1029" +ms.date: 04/13/2026 +f1_keywords: ["C1029"] +helpviewer_keywords: ["C1029"] +--- +# Fatal error C1029 + +> '*filename*': source file hash (*number* bytes) exceeds the IFC format's maximum supported hash size (*number* bytes); use a smaller hash algorithm such as SHA-256 + +## Remarks + +This error occurs when you compile a C++ module (or header unit) with a [`/ZH`](../../build/reference/zh.md) hash algorithm that produces a checksum larger than the current IFC format supports. The **`/ZH:SHA384`** and **`/ZH:SHA512`** options produce checksums that exceed this limit. + +To fix this error, use **`/ZH:SHA_256`** or a smaller hash algorithm (such as **`/ZH:SHA1`** or **`/ZH:MD5`**) when you compile modules or header units. The default **`/ZH:SHA_256`** option works correctly with IFC files. diff --git a/docs/error-messages/toc.yml b/docs/error-messages/toc.yml index acb65fcdd54..fe34e4d9634 100644 --- a/docs/error-messages/toc.yml +++ b/docs/error-messages/toc.yml @@ -136,6 +136,8 @@ items: href: compiler-errors-1/fatal-error-c1025-c1115.md - name: Fatal error C1026 href: compiler-errors-1/fatal-error-c1026.md + - name: Fatal error C1029 + href: compiler-errors-1/fatal-error-c1029.md - name: Fatal error C1033 href: compiler-errors-1/fatal-error-c1033.md - name: Fatal error C1035 From e87a3d63c1e79a7340840bf1670a6edbb18af192 Mon Sep 17 00:00:00 2001 From: Ivan Povazan Date: Mon, 13 Apr 2026 18:11:30 +0200 Subject: [PATCH 411/619] Add a link to DIA SDK docs --- docs/build/reference/zh.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/build/reference/zh.md b/docs/build/reference/zh.md index 5e77baaa831..b87952888f4 100644 --- a/docs/build/reference/zh.md +++ b/docs/build/reference/zh.md @@ -60,4 +60,5 @@ The **`/ZH`** option is available in Visual Studio 2019 version 16.4 and later. ## See also [Compiler options](compiler-options.md)\ +[Debug Interface Access SDK](/visualstudio/debugger/debug-interface-access/idiasourcefile-get-checksumtype)\ [Source server](/windows/win32/debug/source-server-and-source-indexing) From 459b135de8329e20ea3899e7ffb151454c14bb3a Mon Sep 17 00:00:00 2001 From: Ivan Povazan Date: Mon, 13 Apr 2026 18:28:46 +0200 Subject: [PATCH 412/619] Better link title for DIA reference --- docs/build/reference/zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zh.md b/docs/build/reference/zh.md index b87952888f4..ebed6282fd8 100644 --- a/docs/build/reference/zh.md +++ b/docs/build/reference/zh.md @@ -60,5 +60,5 @@ The **`/ZH`** option is available in Visual Studio 2019 version 16.4 and later. ## See also [Compiler options](compiler-options.md)\ -[Debug Interface Access SDK](/visualstudio/debugger/debug-interface-access/idiasourcefile-get-checksumtype)\ +[Debug Interface Access SDK - IDiaSourceFile::get_checksumType](/visualstudio/debugger/debug-interface-access/idiasourcefile-get-checksumtype)\ [Source server](/windows/win32/debug/source-server-and-source-indexing) From 4701b4ce0361bc0508c76830adf99bd806fe576c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 13 Apr 2026 15:03:34 -0700 Subject: [PATCH 413/619] updates --- docs/code-quality/c6387.md | 1 + docs/windows/redistributing-visual-cpp-files.md | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/code-quality/c6387.md b/docs/code-quality/c6387.md index ab1c36f2927..b6aa4f4bc65 100644 --- a/docs/code-quality/c6387.md +++ b/docs/code-quality/c6387.md @@ -4,6 +4,7 @@ description: "Learn more about: Warning C6387" ms.date: 04/10/2026 f1_keywords: ["C6387", "INVALID_PARAM_VALUE_1", "__WARNING_INVALID_PARAM_VALUE_1"] helpviewer_keywords: ["C6387"] +ai-usage: ai-assisted --- # Warning C6387 diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index 24caab37063..3ea69dc4b91 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -1,7 +1,7 @@ --- title: Redistribute Visual C++ Files description: Learn about Visual Studio Redistributable libraries and components that you can deploy with your app. -ms.date: 01/15/2025 +ms.date: 04/13/2026 helpviewer_keywords: ["application deployment [C++], file redistributing", "redistributing applications [C++]", "deploying applications [C++], file redistributing", "file redistribution [C++]", "redistributing applications [C++], about redistributing applications"] ms.topic: concept-article --- @@ -69,12 +69,12 @@ The version number is stored in the `REG_SZ` string value `Version` and also in The Visual C++ Redistributable supports several command-line options. The `/?`, `/h`, or `/help` options display a dialog that lists the available options. You can specify `/install` to install, `/repair` to repair, or `/uninstall` to uninstall the Redistributable. The `/layout` option copies the complete contents of the Redistributable in the current directory. By default, the Redistributable installs its contents and prompts the user for information and whether to restart after installation. You can modify this behavior with the following options: -- `/passive`: shows a progress bar but doesn't otherwise require user interaction (however, a license acceptance dialog may still appear if the Redistributable hasn't been installed before). +- `/passive`: shows a progress bar as the Redistributable installs but doesn't otherwise require user interaction. - `/quiet`: doesn't display a user interface or require any user interaction, including no license dialog. Use `/quiet` for fully unattended installations. - `norestart`: suppresses any attempts to restart. By default, a log file is created in `%TEMP%`. - `/log filename.txt` to log to a specific file. -This example command installs the x64 Redistributable. It shows installation progress but doesn't require user interaction (aside from a license acceptance dialog) or a restart: +This example command installs the x64 Redistributable. It shows installation progress but doesn't require user interaction aside from a license acceptance dialog or a restart: ```cmd vc_redist.x64.exe /install /passive /norestart From d64ba7f45de13f9359d507690063006c6bd569f5 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 13 Apr 2026 15:42:48 -0700 Subject: [PATCH 414/619] update --- docs/windows/redistributing-visual-cpp-files.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index 3ea69dc4b91..be56ed44ff8 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -74,7 +74,7 @@ By default, the Redistributable installs its contents and prompts the user for i - `norestart`: suppresses any attempts to restart. By default, a log file is created in `%TEMP%`. - `/log filename.txt` to log to a specific file. -This example command installs the x64 Redistributable. It shows installation progress but doesn't require user interaction aside from a license acceptance dialog or a restart: +This example command installs the x64 Redistributable. It shows installation progress but doesn't require user interaction aside from a restart: ```cmd vc_redist.x64.exe /install /passive /norestart From 3cf06732611a34b3214ba59781f3d74ef4784bd8 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 13 Apr 2026 15:55:08 -0700 Subject: [PATCH 415/619] update --- docs/windows/redistributing-visual-cpp-files.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index be56ed44ff8..185fa34b298 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -70,9 +70,10 @@ The Visual C++ Redistributable supports several command-line options. The `/?`, By default, the Redistributable installs its contents and prompts the user for information and whether to restart after installation. You can modify this behavior with the following options: - `/passive`: shows a progress bar as the Redistributable installs but doesn't otherwise require user interaction. -- `/quiet`: doesn't display a user interface or require any user interaction, including no license dialog. Use `/quiet` for fully unattended installations. -- `norestart`: suppresses any attempts to restart. By default, a log file is created in `%TEMP%`. +- `/quiet`: doesn't display a user interface or require any user interaction. Use `/quiet` for fully unattended installations. +- `/norestart`: suppresses any attempts to restart. By default, a log file is created in `%TEMP%`. - `/log filename.txt` to log to a specific file. +If you are not running from an elevated command prompt, in any of these cases you'll need to respond to a User Account Control prompt to allow the installer to run with administrative privileges. This example command installs the x64 Redistributable. It shows installation progress but doesn't require user interaction aside from a restart: From 64d64c38a91851deeb0838da6163005e25a15159 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 13 Apr 2026 16:16:15 -0700 Subject: [PATCH 416/619] fix line --- docs/windows/redistributing-visual-cpp-files.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index 185fa34b298..15d2a671fca 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -73,7 +73,8 @@ By default, the Redistributable installs its contents and prompts the user for i - `/quiet`: doesn't display a user interface or require any user interaction. Use `/quiet` for fully unattended installations. - `/norestart`: suppresses any attempts to restart. By default, a log file is created in `%TEMP%`. - `/log filename.txt` to log to a specific file. -If you are not running from an elevated command prompt, in any of these cases you'll need to respond to a User Account Control prompt to allow the installer to run with administrative privileges. + +If you aren't running from an elevated command prompt, you'll need to respond to a User Account Control prompt to allow the installer to run with administrative privileges. This example command installs the x64 Redistributable. It shows installation progress but doesn't require user interaction aside from a restart: From ac0c7b154b5ba480162d5d8a9bbfc227199a45c0 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 13 Apr 2026 16:58:03 -0700 Subject: [PATCH 417/619] one more fix --- docs/build/reference/gm-enable-minimal-rebuild.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/docs/build/reference/gm-enable-minimal-rebuild.md b/docs/build/reference/gm-enable-minimal-rebuild.md index f0ec29080de..392220656af 100644 --- a/docs/build/reference/gm-enable-minimal-rebuild.md +++ b/docs/build/reference/gm-enable-minimal-rebuild.md @@ -1,14 +1,13 @@ --- description: "Learn more about: /Gm (Enable Minimal Rebuild)" title: "/Gm (Enable Minimal Rebuild)" -ms.date: "11/12/2018" +ms.date: 04/14/2026 f1_keywords: ["VC.Project.VCCLCompilerTool.MinimalRebuild", "/Gm", "VC.Project.VCCLWCECompilerTool.MinimalRebuild"] helpviewer_keywords: ["/Gm compiler option [C++]", "minimal rebuild", "enable minimal rebuild compiler option [C++]", "Gm compiler option [C++]", "-Gm compiler option [C++]"] -ms.assetid: d8869ce0-d2ea-40eb-8dae-6d2cdb61dd59 --- # /Gm (Enable Minimal Rebuild) -Deprecated. Enables minimal rebuild, which determines whether C++ source files that include changed C++ class definitions (stored in header (.h) files) need to be recompiled. +Deprecated in Visual Studio 2019 version 16.0. Enables minimal rebuild, which determines whether C++ source files that include changed C++ class definitions (stored in header (.h) files) need to be recompiled. ## Syntax @@ -18,7 +17,7 @@ Deprecated. Enables minimal rebuild, which determines whether C++ source files t ## Remarks -**/Gm** is deprecated. It may not trigger a build for certain kinds of header file changes. You may safely remove this option from your projects. To improve build times, we recommend you use precompiled headers and incremental and parallel build options instead. For a list of deprecated compiler options, see the **Deprecated and Removed Compiler Options** section in [Compiler Options Listed by Category](compiler-options-listed-by-category.md). +**/Gm** is deprecated as of Visual Studio 2019 version 16.0. Using it produces compiler warning D9035. It may not trigger a build for certain kinds of header file changes. You may safely remove this option from your projects. To improve build times, we recommend you use precompiled headers and incremental and parallel build options instead. For a list of deprecated compiler options, see the **Deprecated and Removed Compiler Options** section in [Compiler Options Listed by Category](compiler-options-listed-by-category.md). The compiler stores dependency information between source files and class definitions in the project's .idb file during the first compile. (Dependency information tells which source file is dependent on which class definition, and which .h file the definition is located in.) Subsequent compiles use the information stored in the .idb file to determine whether a source file needs to be compiled, even if it includes a modified .h file. @@ -30,9 +29,7 @@ Because the incremental linker does not support the Windows metadata included in ### To set this compiler option in the Visual Studio development environment 1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). - 1. Select the **Configuration Properties** > **C/C++** > **Code Generation** property page. - 1. Modify the **Enable Minimal Rebuild** property. ### To set this compiler option programmatically @@ -41,5 +38,5 @@ Because the incremental linker does not support the Windows metadata included in ## See also -[MSVC Compiler Options](compiler-options.md)
+[MSVC Compiler Options](compiler-options.md)\ [MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md) From 7f550af72846bf70af7b7ca5c523b771a3eb2381 Mon Sep 17 00:00:00 2001 From: Ivan Povazan <55002338+ivanpovazan@users.noreply.github.com> Date: Tue, 14 Apr 2026 05:14:27 +0200 Subject: [PATCH 418/619] Apply suggestion from feedback --- docs/build/reference/zh.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zh.md b/docs/build/reference/zh.md index ebed6282fd8..d30cd5a3651 100644 --- a/docs/build/reference/zh.md +++ b/docs/build/reference/zh.md @@ -38,7 +38,7 @@ Use an SHA-512 hash for the checksum. PDB files store a checksum for each source file, compiled into the object code in the associated executable. The checksum allows the debugger to verify that the source code it loads matches the executable. The compiler and debugger support MD5, SHA-1, SHA-256, SHA-384, and SHA-512 hash algorithms. By default, in Visual Studio 2019 the compiler uses an MD5 hash to generate the checksum. To specify this hash algorithm explicitly, use the **`/ZH:MD5`** option. -Because of a risk of collision problems in MD5 and SHA-1, Microsoft recommends you use the **`/ZH:SHA_256`** option or stronger. The SHA-384 and SHA-512 options provide stronger checksums but might result in a larger increase in compile times. The **`/ZH:SHA_256`** option is the default in Visual Studio 2022 version 17.0 and later. +Because of a risk of collision problems in MD5 and SHA-1, use the **`/ZH:SHA_256`** option or stronger. The SHA-384 and SHA-512 options provide stronger checksums but can increase compile time. The **`/ZH:SHA_256`** option is the default in Visual Studio 2022 version 17.0 and later. > [!NOTE] > The **`/ZH:SHA384`** and **`/ZH:SHA512`** options aren't supported for IFC (module interface) files. If you compile modules with one of these options, the compiler emits [fatal error C1029](../../error-messages/compiler-errors-1/fatal-error-c1029.md). Use **`/ZH:SHA_256`** or a smaller hash algorithm when you compile C++ modules. From ccd1f611701cc95b5bc118e332c3f5d2897d79e6 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 14 Apr 2026 09:29:58 -0700 Subject: [PATCH 419/619] fix issue --- docs/standard-library/identity-structure.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/standard-library/identity-structure.md b/docs/standard-library/identity-structure.md index 7bc79322de2..252785219fc 100644 --- a/docs/standard-library/identity-structure.md +++ b/docs/standard-library/identity-structure.md @@ -8,13 +8,13 @@ ai-usage: ai-assisted --- # `identity` Structure +`std::identity` (introduced in C++20) is a function object whose `operator()` returns its argument unchanged. + > [!NOTE] > There's a Microsoft-specific `identity` structure from `` that is deprecated and isn't available in later versions of Visual Studio. For C++20 and later, use `std::identity` from [``](functional.md) instead, which is the standard-conforming equivalent described below. ## `std::identity` (C++20) -`std::identity` (introduced in C++20) is a function object whose `operator()` returns its argument unchanged. - Many standard library APIs take a callable argument such as a projection or transformation function. If you need to pass a callable but don't want to change the data, pass `std::identity`. This is common in ranges algorithms. Many `` ranges overloads have a projection parameter that defaults to `std::identity{}`. ### Syntax From 11c455c4dea8a84edc07c39fd79c55ebc4a14dcb Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 14 Apr 2026 10:17:31 -0700 Subject: [PATCH 420/619] diagnostic updates --- .../compiler-errors-1/compiler-error-c2001.md | 2 +- .../compiler-errors-1/compiler-error-c2002.md | 2 +- .../compiler-errors-1/compiler-error-c2017.md | 2 +- .../compiler-errors-1/compiler-error-c2018.md | 2 +- .../compiler-errors-1/compiler-error-c2043.md | 2 +- .../compiler-errors-c2001-through-c2099.md | 10 +-- ...ompiler-fatal-errors-c999-through-c1999.md | 4 +- .../compiler-errors-1/fatal-error-c1853.md | 2 +- .../compiler-errors-c2900-through-c3499.md | 1 + .../compiler-errors-c3500-through-c3999.md | 2 + .../compiler-errors-c7500-through-c7999.md | 35 ++++++++++ .../compiler-warning-level-1-c4630.md | 2 +- .../compiler-warning-level-4-c4709.md | 4 +- .../compiler-warnings-by-compiler-version.md | 65 ++++++++++++++++++- .../compiler-warnings-c4600-through-c4799.md | 4 +- .../compiler-warnings-c4800-through-c4999.md | 7 ++ .../compiler-warnings-c5200-through-c5399.md | 22 +++++++ 17 files changed, 150 insertions(+), 18 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2001.md b/docs/error-messages/compiler-errors-1/compiler-error-c2001.md index 6f34a4fc3d2..1170e085548 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2001.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2001.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2001"] --- # Compiler Error C2001 -> newline in constant +> newline in string literal ## Remarks diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2002.md b/docs/error-messages/compiler-errors-1/compiler-error-c2002.md index 418f0bc0552..ed534e6c58e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2002.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2002.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2002"] --- # Compiler Error C2002 -> invalid wide-character constant +> expected an ordinary string literal ## Remarks diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2017.md b/docs/error-messages/compiler-errors-1/compiler-error-c2017.md index d659ba2526b..ad33821d233 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2017.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2017.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2017"] --- # Compiler Error C2017 -> illegal escape sequence +> unknown escape sequence ## Remarks diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2018.md b/docs/error-messages/compiler-errors-1/compiler-error-c2018.md index 16c19e66bfb..be116891238 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2018.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2018.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2018"] --- # Compiler Error C2018 -> unknown character 'hexnumber' +> character 'U+*value*' is not permitted here ## Remarks diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2043.md b/docs/error-messages/compiler-errors-1/compiler-error-c2043.md index 5cc6bae8010..ec2ed0e8263 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2043.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2043.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C2043"] --- # Compiler Error C2043 -> illegal break +> break statement not within loop or switch statement ## Remarks diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md index d12d6a6217b..91dc3d25e32 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md @@ -15,8 +15,8 @@ The articles in this section of the documentation explain a subset of the error | Error | Message | |--|--| -| [Compiler error C2001](compiler-error-c2001.md) | newline in constant | -| [Compiler error C2002](compiler-error-c2002.md) | invalid wide-character constant | +| [Compiler error C2001](compiler-error-c2001.md) | newline in string literal | +| [Compiler error C2002](compiler-error-c2002.md) | expected an ordinary string literal | | [Compiler error C2003](compiler-error-c2003.md) | expected 'defined id' | | [Compiler error C2004](compiler-error-c2004.md) | expected 'defined(id)' | | [Compiler error C2005](compiler-error-c2005.md) | #line expected a line number, found '*token*' | @@ -31,8 +31,8 @@ The articles in this section of the documentation explain a subset of the error | [Compiler error C2014](compiler-error-c2014.md) | preprocessor command must start as first nonwhite space | | [Compiler error C2015](compiler-error-c2015.md) | too many characters in constant | | [Compiler error C2016](compiler-error-c2016.md) | C requires that a struct or union has at least one member | -| [Compiler error C2017](compiler-error-c2017.md) | illegal escape sequence | -| [Compiler error C2018](compiler-error-c2018.md) | unknown character '0x*value*' | +| [Compiler error C2017](compiler-error-c2017.md) | unknown escape sequence | +| [Compiler error C2018](compiler-error-c2018.md) | character 'U+*value*' is not permitted here | | [Compiler error C2019](compiler-error-c2019.md) | expected preprocessor directive, found '*character*' | | [Compiler error C2020](compiler-error-c2020.md) | '*member*': '*class*' member redefinition | | [Compiler error C2021](compiler-error-c2021.md) | expected exponent value, not '*character*' | @@ -57,7 +57,7 @@ The articles in this section of the documentation explain a subset of the error | [Compiler error C2040](compiler-error-c2040.md) | '*operator*': '*identifier1*' differs in levels of indirection from '*identifier2*' | | [Compiler error C2041](compiler-error-c2041.md) | illegal digit '*character*' for base '*number*' | | [Compiler error C2042](compiler-error-c2042.md) | signed/unsigned keywords mutually exclusive | -| [Compiler error C2043](compiler-error-c2043.md) | illegal break | +| [Compiler error C2043](compiler-error-c2043.md) | break statement not within loop or `switch` statement | | [Compiler error C2044](compiler-error-c2044.md) | illegal continue | | [Compiler error C2045](compiler-error-c2045.md) | '*identifier*': label redefined | | [Compiler error C2046](compiler-error-c2046.md) | illegal case | diff --git a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md index 8ba3fceb817..86ee53ccc31 100644 --- a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md +++ b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md @@ -43,6 +43,7 @@ The articles in this section of the documentation explain a subset of the error | [Fatal error C1026](fatal-error-c1026.md) | parser stack overflow, program too complex | | Fatal error C1027 | **(Obsolete)** Inconsistent values for /Ym between creation and use of precompiled header | | Fatal error C1028 | missing IFC for analysis. Please rebuild *module* '*ifc filename*' with `/analyze`. | +| Fatal error C1029|'*hash*': source file hash (*bytes* bytes) exceeds the IFC format's maximum supported hash size (*bytes* bytes); use a smaller hash algorithm such as SHA-256| | Fatal error C1030 | WMMX types not allowed in the function signature by the calling convention | | Fatal error C1032 | `__eabi` requires VFP code generation (`/QRfpe-`) | | [Fatal error C1033](fatal-error-c1033.md) | cannot open program database '*file*' | @@ -130,6 +131,7 @@ The articles in this section of the documentation explain a subset of the error | [Fatal error C1126](fatal-error-c1126.md) | automatic allocation exceeds *size* | | Fatal error C1127 | *Operation* requires *option* | | [Fatal error C1128](fatal-error-c1128.md) | number of sections exceeded object file format limit: compile with `/bigobj` | +|Compiler error C1188|'`#warning`' requires '*language version*' or later| | [Fatal error C1189](fatal-error-c1189.md) | `#error`: *message* | | [Fatal error C1190](fatal-error-c1190.md) | `System::Object` not found, missing `/clr` option or missing import of standard assemblies? | | [Fatal error C1191](fatal-error-c1191.md) | '*file*' can only be imported at global scope | @@ -197,7 +199,7 @@ The articles in this section of the documentation explain a subset of the error | Fatal error C1604 | fatal lambda parsing error: see the lambda definition beginning on line *number* | | Fatal error C1605 | compiler limit: object file size cannot exceed 4 GB | | [Fatal error C1852](fatal-error-c1852.md) | '*file*' is not a valid precompiled header file | -| [Fatal error C1853](fatal-error-c1853.md) | '*file*' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa) | +| [Fatal error C1853](fatal-error-c1853.md) | '*file*' precompiled header file is from a different version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa) | | [Fatal error C1854](fatal-error-c1854.md) | cannot overwrite information formed during creation of the precompiled header in object file: '*file*' | | Fatal error C1859 | **(Obsolete)** '*Message*' unexpected precompiled header error, simply rerunning the compiler might fix this problem | | [Fatal error C1900](fatal-error-c1900.md) | IL mismatch between '*tool*' version '*number*' and '*tool*' version '*number*' | diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1853.md b/docs/error-messages/compiler-errors-1/fatal-error-c1853.md index 6ff6d7e1dd8..3953a1c76c3 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1853.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1853.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C1853"] --- # Fatal Error C1853 -> '*filename*' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa) +> '*file*' precompiled header file is from a different version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa) ## Remarks diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md index f426601753e..a6803dbf5dd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md @@ -114,6 +114,7 @@ The articles in this section of the documentation explain a subset of the error | [Compiler error C2996](compiler-error-c2996.md) | '*function*': recursive function template definition | | Compiler error C2997 | '*function*': array bound cannot be deduced from a default member initializer | | [Compiler error C2998](compiler-error-c2998.md) | '*identifier*': cannot be a template definition | +|Compiler error C2999|maximum template instantiation depth of *depth* exceeded (see '`/templateDepth:N`')| ## See also diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md index e1469d0230f..666fdb6fb1b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md @@ -122,6 +122,7 @@ The articles in this section explain a subset of the error messages generated by |Compiler error C3604|'*identifier*': can only create a managed object on the gc heap| |Compiler error C3605|The total number of samplers (*number* captured and *number* predefined) exceed *number* when compiling the call graph for the concurrency::parallel_for_each at: '*function*'| | Compiler error C3606 | intrinsic function '*function*' cannot be mapped to HLSL | +|Compiler error C3607|a structured binding declaration cannot have constraints| |[Compiler error C3609](compiler-error-c3609.md)|'*identifier*': a 'sealed/final' function must be virtual| |[Compiler error C3610](compiler-error-c3610.md)|'*identifier*': value type must be 'boxed' before method '*method*' can be called| |[Compiler error C3611](compiler-error-c3611.md)|'*identifier*': a sealed function cannot have a pure-specifier| @@ -512,6 +513,7 @@ The articles in this section explain a subset of the error messages generated by |Compiler error C3996|Obsolete.| | Compiler error C3997 | Warbird: *message* | |Compiler error C3998|'c++*version*': unsupported C++ version; defaulting to 'c++*version*'| +|Compiler error C3999|expected at least one argument, but observed zero for attribute `[[`*attribute*`]]`| ## See also diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md index 02b5801c7bd..6990d3bfac8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md @@ -178,6 +178,8 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7660 | '%s': requires '%s' command line option(s) | | Compiler error C7661 | header-name '%s' has an ambiguous resolution to header '%s' | | Compiler error C7662 | '%$S': a coroutine cannot be constexpr or consteval | +|Compiler error C7663|'*version*': unsupported ABI version; using default| +|Compiler error C7664|'*operator*': ordered comparison of pointer and integer zero ('*type*' and '*type*')| | Compiler error C7665 | '*operator*': you cannot assign to '`this`' as it is not an lvalue | | Compiler error C7666 | you cannot apply '*operator*' to '`this`' as it is not an lvalue | | Compiler error C7667 | no global `operator delete` function found | @@ -242,6 +244,33 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7741 | ABI inconsistency: '*function*' was originally assumed to use '`C`' return semantics but now it requires '`C++`' return semantics | | [Compiler error C7742](compiler-error-c7742.md) | '*identifier*': a forward declaration of an enum can only use a simple identifier | | Compiler error C7743 | [`__preserve_none` calling convention](../../cpp/preserve-none.md) is not supported | +|Compiler error C7744|escape sequence '*sequence*' out of range| +|Compiler error C7745|attribute `[[msvc::musttail]]` may only be applied to return statements that return a function call expression| +|Compiler error C7746|'*symbol*': cannot appear in its own initializer| +|Compiler error C7747|a type name cannot include the '*specifier*' specifier| +|Compiler error C7748|a type name cannot include the '`__declspec(`*specifier*`)`' specifier| +|Compiler error C7749|'*identifier*': a lambda template parameter cannot have the same name as a capture| +|Compiler error C7750|'*identifier*': a lambda parameter cannot have the same name as a capture| +|Compiler error C7751|'*function*': overriding virtual function has different ref-qualifier from base class virtual member function '*function*'| +|Compiler error C7752|call stack overflow due to excessive template instantiation| +|Compiler error C7753|ill-formed conversion-function-id| +|Compiler error C7754|'*type*' a type cannot be defined as a return or parameter type| +|Compiler error C7755|'*function*': noexcept-specifier depends on itself| +|Compiler error C7756|'*symbol*': declaration attached to module '*name*' conflicts with '*name*' attached to the global module| +|Compiler error C7757|an array of unknown size cannot be initialized by an empty initializer| +|Compiler error C7758|'*type*': cannot be used as the type of an explicit object parameter for a lambda| +|Compiler error C7759|linkage specification is not allowed on an explicit specialization, an explicit instantiation or an export declaration| +|Compiler error C7760|export declaration is not allowed on an explicit specialization, an explicit instantiation, a partial specialization or an export declaration| +|Compiler error C7762|'`\`*escape sequence*`{`' not terminated with '`}`'| +|Compiler error C7763|empty delimited escape sequence| +|Compiler error C7765|'`\o`' not followed by '`{`'| +|Compiler error C7766|incomplete universal character name *name*| +|Compiler error C7767|incomplete named universal character| +|Compiler error C7768|'*name*' is not a valid Unicode character name: names are sensative to casing and whitespace| +|Compiler error C7769|unable to look up Unicode character name, Unicode name support is missing on host machine| +|Compiler error C7770|invalid `[[`*attribute*`]]` attribute| +|Compiler error C7771|ill-formed attribute `[[`*attribute*`]]`| +|Compiler error C7772|invalid string literal| | Compiler error C7800 | duplicate explicit instantiation definition of '*name*' | | Compiler error C7801 | '*function*': if one declaration of '*identifier*' has the '`[[msvc::disptach]]`' attribute then all functions must have the attribute | | Compiler error C7802 | '*identifier*': a capability must resolve to an enumerator | @@ -249,6 +278,12 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7804 | '*identifier*': cannot find a matching default dispatch function | | Compiler error C7806 | support for the '`msvc::dispatch`' attribute requires '`/experimental:loadTimeSelection`' | | Compiler error C7807 | expecting a narrow string literal | +|Compiler error C7808|'*identifier*': a non-default dispatch function cannot be declared with '*keyword*'| +|Compiler error C7809|'*identifier*': a non-default dispatch function cannot have any default arguments| +|Compiler error C7810|decltype cannot be used in declarative nested name specifiers| +|Compiler error C7811|value of intrinsic immediate argument '*argument number*' is out of range '*number* - *number*'| +|Compiler error C7812|a non-default dispatch function cannot be declared to have `'C'` linkage| +|Compiler error C7813|'*attribute*': attribute only applies for x64 target| ## See also diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md index 43df3fea625..978501c3ec4 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["C4630"] --- # Compiler Warning (level 1) C4630 -> 'symbol' : 'extern' storage class specifier illegal on member definition +> '*symbol*': '*extern*' storage-class specifier cannot be applied to a member ## Remarks diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md index 4061b8eaabb..2cb7838596e 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md @@ -7,11 +7,11 @@ helpviewer_keywords: ["C4709"] --- # Compiler Warning (level 4) C4709 -> comma operator within array index expression +> comma operator within a subscript expression ## Remarks -When a comma occurs in an array index expression, the compiler uses the value after the last comma. +When a comma occurs in a subscript expression, the compiler uses the value after the last comma. ## Example diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md index d5706dfc19c..aa9ebc0c628 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md @@ -12,6 +12,9 @@ These versions of the compiler introduced new warnings: | Product | Compiler version number | |--|--| +| MSVC version 14.51 | 19.51 | +| Visual Studio 2026 version 18.1 | 19.46 | +| Visual Studio 2026 version 18.0 | 19.45 | | Visual Studio 2022 version 17.14 | 19.44 | | Visual Studio 2022 version 17.13 | 19.43 | | Visual Studio 2022 version 17.12 | 19.42 | @@ -64,13 +67,73 @@ The following sections list the warnings introduced by each version of Visual C+ ::: moniker range=">= msvc-170" +## Warnings introduced in MSVC version 14.51 (compiler version 19.51) + +These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.51`**. + +| Warning | Message | +|--|--| +|C4876|incomplete or invalid multi-byte character in string literal. Use an escape sequence to preserve these byte values.| +|C5299|a label appearing at the end of a compound statement requires at least '`/std:c++23`'| + +## Warnings introduced in Visual Studio 2026 version 18.1 (compiler version 19.46) + +These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.46`**. + +| Warning | Message | +|--|--| +|C5296|parsing resumes here after skipping tokens for error recovery| +|C5297|value in string literal is not a valid character in code page *codepage* or can not be re-encoded in code page *codepage*. Switching to permissive character translation.| + +## Warnings introduced in Visual Studio 2026 version 18.0 (compiler version 19.45) + +These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.45`**. + +| Warning | Message | +|--|--| +|C4864|expected '`template`' keyword before dependent template name| +|C4865|the underlying type of '*type*' will change when '`/Zc:enumTypes`' is specified on the command line| +|C4873|'*identifier*' cannot be a function template| +|C4874|assignment used as a condition| +|C4875|a non-string literal argument to `[[gsl::suppress]]` is deprecated and will be removed in a future release| +|C5290|an alias-declaration in this context requires at least '`/std:c++23`'| +|C5291|'*derived*': deriving from the base class '*base*' can cause potential runtime issues due to an ABI bug. Recommend adding a *number*-byte data member to the base class for the padding at the end of it to work around this bug.| +|C5295|`#warning` *message*| +|C5298|ignoring spurious 'U+*NNNNNNNN*' character in source| +|C5311|A literal-operator-id of the form '`operator string-literal identifier`' has been deprecated| +|C5322|'*identifier*': dynamic initialization of a variable in a readonly custom section '*segment*' is not supported| +|C5332|delimited escape sequences are only valid in C++23| +|C5333|backslash and newline separated by space is treated as a line continuation in C++23 and later| +|C5334|named universal characters require at least '`/std:c++23`'| +|C5335|incomplete named universal character| +|C5336|invalid string literal created by '`#`' operator, ignoring final '`\`'| + ## Warnings introduced in Visual Studio 2022 version 17.14 (compiler version 19.44) These warnings, and all warnings in later versions, are suppressed by using the compiler option **`/Wv:19.43`**. | Warning | Message | |--|--| -| C4862 | justification property is not allowed with more than one warning number | +|C4862 | justification property is not allowed with more than one warning number| +|C4863|unknown property in `#pragma warning`: '*property*'| +|C5278 | adding a specialization for '*type*' has undefined behavior| +|C5279 | a lambda declarator without a parameter list requires at least '*language version*'| +|C5280 | a static operator '*operator name*' requires at least '*language version*'| +|C5281 | a static lambda requires at least '*language version*'| +|C5282 | '`if consteval`' requires at least '*language version*'| +|C5283 | an attribute in this position requires at least '*language version*'| +|C5284 | conversion from value '*value*' of type '*type 1*' to '*type 2*' requires a narrowing conversion| +|C5285 | cannot declare a specialization for '*template name*': *template argument*| +|C5286 | implicit conversion from `enum` type '*type 1*' to `enum` type '*type 2*'; use an explicit cast to silence this warning| +|C5287 | operands are different `enum` types '*type 1*' and '*type 2*'; use an explicit cast to silence this warning| +|C5288|only '`= 0`' is allowed as a pure specifier| +|C5289|'*identifier*' after '`template`' keyword does not refer to a template| +|C5292|'*operator*': '*type*' to '*type*' differs in indirection: one is the unique plain '`char`' type and the other is not| +|C5293|function parameter *parameter number* type '*type*' differs from declaration parameter type '*type*': one is the unique plain '`char`' type and the other is not| +|C5294|'*identifier*': benign redefinition of type from '*type*' to '*type*': one is the unique plain '`char`' type and the other is not| +|C5310|The experimental standard library modules have been deprecated. The core language Modules facility is available with '`/std:c++20`' or higher, allowing '`import std;`' to be used. See: https://aka.ms/import-std| +|C5320|'*escape sequence*' in a u8 string is encoded as 0x*NNNN*, which is not a valid utf-8 code point. For a multi-byte unicode character use `\u`.| +|C5321|nonstandard extension used: encoding '*escape sequence*' as a multi-byte utf-8 character. Use `\u` instead for cross platform compatibility and '`/Zc:u8EscapeEncoding`' to disable the extension.| ## Warnings introduced in Visual Studio 2022 version 17.13 (compiler version 19.43) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md index 26ff337deb2..d6e4a4b094a 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md @@ -41,7 +41,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 1, no longer emitted) C4627](compiler-warning-level-1-c4627.md)|'`identifier`': skipped when looking for precompiled header use| |[Compiler warning (level 1, off) C4628](compiler-warning-level-1-c4628.md)|digraphs not supported with `-Ze`. Character sequence '*digraph*' not interpreted as alternate token for '*token*'| |[Compiler warning (level 4, no longer emitted) C4629](compiler-warning-level-4-c4629.md)|digraph used, character sequence '*digraph*' interpreted as token '*char*' (insert a space between the two characters if this is not what you intended)| -|[Compiler warning (level 1) C4630](compiler-warning-level-1-c4630.md)|'*symbol*': '*extern*' storage-class specifier illegal on member definition| +|[Compiler warning (level 1) C4630](compiler-warning-level-1-c4630.md)|'*symbol*': '*extern*' storage-class specifier cannot be applied to a member| |Compiler warning (level 2) C4631|`MSXML` or `XPath` unavailable, XML document comments will not be processed. *reason*| |[Compiler warning (level 1) C4632](compiler-warning-level-1-c4632.md)|XML document comment: *file* - access denied: *reason*| |[Compiler warning (level 3 and level 4) C4633](compiler-warning-level-3-c4633.md)|XML document comment *target*: error: *reason*| @@ -108,7 +108,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |[Compiler warning (level 4) C4702](compiler-warning-level-4-c4702.md)|unreachable code| |[Compiler warning (level 4) C4703](compiler-warning-level-4-c4703.md)|potentially uninitialized local pointer variable '*identifier*' used| |[Compiler warning (level 4) C4706](compiler-warning-level-4-c4706.md)|assignment used as a condition| -|[Compiler warning (level 4) C4709](compiler-warning-level-4-c4709.md)|comma operator within array index expression| +|[Compiler warning (level 4) C4709](compiler-warning-level-4-c4709.md)|comma operator within a subscript expression| |[Compiler warning (level 4, off) C4710](compiler-warning-level-4-c4710.md)|'*function*': function not inlined| |[Compiler warning (level 1) C4711](compiler-warning-level-1-c4711.md)|function 'function' selected for automatic inline expansion| |[Compiler warning (level 4) C4714](compiler-warning-level-4-c4714.md)|function '*function*' marked as `__forceinline` not inlined| diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md index 3ac4f3718a5..851b649ded3 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md @@ -64,11 +64,18 @@ The articles in this section describe Microsoft C/C++ compiler warning messages | Compiler warning (level 4) C4860 | '*object name*': compiler zero initialized '*number*' bytes of storage | | Compiler warning (level 4) C4861 | compiler zero initialized '*number*' bytes of storage | | Compiler warning (level 1) C4862 | justification property is not allowed with more than one warning number | +|Compiler warning (level 1) C4863|unknown property in `#pragma warning`: '*property*'| +|Compiler warning (level 4) C4864|expected '`template`' keyword before dependent template name| +|Compiler warning (level 4, off) C4865|the underlying type of '*type*' will change when '`/Zc:enumTypes`' is specified on the command line| | [Compiler warning (level 4) C4866](c4866.md) | compiler may not enforce left-to-right evaluation order for call to *operator_name* | | [Compiler warning (level 1, error) C4867](compiler-warning-c4867.md) |'*function name*': non-standard syntax; use '`&`' to create a pointer to member| | [Compiler warning (level 4) C4868](compiler-warning-c4868.md) | '*file*(*line_number*)' compiler may not enforce left-to-right evaluation order in braced initialization list | | Compiler warning (level 3) C4869 | '`nodiscard`' may only be applied to classes, enumerations, and functions | | Compiler warning (level 2) C4872 | floating point division by zero detected when compiling the call graph for the `concurrency::parallel_for_each` at: '*location*' | +|Compiler warning (level 4, off) C4873|'*identifier*' cannot be a function template| +|Compiler warning (level 4) C4874|assignment used as a condition| +|Compiler warning (level 1) C4875|a non-string literal argument to `[[gsl::suppress]]` is deprecated and will be removed in a future release| +|Compiler warning (level 1) C4876|incomplete or invalid multi-byte character in string literal. Use an escape sequence to preserve these byte values.| | Compiler warning (level 1) C4880 | casting from '*const type_1*' to '*type_2*': casting away constness from a pointer or reference may result in undefined behavior in an `amp` restricted function | | Compiler warning (level 4) C4881 | the constructor and/or the destructor will not be invoked for `tile_static` variable '*variable-name*' | | Compiler warning (level 1) C4882 | passing functors with non-const call operators to `concurrency::parallel_for_each` is deprecated | diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md index 0bebc97caa6..31eb3a880a5 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md @@ -102,6 +102,18 @@ The articles in this section describe Microsoft C/C++ compiler warning messages | Compiler warning (level 1) C5285 | cannot declare a specialization for '*template name*': *template argument* | | Compiler warning (level 1) C5286 | implicit conversion from `enum` type '*type 1*' to `enum` type '*type 2*'; use an explicit cast to silence this warning | | Compiler warning (level 1) C5287 | operands are different `enum` types '*type 1*' and '*type 2*'; use an explicit cast to silence this warning | +|Compiler warning (level 4) C5288|only '`= 0`' is allowed as a pure specifier| +|Compiler warning (level 4) C5289|'*identifier*' after '`template`' keyword does not refer to a template| +|Compiler warning (level 1) C5290|an alias-declaration in this context requires at least '`/std:c++23`'| +|Compiler warning (level 1, off) C5291|'*derived*': deriving from the base class '*base*' can cause potential runtime issues due to an ABI bug. Recommend adding a *number*-byte data member to the base class for the padding at the end of it to work around this bug.| +|Compiler warning (level 4) C5292|'*operator*': '*type*' to '*type*' differs in indirection: one is the unique plain '`char`' type and the other is not| +|Compiler warning (level 4) C5293|function parameter *parameter number* type '*type*' differs from declaration parameter type '*type*': one is the unique plain '`char`' type and the other is not| +|Compiler warning (level 4) C5294|'*identifier*': benign redefinition of type from '*type*' to '*type*': one is the unique plain '`char`' type and the other is not| +|Compiler warning (level 1) C5295|`#warning` *message*| +|Compiler warning (level 4) C5296|parsing resumes here after skipping tokens for error recovery| +|Compiler warning (level 1) C5297|value in string literal is not a valid character in code page *codepage* or can not be re-encoded in code page *codepage*. Switching to permissive character translation.| +|Compiler warning (level 1) C5298|ignoring spurious 'U+*NNNNNNNN*' character in source| +|Compiler warning (level 1, error) C5299|a label appearing at the end of a compound statement requires at least '`/std:c++23`'| | Compiler warning (error) C5300 | '`#pragma omp atomic` *clause*': expression mismatch for lvalue being updated | | [Compiler warning (level 1) C5301](c5301-c5302.md) | '`#pragma omp for`': '*loop-index*' increases while loop condition uses '*comparison*'; non-terminating loop? | | [Compiler warning (level 1) C5302](c5301-c5302.md) | '`#pragma omp for`': '*loop-index*' decreases while loop condition uses '*comparison*'; non-terminating loop? | @@ -112,6 +124,16 @@ The articles in this section describe Microsoft C/C++ compiler warning messages | Compiler warning (level 3) C5307 | '*function*': argument (*argument number*) converted from '*type 1*' to '*type 2*'. Missing '`L`' encoding-prefix for character literal? | | Compiler warning (level 1, error) C5308 | Modifying reserved macro name '*macro name*' may cause undefined behavior | | Compiler warning (level 1, error) C5309 | literal suffix '*name*' requires at least '*language version*'| +|Compiler warning (level 1) C5310|The experimental standard library modules have been deprecated. The core language Modules facility is available with '`/std:c++20`' or higher, allowing '`import std;`' to be used. See: https://aka.ms/import-std| +|Compiler warning (level 4) C5311|A literal-operator-id of the form '`operator string-literal identifier`' has been deprecated| +|Compiler warning (level 4, off) C5320|'*escape sequence*' in a u8 string is encoded as 0x*NNNN*, which is not a valid utf-8 code point. For a multi-byte unicode character use `\u`.| +|Compiler warning (level 4) C5321|nonstandard extension used: encoding '*escape sequence*' as a multi-byte utf-8 character. Use `\u` instead for cross platform compatibility and '`/Zc:u8EscapeEncoding`' to disable the extension.| +|Compiler warning (level 4, off) C5322|'*identifier*': dynamic initialization of a variable in a readonly custom section '*segment*' is not supported| +|Compiler warning (level 1) C5332|delimited escape sequences are only valid in C++23| +|Compiler warning (level 1) C5333|backslash and newline separated by space is treated as a line continuation in C++23 and later| +|Compiler warning (level 1) C5334|named universal characters require at least '`/std:c++23`'| +|Compiler warning (level 1) C5335|incomplete named universal character| +|Compiler warning (level 1) C5336|invalid string literal created by '`#`' operator, ignoring final '`\`'| ## See also From edc9a1127aa9817b3ce3ad617694a923e2c11eea Mon Sep 17 00:00:00 2001 From: Pawwz85 <126493682+Pawwz85@users.noreply.github.com> Date: Tue, 21 Apr 2026 00:47:44 +0200 Subject: [PATCH 421/619] Enhance localtime_s documentation on compatibility Clarified compatibility issues of localtime_s with C standard and provided guidance for enabling the standard-conforming variant. --- .../reference/localtime-s-localtime32-s-localtime64-s.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md index 430f90328b3..953a5c8294f 100644 --- a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md +++ b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md @@ -59,6 +59,8 @@ The **`localtime_s`** function converts a time stored as a [`time_t`](../standar **`localtime_s`** corrects for the local time zone if the user first sets the global environment variable **`TZ`**. When **`TZ`** is set, three other environment variables (**`_timezone`**, **`_daylight`**, and **`_tzname`**) are automatically set as well. If the **`TZ`** variable isn't set, **`localtime_s`** attempts to use the time zone information specified in the Date/Time application in Control Panel. If this information can't be obtained, PST8PDT, which signifies the Pacific time zone, is used by default. See [`_tzset`](tzset.md) for a description of these variables. **`TZ`** is a Microsoft extension and not part of the ANSI standard definition of **`localtime`**. +The Microsoft-specific **`localtime_s`** is not compatible with the C standard version due to differences in its signature. To enable the standard-conforming variant, define **`_CRT_USE_CONFORMING_ANNEX_K_TIME`** to a nonzero value before including any relevant headers. + > [!NOTE] > The target environment should try to determine whether daylight saving time is in effect. From 3ddbd609bb7ead01c964801c864cf194e100adbf Mon Sep 17 00:00:00 2001 From: Pawwz85 <126493682+Pawwz85@users.noreply.github.com> Date: Wed, 22 Apr 2026 19:06:28 +0000 Subject: [PATCH 422/619] Clarify documentation on Microsoft-specific localtime_s and gmtime_s signatures --- .../reference/gmtime-s-gmtime32-s-gmtime64-s.md | 2 ++ .../reference/localtime-s-localtime32-s-localtime64-s.md | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md index 36f21d43df4..71494692725 100644 --- a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md +++ b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md @@ -72,6 +72,8 @@ Each of the structure fields is of type **`int`**, as shown in the following tab **`_gmtime64_s`**, which uses the **`__time64_t`** structure, allows dates to be expressed up through 23:59:59, December 31, 3000, UTC; whereas **`gmtime32_s`** only represent dates through 23:59:59 January 18, 2038, UTC. Midnight, January 1, 1970, is the lower bound of the date range for both these functions. +The Microsoft-specific **`gmtime_s`** has a different signature than the C standard version. To enable the standard-conforming variant, define **`_CRT_USE_CONFORMING_ANNEX_K_TIME`** to a nonzero value before including any of the required headers. + **`gmtime_s`** is an inline function that evaluates to **`_gmtime64_s`** and **`time_t`** is equivalent to **`__time64_t`**. If you need to force the compiler to interpret **`time_t`** as the old 32-bit **`time_t`**, you can define `_USE_32BIT_TIME_T`. `_USE_32BIT_TIME_T` causes **`gmtime_s`** to be inlined as **`_gmtime32_s`**. We don't recommend `_USE_32BIT_TIME_T`, because your application may fail after January 18, 2038, and because it isn't allowed on 64-bit platforms. By default, this function's global state is scoped to the application. To change this behavior, see [Global state in the CRT](../global-state.md). diff --git a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md index 953a5c8294f..ef051cb83d3 100644 --- a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md +++ b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md @@ -59,11 +59,11 @@ The **`localtime_s`** function converts a time stored as a [`time_t`](../standar **`localtime_s`** corrects for the local time zone if the user first sets the global environment variable **`TZ`**. When **`TZ`** is set, three other environment variables (**`_timezone`**, **`_daylight`**, and **`_tzname`**) are automatically set as well. If the **`TZ`** variable isn't set, **`localtime_s`** attempts to use the time zone information specified in the Date/Time application in Control Panel. If this information can't be obtained, PST8PDT, which signifies the Pacific time zone, is used by default. See [`_tzset`](tzset.md) for a description of these variables. **`TZ`** is a Microsoft extension and not part of the ANSI standard definition of **`localtime`**. -The Microsoft-specific **`localtime_s`** is not compatible with the C standard version due to differences in its signature. To enable the standard-conforming variant, define **`_CRT_USE_CONFORMING_ANNEX_K_TIME`** to a nonzero value before including any relevant headers. - > [!NOTE] > The target environment should try to determine whether daylight saving time is in effect. +The Microsoft-specific **`localtime_s`** has a different signature than the C standard version. To enable the standard-conforming variant, define **`_CRT_USE_CONFORMING_ANNEX_K_TIME`** to a nonzero value before including any of the required headers. + **`_localtime64_s`**, which uses the **`__time64_t`** structure, allows dates to be expressed up through 23:59:59, January 18, 3001, coordinated universal time (UTC), whereas **`_localtime32_s`** represents dates through 23:59:59 January 18, 2038, UTC. **`localtime_s`** is an inline function that evaluates to **`_localtime64_s`**, and **`time_t`** is equivalent to **`__time64_t`**. If you need to force the compiler to interpret **`time_t`** as the old 32-bit **`time_t`**, you can define `_USE_32BIT_TIME_T`, which causes **`localtime_s`** to evaluate to **`_localtime32_s`**. We don't recommend `_USE_32BIT_TIME_T`, because your application may fail after January 18, 2038, and it isn't allowed on 64-bit platforms. From 610eb624a2a871a89d24d3c04f5b8d0d8f32cd8b Mon Sep 17 00:00:00 2001 From: Pawwz85 <126493682+Pawwz85@users.noreply.github.com> Date: Wed, 22 Apr 2026 23:08:07 +0000 Subject: [PATCH 423/619] Update documentation to specify inclusion of for standard-conforming variants of gmtime_s and localtime_s --- .../reference/gmtime-s-gmtime32-s-gmtime64-s.md | 3 ++- .../reference/localtime-s-localtime32-s-localtime64-s.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md index 71494692725..2ce6ef33317 100644 --- a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md +++ b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md @@ -72,7 +72,8 @@ Each of the structure fields is of type **`int`**, as shown in the following tab **`_gmtime64_s`**, which uses the **`__time64_t`** structure, allows dates to be expressed up through 23:59:59, December 31, 3000, UTC; whereas **`gmtime32_s`** only represent dates through 23:59:59 January 18, 2038, UTC. Midnight, January 1, 1970, is the lower bound of the date range for both these functions. -The Microsoft-specific **`gmtime_s`** has a different signature than the C standard version. To enable the standard-conforming variant, define **`_CRT_USE_CONFORMING_ANNEX_K_TIME`** to a nonzero value before including any of the required headers. +The Microsoft-specific **`gmtime_s`** has a different signature than the C standard version. To enable the standard-conforming variant, define **`_CRT_USE_CONFORMING_ANNEX_K_TIME`** to a nonzero value before including **``**. + **`gmtime_s`** is an inline function that evaluates to **`_gmtime64_s`** and **`time_t`** is equivalent to **`__time64_t`**. If you need to force the compiler to interpret **`time_t`** as the old 32-bit **`time_t`**, you can define `_USE_32BIT_TIME_T`. `_USE_32BIT_TIME_T` causes **`gmtime_s`** to be inlined as **`_gmtime32_s`**. We don't recommend `_USE_32BIT_TIME_T`, because your application may fail after January 18, 2038, and because it isn't allowed on 64-bit platforms. diff --git a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md index ef051cb83d3..14d4aaaa5df 100644 --- a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md +++ b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md @@ -62,7 +62,7 @@ The **`localtime_s`** function converts a time stored as a [`time_t`](../standar > [!NOTE] > The target environment should try to determine whether daylight saving time is in effect. -The Microsoft-specific **`localtime_s`** has a different signature than the C standard version. To enable the standard-conforming variant, define **`_CRT_USE_CONFORMING_ANNEX_K_TIME`** to a nonzero value before including any of the required headers. +The Microsoft-specific **`localtime_s`** has a different signature than the C standard version. To enable the standard-conforming variant, define **`_CRT_USE_CONFORMING_ANNEX_K_TIME`** to a nonzero value before including **``**. **`_localtime64_s`**, which uses the **`__time64_t`** structure, allows dates to be expressed up through 23:59:59, January 18, 3001, coordinated universal time (UTC), whereas **`_localtime32_s`** represents dates through 23:59:59 January 18, 2038, UTC. From 0c61e572e511b1eb565368f578a4aa6ea8d27d09 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Fri, 24 Apr 2026 13:33:01 +0200 Subject: [PATCH 424/619] Fix typos in macro descriptions for clarity --- .../common-macros-for-build-commands-and-properties.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/common-macros-for-build-commands-and-properties.md b/docs/build/reference/common-macros-for-build-commands-and-properties.md index bb52c1458b4..5f3cd0fc40d 100644 --- a/docs/build/reference/common-macros-for-build-commands-and-properties.md +++ b/docs/build/reference/common-macros-for-build-commands-and-properties.md @@ -59,8 +59,8 @@ This table describes a commonly used subset of the available macros; there are m | **`$(TargetFileName)`** | The file name of the primary output file for the build (defined as base name + file extension). | | **`$(TargetName)`** | The base name of the primary output file for the build. | | **`$(TargetPath)`** | The absolute path name of the primary output file for the build (defined as drive + path + base name + file extension). | -| **`$(VCInstallDir)`** | The directory that contains the C++ content of your Visual Studio installation. This property contains the version of the targeted Microsoft C++ (MSVC) toolset, which might be different that the host Visual Studio. For example, when building with `$(PlatformToolset) = v140`, **`$(VCInstallDir)`** contains the path to the Visual Studio 2015 installation. | -| **`$(VSInstallDir)`** | The directory into which you installed Visual Studio. This property contains the version of the targeted Visual Studio toolset, which might be different that the host Visual Studio. For example, when building with `$(PlatformToolset) = v110`, **`$(VSInstallDir)`** contains the path to the Visual Studio 2012 installation. | +| **`$(VCInstallDir)`** | The directory that contains the C++ content of your Visual Studio installation. This property contains the version of the targeted Microsoft C++ (MSVC) toolset, which might be different than the host Visual Studio. For example, when building with `$(PlatformToolset) = v140`, **`$(VCInstallDir)`** contains the path to the Visual Studio 2015 installation. | +| **`$(VSInstallDir)`** | The directory into which you installed Visual Studio. This property contains the version of the targeted Visual Studio toolset, which might be different than the host Visual Studio. For example, when building with `$(PlatformToolset) = v110`, **`$(VSInstallDir)`** contains the path to the Visual Studio 2012 installation. | | **`$(WebDeployPath)`** | The relative path from the web deployment root to where the project outputs belong. | | **`$(WebDeployRoot)`** | The absolute path to the location of **``**. For example, *`c:\inetpub\wwwroot`*. | From bc525d9576db7f625fefd3fdebc1beeded0e1206 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Mon, 27 Apr 2026 13:57:59 -0700 Subject: [PATCH 425/619] Freshness. --- .../includes/git-source-control.md | 16 +- .../media/vs-2026/calculator-autos.png | Bin 0 -> 12482 bytes .../vs-2026/calculator-build-project.png | Bin 0 -> 79633 bytes .../vs-2026/calculator-choose-console-app.png | Bin 0 -> 43085 bytes .../calculator-conditional-breakpoint.png | Bin 0 -> 36336 bytes .../calculator-create-calculator-class.png | Bin 0 -> 9306 bytes .../vs-2026/calculator-create-definition.png | Bin 0 -> 75647 bytes .../vs-2026/calculator-ctor-definition.png | Bin 0 -> 70995 bytes .../vs-2026/calculator-debug-breakpoint.png | Bin 0 -> 22831 bytes .../vs-2026/calculator-debug-infinite.png | Bin 0 -> 54304 bytes .../media/vs-2026/calculator-debug-locals.png | Bin 0 -> 12608 bytes .../vs-2026/calculator-divide-zero-fail.png | Bin 0 -> 11166 bytes .../vs-2026/calculator-final-verification.png | Bin 0 -> 14223 bytes .../vs-2026/calculator-five-plus-five.png | Bin 0 -> 11637 bytes .../calculator-hello-world-console.png | Bin 0 -> 16110 bytes .../vs-2026/calculator-hover-tooltip.png | Bin 0 -> 24295 bytes .../vs-2026/calculator-initial-dialog.png | Bin 0 -> 16538 bytes .../media/vs-2026/calculator-name-project.png | Bin 0 -> 20808 bytes .../vs-2026/calculator-set-breakpoint.png | Bin 0 -> 31342 bytes .../vs-2026/calculator-solution-explorer.png | Bin 0 -> 15157 bytes .../media/vs-2026/git-add-source-control.png | Bin 0 -> 2545 bytes .../media/vs-2026/git-create-repository.png | Bin 0 -> 34931 bytes ...-new-private-repository-status-details.png | Bin 0 -> 2913 bytes docs/get-started/tutorial-console-cpp.md | 244 +++++++++--------- 24 files changed, 133 insertions(+), 127 deletions(-) create mode 100644 docs/get-started/media/vs-2026/calculator-autos.png create mode 100644 docs/get-started/media/vs-2026/calculator-build-project.png create mode 100644 docs/get-started/media/vs-2026/calculator-choose-console-app.png create mode 100644 docs/get-started/media/vs-2026/calculator-conditional-breakpoint.png create mode 100644 docs/get-started/media/vs-2026/calculator-create-calculator-class.png create mode 100644 docs/get-started/media/vs-2026/calculator-create-definition.png create mode 100644 docs/get-started/media/vs-2026/calculator-ctor-definition.png create mode 100644 docs/get-started/media/vs-2026/calculator-debug-breakpoint.png create mode 100644 docs/get-started/media/vs-2026/calculator-debug-infinite.png create mode 100644 docs/get-started/media/vs-2026/calculator-debug-locals.png create mode 100644 docs/get-started/media/vs-2026/calculator-divide-zero-fail.png create mode 100644 docs/get-started/media/vs-2026/calculator-final-verification.png create mode 100644 docs/get-started/media/vs-2026/calculator-five-plus-five.png create mode 100644 docs/get-started/media/vs-2026/calculator-hello-world-console.png create mode 100644 docs/get-started/media/vs-2026/calculator-hover-tooltip.png create mode 100644 docs/get-started/media/vs-2026/calculator-initial-dialog.png create mode 100644 docs/get-started/media/vs-2026/calculator-name-project.png create mode 100644 docs/get-started/media/vs-2026/calculator-set-breakpoint.png create mode 100644 docs/get-started/media/vs-2026/calculator-solution-explorer.png create mode 100644 docs/get-started/media/vs-2026/git-add-source-control.png create mode 100644 docs/get-started/media/vs-2026/git-create-repository.png create mode 100644 docs/get-started/media/vs-2026/git-new-private-repository-status-details.png diff --git a/docs/get-started/includes/git-source-control.md b/docs/get-started/includes/git-source-control.md index c1d17bec684..502d9894eab 100644 --- a/docs/get-started/includes/git-source-control.md +++ b/docs/get-started/includes/git-source-control.md @@ -7,22 +7,22 @@ ms.topic: include ## Add Git source control -Now that you've created an app, you might want to add it to a Git repository. We've got you covered. Visual Studio makes that process easy with Git tools you can use directly from the IDE. +After you create an app, you might want to add it to a Git repository. We've got you covered. Visual Studio makes that process easy with Git tools you can use directly from the IDE. > [!TIP] -> Git is the most widely used modern version control system, so whether you're a professional developer or you're learning how to code, Git can be very useful. If you're new to Git, the [https://git-scm.com/](https://git-scm.com/) website is a good place to start. There, you can find cheat sheets, a popular online book, and Git Basics videos. +> Git is the most widely used modern version control system. Whether you're a professional developer or you're learning how to code, Git can be useful. If you're new to Git, the [https://git-scm.com/](https://git-scm.com/) website is a good place to start. There, you can find cheat sheets, a popular online book, and Git Basics videos. -To associate your code with Git, you start by creating a new Git repository where your code is located. Here's how: +To associate your code with Git, you start by creating a new Git repository where your code is located. 1. In the status bar at the bottom-right corner of Visual Studio, select **Add to Source Control**, and then select **Git**. - :::image type="content" source="../media/vs-2022/git-add-source-control.png" alt-text="Screenshot of the Git source control buttons below the Solution Explorer pane, with the Add to Source Control button highlighted."::: + :::image type="content" source="../media/vs-2026/git-add-source-control.png" alt-text="Screenshot of the Git source control buttons below the Solution Explorer pane, with the Add to Source Control button highlighted."::: -1. In the **Create a Git repository** dialog box, sign in to GitHub. +1. In the **Create a Git repository** dialog, sign in to GitHub. - :::image type="content" source="../media/vs-2022/git-create-repo.png" alt-text="Screenshot of the Create a Git Repository dialog window where you create a new GitHub repository."::: + :::image type="content" source="../media/vs-2026/git-create-repository.png" alt-text="Screenshot of the Create a Git Repository dialog window where you create a new GitHub repository."::: - The repository name auto-populates based on your folder location. By default, your new repository is private, which means you're the only one who can access it. + The repository name autopopulates based on your folder location. By default, your new repository is private, which means you're the only one who can access it. > [!TIP] > Whether your repository is public or private, it's best to have a remote backup of your code stored securely on GitHub. Even if you aren't working with a team, a remote repository makes your code available to you from any computer. @@ -31,7 +31,7 @@ To associate your code with Git, you start by creating a new Git repository wher After you create your repository, status details appear in the status bar. - :::image type="content" source="../media/vs-2022/git-new-private-repo-status-details.png" alt-text="Screenshot of the repo status bar located below the Visual Studio Solution Explorer pane, showing the branch name and number of outstanding changes."::: + :::image type="content" source="../media/vs-2026/git-new-private-repository-status-details.png" alt-text="Screenshot of the repo status bar located below the Visual Studio Solution Explorer pane, showing the branch name and number of outstanding changes."::: The first icon with the arrows shows how many outgoing/incoming commits are in your current branch. You can use this icon to pull any incoming commits or push any outgoing commits. You can also choose to view these commits first. To do so, select the icon, and then select **View Outgoing/Incoming**. diff --git a/docs/get-started/media/vs-2026/calculator-autos.png b/docs/get-started/media/vs-2026/calculator-autos.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd771c6933667d61d37076b9b4b82340f9387c8 GIT binary patch literal 12482 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

MiZ+4BYne0x3&J`V)vhF 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 q;{y^YIcr62-$yZ}OOs(2pNK zf{C$$etlNDR_?3>6lM`U@tvFuhXZbQ(NSk4^5n~@k5qyin zML|JHxvR((Jrf*GQ6Rm&SdIZ>&u_fV8sOpJ_*1XJ_?g1*#$lZA;VX669tkN43Fst? z7A!^?yYlarDP3=`T(SnvH}kXR8-3mmMuSdKs#|5v3R37k!dZQ0GYwwn#{(k!$CoRP z9w*8M*D>f4Cn0{BL;l$#n~_S`G&yBu>}!&5-h9?&1*P#*W!E6TJGYOKg~+iu8?nHm zK#*D+580q)&A|D=8v;WO)cYPZqd2J!q2>-*R7^SZlL_n~`V)1(<8tSA)4s2S5#z#e zm)a#`NNXHOr<88E_q5)A@efmJ{U1UMR;{0}ii4%1q;lymA+OXAi+As42HtZQ#5jQ0=*TJoCc#DAheF}~NpB5;9eiIj#8AJ-$mY}j zJKXZQyG1`(*5$le=p&@2n^m@Bq4=E>v_BK?+G0-q6tGwD>3U#tT; zKR^Ex`4;p{cXK`WdjXnm-x<%eVNoG#gv(2xsJk51f)1MEbf~t;AQ0Tpm*d3%?6k$`Z~Z zqrEXEh`Ze3q{D%qjI6u$3g}(nBUBK}+6J@bG!Xm9hJQ2DbUU-RXG@E8j)oA*q&)N& z5a>wAC!rRL!&t?4=U(DMMl39FkNbrPi`GxWF5IcxbD>{VSJ}&U)#zxbBf>ty?=gE# zhAikWDzb!nbmt@=ic#X?qu~yLFhLeSJ|bjjm4SHFvJn^6+jnni=msASM5xUE+veOi zi$z5kcVq4gBHr$c)hYXFXPd{CG(iEao^c@3!oh~P>H#(>IKCc<`4;w-FcS0PrcPyT zFa+edLprzV_F8cOEgV@kGJl{HP?agCvtdvd=0X(aO3xSDJ1A{u}&2NfnKh+<< zB41%3)~#E?oMnQSL{TAibkI8=$%1iRU4iq4C*%i_sroti1b$CI5Fq?Mz6VFb4VE=w zn!q}SRP+~zAy?lmEqyphI4?8s>6tZUvbkqpmD9#|WqR$^f*kzwlN0ZwF1mm-AwX>e z@us+}nMTLe?m!eQZXO=<*I5e(bp6Q47R2#NY7xe4i(+FDfbu1&iFq#s>e_J{UUF59YDT5Rwy)L3^`A}6t=lA9=E5>gB3YHf9<9fA3hAQDtF#g6`gtb+nW=_ z!IpWpT=rok0!J0MB7w#zr&5$NX9l`A^ZAP&xxL$d&~p(i8_MaEEW)PSJ=oU%2pg;K z{>W|MDN5sy2t{^9DB&LkFtJce8yjyx%ljAPyqai&^$YBy_HBWmH{;cfmF^BZxZA+p z1L1MawV`KiC_!0Z&aTX)9BAU|`u)+zssf;0ad z+%*poxyddmVO>-P>Q1Z(9|P4K7YzaOm0KW3GeUMSSrHx7M#5zKs@m<+NCpfD z(Fbyhm5nV1IY=3V7*k(byYA1k(BswW+H$AS;L3_!)jF-0d#PNnXZiUaul0egqO7E3 zRwe*>rE}-!bxtwc>amA@5&Zx=-xEkQj$^%x1ghBc(VH_+D_0|^MsWULD8ooW%Lzu zGyC6Pd{G~`KenF7=*cqeLWj53<;KsClN#oI7S??hKG(<0yJ^yV!iXj%eq3r<)>Tz( zQSnrSwC|!Ihlx08g^dwR@cUEE5?v3VZ(D;@6p*sqm%_ltGg0pZ^(Ka2FWS3<4%0D$ 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

qpX$tS>)ZrIyYR0uD^!=;NF2 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 LZeVg0%>4fcK8Wen literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-choose-console-app.png b/docs/get-started/media/vs-2026/calculator-choose-console-app.png new file mode 100644 index 0000000000000000000000000000000000000000..e74f21d38f58fb75bce216ea8709a93246ddaadd GIT binary patch literal 43085 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 z zr=9oy^!8VBu}}hR!#p}K{?Xauzgsl^1K~5(Rzx12(Cza17)VT_ZqPz$F?*;T_}zac z5K*LAvm=x*;5GM$e!pj)$(p39$jEbj8mqJ4#*4AkexwWb8hpPv|{dzB6)J~(8{oifhzbHRytKC1YM)gN+TlA~Bavu! z_w42eHhM66Hraf=dR_NM*1PV;3My=9XecZ!Y;%^r z-fw3hP)-HHQ`#FD&g#(}^e=Jlz%tLJO~TRapP-=3>Z&8pZ*`}7hFM00+j`!_p$r+snr}p{q6O4E$YfKm|sk7mary!qPM(3+P98@>1s__#nk9bVg5yW znC689L|;dgHcX_yPi(UY0AoI<_Ptj-|7N^E2CVZ-c+1?IFV>TXV|su$8GwC`Omj~k zBc%Hx)vU&Ma8pvk*A@3r)vLB<=z)J;d|0+hH-|Mdb zEwbVQ>9wAud{?I@Ig*K3i^)$<=JS2wVHT6cC(ih3tsjMj=he|sCbw%H4DHk!BNLk| zINnp=tN#C`ga2O(pYk$m%5KP3>8_LX%vr2H{@sq%#Ej#T-?X&m`jDN+t4g7m=Y@WJ)@o#x!l=5eSim=XPYnNW) z^y<5?4a45NtfRt}=UIB=QF`%duHS5MFNdfXwY5Ak`E~E}1xafzJ>-D(Nd-O tyxkB5o?~?N+Q!Q$Nm{e6I{A^(wCVK!%L4BfF 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 literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-conditional-breakpoint.png b/docs/get-started/media/vs-2026/calculator-conditional-breakpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..0b3e8fce9cd392fabe94d419dbd911ac803670f9 GIT binary patch literal 36336 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 Li4+MLeEz=xlw=R7 literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-create-calculator-class.png b/docs/get-started/media/vs-2026/calculator-create-calculator-class.png new file mode 100644 index 0000000000000000000000000000000000000000..176be2766ba8cbb1ea786f35720b4526382c236f GIT binary patch literal 9306 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 NQn{_6Sb#Kt@*fIGpU(gQ literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-create-definition.png b/docs/get-started/media/vs-2026/calculator-create-definition.png new file mode 100644 index 0000000000000000000000000000000000000000..5194d1ce318dfdaab2ccda3fc83f8e856b93f456 GIT binary patch literal 75647 zcmY(r1yq#Z_dPryAfR-IFmy>b(jnd5-AGH9fTVOuOC#M#OGzn6r*x-u!~f#v_kGuT z&l;6^hI!)NbI;jl?{f`TQjkPJCPaonASlvO;wlgbTqOho`vVac9C;~EMFjpqa+K0` zfk04up8mijF`zyjeC{eOFY$aA4j-Er4rv+b76O4nq{T(lJTmq(J+)N(ZmyPM(UZ}| zCE%N&wipq;8n(7L^#Os5xwP+^8Zh@2F)F`dOE~2i^upsQF-+9sSXCB8;snNNInJgew@t6b_DEBBkLCUZ*q*LTt_M+d4KI&TwDk{h7gj72x(k z7~=B)y%E+G&}GlEFVBZ@`L46lEA80cP<)GN;;Qy>OH|9cTGtJ|)f&ecTFxRc-%HFC`%>b!e2 z9!G|_j$alv6Mn-N^!3{{*&a&fd$$+<8ib<}+$54#G?YOBQ@NYSsB>a4xI(pG)phSA9D< z-ShYjUR;mvk1cb}&hJWtpDq-(X>D&mH9E@5%4*D(%0VbUzk5av2P5%Ixn$T4Cyat5L{illOK~F&hJL+FLw3bm4;Xa z?52g*kL-LRYZfcX-Y9)75i?-#Ir&AT{@>hSi2K6}@-sBm6;*NpcPLAFn+ z{udTV~1g6_B zt&>RgIm+$x-^&uJ3?2H*x5Kf8xPHgu7S9T!VG?G|mZwz|hthY3T!Hw7XF z(xUzWS9@dFDiC<^#scxkJUvcut+J%>YUuIyx99S6)MsyFSWL#=lc;mvr^$ME-Vj5s zVuo#W&BYm;8xYPv?^iqc9yiDe+v>XL{FswD^o8I*4vUV9T&&K1iV9Kma=3nOif7nV zeIW9%b2x_gG>2xUW@cwQMcICL$9)zS7J5vVch{#h3K`4C9&=MKfSch#U!oW6Rh{oN zBJVM6-jx@XvVRX?{al`|JL<7k$+sxm-YeXOmie4;XRp-?uDQHuSpq5K(}j)edbV3# zX7hIB8QKpfuHU3qb{sy1nq?mzgb^}%4-XzCQ?o@Z6^I+vJ~%(aWZ>(c+eWS+s->^t zYQ`)Idv?B~CSwwCHd_`|0oAC}p?Z&r5vvu4{{>?pVzrsIbR1<;u8nU=>|?>XUhl?Z zIGuW~oe_N_-`C{V%$ACr2uSsbw`=Djkp2^9Pq%wbpuY0JY!c~#owG0Sz`jB>sm$Z0(oL;YKd)aZLT-5WMUTw^F?WL zsZ&tZX{DF}rt)vvy3@)6$(_qPr1th}9nBB^-sbxKZ1`nbqvn#nuaOqGHiU<%xn&#W zd1Z<#?C3Jg2(q)w$!qf^b#f=$xQyDwGI zbBA_xlnU@2Rg*B1Uz-%(x++IHzpsP09nr2>udIo`%hKH8+!|LDVtoC2q0xafWe7f? ztE;PAw{fw<|FL#NFu^@_??;(Fx&p_mY|OstT&zoU7gRz1PP#}}>ae@=`4?&n>x1(v z2m8S8tW9_mY5aDdekOL75lBT0>=)~s5$$ts6<>`kY-mL`SbQWrN^FRD0 z3g@Ff^KX_j9|~Mm*R4{=ofPxv*Vo))UsIXC%Hzsmol*T}|4CN~bCH!?ZnMA6XOhfP z)yJYw>+GDO=nI_PtNO17Y<*kBS|Huj4=~eVaoS94XHiMU1pX~e*n6$m&l9Bag_6|& z?l>Hah7!~N;d(1Z@J4FUT%lpgoT{t0-i7PkZc|ZXgOhfxql)KhQGV2Wo4#oNa{7t; z^@G1|7l)_y;^>pVtB+%)a$sJX?6eyX*RV}Cl3K9XK@uv&SkbgCY5k&i$RZ*lM8(8< zQAE42?=CwYeYb{RO_~kXA%vnhO_|mR-8c>{G0QkCEHeAq4Bi@dhwx-~)KuhDH)mb0 zk4^fQYPeYz3(mWX3)u{>kjJOik5;>k!i3|rEOdH_q{$R)WDGzL0#Hqr%2YD<$Z;W4 zyfMfUEyE{ug&cyM%FH&fm<%B2Z7^ zPl&Y=C^Z<+)QC?H@4{@z56yj3PUy6Vr++^}8koz&8kZQ(cBb0lvC{TJs;r+ci(Xk| zU1kJ)`6c8~dD^ii3+QL+RY4$Ii~~nL=gwvo0CgH&#WR{&U@FLTrtF zynYrTGcz-Sm@{EVQBe_pCg+EtK2n{eM>m5pjx-k~g>@^*JBu4aJn~A~ge%s1+7!+m z8XgU!US6`FwE7bnL1?6fr2L;1Ug5|nXT-C;xeIeH4Ts)iW_F@t(uH`rYBEeAsQ8fOtTtZ`zQr6IV2NB^juzK+j;TJ#@}iOzMI9Nd&TqG=vTY%UGdwqTCVPr z4Vfw*Hcoam%jM~D-nBvHAE0#5xKDmBL#gOdQTtWIO|$CYsaBGKFesWRm ztxtBL7Q4d89%QH0PKkz81?)7KuXYP0UHD=9PP!G~dlYL|qUv!oIWbeTVN5kpI( zm{sfA?6^$0rA+vc4G5VO6>BKe-0X%w^t3?rc#)h5gKog|?ZL}J>-N6P+pEaQ6a=u0 z8Y)ouBkru`6NM~HjY*SEBI6t#@un|y$>IjX3k$C@A-bpUO@9q!dk}8G3lG!WgExjb zQHxi{=%u2SQV>DH2tG7>L15_|&ulTr*E|>@6ic7k%&1ITxk3{^vzED?VInc)S;8Z*X3bnsvz8$k_18ObVy73+hhLChY|^Q z&b*Py(FW5mM@)hYiUle>1HnIQ@~Q_Q;tP2tC932%VayrB<48NrVX)s}3+F9*UNEZ( zoXNVnJ99N@>x9@g7_5J1Dp%zx>1T2U@prU}<0&d_2_?Gr>RWp1ywLX`49wuxsu8D) z5q0MbsfqW|E^pko+Abvi(yT1-1>c;)HHBk|6T!SYc1efhi{jP;>Oh9$jKp=O@Dyp- zx1#|(_V8j;ZTf+-ur5sOw^l{)a_-D@{V@H^Fd)>cDH4>7(amEPoTT}ZhYKuz+*Fku zbxb`EeqN0L~j4VQ3=M=Hc0<5oinnH!ZJ;^Yhp;px*?6Af}I+^WM zxla`PwXLTeNkR1jE4g`pHR;1t*fzF9pok*l41(FrRm5cugH!ddY`%!)O>&>s=Z2rD z2{_f|#=CtjEnPdkcICV8eewSCVsDOc!WD}h*DCr!!uEKLQOf(&_kuq@GO=7pAO&*}t`>*UVWRSZS_q*KdH1M(P+zk|RE znb%Is<|yu@QNg1<5mssoy1P3aIchx}zB%7}MNAC&{`05ZY>hdo@7ZX!|HIec=e+5n zZ>S&LH0n(Y2(t6c=}TxLfBg92dAf;#KxT|QoX%ZYU9H^RD;1}yhM+;}x4vw-3rV$sR% zIl{ZO5ef*)gzI|L{OzNkGQHoR%PL>E{&P-guy((d5<=;93uz7d-mhWGKYzZNF%SUX zf~)lD3+-;a3-vSpwd5I#jDZgzU^k3++o`|uqUt002yd-JII@MEDBLI4M1{FxJBBmD zo1k2{BgF6lB+M02^lPeoZG0B}O+)R|s1JzW*C>O^rWkaBi%d&sl1lze$e6npgK-s< z9O8K7{ZM1v@4%QgO#^kp3)T$@Iy0#q8<2bd+Z5<-BHQUyW{y&adGYFJAyr1$TH0Id9eCgL5j8{e{N3u)1%w7 zZ-~bx&Gm=p$o-PP+VXU}&;%*q2$#Xc^9oAlln#86@Vx152w#j?YxFRO4-8=Z&EW}4?q_|FDs*DVN8Tf|je?LKx&zbYuz zW^ST%@rj+~7voz$w;J zSrzkoL#ykc9sVwZb~{-tB6^UPI~1a67Q%68^p_75wfLD&f?tX3*Lm$ z|Mh4+YQMD~&fvwOmix?ZIqbgV>;Cv~9~Kt2y=|3>VC?+i9pQB-Ir(aV8kJy+x|&+g zY;vM>WUOBe9f~pfMFt(Ba9I_Br>{z)BWDtAdMo!0r#r)4dRFePSeX-Enyod)Jtwq@MrdShcAst#$lfg_Z?&MdQ~8># z2#pZc{_^J$Xl%Ofy&F;3W1U5NF+Oaly~XSFXPzn3!1eMpo=Sxlp8P&MpeJGn&s)Ux z$TkK*YmRx3)&!{~8fdkNbhsk-VdnPoGWx4muP`vk+P1Bh3ftQkyShZ@bk?YWWvhOk^+oj1nNxt>*J-KUSLop?@2rOP;^G42-VAPstQy#EF%l^z zYkB7rQAGXFiA(eCn+sDc;>*hkz6@ z==a90>nMmdGGkw;#M2=0`j!bo>*sUO;h*V!in0qY;b2K)r6-#|9a}r_%Q>MTY5QPV zUi^k^fLQir*deYJN18D7i!}3X02EOa{&92`0ezjw38C5*gb7*8FMGcalcyf_m%5m* zJ{ta&9kC6wN@gk(ffSdQev54)qp(fCVmj5d->+)O_|AqeSJ-Ov&g)8Z?*5T_nqSjM zOy?gB(oD*ixi~ddSXx>NNF8n;K|{%+J@Xlie23pR+j=XJV-ehitdc&$sX0w&KT65Z zkS{O*`GC|TF9NahoOHZU`TW@T{Bv^%=SXA?Y1WlPCvQ0aKbpe|4s}suFdPsf2C6XUi*;5OixVom{ix5 zzX&{g9e8nZl76tk-7*}0W-)Q|d-9|NMqcFU`<|J`)mn^NKf#JfsSQ`eMHHeqs`11*5b6SwsEPTZ1=_G93To`K0{e%Kx40iBpMv2y2xZoq942 zfJV>}z2yG8QFQT^-&P!anZrgbpXI2{5s0bCOGeGdMZNG-r;J=&YK5V{M@I=btk4gu zgZ`0$WByhS4m4A$@9gXn4HR)C!@~yq9dx8d#QuEH)z!5Igxgz+W-qk8e~cbr{4l_c z>+Apd@a*~S&Q5(@U08OPGI=hla~f_gPO)zgAktnU1dVK6R&gN)p5bo0@+AyROimu0 zmR7uggC&QSl$Xn|VlTqMiQMpqgoKP_3*i|i;DW2ZjkVX&2^}zFOO@lxtSFyu7KSdL zUW3z(xz!*y55!TU)^ql6ogSN_1ww0nPft&ekJ~yp;32}@8~;GeRG6Ne1TzhA>^w3_vGZ{O$vLtu*Z)u(^e$JvC8eKX_$7~SObwI`(gk;>mx2P z5aC?;GI=!qUD9f~pu*OQzl-9x$(`LZ)fbTB%6^C9e&!phit8hp^N;S~(b3V>)vW2i zsO1))3ccjyxjCIAq4~Y)^E=cLLcX!YD{KCYd%u3~2GxD0Q1hOnaBg;XS!wC;$jEUm zc(a6*s*8i(<4d&HsRzdfN=iy-i43KOUpp;t%0pX)&uJiw#2P?0#$E${aAjo$6&3Y0ZfSM(@x)hE6ciK@5s{veva&K#zpD>J z8#WT$NIb*}Mn+#eWK>jCz)~kanXE@({Bb)wqNU@>z{yRvdTrPU^L=J)U@quXWIc7Y z?pw{vkBLeITSWq>1$j%B1;| zp+iEVIebkE^@WAMPnK#%efl(2rd?~=hl-*R++$SLTYNnlw1_WR*xJS;Xq@Q{p0_bs z7Fv3E_;J_TV!kX+IROjspl@c@hfwAQ{l@@{Nh7HblS zNG+5vB0JH~(c*3{HgUtb^1r=}X83+k10 z`K|GFcy_quq5T_2^;!vZ=9JMqN!2VydiuF4V==T(l5v8$gkN|Lb3JMCQ zl=Rrx*sLsj3yTKxAzW|oTaa|cB_)Tno$?=zz(MazdsEXj*%T&D4i3P9U~Fo5d3n8m zU!R(q3gUZd>0Yixq(Nx!B;K_nq0Q9>kuZ>xOsp#`u!N2XFZMZn^pWA z2vIVOdxVm$UKVRpEb!tU-F~Go6a-}l;O5oU)tL=ip>iS+kMrHhTFa4t&>{*yeFiSM(-{pBUU+_@HT~T~?YA3e0nGRNXR?b1#13{l`Rxs0p1K0} z4`N6J(lRq&p`$OattDh;`krkopV+y7H)C7!Sc?MpdUtoXu%Jg0bNPeF0UsY9-Lk&X z;Pj`j`x_|~m*jNS!|V2s+wHC;H7;5<*{#pl#1@}HEDejkoPJotjp8I3KHNoq?1oR7 zjvkX*iO;=5!y~>(aZ2XlwmC4Dke&XLmH!=eJz~mZRL2xdekk>;4fW%P)VoxZUt%OL z5lsIscS4M;tolu=fsem@`I3-`2&gUIKfFmhoHh@h<3t;@g!}(^9duCI%Awnn%&1#a zTU*q>{3D78xL_KivZ*V_-|jSg4ykikD!xjeUXDK<6J_59&vzpLvv_lRi`8vPL6JwN zS_rt0rluwsVR3PBFRzHVVPRpgK)H8}jBG?2XmgKa<+nvd;ZUq(2!iwLHq&H|y5Sc? zU!>X6?=hUXV39BCr{>dT0*U7G@DC9wX?ASv_qAgWegm0**4Ul{sAurNO?ph(BU`7} zBUu98C+p$BE3DCNVj|W)nD#}#dgErNcD<0_a%*9uOM1ZWvh?RmUyuB8r0+~zt5rn- zZv8I7BATbe1%{BNA&QTWa#W&WrF<4OVN8^B6%2!Ww(@%A$rx<^AHhkd-3z^UbXr-< zM^9O6`&&B)tpvO2=5$taNU{*>qTs{q$g|gS6V|{1x+f+QKP#Bp+36V?j+n8*!-|NB zjdZwf6DaY_f{>7r(^!l}eSHNWpGXAw zsHor}7e`Bq#85XkH;9s+-s`wwlj^Xb{e3$KKA)=<8pGS=jg9w*3r&xATS5i~2AC1j z#O~p{ak&?QIf}LH{U2JY3le01Uo7QW#1W)DR`{GqmekV}{ax@&l8yTq9xiQaniouG zWo&%BKg&+8RZ(6Z)whO%&$0}%h>UcF|CkYf#w%ArbV$4B8^76mDlFv(-Q+D=HcN1#fwuqO8=%-QVEsBkg)7omJ3{>15Dtp1Zzuio- z0M=0mT7;eM&(;F{Ag(mK!{=HBK5t``Ii}zA7%@4}kOW3pG#g|3$Nzc(L}7Qx6PP9I zOXA)}2A|3wJ5SQ-`~AU@+z=||c?t&<64L(Gwh8N``tlQ(=qhP}aQa+A@9nV*G=U7c z6&$LBfdmA(vD0`?;y*Vm0;MK_Z&qHpqRQeR#6~o|coiI;>mhyoSGn5Ml1=xs#hPr9 zTq^lJjS};&*z3E5;!e3sqzwvOX}Ac!(08xms`&MzoH-=97vPW)(|@}pwB*Kp$eS`K z46EOjqI%ZajMzUYKLpqHif6FzmCQJ@?8kOdNutuREZ>??z#slBvl~Yru z`TCU=UsJ08EN8Vj*yw&3vl&vW*IVz;Z|#bkFiSKO!Tg9^TdvNc%x`e`cV)OBK+4zv_Axm+xk>#&jbEd69)3~QSI&RAWF*1qd)+hJ-PNVp%l&=T~7~8^FoMd zfwAV$>9HS}?tCEiYs9z6Ez`n0o*|Y|OI~Qpzw`PBoItYOet<7H#aWhgW!-5g=|56j8tC|6TU+bP61kYJg@Y>-!ps! zu^-r6tEY>Hhli2T^5(Df0XyW?l@+pkMD=n!tn6+`Kv;;BjEqUO7NBLW0I?~+|77v; z*soSWiiuaiF_kTH*QB0&WcHt#&q8gN4fpTKFWd6}!-a20CMg9F9=K%B(NOdIJ;BGj z)BoJiCqRzcQ*zz-!tW3*^dLtGSP$T zhhsicI}A}OekB-?`zAeIrY$B{gx&EJ z2Du#;6aAa`xJ#OvJo{tG))i@JiU2MHIAd;b5R@Nvb*^m)W%c#vGu5WO&&8OSn7FvO zA`&b3*)OS@%rQFSmC-5d!e4J8bly~(_92jjHtCwrdw>srF~$(Saoe9cU*;0Yv-t%c zalYZ*s()ZrRh6RPwKz%~n(2M+;1*LF68oiuC^iNGUuOg&b`(9$?hbLoB;(%iy;atO zkaQ>(z$dek*r|$#{ybF0iDC68idC~RsD~;G>>ocQb<#l~be&x+L$(Qc1Nhh*xXC)R zJg@!_VHy^w%Qm>@I01usCMF)@_T9ReQAN+E_)f zg1KVG*}yF+7e1H3(MQXT(1vFWWRaAVe1!W#I4HBkC-dbCQ*jL5}H*jE=szyzKBgFKKJ@ z)zCN~PM331#=+XEi8z@||FWa> z0TmGuYVp#|aA$R91QDlkDa`+ZT@)t;8vWrb{Emejnj2+<=qO^(JB(~)>3nZ*Z&2p@ zKRz&-lDhZH4Sft8I~mZ$xeYcn(1B(w z;U|)p5f~4_Cej4I8^K{#o+{5%``nC+U0_x?5NWqJrAcI%ic;_T{yiXIo}&<&fx-ir zkr4|(#DFsa!7zo{aCdLdo!7hSHtWOVXO{UnifsisBd@BpgU_Cza%#@Ac<-C~I-~VK z5VigkN&T8i%Eb7|$R4%w*6p)pKC`MR2u2LgOPnT17sarG$1vk`;Ef2s!JEC@uq{sX z+4+e%0;e5=I4FsdQ{IzMGV~@fUNl-7glr~**6p=5cJo1OQc_YA4f>QJst^vae3Zxx z>iW_(8rdBd`N_xVd3a{JySt~S-8Tl4^q5kHHURD$2eeIh_gW-#J0t)Ji#j+ol!4Z* zH{!`3@(t>-GpFC(6^O-L z+}!D(KQA=Dj~v-5h00J5FWM(>Afdrzz${x#%xst(vK&vEXB?DqXqT;WaB_mwxS#IO zKHKn47u3(SwWnZxHaBHAGpE^FBT2hUWWy$?ko{InZ!lI|45qovy1RKF@}nnQ!&d5p zvMqDp;7<)Do%a6DrOpt1^^HRFE)`NzB6&r^pYlV&TG`4UxwukqRmY4*Rr;b+!{>|m z>`Ch{oJBrN)}Pn3y~^`hD3?Lofc*pu3IDVzwxf(n=&~|I_c6`ht6uw4_2=f~#_{ca79puk&HPjRP4nHD3#x_JK^{YzRj2eagAc(H)wYs2 z-^tUXqZun32h`+{P;inBh2xq|*+r@)#T$(;bISL&95M|Y-@98R8TwFBt zIfgfWxW8J90SWkaXseZ`6)Kgxg36fb{!au?&tzo_z{rypFB`ZfRe#VEy=<_m__`kr z?;x#ORa`6;celGx3^3>F>gq~&Xab3-IT?Z&U`>Bn*e+sYzx7}edI3R;95NP-HDf6* zNN;3^7;`NCbsWF9MO@K-o#Jr4T9tFsgKxU_<(SVo_$~d^?2LHM<81E=8S7zK6(tWZzCIvr)CjF%kr{W=kzcFCRpw4ANnU@` z#h}7XOpf${e;DU;%~R8Q%V^d+Jt$IJ$rZ_pTN^X%tjl?PGOdaIj>M#{u`wYhOMKZ% zRyOj(hYx`ckM>>&gr9Z7{E?5Gr#`*T5Y+8!aBarInwe8ux^v&i{QNy9Pax@!wY2S3 zB@SnWvf!ace1!-6o64^BLi51ev4X>buD>w6zjWJ8kZnMiBS@vnLc)$g+?9+9F;1@) z;BK-!XwLB*^$p7r3k5L)s}Ic6ZW)CPesB+k8oVmHxb6$Du$8?%hIgd&(Yx)PHJ^IW zxH7JnevS9kZhH!Uw|g#}82llSqwY+SOH%PHPgj%MzsI#% z8+xNgPJ^I=*Q>SyVbY$#A_5DWQXadaTl7{9QV`V5Gu{K@0*wSTMrdMK&bXyq90 zp9r_8*ny2 ztq^{Dfkih#QKn$b+GL%|MR%Bb>jEP_WQkaxTqQCPkwSCzCZfv-={om~^Sd@v7D!^s zTn{d`76y{p1WgW+UW=Q2dl#E6nR0}v)%tNo-;|3kXXl}qE_~W^c%UjNDpuClC%s%D z!#!L*y}r4*0ZeMd(C8UE`Yyvs_%hw<7PQZ)gwa5tD@e=^Fb{KTAgw6Xf2^+;mdTM9 z`S5qr`(4}GghSSNDRa=W>_-T8Ffm?~nDD8MDGbGzDlJjCm zD8n1LAA2av_*Ix~8Wz3xqLvaQCw`MceqF4LCD4#Xk}mDz2|R6!_`Jn;d$=}`P`>~0 zjhec8+$Jf6-}k1jq$Gm>{A@=x{HF{O%}ddw_iN5g>&=C500Gd;;Zf!s%%Av7cQ#V0 z0QF+vTr{o$I%1GHK{7Yf+L`Q3lGBavSv zPEO+>&r$8Mj>*l-6XRE}^Tet{@x(F{u~!%$`yKCc*LnZAPW$GFaP%dpAQh^4DKXsN zrp^StZt0+0S<8=OC(iWEB)vb8+SoL~g$qoWmMWnUcE0v%~h7j@9< z)m_zI?c>nbu-jwz;~wKY0ZG4RCT`YMbNPbyuf4PiXSL5YNvIvvHNIW0zz%BWc$g?D z{q70JYPp?fNEzbfIt(jRc1#Rw&EmP`i_$$i-1+$RT#-;PI`iSKvcrLnOGxUgNL-*4 z2O}eZ*5o9w0OkGGjww4U%kSpQdZ(=gl(hoychwvmjsT`mFVzSqGIizCr}%*2%GcJ= zprO;q>$3S1lwQ*n`m?jMuW^SuJIVO@??Ora(9sN%DC7hG#y&5(MS%HoaykC;*#(e$ zvMen5hviC`N1g|WM6V&Vu@0Nu?dR5g8(dN>1#~zNH5H0CXfVQAPLQdT2^Va1Rw~~$=}0DX#{~S{p<_t6vLkEvkh4|w?S3Q~;D%3<&@F_9 z@dpC|@sA}+JM~XJj_I0JkDP`{;dQZnT%{A;o%281g9r~~ggyS&vFe_pA7H};1`fpB z1Bag{-)YFae5;uu#c~OUcJhk-hIPttzsk2&5KZy?4B)&oE3PD=U;><(EV>`4br2S5!Enm(wnm?aCnbLXzN0s^%CGSI5Y6#$Y4=I<^3+p6y3 z!p#|r9q68cXS!hdo(bsa=*-Q{8DIs)zRg2|3j}Z!Q)qHRUNntkB2EFUNI)cv>nc+q zj!9bC**&Su)Cmejwz?@<0V7+W>Xzw3?gCer@(&18!BXr5k~T(uda~Qfu?I*S&CSib z9aEEW-?vV|4H&lj(2)?9)YvDEQGRJaAb9!17KbMi+Q0XsRI@Vdo&F8`Kdtx_AbM%J zgdhKRswvOwlLBJWG`AhWKgEpB)CuA2|2EkGA)L`iumku*Q&Z|pcMu%V!qfU~biy=Z zt>bF7%76?D)@Xa%H1B_n0OV28(WpV4M%7wlwQx>}VZ}iig&)uOPwr|#5U{HGzkNZN zK&TeEL8u&EkpI`e09ppn^ZSHt(Vv33lPDy|L>!Fi~&vw zP%wcFIBJH5hPt|?pNJc)dfZKUtDT*}JYYQHa}PRAN!`XIO=Br%TKWsofBojh%q2PVNnZN*R89n>T93!IduX zAB8Uyq{OC@s8EEZX`_(@o~UnvlRvZl@6OV-74iioN^42lmcRZLV{1dZ&%(CEoW_4! zlTh-2m6kGO+S}OyZQnpwcYbj(8uaU&iGfW{;DLek>f&;`+!;i7+CT4`6%mjhp--xk zeIq|??!bG!g_EIF^IAM%VOVgT)3fEjjt_M4)9r1gGPq8QTF{%|Wk3L$K)8X32ckr_ zfH$?TjJ7Syy>0d#4E7F*VbMS&_WQc?W>1HhcyqF}eEr`RTxN;?--(oTf?ngw4ulJV zHKGj&dfM@%dIZ}cXIfGQg(&C*Ld)jb(oswZex+K*M|z>k*LT z%Jd~)1~m8anv;+JUFpsHriAl9uaK$~nY~AlFVpW2ITn=`saF?=fBGTYAG7{)z0D66AZoX03@o@9UeTmK%{cyI{@@TOQ6CtO({NSmx@b9un zf%?-^&EiKUri!|CQz{mi(}rViYP`kHnR;kZdhfRJGnL&k#K$ndU5oZcP&}IQY1l_G zpQDig%6*~Tw$tktFER$Fv<&@nfnJoTgHclrHxSwu4y2Nf$A??c{djn?F|_1+sb5fW4>onR-|R9V z1v!EyMj|ddr76bzK+b+brcbDx)o!nbRUU3o^~iA*V84+x(SE$j#C(-m6wNR3H=9pd zHCF|fSHj>qBw#O2A(xLfIw+_csK{Vzp9dg{Kr^K|N|*QLVYybd=mL~dt`q2w~uJ&7EJkmEI2>76FYppNF-Nl6>8l-t3btSPOk_vd$0TRh6 zD3%32AwK@$Y7MP`LwSl&?s0BwGq`SiARO30(Rd+FC}~qcJ|ZSwHd;BP!tl^eav+8n z=Z!aAmjpj;A}A7M5+8H!ilrftgj{j$do<}}YQLo5p%JeYs^c;yj2ATeF|Ie1qkJ;j z)6n!^1}$y}aTJn-goKdgu>#rA(b05n2Mw99Zz9DZbcjYm)*07-bk#NuCBrQ8>nf`# zYB9LbKc8J zJ)#fikp&K87GfI_YL3}QLZl+r7m#{nPu{47fXoZtqW#Qfeu;QM->&+4SB-YkRBZRd zHHm07cFGW~Q+LR-uHfjGJ=epQ7~(LCz;~=0@7^4><^|H?Ms5Hdhv^qc-F9L8FpY9Ge z3Py^8Gmq?j9$taCH!ln%;IGifs+t;PB&6fBv%7=FCBKJjOSVjfA~XUvaVK85e32Q@ zu$W6Hr9^cjJd^sVIF$eb$%?bQ@2DF=e^FBRcw+SP+dP9MJ+bAiwwlz0Tp0hJVN*Qf z#M!4$soG8c7E%agSIa5p;>}GG8-uCJ5uwf&v~*K0KGU2@hUTZK4^_^aKgn;I(SDTO zoHQ#5s*^tjbz1< z!i=JvUfcPn52MQ6T|+=$$i#1dFX9A5M9$McnY%9_j?BXjL)E=bxL+U7c-(A#XnU?- zF(9Bp*bV))HnueFxWR?gPb(w$sB6U|2i5&_BVhQs_DS5mla{JYATcPR-mwZl9vPWoCc!-CADgjtt#omvgZRq;?TK+SO2#{}96T#}Lp^rl#%O27E zg$Tn$4IUN2nDiCqkiV=dd4^gDEiAcBqNBoQ!Mz45 zi*-qVd;aUfGFmifW${Z$*@3zq-;bG@nV}(DAmxF+AP@y%0-V-0W;Ck{N50944YH>tWDcg>rCWuS(^`dD~xBo5=hzOYyk%s-_J}Jvy9tvfr$^ zDd`jZt`R)Thxr^;1B zqE=4zja;$l;Km-*T;rN_a71X}Lyw}k%LyeNgUST{zDlA-|IpA2RMhB*2=dKacsMw5 z2?>x9Uqhi^^7F;Dt^eEKu|eDH*J88pF{t#rpvr#}q$|y=auo^3#;{#fjxSklIK8@A zZ2v~9HaIx=XBwyMgHwvnaW5X&hH?#t3}OU2z5%cn^!U3B0z1s|`alBM#G~8p)AWOb zNwDEI`R;<^f4u<2?mw>#u$irk##+v^90!Q?3K5i(Kq+9q)Sk(Lh@|RxdvU;Q*sdlc z<>XY|qpru~4o(gdmj~$H0WJrVi|K-xBwG4LE`ML~^>c<{>CyZ*k70=Z-nLL;7p99T z%-N5JEg$0(kdQ7{rHD$02Po(y1n3!$Xbpc77i9EEdEj!kYJcocm&A8C-TbB7yGX*B>oBJJiV_4tkx-!C`_1PT5daDt8jioIjfir-XeN%1r|mYH|?J z!$c>hr!_S+POk4*O@FL!Y{-L+>?i93+S=M+z<`i41Qx)%cj}EVW3F=t+}#p>q&hJS zefidkDXx+8$LEoi+#x--My8_w>n5wgqEg-q-iX~sGVIm6RcKY-X#rFMo%g>_ziUf z15~Izx?n^hW|Cz7+l?*7C|4cvpA?kqBA%->ktz@lyBlfIG)KVlKSw17$;`m-zK(Lreq1UU@rslG5(}L!hE5*#nt-fY^wX^$fvXsvESb*|Q4F6Y)pl=OlzCc9$=5cIdV376kWAE9{ zI84Bd;Na90V6^;xd?MIQb}Cp1)C+wu$N*t8V3o1740T^Y9t9q9*rXo$CS9$!Pvx*6 zq_8jq*7YS@#X>V4Ve^~GOYqytsH4ss{a_m&;)07)W8X)e4Bhwe5kte*M}jOJc22yI z#xWChn-YQ?2g_9bWGORroZr&AaLTBFKE8Gy3ob1$r)o%JVA7y6(e|3fAA>G{&Po6T z)(x3Z|8J*=#6v?PUbA3C1nrhBJf*r%{6X!>ZAOg_OSRiQ8}++0>7noI6%j~io{r0X zXxN&iXf6Q2U0r!}1rxDb$bouUK_MF1c{p3>@fY`!6f-#Z^D}_)@v>79wO5f#YYB^* zIj_YLvP>AJ`W3~WYEvo}E-rvWY;A1#yw0`(y~x1807@-iA0N;+3=H^L0kgG@O}vzo zvvWyt@ivBU3lUoNh7I_y1Zn|jOiaWE7w2`R%pPHW{aQ^#!Om_U2=DnRQ3Sls>rZIj zYLt9O_BA8p>FFsICfGYdyGI1Tou!A|+>Ui>(Ay4bmOb z-JMEzcZbs5-QCiS#G#Syx(nX#`~Q3I9u7GJ&OT?Yx!0QU%xBI8NYMZSpd=r}e(|G6 zxi5^N5QJ--{7LWZQ=Z&3|9-XERX>EE1j04xg$y6U<;r&Xc4S+WRbcarkjI*~b}?H_ zGvZC3fDRz;Z~ZDD}T zmFA$dx@wE&^$SnM5{)Wg!>X#J^;>a&o>G(w;rYK%w}*eJjG0_S76UA=Vs2^23zOP{ zDiKL#s(7V_HwI)jzkmLOiRydz`UT*1_QwU`HKBq49bBAg%QG{iR`4z_#*o`^f8wF` zZodPPS_~lKrd_A`N_Vo)q=h>R- z>d5UG!ti^z^VcsTxD|4^!Fr>VIrbGOERDB(icwIzInXqC@yxv@ z-|sD{2@>b9sK$QE$AkA@mY!je>pUbS$!7n>$^rn@NDmkJn3R!)g#lf{YKhYxim(T) z%L`9oyhXCNzZBPKS4;>yzB}N$##!l%7bv89D$?48fbJtMH$yagg$pBklzd*LufE~S zyo2nJAD`@I{3~nE#)EuG5J$WRs1xYv0^BY3mtfv$PxBUbfQJBZ^BSa`gM*3g$U&!$ zn}e1Xpthup{P6l$3@;)gR!S@4;z(Uq3KTRZ$CLAOSjI`r++*x!1T0m!|#It z*Sr!GNvcsR&V8ThK*ajG1>)7QZF5yRL~*L#v>}EVWo&krZzY_eh4c6I-#I53*1AdT zh$fii-q4jzMsxaqj9zrZ{r^Vs3`K7}@y3EH891uVri4{x%_yE0@Ui1@4<-xO4ZTq4 z$FhowDB;Qz<<)B9=a7YJ{qR@zoT9Ik&Jn?+K(O6%dn~4}PXe&wsHi-XUzch;{0*mD zZ_w1~fDbyt^^n}P!@C1eg^}cl6H6;)H++^+&?2cn>KW%;f>4CP`On6ezv+ghGfdqR zWEdOlL?iOjWoiqX!`Y$aRYXIEp@tC=)!8>w&Yv!?mYVHk<189(bAJhnz?4{oJys7@ zzVYkG_&EC+5Nb$B$SI1Lsop?dyJRy{H6NLa0+qP+CkrOMw)PSfS!{1_8y754JXU~! z77xL}lz`5F<`;I+P}PMDDW5{%$gQcq3|S6WNq%2~L#3yquW!HJ8xb8H{p;5+P#dva zYsE*XO^@1gy6#$nBJFPsR&}<=K0Q0h{%Pglg7F8&ejK{?nx(O1#AXxgGX{22eulN!D~rFeKe1m8 zf45Bn_=?3KDOW~v4;Mv&*5J>(pJM&f7yahYf=9D`O zs2CsClvVJ4u-?@5L836t^*CUMJkZj?Ax;wDKXRJKfQR0@_SoEH&-9HS8a8%=Z zx8ND{;tQBLNo=D^lXDe3>`F3=4d|ir+GJ&2lL@osohy+3Ei;)E;zZ&r{F7*du!4+;6 zi}&oQ9xnf&pIm-1-e~hcaE~+3x@)T61~vwjFQ%;KvMP`o#r992f0_{NSi3%_xvpkI zuxMYxY3t~~{JlI{14^VP?31FbipFX^NPryY)V6kZ@&hW-!9j^Win_Lefx~()%F(<2 z1eZX*c+W>>Wtq+^P#%};-5&|K|A2Unj;?0_RtB1}mN7nu`Zrfh+(}R+99mPuWX1ly z{l%5d?K|(%rJ$f7xVx;(O#6Qev(QuOmqv!BN2-yhx$6mnzwkvf3K^7+47yAG15Z<6 zz{NIBLEx)*n`hFa+cyU0uX@MxFZB3#JU2wpH4zeY|q-C>pZ; zec=!g=ouJ@mrsFmayl7e0vqJ3QfFuu)BA^$ePvw2i=wmCmiyqKgBt4QSZsgO~FSgZlm&wY@%jKAVV|i->BBGsxLmHbyapIUDCevM= z8_AVy`$$4`^!m;Yxu&O|pIT-Iz@(80kRzPqa{tVPEfeSSG zF<)xTE3PNN!czT83@;6@SJd{3%M9MOLj22o6{t$7cp+BPD#67uS}6&(r#UpO4N`hM z@|P-8OIkqPM}g7eTQo;qiuc8r}|-d`5wOh{{&`wM?HS|_$J{fN0}&8Bog z*Hjs8Xs(}OG$2HUhreBwkZN4x90bM(b+Vg!>e7k|1SBN%w1hsWHF%n! z1A+W`kTvs1AT&S$23i1=iD{SBs{I4$a4%2KcgSc^OXdVQ{~Icx$_Is&(i0>7`-O+G z*B>DPb-cH|y$@4dOvTsJo*6am9UUtv>4B#X?KRy9Ov$5PXjHs)mhCLe3B}vu9p1DU z=FRdlBzzNI@+pA!$r^MR!G(DZ>>wnqm|(<>|1H1vbS@||{3hpcm{>5qiMMnL%q3to zFP?^a$jR{4nGOPZ(M+ekf;eU4oxlEN@ZY`-nr@K|#=UO4@yvtm@Z%R0eD>p7g9r6} zkN}o9;A4Re448)DCB4CI=oAVcpD17YfPU!8>9IdoWzl@~n1Ub>5E2kTLD1^&OP7=Q z#O}yV=|fIyVF`Q?UGD7i@N6=ps>tz|ng#N@!m{B5(7D;!{l$j3%Ypar-&3pAemk1{ z0g$U;OnRdGQ_AVY0#%;BEDk{e9{84kWI}hW+PtQWW47JI3M%%Ts%oI_ zbEwPafr3OuoT7>uh{yK0L)P<@jM#m8XFIbHiy0-9BkM;c8Ckp9K4~5Bt*%9MKma#* zR+e}X$C@98TjP(8WfH5Z(&;m%9Wqs!UMgv_vg1jHNvXUu&_{z+|9B`MQZc zI6Q1`X^H1C98b%~4zWAk`h%*$W(1b5rZ2_}Udk#4&U~lm;YtlMe)kg@uKL5Uai^6VY;Yb&b1F!y@RETX+Y4 z?*Nnmt&T4|LWiiw%dHR!xHAqSH?OM4%US`B^Sn|84RSn*|}olyL_9YiSvnKc{zTS{29F@KUiq-_rh6TT&OYM ziQ63+IDLEG56r}CPY7ghxdjlH@5W&9!+PdhJX-p-6@zDuTD4}8U3Wc@y1Y*P?i3=f zGk!1Q-F;7IS=Iv9PfH7r#ZJQ0XgoWG)h=HQ-rHp$MXA3ArS>yQZ@cm2*OT8$VkY`A`VRS zg?fe}B~{M&$4UR1h>o5=2s7BQjK}Wyg7Ja#VEW!_*e3Oaec8s>Xmj@@dGkXWd}Q%= zCc$My8686|rdq(P9anfiiM`Vt!v7Wj`^BVek&4P=dh*%NzhynRI19R3kHXt@na$Eij zx}UL|Oi@*M*XklaqkJlVY~s4nPUU zyRtmPf#?(H-IKpXV*^prp2{$SiqG5frv$q<5- zoTw}S3xRNBOiL~X^tSy}V`FG0`oZO_Ggq*g0B)cH1cJqSJ0Nw?lBlbz3%tf=wcP?` zvey>}7Acdy9@pES-N}Xdu^PJ9Qn4pS$2MUrDk@qoR}uED8F_m(#4UKsjp0xO_{n1u zW8rykw3|%7J@kJKIR`~k2FOcna5$c{KMOBmB zjHciHE=^XQ?BB;&(wSG@TuNkT&gCw<=~tf*6SDibfR|AXJi3q`95X1WPorZYE6OXf z|F^Cpt7^6s-iiul0jL&J6BD*O6M3MAiE+xa%9o(Z?dakwz73Z`3jGTIZlT^7j1kwr-f0ctHF3Yz!@-izY9e+y08-QnDy3W^Cp zV8Ma$c*RMk%uVeuKw@Q8Rc{Vg_);D|g;~6?<-Qbz7=AhY4Kd82mQVh0*4fVIQy^i! zf=qaS+A`2H_yKiGXaAwc?Xh2sA9B$`o^KPT#L^T8Q+F*B<})R3Rd9bL4)_l;12gNv zF3ipT?}+2xC@ZTWGu$bX=`&uTeB2ZaA;^M?F4xW90`pwoiaC3d?OJpziA9L%+veC^;+l! z{D%EwPg!iTgRhnH_#Bun`eleCT1D?3-%;ru6%_?sTCniFyu6BZU?4$&iVboz;G#W7 z&puB?dXs{WzwL{I;WzxjV83{Aalt}isnQ-a7KT7zZMVmM1IH6QInX}xzs20T6FUp?cc%aJ3Byqi8ybnTS@HpPxun9Fc$^vzMPM@<5XHUp3L#ey2IS zwx38d8<~_K|KkkC_W5PDE$vr_)|6F4$r-TLGdoJ?DNkmusbsn0q^l0arvWSQ%svi+- zUb`IB)p`;$q!T}Yr;?3Kq`R6h?ky@Wm{gLDl@$;9>(LD0e%IF4eoaD}yCA2VTK~79 zp`15CD;5AZy?r&>5i6cvtKCxMt-;Jl)`HUzL zw=V{&&2hPg#Rg9+v;4TfE~q!Fx_KUN!LbDR7GShX3(fw*0k<%uw$Yde^V#2CN?fcE zunWOKAX+A%0=@bT45Tm+37Jt9Nyke+-6nJE>6sZ%+d0^L*7nldISmb=%4cLC@m^vd zCXep-^7IW7A<@a39~#@h6`xoP#cf=VoGfk>F^5%kupzvHE9%R6#>8ZeAwY6{lt^wy z@(oP6l$p_Ha7r4&o#bUYiYSLBK)5JL1YKO0dN--0Dff3n(D#JdO8D0&@Q7AZZ8;pSa`A17>kUI@YoC+@^xpbXnvv229Wu0&UPI@;)YNt zbZ@a?I-Xdg5JE37)af6?-{tQ9Z^tP`@U34i#!u;?)I-A+l{hRqE6cq4lU_@&(yoz9cKxESz@ClqZT4IkDOIe!`PVY$4xTvUPG@Q?oEW{ zGwM6T#!(e>^eI{s_={dGiK9TTj)@&C;0e2CyE|nDoM>RHRGXa78l6r6q5@jS^@y6{ zU`5=8BAvS#uXtMRFd>O%W)aKT>2HQwSSUB@>=%Y(kI`!zNzERup%LEA$PFa*gbf%m zmn3sNuSh^)cH7@7N{i#i57^-j`LHC5yBH}ThQ%k7l1Z+h`9%;OXo9&fC8c%|(dh5( zgZ&%Z+euJxOfWbk0|ycu7`{76vPe4(AD1R8y!f>+GFL`bQW{^j{F#!gyLy^}CxkHnTB44PEX&kL9Zv<$p7WMGS0mT-Q0Kt}ng`7`(}4uO}8!r0>sCjSOY{hpRX5*~ilukTy|UpHokN zrYw3kTR%^`@eI*>wlYurWM`m8G>nfRODee~Uj5Al(anbN>@TmnHV0rrcv+J-tb2I?LH zOB=%c!p?Be9{q>9@|TK&iVB-0MF#$Nbdz=2+4`G5Z$N=4fDL#v!u2{GQW03uK9*bN8EOx18*He5m@8Dy%Db}S22ZC?r$tIBRkrwFH35;q z(q!R5kKj)I`^5;RCYHnt!L_M8l@($ysW9|+9>obId7Lo!#0A)7WA)zQfzU?P-WHF* zf_^7l4gTJ?qC(9UcPKQ`;SMyUxVt{1&!`fKB1vJk$^@0|n#@+KooJsWpB9j9S!BTIF*Sfa@V7}ej=Q z8gxe%dZy?sm*_i;_ zH0f00wHa;72{YI(t<4}2Z<&WT4pMBG^!n=?8;N;-$H~y|ERSDnvr0-Su|oUfMV34q zse7hHz#?!*y9@uM;+zF*(7TZK}nXf2=4tqr2Dv&S>K^7X&57Pw3UfNU5m2DqLyV+D)kR0T4dj1q#fD{QjW<^Iwq4kBx z=gT?~wEs;na=km722}W~!w%#tpT`&1yCo8aW*|P_oi34*l+=e?0f`5Gf5a&zEx}8oNe`dDCj4{iM94)qLw8e)$Sc z!<$`Mgh`F21cTxw_joj6pp+-WvkMf(S^z=|7@-p2CvK*BG~4gbfdGS;h^X=YdRIdu zyYbwM*jv59{_OPBRF7Qv12!n#fo!FR$|DZ;NjIfsFjG+GB^RCwthjmlx@a1zeZb> zlt=G-Y|)$(pVMSL!%MjHnZkxZ{yQ<{v_l_jV!!gz=@$=lOhlx)VX%@p?@nby(D`L$ zWE6^2Vt`_7>K3o~x7_j&*K*rMS;o?srWRAJ_e*(>4$r)=?v#@6Azeqpg??e9Th7=5 zsA0%V_<3SxSg3M##l~Ef$yGyHMAsbGCRl9Hfw)&M( zIXd#I_Tw@^Y^G`jkMTtYp+qQw&8=_tvTYfdMf3L56+bNnax!QO4E3SHK4Ka^=;emBdgev`87H@@$U*d+%m~7fyu9v{smsO6^i^^3f!7 zh3hwe8|IKX)0PTm5LSP*Bg1kwX2w z!0#qD`d)AOplAn>-XN#OhK8kfulG@`NlQJ>S!GYBYS?O5T7$S^q|Y3b2S? z-V=YWf#8UNxK&BJ`W7ibN1qZwGW!nH@7H>oOeo`HA5?3Lk zQj^qH+joNMSzT1Jl4SA|gXq3Qvgx*6`!KQA}&m#kk~m z1I^1u;eYSY)sHn5^^&4AaB&Jv?JcDmG?yyJwmWQc&`=_d=dev;p!{Ej5AOqEo-?fN zp;kLz;u#&)WC;p|5fJLPKKfoLlM@rbZ`H!b{PCtM-UD{$_3Yo#p2oZ#@dUlifWYZs zWL(VzuC?T!L?Jy4TB@I}g2(IlDTiF3da)e!u%_4>v8u+EFe9hBsOOQr^|oQ+<7KvVt(I{-ET>5BU?L>d?QZa4XtT zHesS28R;A)J1i$uyVH-Nj*WhRvYpk9X{M@9n4m5y_(;nP%k&)Ywv3-r^AhNK zfzb@*fiMbCMnPEyvJYVCLoO)@kcXdc0D|39JIMbwJvE~D{hOH`_#H!Q{QD%W3A|qYy0Nyq6 z1Dg(YE+*BEBB`ZWxySxR!GzB|n`~z4;`QQ4#)dx<*aOc2ZSCP~TGQk1Oi>kZ?9BW* z47}XZR7j7C!MBSB1=!nNkdT`+wy^jj4onG>?JUPtb? zuI+^m-vK*jg=4YPTn#B?nOGBc*^BjXhn(?Lhrrnid$6?3Iz@BT*N}jyIEvXpV5nXiKCfmG`tP|S4 zUI@hBsfo9TOInnz7>?r06k?bjj+qw_o!-=V=eW&0b(8lwz`s$SYsr<(_xi4Bl@;mZ zWYlt3S)`_6^fb0qc~hzd<&N7~I4TAEqke`lOVY(bs#(_= z%R0`M%|fc*lO0)HTR0M(Q%ghy*I?9iw{_@QX@msODh}fHf&3GUL!y!e-?@e%1fjq~>pbyK>Zc%_j~EqCVehPYpE-zMcL z;Q7JwzuNnELx8F^HHS&%Zx`CJCB&LK+L*cd$GI_9YUwM2v|3|{u|KJ9zKw*$P?k>Y zc43|UzRJD1sczZ%2up;p?bWd!f)6}oe*i$5Q0qFu?*OH=XOn&R_z~ckA@2V{E=E!C zpUfaIg#O`3Ph)`C^7q0%>2L_^f6E)(fD_TwZ1MK-R!U*Kx1iry2o{6r=ASh8>un2< znU)5TQP-`$n$qv~ z13v+lOQOivPJ=rLi*|6L1^&cUW#4a6|8aqT7)qd>U`@FeY-X;%OaqNQc2v_8m2w`n z1tiIFudJuqV!8NW3!M0IhJ+o-tdYncKoB8Jgz6LPl5{zrc9EqXOO7HUqnBMZ{`HGf z@w7sODCH2Nl!i7pf=pN=>3aoje6n&r0fLC1Cgvi7I>(D>Jvp!5c?&}GWVVdt4EGZ7 z6GZNP09R>JMdVhno5j;@4W%;>gDO7SU_ejyB!a9U=bDS$eVOe zB}^2tMj0|9S3YJ<(dc zl|<6N#X)sonej!<=Fo?UPu3(G&*N8+nV)Wd)UC*e)B)oY@-4&9M6%Q&VIvdt4Rkbt zNO%DTuU;b{?_S?oSgM%lcqHJn@-d7?cgt@fanj4?d)(_*Fy+kZW2=sO{N8EkY&e{S zkt-eXw^gpV=spa_ZAR>i7F*+!+s_>_b~ZS5`AL5CVfWM)Adog>WVjc5<^bpW;Lb}|Cq))Pu-c{aDS0X_ zs&FrI)TH)LTb0RqGQim$d%of{X?;wIa5o9jwMDC#`CNpUvcKAD>L*PoA4@IBhLQ{%WLO?kQ4#Hr5MQ5ysC`S}FBS#481ot`LYX-&(( z#>*(oZ%T%VP;lA2?(EUVE#~mJRkXyKQf`V`YAb(Y;qGtPRMp>}6sW4&yK5w1BvpSN zL28L66^TKC3i#-|kd)C)svzRN{02m2~$@K{J5vZ`NoIE!VHSZKL^dvWb_Pu zEB~Px{iTW8P^=19V9~g{+6<+$XhhuAFnOuaD(k78Vvd#;pJ2@c(`u_`fFO zkIq)Gp-37%n?r6I&O*`(BU84FOT#4lMpK=r<>4e{qt2sZRxxiIEC%SHljh`G>0Y@_ zkl_^Sp&VDX0oc~<;!LmhewqzI#1<%ViuI=-+6;;YPRZFNBSHOny6cG)#j^9NEI}X} zmtVn24%gjwf@l;s=EXYJLBiC;cko&Al_XM>SrnrS@r3GQqavO;C&Jqs2+*yM(TU=ygmfPCuNB z4Tbzn`IJJhMeE@2@_YsKPQ5>`X_+PEE`?V%HvRdPsbVnNdjOs{`--BUUYt3sNNO%s zw(Wh{v}yRou@m?-$d@!KXhAmId$n4(>zxCrm|yXyX%}*oyW>Mx6inwKycrzje16^C z54LZ6#B4fze)YZyp~KG^2tuvu+nbUBfkb6Mpvkld-CSJY7x_nXx~DM72Q41howYw7 zAw#CBKf0B`&3$7V&m{iz5&}Uk=XrYdBlPtX9sm#lA@3&< z0U;6c{vV4zdzYB`pCHrn!3uD78JH^jdW?J84?Dd^-(R`pzl~LD7M=DA1tsPFsE9#c z#Q@2En)*M#&5)LD1onoL7*j}opVT3rTFJHk2k;GDON;paa|s&smw_{DwYD`lOy7hN zTwzC~FKw@P5=>G3=0ERY&kHC8J_F&#fnV6>e-MKly7b+%Wi1OqPgVJi3gvVO18)#L zTr{YaUv(HSDSItmot@Er^^!Y0?#&%7HoeiOE^z}c1Wjl&wS?2|3A~LO(bKGF&~Apn z$QXtj#OqfG{(RfD-Fp8~6@(y_!H*FmyoM~X$;LKk&0nPM>1j4EIWXwM%l=!;O+=C? z@Bvy<3a&WA%SDTN1>A^mZ{BEB8cNrgFCr?=1D2b+d-E{gs-uy4ZMYdlIUjMJ3YP;f z9aQAL9(j9W?ArG*OO{@C+;{csCNX5jjB)0ItdE(s;v^HjVZHkzAHiP!ddLC&E!mK= zW)5fO5s}n1eX&yXnXz<`>Z4Wo;-{$L1ogqt_(qO&*9_WF18N3qMO(PIQzREUNnqx& zKPeICl8lwHZQj2!<#M?IQu&m3j8Umog?f#8jVPUhnz+AtA27z7rrDAhA zGA`5hgh#=|cK`M?NfjSgC%9~OiDm8C%ba6O6M{XMr8?^7MaYei=|6804GWmDA8+(QMINAN-g;XCv<#Fsn(9@6 z`47Zj(xT{z-(DWXH&s?IG-yQc+H%=WtHcD&;jaoR#nFWTR?$tgT{)p}!^sV<*oSnfiR?(PiJk!MisA`mqX?|w6E(G1&nmyq2+@SerNf3tljudEK)bzs3;CTcB7-E z7lT67pS#%CP`}Nk>+pHDqWtuOp`TP#pI2kCCt(VD!ANFu9I|y!9CQfds+xxYz$YXq zSnmBTPp(|<@c!cN2$N{P^PH^!>>=4`Xh2 z?;G@(u3QpLM!UX4ga*e%v-}W48Y|u#y|n+3p!DBLyfalMiU2aA&-Uc+)N?aw4$|@R zrv0oj76*@t0@c%{@Mj95BjV)joR6A0OqiLM&8j!m{OQ@t#cM!Bog<27ISv#8&qycOu{X`Kq+ zMBvlMfY-&}eyHZ;{3CS-{4{Th0XF%iYMlV?N}i#Ls)OvKU$&qEtSnd(Q@Ad8e{y?X zoY@*155Ur3wtoD$BvmXrPd7HU*h$3_m&!0V*7U*1!gqclUUc6K2or*>^8ZghZ2Y0E z&-nouYOyWY*vf@>Hj+fB>dmgRyct+J0Ad6D(V=FG!zd}v1V*#O$;@Y4uR#Yae^RO< ztGetquU7+5>mg&YVLR_l*!eX2v$MwxUb@rTN7}X*kkh$lw;Mp&)UJJm0~sxrOj8^I zI{cq`_|gJ;Zr|RzstUnCeE+7|{cj`}jFgyAQ{$kloKUCIK}iWQ^!k#71L6Wsyjh4L z3edO~!zZP7?;u61*mY!M(^HSO=Eu&Ci<_2lXRI*&!z}AoDbVJ+r)Em7ilq5FeT_vz`&|A^mAUkWJfB_G zYV{z-Ta-Un4$mrnlUx{O+b6Ek9t>gJh{=|d+kQ0JO$&Ot9nwN*n3m@9$9+3kK8av^ zvXJ0}=?x@1$bVjlpN873c>~l&Up8pE8)x`KT8C%NfEOo6vS@jjS>$E-2>?B5)Oe^R zn4cEveTi0t6fTpUH%o$k@$+|N>WgmW|6JJX8LVs-{~ti_yR?;RY6O+C?O&lRm!tR# z12_>`&gmEg72jD-3`51j!#YLR`v}{Kd<;Ujpm1bh<7~C;Q;b)^1!sJSRZa^ zD_+(qs2bd0bW;$+rI6+*eshM5a3GOCbpUruLO1;>$knU*eYp*dT|3pd$BQJe#F z?A!LwG$~1L$`&@!amcY{pfSNTBu8$8iL0TcY&ofJNZb#baR(C_+V^ZxmXFwES(O%? zr}H1uN8YSazSSD`^^5V1_4i>-`PpouTj7}y{Z|*2H&6)*bW=d+nImwus^JOO(G;9ZX0(XdB67z<&QrX$%_E<)R{!5iP7C3XEo_~#*6$0!M)D-#BY+n7-s&u*C2UVzUQ`oAjB$AyQcvf z+gO#Y^61=L@^F1630IkLlGu1TDcSx>BxT*-({sHcDvBmttNa>Od5Q1w_1nki!Ot(f z_ASL{SgRNsPAL&=n%Drgh=6I)ozOm$xHrn&et;u~*d@Van6k&u(Rde-#FUP*n{LJ_Z z)t*D}!wYEfUPb=(tfr!)|8w6m4uEJ><=1452sqh}1SDk!M16js6((9XyZ#Yx$lf<@ z7piG>q}V5A<1_g(sILFknt*`yj&MLXI`C$FWv94B@#mJ6!FBHD8>=2{=6pOzVl9B}gQJ2{qSs@ymv-~26>I3Fmm zh%^~UJhQa>JQj!b+FQM^gKFommd1yn#SZt>4*yD_yUTITfZSCRuMou3kK#Gj!;IrG zv?>z^U)r=##b=I}Zo4z}E3(gz>%xz>QqjVM#NYKfeAYB9F6Mmn*__lU5a@n9VZIvX z>_l97xG&h$&STpc7q1y5&?zhyi8vl=JIdJ{9*Gr1;--`>SIgb*Vw2MzEA-~%SZd;G6^Dwo%tMOX;t;)WhLBVPkkFS8ouY0b1&M9 z<*atIS41UJVN85aZ}ZR*(%?SCUuAV?dFf1}ul8u`iZyCnJj z1=_Wl>yJ_9{S}+RwVsZ`t4}zS?fkvu9zcezT zku*B^M*hV=b6ap&plJ?6*bA(z6xV;ER~{CE;>nb`zk0SiaTn_j&P+bQg1x>~x@Vtl znAI#L@`#PwWaG4$@aEM@;ku4kpgl?4G)4*ww(asNBt?*8jR2tlZF^Q)gfNK3UFr z5IG1ddu`^$11+!#`sNnRIDB{aj@z&dk}vcGh(A-jIO*uwVr^QziQK&t3NfS0DPDA? z<|n-WKwD;gVSqvHTCMtz^Qf-x_R6O@0zjQ~JL>Ct^1sp5?^a(W(5X5m)}-#5E&0f> z1bE)(CSv#Fy0T})%m&9Z|50~e&5iuc{SWPP=x8Bm_IAL>cD*3tbn3lu2M(+K^jW=v zpQAf;$3s2u$b!22fdf2P?goPz9S~3Pi#5v6?>{to`3=zd5N0t3Ul7(Os76X<-A+I) zP?|8=?uV2J?yx%VQLwjWxU+UvrH8k}C65mQIZIkEcgWl^xf6c{5KA8g1MK;#cfX&&2ro$Mzg< zmsK-%JSSTc>kM(sG~K~_jK^pqjN6d{{i5C| zBF$G}6mo0rjo@7aLcUr^K=^%}ju+wTP@by$&BW-}`&$mkk1Li@v@jMQ=C>#uN4c_n z9ww$Z->@+v$)t`I58gcnW{3)Mx_+WENve&Q={i=9Ty^AT1HxhsXf^9<&QpeB7uvs? zFwJdr$g66G+UMsR3I}_gY@Ji`N(`{qKC-p`HM?1Pv~BnHwa3jpjZBInxi}i}J3c6B z3Ad-3vis+pAF@@n3>b5Ye5cb`mQ*MsY1tIPJ$GARTB#f9w#(PqPb?khn#uX`UrxgR^m8_5Fz zRw%jxF(!3X`G2_pG(@tg{LaTbd_9mo88x+!D4=7J6)|Wr6*~Y;oQzF=1dkyV6#b%@ zha36w5z~lw;^rRgU|mX0|6ZP#hu3{}(}J48*h4bmh1HGM!7xW zy56~gOuFFmw#WmXaVUOMTK98@5ZIL(A0>SKezHDuX#|YX__su3Okz_GvFq1dnv>TQ z`WG-Isjq%)fTOs&y1TP;a%wp7K_%>Xc3!GKr)#ZMfDtwN#LN_hZemL&p4V^B|BwNH z5LnwfCbIXX^>QiVwvq%gvS7ss0etH_S z46!kOLLJP@jK{===r8}vF;eOOvKIN6za>J;r`zE<26O}{FUIY@F6@?q{|&UWQGUzxA;FTzgj8UHX7Ak|=A{V=kNEf4siRdY zIp27E66RQ?y-6rmIt#uWfhc;97}OeHKaf||cN2CWbX0u2Kt~`xJ}Ez}U%LRwCcQXP z_Dov(iQMVHtdPlbbW-aixpA9JN_kY#G26SKdC1Jiavm4Z&wK6f-_a%)2f&yH$jqx( ze(zJ3Mn}Jal4V(08&H!0lHc{UwMwLt;QI}QNTgEtpwP){xo>IvfWp7r+~o5a#MwgY z**ynQzXW}p#cXV#EBu{;dx>%;UDBbH@{wD_it-fV?*yPmDY+_*zWaFS-qi@R=}w4= zRoYk4?);k$o%bg$s;@f0reR@aJ>UA%0ocQU7hbu-1BOGb4!*wj7Oh*B)PQ{s)IV$mp`P;+KkInA^Wzo#6s4oOa9?)x<|8f!D28RzX_tUswY8VP ztLoPl>_*GM;nr2iqi|6Bd!YO2Q@DG+m*{wTy+W+D4*?U>N$G)|EMBhtGh#52ey2Fs zF8Aj>AhoK3lRIjy)<7{{LPW&(UCXCiTg&%sO-BcGAV`k()MkhX;1auxOqB>dtKn@? zJa0j}folS1kKM1%bdMc8U}9t64Bs=R;+un$iaY&L9_}w%0!T?nx~Ep2KJACz?DmY7 zQx`+My?vH3bE#|3QpJd1$Vm>bm=q4qSCcO5w3A(Joq5NN95Dcd%E-!75EA~E3odoB zX9Y3!SFKj9`+rp?aa79&5AJv7$uvfOd0OJ);ygSs^We~fOK{w@8TNk?S4wQs_wu>Y z)WD{9$iP4;I}<2L;n1sq3iLF`7t=aantdny2}(ji-yP7~2*{i+VQ`A)37U8ur?_Cn0XMZW+jnm(J=*P8~0>(Hkp|e0UJXi}(B+VjmnbTT*hCszVW; z##smt_LAD{gXEsO`m5##1Jfi-RH97xidb;Iy4t`48;bfYN)KwguP-d4$zxK%^pUU+ z4mGR}ZJ&dMbN)q{w6nX`W?$pse!gFbR*eLg&R3?v7!QyrV>isH%?R^`rTy$Bmzmgy zf%(K4Tu#?q^%q#*6L4c4@do>%p=pBbth>w%I=0Uz}ADxAMwyvkUc5Y`-9Ki z4db*e->^|r?{-e5R*tSrFZQA1vau4%XJI8FY;3?^ST9*3d(;lf1cD*Bg#7>_r*jw4 zK@8j@=_y3#LkL*=4a|;$|GPP_P-aGErtGmP{27@$ujShPCA9mI-X|gc07eP)EeFj& zz-eJ7da@m#?2rRz`}T{~9JUI=F#1|tQ#5lbZxw9EFchO5Y#FqeAB^o*b>C6@0;s%r zVE{|nsG#>zfvCQMF?*>Hv909JahG>9s5jgM%Us9Vj*G`n{#cJebv&u42{bSI$Dq6;U(lad?&S`B zBJsRp>u<06`XFR!bZhmk;%sy{MG35f#nZqLX2l8(VG@UL6)%U}N?m$k**-$!cKcKGfAl0M-}&~G z%8}BDc1n_-h8YeP1!p!i9KH@j58%(3eV2+$Go>j(9~nNl0GJBE^>`-+bMM#I@;X4;E=w70PeI7lymYNKlLm}i3m>R+(cfdB6Vv*8(3I+KOpJ!(xR>y@ z9p*V~XJ@Cbo*p<=5A%<2w~d#Rbinxf@hr)e+pA%(x6tgGqzsJ?j!Pr}qRM7n& zf8xnu?7KASB<&Arq7-n-Tl!b7Bdfe&8IHkWde>>7d)dCLyST zX=8%}%JRpGOdCMzYnrPT78XDyMDQmr4H6S*xSX&)DsdnxnaFM)lkzOF@rvyT$bNvl zdfCU3+9jI~8e&1{_P*qYFRJ4Cun5STm^d+od;bq>Zvj>1+O-QW15{9yR!L!lba#qk z0MZRo(v5V3qS7GJ-CfdMQqmyZNOy=X~FP&N$=$$N1NH$GbOst@W(6p67n% zJ?AyAd0jGd)jhW_@zjC{Z4X-z=l%n_JZryGeUp>P z-P$t@`(HyYVVc*31?OU{1iC|Dj}}Rb`%e-K4CJYl&`?lNFfsl3l8)9mh)sk$>Wy+u zByKd(;UC(rfM204;i5A4@nICFy%8Pzr8M-jr+&Y)+4w0eEoWuAgv?GB+Z#osl`@zp zQD53-yy0(_(YNyvQ(v*H_=Y>blAA^zlF?+i`%eX*H_qtj7o3DTbkjmPk)-f<^0_Ns z@e1gk>6!X1c$7X&%Ed1%{#&s&?r`cnZug3x-s;^N)(_C;2L2RG15}ikM{pD>f_M!i zQ6Po}I-%C9pWS#7KN4)&&dl;IUtN1vq>!(kTjcz|cf@@<2}Q-kls_}p?EeO-^RF00 z5K_S;K};B;D+FM!?8C9=)0vX@@A-5W=;r8Y#)gwze}D-ij+oLaDvuReKr6iBU7oUO z8~0glnLZ3Wfg5nmhq+ha^8ydZEe&sYfCP!jROTr8O~gG6BPa$os042!m_7yv_d^;) z;xHeClwk_}A-4@Y-Wtbp%dG@P9u3Uc{V!cfH-8xaLfs%#eVGPo%HW>`eg22jHw;dV zKugNlcx$q133NpdIeBluoE&r!x_|w$Ur7xgQDNzXLxW|A_N{b=Bz?gjS|$jho0d0t zA=O-h95h{$gzw;1uR3xnP&Qox#w%bbBR4zy#q-;U!}hMOjebeNuJ-oXeA3nV`2na3 zK0ecItfwPq6kRL9M{szW^u`r9BnI;B-j)$^w{7j~D*%qR-R4AQetxUsL&SRMGtwWe zP4^QfpK%zJ!5IZ9WJtJ=Z=k~`!B4O!zLRk8{WNIaj=@>}fd$F1qT($Lzv2dmhpjqVAUm`M-7c`IDAs*>t)2%owt&~kW4GC93;!(NqN}Y&#xHd^!QZ;$ z{orVj^$tPKs{;9CoM09*C(?WZ&xW;(qa2gpMf8S2&bdu;1k-~%^hh!e>vIkR^Zj$B zChRMI8loOfjDQy6T7CD77_c}IdY5x+t~|7F`wGLElpGqE;LzdMFHRMcNXcOKMJpva>9TnXnWA%WB%YtH<3)o-}Y z3otrCQF`MRhCx$5v(~o6f6Oe)fWnSNZxETDEXF;UEBJ`t$Q05fKrd zKyU?HtvQ;~KKhZC)>2H@ZO?1BIsY`Ni)HugkGp5!3Z#WEBPXY`LdQT(-nj1IH2!h_ zK4N{)X65VJZ~xT|e~IRC4b^4i@oxy8$2t(m+UrPLL8SmhN6d~&hSiJowho^#F>Qm; z@MMh>=eWPOHxPJBP2Z$xJ>m-ANdq_pA03my2o85Jox7`$_byY4s<;E@5Z(xDxA;j@;ef;sXadbe zFl&2xZD94mZKKo$!g95TW5zIbfra+vd7=d<6JmMmz{~|?NAGd}W>W5r>c`(B|^e>|t%F8R5*B2W%DtF{C{Vif6p)?tJ}$km&z$e5=~_CCEcg1ND;FNk)&pNoQl zA;37srah~E`%yO3)>&`%%cNrGs2erK|Q}}7t)@+ye zJ#-fzyV0LnLkqLhY@zanhD-IEi-onbpTBoi`$RO}Nlz8X%Q;dZ$s8k&%B_l-kUiOx^m-wv(y|6;M4?rzI`|=({kLYk=Vps1qINnx) zDvE0nz)~9%6|B5tb#8775up6FzTSxjaTHt?@adE+V89lJVvJL0iHV8f{5F2RgAEn& zexTc#2dyNG`uFtYXJkY$X?=QivI81^7?dVEuKMkV{INCFPL%tfl1E zdDHtHV2u|)EhL6)0z{?bn6!SXn%A&@m=(U5`vgMr3kimjwgd-(S5`nJMj za4@ur8w_dV;pTyDvfR zO%BF70poOtqTmP%B^q+TTtwtfRl!q;5cb=o*-S8ZWJZ%yR(6yk68u-$0L-dj3(Ia3 zz}&n~E+}{zs;I7Ir>g%1nAgpuLid}~vx%oFf7(I?!E1Fw_$npFiv3{keCBs1*_4opY+By`%Z2H}V7v7-90z23GGK8>E zr3dM-)4anAkB{%MVKy3|vh_(%UrG@2coXR3gU0d876$&IEzaTe5hjRDZU%Y*-FI_g zp;_h=T$v)e=ZR8Y&F{4(`d(88A1wF1(2s?ajEpm&!?+F@MY@Fl+%ep*+^%Q#MHSdj z$;mw?2_XrCv9ay@1yyQFO7^hhflDE{mvBVyEms{vFtpy9iY3u6x&}h6Yw#UgBz<-7 zE5SjtK$GurnG5KS5hFbz+yT7rZo3MK7>3NM9gCDZ9UflGhQeyz=~2;;|bzf zE8Bmi-AriOu3Dj2=TA)GRWDaa?=ouGSy(7lY<_zc>(BkNR)Ah3@EJrN@%hfXPslFj zCFF&)i43dDF0fy)Ed1_#OTEPwYc2j@&_tA$5~14oR+{NXWvc{RR_^2(kD-};JiLQZi8R~xnI}jZ^-(N zJsl5LDT3R6aY0EBXIFm%Uiz%+Q+Hcl8r-qn8kZ-E8zQ+U*Db89PXBn4_?hrAFqn-M z8-kB6Xp=%PXXAd8C}qDkL?0}93$Yxr2$qPj2?0C|V4^~y<$@@v@__JW)X+?VYYoRH z6Tri=`|HlVLfAdHN*joK!Mg;ash0gL2A#S%U5yH?%!8QNb?_0`ZK#^p#gM-!#V{^Z3NB8t{&_Rw_?CrcU zSdIVsr8(}4M^D4ZXl^Uq{aLm6#R47GN4J*GY5*Bmvpu{PT(?di?Mq$j5X0^O#T!!c~GrC^PpR%wUxs zLJ)yua-CTs_6tz^`ypDuFa6!$KYII5dnoN|zlR0ZD>CCRf%}NN^ABF(`+~BkcN(o= zjNo0|JR@+Dn(kpx9$VSqj6QM@76#_bSBZaKHVACExtgx4DAHtPXa2VQ;)bOV@sR@s zPA&0z+cPuy2oNImM>7d}==ufxR&~I(6SVh{c}6U6*6T(PH-LZZPzb{GZANZ^=xslA z^~#4pjZE-#opopov^+fTK6)+;(Fv9h=$M`#O%$UD{{H=Ygy0e>qMl~~r!ME47Yz-K zpK}LbTu51ZUteC!`P<{Vvdr+~u?Pu4ktGKt{h*%nKbbfv4C22L3g~EDLA*4H8N&-N&X1-`Zp^Hre|c{E2VNZ8 zXQ|jVsbsd1gbX$(fN}uv052}m>w2%YMnEfIF@w1L4rA=2re~|!`ATF&4eh6f`C7TP5zqUl0pXO=NpC`4LmR>oT_R#J;Y0< zc}J$=U4}jvX8qXzfuA(u&$>FjGe@Y(Vc$XjV!9Xk*am@(kI(8w9S_&r#8(jrQ^xXQkwiW0ZnW$#U0gwy0>W>9UZ?EwmxWRy{8AUTKq$-jG6vgQ z7?h+-h2>q7I|P5>ulSDSIX-pklic)z8<9XN zA@7BE5*3FmTTG!%Tt;%ZUeyq`2XG3bBnrkB5Q|v<2WBwSztmRx`d7D2iN0w4TRC2M zxI7xgtf<(vkio&D8L+`hZwsE^{YOSeA792j4!aA#@sHuEVb&LKvXoD~l%xdfRNIF} zkXaiT`*bT-m-dF!|C8KfjP4@VVUu^7s*e9k-8H2um^6oW# zOHZaiL_g;kk^UF?CVP6b*HbY1r$r*JraC9W`a$-^j{K|H&gCCFsH-@!`CbwyKaHMT zv!(*D#s|t2$OC4cQa&4p;>o?l2$A4Xo>YxZm|KCtjZnIWhghZplZX1Rw@is{BOcB| zfdyA-rr`#1atrW=``R8vzhKWE0*x1V90riW_lJ@Q6nx-q?jn=$B25(dq%f$4G&`>V zRmAQ87{NsFQ0n|kBSsKm>iHlKI3fsGJ=}4;JUs7@VN4v7{XD?%>Co?yUO~S+vVP3Pz5n~Tf-4MZNrJytvUQ)$3;L}we^E6vTRq5d;oRL~WB-m2t;c{I(o#ZO(G3<)K|Gx`B}Bc6ir``(q+yg)RLj+4pj=2d&@tQW z3$+2i#mqDG5_1L+w_ECo4-5!c6vZIoVS}x{v<75XH`RC6wo}v7VV3BUqp%9(#UTC- zr+rb8lG1EBRhE-$VkiPX$>~%;m|;r(=Q_!I-_3`>k!Bsz7s)4%bF-h-RlW5-$=%%@ z>7;$k2bKHxT#xGpM?ZY-Mzp>rabYu?-~t<0v*G7NpoW0_U#>}0PtVrB1_(=F6K52b z!IqMq4z}(q$4l|U4%Q$E1#|To!em-Cs+;N`Ah?i`k%9S^Uk;d}fl9lk%ML-?@NgM> z`VEA;Lxt_8xUfV3$Z<3YUmm$#mN_5q!o*17BxGrjX|@99rK2;#!Q^fWG98-4XL8@X zF3y$&$C)BZJ9~O0sc^us)5@D_6Bj_gqKV1L3b}7u4uHt}Vd@JO(AB-6a2v(0T@rv24k!2vSqU__Yw3g&V5PG>ysL)?HuQ4rpVcVCdB6qH=|;xErU zyZ9zR`;k}8i7Y8Te%kF~kHj`4HX44v%ZYW+n-u0`o0I(&z=nGGk0w9_tEBZG_D=(L z1jyrD5cS59W)VqBO9y3VuK}m==cnQFcww9e59$LwedB#UyD0H6PSFtW< z+>(MT(FASkdF-cvNGI-P3_h|9RpzAh=@-$m77wB#3ImBSe%Uoc<;#_zMgF z{rmT9%k5IN&h;GD13&`UgoJN}0qv@VWEt$(%3sBSFn?#~TN0A^ow?S%;4skqhkjH+ z3+%JymO*cdLG28lgFUOMwG~?$oX4_lmwOZ8ERYDgp20`fxtx{?lR3ajK2RIb4&*-s z+iGN$27;OyIXOD?`>TV#@tK89yN&k+bzXxcCka$!1O!e{+yi=q$;1k#O&}RyY?qGt z&t)%M*Ya@#Qq4tB@O1mzNCLkGxKD$ifDbiBFRa7L%9AhF1`nZ~MT!s+7LvnPx4$@E z0^fyd@CP0mfaGpCUn8Ft3$HFPP!cLOY3V+|HY+-o(yfF;;^G({+#Zp3VHK-_hFh7r z2HyAhc#;mL5_FrXw`5V^1V@{hojqrE@$Jcrkx4E9AX3G`l~4+lO#UuH)EFe>cN_r4 zO>XYd=Xd@9Gj>G#Gg8y@+O-o}fdV>*k7T2EE9y24_b>mps-F*D<9Ud@L}*`iW&kyi&c0Gd*3=yf0H9 za87UoUudDn|cJ}@*dgbk#Z#o`K^c{?8fAMD( z8}3O>({|x$IgjFCw{wyH**{+}6Tcef&@VTr)}^KqQs?SY8&F##AIe;Md*~wsUGSpN z`StBduHh5#OPri^nW_JH1NH73aq$Hbm2!*3z`!2pO|ny}AFd8|{L;9DNDS@cqn#ZG zFvbu^54U5_y5sTf z624Wh_q-|}Rc3lg-IDxa_~IqXcTUp^Q)=5eGntzXw&B%UbyO-;{KZ@tsrDX)NoJ-= zQe;eZf&!gPozAFwUmu}H4DSUJ$5$*`)#M-f-RO#5J9!sRy0*b)O2G~CC(tbOrKK3# znR41X*cew7IRJfbMe+K5m9)2!vlH1&1(zBP+;B&Yz-@&`MC1bD2dTA<*CP?bRiIH9 zS4ngovG17nX&cmUYS0^@89Q2lvD6(SWz3+InL{WpxZV4yG*nS()>HNArfLFT&F=v3 zrqV<-g;yyg->k;*sbckO3T-6h9U)K%H+|X=%1om%SL%(F%ieBWr297D<>j@1qj8aM z^AIH$F-ZE3jFE8*5EVf1IZFVQlNHX>s54XXEr(pY|G+Zsm}0L5prZ7v?M1{UzQ@b! zcE6EKGl=!SrKK4kJ(r<=7~-P~NYT*K7(utG5J`{#JGgUsGF(@za!|zz_qig}OdRwY zFZ?Ws|nihBnLjZs*3nk>j8^lcQRecTNhGT)W@|h|#e> z?gBh6b1dUT&xkDw%C`k_t@HfkYVLMN%~apmd~`%FJIs}VPdb-DFDZUYvC`r10xfd6 zi!FwPYUbYqQ4Pce9Zu%AZUcrk)TL8kRY=zUBKUs%n7J9V_xDO#>4R~bJ%>xHw< zPb&1J6XWN3dE?D@P^v#_Zy|1fv5@Z$pogM@pwBNz3B*~Y0q?4@nFB-#8w+c(D_S4( z7)bUNYk5^oaSBRjh!NKj%o9w0>UJJifourZ%22*&5cp!}U_JiEf z&q$EzEe!JBwV0}QNK<8BA1~X2&Z796H(r5(_(4fYWP7y4rjY_Jm4y-gd-;HB_Em&v8Z>-7G} z-@FiG0l>()NV|dHd&0~to!l1@wqMmgZe9nP{Fh6DmlYWq86L8MxSPCXHoJ7xKO$z) z#m<=If0L7;{X@6YxG$kQ_fzUwc=F@V9T`*9LI-J90Q$s$B&iM3K{a>Fn-eziJ z0ydPM_I8`XkfkpwL$d)FmF`5%Fcf;~r^mbu>`Tku5Z1zW+Wb@t`e@O>U1_ zu&!~UsT|jTCGog`-Iud9B+D|PbC@5t>_ypHXt+cJB4$H1IG=lI)A_pi4KAYBB|@|T z%Cq5D>Lo^@UdXjJXCxJ%YtAnfrE=o)5MTEz1?5*g{SGg!cC_C=mc1KOy4dfxq8-JK zSCTU4B-l7^H$_@CzWVG#h#kp({3M9OE$(g!k*IKhyh2+{m?azChlUroN>##Iiqxsq zEc6=4F~nb8&-*DVZH+&a{a{1C2TL6I)4BjyKOiJr50H@(hWs7$^C;Zh+^V`6lpYmm zI!R@Lf0{Kl-2>{sbGDI1CB?;TF2dkegwa|^B9b3fG-xs%u05)HpD#r?g6FmdYb zJvMa9659G%24j)cvS29*H`~?<9m1M12j_|kZ7$4yrOG(vb@jQ3YRqAzutEKepK((g zc1{T^T8*58t#Q$-4bBM0rU_E`ZhSN2jU**|51!#CJO)~_`>g>Svn*=oLHo0;tsqm$ zPXBEaQTMXMtLOCLITj*0jSM0@rsd-%YTKiL$sF?%?jdn*o<#BYU#S0J#mQtazP+Ou zCxhW`_HhlhZxw0d7i5hm=!bH z_h^BvAo`%PtDs`1LM_;!)z7{-Rxv&|kiWqzP0DaEIZ3j<_$grDB)&Utk?B8SK)LaT%(d)9zMi)UgykG z!r)**ke}r;{Al&k?hB+0t2XgUF?*|3shCH1*GQ$-i!-v4VnwMR#>tH69b_zM7oql_ z$n2rS0Oz{vIqzmLVbyVPP7s8HLPq445V2xV1Gj*OMXWzW^+ zq32^$`ZR0144bApJ}#T3pIl6q&+ih6&M%&*Vml0}i!?p<$y^5W5r?y7Z@IqqMBvDs zeRZhO=l^E&9?X1`RnW$Qp7v5i5Pas_>tqFPfl{rr1JZ|!fPkEg4Dc;zz4S*$sN`}` zQyW5m3@QoOQ)WRQw^(HZN(Cp#YRYMlGiV^}U@xXrelaTuhpG zzQvzJ@}w|({AIT zk~=iO1sg3?Hok9UWPZbSa0=H4$xf-botBmIoDhqkUF>uUqk_S^st&LA*JH9~dMy?{ z8@8Zd;=QKc`;42O<=5|2(4QoSI-)E$$dTj!alN}dneQV*!vv`c*t|p2yS=q_2^^rv zupU2tjEA>4HwP6~PORwW);dlgS9iBjg%oVi$VPiV|iOxs}_DCRyX3c|a54as< zYgAA{ueR4I#MNQby8^TQ6-y}}GiTE50H;yUe2cLP`j6eabM)sbfhrRHN+E_}PnB-T znihgwMt~!otnaAo)nXqcl>;YaZ%7~{Wo3gKG?#VQ7Aza!W-~5PNxKEki*1)WTT>B- z+l8-543=VkGxpH;yG-a(UsL~L^niwig#}tK);zIZ&^nM;P~aglLUKPbh_Hf?O?$X% z$e3N9a`JqGyyIdPqT<#|_S-fvZVGJ_d5m>#H&{W7_xE;pLw@!Q)apS8%6O=pOAJ;I zqC4sFXYtqy1!Sy##@R|liTscC1kzWcFz%d5kJr1Pn&hb?zZzpz_cr=5yt}g_ZHD=0 zMHs=ApP4Cgtb7Q203rb&UMo*m%X0GfFGP8Jnn#G(;gJ!8bE}O^9XK}Q3-*!dgO&az zSa;w)y$|n+=>yAJ;1_`I7#s}oY)cqkatv?hM?_BZ)K+L7-L#cz$4Lh(@xYkE)kH5>0SHl6%Nl zIP=c6eadO#3o6o+JA0nQZ&9};|wlnPC0CKE^Usza@ixebUn*QeWWFuO?D= z^_(<|U@s~ZE%86uwXaM0nK@?%k3{)n@n>FUpgIZe74}wB&Yx2BPDZ%WP+z}h?;Z71 zyu}FKau@yKzVmFzW!sdt`Q=ELqgsfU7f!n2tkq;ls{fOhDKz@F``wSeAj4chH&x(d zj)t?5t@SGh#rbRHHwQHtbyVn#K4{XQ9Q)j{R>ea}T)l?aSI8cADRk;^KEKRkGSA^U z=wg{{9mF@H@4=9y9uSFo6--O^hnl*8Oic!ZhCM;KO_4aaZ8_@WHOLItW987F7f7QO z>fmhORvnBz$m+9|Ky@dkxA;Xb?{*RIZb+|qUm%`qqc@ygcG#3vaLM~Md7Na-L3J{h(W$bL46`iv7iFGAeT=14$b zf6-s?bhPJUC(w-xpXupbxI-0&0C85+F_ZVr=1ZW6dH zALx~A0@cjk`pP_*L?0xD4_}9NS3B=!d86C|Xbd7_ka~q>>Jkf0kCy_P;Q69b&~~pT z^;GEiZYM#r5P55He_57+eudYYzkVV@&F00Cns@JUggRGJWmCy>(}yPe|L(4IYR=5c zz%Y`nCs(2#Bl5RvAyhI$eOw;vHHE`A6wT@6%r@w^C0l%i#{{aT^?a z_hadnJR30Ms0`N^?&;1%!_fWuVDh$=$CMW%B*OKEqC(3nbi$UBegkUT}UlohOj3)#;WIIQ!_9q+>wjJjOCE2dqFacMJ>R|iF{!|7+!1oo!rW; zC_P&ZVGhBUoX@ZF!yc;h-3e?fa&?#d;#jM=2m0Qh6gw2(Fra%m0kigJz^!awiKFx|M-dbQJa3Qdij~YZl{xK;b%LT=(^D z^>wlv@E*kf%1E!SJi?y*>R5>FS68VvV#Yt?N_gwPMqNlp5s3dirTuRQ*hd(*)~v7K zxKCXrC@gnutwti%cizlQ|BO2s;{dH@GZ1%Z72uEJ}^e>p>Rr!kdaNF zZRfLl#uw+?*^4T`jUeuvSCGg@o?Okkf~Y~WLKYep1>pYz6(eR_d;9AA-9N0J@$YKg z{_LKkzZB;FQH6tZC!U!)!(K73owXp^-}p7BY7cH{9^E7%t?AN<+~WDzSD(q8;g=#( z6Byb$MY>rniSIer&^gT+iXW?*PK<CKy{t{v^IUFD zb!F}-1;UbYQxROq|FmWLOcqw`OGFDNr7Cu!ir;6pN9I}wOjeU`T1UZcY@oMvbM5Vd zs?>I7O6ec@)_XpxbRv)a^=t#0bR$o)*steG#PK3cI;lxy7F$RdXAW zVsqEO;WpZ>svS4|36saBSd!Cy3t{#de&OGHo?*db0B`(BYyfzJ4wAx=5OMjw?$Q?- zfvTawA<|}pin*8u2MxDKKn;Dwit_3TPrL_7Q!qb2g0`$0R@XjsxOa_!e zkth}|#lec=cMr2BwLo*oY^ATLkb?hEuOqG9dRy~yl%`V-&j5FYawWfBdWXmyyUpdnk0h*BW+K^64ok6k{=k7a zc*BBmJlf;R0pthH&`)H$ejnm2=04N6qq1@=v>4OKpxG@S@L*!XRUo1#Be25T8c7Tc z&YFGSai?b2Z@D<=gy@6|GiVl8mYG8fLGyp!=%s$zF2{G6nLPX~V)^%FRQz1z39jk?&5^u3To`s+-_(kGxBGI4WXtLZna0$31CIvK zL0icBqE(Pu4Z*?M%={7ie=*nctseV>M{1E;Q0i-&clQo8kvoZGSAdxleWDS0??><* zSUYg^ZFw5*+#o6qMWb03h(JOy%j0_X7vN$zn(gWU^_om?N2VG5je3cz@^ra2?_I?% zSjRi@_-=MY=ISCI{+nSyk!gC%*WJ5D|I~l3 zKnC1$aJm4^*zaDz3b(QRx*gdl$uM1KaeVQGEQxSL4bA5>vb3tERa}T1qKJylT|!e; z3^NM|Ee*D$!L~Mi(QG!fmh=x4ip+(hEb?$x zn7EKq`rP}Cy}^%%PoH+MPEm2_%E}iPVbdxQp^Zy8()Y<}SjtPtysD6QE_wAIkdK8g zq{0wMCLzDI7Gb-E=M@#QMVI9hl~#!(_tdbxQ$>F1x1|=9orRDi1SwmNq@{lWk2UJl znYlngbq$TJ-5I!I)gON1>B>G@(DXm~-nZ+=>62`&r`Y)=J*COV@6n@_9MXFb@O~w= zb|=yJQiLLFz&*`^emeb;u{#uG3r{6{3kdH?Difx$zP6?^aawtlPcP@tMux>^ z_^RBixgY?)0VZBe9!>MeZRWj?1=t{u zOB_3%K#+HU%Td02-QX0BY7jFPE&F@im_-<)vT&9}VCU~Oj}SaUidLFwE`$%Ia`kIdHx|lqV1Mk00P2&FOlo69rNwnEZ_} zt_di?%ei2&TFq2s_;I8ega9z&eT7r;1FF!0V4AH&u6D$t<(zyTnw+U{Psu%=Z^~L8u-L{f`bLpovhGpTC9dB|xuiWMp~8+EGy9ic&xXHJpio z0r)x39;^+6?=m$6*byl7Zr4%^>WjQz}?{VN~~y3kF5RLi8t@ ztlu8AL_|!|-^UjZ#je`eoQl#pHL3nA5wQ9B+n0R$U~!cVV$3_r+hwfkB6;@7)h|}3u$H!j!#?aEo}T1U!@r-)>XI$6 z6Q*j^y~*lmq4`Ywz;L15($_9jYx0v-yls!GR22>~K)Z9^@%JfTv&d_w^JEeEP7qPz z9P_I@=PaU;KzrRjU?1f z4$^*m=@wm=s~UeO-LA7fvMN5d&!790s;A7Q)M_i0mGHE9{7Aas#J8!SU)B4<-L7Kit&)wr2&FbZZ*P(I@Ccm_-yFXeW$f(Y%Axq!*ufzruZW9u#mLu)WDgpZw4r?L;Hmz{T(Z&@G^TO>F&-b1EuFpD ziN==!&qlXj*Xt^%>dZ=9}m%)}znQC2z~ix1xpHey2Nd6D?Gg1)YqAB!(=VpShCt zd5mKZeOT>Sm3d|r*O8&!axzxs^1(tOGo@bHX9h?9(H$Im{Lc*D4z$*NYsbfS1z;JC zKroa!In_4lq>68t#Pkm?`D0VblCVYNR?w2s$fYdIW_y^{cE{P%9&MK|9Or6#GN`c0 zAGZr^He}M%7tFn_8M~v4W|*Ddp1GRr$>6AFSR}AqO^xo~LH#0$?7C5wq?oRJiJyy9 z=J)4#EdlJ^r6pWyYT7Y!(YrGvwq$k>TBpur!rLe}D3$dpr-h#h%Xu+RmooDb78GWw zw6xgfM@z#mDcg~j#wD~5FU(tX^9^r=}xO9qPp8=HPl^8Pw?6g*OwM zkMXvWs0zI~Fa#$&a{6g47VYRMqU2#Hc>in#wfCbGMCQ};)f9`Sr13CuGcrDFD>LoH zcr7Qvgwac>8u($pf2!~G%fZc!;{s*nV`j^X?LT`P{}ig0?FcO_EjYVgXn7kLzD0B7 zr==BqC5-$v+c|BY^Ft< z?Y?2jo9iAYw(SO{Ch&XLR_G=goL|e{e+aH`fU5Jc+A5-{?K>)Hn&F#b_rpZcRMG+* z?8ntILR9`5;AXaS&~#F@`HzNG8A}y?8sXH#eznEwOyqUxy|*zmS}FH~U>Q2w(1%Db zvZ&x+Q3;&H{~;MaRb#Nzq$>7)YS$WT$nhu|;P{zTNA29-YS5(U0t}~LdH*?7AA8nl zHDS3Lx39L9ng@dkr_Mm)0JaBo;A*;nHxKNCP1uL&JsJ|mB(Ca4bYODEe(Dux(5MBf zz%(?GYswhS*2$npPytEl`Ptb8@T#16!l$5tHC2$EC2}tIw~=%MQ5Q<6D8nR0^b){U@#=d zAA1`iSqVgUsO3=aK1?{FyE+gf8?Y430x_Nm!%!GxI~gZe+wU_*owW`UggL;`jmU(} z9baqwA%bXj_zJ)Ie*isGdZI>gZN}&?Ds?(xW3(AndR8`E=XMD*uTc8~NsnjD4h9aP z^HN|&0%nLnG+&mYy26SW~C`uK&nYJroqIUi__vwHFJD0ndjWl-a63k+ zcQQ>=me>cIu0q{3AME9?g+)aGq||_2Y3kJ%U^f~-XRMx)df?`Ed5hS-z7mHI@CK5L z?ORU^VSv=s$Y}TA;2coom}Q24ze%P|YP#(6PuIm;@v?c-Gh)ozEQOXK|Advduz&(l zX|n%5%q&62iwXrf@0%U+3I6nWAw)w<8%heTDMb}nG#9(!b#RZ>dxyLoMsq!yv}^y~ z2Xi;CJ%0G!h2=1om6H`#aGyq34S6keZ>iF-&3$EkB8_=X7c>cD9Vkeazw!Bli@f2}$>?KW*!e~*`8AIhH`pMtQow)z{k{B$DaNCl*vs-)fBxU#U)vzqE|z0a?>(Le3Wfa? zK!y5i)K{DPf9u`-zd@1z3k+Skxw$uSiOhNsmG}SiXf~4*2|rnWC{ofsPPr^ z0#yUpr|@@8K|voxRd{Txo7WtK9XG!8#j_bn70Ye_IoZ?W<41SD!g5oR zY?g1=D+jkm1hjs+H8v=Iy4shVUzxHU#c4hTy-WZA1k9(ZCBA~nFFfpC%5VS#1f*A( z23#5Xh_Ek+IPl!VYK+-(M%u3u3Evj$y8+ICwi9AY5K1g8D%JO=bd3g~Z&fxp&H#a8HLHTK0?CU^@(DMNQWFUMx z^rwlR0)ZT?@sh!#+NPG&8j2^x47MapDP8=bcn-d7Mt`ZNg|Z zXSh-0ao8^TaF`{9Ifq&AG`T5965Y}60!D+a<#V^t5!ODf*+S=Er-ffpUe*nLjTCg* zp1C|#5}u#qyd(?iXQQF#FjUC7II)6>MGhfu`$H;$HbNa`-zW9n)ONSzKCT~B%?d1TR` zcZB4r!(c%*Bz7HpHxZba-jRg+oBc!sOj_PO{3@vg;or(cV=2(S4q`bWfkWBtd7 zWn4b>dn&*E2wn45KU?Mq+Sn>dW!U(Ru8`CzV;!e|hX;;>zDId69x%TPFFp}JdbEw&0GZRc4r+z>{SN1MHv`jT$BgqPFatc@OSI+x{Q7qYsP z7Hw{??rzsLT#$A&8&4Pf`+CK2a`)Dh+mTJWSOdO>^9LaNySlnE*8U|!d4jmroFf<$9x-Bj zkkHQ4+7=|=u(QF)eAhSNv3lXKf(v`4uD5P$_G@j**JBvTWNzkd7QBlUW0LtV4y^+t z2}fm&Z4_J4d|zhz6S;(6t4}jiyvHM2_lGm+>d{8hb7rd37M&N34*-WUFqV$-_iv)*vhqKls%6qX{J!H>zuYy}vtq+_s!z?{LWdv82`P&o{S< z1=|bO(?iQ>#H|BrI>4;$rAR1;BlH7gE2}WEV@7jZF-Iw}&p<|2R_$AM z|6MXv%<=IZ>nVuxO>fQ4lbBX6zKI-pMi2||?5W#H-oMzitCNk@=XKakIgTaZ+4mGY z(;CQ-9@>EUmy<@4iy7hfTfpCS^Q)d4roG%<3w3i{Sn<5no+lD@x`^{hd|_rwmLQQX zizKj~q@_`&k`Am`OMJdQ)7)KK#jVj~lBn(aNmO38P~OnU+&i)BX?H0dtErtASj~fU zg8w-0=nlO^fUa>UI)*rfl$dn!MjuVAVS)sMzsb^I7lfjVDt+>&WvUA$>U~SyJUJUw zc&dA!DHi#kN(LG`L{BP*T;C>}%zMnHfu5Cv33}TrY0Au!Q=N}*i3uWRbi^jua8fNjFdwL&gUw-s+pf+2#b+|pR)n0PpamhF2_`*Y$zS}=i)|Y zQn4tg$G**P+-xn3cjYwrxW=i+?Rt_kn*2jrNXF*(MRNu{ZfOCBUjWveu;IlNmg1T5 zwP#1!s0+e_6}Q}YWQBDW&E3c;s`hEf8MR#Ad$xN zq7i%5CCTe5zj3js5ih{2m8Bpod|KtOdwFry-lB1B}(O5SG&9*7#dMVciaOT zw|S7+7Gwb=F8h6Aj5Rtmw_z%E7j%o@@7GWb!ad-CY2aEtFG%hqkZnyi16{zksR>D$ znT8-L0E@w0VF>?VVT;~djwTk?cqs!HZ&*#qKP+7)E!1?(eF_zcmWJ>Bb|xa)f&y|@ z{6yF`9z7;vpRkpD{o5+*v|v5gY$RiEq%CWxgG_stWTUe=uvJ2##3XZWy9yL2GAEk5 z8}|uZgM*ZzRYqpXL~iM!E}Ww})|;b*tz4+*;q|N4JnU>ilA;bX$m3DakbLsh!hi<7 zqOfI)#)ZSl@C%Pn)0gylPuPewOii3+ZEE)~)#C~lk@-U&=4jpGR5&jKs=OKb&b)at z>R;8V+S#^gi8s!F@@;Ex-UnmHy`v*H5R$iUsORkS zhgR&pQX+vEy~p*N)d7Jjn(K;51WWbw4|gR|Nd%mgI-SNMl-A!m+S>F?pKX3J?V-Rk zlH@rR$j0Dxlbb3H)6}1i&EIHZku7q2bvnJUReRcfjCsxeTKvJvbnV$m;3R)1bY*_g z`xzP;Sspzjo?lyYIxZX|R9iZG|LaHk>*@aPJ8P2i)fz7C6xu{x8qhsBYB8~N3;|(= z10-*mU!P{Yg{$mGKc5$M0DmIS+bzLYQ;9gA6;~fmIZK>w&&JqFz}Qj(uKd<3uU{@qpTAxan2S0)9KQT0PI%?9sciu>Q?nL&4BU^-b=>R0jrc{5PuqpbF)PgWo_buqb+l4eI#pck6 zzh(V=S#43GnJ=c7a4mth`E3B*X!OhqU2h4o>kLWk{awg+hmJ`Rm7#grsF2K00r)ee zf(`t=cXh6l;tkW6ODnVH4165#t(V2i{AwNCy$0T${&8cBajH8R7^KucWGq-H*+`u< z>eJR&u!-tuZ?_a73=aFW?WQ-sH99x;3o+w*d}pql|0Czv-tm67b^LCy5vs#R$#4!qID?vz+v7v~ zS?{NZThoG;^S^*SOG^(!6%#NwjxEWz1M}aNwsiHpHq!EkgKa;98lT4VRjEckS&u>r zB0AP2dbG+b;Bt={gQ!TFPj}p|0+e z{07rXk`d4z=g;~7#4)q#OI$R5xIaE2d@;L0o zg9;z)#q)vw0CFLjpmntnrutS=+!;oD)=%>##2?1-+I1H{lM~L$$_nwg{2O>#4zGX- z;DN{)1df_xT?6AjipDZ}rHL^7mJF7!*Kch@~VU0v#1Fb$NZ?Yr?LW{RGSoBJ5zzQ4bJ7D3l>FTQx@@UXB{%yVv zXbJ7KLV&r-@!?2;_7Qi4Unb7}5r8h8`nN$~MiMyEaG5Qg?$lHK`$=9l8~=l|w+yH% z+Pa311u9aCQUcQ5B@Ifaba!`m3L+rg-QC?F-Q8W%-5~w0qc@)WeD`~Qyyu7DKAe4a zti9HpV~#QA=De-fJLVL5Jvi{Fbp~POR|H_ORTUKUr_L9Mw1CGSbaJjME!7G?pb^mhH$FZdYv0Vx=fx(; zdU9E4KVa!bMC_0)k)?kg*xADDgB`*5zRAjb#t1 z+AplHt^(8GKU1u%vIrQ_4#a@c4|uhJoeM;$C3$(hsh%Zm^+Wb(Jc<-XWY2){2Fv9n#_IdlMh4qNJ;eU!@j)ywBDQ=0}l@$;mM7ayV8mu690_9Z4uD7?2h0F&9=;K~>LE@Nf5crqW}4SRn(Nr7bRerF9nxSUlBqui zuAPMv_$W9>fHmI$nd2RhTifIuf>a#L&}x#Bnj@S*0QT+Mw}<<~2RppvCf93vVyD{3 z^tnZdh0j5$l#Q^_Vp+4N4is513KzkrQ&&bCJ($_&JnU5i$AO>>sB2FU*#S=c8|($l zRBYq+fc_4gD**URYyNM*SY+(!@_t?0yv84RFTSF4ySbM#_8D@lb(V?H(&`M<5AFTs ze-Bavg6=Os1sJ}9G>9?hz(DI@y;cL{ zO})QHLC=Ihkk7$5^cU-WnbC>Q^Mmn*1f_e)T90ax9C z5u5`w8O_b@X*ee4y6OQfzz+;a089$>;J>f08%K%>CB{;LJlTxh8;c>fo2oEQCG=?pwM2LEtx0?S8> z3=%Nlf(KJosu9hH58U|^{QUeEVD0#o3#b$8b$?3=mg%(iv@b0^e1*j>p?Ve! zz;Zy{WDS)yH8lkq0zk_EsNW{9J!I<(xQyifBF3GZA3F*N3CQqL>Uvj%8bVUIQM17O z-_Y?doEIbkQ0w)7;k=YipxtwUdJ`ujT;|Zm!X#gQf>2Fy6k*Cx?e_I46X8MOToL69$K3fa<)~^3 zYV%k@(5>ir&r7#23f(>wIX4&7AN%0GupX4=qtuTzzdu@9}K<%KQjPh$cHJ{wrjg$)D@!Y`Qh`eOi3 zWwk4q4Ot%;1{^j${5-D$lKB83;H(fFTzx_6DhT{q)`u24 z2mHVA{C2i4G0%(uND7dJyX*7QMpcJc{Lsb=2VAo#+7^kJr50@SQ z+XrB%08NGRdA1=@|A1issxJOOuqmFA+O~`I|KtLsafE?^70A3eJwLw(G#T+g`|;|J zjsn1)oB#NPQHcOBhR}Y5?ex^EW%&=S2YQ~KV7pe?GY)S$4g)8LIn(M|^8!0h00BRP zfvIz8Z*Jz^G*VU0{fSAtEx^2#_Wr@3x!E3{sFtQiq=pg9@>_uX!|{5qGX-@QC~m=$ z!U&=$Fm`GQQj(LGK*LCC)w;DXgAJg}1XVo^RB^W=4!J1Dp*ya+t0)|Jv=~Q;_E~M+ zq8|lN6G3ZZ7ckQfl={E&IM4;!cfel+jsf$I|5e?NP?}YW=k~ND2O(J zmCBwC1Dv{gq1gRNdB5`kDvr?oukzyJ$vT1pA#U#G+pE(jj~@dA4KDyZ0Xq@(yB&ET z*@t#HR{i*+sma~MWDg2M0=Au>pswyZERM_aEG`%#A~s$|GY3{ZqS9 z>vOt;vd$;F?(oaD-zk&f9Cy_VNX*&8T>CF#;RY*C*_U5{yAABZs9r&(F5uwR8yrf3 zwdd(bKOC3tB-rMkh&b2VCE&u_fAPW%#0L0#RC4Bt+!0gbL%rqUG1*lTijtDD5Kviv-W>P`1p(89dw@`b3XlpNV7ghn zkdXIUA@ybz8Z)rsBY<*;38tiTKgxUOT>z%Gzm%{tBJG3+P}eRfvEp%P>3+?Ydc@SL3dpgLbDyu^l@hq)J-GvA*_HsV?c3mG_aND9IXVF9bXKiIAN+}Qo6=w;msLX?n@2J)Kv4Apbi<8}TVL2w02eiA2 zSUm}N6&xu+rSBx0BwJ$Da$$`qmbAXj4sniQ(zU$Gq6Ps174i zGHw|~x@*yC1ymT+P~dB_2~7WF^`5=`i=3Z-u23csIML2r>5f+t@L%mC_=6 zHc%|m4~%khbNvDX_j#`YVBf*c!5mYcuaMm*JY&d0$V`-JA)pcxQ&{=R+z`3^ZRVIA z>8ZKi8yj#X`y_bdhk6xlP1sVi-#5`(`A`WH82#lXQbQTXnQz5LV>gF2sda~=B8w&2 z&cdzq1oQ)D3e+h&Uca?v1@uK@a`aUNFrETaDYGjA=6WK_|0tqa9ivcCe7_O8)z}Ww zAcsCF9P>`44D7t(JzY=N>(a~`tCAmx?Y@>WzW{ARY(Sv#M|uM-cLI|`Vtn%WGGE`a zTPyI)ydx(lR;`zlTv@|W0u?UnHhAU=YtPRus+a?7Bcpg@$5Zmgkv>!^q}PDH&VD{F z4bq%%bUdIp!72D19*u@uk*JQ^HqZC0(Xx4MZ?reDm=*a!zUg`*zqrb-LeLphmjQ3w z9*+Wyus2|Yg<%%w3X;yJ2EQrKjO4NO*RA50#;#W^R>qD;P9`snw{K4rALHF5n^4sh z=CkQ6(psoc=oyHdHf)i7&5qBW-oWnCNx)J$M)6ZgAhM2(Sq*=qL(LcgTy8d*UfD{u zyg+SUPfv+~$@b_u@y^@x9WQG=V}|w7>seLZNph%08!1)B1&8SSTOI%I5*9ce9^UrS zl6J)EEaG>wdB=KxeIMHKpS_Oyy&@M%Pu2I5V+bF(+JXR$9ju`;NJK;)rkZ9m}^bvY^hC#OCLe}gERpZ#Jy}ypn8n+B zaty%q0_g?Zi!e>=swn6yi<7~GH|J#hVth{<&x*o%_mOsdWl2bi_1uHP2TEc)GW0VC zP$ht-guo&QxE1pe&_cZj3e*~B30p8RFo4C>=Ina(mhc8DA*kyD%fYD%wFq)RZrL(p z=VUgJNeYdiH|(lVfVB$+Y9Ind`c{d6S5&hx_0sRCao%uhhoKPGI=mSI(x)kyJtfVN zH$Jka97L~)OyBwb@QqOyM|<~rd?Gj1C$G3zz1C`-ytpAODaj28GXnX`fu0H=u!90} zs%|r}6RB7*_D&y|3sGbhsNpM@&x9q{5#HdHna(lkIuAW+>-4m{6j@nNrv-g^U@xsLU2bS>zN65h(><89TR@_>E}d36D5vn1A(6_-H-&QRt(wRbL_*urPp+Km83j z1pqiie9@2yfK8h*G2p;eMD|RR4)_c9>{~hQZ-IgZVAAN5^}xKsv|b7mTUVaz-@RzG z^cai9;c%)*B!2=5eD~l%{fPA*@ahw?H({**r@o5UR#MOGc5k>9sNBRO7G#y8ln*Gv zYJ`LzDf}!aaR8k6z;!ztsDeeIcnr|5funUNz5Ux=8&G-w7hk$zZ+Ak|H2a=xUSm3; zFw>fschFRx3Izq3RH636T3aEdMEBP--$*>GA|qZW!)=<(mI{;#hRO;C*|p|Jt7*fY zk=x;soz`>JI3a!q!tXf*z##kd$MJ3@1iwFf+9YUi+0M@Rl=zyv%!oMlpXn)z-_QAhc6X(0e_F)j- zL!+J8(ze%J^Q>Cr_B7uXfN>SbW_8zp1ESCkurOX=2vPQ`m%GWev&uAJYguwwh1VS# z0z81YI1F90qwd|lqJ;A5n*Ad&xdTpjz*`4ihu~j);FkiH5wMuLadSiLlVRueLFqKB zsVE-E1OR2nf{+OUa!){)Qh11Ru4i z6^prF*0`OXUSfPxE|D5v04xtm;Q{hZG8KiFaZukZsK465NeLMBl{ql7K&CTqCzebO zvhE_RBZUimrkAJEDgC2;Qdhv|>HfK8mof!~ib0V6;g2XQJicE#g{eFgJmZU$ryHWDh#)6yW! z0VZzH7gV5z%FPF~AD=%z$@~D)>S{j5X|H2hC`HU;?7v85hK&bQE)~r@vz!G$nC;O8 zxaEzLUHR|!;&ZH3&zY=M^D?@Mrs~O{IXe3fRUHpC(I!r&N!t-lHQR@-B7cw@KoGV6 z(l!1Y1x<}RJmh9Ze^<|m6@Jt3wblM~_vksb^+p}`U6rF;@Wc3{66NT-hExA%5S2n@ zIj^{HD*2{+`b9VW?H3O(7+%z3C610X+u0xT=4#w)0q^5-gp0kyxVVgP^TaplGtSwb zvAb2`^U+x*I)+zjA8!|9)b!@67sls_a)aeFMe@p-WlD;_Rr=gfj|S1RowsFFPM+vMIAEB<ZiO^k?y&1vzW+I)`j0~gmmZIwD4!}9CNCstyN#{hI`}gGPUF66EH}C!*(XW zuufjbk)HbtCjX>(8fn{|9;f$x5v&{`*EpP5PP?=2B1%hxOrPVLkSf1Y-22U;8%pU2 zNjiJ?&d?K^H1x;raw1tYDt^eFZ!^hj9)VPL;dL3G}$?M_0{>e85 zr{e)HrQE-ox}_;$D|A#`Y3E#ch18p=9_S~#M#YDeh_7$vuS%%ao0k#cPVIT;xuA`^ zy_mk{DLF1T#HmCq+~H<&e6Ai!`(KaRM;YsUZ1*WpnlxFJ-v%rLI!mEn`^=AR4@6p=VG4@GSZ^%x6^DM93m~dWBoVfGOG#l?DULZUfhaIlffwG z>8?&uo=20uX0hiDI-%43W#fMsTG%Hs@GS_zgEBEcW?}%>(`NfTLA=wfIQa`jJW0>4tO>ix?;S+A&pM|Yh6DKK_EH{?(q>J)} zCML5go0l29wyGANuTCK(RpwI3YcefZy0UX)+SgjO_q9y98Oz_;384OzDYOf^zXhZpR}8mmL#VlY%8y@E#_OKoYDf$H{vdq?rGwNHjSL^K7Qfo7p?`(d_7biX$NI+2xJAJ6OuP!xJ(f`?u z!&W3ka7<*lH=P%)BTDbgR`35SI-?E z-y6;Fm>2PnCDU37kz>prnW=gYQsI$^%s=O~d({MKd2ghjWr#&z&jDcwU7Yut=JlIg7n0>rRM$1>6MY%u#l-~|e!2W0 zZ_Hyh7hE3S-Un*b%uLUj?ix1y=Rq!_J+lTwM85un0?nUYJWf!SbGbLvXUWUePBf)9 zgcpu1ao=E1oe9)f5bfwBkq+jqhrmVGm5y=G zzJYx5qw&S64<92It27gO?_E^T;H+o9kt9BOlti+u5`(;(l{?05t-!i_))GCoEkz=; zASI@zB8FwQo}nwwnvWS@pEYZ(ZTN;zP@DYm`r}Q zEle(MdG01FiE=$TEq1UFgZcv%QYEnjWs)0FxhKb#r+l{o#7(|}Nk_TvHA4KoR@g$R z3Ua3_t=gQJb)08C5b_$ksPn(RK05Ib)rb^sOw> zQOb>QwZjKmUL`4t{L<=KdHKbXicQ|;naYIr3tHqe(6F5LR{>e{g<+8i)gfH_lZZTE z78Eyu&S2-H%(jcxGQ`(F`y&rkD;za?q0QLrv8=mhqU|kjcPi$gEK}J*&!o9AQOi{O z%-V!zYt5(Wf<)WS8B*D)x_EcK@Jqs7Kx3jWq}X9lB{k&2-w^XKNlcEcP_oZ1?Co}| ze*!7^p%#NlK#Tl7TU1K5CN$U)f2OxOVBLoG&>A_^&em4~DXn+Pc}9@pL$|sh*%FqX z{;0N)hz~tIp6N@gI4wLhYtk!*qXkC#3?lk6H9Wfs+SP!7dh$ZteNrx%2*Na8ns=z* z0-V`nH1-Yig)?Mjd*yfNl80iGaMM1GpuU0Z3~XHn6t^|-z+t*e}~1*Uw?8E2)ghMJxCp`(K;jAQTnmuD(vNTSkl z<*7cU`MBT;4}Fp4A5E&8NE1$w?d!~Y+&h@j6;>p}%h69FwxHW>f?yXp!?|lju84s9 zE3@Xq^RF??VWua)w6M)qi8L(a&-m5}DmyeybmqfN=O-zm6J2d-{0$rTqGmqs25jX8 zsfq;7L&%+(oYl)L8?%Lt@~0++29n?z5;i<5-Q3E!@Zx`t(NRD3-(Ng?0&H@b3PsvE z-3+gH_XoeP)>zffAE;=E{aS5RDE++K${K5rx*KU!ibRY$C_19U{4P_Ttk(0YH(|ml zSX^RzvAn1-5By+jiJv^Mv;X)$?O>hZeV1yjm9DOCrdaG_?qW1FwCOTk|9h(A+ZOdp zU?z4}364B5*9mUfDA#QYH%IBzSa4q-1AGC&=TR?y)tS~tsU8i1>SSBfOjnZ--xF6G z>-}9jSdSu~KQd=v;Q)TpXworH!!`YNjetN3zmI^(7reN+S`Gg2h#@IBnhevhH5Q$d z`K5ITsDla)P3pV;JzdUqv#j}>L#!TDB}P-oR0j0yVqE;YXj)Q3*bC?AEiXzvplKmt@&R4BGADTnl zPUd%P%wLtnDznb%l$yw^j_zxX)IU{{;p?#m%KADAioq0c7-AUY*hS=!oe!#AL57E% zR^i{A)DP@FEZ4<6cY4#_^{oDI*{o+Js;3F7Ny+?I*biO9?2G7yqMd4XlppJ~)h&IF zrYO?lijIxUs7Y3t4Qktz>#~Ps-TYdQ7DSq--eIE3=S85eypB^(H>zWq{feA@8`Z=h(?iBP&DI>}8Gm4pnNjFCi#kyKV`#k(QG6ECOxR)S!q7o)y%ktvzgwGBmtWMEyjBJ@ni&uwCi(o-8nWizqW4U721ABFMp#yd{td#rhj zX79or`S<+$w#vOElT8K|Ta4)GI5!JvZ)0eFZ)v?B+!9o1a_*}SW*MV5z9bibY}u)@ zU}Tu^-b^HRt$$(t!pPRsIW}mJh-nw0butKAT8`^S1UfV>DkPnh<}s|B7esPQNW2p; z2q0=yE1ts4pNrSiSrFyd!XwH2lFe&pu_F2bRFmAL-Y{0frSmMf&^7UsJA@;KQsF{08WiVF*G zHsAIB^k6T;IF8QXp~V;T>I-poVsnW&={yMvY5K^SM8&p{AjS7?h?SqPd{ie=H9`3c z{Tlx*fjtepnMY+coR=2e3aCN0)bcY?&)fqmpqv0fq+ocEBIs7#aY(TF>EQ`TGPWn|jw&(~NTDCAxl;+W zS<{HbrC1wQ;qG+*+GHFgIw%RR)NgJ8H;F(_rc+ayrPx^?&TBeOCK9 ze_I1%5rWx7U3pkg-f3lw!RW(^Q`Fywu_S{zwRUdi>!@6gBZUQn`uL{&vwX5BWsTQ1 zJ)MC)CWwkul3T79lo#FcWOmjjoZHCnMfkw!KW*W;iqR8o^Oc@S4u;d#q>4w% zwEoci=2-$9z19MQErtPth&~qEZ;bwrk(&sH?drnMCS>NE9@_^*PFAF-P%yY+%?t-2 zMu0;IB=SZ=mgJOsK-UmaAdZP#7DL6XI6=tL8P}+fH*ON6iDMcl!jOAs(m)w=IH#kR;>oaf4 zQ&TpCsC7lshu|lTYlN+3dI!Aed-?TT=`Je<*M8BF=uLd;B>Fol+B?G9-lqIgu`Ako zS(A5T1jf=t!DF3vMOmtSY5f_MMO0r{!OIDD@_{(gU*E;ejr9{Xk67zIme+>4f5SPB z9K9jFBl6m3>QL+7>po_yyS2g`EAO;l` z-PJDVyhl9W*1jY!V6WO4tBMMJA-n3lo>?=J1Y+Z@h6W!N^E@a!u@?`nwm4*99V<2C z!}C@JT2;qif@607^NF0{ONhg%5}p=Hg6cUGvUX{KoS47k6r~5PWi+ zS>U@YLEj`mHZqhXf(+-wz`#_Q%%nAmu)7~kp}~K;+#T1yGipS7&H5EiKP=Tr0_Icj z*5TyZ>MS$*nKa>#fY#Sb^fbXwB2j)Xj^n>p8i1dG#{Wlf1%cc>PY1Po z@bYl`Hu9kY9d&Tp>Fcyoud6JW@kHF3)LXl5GG?KFaIFv>2vbQNme&xGeHE0;>1}6k zx0^}bccd`87vLA>@D!J?7OAQaXFy60825#YNJL zU_ct>dsRRmfpA~W3~xj7bnzD{&ReK&K;T8bey%6vc0{F1SeRkUztUu0LQFBpXoK+ z^EWP9@ajI$Lw7Ce+kgqIjePNHfIvi-XhdhjI~dLr={%G=Z%#Iu2xsV8*0<15 zyLaVbI=XRur=jn@$N!THa6!y3`beFV__7pC$tS@UCo9saQWRnN^62xvO(^BJ*Bo-R z175{!i5dAwoJH6fit#<$m;*H|3WbJ+oW@atWDk{*Y^P7l6@KUC<)b!ahDZJOC{9S~ zd5vs|?*@DII7`w{f~2i2)>J1>k}3K!P}2z-<7y1-M2@6TuL(OgsvSDavSisAJYgv& z;FoMGvSs>p?xgM5+m+!;PLFlX;Ma|ekuF3!B4yyo+)siT%Iw%RChmxjBLObiI>#wd zCMimvQE`0o^B(%ICkkJf->g0-%$D?N`SrN`w9~JYv28r;>VBJD2VbxGyMsczK z`QnaHUu~ik`tO>MGwO^1aiUQ~m>Hk)*&K0xFuARq#6Z1MArOxIKDi$ly?yBfV77hk z;LB^)et6{l6qoGq3zZe`#iZEIXhc=kT4+dv(F6%TXHo1)&l@4vlZed9cr7iuL?L0r zjj`>r@QBisYCDP?#qI8{XSTS>_|PkbY?!Z?ncJbY<3(&~_BBkXrC2>msV(PIS*WEw zKhk?gSKJ+~tnE^jWN$4N?)KW;y;n!PRAhrQfgY}OTSt%7SvZmk7qU7@iKMQ+G;1R@ zB!*Y1WLWTrL_Ik@4(Zc#oQ9r_8ozk;J~;sLl?*jBnh!7862=@t=O%awo+A4zcNoy7-AHbkym($isGW3+~x{R2hu%8Z3eS&u-T9UZ~*`c`hE?%w$vrkbMg#R;?A(v1&=KIC=u01e&o5 zwdDW69?oHD0+U|#6K}ulD60#E3l;+S#NxG3{J^@9p`05Y@6K|vQ2ojDnT0E6tbTiK zA|o*>PW6caA(*&+EFH@Gc!seZHdq7Bs`N3W8Dp&8+6#ba%8I6n_PvB`;n*S|Qjknk zq|QhGCr;D5ZL_$Em#6d)8{9#5>hMbCV|WBMYJcAt9Y2FHD|x8DUypZy%=@&4i)wmhbakBefOX8vV!+q-Hz!r5FXK?jIDy#_o$)aF5n==GZHuzdA z&sIzuloSAM)1>Ivomf!t zDWB`6z<0xw5q6{n1_Z-ARH&|3|nd^}wJ zyM{*2WP5abG8;_pRUANp*1r#J_Bkth;Owjj$QQL4ge<$j# zbfGiWQ=H(i^XeGrBgsv@vjFTwQV5AWTP8D!9x|ZpDM*3lKLogtEdjJYKDa>ljvw&H zqY*3!$oyWzdMY2sTA0UenJ#5Jyy;`*?th3T%Rp;W+&H^sBOh>3^8_2`HrTSRQDzrr z3gbCZ2cHL^I_5K`>`&7(_makJjwZTZ!=xE$^3)yaXoO0H%*rtj;%}?R6x_n(oVU$5 z>*3S>sIstuTBt!5visbmW$tl5b5cFEvRi^%6sfV$`$5z-CM_g?J_+*nc}(P8Qvy6H z_P1o~r$H0Xt4TqKC3a?b5V*S9^M!N+UN4jW!%qV@mZM`5Lv<|kJBwA0a&WU^mfslv zW(DOk$d2x+>J_;{21Z)Nv+Am!?_Rr zTsK2H0O&B=&OSi6iSK}QX+;e(B;`>f9mW~R_KK%=u_V~K#t}?EY(}<|7)@6W@;9iN zQ%GFJRG8~#eNHAqX8EMeKuW0eQtaqEzz0u=z>-30zP2j#&|1@=zi5VBi_GKdoYm^$IDYL-Dq9m*U&7K$7zgiEqNRwNV|sB~@gv;=B}lkv*)r(>fW56QIK>ic1naferf4cd z3_T+Y$9{TPh=(1RK1al_g@zXnSD=j<@dPqy}N-($T+B3t=271jaTQpWpcnGZDt`yd)^Wb60x3)Wr^T; zglB=|1eoadAVmqS#*TB0!|pp*B#C;$n-JeS2$5Jz`<1Zpe45w`0nBk@t248vMhRMY zk%-UOVOr)`4Ey+A>OVCMq`^U~opwgo!WlG5cS2`bs44~o9)n>ZA*MXIYCLq6xLE=e z;7Z*05QQ5jU50L{A~p*{b$%E29noMBL?dvqhVugSBJ``Qt_+$#%M6=?JQ=}?cY@Yi z0_icWGNNLcS9DUzYAZUA#g|0}zP32(_0zy0>@&mJxNxhwD`a`v%4Mrlv+Vu;eG*D0 z>p?{}!;X$Hd<^>K5bmx zE)z0Emwk>SQD+s}z2?bfxB|*vJXK{@*Fi4x$DI2YQUeC`h+#F;TI@F@n$= z&cm7F`=o0XKH%X&r+VhcqLKYO?~BawPXj(yOJAi21S>mMfClRr<@J(@2=5_IvO_^I zq?qUuZ0YaZF9_Jev%ZYZ27goNC5i82%Xr%Lqqj{?OG|2zc3U`>i<#uES&(im#BGT8 z2Vk#K{SH4l3<|j&qwNnA(|T5XryIK?|5hOnY1^_+FiKGLsWwU^lZYW%)2x&szN>Y~ zXoVz*3}!a1DSr@9g$)UeLOPue>~^SLllQ>N&r;@?iCm**)NNlUPE9eDgbVySSPSGibGU-KyUD(UvkOK#*72Y}@Qg zKLw-S5@4!1H;=4>>H%k`w^vx;(_@bVTF^pXx9{DZ>aQ!Wrh^3lhvxi`DcgKPhT+f6 z%vZaAiw?;_defq@D;4f8g$ms|Nz?yd=V|DBe}jDws%CF`hhTMWR%Kh)aSN4?(wkzO zc1OpYxlB-I!lZ6G&w$8bp1R%?^BoLTLar-f;+a)z+~rsgCgXY9f!rw($3hZgWPzCM zowROxS==D+$ilYf|YcYi0!FZw#aQ{`l@77x!m(dxMsZe&l% z7~!`5UDGh2t1Ex$v(bO%1KgkM_L%wBap=}oKYiE?TxN!UyKXb#y!5XrK6=Is#@Wc7 zGAtPGE1%>Hw zHHQy7I$ecgi;1568r!S z%6AS?+u6J?6l^NkjzbM}C{l9IU|g;u8oo%0W}KvYbPdQB*{nTZz(9~1)8UjB^L>{e@d2^1q5@^6*u&GO>G%%xiWTKt`2 z{RRVi49TGrdD^t#wFN5~`;gwe7DK#f_u}c$w?X5Odkhv&P z+k<(0VnJM&C)%Z9Td+oMf}}poC-G%z1<45a)VNC@gDPHIetN`^ynQofLy%~RSM<-K zMu9`cJ_YH?)l8kG`F?9L>s9*z z_GcqzDt5WXl0J>-h^#4+LCO$!UdJrD<#HCicL3Ms3_lMzCu`q&gy*PQcz!*;uh>Wz zJ=1=H_CHFrZ|Lh-e>;pu`tuT@-U>Nxb{66HowfM;rA)cBRGcpl$mlnVmVcq>lPCpA zoFSpVKcNpfcSr4>%E()b37qC}WkfSyTU?qULcOC&W%~HO{3U+?gGn{L(8|-1+x%C` zBhNn&3pExpo&1~Lu!YOKO}^aO*ZSvPg-D#!jkSDD+qp)&8S6DifWf23AyY zcU-jjXoVJKb1_E=-5xK;bbmh?HBg&Zv}K-L$s$Ih|94sh@}k|>rNQcP_fGZYD<6wg zsH)jepA0k-cmPD1uTom}u4w|dkxq(v-C)IOLx~AulI}mE9A4yamyld}b zv!RE|Mho5kra=mQG(fSk0sZIC>+OHfiT=L%pTOFmZU0%l{JWFkU>c~8I(Ys6rC5L7 z{9icTpKbqrcT6^{f8PCo2ijk6*?_E4{htT?U%xBe%-zi5A27zCSUi(0>pKV}>!idT0Sov>huT)j|w- z<%?0yZ|=}uK8Dy7{v%r-11{kZZm&8ghApdFR?vJ95>pFQB5cs#APhPA0{_4yhlx}< zFjSP3cEHg?G&X?RFA)J800d)vBE1E4yTWObgM|!N%E`&y?=RgK{(H9$Knzs9=wu8y zuh7{62p+jRKvY$#zz&p(z#_~?ybJnO@H;!qqDUja=jGul`JwjD=fUOzMpce~-da=7 z|59--T(tH=@X?+)@w8I_N)l+J(yO&_aoER{c2hv51DrpAdzf?f6X>ye$W{ucw`i5t zu%h$C1BIL>IJC=o>mk4cYiek4*_|vD7kFA|3H774n=^&F)Pvrx=JPcp+ZN!{5RG%- zkgQ+@Y%zdaIMCN$0+DD3pz$tjTcj`^)a@35KUM>cl5};Sedd9FotxLlhw0O7t~&rp zrHn~(8_$Eo0X{bSHh)~KhSAaBJxv{&O$KTJXPuT1I{1dG!O(Mtc75DNN{Jj!0h=JM zaQ_nyhHe2h_nkch3kNGX#>OS>U2f$YWduE|8ohk|hl+ve*_Lwmx>TpKJgoB>U2Oj( zsfK$*HdZWXQxOP|VY`@F7+xH0f!B&62FK{}arfwGm4+=+o3j8c+uOkYa(AbT>8k#m zJzb{^yY`po?C&_v`>U#hf$hBhP!fm0;HyRx)(9y!=KuAmk3jXLg1s#pz8E!?C# zG^|o_dFWrqAH?EC#qm#ism6*2kCN%GU)6Zq&+Pm2_$1dn@unvUjZfkk_1#+kF#Xc3 zu+5dJ;Z&VKqdw9f+k9@+?WkIwq5I{cO!`AqU*C=F493vn#0A2_xwE}wP9~d;k_uUR z?&G~=w3kQE`u%qfy?g*euSmKjw<5fNIB;8&sV!)~i* zDSQnqZ02A`t6D}H+x8X;1n6q^NBhzlwM#NZnzUsU2nR;m%IA_2nF913ip!Gev~+L` zO5L2sbX~E`7A_#xQRD|j}61D$Lk!~3k9 z%pX5Gnb<}6ZtWSTcdduY>spy^za~A^?t)_!K)_<**GIsS5fHBwV5z1Y_{lCoK=~O9 zKCB`X#=eK;b>f{z4%5t4czFx{4aaF0&NQ17DZSE%0cj^jMI>a(fusatyts$uy>gyx zpPXR}0^SN4#_I@UgSjWyBpidL8U5(*g7gQ2I4KS@{5S2Rqmo?hoE{D{97R^2Oz7;6 zOGwPt?LSKMmyJhz!uuq8$?ZxX)o<(95Z&g_^AalDKSK(8;&>#b?x$3$=kv$>I7m&Pr7UF$5G#o1M-OwPO{aZPz!fI%V+xx7e``AovM8q+dHW4PcF2o@0 z%e~~JL@f53*{$)z9qbahcfNU4KixM@`VhJJ4|Buq*s#%Ook+Evzf`x?7FI%i@IZzy zRb7Bm=%6u|Qo%HO+8uIcp}cYjx)s~xzl$Dha5-X>l4GR{B2$%`G;_LuT|bZY9wi(l zmQA-{w>CVRk<5$D9@E!ky#J0L>d8{St2hu(&3>i-B8?`q=pL7&HFXFEyiUNlTe#oW zE-xQ?9m)`^M0&kfenQmNqA_7Ui{kq-3sxyVIq6i*1d$K83Y@<}Mut91pHJ9VI+Aq< z6P-53bM<|JawmK5uBBE#Nz#q)`_@UOsepLmEE(4Cq|EfAtq;(nKl8Blo9?0(b8lRj zfljmggRKGJE|;3dnxW0uNDzow)T*pofpw(-VSmV{hzG$ZU4g=m6+E2=U%5cXLPq6} zLA&uo#*m!06${@qh4N!)qW?28&6K9W-X`R(FCo9s8Sl>x_28UxCFfJ-KULz`M~u3# zC4hcE1X9MxjzRIB>!VY{7!Q&pGv6p3ki9lJp6X?%D?B^wxG0$MflL)2`e%ZjxaMd`4o(7Nf1a`+HxK!^1At`Ky1qC$K+6>SC zh}1Ee&Gu|ih6|hzYB!-itkCsj_;Iz_!oT6Vg`TbNC1AA!CSQ-Av@))OcC#};NeY%W zpUm$ZM$nZHX!k*T>g4;g>_1EJ093YkI>#};_K3T(p`m~Nr|=N`BG?G*)Ns(y6hOOi z@E2E>w&u{-d(E4}WhUvQnLV;Zyv_F3hDarf42VC&{?jLP;#+R2 z>|$?bEG^{kM^pA+33!1Qa7w9)=>;&NG793~cM4$I{zfEc6;Q7h-ZNlVYQu`8APY>F zVq#))>gW3V`z743$7FqBO`y(gK!1nra?}!t$qZGn0>_an(8p*ldcla3x#n=qs-wph zp4dvyNZl~}CKxc^?kI}7Gp{~X>Ue0FY>vk!VX#5>0`>mT)6)Z|N6*gg0(3;c z4er>FILSagDF2q64o5851o#i0ZftJ&sH?7vfF7QZ6m{URs&RR+(Db{5+U?k1eQ&XG z?!v=jQ^uj|_BP0349nFR>o`$bUoCT!2{<%@PlvWn$rT3ISnu?oBoLP>UNCSNQtvWy zh>TqG)8-Y~As|tSBA8;wHE4u6qoTimpAZuRZOeXjx(PgGf#t^p)XNL>5e26M2D*uK z7M2pJ)33AJ{FUN;g1X_@Tj*0bnRn>2$p-ETFq;TD!$bo82AzO;4p4+%0J-D5)=Rcz zmxM*vYd)vdKw^7wH3N71eRGaEF0xzx>r3yR9@!n7g9NA5<&I6JLylAvg~kGS)9I3x zF0Ol8JQH z8cgPT=*ACj021N>nBLJ;X3@Plj@yy?rU<1vIxcE=^yZidxeFHhbH?+B$YKO1jU4C* zD#5@84qc!D4K}Nd;J!2!B_$T{RjyyUI{@B~MwEex5}e|P_b091>OVz-xfHjxCN8=H zm|r9Bv(?`2(3o<4%s$&<5TP?B_7G1xIj9YxK?QWVZad-JMyiXrAg-Rdd=M=6^ zmFnF;&6Ys&lAM$#W)u-NeyM=zi<&RpSyUn`DC7u&kMKH=^6cFC@i!7HkZK2oSd&QtMVZ?g| zIzvZZ`7VPNp->_1_i)DQ-t?Az*iB%v6CG`z9JOg;xYSeIwG^rEBcv2$p>?RITlJAb zea#w{nv+;;nTu1D*G7|$ma9S8ux_F4)Gx?A68b0%JA(25(djJ5&1nT_$K_=pZhh&3oN?26y+J4 zRk;W5v%Qo6BlYs>egbRy1x2P17r%V@r^K5)t%&mrucR?4RNI@D^cy3%9QZc5BRaz` zmOv`vzR9+9b${6;!7GM98P{oolHNQ1kefw$Hj!Dz!2My?jYbr@Q%9Y+HA%Akq)RMW zCd1QG2PR?4j|@7FDI>0hdRxGlw0}R*!OTME8o$!h-p$m<38sOyVd1ozcV}%mzio#T zN36-gQxM~sFs4L;oRZ? z)Xi4@a_iby91oAbj6EZ{Wpw_q!?gNSL>y?wP54B8%I1`{wS-N?6z6M}6pO zK1N3h-R^CV7FFkyZ)9vuRc#cBsRQxJS&?$SNzLBk3D z7nmv3Td)jT(*O&mtOsNLB+Ley*cy_7BemcAd>BP>26D*?3s-BabD53q&X)BjmE$rB zs^2VDq7O$`1%mUI)S!2WJN#lFTh8s5q?#Zx{L`2_S}$>oHt!`h8J|eD?AEpk#J&A^ zDON8qExFtXcrT&tJ;b*P^fCru*w{UtxHw#$I!6&!u6PKYENjV&^zfcHNw9$)O(e9wYYN zm*s0dzwsjXJ6H@#lS&}QZE4}zkmyJNiw=<3-o`gw#lwUV>dKYGZ@~EZiZ_rH|K=#Q z*8#nklA|OJ!td#-8yarEZ>F&`J7^tRpSBfKQBzYl@f^y%!&Qk9Re6v7(^ue6!CC3^ z&1Y=hj94D+i>_C!hP~<%L-|c}mRg71XF>9rFS@#xuyT_QSdNv0SjFYC-R;|Bq*U1_uo~wL0*-~TtgbJ7{mQvJ{Qdm8UO$QV9k?WFJ9-TBVjFi{q@(+ojYgr z4v7N?4m|qkqZXed?GF1+E{6*vL#sIn)WLzq{QSJsI_5(C<5(NMN0ARBIx_MY*mX?-!YU;16bbg@m&O7fk`L229P_Sk|xb^E$+Mbf$xsK z`OR+*{k8k*x^?SryKmS3Sa*wldrjPU_u!tP|Gj?whT8}3`r?aEKVP}l=}-Xx00000 zpjm%)*H+hGd;k8w@q7N)v0V?}ngP-5`UF$t- zl$kqs?wwOl?7g1}QIwZJK_ozgKp-emlA_8G2y_Jm^5QrA3vdKkj*<}kL9mt7a)3Zy zbv^%sil=||d=So2N=^)J7a9*6@zv|JqcsSG6e1-mr1~XoKiyqZRqg5;caTLF77g1e z8h3+07)`xDmB7-+H$jFE^&33rCnfn&?t$AeGnyZ;Fj-wRFLPemiqy_`%(3@meo<&W&_!)Ydw$mBu!1* zWf8C_oD|x7^BJ~|PEJrlXwd&X@Hdi@l4O%uI_BowPB;2+aBv{s#a8f$k$!HuIN?tw zM6KMPZS;Mcnwm;TNEjZLm)i>`h4=mMQHYo>KMmUWI3d5=xz6X-&GmH=Jii)NmDaB# zBxftAg)LV{?P?JbC(>UjU(eU)B<1K{w`&=3j=%G3Rsf|yu$jm0>`=k4Ek z9&rU?K`|p!Q_85G@tTbP-H%i<^XK{r0ceDT5fKpw`}^CxpLExQuKF#BEwowx_2||= z^0~btj_TPu<18C66qb<*6VDmlafJ2Dvd{zFo{*B08>(OSy1PFc8Nb-$QOMx4`22ai zM*81v3NsTDa6Wzdgo%j>K9HA}XW;~k>G8fjCnu+}va+Zsq|d}sn+V*hc64d!5sb_` zm%~3!+5`mJI-F&w{|08aAScI9z95Q#Q+hlUS-PgC1`ql7_Gr%D?(W>&oNc3%NrMoV zr%lTM!(!ztwV_+_TMl-=I`5;Wv-73N@)QrblEA{RV8HLLj>hpBQ5YE+rDaCP$F0OZ zU_1{W>>DB?A}T7XlqussA52Wnw?`>zU}IMOF1c}2A`*xFE#zNOJ=LuE?q#nxVD$d*t+f_jt6SvDsNI4Gjs6!;han9dw7`5)u-=^l5!=o}Qi$>F-?Z z9UM|qQzwh5{|%mW=hm5BIjJw{sYrEd&ePaDvpkFT^(mf>RY4Zy|!V5)@roLxnWTd9fKTi)Y?{NA%4J|DMNJZQ2 z?o8zeF=j$mWB;I_o^X72Hg&MVIy>7sH8PNv>!u&lLMcPF<3@0|GY8|nSV&dtJL zAx0A9r-_n>h%Rgo>MtqTV`FMlYS}nA!lRE2k~ zd|Oy@cy9Gg17>R|*(Jcl#yP~lWB5=3y%;k3;MLbH!zdeqU z@$$|A8^h)~n8cdtbz5Z5mZ$B93@f6bP*GEJK3i>Ok`1QF7Y2#<-Mi}Q>b%97I~fhZ z8w3NS7gt2C(e=L;J3S>bUKG=(AiWdor(D#ce>#|-DZa0qIeKwPjX3>ECk!Xno^}31`490%-Wi|xX>yIziqopjM-2;~ zv)_cDv2by{Z+8k_zk-8=hK0EtEj?^ydbi#DO|7zVSj?yQ#QFgP6SMvC)@sv4x)wH( z*?<@aC%>X1Gb4kkX)qjYO0a8&Qn_SgWJ2QFpB{A@TY|6xOg9&E-hO4BF=()fGEl=A zXNUw4rWHZTkG@fmhOkcL0=^a z_Xd|*VF=U;k7#H1);HKUWI{;$vpyZrCS=2~gchBp;g650j@YCw1|h4>fyR-DG_Au(%^D_m5S$)lHz$0LM~K15rFZ8F7|DrKz~IyY9AWG zfX0=f#5Y70b`q@&Hm-I$W^lB&z)kSxkA2-|4YMD~4bq-xB8n!|&zxpF_C?`A zT%%0U21b8LwM1;h#MZODsODEJ{Yrxz)=kI6gd?+I%gulzGxdoUx4P_&Fv%O$czCLV zSxn^wxt2ba^@9Vsf-r^ktJBliylP(CjHeXSZf1edRB@Te-r&~_&Wg-_^Q(ZSCshm`4#GDcP_b(~>8K``bWojhm!}9R9$8;H! zF=d^scIQx>ESPl&qgcnXnob(Ml+d8IEzpW>5QQtwV5w!3jysW<7g}7ao0^*Lh(CSu z_I?^39tM82+H9n*zMek5cCr|G)-U(x8@5~47gIDm+@ucZk*;j&@nV{w`F~B6h@w}S zF-c2hE3a*F(DIGCR?QGPsd9w#ff=r)#U(n#rc;q#)%c_l`ZXwYbN9E?9YK`+7@?7= z3eHEP4taFfT%0y)>r0tITrh*~qP0~jsu~K{m`6eI-EVpek&8vN+{@IOG zMTmd#E1*41+Y7#L{|$ZM;M|x9$tD~2rz6*Q3l#n80dT^GV_w0w2D{5SKFVICsbQjB zC6mR+f?9M^^uhNS8*eHK!{LQpYQB~_xPmG9^jbHsn?!O$UN4a*PQxMU%~&gDgvuK$ z{MM#46j7YGz|7WGespfSbga67&j}jhsPp>5lZV0PsLC!?)L477ZV82VxLJP>>X##< zqHsCk>pw3Kf2_u)Z<*u9+c zz`&2PdqrUALiUdWE;I8cA0o!Gg((%a^TUnFdu_!=G#QNi-!BR#CfxbB=j1-_wwldp zv)DjSMsi|s6{kxlpF17CL>VJhUBvR&FB5_!v75vcDNGUZ5c7yn^$bov3c`h(-yB8`wpSFM0uQ3}n($0;;S z$e@!GEs<40C*rD=RWqmKMQ$xYtjJ&Jr5Ij?;TD{FWa(FB+*{6Q`KQ3lJqXJgdcWXa zp7a2YJj1=e+nRh=Geue%iM$@V5q-wus{?<3=qUto;HOm#y&AJf{5w;m>V(mffoVY#`_;|>uB9&`3?~s>OAWTG!k_E^9@tV3uJ`8((iS78`Q3@NjYjj6 znT}8~px=Z^l5uc2?$1=_3N?7%IcsQ4|M{bMgIMMTtzQjx*BbT55g&snOuGaav*BL! z&$McBKiQM96lTm|1Rj;4)SdmqB0CLesS*3)vIu=ip@$Cmh@(EUYL84v_IxaDt4mN9 zK~kVdk(8gr6r-TCNVvUqBaV{D85Py|q7=DQCS*K4my(i_%Jn%kUjPK+%q_>hp|e-w z&d@jSuKHBDYlV~izK)42@(+;zAbJUAAzg+i5$0{AG-~UuM_bwqypGcCp2Xn0M78pL ziI+~RO}#Q`?Qm>Jhr5R3PyJGbanEj<9CuR&E%*<+@N>rT4$6-q9) zhD(hMnzi28-SDB=48ULfr1y%Dn`-3ieV1s;&b1&uo24PWfS?(lm388wuY~V75~o9f z(?+Fr42EHI_fZQ$7uOX5$CrkIVyN?Hqq4W@g$67+Br5&Im}P}6dd6W zcd!fYGH5iOwxIh%$(rj54Kjb`KA;()L&b&-(T%k#7QT@Xa*H7q==2g>K^ml|JJYN! zzRU63cQ4w-s6DmZk1^S$*sGLzix#kI-)LlH^!gPw71iI{i#-Gc1UWf5aAdyj6UDxW z<%@cxc#KPm*y33Fp$4YYs#u1UVtzs+G`3{fckh}XSz(|c!(G&Bn$8j`ov}ly=|rWB zS!-VCXc<2*Xh(t9p7?e{!?pr@l5l&BDrwh3s+5Alm14{#co;iQS5+LrtrFJC(z0By z`4YGa2A#U_4ny6RFG}YOejUeGSBYtN;l$`s+Q(*?p)$EJuO{nKVA_F&Ts*K~?g3w(A?=|EK1_Kwi;qdEt`YqpcNtxMr zAv+kl>A0KNrC0rPI{F_mnUR}Jzpc7s6c@{|vc6HpC=ZFLEM_p0$Y|O_Fzt@k(&@TT zdNF!Q{Da@DeJG>>OEP3H`R1_6$@h|Q& ztMBjc|B_l|FNGe%~ut zJxz@Hjs~8WGd+%Y^EbLx9B%m*#4F5+6Yg&B{OPjU5D>Hakr}P~R@})?(du%4HXs0N z54z=Q$sJ_51|BD34i0C#lO-4D=ci|9AcO-^YJqGrx!Wd)?7Ebl59adH-u5bzu@u=K zb_<~`zFV5umtlpgJyAOIq2OzE6+cBS>K*|=8L*53PU)-%G8B@-S z);V0d|X zrJeTja&yhCtOPu7&xg2{C&tHLLU3^tL8N^Ldid(qt8Aj|B-&t7H16q~76$ooZDgny zzcjSsGZk&rB%p;vX_=TJ!^0PvoUCkZf8;xXq!mBfk>jktsz!Xy=kN=8R$F7W{)UI1 z12trO&oKz+w2`x=s&v&5QP_Ldy~-5?-n8Q~($aA(FbKKYehQiIVSKhS+-*Aj5lpf{ zMqK%!he@{q4UdNNReo))8jo6Zme1a0TDY3JqE}~P1mOqzuobcw5J6{uv1J|^uw|8W zb;I*PvL1}wWO?dps>Q+^EHqt5WOi&Y|EkYQHo`Id92y6@f}x~@s@>a3bRv90QYls` zM_exR{bG0b=E-``v&Zp+LxmW2_`;NzPmFI?=r#&7@cBI>Ou-*5tgWBJ_E_CZC?< zEU`dTUQFD%w%-|tEcxlvl&%T+Wonm&l+}a zlC<|v;M-xbqeh-^gmIdYx`p;BeP8{KET2+WKjYvOU&tSTnEf40u3vHs>oDYVJKr7= zcp4lSz-)&72XYMw7mTN-q{zz3a+LM11P*Lo&LZx@v!Sg{ZgBD6Hg9$uafDfD=N#0Y z%R+pXr+O>skBaXjG#=?4m7rtD{m@-K{o=NFb|Uatv-9)CTY1Tz;i+sU;Hl5g&%?vR z%{fk-R%7(R_tj;pZ){BNGco?j=u0Ys4CCP!S5sHFmcsh{3ASh>wq$^3fllr2cJA;a z=9HDm6^xH!iK3Yl`Wm7BJEv=O@?WdL0WW)fM4GQ;{)Z0=MU%m4`#qoa@9_&=D<&HZ z6=)#H7}>f?75?vy;E$tYW7(tTj=bp|hKl+=IijLGZe`k%0u+-3))p44XEy-*0^#4- zlsGQ=zf1MnW|fqLX)4tI1Jy#)yOqeZIjTx<#-0?pRsezra4*oZi>|8W|L+#CqW~2f z9mVId&n+*v(a}lWrhQFGUQC)}Nk;H>j%#LgRH$Iwl}}&5%8#_y@T+(ZD;_ctQ94=s zE^p=t^^0tP8g$FAiU^{a^nNfjJU-u18RfLFiwiD<=_}5&!$XGk>-auup5j(^cH==D zH9a~?W^(6QWdW z&ll$wEEw;0F75*T!Ff}X@DWS^7?qK&l0xhVag|M-kh;1$fKP!gCJw0SaYrzO*+RH&4b@!nI~ReD--+NmgPT$p
    vW`@F=4_)rGFTtg?NpQ9g`UBf23ktLldU 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 literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-debug-breakpoint.png b/docs/get-started/media/vs-2026/calculator-debug-breakpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..445e461a8cb4b2d5f86a537464c066dab1c45909 GIT binary patch literal 22831 zcmZ^L1z1$yxAqu_D2PK#DhMb@_fW>rrF0|R-Hjqj4w6G7-5}i|HFS4(4GlxbcgElE zf4_Ub=YHpTbY@QOz4qE`y?edyA>gB|7|tWoM<5UgM?xGb4+7mY0fFwkeRvnxBTCRg z0(@ZEh^yIyKu=oH|L#OFJ|P2kVme63h+uBrCn01fGn%VB1c9D|B%tpUT@tou-BlG- zrg(0qi&F*1q4zO9z0_?LU48vsT;nYPwx01uo;(IbvK%A5xFADZj-4VKW@1?`dSCru zUwI@|Afqw275}ROVXCK~LHfPoM_=EE@d}zCQ!Xy`>0hjGzZJjhB@7=oJehJYD#tsa z<}u$XcS_FA&Yqf5M>iStdqb|T5d8&ojQx=O4)EzicprxT-Sp_L82a<`>K%Lji{s6s zrhB-@JJY9f-tTR&ei`><$6kRyeRvRR?&;V`A0+iYV;L?K|T~$63c77@ioQzI>N$@c`8Mu&m=JtLv@pEuW*=8Wb{QehSI5d+I=iTohUxiXt^0e+X)_0y+dV zCRzAqgG82XHfy5NT1QL?>lgjODPeNnZP#QuNJY^;_jAWWabF<@$S3hxuyFhnayD_C z&*52@G09$*PEJfsgtPU|h+)s*Qu8~Y&&K(Hy;#@RdXp2iFlVVBW*ERd~*7|8lGlon64W=Ls+6n+>q=FYPmY;yR|h z(Vz89thTK^cS~!fOHeKq<)xZZ(`wmSg7fc<1&#+k0EUQ`%%Bm2m7!)>8qTO+z3Slg zTBOb0((PeI&KP5&$WUBF?0_g`9 zw3(psh-UrzvTwPs#`0?cW zDEW5f=zMi`m5`7SdVGMO@;>V2sdd^ZsVRiX1aTd%)e}zFadWTx(7jVrOy5>4NYPlp zTzUDmQU{ABS3SHWVsft9!?hC5$HCB}WH%R!_q)_RcZkbF$a|?ZfQ^l<@#?U#*VNV; z8yH|y2?+=bC#!Yxb8&IKdS!wfD>z!~4GIdHZt$%2Be&SJUGc-f<+I)P2@njE;?z%* z3g)kZh|0pD;a-?g0euYD`PA@8CUUtCdMc)NW6!>i5)f9Wzwz!2_ed*|i6YC99gZ|( zFGg(X3O`Q;*RMnn3lJ}UP%PIGb}JEZC@57qsd(!w4xdaLUo?&!?fE*Dz)GF^o4hxL z<1x0>Fj*q^=ogdRfxeaeUc`k-{rRc($LGU>g9fQgl%B_f&U3EorTs#et8g8Eak>a5 zodyAZ{^?BVvSR&@AD^a*f;KSj-n$o&osyDLR(3onMsA8+=E*YpL@;TIep z9H>=TO#bo3oSvF;+MY;}0erQnwwAwJx~#021~7_EA+1z&zD8x=p?Tg|p_cpc#$dJm zI^H0eb)D_m{$grsDscSi;Pzx`k#>DtM1(#cCRs8gZ>#zJuz){unactG8-a669d*AK zUeG&DacY_|Gg2>|y9@>-N*|}ZnR2D(hHAw#aw%Pi#4w*qPKt?0rrFETo~R10VnRm_ zI;nV_^cJP5v~h1&IuXtUVejsD+?Npj!7dmXLO8Gbn54kC?ehb8EVEo24`GP?`gf7u zmvleN3u2hpEsB#2ZtC+C8gfh$_{V{3?b%4^NWB^|1y3gQ^@@1~1+VuPTcjmzY-~hD z+o`;-ia-Ck%gskp<+L-E$nQ+)vT$cPtMo32Hy93wXJuurj$3HfyG8Y{;}52V3Qf(- z%nS`30v-YW1Vrs3t=h~>hj$Uc3{X@a)qF;!XP0gNqQKBCws7KSGL}u8{sf>`M2=n8cj zll;f>)k<9smVm%Q$f*4ElZ1qXjmr(`$G&^ zUR!nlsV_&aSs@8FOxvP?9T-J0Smb*!&#OQ0m7(bt7IZS7TjP1`>kh6x;@l6VBc-4p zzP7kPADrHelip5o>%+~4PgXnG(`;fd_jz3I#MXgZ9b&OuXt1BCcqj~t6PyGtF64#o zy^_cEK$04==k2j@Iz<-YSI0Fh4hby3=Z`PlbYqX1CN;Ev+|zLCzkXj-Bu3i6caz3o zsjl&Q$9i*f)BR*y*SjWq*E6K%l;4S(5d>1%Kk66e;o-Rj!sWYn?;iQ-ZH?qCE-nHS z7wgHB-TB7G_bFALmldnz7Ua1?Kk?mdftgxT;s=E~WV{iK@~?>M)hy3_6J40Vt2^;H zae6izqsZ=_SN=>6`9NyBY=BDVvoHi|NPO*T_30P6s2s zfIE$P#29NbgSAXg-171*9!8|{jT`8Nj_P~8tq%rL1k8Ze-rmgI-rt{;2N58g7Z;Du zU760ET0A(jNLy|{ipio=dmi<>T9>c9oDT>U(3;}q({35VjL-7GWogm()6?&Nd}sM2 zf(l47Qj-z}sHCRE%*Q(xeVItp>w1pLS7+G@BN4;KagqjNWII~*ZjRR%C>$J|MMpbfQ#n+qi1P5|yuN%`pF>MD~6iSm!3Z5M@+p96-xU1jkuPWbRI4)Rqr zDywx4(3IycG_ z3=E7}AW#5EA~Ab>ceYme`dDFkk`)*qAS*w?!Qm1z{1YTLZW%iePyzyxuN5OGYwg$j zLdbZ~t{fg7zP7fu+6@;zow2{ZJl&gbyak$O;n4-0P*!BQZ42Z~OYdu>PI*!75DTy6 z6lVlFk8wWZx(hmfI5n_eyVr1eJS-Pr0wgG?1MpuwkF~lW#lKL4o&~-2kCpBwHyyl% z1@M!|(B1X97wfSfoF^3W0JI=vynJ^7bXt7pn#$gZuxWIW`i{>W4sf-`>F%t#DL-;s z-3MuA%6~cF>zknU802I1tqJT?kcD8WI~f)+9>1$Op3#j!VDtb+0)cA40MtQV)C!Uk zU5!0GwM8^UKx&y6YGfHIusuA^B7Y~`xlXom(gM!(+jJ!7kniWs;06_Lp2pwS+iZ3e z@1^rtUoUOf_(-|`DvGz!WVeQ{(BR@Yp|9B1H@s2ZF)uC6RUv$U_i4Vta~6nAGcy2) zTlUYrQ^gI;jEGI3)wPbuF*M$ssn$OPab{d1Bt#Y^L{du42Ypkx?o9ZNX12<^9loBG zk?KAWI9u?wva&*71*ATe!24BH$H;L2QhIq`9UxH1aU7?V*LNoF7hp9pzv0Y~T1FF!wsTh`d_umdeIUTn~#N4IwZwXURFku?(XJhHB(j0fp&qn zq1?abTb9Mzv8j$kG zcXM-dQNu;omDiso!Rht0r{GV^(UWY91az?22JM4G4310bVw6j1wZV_AjF^I7GWUZ{ zEs|X(9Ar;&_-1~ff1O@y{{E#{nqs9Cmp68p(RSF(;ixLc&ljG-JZCjP*`y3~%gTCfX28`oG?>Vj7Z+bdN%lT~eQk5E=r`@adnh>?ACwi*+%PZj-QtXn zL91ybsP}b+$Dh~Atq+xd=P`l!zqT>bQ6^EOg^`Os5n*pbmi)jB;{Un?p?i&@9BS{D}DlGqcrdSCr@F$!Mm5kx@GW!Cx#XdY=t{bDz@hA|uu)!@lYOB>{!rY&py# zr@K&UHMjo#34{*{`hJJSS%QPI$f8X=7)G^B$on{6f!tn+Rb&>3-P%ehk=;5dFL6-4 z6gv77yb!G6TxflLa?gByQ!5sk<*XULHtlz!a&e3b6bvFR8W+~ia>e_%&s9}bABm(z zLk!?e=+P)}%l+xEEU0vL6VY83kS{xSqO`%N_5A6>`*+`sg$=+_jp3ZWHg~_gZQ61I z)&P>k4@+PlfmzVgIXupBZ}sk%&nMA~lT$j6g<4qN7{Ti+e##n|-z0v`a{*RAm^h^A zmZ`C^v2sG^EAiG1o7--ihrj@SG;_b??3MgX5CsnNL)!Osm#IE~+B5e)?&Hrkzyxnu zFZWw_AYYPfX$*Cij!{zzrQ%xY?HcYgBbRQ^n(CzJ^Ow=(u%KRni~Inz=|AIp0u# z7GMS2$;Nq^Tjp5*p+>2jj~wc~759cTFF)PBgIn_UF#E@D*ss{fx3}~dia_tq*$f@` zzEbw^f@;LK!y2FP|H-sqQpDA40dkwXfH`*zz;s%bM49cyn;1s=U2ZfMG&j8?_nd{mq9}Rw(!9Ebn>@7x)9nT|$Z@juQ zF;QlPJww-GWsQ|mr&KR`9ZhnyIIYxF%v|ayHTyqf%3kS}On*d`$E(B=)A2u-QP}32 zAt5!idjp9tiJ1#%FI4J=sX1a27g3t9${eTspgcsO98uYyQY=`n9ov$8coNR%qmc^5 zdIv-iJCo6P0sb&ntq6$zqYDb|ffiKyn1Q^CxAn5ygG(D_g%XX0>>YE?$vdXs_1f0O z-j_P=Cg~X&npsy8w@M$g@#^<4iux9Rsd*eSH5c}(rSbNSfk=-^{#v~3@3Ym9=FZ=X zUk?JtQo+^48is12++{0q(;Q}r;!0<)1WS#IR~(I5$`>Exj|tcLgJTHHP;pt*`pbzQs|*ds`!&*_MDdZb~X#pvHA%WW(4h zS*w(tnLvd*K4qy6Uw&B~B<(yB;Rdrk?gJ0jFtJ$A7sh-D5rdK32xh5*BUbY!fZyrb zT(ZSWM>K&Je$>+=zddqnl`}3w4UDZ-dicU=RX^5z=9W`%TP8xO(<#TkDOQ+_%cguw z|LTN1laTEz;Ul939?@T#MFXZvkB@73dbE;5a2gm19#K(4!f9X8I*l9W3;~$U*c&Pc zpUw^|Vg97WgR0(gd~xmRNqUmz`#`nE^|Bow7kA9_eegjEe^ThBQv(RyIW9TP{sn4a z{RWg0)R!j?#&x`buLXYimrxOr(Xlbobffg7$^BKRujyR7q@?6ayns+v`2=@_0FcgKt0_!UVE|^1xD3nE-irhMfBx***R(s5#z+44JUqRzFW+ zl4Wjwt>)3?4y=|8^Vr=bxF6~*mx5TPfn8;_S|NGWM{NlKr&wn-k>r+;6Dnu-&UY%6 z5`<|~TFqA3rmgA&YZz@+)rly1P!psru+APd`VN>)s+>H&Acf| z1={%qwmPflb#gvw=Dws(%3>Wb){?p_6IKBH&`G|>i4|c=v_Je zO7hTa(>UYT|K15`>DG8ra!bPz$SnjY@gS{IU&nrld76*ZGr!n$n~p^i0@0-=#SA1E z@D7c7N^=1#US|nUTJ~`@d8W!G3pwx34E_&nqorGcF;{JmDMQdi=Xr4q6drZ~+J9r4TBh4QyjTPV}ikny@_RNYb&|csk^3&)G4yt4Iu=(Z0Wmai z#(=c=E<##=zC+8QEhi%y?KkpH-(U+{TaT1w8J^?y3r22k=K{69x0Sa0iPTpnY@O+C zqYS&gNbLjw_?9*p!6RPi7T{dS>qsbghOz*GQ zHo5~`EJr(UbjUkEoR9z~n4s2Bo@iyBy?-zi%KpLMKYQ~z$F4Ldr(t)zkVepJju+qj zvmM2@y1qivmIJZ_dLb2YT?TNqA{^iWRjex2)m8O1s=0yDty15hlCfnZx@k&t#cF$j z5*2THpHp(ctpZ&(#bOl&OoyC%kXKCU0Ti!a+8@G3D(CWO(2tx?R%bJ|PP{p|dHw9X z-=XCaT|ib@W%xp)68V(nm7=GnXTm&9r$0?o+}ivg_M$?8b;abWEtgUabfKfWnQ|(+t^c4?oFSQvYCeEEZx%xEh zd!~h}eKeh9ufXxAOl`5X)iEOK{-&nSxqs@><$6K2|Ey+5f=4*=9^Ffnf1&SUCms6N zbvoR-o&YCR1s<;`FdiYyc(nAhN!>X1CN|!hh3&i>0nqxpqv==B8%?JO-A5+kim% z&u#9bKb4>I{$&^#WvdZku3o`^mUSH{8GJDj=z~?1KQLkcV?woFCeG6_Ss82p^?esr zF5oPm$F}<)xrEiF*-dTBC529 zGDqaKdi53Jq3^k28`cz-4a^ty0d1$`a{^(Tg)L0r@0^n*e$bbKB}& zF|RUck3!dP7~o1EpCF*o<$VnEP`v=CG{bqt(v}mQHsIeG(q?vR=x%{{qkQj)&GJ7( z#i(UrqIYQeb>k=j76Hz(`shw8A#E!{EH7Q~!gh4==pOBIp@hz*94&azr*)k&%jmK0 z%$^23X{sw>G((R+tly{gR1_om<_2Z$wI|;R+Dt5?(qZLGI$vl4QokZex(Tt?$T<A%x( z9AOL1;NO*o!cWzDTFrfkwHO6;e{4-C7KS2x-KJH%8l~@*X&es6Eu!#oY@?CfW1b|V zRzB*OQ?W+f1>Rp6S?S#ewu%1}-B1&HbLbN2K~DoG7=&rVy1wF`)`cW=pr zJ=zE^7)}Z7bv~b6y)_qvK{=bIgF2=>zbQLpYEpc7fW6}}=_?vc3mHB?Lf_kv*X@o? zp__oZccN&0zz8}dd`jA@wxt;i7%Nhz@({9jsd96FyJR0qM#bZaZ z5?2TR@p-{!@#jhI*I*#D2WwIrI$(XBhKPOT1 zcP@97GFNo44J%MaN;+1SFAlM>u`@|$km!_ve;g1Pm|IZ5CEhD8SenZ^@S2dFPMvXR zHeXxS64B!-kR+c|rvLr3@84OW5I^(?jE?yZ^nY{1+*EI-piHm3+U!Gkl7|_(gh!X8 zgwwY~K}I3YR3hk43XF!^!*Nv*`7Y0&PFIO9-$onJy9n;X7O+)Yz`)$cZ2tH+V*dWx z1pEYnRNtX1RsSPA&RGK~t3J5Z*9IXuIj@}v zmR`6-hJ219gTi4eR?l)yKmdK410}BQpn~^)+iSH&1t-dKDXY2SqgDeFZXuF`^KTeO zRAo|kGC89NJJs(-JcR)EIQDq*gnT+Ls5~^KP`KzNj4D(L+8Rm}A+4@iz$U=h_8%>P zorR;O)U2_2OO`=>X=8i|&ogewU3`crzl{eu(B~SzzX^-Ez}bmnyX`j0FWE1_-Ei&? z#1h>bq^S4h)|Btmy``Ce4S9*VpyYCsCl9Gap-?fEk|2sSBNd}yI_lJlouWc5Yt-@) zfTAYtYQ*U+JXn{GY*VB;iFueAVgCMc%!G9_Gm^NX9zs?Fu;uc8=@_9e{#N8+2{|9} z4(f=+sRZx}6rX~_7JRW%;Ic*Y`(yy*Uh2BO7jqG5fJVBJWVy1lYaBD<6c(`a-pFfB>zNQOqsMBsuC49k7&3?@MK~-@ zEB0M?mVuvK=Odj-Zui+{3}tI4!s6uo5MaO_+&~cZF$KnDRttUK84x- z+T^?Miw07HarWPH&j*2piey7U-FUDZGS|8mnkKeyx>dR>7Wzq*AdzZO7Tz}sKA+A4 z^@CeXRK?W|HN}Q#FIV#OPBeNcvM!@0i7@*GJt(R7-o0LJfrQ7oEmEPO*Qp@=eVFE_ zuQ6HS){MI$^&wE`vA%vpZT~~LRC}`9)tkvueID+?j7+K>4N=5(Sm8TQ`*d0+6`LOb zet8?Zwvl3n&SB#9d}c3Gql4i7q5_-4$9px`>#*;^UY*m|Ln8bST$wOK%W;C@c}Jt| z(PMrxM`)#l3$^}CO|2dQ>UX$fh*f5br{Li?X)isL$9P@{5$)4fJ?n? zG0%lNOCzfEhm$hb>U%9@rO~VZ#^oGm7iE-ZdZtZmaO)oA=hBJC*Z{vJf_RPq6 z<39ZQhfpgmujot(R$>Tnp#E!+0N(@h%uLpT_KQz~<-F+DiEaSQ5U~9h!2W-sAsxaY z4;_);rV=4olF;$;vo#Et{Cp6PEz~s!ZRLWD)6ai8CB9^FXFLyD z2*c$kXsyu(SHkdeM<|TgPVvz4yM0z~#wjNNIZREv)zi=+K2eJpeH(t;_y52hhI8%~ z)8Vxt_uR~gEDZs{?~qzj^a)N&8%<%1lK#Zuo!Ns1|FrNS=KOL8@gqLy%V79JE(u@( zTsNm#qi_Bff3NZJ+T^pqulhA*bMzCb1 z-q2|O(Rv#Q?vKSl0Jo8|OJYu+(-roGP%yw7ewTDjDxrhaTAb2ea7g$7ir)*B7Jif=wZ0 zIzPKY`kzW>>hu{nJqhtll-Y=>kQQBX#^LYk$%y|5FBNk9pdoIR5aVyuW++;=bB4V5 z$}y|W91=2d=(v&5vn@eWLLc&Kg3Yc*mYnEktW>qM+lRNA5UtI&P+3fwJ4; zFRIl7gbAcc!xC%07!`!>qIGD-M?Y3MP4qGnNyXn)n|fSN(G&fSTsfXU6`CnSwYe(?Exr4m6lS4J zRWwnT(#vn>Am*d`2|}M0<-fI6IJEyxnZ}CW!;0T5^wV3CVFi9}YPQs!>5?&6{oiRd zX(%(s2mqAN#(h{oc=(%)dROkpoS0RIyLkDN_a0HKi5!|CdSg!r5HZ_y9Pq-t^3RLl zI4aU1aHpetbpy>Ts=~Y|4yWWh?jh~rDHXKk!x7hq(eopetgv$7$Hu8o>=G0XB_o^t zGR3aIIF$K}yxRvm@Z1IRuFaL5fV6QMkpCuzT*|iMx@@_&!s@=C<7sWovHvYY$XQBu z7wQ6qDY34p0jbywxLuaD+EBa0EMK}N#T{R1r~UIw+|=)Tqg1*rVI%v2KsleQ2#G3U zylmJ+4n!7P5=ih9G2~MKwT}TTppFOzgN1~IpbqDUt1Ulp0j78M@HK4L7FcL3`5Ca8 zt%wD=#!%=F`lTIq=UXXme+7bQ-AlR2lCow}<;~0hp3I($6krSjPub1u*X1f9)ve5{ zU0vp{^=gddVV_N{-VT3fNK1PEXXbntamcV0^UBg?V@B<}m_wka5D!G5xV-r~Rz$ad z;FR#eYzTmOU1QRKwUpM%+S&=g;D%5Md+jd(IwjmE*w`NDt8gmM<4@hjd{u}r76Lne zaS|4=S$HJ7scZe>#eAD;>tO0*jrorB(dufQcJ^s_H~ajA+q?SX$_tWCxQ-+zzXef3 z0)dNJgzZm#=Gm7A?fE_a6%^h|Pr*CcQ(@8UNMuzIk(m3AJoC=0Sg7p}yV57CcwjEe zR|A`y*d28-Q2^V9U@sj_TQ_D{yNastC=i<4ARwE_x`9GpG8Xmr;P6JrT2A1)RhRp9 zaImt*m{}lQfmE{b6bxoF8F)S$DMsn~5(247Pj78j^8{2>X6EKN@&NIl&wyR#O~Ee$ zRAXz^>VHqcVvk$|GUQDW*c1uE6M8`KD8jTX-w_g7k0o?|1-FwKRpwZ+lp+UIx2IhH zl%1TdfU;8@w?$lSZS5ajOG`^XKfjvSo1Iz8YtGmtHFFRc=(E?i#14LL$WL_x_oskl z;w>?WSjZZlBcHAvHc0iks++Bwf9&Gn-$ZE^#?)d5lyerax0(*p-`U+vOg)r zbR7Qu6{v|<>7YdheT9Ix;~($M&ugnadjNX}g+_)=6+39o-QpCh=q7SF1sc{)?+tb8 zNi&m4X4R3T2YRuoC(9j5TF$8}y zc-KzdqP2TuAc4=oP0M0!FWQDJ(!Qt7S#uFV+llG#?{Y*SBDu}h&MXlW1PNrEQJX$hsk~T@%zHCqFWJFFzph4Zr}*K9&n-ti}uU zd(v#OjWfR{if;(N>_42p91Nlo`5{bAF7WvYn~~qR^e%rNBUfoH87QH&_=mOt#xGaA4D}*K5XZ-NFqPAQS0u_ z&%Ai0qs>xbSxSyR^U%4w81E$V@Y=6j_LntVBS0XSex)P1_igVO221ldxxuJe#K>$& z1D3ZZ+FT5&tnNxVaD300#d_D_vPkZ^>7%iHw+hKC7FrC0Q6aItqJ)Yd|GOn-5sw1S zVb00)?tSh@nWkE#I!5h9md|pZNUBG%iVAO96t~rmQa@%V@*DNU``Efx@dv!CJu+s( z09)>L-`Px)$~44h3sciw5$V2@eDl*eE0(!(W7t$A^G7aCsU6W^pXsnHN6|Pz_z9^0 z&v#pz*Kp!`*`qNJ60+*N?WW)fX3-Fty&~y35$TzVS|3i^_}f%mq!5;>tIy1OXE+hz zeRA;}+R|~tFdzxiS&H~MatIxVrmH*p2(>l39?{jGj(S{dhelw!7?0C`WWUrkWxaC1qZuG5pE$Ow6%jIM~?seY$p5lmjt9##k z-d4N?%5g|pQB_R$CTuHlO1r%xwHZSCXEiJe+12W3lBeZ3x^jDrO-+p_aQR;K^1xd9 zN^NN|MY#HECG+^$0gX6#iKZzL^MzU($NipDz4O+ZI>|@g{w5nXf6n&dw^sxD@%A^S zI}Z>~bT@lOOnVc|*49LO(kdiSLcIfXg(ar7Kv3{tK0hnU8C5H;4?8a^5U&d`kmzCV zUT!=wFb_@hLCQGl?3QFabf%&Vvn7V_R&jv2RMdM~hY|6)jRKZZ)kYJF%>A?RGa}}8 zMh-94Zi~wZGpOP};!)>b7{$p@MZ&-hn)N%kWjy%f$0^d!O-^d4*&QjS3M*XfJK|p7 zDa(sKO=wgZE$+i;1t87!!~us+sasUinADrn zLz%NztFP-ZoY4;d^uh*N2J;n~f$VhcwpIqJtznTGSwj@%BI*8=`q4_Lp%_c~$($w@ zfMJX`ZnpEh58Yn+es4XOxHsYHnp!$%Rj;k)Se(sNxfN+Cr<}pnE^)r`+Rn0sf$3{1 zBFHBzL@(@3b-xDT(D4nA43&_|*@@ES)t!Cg!cIqOR}W^cF)ah`nnfdJtuE`WIH~t* zScUTUcO-f0uN2G~A;fn;39y}yC{(R?o&Dw|)!xid<{8#fR=*blIZ&K@qS9c$=^lN4 zM(1(7$jPpnS!|}13j4aZ(Y1Su59XSZK9|udl@o8q4#Ipr6@OeY`r%t$IVV)7c+$J~$Fo}Dm$?^f5xMIlf(A7TR-4tc<^7vZycFW+ zYnxN+BlqA=yZ%FD^7P2Gt*%r#oviV(H(k183KnzafEsAS;h=Dzi$i->(AR&;X$L|d z*F?U{SF}I+Ebg@2#JP`J=0`GwYA3tc?W?`iU|<)PxzX;NV8q4@eR6`v@z+(4o+yBr z!>sT;bm*gY1os>;iF6{f_eW=Ijl;F8p8?mAFInoV~LfWRHanZbizs+W5ZRh>DAF!C;CBmCB6| zw_B$wq&l*6MlsV#!azmhKO*2A7VWkEQ-C_1qB*>=_CGL%aXNLX&h~Qf8TU|3Vrgq@ z_x8^6-W{7g|G+{NS;p|E<@>5pogVvqg0z-uvZ%LfCUa@A5C`yl@njM>;9lozF{PPy zSm>0{-X-8kO`Tg)sD1Qed-2DlA_nN!>7w+C3&O>mC;o(!Rxrxoup>hXzGan3pR67` z4-S|#R^|dt%y!C9QKffUmrw+wfCS0<%(;gz#1h5Eqt}=3d*c@{G0aG3hkfm0BV0pv z2SnZhXio0>)N}21GEvqAwtY~DIY(MR=E+;4FS7U2SOu>r2)L@td1p6fInMP_)*#Ri z4)R<;E?vN?hyyy!y1Bj-CO`ar@DXKAR=G)evLJO}V3|z{R5WZF&vq*36SM$yPmlg4 z$svgfPkKq6+8Ggoo0OkiF z6vYUgoF)&J|GWxeeqvd#J+JgKe9%z0h%Z)4YKHZY8PB`cInw|S{ z>V4fr#?|7@ve|e*-Y7y={c&^YWB*pNQg$3?*L1~90sCK{Wo7d?7{){#F&OCyp9ZW` zvb*UF(D44tx|09Px;k3mG-?0CmP}@mRSylA?33xhb4!#(cJH}r8Pq@NRX@N&iw-FHd#7-9{P-qgU83;-^^Yt(&YQ_ zeJK`M+!xfTnK)B7l%bJb1j%*Vxf}UC52^K3&I`xpX)@Ri$8aGuF{MjSR-f4QtQ##m z>Mat16?Wi@r+?;Y=zrJgv`Op?Huul2IHtnqY_-_Nt$QS|{=8R7?K?wVMSeI6 z@XuZpH**ous%+Gu#$&mDrEuNwgnhXW`az+hZnLyJh8_RCzdxX$DSVU70ZHD z(%Rps5aNm{A;levcvNAGLH7{$RC%=nnd^_Xs2||X`4D14c(^QP>aA^(E0YY(8uA-4 z7{2Qze;CR<`=~QmXPR4a7Hjsb+IB6gt*xBGzmH$82Yx(Hvq^<{5*qL(c^5&>_JWHR zmYwJ96gPr8RRRieQA8{2?E%h_9Y$@%!K6F;uCV{q;Q09c&xM4_!Z>YJ-x^t2?)qCi zLp!#C6+wr#JnQ^LWUQbmCKxMPTYB<6h0Z=ujBDX0kao)%_3r$7RSqT`Yv`!eydC>m zH>Fm6M^8Tc9&E!W69)r!He+G5O9ZYho0lyaU;n(dZnXbYc-U>Q6rACn)hd?3r?Ed?0lXo%V;&wT@;v1J`HrblF0kkX@Oi>6) zsIHHHCN4Wey^a^*-gkP%*32d)4LZtm>cea>V;kA$@WR2a87ws z47?0$kabQwqmIjBlLe z5=!VI;tNh;yE1RtJjmPpSB4F3NT7;%^{xTBc2A7o6J1AKmBo!0DWQPs)8NreHC(qI z;!fV#88lBHW@1L^TW5MLF{>5 z?UyWEftWvVC~_-3HxCU-&0IdJxL}4HmC@D@E0VzyLLXCf=6!q}(4qf}$ClI6XzO0g zZ6qNrUSI@!ZH+EbMWVyeI`9F|%qS%P zkd}4ri5Wf)yXVF}(Ek--|L>RpO}-;;eWrbRs9J4AZY35FRr$H{Z(-BKtIWsg)s?=O zs|tBBo(+Hgb;)Y_iTQZ{pR@H{>l276(?gbDT?9t(o2O3BCBv7fQxZ|i7w1&HTjC|^ z*HkPJZs-GqO*7;#YiDfA8P~lSGj|696hqbdTUmc@m!Jh~WrpniFMX%8do!H>Ozug( z+Gt~&vQ(1rdUq^bb_==a2YM+jiG?Ate6_7mlgPJkPeV=0+cSId?&Nd->1tRB_p!Xu zX0iXKMzjm>@4xlaq?J8kf6~I-y%iJQa0s<~_z6`!S$9q8jicc_kI1*oV3faqIz_T- zt#8kt@fVDJCXG+d$a}Qu3osTZBSa14E|B23wdnOZRsEk@FS1Xg!#Gl)Y>R|xteSv10JO4E0rgF3lC;BVtn&~ zx=yn~VVLDLfgczQB$McesKc5O=?{K#8X@n?(M59Za{qa*D?@$e`Uu6S@?5NxWmo9P zMN2WatY*wA3!##J{M^a6PhLn_sIrt87NJwKCdI?R zZ1;Y;lci5x2;sGT*w9L*V08WQV(v+sdu;jKQC3#4Bec5YP(3iF@cfYIO)rkg)JMaz z%!JRo9;f=QgpSgY+yV}Ti4EI3_JRpH6Y7gMJ*mHqH!dG>58INDd084xcm-Suow-Z8 zPMz(ltE5~CVJeSz#&Tb8&fn23_4mJmzv&46tRRkTqw3(d=;xKf6)bWNzOqP1pBYUMz>^&>U)fo5-Wh%%5i|LRCenI0tkl2cSvw6rXEXI3eg zr*4e0#xX*P&Qd%;@-3;2(rwBnkHunB0EvK(btLh{tZkVl18wIqFu=M!3Hl;{{?s8a zAjf)bNNu4{{9%+ei+% zVq~f8NbJzEF1qzPyGN?!MWa<6;*-kyJp6{!%xEZk7rM5~0QZj#=#fqwdj=UvG?PhB z+_kKevJZ4~+HqILoZQj&?$sE`OV{r*?6;`pnDz>=h*z4$&^jmYxt)>Gp|4TMMSahW z^~3P@XOOfvt#MN>_o9P7D9v)T)91^p$=id+z7@<{_GH7)i&Y!7uFpzJ=Q{nk6uKqB zaidVVB6ng0n}P7^Bo-!Ph220c*4m})`Y0;v6UP-bi z3w})czwoz@QKXrwtpvbfH!uPd2I==_bAe(X2>^PbunaM^)B7@plct6QfGjwYT+?>| zt&MTRz(h~AuQ3Mlrh;r>gRkNlSZMZ)O{_siea3fLMUW`x1LqZJ(Cy%!Agep6`{=1*4UWZ~NEtDgVuo30Sz*tgW=|exv_p1VBRrLj893PjGucQ|VCmGcDYDcxHE^P##ccDmb%O zsB}lQ9w9Np(g4ZMoB)HQR7)yagt;I9=*Zb7>g-kn4|E%EF7j4A5?B>`(Tccs-@ybx zEeInR<%()CH*)?UD4-!rteb%5i4(T6YLctvn55)utYK$(H9+sY2ZSKyswB-p~p??mpcYz-#&qSBFyZvbHu0syfVE zwQH~pPv8(}!GgI2roTr(P9hG-GJ^hc?@wek5yd=5uwFNnZ3zc61=36fw4GT1T3UlM z$}lU6ulBEW)yWTF9)Ruh|K*G;7<{sb#fMRpiHCP@^tXC2JtCs9z#DNf13kbs`nZ;(%5`_i51j4_9E6QiM;`%Y@ z@c~qT^foJEh{t^Y5dE5AKY#3s0tZ0wm2YT*|LGBWJt%q|2#84Z1zgaN1Qj;@XXF$< z(bx~ue9u8IH8mrB$8FJKa%#MGsc&&Fd*9Fhqptt1``1|GD+^5kRcpq~UiKR(s{_8# zj~e?&W&sD@dPVQ~U!-Sfj|DOQzti{bUn2f<+n>ii_+UUxyT-=Cg&V>qO&=jw^4$u2 zwHpZkKZTrUSQA^jhJyw8WGf<4LWO&5 z{Fi?Q{HqY@UEHO3MBSH6m6h&Vm7=M%U>xesQUI;wHfK<|%Wf?|a1pv!RxY(P;O>?_ z?u84qC_J_rYuegqD5gk0l_N{01iF-o2!4+sLT8!LKUQF!TMKRx;o=u1@}3u7M0vp? zfv?cwiGbChGtL9_wyv7M!cs-19k-ABy0V=+$-&Seg5g;={#m>-eu4U8j*$vR>D+N)y{TDbccy826VE~;o-KWy>N8} zg%s6o(-Y)5vgWHF_Ve@)Dyo>%mFCSZsJ7bT0AovrZ8OtQe8i!VBKd_v$O7fpu5aUM zR^i`4u80}@lh4D95BcC|Dz7(4bC;_;0MtF}%61ks}d07L*_pH?OI zhjwh>YcrpPB7n`?uF>|v-h(TsjVS+bn9M)tC|E!Pb0w&H`$n~MkjOoMRlS2G-YAlf zhbIwS*0z?~rUyyLP1s5p3dJ}7qCc2@@BuL2ttT0mjs&3etfsVPG#9BK7Qb zeNxU{99&Ln*?2VYM^RJIz~obfMF~s#s}w3l(QD$LDH2m-b_kbBRRkhZF@g${T*Ax%AqR%hh%l@HELTUrm&DyeY!e5S+NPy}g|f{N0#`IK4X8fGzod9#ug8 zVQMxIt@)H42NgzRzp~vXu2BSb(lnxtieyKN;o)@1KZfD`ui zn%8S1pe573!fez1Gzh~QzwR$$v!@QgK31RT=@UkQ+M4UWq@<+U>M?0VDtJC{h?9p0 zQB#9u5n=oB7192%K&Ly^zF672($AurNoZxu2cS5hxAu6>NmYPZqPauVIn)W{6PN7d z^co`Ubb}>k%Lm_%+?fjgObi*}-8MjpKu1j!?1 zw-9G6sdOO5cMylTpzGo<+EYVqg-w&oQvOMaGVh{+?5HV!ZH*6~{~VR9)Y$Ow;7#un9q8=UDM<^zQ^=TcExJAZgNbO>0~C!~A?|GGrsp=jYAk|Gu0& zi2({FP42a2$ho?uRqq-YvHZ_HXj@Hy+O)y&Heli)wdMnhenYM3Af)vO(Z6a7V z&xHBbhYt1cUYz$Z?%I!ZDEL>l2A@xLYfk`!xahyKwM;X;+fSAu?1^TNt`_^G_g%Pknm|tG@0<67&BP5aXGsQ%`-_ei1jV&_H z3B5P)&UGya(CI&B2@)0Z*NDCefxxkAV*?X3BvSO^u342uz_s=-rV3oJ3z(^!9Ltz! z9qjA-9xHd|YOTu{5y6yc67{pC={VLo_sd1l8ASW`vjRlcTid%{H(oIva3K*c_q{S- z)a&R@wDXN(K~SXft$Xt6CUhL*#!+6$MP5|lXP~< zu~W6bu@1eQ^o%t@u}8!+C?m+&-+S*+$zSE@^kk`F`ZeJ-bYZ^_5GTfU@zVD83bgRf zR=Uhc7QcH$&Ki;|i|Twi8z^$ni%v6>JL(@`-c1;t z6XIcf`raV<>LA7bu5Y-%^L4na$a@&{S~>5FjZY()R!_(c7XWjuuCA^s=w;Rr9^}C* zt89W0GHy>+AhcrKy!* z>klF5#}^eqEL2{iWD+dW0WzyXT-=R}s6=NHCQA>iN>#@_6!ly~~L!<1+ zvL53qr1i)-WVAeCfqu;?`?KBLz`Fh9*|*UBV-nC&gWuap8`wl{H(t^yaACscqbP%8 z3=S!%ZdN=XxFJ5oBwEWCPay`)o)+7#VI4OwPZ-VeVU}4rYymp#8+*KlP*f8Dg2`n%x!@gWFtB4z}*5O1VtceBYaTH70o_B+^=# zDEcjg+!W)i7uYlw!hB#*+Y+?Uirl=!@MR{r2SVN8%)x<3igZ@pr@E|Zwn7#0fTLcc zCTny1xpqd4Hm1s{5J#%?P&xOd6l}$l=X5dEz>ea{vzt$3rshU81WlH1JLkPT>W*i_ zHBT?Of1hcnb-KzmRR#&(#PxL3wMRu2STcLNc??T~gx3r8dFb7a?-sH#-B4^)N$?Eo zlMR()@e9JU3^Bz!_2fR5siERjNnl@nFG`uM#e?HG{e!(-pXtGm- zp6<2}Z@nwNVd&puw7{n+v)9_{sNq*IO2=R+cQ!z07I0glx9O0-!TYr{70nexD|Pk0 zVNJQyX^#Pt)*D}$)HxEdtSmY={3naO^33KV|B4%6l%*m8u}G6lbw~KWOu?}yV+Ki0 zAu+W4IF3xV8gTtHdKPKtH0zR1i5f<`v5pGf-pO3+lKQz33zRXc&~!tuE=%91$bWvo zBQxDLmeC1sAH%$H31gI&16UQ>10j2LdT`0zuow&Y_rX}P{?XNrpf?|ve@+|@q6;kP zG*SFNo&8tLyvdLAgX8Z|)yg%`$A*@rvclFq+FbIf76v0O-Bra^h}uxmdK`Hyi$ zpp){PO7r=hL-ho3GAHlyh%EoO$tDfYU2&#KZ*Qx<=8H|o*BXE1cn{3PU<#+YCp1M} zxNP~q680$!7pfh{mRD9nrw0l9DMI!k*N37PDWq}9Prb=C&6e>J?bKy4K09U~3&tVr z?eeSAF|;uhq7=E{RVVHV$~|%1ndf8QW!oK$o0kSKhtx?jcJis@6jqY;VS%c(Wi+c* zHlRj!l?3Y%IA;)_h}%s~MT*3cA(;m#WQm?nt`G+jmd%ByuTrHor?dC++5?bH`3)}X z7&1z5MrI~ov7YY1OE746)bIGIRM*^XI=dLqeWA1+Dv@|5(aA0@BTE3ZHuW5Qk)METAy0xnY_$Y-O)mJ z{YgT9C8%p?I51t1zuSfqeEQ-+i?WUJZs2?F%n? zlb~nm;~VAih>(M{H*ihkzD_HY#}C#DrVx!9?w%1Bt; za+5{nKuSi}QWq}n2u203$w*;vZL_r#k8hsWtCEn6S3V_Em_ms>m1{7BDNn}5D3t`} z;|f>F+K2Tpg${1bT!E(}R+JgX^X^nMfP6|EN
    sLlbMt~`40&m{KVER|?3v=FuK$b?! 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 literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-name-project.png b/docs/get-started/media/vs-2026/calculator-name-project.png new file mode 100644 index 0000000000000000000000000000000000000000..92e3c8e57f9f66f379166da0cd344a74a3b32346 GIT binary patch literal 20808 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 literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-set-breakpoint.png b/docs/get-started/media/vs-2026/calculator-set-breakpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..5d63205bdb7ad0aa6b05526c8621ff6ca2688038 GIT binary patch literal 31342 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

    6qQ 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 ZR?^@VxOsvD;FVX9govzgxuCw^{|A0~vyA`% literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/git-add-source-control.png b/docs/get-started/media/vs-2026/git-add-source-control.png new file mode 100644 index 0000000000000000000000000000000000000000..20a3d180b4f730b0076f73c1031e2dc6478096c5 GIT binary patch literal 2545 zcmd5;=Tj4i5|6?WBtk%uaDYb{fuIyAieid1F@zfNRJwv3~fJ4hEzs zHIzhZCQpT01!pp zG{FD>$DZ=Jx$tqm9&!t-;+qqXZ{G6*0K`80BgaxNh{^JuKmy9r6vz>jmXZ~-6u_79 z(-Ki8hIWCkR;K#@ob;3dt{0UMWj*1{f#Q)o4VHnL7XuPhLcISPQLcLRbF^OiNXDmb z+%notcYi%u)OU4G#~G7|(!! zTB_~q$-rjk-2OXTRimS$H8nM2KY*MEHTEHh*{@$;4|;y`po2gl27|Ez8t({79AEM` zpjZ_RFKu03_qE25$-f;?GKF239gW|+2?e!4`EF=Z_Cly=76Y-h{*xpY&8j?eRW6?6 zUmA?bLYB~_eY)ZD-2@J;E^2u3Rc7WrC#R4f3rX+4-F$=b^YgPRqK8OK-i~Z?u4K;J zyZi%UgQI`CB0}e(gdo#y_UD*$n?L`$ z;g%gy`%vRD0N^q z%n!F#vrm^6t3xVCNNglMJPJ+pQ%w=2fT&E@i|QI05`)7<*49>5GJm@J_*jZZ*^8CE zV{D>Og;5J5;?^GwKwDVUSWFkTrsc_wW^O;^(I@uig!lHh_t6dx4!r?(=q0vc0AqS3 z0C@b^mIe1GNkKetf46!XS4kBO^^U65H}Q4LzR}UQD%Vr0eEQe?9@*F!7)p(!Ku1zP zRmDlc*^dHZQ(U*Tav3NuITzA}TVdPh-dN~ls)29q+D$yC)Ac|lf?fllvnVNzFMSkO zFa7hc$`O%mRWurYX^c8EGn1NnCNi(hVT8juFLB#Bt|WS~l$=5v9{PN{sl*$WvRNo+-MXbPW-)bbOy?bXD;+&~i)pVpdMh*woCP zjGnf3-aT_7k*KPog7q@gFvLr6qvv=XiOP^%w75jc*-VQmCgy>}4R5R^j(Ikf|Nwa%SK2SJ%fDL}&cRBX%q;Gk{L!6gHOFI{Xj zIp0saY`Ik1d;^^*LftSZ(0;tmDhMheCRAI2?&|X{qC36FcW^oNr0KE#UHyP9mw-pY}7mXsUJPwFvK z%E3BOO^r2RVTX=qduYkY$q+5)kzX191af|eHj|jj&X>_{s@Kw@y%Wd;_5U&g4B8vN zcXIMM>uPUz>6gi#6Q}fRz0OHu(gh9dGcF}}yX$1?$;1AjPqekQT_djQ4XCT>Dl`Y# zj8kRdnr65s6$_Yo`Y`$T*ri_wu;ZSDQ8$S%Jk#tyQ$GNaM9Fav!cP+u|*Sa<*AO2nbv{pyk^K zk06-|4FlujcZh$)7BA>`+3g+}a?=M&n-0UZY(|$mA5`C|bY5%@*$HkAU^I8IBd6Pv zQ{HYr_o3`_qg2%zFfY|FWUC5CyrSGyANwj|Z`*M4StMhH0z4}x_pT;n!Jba1^G`wW zY*e2IJ@dDaR0udRGd=-{^9-mdDT)qXzQS3d#gQL$nC?*=1qlN z`;aFSYjd!e1oxp(Kh2p5uRF}!8pcH25&SE~Of=$#0&f7uo6R}g-!uV@J>WbR1QZXB zu7&Mxv?U{k!y4D7VE~dqXz(ucYc5zzHf*htxCvPIXY3t-k?{TbHi5~PlS9uy@Rvyb zZ7rTA-l=eD4VWdY943Hs?yjDlsy~>GgJ^C4_~CeWpZ%zuCj@Y5MLHTZc<;OK4{wYv gnWevM-GLs0NqRyU-09?E{<{W1nOd1t7`aCL2R3xZ!~g&Q literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/git-create-repository.png b/docs/get-started/media/vs-2026/git-create-repository.png new file mode 100644 index 0000000000000000000000000000000000000000..e3a1d7f324a01f783099c87f414eea8a1f910b68 GIT binary patch literal 34931 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 literal 0 HcmV?d00001 diff --git a/docs/get-started/tutorial-console-cpp.md b/docs/get-started/tutorial-console-cpp.md index 608ab706e06..be21712c115 100644 --- a/docs/get-started/tutorial-console-cpp.md +++ b/docs/get-started/tutorial-console-cpp.md @@ -1,46 +1,47 @@ --- title: "Create a console calculator in C++" -description: "Create a Hello World console app and a calculator app in Visual Studio C++" +description: Learn how to create and troubleshoot a Hello World console app and a calculator app in Visual Studio using C++. ms.custom: "acquisition, mvc" -ms.date: 10/08/2024 +ms.date: 04/28/2026 ms.topic: "tutorial" ms.devlang: "cpp" +#customer intent: As a developer working in C++, I want a straight-forward starter project to understand how to use Visual Studio for development. --- # Create a console calculator in C++ ::: moniker range=">=msvc-160" -The usual starting point for a C++ programmer is a "Hello, world!" application that runs on the command line. You start with that in this article, and then move on to something more challenging: a calculator app. +The usual starting point for a C++ programmer is a "Hello, world!" application that runs on the command line. You start with that app in this article, and then move on to something more challenging: a calculator app. ## Prerequisites -- Visual Studio with the **Desktop development with C++** workload installed and running on your computer. To install it, see [Install C++ support in Visual Studio](../build/vscpp-step-0-installation.md). -- This tutorial demonstrates a feature called edit and continue which allows you to make changes to your code while the app is running. To enable edit and continue, from the main menu select **Tools** > **Options** > **Debugging** > **General** and ensure that **Require source files to exactly match the original version** is checked. +- Visual Studio with the **Desktop development with C++** workload installed. For more information, see [Install C++ support in Visual Studio](../build/vscpp-step-0-installation.md). +- This tutorial demonstrates a feature called *edit and continue* which allows you to make changes to your code while the app is running. To enable edit and continue, from the main menu select **Tools** > **Options** > **Debugging** > **General** and select **Require source files to exactly match the original version**. ## Create your app project -Visual Studio uses *projects* to organize the code for an app, and *solutions* to organize one or more projects. A project contains all the options, configurations, and rules used to build an app. It also manages the relationship between all the project's files and any external files. To create your app, first, create a new project and solution. +Visual Studio uses *projects* to organize the code for an app, and *solutions* to organize one or more projects. A project contains the options, configurations, and rules used to build an app. It also manages the relationship between the project's files and any external files. To create your app, first, create a new project and solution. -1. Start Visual Studio--the Visual Studio Start dialog box appears. Select **Create a new project** to get started. +1. Start Visual Studio. The Visual Studio Start dialog appears. Select **Create a new project**. - :::image type="complex" source="./media/calc-vs2022-initial-dialog.png" alt-text="Screenshot of dialog that appears when Visual Studio 2022 starts."::: + :::image type="complex" source="./media/vs-2026/calculator-initial-dialog.png" alt-text="Screenshot of dialog that appears when Visual Studio starts with Create a new project highlighted."::: The dialog has options to clone a repository, open a project or solution, open a local folder, and create a new project." :::image-end::: -1. In the **Create a new project** dialog, set the language dropdown to **C++**, set the platform dropdown to **Windows**, select **Console App** from the list of project types, then select **Next**. +1. In the **Create a new project** dialog, set the language to **C++**, set the platform to **Windows**, select **Console App** from the list of project types, then select **Next**. - :::image type="complex" source="./media/calc-vs2022-choose-console-app.png" alt-text="Screenshot of the Visual Studio Create a new project dialog."::: - The language dropdown is set to C++, the platform dropdown is set to Windows, and project types like Empty Project, Console App, CMake Project, Windows Desktop Wizard, and so on, appear in the list of project types." + :::image type="complex" source="./media/vs-2026/calculator-choose-console-app.png" alt-text="Screenshot of the Visual Studio Create a new project dialog with Console App highlighted."::: + The language is set to C++, the platform is set to Windows, and project types like Empty Project, Console App, CMake Project, and Windows Desktop Wizard, appear in the list of project types." :::image-end::: > [!Important] > Make sure you select the C++ version of the **Console App** template. It has the **C++**, **Windows**, and **Console** tags, and the icon has "++" in the corner. -1. In the **Configure your new project** dialog box, select the **Project name** text box, name your new project *CalculatorTutorial*, then select **Create**. +1. In **Configure your new project**, select the **Project name** text box, name your new project *CalculatorTutorial*, then select **Create**. - :::image type="content" source="./media/calc-vs2019-name-your-project.png" alt-text="Screenshot of the Visual Studio Configure your new project dialog. It has fields for project name, project location, and Solution name."::: + :::image type="content" source="./media/vs-2026/calculator-name-project.png" alt-text="Screenshot of the Visual Studio Configure your new project dialog, which has fields for project name, project location, and Solution name."::: - An empty C++ Windows console application 'Hello World' app is created. Console applications use a Windows console window to display output and accept user input. In Visual Studio, an editor window opens and shows the generated code: + An empty C++ Windows console application "Hello World" app is created. Console applications use a Windows console window to display output and accept user input. In Visual Studio, an editor window opens and shows the generated code: ```cpp // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. @@ -69,13 +70,13 @@ Visual Studio uses *projects* to organize the code for an app, and *solutions* t The template for a new Windows console application creates a simple C++ "Hello World" app. At this point, you can see how Visual Studio builds and runs the apps you create right from the IDE. -1. To build your project, select **Build Solution** from the **Build** menu. The **Output** window shows the results of the build process. +1. To build your project, from the **Build** menu, select **Build Solution**. The **Output** window shows the results of the build process. - :::image type="content" source="./media/calc-vs2019-build-your-project.png" alt-text="Screenshot of the Visual Studio Output window. It's displaying a message that the build succeeded."::: + :::image type="content" source="./media/vs-2026/calculator-build-project.png" alt-text="Screenshot of the Visual Studio Output window, displaying a message that the build succeeded."::: 1. To run the code, on the menu bar, select **Debug** > **Start without debugging** (Ctrl+F5). - :::image type="content" source="./media/calc-vs2019-hello-world-console.png" alt-text="Screenshot of the Visual Studio Debug Console displaying the output of the application: Hello World!"::: + :::image type="content" source="./media/vs-2026/calculator-hello-world-console.png" alt-text="Screenshot of the Visual Studio Debug Console displaying the output of the application: Hello World!"::: A console window opens and your app runs within it. @@ -85,11 +86,11 @@ The template for a new Windows console application creates a simple C++ "Hello W 1. Press a key to dismiss the console window and return to Visual Studio. -You now have the tools to build and run your app after every change, to verify that the code still works as you expect. Later, we show you how to debug it if it doesn't. +You now have the tools to build and run your app after every change, to verify that the code still works as you expect. Later, you learn how to debug the code if it doesn't. ## Edit the code -Now let's modify the code in this template to be a calculator app. +Now modify the code in this template to be a calculator app. 1. Replace the contents of the *`CalculatorTutorial.cpp`* file with the following code so that it matches this example: @@ -122,41 +123,41 @@ Now let's modify the code in this template to be a calculator app. > Understanding the code: > - > - The `#include` statement brings in code in other files. Sometimes, you may see a filename surrounded by angle brackets like ``. The angle brackets instruct the compiler to look for the `iostream` header file first in the standard system directories, and if not found, to look in directories specific to the project. Other times, you may see a filename surrounded by quotes like `"someHeader.h"`. The quotes instruct the compiler to skip looking in the standard system directories and instead only look in directories specific to the project. - > - The `using namespace std;` tells the compiler to expect code from the C++ Standard Library to be used in this file. Without this line, each keyword from the library would have to be preceded with `std::` to denote its scope. For instance, without that line, each reference to `cout` would be written as `std::cout`. The **`using`** statement is added to make it more convenient to access code in another namespace. + > - The `#include` statement brings in code in other files. Sometimes, you might see a filename surrounded by angle brackets like ``. The angle brackets instruct the compiler to look for the `iostream` header file first in the standard system directories, and if not found, to look in directories specific to the project. Other times, you might see a filename surrounded by quotes like `"someHeader.h"`. The quotes instruct the compiler to skip looking in the standard system directories and instead only look in directories specific to the project. + > - The `using namespace std;` tells the compiler to expect code from the C++ Standard Library to be used in this file. Without this line, each keyword from the library would have to be preceded with `std::` to denote its scope. For instance, without that line, each reference to `cout` would be written as `std::cout`. The `using` statement is added to make it more convenient to access code in another namespace. > - The `cout` keyword is used to print to standard output in C++. The `<<` operator tells the compiler to send whatever is to the right of it to the standard output. - > - The `endl` keyword is like the Enter key; it ends the line and moves the cursor to the next line. It's a better practice to put a `\n` inside the string (contained by `""`) to do the same thing because `endl` always flushes the buffer which can hurt the performance of the program. But since this is a very small app, `endl` is used instead. + > - The `endl` keyword is like the Enter key. It ends the line and moves the cursor to the next line. It's a better practice to put a `\n` inside the string (contained by `""`) to do the same thing because `endl` always flushes the buffer which can hurt the performance of the program. Since this is a very small app, `endl` is used instead. > - All C++ statements must end with semicolons and all C++ applications must contain a `main()` function. This function is what the program runs at the start. All code must be accessible from `main()` in order to be used. -1. To save the file, press **Ctrl+S**, or select the floppy disk icon in the toolbar under the menu bar. +1. To save the file, press **Ctrl**+**S**, or select the floppy disk icon in the toolbar under the menu bar. -1. To run the application, press **Ctrl+F5** or go to the **Debug** menu and select **Start Without Debugging**. You should see a console window appear that looks like this. +1. To run the application, press **Ctrl**+**F5** or go to the **Debug** menu and select **Start Without Debugging**. You should see a console window appear. 1. Close the console window when you're done. ## Add code to do some math -A class is like a blueprint for an object that does something. In this case, we define a calculator class to contain the math logic. +A class is like a blueprint for an object that does something. In this case, define a calculator class to contain the math logic. ### Add a Calculator class -1. Go to the **Project** menu and select **Add Class**. In the **Class Name** edit box, enter *Calculator*. Select **OK**. +1. Go to the **Project** menu and select **Add Class**. For **Class Name**, enter *Calculator*. Select **OK**. - :::image type="complex" source="./media/calc-vs2022-create-calculator-class.png" alt-text="Screenshot of the Visual Studio Add Class dialog box."::: + :::image type="complex" source="./media/vs-2026/calculator-create-calculator-class.png" alt-text="Screenshot of the Visual Studio Add Class dialog box."::: The class name field contains the text calculator. The .h file field contains Calculator.h. The .cpp file field contains Calculator.cpp. The base class field is empty. The options for inline, and Managed are unchecked. :::image-end::: - Two new files get added to your project. To save all your changed files at once, press **Ctrl+Shift+S**. It's a keyboard shortcut for **File** > **Save All**. There's also a toolbar button for **Save All**, an icon of two floppy disks, found beside the **Save** button. In general, it's good practice to do **Save All** frequently, so you don't miss saving any changes. + Two new files get added to your project. To save all your changed files at once, press **Ctrl**+**Shift**+**S**. It's a keyboard shortcut for **File** > **Save All**. There's also a toolbar button for **Save All**, an icon of two floppy disks, found beside the **Save** button. In general, it's good practice to do **Save All** frequently, so you don't miss saving any changes. - The **Add Class** wizard creates `.h` and `.cpp` files that have the same name as the class. You can see a full list of your project files in the **Solution Explorer** window, visible on the side of the IDE. If the window isn't visible, open it from the menu bar via **View** > **Solution Explorer**. + The **Add Class** dialog creates `.h` and `.cpp` files that have the same name as the class. You can see a full list of your project files in the **Solution Explorer** window, visible on the side of the IDE. If the window isn't visible, open it from the menu bar by selecting **View** > **Solution Explorer**. - :::image type="complex" source="./media/calc-vs2019-solution-explorer.png" alt-text="Screenshot of the Visual Studio Solution Explorer window."::: + :::image type="complex" source="./media/vs-2026/calculator-solution-explorer.png" alt-text="Screenshot of the Visual Studio Solution Explorer window."::: The calculator tutorial project has a header files node containing Calculator.h. A Source Files node contains Calculator.cpp and CalculatorTutorial.cpp. Nodes for references, external dependencies, and resource files are visible but closed. :::image-end::: - You can open a file by double-clicking it in the **Solution Explorer** window. Double-click `Calculator.h` to open it. + You can open a file by double-clicking it in the **Solution Explorer** window. To open `Calculator.h`, double-click it. -1. Replace the contents of **`Calculator.h`** with the following code so that the file now looks like this: +1. Replace the contents of `Calculator.h` with the following code so that the file now looks like this: ```cpp #pragma once @@ -171,21 +172,21 @@ A class is like a blueprint for an object that does something. In this case, we > > - This code declares a new function called `Calculate`, which handles math operations for addition, subtraction, multiplication, and division. > - C++ code is organized into *header* (`.h`) files and *source* (`.cpp`) files. Some other file extensions are supported by various compilers, but these are the main ones to know about. Functions and variables are normally *declared*, that is, given a name and a type, in header files, and *implemented*, or given a definition, in source files. To access code defined in another file, you can use `#include "filename.h"`, where `filename.h` is the name of the file that declares the variables or functions you want to use. - > - It's good practice to organize your code into different files based on what it does, so it's easy to find the code you need later. In our case, we define the `Calculator` class separately from the file containing the `main()` function, but we plan to reference the `Calculator` class in `main()`. + > - It's good practice to organize your code into different files based on what it does, so it's easy to find the code you need later. In this case, you define the `Calculator` class separately from the file containing the `main()` function, but you plan to reference the `Calculator` class in `main()`. -1. A green squiggle appears under `Calculate` because although the `Calculate` function is *declared*, it isn't *defined*. Hover over `Calculate`, click the down arrow on the screwdriver icon, and select **Create definition of 'Calculate' in `Calculator.cpp`**. +1. A green squiggle appears under `Calculate` because although the `Calculate` function is *declared*, it isn't *defined*. Hover over `Calculate`, select the down arrow on the screwdriver icon, and select **Create definition of 'Calculate' in `Calculator.cpp`**. - :::image type="content" source="./media/calc-vs2022-create-definition.png" alt-text="Screenshot of a screwdriver dropdown in the Visual Studio editor window. The option 'Create definition of Calculate in Calculator.cpp' is highlighted."::: + :::image type="content" source="./media/vs-2026/calculator-create-definition.png" alt-text="Screenshot of a screwdriver dropdown in the Visual Studio editor window with the option 'Create definition of Calculate in Calculator.cpp' highlighted."::: - This code is added to *`Calculator.cpp`*: + This code is added to `Calculator.cpp`: - :::image type="complex" source="./media/calc-vs2022-ctor-definition.png" alt-text="Screenshot of the Visual Studio editor showing the definition of the 'Calculate' function."::: + :::image type="complex" source="./media/vs-2026/calculator-ctor-definition.png" alt-text="Screenshot of the Visual Studio editor showing the definition of the 'Calculate' function."::: The definition of the function is: double Calculator::Calculate( double x, char oper, double y) { return 0.0; } :::image-end::: Currently, it just returns 0.0. Let's change that. -1. Switch to the *`Calculator.cpp`* file in the editor window. Replace the contents of *`Calculator::Calculate(double x, char oper, double y)`* with: +1. Switch to the `Calculator.cpp` file in the editor window. Replace the contents of `Calculator::Calculate(double x, char oper, double y)` with: ```cpp double Calculator::Calculate(double x, char oper, double y) @@ -210,14 +211,14 @@ A class is like a blueprint for an object that does something. In this case, we > > - The function `Calculate` takes a number, an operator, and a second number. Then it performs the requested operation on the two numbers. > - The `switch` statement checks which operator was provided, and executes the case corresponding to that operation. The `default:` case is a fallback in case the user types an operator that isn't handled by any of the preceding `case` statements. It's best to handle invalid user input in a more elegant way, but this is beyond the scope of this tutorial. - > - The **`double`** keyword denotes a type of number that supports decimals. This type of number is called a floating-point number, and `double` means a floating point number that has extra precision. This way, the calculator can handle both decimal math and integer math. The `Calculate` function is required to always return a double-precision floating point number due to the **`double`** at the start of the code (this denotes the function's return type), which is why we return 0.0 in the default case. + > - The `double` keyword denotes a type of number that supports decimals. This type of number is called a *floating-point number*, and `double` means a floating point number that has extra precision. This way, the calculator can handle both decimal math and integer math. The `Calculate` function is required to always return a double-precision floating point number due to the `double` at the start of the code (this denotes the function's return type), which is why the program returns 0.0 in the default case. > - The `.h` file declares the function *prototype*, which tells the compiler upfront what parameters it requires, and what return type to expect from it. The `.cpp` file has all the implementation details of the function. If you build and run the code again at this point, it immediately exits after asking which operation to perform. So, modify the `main` function to do multiple calculations. ### Call the `Calculator` class member functions -1. Update the `main` function in *`CalculatorTutorial.cpp`* as follows: +1. Update the `main` function in `CalculatorTutorial.cpp` as follows: ```cpp // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. @@ -253,10 +254,10 @@ If you build and run the code again at this point, it immediately exits after as > Understanding the code > - > - Since C++ programs always start at the `main()` function, we need to call our other code from there, so an `#include` statement is needed to make that code visible to our `main()` function. + > - Since C++ programs always start at the `main()` function, you need to call other code from there, so an `#include` statement is needed to make that code visible to our `main()` function. > - The variables `x`, `y`, `oper`, and `result` are declared to store the first number, second number, operator, and final result, respectively. It's always good practice to give them some initial values to avoid undefined behavior, which is what is done here. - > - The `Calculator c;` line declares an object named `c` as an instance of the `Calculator` class. The class itself is just a blueprint for how calculators work; the object is the specific calculator that does the math. - > - The `while (true)` statement is a loop. The code inside the loop executes over and over again as long as the condition inside the `()` holds true. Since the condition is simply listed as **`true`**, it's always true, so the loop runs forever. To close the program, the user must manually close the console window. Otherwise, the program always waits for new input. + > - The `Calculator c;` line declares an object named `c` as an instance of the `Calculator` class. The class itself is just a blueprint for how calculators work. The object is the specific calculator that does the math. + > - The `while (true)` statement is a loop. The code inside the loop runs over and over again as long as the condition inside the `()` holds true. Since the condition is simply listed as **`true`**, it's always true, so the loop runs forever. To close the program, the user must manually close the console window. Otherwise, the program always waits for new input. > - The `cin` keyword accepts input from the user. The input stream is smart enough to process a line of text entered in the console window and place it inside each of the variables listed, in order. > - The `c.Calculate(x, oper, y);` expression calls the `Calculate` function defined earlier, and supplies the entered input values and the requested operation. The function then returns a number that is stored in `result`. > - Finally, `result` is printed to the console and the user sees the result of the calculation. @@ -265,73 +266,73 @@ If you build and run the code again at this point, it immediately exits after as Now test the program again to make sure everything works properly. -1. Press **Ctrl+F5** to rebuild and start the app. +1. Press **Ctrl**+**F5** to rebuild and start the app. 1. Enter `5+5`, and press **Enter**. Verify that the result is 10. - :::image type="complex" source="./media/calc-vs2019-five-plus-five.png" alt-text="Screenshot of a command window showing the results of running the program."::: + :::image type="complex" source="./media/vs-2026/calculator-five-plus-five.png" alt-text="Screenshot of a command window showing the results of running the program."::: The app output the message: Please enter the operation to perform. Format: a+b | a-b | a*b | a/b. The user entered 5+5. The app output: Result of 5+5 is: 10 :::image-end::: 1. Stop the program by closing the console window. ## Debug the app -Since the user is free to type anything into the console window, let's make sure the calculator handles unexpected input. Instead of running the program, let's debug it so we can inspect what it's doing step-by-step. +Since the user is free to type anything into the console window, make sure the calculator handles unexpected input. Instead of running the program, debug it so you can see what it's doing step-by-step. ### Run the app in the debugger -1. In `CalcuatorTutorial.cpp`, set a breakpoint on the line: `result = c.Calculate(x, oper, y);`. To set the breakpoint, click next to the line in the gray vertical bar along the left edge of the editor window so that a red dot appears. +1. In `CalcuatorTutorial.cpp`, set a breakpoint on the line: `result = c.Calculate(x, oper, y);`. To set the breakpoint, select next to the line in the vertical bar along the left edge of the editor window so that a red dot appears. - :::image type="content" source="./media/calc-vs2022-set-breakpoint.png" alt-text="Screenshot of the Visual Studio editor. A red dot representing a breakpoint appears on the line: result = c.Calculate(x, oper, y)."::: + :::image type="content" source="./media/vs-2026/calculator-set-breakpoint.png" alt-text="Screenshot of the Visual Studio editor. A red dot representing a breakpoint appears on the line: result = c.Calculate(x, oper, y)."::: - Now when we debug the program, execution pauses at that line. We already have a rough idea that the program works for simple cases. Since we don't want to pause execution every time we call `Calculate()`, let's make the breakpoint conditional. + Now when you debug the program, execution pauses at that line. You already have a rough idea that the program works for simple cases. Since you don't want to pause execution every time you call `Calculate()`, make the breakpoint conditional. -1. Right-click the red dot that represents the breakpoint, and select **Conditions**. In the edit box for the condition, enter `(y == 0) && (oper == '/')`. Select the **Close** button to save the breakpoint condition. +1. Right-click the red dot that represents the breakpoint, and select **Conditions**. In the edit box for the condition, enter `(y == 0) && (oper == '/')`. Select **Close** to save the breakpoint condition. - :::image type="complex" source="./media/calc-vs2022-conditional-breakpoint.png" alt-text="Screenshot of a set breakpoint"::: + :::image type="complex" source="./media/vs-2026/calculator-conditional-breakpoint.png" alt-text="Screenshot of a set breakpoint."::: The breakpoint is on the line: result = c dot Calculate ( x, oper, y). 'Conditions...' The Condition option is checked. The Conditions dropdown is set to "Conditional Expression". The condition dropdown is set to "Is true". The condition is set to y == 0 && oper == '/'. :::image-end::: Now, execution pauses at the breakpoint when the app tries to divide by 0. -1. To debug the program, press **F5**, or select the **Local Windows Debugger** debugger toolbar button that has the green arrow icon. In your console app, if you enter something like "5 - 0", the program behaves normally and keeps running. However, if you type "10 / 0", it pauses at the breakpoint. You can put any number of spaces between the operator and numbers: `cin` is smart enough to parse the input appropriately. +1. To debug the program, press **F5**, or select the **Local Windows Debugger** debugger toolbar button that has the green arrow icon. In your console app, if you enter something like *5 - 0*, the program behaves normally and keeps running. However, if you type *10 / 0*, it pauses at the breakpoint. You can put any number of spaces between the operator and numbers: `cin` is smart enough to parse the input appropriately. - :::image type="content" source="./media/calc-vs2022-debug-breakpoint.png" alt-text="Screenshot of Visual Studio editor. Program execution halted at the conditional breakpoint on the line: result = c.Calculate(x, oper, y);."::: + :::image type="content" source="./media/vs-2026/calculator-debug-breakpoint.png" alt-text="Screenshot of Visual Studio editor with program execution halted at the conditional breakpoint on the line: result = c.Calculate(x, oper, y);."::: ### Useful windows in the debugger -When you debug your code, you may notice that some new windows appear. These windows can assist your debugging experience. Take a look at the **Autos** window. The **Autos** window shows you the current values of variables used at least three lines before and up to the current line. If you don't see the **Autos** window, from the main menu select **Debug** > **Windows** > **Autos**. +When you debug your code, you might notice that some new windows appear. These windows can assist your debugging experience. Look at the **Autos** window. The **Autos** window shows you the current values of variables used at least three lines before and up to the current line. If you don't see the **Autos** window, from the main menu select **Debug** > **Windows** > **Autos**. - :::image type="complex" source="./media/calc-vs2022-autos.png" alt-text="Screenshot of the Visual Studio debugger Autos window."::: + :::image type="complex" source="./media/vs-2026/calculator-autos.png" alt-text="Screenshot of the Visual Studio debugger Autos window."::: The value of oper is 47 '/', result is 5, x is 10, and y is 0. :::image-end::: -To see all of the variables from that function, switch to the **Locals** window. Because this is a small function, the Autos and Locals window show the same variables. But you can modify the values of these variables in the Locals window while debugging to see what effect they would have on the program. In this case, we leave them alone. Open the **Locals** window by selecting **Locals** at the bottom of the **Autos** window, or by selecting from the main menu **Debug** > **Windows** > **Locals**. +To see all of the variables from that function, switch to the **Locals** window. Because this function is small, the Autos and Locals windows show the same variables. You can modify the values of these variables in the Locals window while debugging to see what effect they would have on the program. In this case, leave them alone. Open the **Locals** window by selecting **Locals** at the bottom of the **Autos** window, or by selecting from the main menu **Debug** > **Windows** > **Locals**. - :::image type="complex" source="./media/calc-vs2019-debug-locals.png" alt-text="Screenshot of the Locals window in Visual Studio, displaying the current values of local variables while debugging."::: + :::image type="complex" source="./media/vs-2026/calculator-debug-locals.png" alt-text="Screenshot of the Locals window in Visual Studio, displaying the current values of local variables while debugging."::: The value of oper is 47 '/', result is 0, x is 10, and y is 0. :::image-end::: -You can also hover over variables in the code to see their current values at the point where execution is currently paused. Make sure the editor window is in focus by clicking on it first. +You can also hover over variables in the code to see their current values at the point where execution is currently paused. Make sure the editor window is in focus by selecting it first. - :::image type="content" source="./media/calc-vs2019-hover-tooltip.png" alt-text="Screenshot of a tooltip showing the value of the variable 'oper', which is 47 or '/'."::: + :::image type="content" source="./media/vs-2026/calculator-hover-tooltip.png" alt-text="Screenshot of a tooltip showing the value of the variable 'oper', which is 47 or '/'."::: ### Continue debugging -1. The yellow arrow on the left shows the current point of execution. The current line calls `Calculate`, so press **F11** to **Step Into** the function. Now you're executing code in the body of the `Calculate` function. Be careful with **Step Into** because it steps into any functions on the line you're on, including standard library functions. It's fine to step into the standard library, but you may be more interested in focusing on your code instead of library code. +1. The yellow arrow on the left shows the current point of execution. The current line calls `Calculate`, so press **F11** to **Step Into** the function. Now you're executing code in the body of the `Calculate` function. Be careful with **Step Into** because it steps into any functions on the line you're on, including standard library functions. It's fine to step into the standard library, but you might be more interested in focusing on your code instead of library code. -1. Now that the point of execution is at the start of the `Calculate` function, press **F10** to move to the next line in the program's execution. **F10** is also known as **Step Over**. You can use **Step Over** to move from line to line, without delving into the details of what is occurring in each part of the line. In general, you should use **Step Over** instead of **Step Into** unless you want to dive more deeply into code that is being called from elsewhere (as you did to reach the body of `Calculate`). +1. Now that the point of execution is at the start of the `Calculate` function, press **F10** to move to the next line in the program's execution. **F10** is also known as **Step Over**. You can use **Step Over** to move from line to line, without delving into the details of what is occurring in each part of the line. In general, you should use **Step Over** instead of **Step Into** unless you want to dive more deeply into code that's being called from elsewhere as you did to reach the body of `Calculate`. 1. Continue using **F10** to **Step Over** each line until you get back to the `main()` function in the other file, and stop on the `cout` line. - The program is doing what's expected: it takes the first number, and divides it by the second. On the `cout` line, hover over the `result` variable or take a look at `result` in the **Autos** window. Its value is `inf`, which doesn't look right. + The program is doing what you expect: it takes the first number, and divides it by the second. On the `cout` line, hover over the `result` variable or take a look at `result` in the **Autos** window. Its value is `inf`, which doesn't look right. - :::image type="complex" source="./media/calc-vs2022-debug-inf.png" alt-text="Screenshot of debugging the calculator."::: + :::image type="complex" source="./media/vs-2026/calculator-debug-infinite.png" alt-text="Screenshot of debugging the calculator."::: The current statement in the debugger is cout << "Result is: " << result << endl; In the autos window, result is inf. :::image-end::: - Let's fix it. The `cout` line outputs whatever value is stored in `result`, so when you step one more line forward using **F10**, the console window displays: + You can fix it. The `cout` line outputs whatever value is stored in `result`. When you step one more line forward using **F10**, the console window displays: - :::image type="complex" source="./media/calc-divide-by-zero-fail.png" alt-text="Screenshot of the Visual Studio Debug Console displaying the result of a division by zero operation."::: + :::image type="complex" source="./media/vs-2026/calculator-divide-zero-fail.png" alt-text="Screenshot of the Visual Studio Debug Console displaying the result of a division by zero operation."::: The app outputs: Please enter the operation to perform. Format: a+b | a-b | a*b | a/b. The user entered 5-0. The app output: Result is: 5. The user entered 10/0. The app output: Result is: inf :::image-end::: @@ -339,9 +340,9 @@ You can also hover over variables in the code to see their current values at the ### Fix the "divide by zero" error -Let's handle division by zero more gracefully so that it's easier for the user to understand the problem. +You can handle division by zero more gracefully so that it's easier for the user to understand the problem. -1. Make the following changes in *`CalculatorTutorial.cpp`*. You can leave the program running as you edit, thanks to a debugger feature called **Edit and Continue**. Add an `if` statement following `cin >> x >> oper >> y;` to check for division by zero and output a message to the user if it happens. Otherwise, the result is printed. +1. Make the following changes in *`CalculatorTutorial.cpp`*. You can leave the program running as you edit, thanks to a debugger feature called *Edit and Continue*. Add an `if` statement following `cin >> x >> oper >> y;` to check for division by zero and output a message to the user if it happens. Otherwise, the result is printed. ```cpp // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. @@ -384,19 +385,21 @@ Let's handle division by zero more gracefully so that it's easier for the user t 1. Press **F5** once. Program execution continues until it has to pause to ask for user input. Enter `10 / 0` again. Now, a more helpful message is printed. The user is asked for more input, and the program continues executing normally. - :::image type="complex" source="./media/calc-final-verification.png" alt-text="Screenshot of a console window showing the final output after implementing changes to handle division by zero."::: + :::image type="complex" source="./media/vs-2026/calculator-final-verification.png" alt-text="Screenshot of a console window showing the final output after implementing changes to handle division by zero."::: The console window displays two lines: 10 / 0 Result is: inf, followed by, 10 / 0 Math error: Attempted to divide by zero. :::image-end::: > [!Note] - > When you edit code while in debugging mode, there's a risk of code becoming stale. This happens when the debugger is still running your old code, and has not yet updated it with your changes. The debugger displays a dialog to inform you when this happens. Sometimes, you may need to press **F5** to refresh the code being executed. In particular, if you make a change inside a function while the point of execution is inside that function, you need to step out of the function, then back into it again to get the updated code. If that doesn't work and you see an error message, you can stop debugging by clicking on the red square in the toolbar under the menus at the top of the IDE, then start debugging again by entering **F5** or by choosing the green "play" arrow beside the stop button on the toolbar. + > When you edit code while in debugging mode, there's a risk of code becoming stale. This happens when the debugger is still running your old code, and has not yet updated it with your changes. The debugger displays a dialog to inform you when this happens. Sometimes, you need to press **F5** to refresh the code being executed. + > + > In particular, if you make a change inside a function while the point of execution is inside that function, you need to step out of the function, then back into it again to get the updated code. If that doesn't work and you see an error message, select the red square to stop debugging, then start debugging again by pressing **F5** or by choosing the green play arrow beside the stop button on the toolbar. > > Another reason edit and continue may fail is if you see a message that says "The Require source files to exactly match the original version setting under Debug->Options->General needs to be enabled..." To fix this, from the main menu select **Tools** > **Options** > **Debugging** > **General** and ensure that **Require source files to exactly match the original version** is checked. > Understanding the Run and Debug shortcuts > - > - **F5**, or **Debug** > **Start Debugging**, starts a debugging session, if one isn't already active, and runs the program until a breakpoint is hit or the program needs user input. If no user input is needed and no breakpoint is available to hit, the program terminates and the console window closes itself when the program finishes running. If your program outputs to the console, use **Ctrl+F5** or set a breakpoint before you press **F5** to keep the window open. - > - **Ctrl+F5**, or **Debug** > **Start Without Debugging**, runs the application without going into debug mode. This is slightly faster than debugging, and the console window stays open after the program finishes executing. + > - **F5**, or **Debug** > **Start Debugging**, starts a debugging session, if one isn't already active, and runs the program until a breakpoint is hit or the program needs user input. If no user input is needed and no breakpoint is available to hit, the program terminates and the console window closes itself when the program finishes running. If your program outputs to the console, use **Ctrl**+**F5** or set a breakpoint before you press **F5** to keep the window open. + > - **Ctrl**+**F5**, or **Debug** > **Start Without Debugging**, runs the application without going into debug mode. This is slightly faster than debugging, and the console window stays open after the program finishes executing. > - **F10**, known as **Step Over**, lets you iterate through code, line-by-line, and visualize how the code is run and what variable values are at each step of execution. > - **F11**, known as **Step Into**, works similarly to **Step Over**, except it steps into any functions called on the line of execution. For example, if the line being executed calls a function, pressing **F11** moves the pointer into the body of the function, so you can follow the function's code being run before coming back to the line you started at. Pressing **F10** steps over the function call and just moves to the next line; the function call still happens, but the program doesn't pause to show you what it's doing. @@ -418,7 +421,7 @@ Congratulations! You completed the code for the calculator app, built and debugg ::: moniker range=" **New** > **Project**. The **New Project** window opens. -2. On the left sidebar, ensure that **Visual C++** is selected. In the center, select **Console App**. -3. In the **Name** textbox at the bottom, name the new project *CalculatorTutorial*, then select **OK**. +1. On the menu in Visual Studio, select **File** > **New** > **Project**. The **New Project** window opens. +1. On the left sidebar, ensure that **Visual C++** is selected. In the center, select **Console App**. +1. In the **Name** box at the bottom, name the new project *CalculatorTutorial*, then select **OK**. :::image type="complex" source="./media/calc-vs2017-new-project-dialog.png" alt-text="Screenshot of the New Project dialog."::: On the left, Other Languages > Visual C++ is selected. In the center, the Console App project type is selected. The Name text box contains CalculatorTutorial. :::image-end::: - An empty C++ Windows console application 'Hello World' app is created. Console applications use a Windows console window to display output and accept user input. In Visual Studio, an editor window opens and shows the generated code: + An empty C++ Windows console application "Hello World" app is created. Console applications use a Windows console window to display output and accept user input. In Visual Studio, an editor window opens and shows the generated code: ```cpp // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. @@ -465,11 +468,11 @@ Visual Studio uses *projects* to organize the code for an app, and *solutions* t The template for a new windows console application creates a simple C++ "Hello World" app. At this point, you can see how Visual Studio builds and runs the apps you create right from the IDE. -1. To build your project, select **Build Solution** from the **Build** menu. The **Output** window shows the results of the build process. +1. To build your project, from the **Build** menu, select **Build Solution**. The **Output** window shows the results of the build process. :::image type="content" source="./media/calculator-initial-build-output.png" alt-text="Screenshot of the Visual Studio Output window showing that the build was successful."::: -1. To run the code, on the menu bar, select **Debug**, **Start without debugging** (Ctrl+F5). +1. To run the code, on the menu bar, select **Debug**, **Start without debugging** (**Ctrl**+**F5**). :::image type="content" source="./media/calculator-hello-world-console.png" alt-text="Screenshot of the Visual Studio Debug Console showing the output: Hello World!"::: @@ -481,13 +484,13 @@ The template for a new windows console application creates a simple C++ "Hello W 1. Press a key to dismiss the console window and return to Visual Studio. -You now have the tools to build and run your app after every change, to verify that the code still works as you expect. Later, we show you how to debug it if it doesn't. +You now have the tools to build and run your app after every change, to verify that the code still works as you expect. Later, you learn how to debug it if it doesn't. ## Edit the code -Now let's turn the code in this template to be a calculator app. +Now modify the code in this template to be a calculator app. -1. Replace the contents of the *`CalculatorTutorial.cpp`* file with the following code so that it matches this example: +1. Replace the contents of the `CalculatorTutorial.cpp` file with the following code so that it matches this example: ```cpp // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. @@ -517,25 +520,25 @@ Now let's turn the code in this template to be a calculator app. > Understanding the code: > - > - The `#include` statement brings in code in other files. Sometimes, you may see a filename surrounded by angle brackets like ``. The angle brackets instruct the compiler to look for the `iostream` header file first in the standard system directories, and if not found, to look in directories specific to the project. Other times, you may see a filename surrounded by quotes like `"someHeader.h"`. The quotes instruct the compiler to skip looking in the standard system directories and instead only look in directories specific to the project. - > - The `using namespace std;` tells the compiler to expect code from the C++ Standard Library to be used in this file. Without this line, each keyword from the library would have to be preceded with `std::` to denote its scope. For instance, without that line, each reference to `cout` would be written as `std::cout`. The **`using`** statement is added to make it more convenient to access code in another namespace. + > - The `#include` statement brings in code in other files. Sometimes, you might see a filename surrounded by angle brackets like ``. The angle brackets instruct the compiler to look for the `iostream` header file first in the standard system directories, and if not found, to look in directories specific to the project. Other times, you might see a filename surrounded by quotes like `"someHeader.h"`. The quotes instruct the compiler to skip looking in the standard system directories and instead only look in directories specific to the project. + > - The `using namespace std;` tells the compiler to expect code from the C++ Standard Library to be used in this file. Without this line, each keyword from the library would have to be preceded with `std::` to denote its scope. For instance, without that line, each reference to `cout` would be written as `std::cout`. The `using` statement is added to make it more convenient to access code in another namespace. > - The `cout` keyword prints to standard output in C++. The `<<` operator tells the compiler to send whatever is to the right of it to the standard output. - > - The `endl` keyword is like the Enter key; it ends the line and moves the cursor to the next line. It's a better practice to put a `\n` inside the string (contained by `""`) to do the same thing because `endl` always flushes the buffer and can hurt the performance of the program. But since this is a very small app, `endl` is used instead. + > - The `endl` keyword is like the Enter key. It ends the line and moves the cursor to the next line. It's a better practice to put a `\n` inside the string (contained by `""`) to do the same thing because `endl` always flushes the buffer and can hurt the performance of the program. But since this is a very small app, `endl` is used instead. > - All C++ statements must end with semicolons and all C++ applications must contain a `main()` function. This function is what the program runs at the start. All code must be accessible from `main()` in order to be used. -1. To save the file, press **Ctrl+S**, or select the floppy disk icon in the toolbar under the menu bar. +1. To save the file, press **Ctrl**+**S**, or select the floppy disk icon in the toolbar under the menu bar. -1. To run the application, press **Ctrl+F5** or go to the **Debug** menu and select **Start Without Debugging**. If you get a pop-up that says **This project is out of date**, you may select **Do not show this dialog again**, and then select **Yes** to build your application. You should see a console window appear that looks like this: +1. To run the application, press **Ctrl**+**F5** or go to the **Debug** menu and select **Start Without Debugging**. If you get a dialog that says **This project is out of date**, you can select **Do not show this dialog again**, and then select **Yes** to build your application. You should see a console window appear that looks like this: :::image type="complex" source="./media/calculator-first-launch.png" alt-text="Screenshot of the calculator app running in a console window."::: - The console app shows the output which is: Calculator Console Application. Please enter the operation to perform. Format: a+b | a-b | a*b | a/b. The process exited with code 0 and there's a message that to automatically close the console when debugging stops, enable Tools > Options > Debugging > Automatically close the console when debugging stops. Lastly, there's a message to press any key to close this window. + The console app shows the output, which is: Calculator Console Application. Please enter the operation to perform. Format: a+b | a-b | a*b | a/b. The process exited with code 0 and there's a message that to automatically close the console when debugging stops, enable Tools > Options > Debugging > Automatically close the console when debugging stops. Lastly, there's a message to press any key to close this window. :::image-end::: 1. Close the console window when you're done. ## Add code to do some math -A class is like a blueprint for an object that does something. In this case, we define a calculator class to contain the math logic. +A class is like a blueprint for an object that does something. In this case, define a calculator class to contain the math logic. ### Add a Calculator class @@ -545,19 +548,19 @@ A class is like a blueprint for an object that does something. In this case, we The class name field contains the text calculator. The .h file field contains Calculator.h. The .cpp file field contains Calculator.cpp. The base class field is empty. The options for inline, and Managed are unchecked. :::image-end::: - A class is like a blueprint for an object that does something. In this case, we define a calculator and how it should work. + A class is like a blueprint for an object that does something. In this case, it defines a calculator and how it should work. - Two new files get added to your project. To save all your changed files at once, press **Ctrl+Shift+S**. It's a keyboard shortcut for **File** > **Save All**. There's also a toolbar button for **Save All**, an icon of two floppy disks, found beside the **Save** button. In general, it's good practice to do **Save All** frequently, so you don't miss any files when you save. + Two new files get added to your project. To save all your changed files at once, press **Ctrl**+**Shift**+**S**. It's a keyboard shortcut for **File** > **Save All**. There's also a toolbar button for **Save All**, an icon of two floppy disks, found beside the **Save** button. In general, it's good practice to do **Save All** frequently, so you don't miss any files when you save. - The **Add Class** wizard creates `.h` and `.cpp` files that have the same name as the class. You can see a full list of your project files in the **Solution Explorer** window, visible on the side of the IDE. If the **Solution Explorer** isn't visible, open it from the menu bar: select **View** > **Solution Explorer**. + The **Add Class** dialog creates `.h` and `.cpp` files that have the same name as the class. You can see a full list of your project files in the **Solution Explorer** window, visible on the side of the IDE. If the **Solution Explorer** isn't visible, open it from the menu bar: select **View** > **Solution Explorer**. :::image type="complex" source="./media/calculator-solution-explorer.png" alt-text="Screenshot of the Visual Studio Solution Explorer window."::: The calculator tutorial project has a header files node containing Calculator.h, stdafx.h, and targetver.h. A Source Files node contains Calculator.cpp, CalculatorTutorial.cpp, and stdafx.cpp. Nodes for references, external dependencies, and resource files are visible but closed. :::image-end::: - You can open a file by double-clicking it in the **Solution Explorer** window. Double-click `Calculator.h` to open it. + You can open a file by double-clicking it in the **Solution Explorer** window. To open `Calculator.h`, double-click it. -1. Replace the contents of **`Calculator.h`** with the following code so that the file now looks like this: +1. Replace the contents of `Calculator.h` the following code so that the file now looks like this: ```cpp #pragma once @@ -572,9 +575,9 @@ A class is like a blueprint for an object that does something. In this case, we > > - This code declares a new function called `Calculate`, which handles math operations for addition, subtraction, multiplication, and division. > - C++ code is organized into *header* (`.h`) files and *source* (`.cpp`) files. Some other file extensions are supported by various compilers, but these are the main ones to know about. Functions and variables are normally *declared*, that is, given a name and a type, in header files, and *implemented*, or given a definition, in source files. To access code defined in another file, you can use `#include "filename.h"`, where `filename.h` is the name of the file that declares the variables or functions you want to use. - > - It's good practice to organize your code into different files based on what it does, so it's easy to find the code you need later. In our case, we define the `Calculator` class separately from the file containing the `main()` function, but we plan to reference the `Calculator` class in `main()`. + > - It's good practice to organize your code into different files based on what it does, so it's easy to find the code you need later. In this case, you define the `Calculator` class separately from the file containing the `main()` function, but you reference the `Calculator` class in `main()`. -1. A green squiggle appears under `Calculate` because although the `Calculate` function is *declared*, it isn't *defined*. Hover over `Calculate`, click the down arrow on the light bulb, and select **Create definition of 'Calculate' in `Calculator.cpp`**. A pop-up appears that gives you a peek of the code change that was made in the other file. The code was added to *`Calculator.cpp`*. +1. A green squiggle appears under `Calculate` because although the `Calculate` function is *declared*, it isn't *defined*. Hover over `Calculate`, select the down arrow on the light bulb, and select **Create definition of 'Calculate' in `Calculator.cpp`**. A pop-up appears that gives you a peek of the code change that was made in the other file. The code was added to *`Calculator.cpp`*. :::image type="content" source="./media/calc-vs2017-create-definition.png" alt-text="Video showing using the light bulb dropdown to select Create definition of Calculate in Calculator.cpp."::: @@ -607,7 +610,7 @@ A class is like a blueprint for an object that does something. In this case, we > > - The function `Calculate` takes a number, an operator, and a second number. Then it performs the requested operation on the two numbers. > - The `switch` statement checks which operator was provided, and executes the case corresponding to that operation. The `default:` case is a fallback in case the user types an operator that isn't handled by any of the preceding `case` statements. It's best to handle invalid user input in a more elegant way, but this is beyond the scope of this tutorial. - > - The **`double`** keyword denotes a type of number that supports decimals. This type of number is called a floating-point number, and `double` means a floating point number that has extra precision. This way, the calculator can handle both decimal math and integer math. The `Calculate` function is required to always return a double-precision floating point number due to the **`double`** at the start of the code (this denotes the function's return type), which is why we return 0.0 in the default case. + > - The `double` keyword denotes a type of number that supports decimals. This type of number is called a **floating-point number**, and `double` means a floating point number that has extra precision. This way, the calculator can handle both decimal math and integer math. The `Calculate` function is required to always return a double-precision floating point number due to the `double` at the start of the code (this denotes the function's return type), which is why the program returns 0.0 in the default case. > - The `.h` file declares the function *prototype*, which tells the compiler upfront what parameters it requires, and what return type to expect from it. The `.cpp` file has all the implementation details of the function. If you build and run the code again at this point, it still exits after asking which operation to perform. Next, modify the `main` function to do some calculations. @@ -649,10 +652,10 @@ If you build and run the code again at this point, it still exits after asking w > Understanding the code > - > - Since C++ programs always start at the `main()` function, we need to call our other code from there, so an `#include` statement is needed to make that code visible to our `main()` function. + > - Since C++ programs always start at the `main()` function, you need to call our other code from there, so an `#include` statement is needed to make that code visible to our `main()` function. > - The variables `x`, `y`, `oper`, and `result` are declared to store the first number, second number, operator, and final result, respectively. It's always good practice to give them some initial values to avoid undefined behavior, which is what is done here. > - The `Calculator c;` line declares an object named `c` as an instance of the `Calculator` class. The class itself is just a blueprint for how calculators work; the object is the specific calculator that does the math. - > - The `while (true)` statement is a loop. The code inside the loop execute over and over again as long as the condition inside the `()` holds true. Since the condition is simply listed as **`true`**, it's always true, so the loop runs forever. To close the program, the user must manually close the console window. Otherwise, the program always waits for new input. + > - The `while (true)` statement is a loop. The code inside the loop execute over and over again as long as the condition inside the `()` holds true. Since the condition is simply listed as `true`, it's always true, so the loop runs forever. To close the program, the user must manually close the console window. Otherwise, the program always waits for new input. > - The `cin` keyword accepts input from the user. The input stream is smart enough to process a line of text entered in the console window and place it inside each of the variables listed, in order. > - The `c.Calculate(x, oper, y);` expression calls the `Calculate` function defined earlier, and supplies the entered input values and the requested operation. The function then returns a number that is stored in `result`. > - Finally, `result` is printed to the console and the user sees the result of the calculation. @@ -661,23 +664,24 @@ If you build and run the code again at this point, it still exits after asking w Test the program again to make sure everything works properly. -1. Press **Ctrl+F5** to rebuild and start the app. +1. Press **Ctrl**+**F5** to rebuild and start the app. 1. Enter `5+5`, and press **Enter**. Verify that the result is 10. - :::image type="content" source="./media/calculator-five-plus-five.png" alt-text="Screenshot of a command window running the Calculator app. It shows that the result of 5 + 5 is 10."::: + :::image type="content" source="./media/calculator-five-plus-five.png" alt-text="Screenshot of a command window running the Calculator app, showing that the result of 5 + 5 is 10."::: + 1. Stop the program by closing the console window. ## Debug the app -Since the user is free to type anything into the console window, let's make sure the calculator handles unexpected input. Instead of running the program, let's debug it instead, so we can inspect what it's doing step-by-step. +Since the user is free to type anything into the console window, make sure the calculator handles unexpected input. Instead of running the program, debug it, so you can see what it's doing step-by-step. ### Run the app in the debugger -1. In `CalcuatorTutorial.cpp`, set a breakpoint on the `result = c.Calculate(x, oper, y);` line. To set the breakpoint, click next to the line in the gray vertical bar along the left edge of the editor window so that a red dot appears. +1. In `CalcuatorTutorial.cpp`, set a breakpoint on the `result = c.Calculate(x, oper, y);` line. To set the breakpoint, select next to the line in the gray vertical bar along the left edge of the editor window so that a red dot appears. :::image type="content" source="./media/calc-vs2017-set-breakpoint.png" alt-text="Screenshot of the user setting a breakpoint on line 23: result = c.Calculate(x, oper, y);."::: - Now when you debug the program, it always pauses execution at that line. We already have a rough idea that the program works for simple cases. Since we don't want to pause execution every time, let's make the breakpoint conditional. + Now when you debug the program, it always pauses execution at that line. You already have a rough idea that the program works for simple cases. Since you don't want to pause execution every time, make the breakpoint conditional. 1. Right-click the red dot that represents the breakpoint, and select **Conditions**. In the edit box for the condition, enter `(y == 0) && (oper == '/')`. Select the **Close** button when you're done to save the breakpoint condition. @@ -685,47 +689,47 @@ Since the user is free to type anything into the console window, let's make sure The breakpoint is on the line: result = c dot Calculate ( x, oper, y). 'Conditions...' The Condition option is checked. The Conditions dropdown is set to "Conditional Expression". The condition dropdown is set to "Is true". The condition is set to y == 0 && oper == '/'. :::image-end::: - Execution will pause at the breakpoint if a division by 0 is attempted. + Execution pauses at the breakpoint if a division by 0 is attempted. -1. To debug the program, press **F5**, or select the **Local Windows Debugger** toolbar button that has the green arrow icon. In your console app, if you enter something like "5 - 0", the program behaves normally and keeps running. However, if you type "10 / 0", it pauses at the breakpoint. You can even put any number of spaces between the operator and numbers; `cin` is smart enough to parse the input appropriately. +1. To debug the program, press **F5**, or select the **Local Windows Debugger** toolbar button that has the green arrow icon. In your console app, if you enter something like *5 - 0*, the program behaves normally and keeps running. However, if you type *10 / 0*, it pauses at the breakpoint. You can even put any number of spaces between the operator and numbers; `cin` is smart enough to parse the input appropriately. - :::image type="complex" source="./media/calc-vs2017-debug-breakpoint.png" alt-text="Video showing the program execution paused at the conditional breakpoint."::: + :::image type="complex" source="./media/calc-vs2017-debug-breakpoint.png" alt-text="Screenshot showing the program execution paused at the conditional breakpoint."::: The user enters 5 - 0. The app outputs: Result is 5. The user then enters 10/0 and because the condition for the conditional breakpoint is met, execution stops on the line: result = c.Calculate(x, oper, y); :::image-end::: ### Useful windows in the debugger -When you debug your code, you may notice that some new windows appear. These windows can assist your debugging experience. Take a look at the **Autos** window. The **Autos** window shows you the current values of variables used at least three lines before and up to the current line. If you don't see the **Autos** window, from the main menu select **Debug** > **Windows** > **Autos**. +When you debug your code, you might notice that some new windows appear. These windows can assist your debugging experience. Take a look at the **Autos** window. The **Autos** window shows you the current values of variables used at least three lines before and up to the current line. If you don't see the **Autos** window, from the main menu, select **Debug** > **Windows** > **Autos**. :::image type="complex" source="./media/calculator-autos.png" alt-text="Screenshot of the Visual Studio debugger Autos window."::: The value of oper is 47 '/', result is 5, x is 10, and y is 0. :::image-end::: -To see all of the variables from that function, switch to the **Locals** window. Because this is a small function, the Autos and Locals window show the same variables. But you can modify the values of these variables while debugging, to see what effect they would have on the program. In this case, we leave them alone. Open the **Locals** window by selecting **Locals** at the bottom of the **Autos** window, or by selecting from the main menu **Debug** > **Windows** > **Locals**. +To see all of the variables from that function, switch to the **Locals** window. Because this function is small, the Autos and Locals window show the same variables. But you can modify the values of these variables while debugging, to see what effect they would have on the program. In this case, leave them alone. Open the **Locals** window by selecting **Locals** at the bottom of the **Autos** window, or by selecting from the main menu **Debug** > **Windows** > **Locals**. :::image type="complex" source="./media/calculator-locals.png" alt-text="Screenshot of the Locals window in Visual Studio, displaying the current values of local variables while debugging."::: The value of oper is 47 '/', result is 0, x is 10, and y is 0. :::image-end::: -You can also hover over variables in the code itself to see their current values where the execution is currently paused. Make sure the editor window is in focus by clicking on it first. +You can also hover over variables in the code itself to see their current values where the execution is currently paused. Select the editor window first to be sure it is in focus. - :::image type="content" source="./media/calc-vs2017-hover-tooltip.png" alt-text="Video demonstrating a tooltip that appears while hovering over the variable y. It displays y's current value, which is 0."::: + :::image type="content" source="./media/calc-vs2017-hover-tooltip.png" alt-text="Screenshot demonstrating a tooltip that appears while hovering over the variable y, which displays y's current value, which is 0."::: ### Continue debugging -1. The yellow arrow on the left shows the current point of execution. The current line calls `Calculate`, so press **F11** to **Step Into** the function, which takes you into the body of the `Calculate` function. Be careful with **Step Into** because it steps into any functions on the line you're on, including standard library functions. It's fine to step into the standard library, but you may be more interested in focusing on your code instead of library code. +1. The yellow arrow on the left shows the current point of execution. The current line calls `Calculate`, so press **F11** to **Step Into** the function, which takes you into the body of the `Calculate` function. Be careful with **Step Into** because it steps into any functions on the line you're on, including standard library functions. It's fine to step into the standard library, but you might be more interested in focusing on your code instead of library code. -1. Now that the point of execution is at the start of the `Calculate` function, press **F10** to move to the next line in the program's execution. **F10** is also known as **Step Over**. You can use **Step Over** to move from line to line, without delving into the details of what is occurring in each part of the line. In general you should use **Step Over** instead of **Step Into**, unless you want to dive more deeply into code that is being called from elsewhere (as you did to reach the body of `Calculate`). +1. Now that the point of execution is at the start of the `Calculate` function, press **F10** to move to the next line in the program's execution. **F10** is also known as **Step Over**. You can use **Step Over** to move from line to line, without delving into the details of what is occurring in each part of the line. In general you should use **Step Over** instead of **Step Into**, unless you want to dive more deeply into code that's being called from elsewhere (as you did to reach the body of `Calculate`). 1. Continue using **F10** to **Step Over** each line until you get back to the `main()` function in the other file, and stop on the `cout` line. - The program is doing what's expected: it takes the first number, and divides it by the second. On the `cout` line, hover over the `result` variable or take a look at `result` in the **Autos** window. Its value is `inf`, which doesn't look right. + The program is doing what you expect: it takes the first number, and divides it by the second. On the `cout` line, hover over the `result` variable or take a look at `result` in the **Autos** window. Its value is `inf`, which doesn't look right. :::image type="complex" source="./media/calc-vs2017-debug-inf.png" alt-text="Screenshot of debugging the calculator."::: The current statement in the debugger is cout << "Result is: " << result << endl; In the autos window, result is inf. :::image-end::: - Let's fix it. The `cout` line outputs whatever value is stored in `result`, so when you step one more line forward using **F10**, the console window displays: + You can fix it. The `cout` line outputs whatever value is stored in `result`, so when you step one more line forward using **F10**, the console window displays: :::image type="complex" source="./media/calc-divide-by-zero-fail.png" alt-text="Screenshot of the Visual Studio Debug Console displaying the result of a division by zero operation."::: The app outputs: Please enter the operation to perform. Format: a+b | a-b | a*b | a/b. The user entered 5-0. The app output: Result is: 5. The user entered 10/0. The app output: Result is: inf @@ -735,9 +739,9 @@ You can also hover over variables in the code itself to see their current values ### Fix the "divide by zero" error -Let's handle division by zero more gracefully so that it's easier for the user to understand the problem. +Handle division by zero more gracefully so that it's easier for the user to understand the problem. -1. Make the following changes in *`CalculatorTutorial.cpp`*. (You can leave the program running as you edit, thanks to a debugger feature called **Edit and Continue**). The change is to add an `if` statement following `cin >> x >> oper >> y;` to check for division by zero and output a message to the user if it happens. Otherwise, the result is printed: +1. Make the following changes in *`CalculatorTutorial.cpp`*. You can leave the program running as you edit, thanks to a debugger feature called *Edit and Continue*. The change is to add an `if` statement following `cin >> x >> oper >> y;` to check for division by zero and output a message to the user if it happens. Otherwise, the result is printed: ```cpp // CalculatorTutorial.cpp : This file contains the 'main' function. Program execution begins and ends there. @@ -783,9 +787,11 @@ Let's handle division by zero more gracefully so that it's easier for the user t :::image type="content" source="./media/calc-final-verification.png" alt-text="Video of the Debug Console showing the final result after code changes. 10 / 0 is entered and the program displays 'Division by 0 exception'."::: > [!Note] - > When you edit code while in debugging mode, there's a risk of code becoming stale. This happens when the debugger is still running your old code, and has not yet updated it with your changes. The debugger pops up a dialog to inform you when this happens. Sometimes, you may need to press **F5** to refresh the code being executed. In particular, if you make a change inside a function while the point of execution is inside that function, step out of the function, then back into it again to get the updated code. If that doesn't work for some reason and you see an error message, you can stop debugging by clicking on the red square in the toolbar under the menus at the top of the IDE, then start debugging again by entering **F5** or by choosing the green "play" arrow beside the stop button on the toolbar. + > When you edit code while in debugging mode, there's a risk of code becoming stale. This happens when the debugger is still running your old code, and has not yet updated it with your changes. The debugger provides a dialog to inform you when this happens. Sometimes, you need to press **F5** to refresh the code being executed. + > + > In particular, if you make a change inside a function while the point of execution is inside that function, step out of the function, then back into it again to get the updated code. If that doesn't work for some reason and you see an error message, select the red square to stop debugging, then start again by entering **F5** or by choosing the green "play" arrow beside the stop button on the toolbar. > - > Another reason edit and continue may fail is that you need to go to the main menu and select **Tools** > **Options** > **Debugging** > **General** and ensure that **Require source files to exactly match the original version** is checked. + > Another reason edit and continue might fail is that you need to go to the main menu and select **Tools** > **Options** > **Debugging** > **General** and ensure that **Require source files to exactly match the original version** is checked. > Understanding the Run and Debug shortcuts > From 5177c33b1e3426b0e0c503f9c6e7ed20be7f1749 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Mon, 27 Apr 2026 14:14:21 -0700 Subject: [PATCH 426/619] Update image name. --- ...or-definition.png => calculator-constructor.png} | Bin docs/get-started/tutorial-console-cpp.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/get-started/media/vs-2026/{calculator-ctor-definition.png => calculator-constructor.png} (100%) diff --git a/docs/get-started/media/vs-2026/calculator-ctor-definition.png b/docs/get-started/media/vs-2026/calculator-constructor.png similarity index 100% rename from docs/get-started/media/vs-2026/calculator-ctor-definition.png rename to docs/get-started/media/vs-2026/calculator-constructor.png diff --git a/docs/get-started/tutorial-console-cpp.md b/docs/get-started/tutorial-console-cpp.md index be21712c115..36c910018e5 100644 --- a/docs/get-started/tutorial-console-cpp.md +++ b/docs/get-started/tutorial-console-cpp.md @@ -180,7 +180,7 @@ A class is like a blueprint for an object that does something. In this case, def This code is added to `Calculator.cpp`: - :::image type="complex" source="./media/vs-2026/calculator-ctor-definition.png" alt-text="Screenshot of the Visual Studio editor showing the definition of the 'Calculate' function."::: + :::image type="complex" source="./media/vs-2026/calculator-constructor.png" alt-text="Screenshot of the Visual Studio editor showing the definition of the 'Calculate' function."::: The definition of the function is: double Calculator::Calculate( double x, char oper, double y) { return 0.0; } :::image-end::: From 04a0cdf38866411c0a68ba6716c6e1e8d66729df Mon Sep 17 00:00:00 2001 From: Michelle Matias Date: Mon, 27 Apr 2026 14:17:56 -0700 Subject: [PATCH 427/619] update flag volatileMetadata --- docs/build/reference/volatile.md | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/docs/build/reference/volatile.md b/docs/build/reference/volatile.md index fb3cced8479..4f133333193 100644 --- a/docs/build/reference/volatile.md +++ b/docs/build/reference/volatile.md @@ -1,13 +1,13 @@ --- description: "Learn more about: /volatileMetadata" title: "/volatileMetadata (Generate metadata on volatile memory accesses)" -ms.date: 5/30/2024 +ms.date: 04/27/2026 f1_keywords: ["/volatileMetadata"] helpviewer_keywords: ["/volatileMetadata", "-volatileMetadata compiler option", "/volatileMetadata compiler option", "volatileMetadata"] --- # `/volatileMetadata` (Generate metadata on volatile memory accesses) -Generate metadata for volatile memory accesses to improve performance when running x64 code on ARM64. +Generate metadata for volatile memory accesses to improve performance when running x64 or x86 code on ARM64. ## Syntax @@ -15,20 +15,14 @@ Generate metadata for volatile memory accesses to improve performance when runni /volatileMetadata[-] ``` -## Arguments - -**`-`**\ -Turns off `/volatileMetadata`. This may result in worse performance when your code runs in emulation mode on ARM64 because the emulator pessimistically assumes that every load/store needs a barrier. - ## Remarks -Starting with Visual Studio 2019 16.10, `/volatileMetadata` is on by default when generating x64 code. It improves the emulation performance of x64 code on ARM64 by generating metadata that identifies volatile memory addresses. An emulator can use this metadata to improve performance by not using acquire/release semantics on those accesses it knows aren't volatile. Without this metadata, the emulator assumes that all addresses are volatile and uses acquire and release semantics. +Starting with Visual Studio 2022 18.6, `/volatileMetadata` is off by default and must be explicitly enabled. To explicitly disable it, use `/volatileMetadata-`. `/volatileMetadata` improves the emulation performance of x64 and x86 code on ARM64 by generating metadata that identifies volatile memory addresses. An emulator can use this metadata to improve performance by not using acquire/release semantics on those accesses it knows aren't volatile. Without this metadata, the emulator assumes that all addresses are volatile and uses acquire and release semantics. One side effect of `/volatileMetadata` is you may see `npad` macros used in the generated code. This macro expands to a specified number of `NOP` instructions that create an address to associate with a memory barrier. That address is then recorded in the metadata to indicate that acquire/release semantics should be used to access it. -`/volatileMetadata` is ignored when targeting x86. - -`/volatileMetadata` can be disabled by using `/volatileMetadata-`. +> [!NOTE] +> In Visual Studio 2019 version 16.10 through Visual Studio 2022, `/volatileMetadata` was on by default. Starting with Visual Studio 2022 18.6, `/volatileMetadata` is off by default. ## Requirements From 45899aff07a749a60106342fe630d54085e9184b Mon Sep 17 00:00:00 2001 From: Tim Sherer <28902327+TimShererWithAquent@users.noreply.github.com> Date: Mon, 27 Apr 2026 14:25:45 -0700 Subject: [PATCH 428/619] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/get-started/includes/git-source-control.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/get-started/includes/git-source-control.md b/docs/get-started/includes/git-source-control.md index 502d9894eab..579f433cfea 100644 --- a/docs/get-started/includes/git-source-control.md +++ b/docs/get-started/includes/git-source-control.md @@ -10,7 +10,7 @@ ms.topic: include After you create an app, you might want to add it to a Git repository. We've got you covered. Visual Studio makes that process easy with Git tools you can use directly from the IDE. > [!TIP] -> Git is the most widely used modern version control system. Whether you're a professional developer or you're learning how to code, Git can be useful. If you're new to Git, the [https://git-scm.com/](https://git-scm.com/) website is a good place to start. There, you can find cheat sheets, a popular online book, and Git Basics videos. +> Git is the most widely used modern version control system. Whether you're a professional developer or you're learning how to code, Git can be useful. If you're new to Git, the [Git website](https://git-scm.com/) is a good place to start. There, you can find cheat sheets, a popular online book, and Git Basics videos. To associate your code with Git, you start by creating a new Git repository where your code is located. From 40ca4bfb6617574ba73537f11254b0242fd5c0df Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Mon, 27 Apr 2026 15:36:31 -0700 Subject: [PATCH 429/619] Freshness, in progress. --- .../use-github-copilot-create-cpp-console-app.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md index ab3637cfa2b..d0f3df49896 100644 --- a/docs/build/use-github-copilot-create-cpp-console-app.md +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -17,6 +17,7 @@ This tutorial shows you how to use GitHub Copilot to quickly create a C++ consol Conway's Game of Life was devised by mathematician John Conway. It consists of a grid of cells that can be either alive or dead. The game evolves automatically based on simple rules and produces complex, evolving patterns that demonstrate how intricate behavior can emerge from basic mathematical rules. GitHub Copilot is an AI-powered coding assistant that helps you write code faster, reduce errors, and explore new solutions. Some benefits of using Copilot when coding in C++: + - Generate entire C++ functions or classes as you type. - Suggest code completions based on plain-language comments or prompts. - Get help with complex algorithms, data structures, and standard library usage. @@ -31,6 +32,7 @@ GitHub Copilot is an AI-powered coding assistant that helps you write code faste - GitHub Copilot. For more information, see [Get started with GitHub Copilot](/visualstudio/ide/visual-studio-github-copilot-get-started). To verify you have the C++ workload installed: + 1. Open Visual Studio Installer 1. Select **Modify** next to your Visual Studio installation 1. Ensure **Desktop development with C++** is checked: @@ -43,7 +45,7 @@ For more information about installing Copilot, see [Manage GitHub Copilot instal ## Create a project -Visual Studio uses *projects* to organize the code for an app, and *solutions* to organize your projects. A project contains all the options, configurations, and rules used to build your apps. It manages the relationship between all the project's files and any external files. To create your app, first, create a new project and solution. +Visual Studio uses *projects* to organize the code for an app, and *solutions* to organize your projects. A project contains the options, configurations, and rules used to build your apps. It manages the relationship between the project's files and any external files. To create your app, first, create a new project and solution. 1. Open Visual Studio and select **Create a new project**. 1. Search for "Console App" and select the **Console App** template for C++. @@ -60,13 +62,14 @@ Visual Studio uses *projects* to organize the code for an app, and *solutions* t ## Use Copilot to create an app -You prompt Copilot by describing the functionality you want. In this section, you'll learn how to prompt Copilot to generate an implementation of Conway's Game of Life. +You prompt Copilot by describing the functionality you want. In this section, you learn how to prompt Copilot to generate an implementation of Conway's Game of Life. 1. Open the Copilot chat window by selecting the Copilot icon in the toolbar: :::image type="content" source="media/github-copilot-open-chat.png" alt-text="Screenshot of the GitHub icon dropdown. Open Chat Window is selected."::: 1. In the chat window, enter the following prompt: + ```copilot-prompt Create a C++ console application that implements Conway's Game of Life. The program should: - Use a 40x20 grid displayed with asterisks (*) for live cells and spaces for dead cells @@ -76,13 +79,14 @@ You prompt Copilot by describing the functionality you want. In this section, yo - Include proper headers and use standard C++ practices - Clear the console between generations to provide an animation effect ``` + 1. Copilot generates C++ code for Conway's Game of Life. 1. Copy the generated code and paste it into your empty `Life.cpp` file. 1. Build the project by pressing **F6** or selecting **Build > Build Solution**. 1. Run the program by pressing **F5** or **Ctrl+F5**. > [!NOTE] -> The exact code generated by Copilot may vary slightly from run to run and model to model, but the core functionality should be consistent. If the generated code doesn't compile immediately, you can ask Copilot to fix any compilation errors. Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). +> The exact code generated by Copilot might vary slightly from run to run and model to model, but the core functionality should be consistent. If the generated code doesn't compile immediately, you can ask Copilot to fix any compilation errors. Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). ### Example of typical generated code structure @@ -200,6 +204,7 @@ int main() return 0; } ``` + When you run the application, you should see an animated display of Conway's Game of Life with patterns evolving over time. To exit the program, press a key. :::image type="content" source="./media/life-exe.png" alt-text="Screenshot of Conway Life running in a command window, displaying the evolving grid of cells."::: @@ -244,7 +249,7 @@ To install **Desktop development with C++**, you can run the installer right fro - Ask Copilot to fix specific compilation errors by pasting the error message into Copilot chat. - Try refining your prompt to be more specific about what you want the app to do. -## Next steps +## Related content - [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) - [GitHub Copilot documentation](https://docs.github.com/en/copilot) - Dive deeper into AI-assisted development From 65ef6672eff8b4f33aa94d7a753fad29130700bc Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Mon, 27 Apr 2026 16:03:33 -0700 Subject: [PATCH 430/619] Freshness, in progress. --- ...-native-cpp-program-on-the-command-line.md | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md index f2bf932a35e..2baf8349eb8 100644 --- a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md +++ b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md @@ -16,7 +16,7 @@ In this walkthrough, you can use your own C++ program instead of typing the one ## Prerequisites -To complete this walkthrough, you must have installed either Visual Studio and the optional **Desktop development with C++** workload, or the command-line Build Tools for Visual Studio. +To complete this walkthrough, you must have either Visual Studio and the optional **Desktop development with C++** workload, or the command-line Build Tools for Visual Studio. Visual Studio is an *integrated development environment* (IDE). It supports a full-featured editor, resource managers, debuggers, and compilers for many languages and platforms. Versions available include the free Visual Studio Community edition, and all can support C and C++ development. For information on how to download and install Visual Studio, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). @@ -29,9 +29,9 @@ Before you can build a C or C++ program on the command line, verify that the too ### Open a developer command prompt -1. If you have installed Visual Studio 2017 or later on Windows 10 or later, open the Start menu and choose **All apps**. Scroll down and open the **Visual Studio** folder (not the Visual Studio application). Choose **Developer Command Prompt for VS** to open the command prompt window. +1. If you have Visual Studio 2017 or later on Windows 10 or later, open the Start menu and choose **All apps**. Scroll down and open the **Visual Studio** folder (not the Visual Studio application). Choose **Developer Command Prompt for VS** to open the command prompt window. - If you have installed Microsoft Visual Studio Build Tools 2015 on Windows 10 or later, open the **Start** menu and choose **All apps**. Scroll down and open the **Visual Studio Build Tools** folder. Choose **x86 Native Tools Command Prompt** to open the command prompt window. + If you have Microsoft Visual Studio Build Tools 2015 on Windows 10 or later, open the **Start** menu and choose **All apps**. Scroll down and open the **Visual Studio Build Tools** folder. Choose **x86 Native Tools Command Prompt** to open the command prompt window. You can also use the Windows search function to search for "developer command prompt" and choose one that matches your installed version of Visual Studio. Use the shortcut to open the command prompt window. @@ -45,12 +45,12 @@ Before you can build a C or C++ program on the command line, verify that the too usage: cl [ option... ] filename... [ /link linkoption... ] ``` - There may be differences in the current directory or version numbers. These values depend on the version of MSVC and any updates installed. If the above output is similar to what you see, then you're ready to build C or C++ programs at the command line. + There might be differences in the current directory or version numbers. These values depend on the version of MSVC and any updates installed. If the output is similar to what you see, then you're ready to build C or C++ programs at the command line. > [!NOTE] - > If you get an error such as "'cl' is not recognized as an internal or external command, operable program or batch file," error C1034, or error LNK1104 when you run the **`cl`** command, then either you are not using a developer command prompt, or something is wrong with your installation of MSVC. You must fix this issue before you can continue. + > If you get an error such as "'cl' isn't recognized as an internal or external command, operable program or batch file," error C1034, or error LNK1104 when you run the **`cl`** command, then either you aren't using a developer command prompt, or something is wrong with your installation of MSVC. You must fix this issue before you can continue. - If you can't find the developer command prompt shortcut, or if you get an error message when you enter `cl`, then your MSVC installation may have a problem. Try reinstalling the MSVC component in Visual Studio or Visual Studio Build Tools. Don't go on to the next section until the **`cl`** command works. For more information about installing and troubleshooting MSVC, see [Install Visual Studio](/visualstudio/install/install-visual-studio). + If you can't find the developer command prompt shortcut, or if you get an error message when you enter `cl`, then your MSVC installation might have a problem. Try reinstalling the MSVC component in Visual Studio or Visual Studio Build Tools. Don't go on to the next section until the **`cl`** command works. For more information about installing and troubleshooting MSVC, see [Install Visual Studio](/visualstudio/install/install-visual-studio). > [!NOTE] > Depending on the version of Windows on the computer and the system security configuration, you might have to right-click to open the shortcut menu for the developer command prompt shortcut and then choose **Run as administrator** to successfully build and run the program that you create by following this walkthrough. @@ -74,11 +74,11 @@ Before you can build a C or C++ program on the command line, verify that the too } ``` - This code is a simple program that will write one line of text on the screen and then exit. To minimize errors, copy this code and paste it into Notepad. + This code is a simple program that writes one line of text on the screen and then exit. To minimize errors, copy this code and paste it into Notepad. 1. Save your work! In Notepad, on the **File** menu, choose **Save**. - Congratulations, you've created a C++ source file, hello.cpp, that is ready to compile. + Congratulations! You created a C++ source file, *hello.cpp*, that's ready to compile. 1. Switch back to the developer command prompt window. Enter `dir` at the command prompt to list the contents of the c:\hello directory. You should see the source file hello.cpp in the directory listing, which looks something like: @@ -100,7 +100,9 @@ Before you can build a C or C++ program on the command line, verify that the too The dates and other details will differ on your computer. > [!NOTE] - > If you don't see your source code file, *`hello.cpp`*, make sure the current working directory in your command prompt is the *`C:\hello`* directory you created. Also make sure that this is the directory where you saved your source file. And make sure that you saved the source code with a *`.cpp`* file name extension, not a *`.txt`* extension. Your source file gets saved in the current directory as a *`.cpp`* file automatically if you open Notepad at the command prompt by using the **`notepad hello.cpp`** command. Notepad's behavior is different if you open it another way: By default, Notepad appends a *`.txt`* extension to new files when you save them. It also defaults to saving files in your *Documents* directory. To save your file with a *`.cpp`* extension in Notepad, choose **File** > **Save As**. In the **Save As** dialog, navigate to your *`C:\hello`* folder in the directory tree view control. Then use the **Save as type** dropdown control to select **All Files (\*.\*)**. Enter *`hello.cpp`* in the **File name** edit control, and then choose **Save** to save the file. + > If you don't see your source code file, *`hello.cpp`*, make sure the current working directory in your command prompt is the *`C:\hello`* directory you created. Also make sure that this location is the directory where you saved your source file. And make sure that you saved the source code with a *`.cpp`* file name extension, not a *`.txt`* extension. Your source file gets saved in the current directory as a *`.cpp`* file automatically if you open Notepad at the command prompt by using the **`notepad hello.cpp`** command. + > + > Notepad's behavior is different if you open it another way: By default, Notepad appends a *`.txt`* extension to new files when you save them. It also defaults to saving files in your *Documents* directory. To save your file with a *`.cpp`* extension in Notepad, choose **File** > **Save As**. In the **Save As** dialog, navigate to your *`C:\hello`* folder in the directory tree view control. Then use the **Save as type** dropdown control to select **All Files (\*.\*)**. Enter *`hello.cpp`* in the **File name** edit control, and then choose **Save** to save the file. 1. At the developer command prompt, enter `cl /EHsc hello.cpp` to compile your program. @@ -120,7 +122,7 @@ Before you can build a C or C++ program on the command line, verify that the too ``` > [!NOTE] - > If you get an error such as "'cl' is not recognized as an internal or external command, operable program or batch file," error C1034, or error LNK1104, your developer command prompt is not set up correctly. For information on how to fix this issue, go back to the **Open a developer command prompt** section. + > If you get an error such as "'cl' isn't recognized as an internal or external command, operable program or batch file," error C1034, or error LNK1104, your developer command prompt isn't set up correctly. For information on how to fix this issue, go back to the **Open a developer command prompt** section. > [!NOTE] > If you get a different compiler or linker error or warning, review your source code to correct any errors, then save it and run the compiler again. For information about specific errors, use the search box to look for the error number. @@ -133,21 +135,21 @@ Before you can build a C or C++ program on the command line, verify that the too Hello, world, from Microsoft C++! ``` - Congratulations, you've compiled and run a C++ program by using the command-line tools. + Congratulations! You compiled and run a C++ program by using the command-line tools. ## Next steps This "Hello, World" example is about as simple as a C++ program can get. Real world programs usually have header files, more source files, and link to libraries. -You can use the steps in this walkthrough to build your own C++ code instead of typing the sample code shown. These steps also let you build many C++ code sample programs that you find elsewhere. You can put your source code and build your apps in any writeable directory. By default, the Visual Studio IDE creates projects in your user folder, in a *source\\repos* subfolder. Older versions may put projects in a *Documents\\Visual Studio \\\Projects* folder. +You can use the steps in this walkthrough to build your own C++ code instead of typing the sample code shown. These steps also let you build many C++ code sample programs that you find elsewhere. You can put your source code and build your apps in any writeable directory. By default, the Visual Studio IDE creates projects in your user folder, in a *source\\repos* subfolder. Older versions might put projects in a *Documents\\Visual Studio \\\Projects* folder. -To compile a program that has additional source code files, enter them all on the command line, like: +To compile a program that has other source code files, enter them all on the command line, like: `cl /EHsc file1.cpp file2.cpp file3.cpp` The `/EHsc` command-line option instructs the compiler to enable standard C++ exception handling behavior. Without it, thrown exceptions can result in undestroyed objects and resource leaks. For more information, see [/EH (Exception Handling Model)](reference/eh-exception-handling-model.md). -When you supply additional source files, the compiler uses the first input file to create the program name. In this case, it outputs a program called file1.exe. To change the name to program1.exe, add an [/out](reference/out-output-file-name.md) linker option: +When you supply other source files, the compiler uses the first input file to create the program name. In this case, it outputs a program called file1.exe. To change the name to program1.exe, add an [/out](reference/out-output-file-name.md) linker option: `cl /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe` From 079a50417ea74ec627772664b319d23fc6edbb00 Mon Sep 17 00:00:00 2001 From: Tim Sherer <28902327+TimShererWithAquent@users.noreply.github.com> Date: Tue, 28 Apr 2026 08:08:35 -0700 Subject: [PATCH 431/619] Fix heading from 'Next steps' to 'Next step' --- docs/get-started/tutorial-console-cpp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/get-started/tutorial-console-cpp.md b/docs/get-started/tutorial-console-cpp.md index 36c910018e5..5f577d958f9 100644 --- a/docs/get-started/tutorial-console-cpp.md +++ b/docs/get-started/tutorial-console-cpp.md @@ -413,7 +413,7 @@ You can handle division by zero more gracefully so that it's easier for the user Congratulations! You completed the code for the calculator app, built and debugged it, and added it to a repo, all in Visual Studio. -## Next steps +## Next step [Learn more about Visual Studio for C++](https://devblogs.microsoft.com/cppblog/getting-started-with-visual-studio-for-c-and-cpp-development/) @@ -808,7 +808,7 @@ Handle division by zero more gracefully so that it's easier for the user to unde Congratulations! You completed the code for the calculator app, and built and debugged it in Visual Studio. -## Next steps +## Next step [Learn more about Visual Studio for C++](https://devblogs.microsoft.com/cppblog/getting-started-with-visual-studio-for-c-and-cpp-development/) From 9cdbaf1e2297ee201e66a69760d337fcb2e2770c Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Tue, 28 Apr 2026 12:41:41 -0700 Subject: [PATCH 432/619] Freshness. --- .../media/vs-2026/choose-console-app.png | Bin 0 -> 43085 bytes .../github-copilot-fix-warning-accept.png | Bin 0 -> 17253 bytes .../vs-2026/github-copilot-fix-warning.png | Bin 0 -> 24563 bytes .../vs-2026/github-copilot-open-chat.png | Bin 0 -> 5909 bytes ...e-github-copilot-create-cpp-console-app.md | 38 +++++++++--------- 5 files changed, 19 insertions(+), 19 deletions(-) create mode 100644 docs/build/media/vs-2026/choose-console-app.png create mode 100644 docs/build/media/vs-2026/github-copilot-fix-warning-accept.png create mode 100644 docs/build/media/vs-2026/github-copilot-fix-warning.png create mode 100644 docs/build/media/vs-2026/github-copilot-open-chat.png diff --git a/docs/build/media/vs-2026/choose-console-app.png b/docs/build/media/vs-2026/choose-console-app.png new file mode 100644 index 0000000000000000000000000000000000000000..e74f21d38f58fb75bce216ea8709a93246ddaadd GIT binary patch literal 43085 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 z zr=9oy^!8VBu}}hR!#p}K{?Xauzgsl^1K~5(Rzx12(Cza17)VT_ZqPz$F?*;T_}zac z5K*LAvm=x*;5GM$e!pj)$(p39$jEbj8mqJ4#*4AkexwWb8hpPv|{dzB6)J~(8{oifhzbHRytKC1YM)gN+TlA~Bavu! z_w42eHhM66Hraf=dR_NM*1PV;3My=9XecZ!Y;%^r z-fw3hP)-HHQ`#FD&g#(}^e=Jlz%tLJO~TRapP-=3>Z&8pZ*`}7hFM00+j`!_p$r+snr}p{q6O4E$YfKm|sk7mary!qPM(3+P98@>1s__#nk9bVg5yW znC689L|;dgHcX_yPi(UY0AoI<_Ptj-|7N^E2CVZ-c+1?IFV>TXV|su$8GwC`Omj~k zBc%Hx)vU&Ma8pvk*A@3r)vLB<=z)J;d|0+hH-|Mdb zEwbVQ>9wAud{?I@Ig*K3i^)$<=JS2wVHT6cC(ih3tsjMj=he|sCbw%H4DHk!BNLk| zINnp=tN#C`ga2O(pYk$m%5KP3>8_LX%vr2H{@sq%#Ej#T-?X&m`jDN+t4g7m=Y@WJ)@o#x!l=5eSim=XPYnNW) z^y<5?4a45NtfRt}=UIB=QF`%duHS5MFNdfXwY5Ak`E~E}1xafzJ>-D(Nd-O tyxkB5o?~?N+Q!Q$Nm{e6I{A^(wCVK!%L4BfF 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 literal 0 HcmV?d00001 diff --git a/docs/build/media/vs-2026/github-copilot-fix-warning-accept.png b/docs/build/media/vs-2026/github-copilot-fix-warning-accept.png new file mode 100644 index 0000000000000000000000000000000000000000..06c1d036e2d8afced77d3fb7d1b98736ed038637 GIT binary patch literal 17253 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 literal 0 HcmV?d00001 diff --git a/docs/build/media/vs-2026/github-copilot-fix-warning.png b/docs/build/media/vs-2026/github-copilot-fix-warning.png new file mode 100644 index 0000000000000000000000000000000000000000..c5a5cbffd1f893f4cb426e17ff0982ceeb8598ca GIT binary patch literal 24563 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

    eeCyH7J)aia(^Krcc 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 C^K#4p literal 0 HcmV?d00001 diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md index d0f3df49896..6fb9cf0c98e 100644 --- a/docs/build/use-github-copilot-create-cpp-console-app.md +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -1,13 +1,14 @@ --- title: Use AI to create a C++ console application in Visual Studio -description: "Learn how to use GitHub Copilot to create a C++ app using Microsoft C++ in Visual Studio." -ms.date: 10/24/2025 +description: "Learn how to use GitHub Copilot to create an example C++ console app using Microsoft C++ in Visual Studio." +ms.date: 04/29/2026 ms.topic: "tutorial" ms.collection: ce-skilling-ai-copilot ms.custom: - ai-assisted - copilot-scenario-highlight ms.update-cycle: 180-days +#customer intent: As a C++ developer, I want to be able to use GitHub Copilot to create, troubleshoot, and understand C++ code in Microsoft Visual Studio. --- # Use AI to create a C++ console application in Visual Studio @@ -33,11 +34,11 @@ GitHub Copilot is an AI-powered coding assistant that helps you write code faste To verify you have the C++ workload installed: -1. Open Visual Studio Installer -1. Select **Modify** next to your Visual Studio installation +1. Open Visual Studio Installer. +1. Select **Modify** next to your Visual Studio installation. 1. Ensure **Desktop development with C++** is checked: - :::image type="content" source="media/desktop-development-cpp-workload.png" alt-text="Screenshot of the Visual Studio Installer with the Workloads tab selected. Desktop development with c++ is selected."::: + :::image type="content" source="media/desktop-development-cpp-workload.png" alt-text="Screenshot of the Visual Studio Installer with the Workloads tab selected and Desktop Development with C++ selected."::: 1. If it isn't installed, select it and choose **Modify**. @@ -48,16 +49,16 @@ For more information about installing Copilot, see [Manage GitHub Copilot instal Visual Studio uses *projects* to organize the code for an app, and *solutions* to organize your projects. A project contains the options, configurations, and rules used to build your apps. It manages the relationship between the project's files and any external files. To create your app, first, create a new project and solution. 1. Open Visual Studio and select **Create a new project**. -1. Search for "Console App" and select the **Console App** template for C++. +1. Search for *Console App* and select the **Console App** template for C++. - :::image type="complex" source="media/vs2019-choose-console-app.png" alt-text="Screenshot of the Create a new project dialog."::: + :::image type="complex" source="media/vs-2026/choose-console-app.png" alt-text="Screenshot of the Create a new project dialog."::: The Create a new project dialog is shown with the Console App template selected. The template says: Run code in a windows terminal. Prints hello world by default. Has the tags c++, Windows, and Console. :::image-end::: 1. Select **Next**. -1. Set the project name to **Life** and choose the location for the project. +1. Set the project name to *Life* and choose the location for the project. 1. Select **Create**. -1. Once the project opens, find the `Life.cpp` file in Solution Explorer. +1. After the project opens, find the `Life.cpp` file in Solution Explorer. 1. Open `Life.cpp` and delete the default "Hello, World!" code to start with a clean slate. ## Use Copilot to create an app @@ -66,7 +67,7 @@ You prompt Copilot by describing the functionality you want. In this section, yo 1. Open the Copilot chat window by selecting the Copilot icon in the toolbar: - :::image type="content" source="media/github-copilot-open-chat.png" alt-text="Screenshot of the GitHub icon dropdown. Open Chat Window is selected."::: + :::image type="content" source="media/vs-2026/github-copilot-open-chat.png" alt-text="Screenshot of the GitHub icon dropdown. Open Chat Window is selected."::: 1. In the chat window, enter the following prompt: @@ -80,17 +81,16 @@ You prompt Copilot by describing the functionality you want. In this section, yo - Clear the console between generations to provide an animation effect ``` -1. Copilot generates C++ code for Conway's Game of Life. -1. Copy the generated code and paste it into your empty `Life.cpp` file. -1. Build the project by pressing **F6** or selecting **Build > Build Solution**. -1. Run the program by pressing **F5** or **Ctrl+F5**. +1. Copilot generates C++ code for Conway's Game of Life. Copy the generated code and paste it into your empty `Life.cpp` file. +1. Build the project by pressing **F6** or selecting **Build** > **Build Solution**. +1. Run the program by pressing **F5** or **Ctrl**+**F5**. > [!NOTE] > The exact code generated by Copilot might vary slightly from run to run and model to model, but the core functionality should be consistent. If the generated code doesn't compile immediately, you can ask Copilot to fix any compilation errors. Copilot is powered by AI, so surprises and mistakes are possible. For more information, see [Copilot FAQs](https://aka.ms/copilot-general-use-faqs). ### Example of typical generated code structure -Your generated code will likely include these key components: +Your generated code likely includes these key components: - Headers for console manipulation, random number generation, and timing - A 2D array or vector to represent the game grid @@ -211,11 +211,11 @@ When you run the application, you should see an animated display of Conway's Gam In the preceding code example, the code generates a warning: `Return value ignored: '_getch'`. You can ask Copilot to fix it. Select the code editor and press **Alt+/** (Windows) to open the Copilot chat, then enter: -:::image type="content" source="./media/github-copilot-fix-warning.png" alt-text="Screenshot of the Copilot chat window. The text: Fix warning C6031 is in the chat window."::: +:::image type="content" source="./media/vs-2026/github-copilot-fix-warning.png" alt-text="Screenshot of the Copilot chat window. The text: Fix warning C6031 is in the chat window."::: Copilot suggests a fix to handle the return value properly. To accept the changes, select **Tab**: -:::image type="content" source="./media/github-copilot-fix-warning-accept.png" alt-text="Screenshot of the Copilot proposed changes. Tab to accept. Alt+Del to discard."::: +:::image type="content" source="./media/vs-2026/github-copilot-fix-warning-accept.png" alt-text="Screenshot of the Copilot proposed changes, explanation to use Tab to accept or Alt+Del to discard."::: Congratulations! You successfully used GitHub Copilot to create a fully functional Conway's Game of Life console application in C++. You learned how to: @@ -235,14 +235,14 @@ For better results with Copilot, see these prompting resources: ### Missing console app template -The **New Project** dialog should show a **Console App** template that has **C++**, **Windows**, and **Console** tags. If you don't see it, it might be filtered out of the list, or it might not be installed. First, check the filter dropdowns at the top of the list of templates. Set them to **C++**, **Windows**, and **Console**. The C++ **Console App** template should appear; otherwise, the **Desktop development with C++** workload isn't installed. +The **New Project** dialog should show a **Console App** template that has **C++**, **Windows**, and **Console** tags. If you don't see it, it might be filtered out of the list, or it might not be installed. First, check the filter menus at the top of the list of templates. Set them to **C++**, **Windows**, and **Console**. The C++ **Console App** template should appear; otherwise, the **Desktop development with C++** workload isn't installed. To install **Desktop development with C++**, you can run the installer right from the **Create a new project** dialog. Choose the **Install more tools and features** link at the bottom of the **Create a new project** dialog, beneath the list of templates. If the **User Account Control** dialog requests permissions, choose **Yes**. In the installer, make sure the **Desktop development with C++** workload is checked. Then choose **Modify** to update your Visual Studio installation. ### Copilot not responding - Ensure you have an active GitHub Copilot subscription. -- Try signing out and back into your GitHub account in Visual Studio +- Try signing out and back into your GitHub account in Visual Studio. ### Generated code doesn't compile From 0390ed7424b60c75b97c8de0c170d95fcf1aed64 Mon Sep 17 00:00:00 2001 From: Tim Sherer <28902327+TimShererWithAquent@users.noreply.github.com> Date: Tue, 28 Apr 2026 13:02:36 -0700 Subject: [PATCH 433/619] Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/build/use-github-copilot-create-cpp-console-app.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md index 6fb9cf0c98e..6c870c2f01a 100644 --- a/docs/build/use-github-copilot-create-cpp-console-app.md +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -52,7 +52,7 @@ Visual Studio uses *projects* to organize the code for an app, and *solutions* t 1. Search for *Console App* and select the **Console App** template for C++. :::image type="complex" source="media/vs-2026/choose-console-app.png" alt-text="Screenshot of the Create a new project dialog."::: - The Create a new project dialog is shown with the Console App template selected. The template says: Run code in a windows terminal. Prints hello world by default. Has the tags c++, Windows, and Console. + The Create a new project dialog is shown with the Console App template selected. The template says: Run code in a Windows Terminal. Prints Hello World by default. Has the tags C++, Windows, and Console. :::image-end::: 1. Select **Next**. @@ -252,5 +252,5 @@ To install **Desktop development with C++**, you can run the installer right fro ## Related content - [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) -- [GitHub Copilot documentation](https://docs.github.com/en/copilot) - Dive deeper into AI-assisted development +- [GitHub Copilot documentation](https://docs.github.com/copilot) - Dive deeper into AI-assisted development - [Awesome ChatGPT Prompts](https://github.com/f/awesome-chatgpt-prompts) - Community-driven prompting examples for inspiration \ No newline at end of file From 36c23ef8c29dae07fe289102da862557e3495aae Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Tue, 28 Apr 2026 13:08:25 -0700 Subject: [PATCH 434/619] Alt text fixes. --- docs/build/use-github-copilot-create-cpp-console-app.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md index 6c870c2f01a..ce880922b87 100644 --- a/docs/build/use-github-copilot-create-cpp-console-app.md +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -67,7 +67,7 @@ You prompt Copilot by describing the functionality you want. In this section, yo 1. Open the Copilot chat window by selecting the Copilot icon in the toolbar: - :::image type="content" source="media/vs-2026/github-copilot-open-chat.png" alt-text="Screenshot of the GitHub icon dropdown. Open Chat Window is selected."::: + :::image type="content" source="media/vs-2026/github-copilot-open-chat.png" alt-text="Screenshot of the GitHub icon with Open Chat selected."::: 1. In the chat window, enter the following prompt: @@ -211,7 +211,7 @@ When you run the application, you should see an animated display of Conway's Gam In the preceding code example, the code generates a warning: `Return value ignored: '_getch'`. You can ask Copilot to fix it. Select the code editor and press **Alt+/** (Windows) to open the Copilot chat, then enter: -:::image type="content" source="./media/vs-2026/github-copilot-fix-warning.png" alt-text="Screenshot of the Copilot chat window. The text: Fix warning C6031 is in the chat window."::: +:::image type="content" source="./media/vs-2026/github-copilot-fix-warning.png" alt-text="Screenshot of the Copilot chat window where you can ask Copilot to fix an issue."::: Copilot suggests a fix to handle the return value properly. To accept the changes, select **Tab**: From d2d1bb1654f9e7160875f9c21ac96fb315b97cdb Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Tue, 28 Apr 2026 15:03:52 -0700 Subject: [PATCH 435/619] Freshness. --- ...-native-cpp-program-on-the-command-line.md | 66 ++++++++++--------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md index 2baf8349eb8..2193b636cfb 100644 --- a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md +++ b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md @@ -1,10 +1,11 @@ --- title: "Walkthrough: Compiling a Native C++ Program on the Command Line" -description: "Use the Microsoft C++ compiler from a command prompt." +description: "Learn how to use the Microsoft C++ compiler from a command prompt to compile and run C++ code by using a simple example." ms.custom: "conceptual" -ms.date: 03/25/2021 +ms.date: 04/29/2026 helpviewer_keywords: ["native code [C++]", "Visual C++, native code", "compiling programs [C++]", "command-line applications [C++], native"] ms.assetid: b200cfd1-0440-498f-90ee-7ecf92492dc0 +#customer intent: As a C++ developer, I want to build and run programs by using the command line. --- # Walkthrough: Compiling a Native C++ Program on the Command Line @@ -12,7 +13,7 @@ Visual Studio includes a command-line C and C++ compiler. You can use it to crea In this walkthrough, you create a basic, "Hello, World"-style C++ program by using a text editor, and then compile it on the command line. If you'd like to try the Visual Studio IDE instead of using the command line, see [Walkthrough: Working with Projects and Solutions (C++)](../ide/walkthrough-working-with-projects-and-solutions-cpp.md) or [Using the Visual Studio IDE for C++ Desktop Development](../ide/using-the-visual-studio-ide-for-cpp-desktop-development.md). -In this walkthrough, you can use your own C++ program instead of typing the one that's shown. Or, you can use a C++ code sample from another help article. +In this walkthrough, you can use your own C++ program instead of typing the one used here. Or, you can use a C++ code sample from another article. ## Prerequisites @@ -20,22 +21,24 @@ To complete this walkthrough, you must have either Visual Studio and the optiona Visual Studio is an *integrated development environment* (IDE). It supports a full-featured editor, resource managers, debuggers, and compilers for many languages and platforms. Versions available include the free Visual Studio Community edition, and all can support C and C++ development. For information on how to download and install Visual Studio, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). -The Build Tools for Visual Studio installs only the command-line compilers, tools, and libraries you need to build C and C++ programs. It's perfect for build labs or classroom exercises and installs relatively quickly. To install only the command-line tools, look for Build Tools for Visual Studio on the [Visual Studio Downloads](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022) page. +The Build Tools for Visual Studio installs only the command-line compilers, tools, and libraries you need to build C and C++ programs. It's perfect for build labs or classroom exercises and installs relatively quickly. To install only the command-line tools, look for *Build Tools for Visual Studio* in [Visual Studio Downloads](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2026). -Before you can build a C or C++ program on the command line, verify that the tools are installed, and you can access them from the command line. Microsoft C++ (MSVC) has complex requirements for the command-line environment to find the tools, headers, and libraries it uses. **You can't use Microsoft C++ in a plain command prompt window** without doing some preparation. Fortunately, Microsoft C++ installs shortcuts for you to launch a developer command prompt that has the environment set up for command line builds. Unfortunately, the names of the developer command prompt shortcuts and where they're located are different in almost every version of Visual Studio and on different versions of Windows. Your first walkthrough task is finding the right one to use. +Before you can build a C or C++ program on the command line, verify that the tools are installed, and you can access them from the command line. Microsoft C++ (MSVC) has complex requirements for the command-line environment to find the tools, headers, and libraries it uses. + +You can't use Microsoft C++ in a plain command prompt window without doing some preparation. Microsoft C++ installs shortcuts for you to launch a developer command prompt that has the environment set up for command line builds. Unfortunately, the names of the developer command prompt shortcuts and where they're located are different in almost every version of Visual Studio and on different versions of Windows. Your first walkthrough task is finding the right one to use. > [!NOTE] > A developer command prompt shortcut automatically sets the correct paths for the compiler and tools, and for any required headers and libraries. You must set these environment values yourself if you use a regular **Command Prompt** window. For more information, see [Use the MSVC toolset from the command line](./building-on-the-command-line.md). We recommend you use a developer command prompt shortcut instead of building your own. ### Open a developer command prompt -1. If you have Visual Studio 2017 or later on Windows 10 or later, open the Start menu and choose **All apps**. Scroll down and open the **Visual Studio** folder (not the Visual Studio application). Choose **Developer Command Prompt for VS** to open the command prompt window. +1. If you have Visual Studio 2017 or later on Windows 10 or later, open the **Start** menu and choose **All apps**. Scroll down and open the **Visual Studio** folder (not the Visual Studio application). Choose **Developer Command Prompt for VS** to open the command prompt window. If you have Microsoft Visual Studio Build Tools 2015 on Windows 10 or later, open the **Start** menu and choose **All apps**. Scroll down and open the **Visual Studio Build Tools** folder. Choose **x86 Native Tools Command Prompt** to open the command prompt window. - You can also use the Windows search function to search for "developer command prompt" and choose one that matches your installed version of Visual Studio. Use the shortcut to open the command prompt window. + You can also use the Windows search function to search for *developer command prompt* and choose one that matches your installed version of Visual Studio. Use the shortcut to open the command prompt window. -1. Next, verify that the C++ developer command prompt is set up correctly. In the command prompt window, enter `cl` and verify that the output looks something like this: +1. Verify that the C++ developer command prompt is set up correctly. In the command prompt window, enter `cl` and verify that the output looks something like this: ```Output C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise>cl @@ -45,15 +48,15 @@ Before you can build a C or C++ program on the command line, verify that the too usage: cl [ option... ] filename... [ /link linkoption... ] ``` - There might be differences in the current directory or version numbers. These values depend on the version of MSVC and any updates installed. If the output is similar to what you see, then you're ready to build C or C++ programs at the command line. +There might be differences in the current directory or version numbers. These values depend on the version of MSVC and any updates installed. If the output is similar to what you see, then you're ready to build C or C++ programs at the command line. - > [!NOTE] - > If you get an error such as "'cl' isn't recognized as an internal or external command, operable program or batch file," error C1034, or error LNK1104 when you run the **`cl`** command, then either you aren't using a developer command prompt, or something is wrong with your installation of MSVC. You must fix this issue before you can continue. +> [!NOTE] +> If you get an error such as "'cl' isn't recognized as an internal or external command, operable program or batch file," error C1034, or error LNK1104 when you run the `cl` command, you aren't using a developer command prompt, or something is wrong with your installation of MSVC. You must fix this issue before you can continue. - If you can't find the developer command prompt shortcut, or if you get an error message when you enter `cl`, then your MSVC installation might have a problem. Try reinstalling the MSVC component in Visual Studio or Visual Studio Build Tools. Don't go on to the next section until the **`cl`** command works. For more information about installing and troubleshooting MSVC, see [Install Visual Studio](/visualstudio/install/install-visual-studio). +If you can't find the developer command prompt shortcut, or if you get an error message when you enter `cl`, then your MSVC installation might have a problem. Try reinstalling the MSVC component in Visual Studio or Visual Studio Build Tools. Don't go on to the next section until the `cl` command works. For more information about installing and troubleshooting MSVC, see [Install Visual Studio](/visualstudio/install/install-visual-studio). - > [!NOTE] - > Depending on the version of Windows on the computer and the system security configuration, you might have to right-click to open the shortcut menu for the developer command prompt shortcut and then choose **Run as administrator** to successfully build and run the program that you create by following this walkthrough. +> [!NOTE] +> Depending on the version of Windows on the computer and the system security configuration, you might have to right-click to open the shortcut menu for the developer command prompt shortcut and then choose **Run as administrator** to successfully build and run the program that you create by following this walkthrough. ### Create a C++ source file and compile it on the command line @@ -84,23 +87,23 @@ Before you can build a C or C++ program on the command line, verify that the too ```Output c:\hello>dir - Volume in drive C has no label. - Volume Serial Number is CC62-6545 + Volume in drive C is Local Disk + Volume Serial Number is AA11-BB22 - Directory of c:\hello - - 05/24/2016 05:36 PM

    . - 05/24/2016 05:36 PM .. - 05/24/2016 05:37 PM 115 hello.cpp - 1 File(s) 115 bytes - 2 Dir(s) 571,343,446,016 bytes free + Directory of C:\hello + 04/28/2026 01:26 PM . + 04/28/2026 01:26 PM .. + 04/28/2026 01:27 PM 117 hello.cpp + 1 File(s) 117 bytes ``` The dates and other details will differ on your computer. > [!NOTE] - > If you don't see your source code file, *`hello.cpp`*, make sure the current working directory in your command prompt is the *`C:\hello`* directory you created. Also make sure that this location is the directory where you saved your source file. And make sure that you saved the source code with a *`.cpp`* file name extension, not a *`.txt`* extension. Your source file gets saved in the current directory as a *`.cpp`* file automatically if you open Notepad at the command prompt by using the **`notepad hello.cpp`** command. + > If you don't see your source code file, *`hello.cpp`*, make sure the current working directory in your command prompt is the *`C:\hello`* directory you created. Also make sure that this location is the directory where you saved your source file. + > + > Make sure that you saved the source code with a *`.cpp`* file name extension, not a *`.txt`* extension. Your source file gets saved in the current directory as a *`.cpp`* file automatically if you open Notepad at the command prompt by using the **`notepad hello.cpp`** command. > > Notepad's behavior is different if you open it another way: By default, Notepad appends a *`.txt`* extension to new files when you save them. It also defaults to saving files in your *Documents* directory. To save your file with a *`.cpp`* extension in Notepad, choose **File** > **Save As**. In the **Save As** dialog, navigate to your *`C:\hello`* folder in the directory tree view control. Then use the **Save as type** dropdown control to select **All Files (\*.\*)**. Enter *`hello.cpp`* in the **File name** edit control, and then choose **Save** to save the file. @@ -123,8 +126,7 @@ Before you can build a C or C++ program on the command line, verify that the too > [!NOTE] > If you get an error such as "'cl' isn't recognized as an internal or external command, operable program or batch file," error C1034, or error LNK1104, your developer command prompt isn't set up correctly. For information on how to fix this issue, go back to the **Open a developer command prompt** section. - - > [!NOTE] + > > If you get a different compiler or linker error or warning, review your source code to correct any errors, then save it and run the compiler again. For information about specific errors, use the search box to look for the error number. 1. To run the hello.exe program, at the command prompt, enter `hello`. @@ -149,11 +151,11 @@ To compile a program that has other source code files, enter them all on the com The `/EHsc` command-line option instructs the compiler to enable standard C++ exception handling behavior. Without it, thrown exceptions can result in undestroyed objects and resource leaks. For more information, see [/EH (Exception Handling Model)](reference/eh-exception-handling-model.md). -When you supply other source files, the compiler uses the first input file to create the program name. In this case, it outputs a program called file1.exe. To change the name to program1.exe, add an [/out](reference/out-output-file-name.md) linker option: +When you supply other source files, the compiler uses the first input file to create the program name. In this case, it outputs a program called *file1.exe*. To change the name to *program1.exe*, add an [/out](reference/out-output-file-name.md) linker option: `cl /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe` -And to catch more programming mistakes automatically, we recommend you compile by using either the [/W3](reference/compiler-option-warning-level.md) or [/W4](reference/compiler-option-warning-level.md) warning level option: +To catch more programming mistakes automatically, we recommend you compile by using either the [/W3](reference/compiler-option-warning-level.md) or [/W4](reference/compiler-option-warning-level.md) warning level option: `cl /W4 /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe` @@ -165,8 +167,8 @@ The C and C++ languages are similar, but not the same. The MSVC compiler uses a The MSVC compiler includes a C Runtime Library (CRT) that conforms to the ISO C99 standard, with minor exceptions. Portable code generally compiles and runs as expected. Certain obsolete library functions, and several POSIX function names, are deprecated by the MSVC compiler. The functions are supported, but the preferred names have changed. For more information, see [Security Features in the CRT](../c-runtime-library/security-features-in-the-crt.md) and [Compiler Warning (level 3) C4996](../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). -## See also +## Related content -[C++ Language Reference](../cpp/cpp-language-reference.md)
    -[Projects and build systems](projects-and-build-systems-cpp.md)
    -[MSVC Compiler Options](reference/compiler-options.md) +- [C++ Language Reference](../cpp/cpp-language-reference.md) +- [Projects and build systems](projects-and-build-systems-cpp.md) +- [MSVC Compiler Options](reference/compiler-options.md) From 01b0817fd223295756f5b3c0515cd13c813e27ac Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Tue, 28 Apr 2026 15:46:11 -0700 Subject: [PATCH 436/619] Incorporate feedback. --- ...ing-a-native-cpp-program-on-the-command-line.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md index 2193b636cfb..a242faba11f 100644 --- a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md +++ b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md @@ -77,7 +77,7 @@ If you can't find the developer command prompt shortcut, or if you get an error } ``` - This code is a simple program that writes one line of text on the screen and then exit. To minimize errors, copy this code and paste it into Notepad. + This code is a simple program that writes one line of text on the screen and then exits. To minimize errors, copy this code and paste it into Notepad. 1. Save your work! In Notepad, on the **File** menu, choose **Save**. @@ -101,11 +101,11 @@ If you can't find the developer command prompt shortcut, or if you get an error The dates and other details will differ on your computer. > [!NOTE] - > If you don't see your source code file, *`hello.cpp`*, make sure the current working directory in your command prompt is the *`C:\hello`* directory you created. Also make sure that this location is the directory where you saved your source file. + > If you don't see your source code file, *hello.cpp*, make sure the current working directory in your command prompt is the *C:\hello* directory you created. Also make sure that this location is the directory where you saved your source file. > - > Make sure that you saved the source code with a *`.cpp`* file name extension, not a *`.txt`* extension. Your source file gets saved in the current directory as a *`.cpp`* file automatically if you open Notepad at the command prompt by using the **`notepad hello.cpp`** command. + > Make sure that you saved the source code with a `.cpp` file name extension, not a `.txt` extension. Your source file gets saved in the current directory as a `.cpp` file automatically if you open Notepad at the command prompt by using the `notepad hello.cpp` command. > - > Notepad's behavior is different if you open it another way: By default, Notepad appends a *`.txt`* extension to new files when you save them. It also defaults to saving files in your *Documents* directory. To save your file with a *`.cpp`* extension in Notepad, choose **File** > **Save As**. In the **Save As** dialog, navigate to your *`C:\hello`* folder in the directory tree view control. Then use the **Save as type** dropdown control to select **All Files (\*.\*)**. Enter *`hello.cpp`* in the **File name** edit control, and then choose **Save** to save the file. + > Notepad's behavior is different if you open it another way: By default, Notepad appends a `.txt` extension to new files when you save them. It also defaults to saving files in your *Documents* directory. To save your file with a *.cpp* extension in Notepad, choose **File** > **Save As**. In the **Save As** dialog, navigate to your *C:\hello* folder in the directory tree view control. Then use the **Save as type** dropdown control to select **All Files (\*.\*)**. Enter *hello.cpp* in the **File name** edit control, and then choose **Save** to save the file. 1. At the developer command prompt, enter `cl /EHsc hello.cpp` to compile your program. @@ -129,7 +129,7 @@ If you can't find the developer command prompt shortcut, or if you get an error > > If you get a different compiler or linker error or warning, review your source code to correct any errors, then save it and run the compiler again. For information about specific errors, use the search box to look for the error number. -1. To run the hello.exe program, at the command prompt, enter `hello`. +1. To run the hello.exe program, at the command prompt, enter *hello*. The program displays this text and exits: @@ -137,13 +137,13 @@ If you can't find the developer command prompt shortcut, or if you get an error Hello, world, from Microsoft C++! ``` - Congratulations! You compiled and run a C++ program by using the command-line tools. + Congratulations! You compiled and ran a C++ program by using the command-line tools. ## Next steps This "Hello, World" example is about as simple as a C++ program can get. Real world programs usually have header files, more source files, and link to libraries. -You can use the steps in this walkthrough to build your own C++ code instead of typing the sample code shown. These steps also let you build many C++ code sample programs that you find elsewhere. You can put your source code and build your apps in any writeable directory. By default, the Visual Studio IDE creates projects in your user folder, in a *source\\repos* subfolder. Older versions might put projects in a *Documents\\Visual Studio \\\Projects* folder. +You can use the steps in this walkthrough to build your own C++ code instead of typing the sample code shown. These steps also let you build many C++ code sample programs that you find elsewhere. You can put your source code and build your apps in any writable directory. By default, the Visual Studio IDE creates projects in your user folder, in a *source\\repos* subfolder. Older versions might put projects in a *Documents\\Visual Studio \{version}\\Projects* folder. To compile a program that has other source code files, enter them all on the command line, like: From f988816d2128fdbd0ca73f68e60134dc0d907cd7 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Wed, 29 Apr 2026 08:42:42 -0700 Subject: [PATCH 437/619] Last look edits. --- ...-native-cpp-program-on-the-command-line.md | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md index a242faba11f..18ec3988786 100644 --- a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md +++ b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md @@ -60,13 +60,13 @@ If you can't find the developer command prompt shortcut, or if you get an error ### Create a C++ source file and compile it on the command line -1. In the developer command prompt window, enter `md c:\hello` to create a directory, and then enter `cd c:\hello` to change to that directory. This directory is where both your source file and the compiled program get created. +1. In the developer command prompt window, enter `md C:\hello` to create a directory, and then enter `cd C:\hello` to change to that directory. This directory is where both your source file and the compiled program get created. 1. Enter `notepad hello.cpp` in the command prompt window. - Choose **Yes** when Notepad prompts you to create a new file. This step opens a blank Notepad window, ready for you to enter your code in a file named hello.cpp. + Choose **Yes** when Notepad prompts you to create a new file. This step opens a blank Notepad window, ready for you to enter your code in a file named *hello.cpp*. -1. In Notepad, enter the following lines of code: +1. In Notepad, enter the following code: ```cpp #include @@ -83,10 +83,10 @@ If you can't find the developer command prompt shortcut, or if you get an error Congratulations! You created a C++ source file, *hello.cpp*, that's ready to compile. -1. Switch back to the developer command prompt window. Enter `dir` at the command prompt to list the contents of the c:\hello directory. You should see the source file hello.cpp in the directory listing, which looks something like: +1. Switch back to the developer command prompt window. Enter `dir` at the command prompt to list the contents of the `C:\hello` directory. You should see the source file *hello.cpp* in the directory listing, which looks something like: ```Output - c:\hello>dir + C:\hello>dir Volume in drive C is Local Disk Volume Serial Number is AA11-BB22 @@ -112,7 +112,7 @@ If you can't find the developer command prompt shortcut, or if you get an error The cl.exe compiler generates an .obj file that contains the compiled code, and then runs the linker to create an executable program named hello.exe. This name appears in the lines of output information that the compiler displays. The output of the compiler should look something like: ```Output - c:\hello>cl /EHsc hello.cpp + C:\hello>cl /EHsc hello.cpp Microsoft (R) C/C++ Optimizing Compiler Version 19.10.25017 for x86 Copyright (C) Microsoft Corporation. All rights reserved. @@ -147,17 +147,23 @@ You can use the steps in this walkthrough to build your own C++ code instead of To compile a program that has other source code files, enter them all on the command line, like: -`cl /EHsc file1.cpp file2.cpp file3.cpp` +```cmd +cl /EHsc file1.cpp file2.cpp file3.cpp +``` The `/EHsc` command-line option instructs the compiler to enable standard C++ exception handling behavior. Without it, thrown exceptions can result in undestroyed objects and resource leaks. For more information, see [/EH (Exception Handling Model)](reference/eh-exception-handling-model.md). When you supply other source files, the compiler uses the first input file to create the program name. In this case, it outputs a program called *file1.exe*. To change the name to *program1.exe*, add an [/out](reference/out-output-file-name.md) linker option: -`cl /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe` +```cmd +cl /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe +``` To catch more programming mistakes automatically, we recommend you compile by using either the [/W3](reference/compiler-option-warning-level.md) or [/W4](reference/compiler-option-warning-level.md) warning level option: -`cl /W4 /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe` +```cmd +cl /W4 /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe +``` The compiler, cl.exe, has many more options. You can apply them to build, optimize, debug, and analyze your code. For a quick list, enter `cl /?` at the developer command prompt. You can also compile and link separately and apply linker options in more complex build scenarios. For more information on compiler and linker options and usage, see [C/C++ Building Reference](reference/c-cpp-building-reference.md). From 4c854f9d0c2f6ac75b3aaa373c966f883c1e1f34 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Thu, 30 Apr 2026 15:41:41 -0700 Subject: [PATCH 438/619] Freshness, in progress. --- ...a-64-bit-visual-cpp-toolset-on-the-command-line.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md b/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md index e551b430faf..3a53b3d7b42 100644 --- a/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md +++ b/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md @@ -1,12 +1,13 @@ --- -description: "Learn more about: How to: Enable a 64-Bit, x64 hosted MSVC toolset on the command line" title: "How to: Enable a 64-Bit MSVC Toolset on the Command Line" +description: "Learn how to enable a 64-Bit, x64 hosted MSVC toolset on the command line. You can create apps that run on 32-bit, 64-bit, or ARM-based operating systems." ms.date: "07/24/2019" helpviewer_keywords: ["x64 [C++]", "64-bit compiler [C++], command line usage", "64-bit compiler [C++], toolset enabling at command line", "command line [C++], 64-bit compiler", "Itanium [C++], command-line compiler", "IPF", "Itanium [C++]", "IPF, command-line compiler", "x64 [C++], command-line compiler"] +#customer intent: --- # How to: Enable a 64-Bit, x64 hosted MSVC toolset on the command line -Visual Studio includes C++ compilers, linkers, and other tools that you can use to create platform-specific versions of your apps that can run on 32-bit, 64-bit, or ARM-based Windows operating systems. Other optional Visual Studio workloads let you use C++ tools to target other platforms, such as iOS, Android, and Linux. The default build architecture uses 32-bit, x86-hosted tools to build 32-bit, x86-native Windows code. However, you probably have a 64-bit computer. When Visual Studio is installed on a 64-bit Windows operating system, additional developer command prompt shortcuts for the 64-bit, x64-hosted native and cross compilers are available. You can take advantage of the processor and memory space available to 64-bit code by using the 64-bit, x64-hosted toolset when you build code for x86, x64, or ARM processors. +Visual Studio includes C++ compilers, linkers, and other tools that you can use to create platform-specific versions of your apps. You can create versions that run on 32-bit, 64-bit, or ARM-based Windows operating systems. Other optional Visual Studio workloads let you use C++ tools to target other platforms, such as iOS, Android, and Linux. The default build architecture uses 32-bit, x86-hosted tools to build 32-bit, x86-native Windows code. However, you probably have a 64-bit computer. When Visual Studio is installed on a 64-bit Windows operating system, other developer command prompt shortcuts for the 64-bit, x64-hosted native, and cross compilers are available. You can take advantage of the processor and memory space available to 64-bit code by using the 64-bit, x64-hosted toolset when you build code for x86, x64, or ARM processors. ## Use a 64-bit hosted developer command prompt shortcut @@ -25,11 +26,11 @@ Any of the native or cross compiler tools build configurations can be used on th ## Remarks > [!NOTE] -> For information about the specific tools that are included with each Visual Studio edition, see [Visual C++ Tools and Features in Visual Studio Editions](../overview/visual-cpp-tools-and-features-in-visual-studio-editions.md). +> For information about the specific tools that are included with each Visual Studio edition, see [C++ Tools and Features in Visual Studio Editions](../overview/visual-cpp-tools-and-features-in-visual-studio-editions.md). > -> For information about how to use the Visual Studio IDE to create 64-bit applications, see [How to: Configure Microsoft C++ Projects to Target 64-Bit, x64 Platforms](how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). +> For information about how to use the Visual Studio IDE to create 64-bit applications, see [How to: Configure Visual Studio C++ Projects to Target 64-Bit, x64 Platforms](how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). -When you install a C++ workload in the Visual Studio installer, it always installs 32-bit, x86-hosted, native and cross compiler tools to build x86 and x64 code. If you include the Universal Windows Platform workload, it also installs x86-hosted cross compiler tools to build ARM code. If you install these workloads on a 64-bit, x64 processor, you also get 64-bit native and cross compiler tools to build x86, x64, and ARM code. The 32-bit and 64-bit tools generate identical code, but the 64-bit tools support more memory for precompiled header symbols and the Whole Program Optimization ([/GL](reference/gl-whole-program-optimization.md) and [/LTCG](reference/ltcg-link-time-code-generation.md)) options. If you run into memory limits when you use the 32-bit tools, try the 64-bit tools. +When you install a C++ workload in the Visual Studio installer, it always installs 32-bit, x86-hosted, native, and cross compiler tools to build x86 and x64 code. If you include the Universal Windows Platform workload, it also installs x86-hosted cross compiler tools to build ARM code. If you install these workloads on a 64-bit, x64 processor, you also get 64-bit native and cross compiler tools to build x86, x64, and ARM code. The 32-bit and 64-bit tools generate identical code, but the 64-bit tools support more memory for precompiled header symbols and the Whole Program Optimization ([/GL](reference/gl-whole-program-optimization.md) and [/LTCG](reference/ltcg-link-time-code-generation.md)) options. If you run into memory limits when you use the 32-bit tools, try the 64-bit tools. ## See also From 38f0d8acf0d7ba98d3ad2a8ab52d4fcea6812a62 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Fri, 1 May 2026 09:16:32 -0700 Subject: [PATCH 439/619] Freshness. --- ...-visual-cpp-toolset-on-the-command-line.md | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md b/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md index 3a53b3d7b42..10ffdec2e8a 100644 --- a/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md +++ b/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md @@ -1,37 +1,41 @@ --- title: "How to: Enable a 64-Bit MSVC Toolset on the Command Line" -description: "Learn how to enable a 64-Bit, x64 hosted MSVC toolset on the command line. You can create apps that run on 32-bit, 64-bit, or ARM-based operating systems." -ms.date: "07/24/2019" +description: "Learn how to enable a 64-Bit, x64 hosted MSVC toolset on the command line. Use this toolset to create apps that run on 32-bit, 64-bit, or ARM-based systems." +ms.date: "05/04/2026" helpviewer_keywords: ["x64 [C++]", "64-bit compiler [C++], command line usage", "64-bit compiler [C++], toolset enabling at command line", "command line [C++], 64-bit compiler", "Itanium [C++], command-line compiler", "IPF", "Itanium [C++]", "IPF, command-line compiler", "x64 [C++], command-line compiler"] -#customer intent: +#customer intent: As a cross-platform developer, I need the toolset installed with Visuals Studio to build code for x86, x64, or ARM processors. --- # How to: Enable a 64-Bit, x64 hosted MSVC toolset on the command line -Visual Studio includes C++ compilers, linkers, and other tools that you can use to create platform-specific versions of your apps. You can create versions that run on 32-bit, 64-bit, or ARM-based Windows operating systems. Other optional Visual Studio workloads let you use C++ tools to target other platforms, such as iOS, Android, and Linux. The default build architecture uses 32-bit, x86-hosted tools to build 32-bit, x86-native Windows code. However, you probably have a 64-bit computer. When Visual Studio is installed on a 64-bit Windows operating system, other developer command prompt shortcuts for the 64-bit, x64-hosted native, and cross compilers are available. You can take advantage of the processor and memory space available to 64-bit code by using the 64-bit, x64-hosted toolset when you build code for x86, x64, or ARM processors. +Visual Studio includes C++ compilers, linkers, and other tools that you can use to create platform-specific versions of your apps. You can create versions that run on 32-bit, 64-bit, or ARM-based Windows operating systems. Other optional Visual Studio workloads let you use C++ tools to target other platforms, such as iOS, Android, and Linux. The default build architecture uses 32-bit, x86-hosted tools to build 32-bit, x86-native Windows code. + +You probably have a 64-bit computer. When Visual Studio is installed on a 64-bit Windows operating system, other developer command prompt shortcuts for the 64-bit, x64-hosted native, and cross compilers are available. You can take advantage of the processor and memory space available to 64-bit code by using the 64-bit, x64-hosted toolset when you build code for x86, x64, or ARM processors. ## Use a 64-bit hosted developer command prompt shortcut -To access these command prompts on Windows, on the **Start** menu type `x64` and then choose one of the x64 native or cross-tool developer command prompts. +To access these command prompts on Windows, on the **Start** menu, type `x64` and then choose one of the x64 native or cross-tool developer command prompts. :::image type="complex" source="./media/x64-native-tools-command-prompt.png" alt-text="Screenshot showing the start menu with x64 in the search box and the x64 Native Tools Command Prompt shortcut selected."::: If you have different versions of Visual Studio installed, other versions of the prompt appear. Choose the prompt for the version of Visual Studio that you want to use. :::image-end::: -On earlier versions of Windows, choose **Start**, expand **All Programs**, and then expand the folder for your version of **Visual Studio** (and on older versions of Visual Studio, **Visual Studio Tools**). For more information, see [Developer command prompt shortcuts](building-on-the-command-line.md#developer_command_prompt_shortcuts). +On earlier versions of Windows, choose **Start**, expand **All Programs**, and then expand the folder for your version of **Visual Studio**. For older versions of Visual Studio, this folder is **Visual Studio Tools**. For more information, see [Developer command prompt shortcuts](building-on-the-command-line.md#developer_command_prompt_shortcuts). ## Use Vcvarsall.bat to set a 64-bit hosted build architecture -Any of the native or cross compiler tools build configurations can be used on the command line by running the vcvarsall.bat command file. This command file configures the path and environment variables that enable a particular build architecture in an existing command prompt window. For specific instructions, see [Developer command file locations](building-on-the-command-line.md#developer_command_file_locations). +Any of the native or cross compiler tools build configurations can be used on the command line by running the *vcvarsall.bat* command file. This command file configures the path and environment variables that enable a particular build architecture in an existing command prompt window. For more information, see [Developer command file locations](building-on-the-command-line.md#developer_command_file_locations). ## Remarks +When you install a C++ workload in the Visual Studio installer, it always installs 32-bit, x86-hosted, native, and cross compiler tools to build x86 and x64 code. If you include the Universal Windows Platform workload, it also installs x86-hosted cross compiler tools to build ARM code. + +If you install these workloads on a 64-bit, x64 processor, you also get 64-bit native and cross compiler tools to build x86, x64, and ARM code. The 32-bit and 64-bit tools generate identical code, but the 64-bit tools support more memory for precompiled header symbols and the Whole Program Optimization ([/GL](reference/gl-whole-program-optimization.md) and [/LTCG](reference/ltcg-link-time-code-generation.md)) options. If you run into memory limits when you use the 32-bit tools, try the 64-bit tools. + > [!NOTE] > For information about the specific tools that are included with each Visual Studio edition, see [C++ Tools and Features in Visual Studio Editions](../overview/visual-cpp-tools-and-features-in-visual-studio-editions.md). > > For information about how to use the Visual Studio IDE to create 64-bit applications, see [How to: Configure Visual Studio C++ Projects to Target 64-Bit, x64 Platforms](how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). -When you install a C++ workload in the Visual Studio installer, it always installs 32-bit, x86-hosted, native, and cross compiler tools to build x86 and x64 code. If you include the Universal Windows Platform workload, it also installs x86-hosted cross compiler tools to build ARM code. If you install these workloads on a 64-bit, x64 processor, you also get 64-bit native and cross compiler tools to build x86, x64, and ARM code. The 32-bit and 64-bit tools generate identical code, but the 64-bit tools support more memory for precompiled header symbols and the Whole Program Optimization ([/GL](reference/gl-whole-program-optimization.md) and [/LTCG](reference/ltcg-link-time-code-generation.md)) options. If you run into memory limits when you use the 32-bit tools, try the 64-bit tools. - -## See also +## Related content -[Configure C++ projects for 64-bit, x64 targets](configuring-programs-for-64-bit-visual-cpp.md)
    +- [Configure C++ projects for 64-bit, x64 targets](configuring-programs-for-64-bit-visual-cpp.md)
    From d3422201135055a74d727cd879cf67c87f873d41 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Fri, 1 May 2026 09:31:48 -0700 Subject: [PATCH 440/619] Fixes from Copilot. --- ...nable-a-64-bit-visual-cpp-toolset-on-the-command-line.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md b/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md index 10ffdec2e8a..a41c25f50cb 100644 --- a/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md +++ b/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md @@ -3,7 +3,7 @@ title: "How to: Enable a 64-Bit MSVC Toolset on the Command Line" description: "Learn how to enable a 64-Bit, x64 hosted MSVC toolset on the command line. Use this toolset to create apps that run on 32-bit, 64-bit, or ARM-based systems." ms.date: "05/04/2026" helpviewer_keywords: ["x64 [C++]", "64-bit compiler [C++], command line usage", "64-bit compiler [C++], toolset enabling at command line", "command line [C++], 64-bit compiler", "Itanium [C++], command-line compiler", "IPF", "Itanium [C++]", "IPF, command-line compiler", "x64 [C++], command-line compiler"] -#customer intent: As a cross-platform developer, I need the toolset installed with Visuals Studio to build code for x86, x64, or ARM processors. +#customer intent: As a cross-platform developer, I need the toolset installed with Visual Studio to build code for x86, x64, or ARM processors. --- # How to: Enable a 64-Bit, x64 hosted MSVC toolset on the command line @@ -21,7 +21,7 @@ If you have different versions of Visual Studio installed, other versions of the On earlier versions of Windows, choose **Start**, expand **All Programs**, and then expand the folder for your version of **Visual Studio**. For older versions of Visual Studio, this folder is **Visual Studio Tools**. For more information, see [Developer command prompt shortcuts](building-on-the-command-line.md#developer_command_prompt_shortcuts). -## Use Vcvarsall.bat to set a 64-bit hosted build architecture +## Use vcvarsall.bat to set a 64-bit hosted build architecture Any of the native or cross compiler tools build configurations can be used on the command line by running the *vcvarsall.bat* command file. This command file configures the path and environment variables that enable a particular build architecture in an existing command prompt window. For more information, see [Developer command file locations](building-on-the-command-line.md#developer_command_file_locations). @@ -38,4 +38,4 @@ If you install these workloads on a 64-bit, x64 processor, you also get 64-bit n ## Related content -- [Configure C++ projects for 64-bit, x64 targets](configuring-programs-for-64-bit-visual-cpp.md)
    +- [Configure C++ projects for 64-bit, x64 targets](configuring-programs-for-64-bit-visual-cpp.md) From b8bf6c232cd346226da52b78fcf271669972bc5e Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Fri, 1 May 2026 10:29:31 -0700 Subject: [PATCH 441/619] Freshness. --- docs/overview/compiler-versions.md | 72 ++++++++++++++++-------------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index f1502c60088..920398bc1ae 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -1,39 +1,42 @@ --- -description: "Learn more about Microsoft C++ compiler versioning." -title: "Microsoft C++ (MSVC) compiler versioning" -ms.date: 02/12/2025 +title: "Microsoft C++ compiler versioning" +description: "Visual Studio includes a Microsoft C++ (MSVC) compiler. Learn about the versioning system used for the compiler." +ms.date: 05/04/2026 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] +#customer intent: As a C++ developer using Visual Studio, I need to be aware of different versions of the Microsoft C++ compiler for consistency in my organization's production process. --- -# Microsoft C++ (MSVC) compiler versioning +# Microsoft C++ compiler versioning The Microsoft C++ (MSVC) compiler version consists of four fields: -M - major version (two digits)\ -N - minor version (two digits)\ -B - build version (five digits)\ -R - revision version +- M: major version (two digits) +- N: minor version (two digits) +- B: build version (five digits) +- R: revision version Microsoft-specific compiler macros encode these fields as follows: -`_MSC_VER` = MMNN\ -`_MSC_FULL_VER` = MMNNBBBBB\ -`_MSC_BUILD` = R +- `_MSC_VER` = MMNN +- `_MSC_FULL_VER` = MMNNBBBBB +- `_MSC_BUILD` = R For example, the compiler version for Visual Studio 2022 version 17.9.0 is 19.39.33519: + - The major version is 19 - The minor version is 39 - The build version is 33519 - The revision version is 0 The macros reflect these values like this: + - `_MSC_VER = 1939` - `_MSC_FULL_VER = 193933519` -- `_MSC_BUILD` (the revision) is 0. +- `_MSC_BUILD` (the revision) is 0 ->[!Note] ->Visual Studio 2019 versions 16.8 and 16.9 share the same major and minor versions, and so have the same value for `_MSC_VER`. As do Visual Studio 2019 versions 16.10 and 16.11. To distinguish them, use `_MSC_FULL_VER` as described in [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). +> [!NOTE] +> Visual Studio 2019 versions 16.8 and 16.9 share the same major and minor versions, and so have the same value for `_MSC_VER`. This fact is also true for Visual Studio 2019 versions 16.10 and 16.11. To distinguish them, use `_MSC_FULL_VER` as described in [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). ## A brief history of Microsoft C++ compiler versioning @@ -42,8 +45,8 @@ The macros reflect these values like this: - For major releases, `_MSC_VER` increases by 100. `_MSC_FULL_VER` increases by 10,000,000. - For minor releases, `_MSC_VER` increases by 10. `_MSC_FULL_VER` increases by 1,000,000. - >[!Note] - > Visual Studio .NET 2003 was considered a minor release. + > [!NOTE] + > Visual Studio .NET 2003 was considered to be a minor release. ### Visual Studio 2017 to Visual Studio 2022 @@ -54,34 +57,35 @@ The macros reflect these values like this: - The compiler minor version is no longer incremented in relation to Visual Studio version updates. - The minor version increments by 1 with each new MSVC release. -- Not every new Visual Studio version will ship a new MSVC compiler version. +- Not every new Visual Studio version ships a new MSVC compiler version. ### Service releases starting with Visual Studio 2017 Servicing releases are distinguished by `_MSC_FULL_VER`. The build field (the BBBBB in the MMNNBBBBB version number) typically increases by 1. -For example, two cases where `_MSC_FULL_VER` is useful is to distinguish Visual Studio 2019 version 16.8 from 16.9, and Visual Studio 2019 version 16.10 from 16.11. That's because those versions share the same major and minor versions, and so have the same value for `_MSC_VER`. +For example, two cases where `_MSC_FULL_VER` is useful is to distinguish Visual Studio 2019 version 16.8 from 16.9, and Visual Studio 2019 version 16.10 from 16.11. Those versions share the same major and minor versions, and so have the same value for `_MSC_VER`. + +To distinguish these versions, use `_MSC_FULL_VER`. -To distinguish these versions, use `_MSC_FULL_VER`.\ -The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.8 is 192829333.\ -The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.9 is 192829910. +- The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.8 is 192829333. +- The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.9 is 192829910. ## Version macros Recall that the version number consists of four fields: -M - major version (two digits)\ -N - minor version (two digits)\ -B - build version (five digits)\ -R - revision version +- M: major version (two digits) +- N: minor version (two digits) +- B: build version (five digits) +- R: revision version -**[`_MSC_VER`](../preprocessor/predefined-macros.md)** distinguishes between major and minor releases. It has the form: MMNN. +[`_MSC_VER`](../preprocessor/predefined-macros.md) distinguishes between major and minor releases. It has the form: MMNN. -**[`_MSC_FULL_VER`](../preprocessor/predefined-macros.md)** represents the major, minor, and build version of the compiler. It has the form: MMNNBBBBB. Use it to distinguish between different versions of the compiler, including servicing releases. For more information about Visual Studio 2019 versions 16.8, 16.9, 16.10 and 16.11, see [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). +[`_MSC_FULL_VER`](../preprocessor/predefined-macros.md) represents the major, minor, and build version of the compiler. It has the form: MMNNBBBBB. Use it to distinguish between different versions of the compiler, including servicing releases. For more information about Visual Studio 2019 versions 16.8, 16.9, 16.10 and 16.11, see [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). -**[`_MSC_BUILD`](../preprocessor/predefined-macros.md)** represents the build version of the compiler. It has the form: R. Use it to distinguish between servicing releases. +[`_MSC_BUILD`](../preprocessor/predefined-macros.md) represents the build version of the compiler. It has the form: R. Use it to distinguish between servicing releases. -When the major version changed between Visual Studio 2013 and Visual Studio 2015, `_MSC_VER` reflected the change by going from 1800 to 1900. +When the major version changed between Visual Studio 2013 and Visual Studio 2015, `_MSC_VER` reflects the change by going from 1800 to 1900. An example of a minor change is from Visual Studio 2022 version 17.1 to Visual Studio 2022 version 17.2. In that case, `_MSC_VER` changed from 1931 to 1932. @@ -131,11 +135,11 @@ The following table lists the Visual Studio version corresponding to each Micros | Visual Studio 2022 version 17.13 | 1943 | 14.43 | | Visual Studio 2022 version 17.14 | 1944 | 14.44 | -a Visual Studio 2019 versions 16.8 and 16.9 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.8 is 192829333. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.9 is 192829910. +a Visual Studio 2019 versions 16.8 and 16.9 share the same major and minor versions, and so have the same value for `_MSC_VER`. To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.8 is 192829333. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.9 is 192829910. -b Visual Studio 2019 versions 16.10 and 16.11 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.10 is 192929917. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.11 is 192930129. +b Visual Studio 2019 versions 16.10 and 16.11 share the same major and minor versions, and so have the same value for `_MSC_VER`. To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.10 is 192929917. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.11 is 192930129. -## See also +## Related content -[`_MSC_VER`](../preprocessor/predefined-macros.md)\ -[Visual C++ compiler version blog post](https://devblogs.microsoft.com/cppblog/visual-c-compiler-version/) +- [`_MSC_VER`](../preprocessor/predefined-macros.md) +- [Visual C++ compiler version blog post](https://devblogs.microsoft.com/cppblog/visual-c-compiler-version/) From 682553a689da201ae3ac2f1362fc5adf58032d9c Mon Sep 17 00:00:00 2001 From: Tim Sherer <28902327+TimShererWithAquent@users.noreply.github.com> Date: Fri, 1 May 2026 10:41:54 -0700 Subject: [PATCH 442/619] Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/overview/compiler-versions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index 920398bc1ae..b0cb8f94939 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -63,7 +63,7 @@ The macros reflect these values like this: Servicing releases are distinguished by `_MSC_FULL_VER`. The build field (the BBBBB in the MMNNBBBBB version number) typically increases by 1. -For example, two cases where `_MSC_FULL_VER` is useful is to distinguish Visual Studio 2019 version 16.8 from 16.9, and Visual Studio 2019 version 16.10 from 16.11. Those versions share the same major and minor versions, and so have the same value for `_MSC_VER`. +For example, two cases where `_MSC_FULL_VER` is useful are to distinguish Visual Studio 2019 version 16.8 from 16.9, and Visual Studio 2019 version 16.10 from 16.11. Those versions share the same major and minor versions, and so have the same value for `_MSC_VER`. To distinguish these versions, use `_MSC_FULL_VER`. @@ -83,7 +83,7 @@ Recall that the version number consists of four fields: [`_MSC_FULL_VER`](../preprocessor/predefined-macros.md) represents the major, minor, and build version of the compiler. It has the form: MMNNBBBBB. Use it to distinguish between different versions of the compiler, including servicing releases. For more information about Visual Studio 2019 versions 16.8, 16.9, 16.10 and 16.11, see [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). -[`_MSC_BUILD`](../preprocessor/predefined-macros.md) represents the build version of the compiler. It has the form: R. Use it to distinguish between servicing releases. +[`_MSC_BUILD`](../preprocessor/predefined-macros.md) represents the revision value of the compiler. It has the form: R. Use it to distinguish between servicing releases. When the major version changed between Visual Studio 2013 and Visual Studio 2015, `_MSC_VER` reflects the change by going from 1800 to 1900. From c1c6f7be093b7586084fba4db8f0a5687b24f350 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 8 May 2026 02:40:57 -0700 Subject: [PATCH 443/619] Add segment heap entry to manifest tool property pages --- docs/build/reference/manifest-tool-property-pages.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/build/reference/manifest-tool-property-pages.md b/docs/build/reference/manifest-tool-property-pages.md index cdf705d3d85..ddabe61e2cc 100644 --- a/docs/build/reference/manifest-tool-property-pages.md +++ b/docs/build/reference/manifest-tool-property-pages.md @@ -22,6 +22,7 @@ f1_keywords: - VC.Project.VCManifestTool.ReplacementsFile - VC.Project.VCManifestTool.UpdateFileHashes - VC.Project.VCManifestTool.UpdateFileHashesSearchPath + - VC.Project.VCManifestTool.EnableSegmentHeap --- # Manifest Tool Property Pages @@ -97,6 +98,10 @@ Specifies whether the application is DPI-aware. By default, the setting is **Yes - **High DPI Aware** - **Per Monitor High DPI Aware** +### Segment Heap + +Specifies whether the application utilizes the Segment Heap. For new C++ projects, the setting is **Yes** by default. + ## Isolated COM Property Page For more information about isolated COM, see [Isolated applications](/windows/win32/SbsCs/isolated-applications) and [How to: Build isolated applications to consume COM components](../how-to-build-isolated-applications-to-consume-com-components.md). From b820571d67528c02506b995835e4522a9bee1b04 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 8 May 2026 05:33:11 -0700 Subject: [PATCH 444/619] Add entry for segment heap cmake side --- docs/build/cmake-presets-vs.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/build/cmake-presets-vs.md b/docs/build/cmake-presets-vs.md index 5282a491801..8624c45d3c8 100644 --- a/docs/build/cmake-presets-vs.md +++ b/docs/build/cmake-presets-vs.md @@ -4,6 +4,7 @@ description: "Reference for using CMake Presets to configure and build CMake pro ms.date: 06/09/2023 ms.topic: reference ms.custom: sfi-image-nochange +ai-usage: ai-assisted --- # Configure and build with CMake Presets in Visual Studio @@ -460,6 +461,28 @@ The `` part lists other compilation flags, like `"-fno-omit- Pass runtime flags to AddressSanitizer by using the `ASAN_OPTIONS` field in *`launch.vs.json`*. `ASAN_OPTIONS` defaults to `detect_leaks=0` when no other runtime options are specified because LeakSanitizer isn't supported in Visual Studio. +## Enable Segment Heap + +The Segment Heap is a modern Windows heap implementation that reduces memory usage and fragmentation. Visual Studio ships a CMake script that enables Segment Heap for your project by adding the required manifest settings. + +To enable Segment Heap, set `CMAKE_PROJECT_TOP_LEVEL_INCLUDES` in the `cacheVariables` map of your Configure Preset in *`CMakePresets.json`*: + + ```json +"cacheVariables": { + "CMAKE_PROJECT_TOP_LEVEL_INCLUDES": "{VSInstallDir}Common7\\IDE\\CommonExtensions\\Microsoft\\CMake\\CMake\\Microsoft\\SegmentHeap.cmake" +} +``` + +> [!NOTE] +> `CMAKE_PROJECT_TOP_LEVEL_INCLUDES` is available in CMake 3.24 or later. + +Use the `VS_SEGMENT_HEAP_ALLOWLIST` and `VS_SEGMENT_HEAP_EXCLUDE` environment variables to control which targets in the project use Segment Heap. Separate target names with semicolons. + +- `VS_SEGMENT_HEAP_ALLOWLIST` — Apply the Segment Heap manifest entry only to the listed targets. Exclude all other targets. +- `VS_SEGMENT_HEAP_EXCLUDE` — Exclude the listed targets from using the Segment Heap. + +When neither variable is set, Visual Studio enables Segment Heap for all targets. If both variables are set, `VS_SEGMENT_HEAP_ALLOWLIST` takes precedence. + ## Run CMake from the command line or a CI pipeline You can use the same *`CMakePresets.json`* and *`CMakeUserPresets.json`* files to invoke CMake in Visual Studio and from the command line. The [CMake](https://cmake.org/cmake/help/latest/manual/cmake.1.html) and [CTest](https://cmake.org/cmake/help/latest/manual/ctest.1.html) documentation are the best resources for invoking CMake and CTest with `--preset`. CMake version 3.20 or later is required. From f75c1f7a12780655cadd075708d2f7c413a7a365 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 8 May 2026 05:36:51 -0700 Subject: [PATCH 445/619] Add sentence about new cmake projects --- docs/build/cmake-presets-vs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/cmake-presets-vs.md b/docs/build/cmake-presets-vs.md index 8624c45d3c8..1dbd0ea9546 100644 --- a/docs/build/cmake-presets-vs.md +++ b/docs/build/cmake-presets-vs.md @@ -463,7 +463,7 @@ Pass runtime flags to AddressSanitizer by using the `ASAN_OPTIONS` field in *`la ## Enable Segment Heap -The Segment Heap is a modern Windows heap implementation that reduces memory usage and fragmentation. Visual Studio ships a CMake script that enables Segment Heap for your project by adding the required manifest settings. +The Segment Heap is a modern Windows heap implementation that reduces memory usage and fragmentation. Visual Studio ships a CMake script that enables Segment Heap for your project by adding the required manifest settings. New C++ CMake projects enable Segment Heap by default. To enable Segment Heap, set `CMAKE_PROJECT_TOP_LEVEL_INCLUDES` in the `cacheVariables` map of your Configure Preset in *`CMakePresets.json`*: From 1ae7e2510b006e49d7bfd5f499fca69a20a3e1b3 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Fri, 8 May 2026 06:14:25 -0700 Subject: [PATCH 446/619] Fix json example --- docs/build/cmake-presets-vs.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/build/cmake-presets-vs.md b/docs/build/cmake-presets-vs.md index 1dbd0ea9546..90427d3ffd4 100644 --- a/docs/build/cmake-presets-vs.md +++ b/docs/build/cmake-presets-vs.md @@ -468,9 +468,17 @@ The Segment Heap is a modern Windows heap implementation that reduces memory usa To enable Segment Heap, set `CMAKE_PROJECT_TOP_LEVEL_INCLUDES` in the `cacheVariables` map of your Configure Preset in *`CMakePresets.json`*: ```json -"cacheVariables": { - "CMAKE_PROJECT_TOP_LEVEL_INCLUDES": "{VSInstallDir}Common7\\IDE\\CommonExtensions\\Microsoft\\CMake\\CMake\\Microsoft\\SegmentHeap.cmake" +{ + "configurePresets": [ + { + // ... + "cacheVariables": { + "CMAKE_PROJECT_TOP_LEVEL_INCLUDES": "$env{VSINSTALLDIR}Common7/IDE/CommonExtensions/Microsoft/CMake/cmake/Microsoft/SegmentHeap.cmake" + } + } + ] } + ``` > [!NOTE] From 530c4c0cc161d0399de82c2f525b1d1727668774 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 8 May 2026 14:58:21 -0700 Subject: [PATCH 447/619] Add MSVC Build Tools 14.51 what's new and conformance sections - Add 'What's new for MSVC Build Tools version 14.51' section to what-s-new-for-msvc.md - ARM SVE support (first-ever in MSVC) - overhaul (fixes stack overflows present since VS 2008 SP1) - ARM64 NEON vectorization of STL algorithms (first for ARM64/ARM64EC) - and headers - Sample-based PGO preview - Intel APX preview - ASan ARM64 now fully supported (no longer preview) - Removed non-standard features (TR1, , , etc.) - Add C++ conformance improvements section for MSVC Build Tools v14.51 to msvc-conformance-improvements.md - P2647R1: Static constexpr variables in constexpr functions (with example) - P2448R2: Relaxed constexpr restrictions (with example) - 22 CWG issue resolutions with links - Additional C++23 features (Unicode, assumptions, CTAD, modules) - Standard library additions (, , new type traits) - Update ms.date to 05/08/2026 in both documents Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../overview/msvc-conformance-improvements.md | 83 ++++++++++++++++++- docs/overview/what-s-new-for-msvc.md | 72 +++++++++++++++- 2 files changed, 152 insertions(+), 3 deletions(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index e9f57255dfa..160cbeddbee 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -1,7 +1,7 @@ --- title: "/C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C++ (MSVC) Build Tools" description: "Summary of conformance improvements in Microsoft C/C++ (MSVC)" -ms.date: 11/03/2025 +ms.date: 05/08/2026 ms.service: "visual-cpp" ms.subservice: "cpp-lang" --- @@ -18,6 +18,87 @@ For changes in earlier versions of Visual Studio: | 2017 | [C++ conformance improvements in Visual Studio 2017](cpp-conformance-improvements-2017.md) | | 2003-2015 | [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md) | +##
    C++ conformance improvements, behavior changes, and bug fixes in MSVC Build Tools v14.51 + +MSVC Build Tools v14.51 continues the progress toward full C++23 conformance with several key language feature implementations and numerous Core Working Group (CWG) issue resolutions. This release focuses on compile-time evaluation improvements, Unicode support enhancements, and refined consteval handling. + +This version shipped first with Visual Studio 2026 version 18.6 and includes version 19.51 of the MSVC compiler. + +Key highlights of this release include: +- Static constexpr variables in constexpr functions (P2647R1) +- Relaxed constexpr restrictions (P2448R2) +- Unicode support improvements (P2029R4, P2071R2, P2314R4) +- 22 CWG issue resolutions +- Improved consteval function handling with default-enabled experimental features +- New standard library headers `` and `` + +For more information about library features and additional updates, see [C++23 Support in MSVC Build Tools 14.51](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51) and [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog). + +### P2647R1: Static constexpr variables in constexpr functions + +[P2647R1](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2647r1.html) allows static local variables to be declared `constexpr` within `constexpr` functions, reducing friction when marking existing functions as `constexpr`. + +```cpp +constexpr char xdigit(int n) +{ + static constexpr char digits[] = "0123456789abcdef"; + return digits[n]; +} +``` + +This feature improves both compile-time evaluation and run-time optimization. Previously, static local variables couldn't be marked `constexpr`, which made it difficult to declare lookup tables inside `constexpr` functions. Now the compiler can evaluate these functions at compile time when possible, while also generating optimized run-time code that accesses the static storage directly. + +### P2448R2: Relaxing some constexpr restrictions + +[P2448R2](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2448r2.html) relaxes restrictions on `constexpr` functions. A `constexpr` function no longer fails to compile if it can't actually run at compile time. + +```cpp +void bar(); + +// Now accepted, but only executable at run time +constexpr void foo() +{ + bar(); +} +``` + +This change protects against library changes making user code ill-formed. If a library function is updated and can no longer be evaluated at compile time, code that calls it in a `constexpr` context remains valid—it simply runs at run time instead. + +### Other C++23 features + +Additional C++23 features implemented in this release include Unicode support improvements ([P2029R4](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2029r4.html), [P2071R2](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2071r2.html), [P2314R4](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2314r4.html)), portable assumptions ([P1774R8](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1774r8.html)), labels at the end of compound statements for C compatibility ([P2324R2](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2324r2.html)), Class Template Argument Deduction (CTAD) from inherited constructors ([P2582R1](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2582r1.html)), and meaningful exports for modules ([P2615R1](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2615r1.html)). For more details, see the [blog post](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51). + +### CWG Issue Resolutions + +MSVC Build Tools v14.51 resolves 22 Core Working Group issues: + +- [CWG 2355](https://cplusplus.github.io/CWG/issues/2355.html): Deducing noexcept specifiers +- [CWG 2392](https://cplusplus.github.io/CWG/issues/2392.html): new-expression size checks and constant evaluation +- [CWG 2405](https://cplusplus.github.io/CWG/issues/2405.html): Additional type-dependent expressions +- [CWG 2479](https://cplusplus.github.io/CWG/issues/2479.html): Missing specifications for consteval and constinit +- [CWG 2484](https://cplusplus.github.io/CWG/issues/2484.html): char8_t / char16_t integral promotions +- [CWG 2490](https://cplusplus.github.io/CWG/issues/2490.html): Restrictions on destruction in constant expressions +- [CWG 2491](https://cplusplus.github.io/CWG/issues/2491.html): Export of typedef after first declaration +- [CWG 2518](https://cplusplus.github.io/CWG/issues/2518.html): Conformance requirements and #error / #warning +- [CWG 2529](https://cplusplus.github.io/CWG/issues/2529.html): Constant destruction of constexpr references +- [CWG 2538](https://cplusplus.github.io/CWG/issues/2538.html): Ignoring standard attributes syntactically +- [CWG 2539](https://cplusplus.github.io/CWG/issues/2539.html): Three-way comparison and floating-point strong ordering +- [CWG 2543](https://cplusplus.github.io/CWG/issues/2543.html): constinit and optimized dynamic initialization +- [CWG 2597](https://cplusplus.github.io/CWG/issues/2597.html): Replaceable allocation functions in the global module +- [CWG 2602](https://cplusplus.github.io/CWG/issues/2602.html): consteval defaulted functions +- [CWG 2605](https://cplusplus.github.io/CWG/issues/2605.html): Implicit-lifetime aggregates +- [CWG 2615](https://cplusplus.github.io/CWG/issues/2615.html): Missing __has_cpp_attribute(assume) +- [CWG 2618](https://cplusplus.github.io/CWG/issues/2618.html): Deduction excluding exception specifications +- [CWG 2627](https://cplusplus.github.io/CWG/issues/2627.html): Bit-fields and narrowing conversions +- [CWG 2631](https://cplusplus.github.io/CWG/issues/2631.html): Immediate function evaluation in default arguments +- [CWG 2640](https://cplusplus.github.io/CWG/issues/2640.html): Extended characters in n-character sequences +- [CWG 2651](https://cplusplus.github.io/CWG/issues/2651.html): Conversion function templates and noexcept +- [CWG 2664](https://cplusplus.github.io/CWG/issues/2664.html): CTAD deduction failure for alias templates + +### Standard Library + +MSVC Build Tools v14.51 adds new standard library features including the `` and `` headers, type traits for detecting references binding to temporaries ([P2255R2](https://wg21.link/p2255r2)), explicit lifetime management ([P2590R2](https://wg21.link/p2590r2)), and `is_implicit_lifetime` ([P2674R1](https://wg21.link/P2674R1)). The release also includes a major `` overhaul, SIMD-vectorized STL algorithms using NEON for ARM64/ARM64EC, and 18 Library Working Group (LWG) issue resolutions. For the complete list, see the [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog). + ## C++ conformance improvements, behavior changes, and bug fixes in MSVC Build Tools v14.50 MSVC Build Tools v14.50 introduces improvements to the MSVC compiler and standard library, including better C++23 standards conformance, enhanced reliability, and improved correctness. This release also includes numerous bug fixes and updates that benefit large-scale C++ development. diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index e9563fdf67e..59b7b7ba49d 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -1,7 +1,7 @@ --- title: "What's new for MSVC Build Tools" description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." -ms.date: 11/11/2025 +ms.date: 05/08/2026 ms.service: "visual-cpp" ms.subservice: "cpp-lang" ms.custom: intro-whats-new @@ -9,10 +9,78 @@ ms.custom: intro-whats-new # What's new for MSVC Build Tools -Version 14.50 brings many updates and fixes to the Microsoft C++ compiler and other build tools. +Version 14.51 brings many updates and fixes to the Microsoft C++ compiler and other build tools. - For more information about what's new in all of Visual Studio, see [Visual Studio 2026 release notes](/visualstudio/releases/2026/release-notes). +## What's new for MSVC Build Tools version 14.51 + +* Introduced in Visual Studio 2026 version 18.6 released May 2026. + +Visual Studio 2026 version 18.6 ships with the v145 platform toolset for MSBuild C++ projects and Microsoft C++ (MSVC) Build Tools version 14.51. To access all the new language features, build with `/std:c++latest`. Or, if you want to be restricted to features up to C++23, use `/std:c++23preview`. + +MSVC Build Tools version 14.51 preserves binary compatibility with code built with MSVC tools shipped in Visual Studio 2015 or later. For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](/cpp/porting/binary-compat-2015-2017). + +| For detailed information about | See | +|---|---| +| What's new for C++ developers | [MSVC Build Tools version 14.51 Release Candidate Now Available](https://devblogs.microsoft.com/cppblog/msvc-build-tools-version-14-51-release-candidate-now-available/) | +| Standard Library (STL) improvements | [STL Changelog MSVC Build Tools 14.51](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1451-preview) | +| C++23 language updates | [C++23 Support in MSVC Build Tools 14.51](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51) | +| C++ language conformance improvements | [C/C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C++ (MSVC) Build Tools](msvc-conformance-improvements.md) | + +Here's a quick highlight of some of the new features in MSVC Build Tools version 14.51: + +### C++ language enhancements + +- The frontend team continued implementing C++23 and C++20 features and fixing conformance issues. For full C++23 details, see [C++23 Support in MSVC Build Tools 14.51](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51). +- Multiple fixes to `consteval` function handling, including support for constexpr `new`/`delete` in modules. The `/experimental:constevalVfuncVtable` behavior is now enabled by default. +- Added support for C language features: `_Atomic` qualifier and `__typeof__` for function types. +- Fixed incorrect diagnostics for C99 flexible array members. +- MSVC frontend now generates IFC files according to [version 0.44](https://github.com/microsoft/ifc-spec/releases/tag/0.44) of the [IFC specification](https://github.com/microsoft/ifc-spec). +- Improved parser error recovery and removal of legacy token accessors. + +### Standard Library enhancements + +- Added new C++23 headers: `` ([P0429R9](https://wg21.link/P0429R9)) and `` ([P1222R4](https://wg21.link/P1222R4)). +- **Massive `` overhaul:** Fixed long-standing correctness and performance problems present since VS 2008 SP1. After nearly two decades, the stack overflows are finally fixed. The implementation now performs matching non-recursively and includes significant performance improvements. +- **ARM64 NEON vectorization:** First release shipping NEON-vectorized STL algorithms for ARM64/ARM64EC. Previously, only x64/x86 received SIMD optimizations with SSE4.2 and AVX2. Vectorized implementations are now available for algorithms including `swap_ranges()`, `rotate()`, `reverse()`, `min_element()`, `max_element()`, `find()`, `count()`, and many more. +- Implemented 18 Library Working Group (LWG) issue resolutions, including fixes for duration conversion overflow, `construct_at` array support, and optional const overloads. +- Optimized integer-to-string conversions by printing digits in pairs. The STL is now optimized for speed instead of size. +- Added type traits to detect references binding to temporaries ([P2255R2](https://wg21.link/P2255R2)). +- Added explicit lifetime management support ([P2590R2](https://wg21.link/P2590R2)). +- Enhanced debugger visualizations, including a `c_str()` intrinsic function for `basic_string` that enables conditional breakpoints. + +### Build enhancements + +- **ARM SVE support:** First-ever ARM Scalable Vector Extension (SVE) support in MSVC, including frontend type support, intrinsic lowering, callee-saved register unwinding, and DIA SDK support. +- **Sample-based PGO:** Preview support for sample-based profile guided optimizations. +- The backend optimizer received significant investment with dozens of new optimization patterns for improved code generation, including better inlining, loop optimizations, and pattern matching. +- **Intel APX preview:** Preview support for Intel Advanced Performance Extensions. +- ARM64EC/ARM64X improvements: Fixed missing entry thunks for coroutine outlinees, improved identical COMDAT folding (ICF) in ARM64X binaries, and fixed volatile XMM assignment. +- Enabled debug info pruning to reduce PDB sizes. + +### Code analysis enhancements + +- Improved AddressSanitizer for ARM64 with comprehensive library packaging, interception fixes, and false-positive resolutions. ARM64 support is no longer preview—it's now fully supported. +- Consolidated static analysis tools: EspX and its extensions like CppCoreCheck merged into a single DLL, simplifying deployment. +- Fixed SanitizerCoverage blocklist handling and codegen issues. + +### Deprecations + +- The following experimental coroutine headers are now deprecated: ``, ``, and ``. Developers should transition to standard C++20 coroutines using the `` header. +- Removed the escape hatch macro `_ALLOW_RTCc_IN_STL`. The STL doesn't support the `/RTCc` compiler option (but `/RTCs` and `/RTCu`/`/RTC1` remain supported). + +### Removed features + +The following long-deprecated non-Standard features have been removed: + +- **TR1** including the `std::tr1` namespace, old `array::assign()`, and old `` engines and distributions. Deprecated since VS 2017 15.5 (December 2017). +- **`` and ``**. Deprecated since VS 2015 (July 2015). +- **``**. Deprecated since VS 2019 16.3 (September 2019). +- **`stdext::checked_array_iterator` and `stdext::unchecked_array_iterator`**. Deprecated since VS 2022 17.8 (November 2023) for C++17 and later. +- **`basic_istream::ipfx()`/`isfx()` and `basic_ostream::opfx()`/`osfx()`**. Deprecated since VS 2022 17.9 (February 2024) for C++17 and later. +- **`locale::empty()`**. Deprecated since VS 2022 17.14 (May 2025). + ## What's new for MSVC Build Tools version 14.50 * Introduced in Visual Studio 2026 version 18.0 released November 2025. From 305101e34f5a6810f8798eb23e2607f743684d0a Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 8 May 2026 16:33:28 -0700 Subject: [PATCH 448/619] drafting --- .../overview/msvc-conformance-improvements.md | 61 ++++--------------- docs/overview/what-s-new-for-msvc.md | 21 +++---- 2 files changed, 20 insertions(+), 62 deletions(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index 160cbeddbee..6474c536735 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -20,16 +20,15 @@ For changes in earlier versions of Visual Studio: ## C++ conformance improvements, behavior changes, and bug fixes in MSVC Build Tools v14.51 -MSVC Build Tools v14.51 continues the progress toward full C++23 conformance with several key language feature implementations and numerous Core Working Group (CWG) issue resolutions. This release focuses on compile-time evaluation improvements, Unicode support enhancements, and refined consteval handling. +MSVC Build Tools v14.51 continues the progress toward C++23 conformance with several key language feature implementations and numerous Core Working Group (CWG) issue resolutions. This release focuses on compile-time evaluation improvements, Unicode support enhancements, and refined `consteval` handling. This version shipped first with Visual Studio 2026 version 18.6 and includes version 19.51 of the MSVC compiler. Key highlights of this release include: -- Static constexpr variables in constexpr functions (P2647R1) -- Relaxed constexpr restrictions (P2448R2) +- Static `constexpr` variables in `constexpr` functions (P2647R1) +- Relaxed `constexpr` restrictions (P2448R2) - Unicode support improvements (P2029R4, P2071R2, P2314R4) -- 22 CWG issue resolutions -- Improved consteval function handling with default-enabled experimental features +- Improved `consteval` function handling with default-enabled experimental features - New standard library headers `` and `` For more information about library features and additional updates, see [C++23 Support in MSVC Build Tools 14.51](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51) and [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog). @@ -48,56 +47,18 @@ constexpr char xdigit(int n) This feature improves both compile-time evaluation and run-time optimization. Previously, static local variables couldn't be marked `constexpr`, which made it difficult to declare lookup tables inside `constexpr` functions. Now the compiler can evaluate these functions at compile time when possible, while also generating optimized run-time code that accesses the static storage directly. -### P2448R2: Relaxing some constexpr restrictions - -[P2448R2](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2448r2.html) relaxes restrictions on `constexpr` functions. A `constexpr` function no longer fails to compile if it can't actually run at compile time. - -```cpp -void bar(); - -// Now accepted, but only executable at run time -constexpr void foo() -{ - bar(); -} -``` - -This change protects against library changes making user code ill-formed. If a library function is updated and can no longer be evaluated at compile time, code that calls it in a `constexpr` context remains valid—it simply runs at run time instead. - ### Other C++23 features -Additional C++23 features implemented in this release include Unicode support improvements ([P2029R4](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2029r4.html), [P2071R2](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2071r2.html), [P2314R4](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2314r4.html)), portable assumptions ([P1774R8](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1774r8.html)), labels at the end of compound statements for C compatibility ([P2324R2](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2324r2.html)), Class Template Argument Deduction (CTAD) from inherited constructors ([P2582R1](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2582r1.html)), and meaningful exports for modules ([P2615R1](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2615r1.html)). For more details, see the [blog post](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51). - -### CWG Issue Resolutions - -MSVC Build Tools v14.51 resolves 22 Core Working Group issues: - -- [CWG 2355](https://cplusplus.github.io/CWG/issues/2355.html): Deducing noexcept specifiers -- [CWG 2392](https://cplusplus.github.io/CWG/issues/2392.html): new-expression size checks and constant evaluation -- [CWG 2405](https://cplusplus.github.io/CWG/issues/2405.html): Additional type-dependent expressions -- [CWG 2479](https://cplusplus.github.io/CWG/issues/2479.html): Missing specifications for consteval and constinit -- [CWG 2484](https://cplusplus.github.io/CWG/issues/2484.html): char8_t / char16_t integral promotions -- [CWG 2490](https://cplusplus.github.io/CWG/issues/2490.html): Restrictions on destruction in constant expressions -- [CWG 2491](https://cplusplus.github.io/CWG/issues/2491.html): Export of typedef after first declaration -- [CWG 2518](https://cplusplus.github.io/CWG/issues/2518.html): Conformance requirements and #error / #warning -- [CWG 2529](https://cplusplus.github.io/CWG/issues/2529.html): Constant destruction of constexpr references -- [CWG 2538](https://cplusplus.github.io/CWG/issues/2538.html): Ignoring standard attributes syntactically -- [CWG 2539](https://cplusplus.github.io/CWG/issues/2539.html): Three-way comparison and floating-point strong ordering -- [CWG 2543](https://cplusplus.github.io/CWG/issues/2543.html): constinit and optimized dynamic initialization -- [CWG 2597](https://cplusplus.github.io/CWG/issues/2597.html): Replaceable allocation functions in the global module -- [CWG 2602](https://cplusplus.github.io/CWG/issues/2602.html): consteval defaulted functions -- [CWG 2605](https://cplusplus.github.io/CWG/issues/2605.html): Implicit-lifetime aggregates -- [CWG 2615](https://cplusplus.github.io/CWG/issues/2615.html): Missing __has_cpp_attribute(assume) -- [CWG 2618](https://cplusplus.github.io/CWG/issues/2618.html): Deduction excluding exception specifications -- [CWG 2627](https://cplusplus.github.io/CWG/issues/2627.html): Bit-fields and narrowing conversions -- [CWG 2631](https://cplusplus.github.io/CWG/issues/2631.html): Immediate function evaluation in default arguments -- [CWG 2640](https://cplusplus.github.io/CWG/issues/2640.html): Extended characters in n-character sequences -- [CWG 2651](https://cplusplus.github.io/CWG/issues/2651.html): Conversion function templates and noexcept -- [CWG 2664](https://cplusplus.github.io/CWG/issues/2664.html): CTAD deduction failure for alias templates +Other C++23 features implemented in this release include Unicode support improvements, labels at the end of compound statements for C compatibility, Class Template Argument Deduction (CTAD) from inherited constructors, and meaningful exports for modules. For more details and related Core Working Group (CWG) issue resolutions, see the [C++23 Support in MSVC Build Tools 14.51](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51). ### Standard Library -MSVC Build Tools v14.51 adds new standard library features including the `` and `` headers, type traits for detecting references binding to temporaries ([P2255R2](https://wg21.link/p2255r2)), explicit lifetime management ([P2590R2](https://wg21.link/p2590r2)), and `is_implicit_lifetime` ([P2674R1](https://wg21.link/P2674R1)). The release also includes a major `` overhaul, SIMD-vectorized STL algorithms using NEON for ARM64/ARM64EC, and 18 Library Working Group (LWG) issue resolutions. For the complete list, see the [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog). +MSVC Build Tools v14.51 adds new standard library features including: +- `` and `` headers +- Type traits for detecting references binding to temporaries ([P2255R2](https://wg21.link/p2255r2)) +- Explicit lifetime management ([P2590R2](https://wg21.link/p2590r2)), and `is_implicit_lifetime` ([P2674R1](https://wg21.link/P2674R1)). +- Major `` overhaul, SIMD-vectorized STL algorithms using NEON for ARM64/ARM64EC, and 18 Library Working Group (LWG) issue resolutions. +For the complete list, see the [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog). ## C++ conformance improvements, behavior changes, and bug fixes in MSVC Build Tools v14.50 diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 59b7b7ba49d..add18a35c3f 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -32,43 +32,40 @@ Here's a quick highlight of some of the new features in MSVC Build Tools version ### C++ language enhancements -- The frontend team continued implementing C++23 and C++20 features and fixing conformance issues. For full C++23 details, see [C++23 Support in MSVC Build Tools 14.51](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51). +- More C++23 and C++20 features and conformance issue fixes. For full C++23 details, see [C++23 Support in MSVC Build Tools 14.51](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51). - Multiple fixes to `consteval` function handling, including support for constexpr `new`/`delete` in modules. The `/experimental:constevalVfuncVtable` behavior is now enabled by default. - Added support for C language features: `_Atomic` qualifier and `__typeof__` for function types. - Fixed incorrect diagnostics for C99 flexible array members. - MSVC frontend now generates IFC files according to [version 0.44](https://github.com/microsoft/ifc-spec/releases/tag/0.44) of the [IFC specification](https://github.com/microsoft/ifc-spec). -- Improved parser error recovery and removal of legacy token accessors. +- Improved parser error recovery. ### Standard Library enhancements - Added new C++23 headers: `` ([P0429R9](https://wg21.link/P0429R9)) and `` ([P1222R4](https://wg21.link/P1222R4)). -- **Massive `` overhaul:** Fixed long-standing correctness and performance problems present since VS 2008 SP1. After nearly two decades, the stack overflows are finally fixed. The implementation now performs matching non-recursively and includes significant performance improvements. -- **ARM64 NEON vectorization:** First release shipping NEON-vectorized STL algorithms for ARM64/ARM64EC. Previously, only x64/x86 received SIMD optimizations with SSE4.2 and AVX2. Vectorized implementations are now available for algorithms including `swap_ranges()`, `rotate()`, `reverse()`, `min_element()`, `max_element()`, `find()`, `count()`, and many more. +- **Massive `` overhaul:** Fixed long-standing correctness and performance problems. The implementation includes significant performance improvements. +- **ARM64 NEON vectorization:** First release shipping NEON-vectorized STL algorithms for ARM64/ARM64EC. Previously, only x64/x86 received SIMD optimizations with SSE4.2 and AVX2. Vectorized implementations are now available for algorithms including `swap_ranges()`, `rotate()`, `reverse()`, `min_element()`, `max_element()`, `find()`, `count()`, and more. - Implemented 18 Library Working Group (LWG) issue resolutions, including fixes for duration conversion overflow, `construct_at` array support, and optional const overloads. -- Optimized integer-to-string conversions by printing digits in pairs. The STL is now optimized for speed instead of size. +- Optimized integer-to-string conversions by printing digits in pairs. The Standard Template Library is now optimized for speed instead of size. - Added type traits to detect references binding to temporaries ([P2255R2](https://wg21.link/P2255R2)). - Added explicit lifetime management support ([P2590R2](https://wg21.link/P2590R2)). - Enhanced debugger visualizations, including a `c_str()` intrinsic function for `basic_string` that enables conditional breakpoints. ### Build enhancements -- **ARM SVE support:** First-ever ARM Scalable Vector Extension (SVE) support in MSVC, including frontend type support, intrinsic lowering, callee-saved register unwinding, and DIA SDK support. +- **ARM SVE support:** First ARM Scalable Vector Extension (SVE) support in MSVC, including frontend type support, intrinsic lowering, callee-saved register unwinding, and DIA SDK support. - **Sample-based PGO:** Preview support for sample-based profile guided optimizations. -- The backend optimizer received significant investment with dozens of new optimization patterns for improved code generation, including better inlining, loop optimizations, and pattern matching. +- The C++ backend optimizer improves code generation, including better inlining, loop optimizations, and pattern matching. - **Intel APX preview:** Preview support for Intel Advanced Performance Extensions. -- ARM64EC/ARM64X improvements: Fixed missing entry thunks for coroutine outlinees, improved identical COMDAT folding (ICF) in ARM64X binaries, and fixed volatile XMM assignment. - Enabled debug info pruning to reduce PDB sizes. ### Code analysis enhancements -- Improved AddressSanitizer for ARM64 with comprehensive library packaging, interception fixes, and false-positive resolutions. ARM64 support is no longer preview—it's now fully supported. -- Consolidated static analysis tools: EspX and its extensions like CppCoreCheck merged into a single DLL, simplifying deployment. -- Fixed SanitizerCoverage blocklist handling and codegen issues. +- Improved AddressSanitizer for ARM64. ARM64 is now fully supported. ### Deprecations - The following experimental coroutine headers are now deprecated: ``, ``, and ``. Developers should transition to standard C++20 coroutines using the `` header. -- Removed the escape hatch macro `_ALLOW_RTCc_IN_STL`. The STL doesn't support the `/RTCc` compiler option (but `/RTCs` and `/RTCu`/`/RTC1` remain supported). +- Removed the macro `_ALLOW_RTCc_IN_STL`. The STL doesn't support the `/RTCc` compiler option (but `/RTCs` and `/RTCu`/`/RTC1` remain supported). ### Removed features From 65b9a0858e3b0c1926accf45a3a9e7524865b590 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 8 May 2026 17:03:42 -0700 Subject: [PATCH 449/619] draft --- docs/overview/msvc-conformance-improvements.md | 2 +- docs/overview/what-s-new-for-msvc.md | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index 6474c536735..039b3325444 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -77,7 +77,7 @@ Key highlights of this release include: For more information about performance improvements, bug fixes, and conformance updates in the standard library, see [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog), which is updated regularly. -## C++23 Features +## C++23 features MSVC Build Tools v14.50 adds support for several C++23 features, bringing the compiler closer to full C++23 conformance. diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index add18a35c3f..19aa244d823 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -36,9 +36,14 @@ Here's a quick highlight of some of the new features in MSVC Build Tools version - Multiple fixes to `consteval` function handling, including support for constexpr `new`/`delete` in modules. The `/experimental:constevalVfuncVtable` behavior is now enabled by default. - Added support for C language features: `_Atomic` qualifier and `__typeof__` for function types. - Fixed incorrect diagnostics for C99 flexible array members. -- MSVC frontend now generates IFC files according to [version 0.44](https://github.com/microsoft/ifc-spec/releases/tag/0.44) of the [IFC specification](https://github.com/microsoft/ifc-spec). +- MSVC now generates IFC files according to [version 0.44](https://github.com/microsoft/ifc-spec/releases/tag/0.44) of the [IFC specification](https://github.com/microsoft/ifc-spec). - Improved parser error recovery. +## C language enhancements + +Added `_Atomic` qualifier support and added `__typeof__` support for function types. +Fixed [C4319](https://learn.microsoft.com/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4319) not being emitted when compiling C code. + ### Standard Library enhancements - Added new C++23 headers: `` ([P0429R9](https://wg21.link/P0429R9)) and `` ([P1222R4](https://wg21.link/P1222R4)). From 393f554afaaecd54c5cb0b2b1759bc9b9498b54d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 11 May 2026 11:30:29 -0700 Subject: [PATCH 450/619] tech review --- docs/overview/what-s-new-for-msvc.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 19aa244d823..d624d00fa71 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -1,7 +1,7 @@ --- title: "What's new for MSVC Build Tools" description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." -ms.date: 05/08/2026 +ms.date: 05/11/2026 ms.service: "visual-cpp" ms.subservice: "cpp-lang" ms.custom: intro-whats-new @@ -24,7 +24,7 @@ MSVC Build Tools version 14.51 preserves binary compatibility with code built wi | For detailed information about | See | |---|---| | What's new for C++ developers | [MSVC Build Tools version 14.51 Release Candidate Now Available](https://devblogs.microsoft.com/cppblog/msvc-build-tools-version-14-51-release-candidate-now-available/) | -| Standard Library (STL) improvements | [STL Changelog MSVC Build Tools 14.51](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1451-preview) | +| Standard Library (STL) improvements | [STL Changelog MSVC Build Tools 14.51](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1451) | | C++23 language updates | [C++23 Support in MSVC Build Tools 14.51](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51) | | C++ language conformance improvements | [C/C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C++ (MSVC) Build Tools](msvc-conformance-improvements.md) | @@ -49,7 +49,7 @@ Fixed [C4319](https://learn.microsoft.com/cpp/error-messages/compiler-warnings/c - Added new C++23 headers: `` ([P0429R9](https://wg21.link/P0429R9)) and `` ([P1222R4](https://wg21.link/P1222R4)). - **Massive `` overhaul:** Fixed long-standing correctness and performance problems. The implementation includes significant performance improvements. - **ARM64 NEON vectorization:** First release shipping NEON-vectorized STL algorithms for ARM64/ARM64EC. Previously, only x64/x86 received SIMD optimizations with SSE4.2 and AVX2. Vectorized implementations are now available for algorithms including `swap_ranges()`, `rotate()`, `reverse()`, `min_element()`, `max_element()`, `find()`, `count()`, and more. -- Implemented 18 Library Working Group (LWG) issue resolutions, including fixes for duration conversion overflow, `construct_at` array support, and optional const overloads. +- Implemented 18 Library Working Group (LWG) issue resolutions, including fixes for duration conversion overflow, `construct_at` array support, and `optional` const overloads. - Optimized integer-to-string conversions by printing digits in pairs. The Standard Template Library is now optimized for speed instead of size. - Added type traits to detect references binding to temporaries ([P2255R2](https://wg21.link/P2255R2)). - Added explicit lifetime management support ([P2590R2](https://wg21.link/P2590R2)). @@ -57,26 +57,22 @@ Fixed [C4319](https://learn.microsoft.com/cpp/error-messages/compiler-warnings/c ### Build enhancements -- **ARM SVE support:** First ARM Scalable Vector Extension (SVE) support in MSVC, including frontend type support, intrinsic lowering, callee-saved register unwinding, and DIA SDK support. +- **Arm SVE support:** First Arm Scalable Vector Extension (SVE) support in MSVC, including frontend type support, intrinsic lowering, callee-saved register unwinding, and DIA SDK support. - **Sample-based PGO:** Preview support for sample-based profile guided optimizations. - The C++ backend optimizer improves code generation, including better inlining, loop optimizations, and pattern matching. - **Intel APX preview:** Preview support for Intel Advanced Performance Extensions. - Enabled debug info pruning to reduce PDB sizes. -### Code analysis enhancements - -- Improved AddressSanitizer for ARM64. ARM64 is now fully supported. - ### Deprecations -- The following experimental coroutine headers are now deprecated: ``, ``, and ``. Developers should transition to standard C++20 coroutines using the `` header. -- Removed the macro `_ALLOW_RTCc_IN_STL`. The STL doesn't support the `/RTCc` compiler option (but `/RTCs` and `/RTCu`/`/RTC1` remain supported). +- The following experimental coroutine headers are now deprecated: ``, ``, and ``. Transition to standard C++20 coroutines using the `` header. ### Removed features The following long-deprecated non-Standard features have been removed: - **TR1** including the `std::tr1` namespace, old `array::assign()`, and old `` engines and distributions. Deprecated since VS 2017 15.5 (December 2017). +- **`_ALLOW_RTCc_IN_STL`** macro removed. The Standard Template Library doesn't support the `/RTCc` compiler option, but `/RTCs` and `/RTCu`/`/RTC1` remain supported. - **`` and ``**. Deprecated since VS 2015 (July 2015). - **``**. Deprecated since VS 2019 16.3 (September 2019). - **`stdext::checked_array_iterator` and `stdext::unchecked_array_iterator`**. Deprecated since VS 2022 17.8 (November 2023) for C++17 and later. @@ -94,7 +90,7 @@ MSVC Build Tools version 14.50 preserves binary compatibility with code built wi | For detailed information about | See | |---|---| | What's new for C++ developers | [What’s New for C++ Developers in Visual Studio 2026 version 18.0](https://devblogs.microsoft.com/cppblog/whats-new-for-cpp-developers-in-visual-studio-2026-version-18-0) | -| Standard Library (STL) improvements | [STL Changelog MSVC Build Tools 14.50](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450) | +| C++ Standard Library (STL) improvements | [STL Changelog MSVC Build Tools 14.50](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1450) | | C++ language updates | [C++ Language Updates in MSVC Build Tools v14.50](https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/) | | C++ language conformance improvements | [C/C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C++ (MSVC) Build Tools](msvc-conformance-improvements.md) | From bc073b12bcb913972377ffc140c98de04fbd13db Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 11 May 2026 13:30:30 -0700 Subject: [PATCH 451/619] change link format --- docs/overview/what-s-new-for-msvc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index d624d00fa71..3f9c4f0e595 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -42,7 +42,7 @@ Here's a quick highlight of some of the new features in MSVC Build Tools version ## C language enhancements Added `_Atomic` qualifier support and added `__typeof__` support for function types. -Fixed [C4319](https://learn.microsoft.com/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4319) not being emitted when compiling C code. +Fixed [C4319](/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4319) not being emitted when compiling C code. ### Standard Library enhancements From f0ee742d2a2263bb6ea503cda8fa03ee12a82abf Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 11 May 2026 14:48:33 -0700 Subject: [PATCH 452/619] update removed/deprecated --- .../features-deprecated-in-visual-studio.md | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/docs/porting/features-deprecated-in-visual-studio.md b/docs/porting/features-deprecated-in-visual-studio.md index c4054812aae..82c81a98e8a 100644 --- a/docs/porting/features-deprecated-in-visual-studio.md +++ b/docs/porting/features-deprecated-in-visual-studio.md @@ -1,19 +1,33 @@ --- description: "Learn more about: C++ features deprecated or removed from Visual Studio" title: "C++ features deprecated or removed from Visual Studio" -ms.date: 10/29/2025 +ms.date: 05/11/2026 helpviewer_keywords: ["Features deprecated or removed from Visual Studio"] --- # C++ features deprecated or removed from Visual Studio This article is a non-exhaustive list of C++ features deprecated or removed from Visual Studio 2019 and later. For information on breaking changes and conformance improvements for C++ in the latest version of Visual Studio, see [C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md). -## Visual Studio 2019 - ### Support for Windows XP development Visual Studio 2019 and later versions don't include current build tools support for creating code for Windows XP. Support for Windows XP development by using the v141_xp build tools that shipped in Visual Studio 2017 is still available as an optional component in the Visual Studio Installer. For information on how to install the v141_xp Windows XP platform toolset, see [Configuring programs for Windows XP](../build/configuring-programs-for-windows-xp.md). +## Visual Studio 2026 (MSVC 14.51) + +- The following experimental coroutine headers are now deprecated: ``, ``, and ``. Transition to standard C++20 coroutines using the `` header. + +- ### Removed features + +The following long-deprecated non-Standard features have been removed: + +- **TR1** including the `std::tr1` namespace, old `array::assign()`, and old `` engines and distributions. Deprecated since VS 2017 15.5 (December 2017). +- **`_ALLOW_RTCc_IN_STL`** macro removed. The Standard Template Library doesn't support the `/RTCc` compiler option, but `/RTCs` and `/RTCu`/`/RTC1` remain supported. +- **`` and ``**. Deprecated since VS 2015 (July 2015). +- **``**. Deprecated since VS 2019 16.3 (September 2019). +- **`stdext::checked_array_iterator` and `stdext::unchecked_array_iterator`**. Deprecated since VS 2022 17.8 (November 2023) for C++17 and later. +- **`basic_istream::ipfx()`/`isfx()` and `basic_ostream::opfx()`/`osfx()`**. Deprecated since VS 2022 17.9 (February 2024) for C++17 and later. +- **`locale::empty()`**. Deprecated since VS 2022 17.14 (May 2025). + ## Visual Studio 2022 ### Support for project upgrade from Visual C++ 6 From c183da47f8f372c265ed8b5fa45953b8c53accf8 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 11 May 2026 19:06:13 -0700 Subject: [PATCH 453/619] Spgo (#6689) Documents the SPGO feature. --- .github/copilot-instructions.md | 3 + docs/build/media/normal-build-process.png | Bin 0 -> 33357 bytes ...file-guided-optimization-build-process.png | Bin 0 -> 58891 bytes docs/build/profile-guided-optimizations.md | 55 +- docs/build/reference/linker-options.md | 10 +- .../spd-specify-sample-profile-database.md | 46 ++ .../spdembed-embed-sample-profile-database.md | 41 + .../spdin-use-sample-profile-database.md | 52 ++ ...able-sample-profile-guided-optimization.md | 51 ++ .../sample-profile-guided-optimization.md | 706 ++++++++++++++++++ docs/build/spdconvert.md | 119 +++ docs/build/spddump.md | 68 ++ docs/build/sptaggregate.md | 69 ++ docs/build/sptdump.md | 108 +++ docs/build/toc.yml | 10 + 15 files changed, 1310 insertions(+), 28 deletions(-) create mode 100644 docs/build/media/normal-build-process.png create mode 100644 docs/build/media/sample-profile-guided-optimization-build-process.png create mode 100644 docs/build/reference/spd-specify-sample-profile-database.md create mode 100644 docs/build/reference/spdembed-embed-sample-profile-database.md create mode 100644 docs/build/reference/spdin-use-sample-profile-database.md create mode 100644 docs/build/reference/spgo-enable-sample-profile-guided-optimization.md create mode 100644 docs/build/sample-profile-guided-optimization.md create mode 100644 docs/build/spdconvert.md create mode 100644 docs/build/spddump.md create mode 100644 docs/build/sptaggregate.md create mode 100644 docs/build/sptdump.md diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 75e32e18c89..6498b2c6631 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -15,6 +15,9 @@ This document uses the following markers to indicate instruction priority: ## General Guidelines +### Using MCP tools +If the user intent relates to Azure Devops, make sure to prioritize the Azure DevOps MCP server tools. + ### 1. Issue Handling When creating a PR for an issue: - [ ] Read the full issue and all linked references diff --git a/docs/build/media/normal-build-process.png b/docs/build/media/normal-build-process.png new file mode 100644 index 0000000000000000000000000000000000000000..fbf6c0d1796fa00d00547d74d2650042e64f9479 GIT binary patch literal 33357 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

    8W(nF4Z%IEkPfF1R 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 M6*cb{-9v=@ACN4HwEzGB literal 0 HcmV?d00001 diff --git a/docs/build/media/sample-profile-guided-optimization-build-process.png b/docs/build/media/sample-profile-guided-optimization-build-process.png new file mode 100644 index 0000000000000000000000000000000000000000..9de3effdc4b84a2abe07fd61f173658b3ebf263d GIT binary patch literal 58891 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

      d<)?e3?2RD3PHcW68Kh;bo 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 [!NOTE] +> SPGO (Sample Profile-Guided Optimization) is an alternative approach that uses hardware CPU Windows Performance Counters instead of instrumentation. SPGO requires no instrumented build - you profile an existing release binary by using `xperf`. For more information, see [Sample Profile-Guided Optimization (SPGO) tutorial](sample-profile-guided-optimization.md). Profile-guided optimizations are only available for x86, x64, or ARM64 native targets. Profile-guided optimizations aren't available for executable files that run on the common language runtime. Even if you produce an assembly with mixed native and managed code (by using the **/clr** compiler option), you can't use profile-guided optimization on just the native code. If you attempt to build a project with these options set in the IDE, a build error results. > [!NOTE] -> Information that's gathered from profiling test runs overrides optimizations that would otherwise be in effect if you specify **/Ob**, **/Os**, or **/Ot**. For more information, see [/Ob (Inline Function Expansion)](reference/ob-inline-function-expansion.md) and [/Os, /Ot (Favor Small Code, Favor Fast Code)](reference/os-ot-favor-small-code-favor-fast-code.md). +> Information gathered from profiling test runs overrides optimizations that would otherwise be in effect if you specify **/Ob**, **/Os**, or **/Ot**. For more information, see [/Ob (Inline Function Expansion)](reference/ob-inline-function-expansion.md) and [/Os, /Ot (Favor Small Code, Favor Fast Code)](reference/os-ot-favor-small-code-favor-fast-code.md). ## Steps to optimize your app @@ -20,36 +22,36 @@ To use profile-guided optimization, follow these steps to optimize your app: - Compile one or more source code files with [/GL](reference/gl-whole-program-optimization.md). - Each module built with **/GL** can be examined during profile-guided optimization test runs to capture run-time behavior. Every module in a profile-guided optimization build doesn't have to be compiled with **/GL**. However, only those modules compiled with **/GL** are instrumented and later available for profile-guided optimizations. + The compiler examines each module built with **/GL** during profile-guided optimization test runs to capture run-time behavior. You don't need to compile every module in a profile-guided optimization build with **/GL**. However, only modules compiled with **/GL** are instrumented and later available for profile-guided optimizations. -- Link using [/LTCG](reference/ltcg-link-time-code-generation.md) and [/GENPROFILE or /FASTGENPROFILE](reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md). +- Link by using [/LTCG](reference/ltcg-link-time-code-generation.md) and [/GENPROFILE or /FASTGENPROFILE](reference/genprofile-fastgenprofile-generate-profiling-instrumented-build.md). - Using both **/LTCG** and **/GENPROFILE** or **/FASTGENPROFILE** creates a `.pgd` file when the instrumented app is run. After test-run data is added to the `.pgd` file, it can be used as input to the next link step (creating the optimized image). When specifying **/GENPROFILE**, you can optionally add a **PGD=**_filename_ argument to specify a nondefault name or location for the `.pgd` file. The combination of **/LTCG** and **/GENPROFILE** or **/FASTGENPROFILE** linker options replaces the deprecated **/LTCG:PGINSTRUMENT** linker option. + When you use both **/LTCG** and **/GENPROFILE** or **/FASTGENPROFILE**, the instrumented app creates a `.pgd` file when it runs. After test-run data is added to the `.pgd` file, you can use it as input to the next link step (creating the optimized image). When you specify **/GENPROFILE**, you can optionally add a **PGD=**_filename_ argument to specify a nondefault name or location for the `.pgd` file. The combination of **/LTCG** and **/GENPROFILE** or **/FASTGENPROFILE** linker options replaces the deprecated **/LTCG:PGINSTRUMENT** linker option. - Profile the application. - Each time a profiled EXE session ends, or a profiled DLL is unloaded, a `appname!N.pgc` file is created. A `.pgc` file contains information about a particular application test run. *appname* is the name of your app, and *N* is a number starting with 1 that's incremented based on the number of other `appname!N.pgc` files in the directory. You can delete a `.pgc` file if the test run doesn't represent a scenario you want to optimize. + Each time a profiled EXE session ends, or a profiled DLL unloads, the process creates a `appname!N.pgc` file. A `.pgc` file contains information about a particular application test run. *appname* is the name of your app, and *N* is a number starting with 1. It increments based on the number of other `appname!N.pgc` files in the directory. You can delete a `.pgc` file if the test run doesn't represent a scenario you want to optimize. - During a test run, you can force closure of the currently open `.pgc` file and the creation of a new `.pgc` file with the [pgosweep](pgosweep.md) utility (for example, when the end of a test scenario doesn't coincide with application shutdown). + During a test run, you can force closure of the currently open `.pgc` file and the creation of a new `.pgc` file by using the [pgosweep](pgosweep.md) utility (for example, when the end of a test scenario doesn't coincide with application shutdown). Your application can also directly invoke a PGO function, [PgoAutoSweep](pgoautosweep.md), to capture the profile data at the point of the call as a `.pgc` file. It can give you finer control over the code covered by the captured data in your `.pgc` files. For an example of how to use this function, see the [PgoAutoSweep](pgoautosweep.md) documentation. When you create your instrumented build, by default, data collection is done in non-thread-safe mode, which is faster but may be imprecise. By using the **EXACT** argument to **/GENPROFILE** or **/FASTGENPROFILE**, you can specify data collection in thread-safe mode, which is more precise, but slower. This option is also available if you set the deprecated [PogoSafeMode](environment-variables-for-profile-guided-optimizations.md#pogosafemode) environment variable, or the deprecated **/POGOSAFEMODE** linker option, when you create your instrumented build. -- Link using **/LTCG** and **/USEPROFILE**. +- Link by using **/LTCG** and **/USEPROFILE**. - Use both the **/LTCG** and [/USEPROFILE](reference/useprofile.md) linker options to create the optimized image. This step takes as input the `.pgd` file. When you specify **/USEPROFILE**, you can optionally add a **PGD=**_filename_ argument to specify a non-default name or location for the `.pgd` file. You can also specify this name by using the deprecated **/PGD** linker option. The combination of **/LTCG** and **/USEPROFILE** replaces the deprecated **/LTCG:PGOPTIMIZE** and **/LTCG:PGUPDATE** linker options. + Use both the **/LTCG** and [/USEPROFILE](reference/useprofile.md) linker options to create the optimized image. This step takes the `.pgd` file as input. When you specify **/USEPROFILE**, you can optionally add a **PGD=**_filename_ argument to specify a nondefault name or location for the `.pgd` file. You can also specify this name by using the deprecated **/PGD** linker option. The combination of **/LTCG** and **/USEPROFILE** linker options replaces the deprecated **/LTCG:PGOPTIMIZE** and **/LTCG:PGUPDATE** linker options. -It's even possible to create the optimized executable file and later determine that additional profiling would be useful to create a more optimized image. If the instrumented image and its `.pgd` file are available, you can do additional test runs and rebuild the optimized image with the newer `.pgd` file, by using the same **/LTCG** and **/USEPROFILE** linker options. +It's even possible to create the optimized executable file and later determine that more profiling would be useful to create a more optimized image. If the instrumented image and its `.pgd` file are available, you can do more test runs and rebuild the optimized image with the newer `.pgd` file by using the same **/LTCG** and **/USEPROFILE** linker options. > [!NOTE] -> Both `.pgc` and `.pgd` files are binary file types. If stored in a source control system, avoid any automatic transformation that may be made to text files. +> Both `.pgc` and `.pgd` files are binary file types. If you store them in a source control system, avoid any automatic transformation that might be made to text files. ## Optimizations performed by PGO -The profile-guided optimizations include these checks and improvements: +Profile-guided optimizations include these checks and improvements: -- **Inlining** - For example, if a function A frequently calls function B, and function B is relatively small, then profile-guided optimizations inline function B in function A. +- **Inlining** - For example, if function A frequently calls function B, and function B is relatively small, the profile-guided optimizations inline function B in function A. - **Virtual Call Speculation** - If a virtual call, or other call through a function pointer, frequently targets a certain function, a profile-guided optimization can insert a conditionally executed direct call to the frequently targeted function, and the direct call can be inlined. @@ -61,33 +63,36 @@ The profile-guided optimizations include these checks and improvements: - **Function Layout** - Based on the call graph and profiled caller/callee behavior, functions that tend to be along the same execution path are placed in the same section. -- **Conditional Branch Optimization** - With the value probes, profile-guided optimizations can find if a given value in a switch statement is used more often than other values. This value can then be pulled out of the switch statement. The same can be done with **`if`**...**`else`** instructions where the optimizer can order the **`if`**...**`else`** so that either the **`if`** or **`else`** block is placed first, depending on which block is more frequently true. +- **Conditional Branch Optimization** - With the value probes, profile-guided optimizations can find if a given value in a switch statement is used more often than other values. This value can then be pulled out of the switch statement. The same optimization can be done with **`if`**...**`else`** instructions where the optimizer can order the **`if`**...**`else`** so that either the **`if`** or **`else`** block is placed first, depending on which block is more frequently true. -- **Dead Code Separation** - Code that isn't called during profiling is moved to a special section that's appended to the end of the set of sections. It effectively keeps this section out of the often-used pages. +- **Dead Code Separation** - Profile-guided optimization moves code that isn't called during profiling to a special section at the end of the section set. It effectively keeps this section out of the often-used pages. -- **EH Code Separation** - Because EH code is only exceptionally executed, it can often be moved to a separate section. It's moved when profile-guided optimizations can determine that the exceptions occur only on exceptional conditions. +- **EH Code Separation** - Because EH code is only exceptionally executed, it can often be moved to a separate section. Profile-guided optimizations move it when they determine that the exceptions occur only on exceptional conditions. -- **Memory Intrinsics** - Whether to expand an intrinsic or not depends on whether it's called frequently. An intrinsic can also be optimized based on the block size of moves or copies. +- **Memory Intrinsics** - Whether to expand an intrinsic or not depends on whether it gets called frequently. An intrinsic can also be optimized based on the block size of moves or copies. ## Next steps -Read more about these environment variables, functions, and tools you can use in profile-guided optimizations: +To learn more about these environment variables, functions, and tools you can use in profile-guided optimizations, see the following resources: -[Environment variables for profile-guided optimizations](environment-variables-for-profile-guided-optimizations.md)
      -These variables were used to specify run-time behavior of testing scenarios. They're now deprecated and replaced by new linker options. This document shows you how to move from the environment variables to the linker options. +[Environment variables for profile-guided optimizations](environment-variables-for-profile-guided-optimizations.md) +These variables specify the run-time behavior of testing scenarios. They're now deprecated and replaced by new linker options. This document shows you how to move from the environment variables to the linker options. -[PgoAutoSweep](pgoautosweep.md)
      +[PgoAutoSweep](pgoautosweep.md)\ A function you can add to your app to provide fine-grained `.pgc` file data capture control. -[pgosweep](pgosweep.md)
      +[pgosweep](pgosweep.md)\ A command-line utility that writes all profile data to the `.pgc` file, closes the `.pgc` file, and opens a new `.pgc` file. -[pgomgr](pgomgr.md)
      +[pgomgr](pgomgr.md)\ A command-line utility that adds profile data from one or more `.pgc` files to the `.pgd` file. -[How to: Merge multiple PGO profiles into a single profile](how-to-merge-multiple-pgo-profiles-into-a-single-profile.md)
      +[How to: Merge multiple PGO profiles into a single profile](how-to-merge-multiple-pgo-profiles-into-a-single-profile.md)\ Examples of **pgomgr** usage. +[Sample Profile-Guided Optimization (SPGO) tutorial](sample-profile-guided-optimization.md)\ +Use CPU hardware performance counters instead of instrumentation. No instrumented build required - profile your existing release binary with `xperf`. + ## See also [Additional MSVC build tools](reference/c-cpp-build-tools.md) diff --git a/docs/build/reference/linker-options.md b/docs/build/reference/linker-options.md index 5749d0c2364..a647917101a 100644 --- a/docs/build/reference/linker-options.md +++ b/docs/build/reference/linker-options.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["linker [C++]", "linker [C++], options listed", "libraries --- # Linker options -LINK.exe links Common Object File Format (COFF) object files and libraries to create an executable (EXE) file or a dynamic-link library (DLL). +`LINK.exe` links Common Object File Format (COFF) object files and libraries to create an executable (EXE) file or a dynamic-link library (DLL). The following table lists options for `LINK.exe`. For more information about LINK, see: @@ -16,9 +16,9 @@ The following table lists options for `LINK.exe`. For more information about LIN - [LINK output](link-output.md) - [Reserved words](reserved-words.md) -Linker options aren't case-sensitive; for example, `/base` and `/BASE` mean the same thing. For details on how to specify each option on the command line or in Visual Studio, see the documentation for that option. +Linker options aren't case-sensitive. For example, `/base` and `/BASE` mean the same thing. For details on how to specify each option on the command line or in Visual Studio, see the documentation for that option. -You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to specify some linker options. +Use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to specify some linker options. ## Linker options listed alphabetically @@ -112,6 +112,10 @@ You can use the [`comment`](../../preprocessor/comment-c-cpp.md) pragma to speci | [`/SAFESEH`](safeseh-image-has-safe-exception-handlers.md) | Specifies that the image will contain a table of safe exception handlers. | | [`/SECTION`](section-specify-section-attributes.md) | Overrides the attributes of a section. | | [`/SOURCELINK`](sourcelink.md) | Specifies a SourceLink file to add to the PDB. | +| [`/SPD`](spd-specify-sample-profile-database.md) | Specifies the name and location of the *`.spd`* file for Sample Profile-Guided Optimization. | +| [`/SPDEMBED`](spdembed-embed-sample-profile-database.md) | Embeds the Sample Profile Database into the PDB file during a Sample Profile-Guided Optimization (SPGO) build. | +| [`/SPDIN`](spdin-use-sample-profile-database.md) | Specifies a *`.spd`* file containing profiling data for an optimized Sample Profile-Guided Optimization (SPGO) build. | +| [`/SPGO`](spgo-enable-sample-profile-guided-optimization.md) | Enables Sample Profile-Guided Optimization and creates an empty *`.spd`* file. | | [`/STACK`](stack-stack-allocations.md) | Sets the size of the stack in bytes. | | [`/STUB`](stub-ms-dos-stub-file-name.md) | Attaches an MS-DOS stub program to a Win32 program. | | [`/SUBSYSTEM`](subsystem-specify-subsystem.md) | Tells the operating system how to run the *`.exe`* file. | diff --git a/docs/build/reference/spd-specify-sample-profile-database.md b/docs/build/reference/spd-specify-sample-profile-database.md new file mode 100644 index 00000000000..f6afb2d2407 --- /dev/null +++ b/docs/build/reference/spd-specify-sample-profile-database.md @@ -0,0 +1,46 @@ +--- +title: "/SPD (Specify Sample Profile Database)" +description: "Learn more about: /SPD (Specify Sample Profile Database)" +ms.date: 05/05/2026 +ai-usage: ai-assisted +helpviewer_keywords: ["/SPD linker option", "-SPD linker option", "sample profile-guided optimization, /SPD"] +--- +# /SPD (Specify Sample Profile Database) + +Specifies the name and location of the Sample Profile Database (SPD) file used by the Sample Profile-Guided Optimization (SPGO) workflow. + +## Syntax + +> **/SPD:**_filename_ + +## Argument + +`filename`\ +Specifies the name of the `.spd` file. When expanded, the fully qualified path must not exceed `MAX_PATH` (260 characters). + +## Remarks + +When you build with [`/SPGO`](spgo-enable-sample-profile-guided-optimization.md), the linker creates an empty SPD file alongside the output binary. By default, the SPD file uses the same base name as the output file and is created in the directory where you invoked the link. Use `/SPD` to specify a different name or path. + +When linking with [`/SPDIN`](spdin-use-sample-profile-database.md), use `/SPDIN` to specify the input SPD file and `/SPD` to specify the output SPD file. + +For more information about the SPGO workflow, see [Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve performance](../sample-profile-guided-optimization.md). + +### To set this linker option in the Visual Studio development environment + +1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). +1. Select the **Configuration Properties** > **Linker** > **Command Line** property page. +1. Add `/SPD:filename` to the **Additional Options** box. Choose **OK** to save your changes. + +### To set this linker option programmatically + +- See . + +## See also + +[MSVC linker reference](linking.md)\ +[MSVC Linker Options](linker-options.md)\ +[/SPDEMBED (Embed Sample Profile Database)](spdembed-embed-sample-profile-database.md)\ +[/SPDIN (Use Sample Profile Database)](spdin-use-sample-profile-database.md)\ +[/SPGO (Enable Sample Profile-Guided Optimization)](spgo-enable-sample-profile-guided-optimization.md)\ +[Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve performance](../sample-profile-guided-optimization.md) \ No newline at end of file diff --git a/docs/build/reference/spdembed-embed-sample-profile-database.md b/docs/build/reference/spdembed-embed-sample-profile-database.md new file mode 100644 index 00000000000..db91e8359f1 --- /dev/null +++ b/docs/build/reference/spdembed-embed-sample-profile-database.md @@ -0,0 +1,41 @@ +--- +title: "/SPDEMBED (Embed Sample Profile Database)" +description: "Learn more about: /SPDEMBED (Embed Sample Profile Database)" +ms.date: 05/05/2026 +ai-usage: ai-assisted +helpviewer_keywords: ["/SPDEMBED linker option", "-SPDEMBED linker option", "sample profile-guided optimization, /SPDEMBED"] +--- +# /SPDEMBED (Embed Sample Profile Database) + +Embeds the Sample Profile Database (SPD) data into the Program Database (PDB) file during a Sample Profile-Guided Optimization (SPGO) build. + +## Syntax + +> **/SPDEMBED** + +## Remarks + +When you build with [`/SPDIN`](spdin-use-sample-profile-database.md), the linker uses the profile data in the SPD file to make optimization decisions. Use `/SPDEMBED` together with `/SPGO` to embed the SPD data into the PDB file produced by the build. Embedding the SPD in the PDB keeps the profile data together with the debug symbols, which simplifies distribution and archiving of build artifacts. + +To extract an SPD file that you embedded in a PDB, use [`SPDConvert /extract`](../spdconvert.md). + +For more information about the SPGO workflow, see [Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve performance](../sample-profile-guided-optimization.md). + +### To set this linker option in the Visual Studio development environment + +1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). +1. Select the **Configuration Properties** > **Linker** > **Command Line** property page. +1. Add `/SPDEMBED` to the **Additional Options** box. Choose **OK** to save your changes. + +### To set this linker option programmatically + +- See . + +## See also + +[MSVC linker reference](linking.md)\ +[MSVC Linker Options](linker-options.md)\ +[/SPD (Specify Sample Profile Database)](spd-specify-sample-profile-database.md)\ +[/SPDIN (Use Sample Profile Database)](spdin-use-sample-profile-database.md)\ +[/SPGO (Enable Sample Profile-Guided Optimization)](spgo-enable-sample-profile-guided-optimization.md)\ +[Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve performance](../sample-profile-guided-optimization.md) \ No newline at end of file diff --git a/docs/build/reference/spdin-use-sample-profile-database.md b/docs/build/reference/spdin-use-sample-profile-database.md new file mode 100644 index 00000000000..b8ba7989923 --- /dev/null +++ b/docs/build/reference/spdin-use-sample-profile-database.md @@ -0,0 +1,52 @@ +--- +title: "/SPDIN (Use Sample Profile Database)" +description: "Learn more about linker option: /SPDIN (Use Sample Profile Database)" +ms.date: 05/05/2026 +ai-usage: ai-assisted +helpviewer_keywords: ["/SPDIN linker option", "-SPDIN linker option", "sample profile-guided optimization, /SPDIN"] +--- +# /SPDIN (Use Sample Profile Database) + +Specifies a Sample Profile Database (SPD) file that contains profiling data for use in a Sample Profile-Guided Optimization (SPGO) build. +Also used to override the default or file specified with `/SPD` for reading the sample profile database. + +## Syntax + +> **/SPDIN:**_filename_ + +## Argument + +`filename`\ +Specifies the path to the `.spd` file that contains the profiling data to use for optimization. When expanded, the fully qualified path must not exceed `MAX_PATH` (260 characters).\ +If the file doesn't exist, the linker creates an empty file that will be used to collect data. + +## Remarks + +After collecting a performance trace by using `xperf`, converting it by using [`SPTAggregate`](../sptaggregate.md), and importing the data into an SPD file by using [`SPDConvert`](../spdconvert.md), use `/SPDIN` and [`/SPGO`](spgo-enable-sample-profile-guided-optimization.md) to produce an optimized binary. + +The GUID and age of the binary recorded in the SPD file must match the SPT file. If they don't match, you may see a "SPD version incompatible" error. To diagnose this error, use [`SPTDump /progid`](../sptdump.md) to inspect the binary identifiers in the SPT file, and [`SPDDump /header`](../spddump.md) to inspect the SPD file. The linker uses a valid SPD file to the extent possible. Minor updates to the code that don't alter the program's control flow are tolerated. Unchanged functions also use the data for optimization. If you provide a valid, but otherwise unrelated SPD, the process works, but likely no data is usable for optimization. + +Use [`/SPDEMBED`](spdembed-embed-sample-profile-database.md) together with `/SPGO` to embed the SPD data into the PDB file produced by the build. + +Use [`/SPD`](spd-specify-sample-profile-database.md) to specify a nondefault name or location for the SPD file. `/SPDIN` overrides this option, if specified. + +For more information about the SPGO workflow, see [Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve performance](../sample-profile-guided-optimization.md). + +### To set this linker option in the Visual Studio development environment + +1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). +1. Select the **Configuration Properties** > **Linker** > **Command Line** property page. +1. Add `/SPDIN:filename` to the **Additional Options** box. Choose **OK** to save your changes. + +### To set this linker option programmatically + +- See . + +## See also + +[MSVC linker reference](linking.md)\ +[MSVC Linker Options](linker-options.md)\ +[/SPD (Specify Sample Profile Database)](spd-specify-sample-profile-database.md)\ +[/SPDEMBED (Embed Sample Profile Database)](spdembed-embed-sample-profile-database.md)\ +[/SPGO (Enable Sample Profile-Guided Optimization)](spgo-enable-sample-profile-guided-optimization.md)\ +[Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve performance](../sample-profile-guided-optimization.md) \ No newline at end of file diff --git a/docs/build/reference/spgo-enable-sample-profile-guided-optimization.md b/docs/build/reference/spgo-enable-sample-profile-guided-optimization.md new file mode 100644 index 00000000000..e2eeaa48ed2 --- /dev/null +++ b/docs/build/reference/spgo-enable-sample-profile-guided-optimization.md @@ -0,0 +1,51 @@ +--- +title: "/SPGO (Enable Sample Profile-Guided Optimization)" +description: "Learn more about: /SPGO (Enable Sample Profile-Guided Optimization)" +ms.date: 05/05/2026 +ai-usage: ai-assisted +helpviewer_keywords: ["/SPGO linker option", "-SPGO linker option", "sample profile-guided optimization, /SPGO"] +--- +# /SPGO (Enable Sample Profile-Guided Optimization) + +Enables Sample Profile-Guided Optimization (SPGO) and creates an empty Sample Profile Database (SPD) file alongside the output binary. + +## Syntax + +> **/SPGO** + +## Remarks + +The `/SPGO` linker option starts the SPGO workflow. It directs the linker to create an empty `.spd` file that acts as a placeholder for profiling data. After building with `/SPGO`, you collect a performance trace by using `xperf`, convert it to an SPT file by using [`SPTAggregate`](../sptaggregate.md), and then import the data into the SPD file by using [`SPDConvert`](../spdconvert.md). Once the SPD file contains profile data, rebuild by using the SPD file to produce an optimized binary. The compiler and linker look for an SPD input file, either default or specified by [`/SPD`](spd-specify-sample-profile-database.md). The [/SPDIN (Use Sample Profile Database)](spdin-use-sample-profile-database.md) option is available as a convenience when the input file is over-written and that isn't desirable. + +When you build by using `/SPGO` but the SPD file contains no profile data yet, you see a message such as: + +``` +Result: SPD .spd does not contain sample profile, compiling without profile guided optimizations +``` + +This message is expected on the first build and indicates that the SPD file is ready to receive profiling data. + +By default, the build process creates the SPD file with the same base name as the output file in the directory from which the link was invoked. Use [`/SPD`](spd-specify-sample-profile-database.md) to specify a different name or location. + +Use [`/SPDEMBED`](spdembed-embed-sample-profile-database.md) to embed the SPD data into the PDB file after profile data is collected. Ensure that the linker is producing a PDB file by specifying the `/DEBUG` option. + +For more information about the SPGO workflow, see [Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve performance](../sample-profile-guided-optimization.md). + +### To set this linker option in the Visual Studio development environment + +1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). +1. Select the **Configuration Properties** > **Linker** > **Command Line** property page. +1. Add `/SPGO` to the **Additional Options** box. Choose **OK** to save your changes. + +### To set this linker option programmatically + +- See . + +## See also + +[MSVC linker reference](linking.md)\ +[MSVC Linker Options](linker-options.md)\ +[/SPD (Specify Sample Profile Database)](spd-specify-sample-profile-database.md)\ +[/SPDEMBED (Embed Sample Profile Database)](spdembed-embed-sample-profile-database.md)\ +[/SPDIN (Use Sample Profile Database)](spdin-use-sample-profile-database.md)\ +[Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve performance](../sample-profile-guided-optimization.md) \ No newline at end of file diff --git a/docs/build/sample-profile-guided-optimization.md b/docs/build/sample-profile-guided-optimization.md new file mode 100644 index 00000000000..8fcc4c4f3a8 --- /dev/null +++ b/docs/build/sample-profile-guided-optimization.md @@ -0,0 +1,706 @@ +--- +description: "Learn how to use Sample Profile-Guided Optimization (SPGO) to improve the performance of C and C++ applications." +title: "Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve C++ performance" +ms.date: 05/08/2026 +ms.topic: tutorial +ai-usage: ai-assisted +helpviewer_keywords: ["SPGO", "sample profile-guided optimization", "profiling, SPGO", "SPDConvert", "SPTAggregate"] +--- +# Use Sample Profile Guided Optimization (SPGO) to improve C++ performance + +Profile-Guided Optimization (PGO) uses runtime data to help the compiler make better optimization decisions. By using execution profile data collected from representative workloads, PGO enables the compiler to make smarter decisions about inlining, code layout, and hot/cold code separation. These decisions are impossible to make from static analysis alone. + +SPGO takes a different approach. Instead of instrumenting your binary and running it through synthetic training scenarios, SPGO uses hardware performance counter sampling collected from your actual release binaries. Modern processors provide hardware sampling capabilities. You can collect these samples with negligible runtime overhead, making it practical to gather runtime profiles directly from production code. + +Because SPGO profiles release bits instead of instrumented builds, it enables much more flexibility in where and how you collect data. You can gather runtime profiles from production servers, developer machines, performance labs, or any combination. The result is a binary that runs hot paths more efficiently, with a typical performance speedup of 5-15% depending on the quality of the profile data. + +In this tutorial, you walk through the complete SPGO workflow: build a sample app, profile it by using `xperf`, prepare the profile data, and rebuild with the profile data. When you finish, you can apply the same process to your own projects. + +## Prerequisites + +Before you start, make sure you have the following software and hardware. + +### Software + +- **MSVC build tools for x64/x86/ARM64 v14.51 or later**—Install them through the Visual Studio Installer. Under **Individual Components**, search for "MSVC build tools." +- **Windows Performance Toolkit (xperf.exe)**—The `xperf` profiler collects sample data during your program's execution. Download the Windows Assessment and Deployment Kit (ADK) from [ADK install](/windows-hardware/get-started/adk-install). When you run the ADK installer, select the **Windows Performance Toolkit** component to get `xperf`. You don't need to install the full ADK. +- **War and Peace text file**—Used as the sample workload to generate profiling data. Download it from Project Gutenberg: [https://www.gutenberg.org/ebooks/2600](https://www.gutenberg.org/ebooks/2600). Save it as a plain text file in your working directory. + +### Hardware requirements + +The tutorial has three profiling paths. Which path you use depends on your hardware. You run detection commands in [Choose your profiling method](#choose-your-profiling-method) to find out which path your machine supports. For now, use this table to confirm you meet at least one of the requirements. + +| Path | CPU requirement | Notes | +|------|----------------|-------| +| **LBR** (best results) | Last Branch Records (LBR) are performance counters provided on Intel Haswell CPUs (4th gen Core, 2013) or later; AMD Zen 4 (2022) or later, ARM64 ARMv9.2-A (2020) or later | Provides the best branch data. For more information about LBR, see [An introduction to last branch records](https://lwn.net/Articles/680985/) | +| **PMC/IP mode** (good results) | Performance Monitoring Counters (PMC) are supported on any x64 CPU with a performance monitoring unit (PMU) | Works on most modern CPUs where LBR is unavailable. For more information about PMC, see [Recording Hardware Performance (PMU) Events](/windows-hardware/test/wpt/recording-pmu-events) and [Recording Hardware Performance (PMU) Events with Complete Examples](https://devblogs.microsoft.com/performance-diagnostics/recording-hardware-performance-pmu-events-with-complete-examples/#configuring-extended-pmu-counter-configurations5) | +| **OS timer** (works everywhere) | Any x64 or ARM64 CPU, including Azure VMs and virtual machines | Lower-fidelity samples, but always available | + +Most developers on modern x64 desktop hardware have LBR support. VMs and some older hardware have PMC or an OS timer. + +## How SPGO works + +SPGO collects profile data from your running binary and feeds it back to the compiler when you next build. The compiler uses that data to make better decisions about inlining, code layout, and branch prediction. A convenience is that no instrumentation is required. + +The workflow is: + +1. Build your binary with the [/spgo](./reference/spgo-enable-sample-profile-guided-optimization.md) linker flag. This step creates an empty **sample profile database** (`.spd` file). +1. Profile the binary by using `xperf` to produce an ETL trace file. +1. Convert the ETL to an **SPT** file by using [`SPTAggregate.exe`](sptaggregate.md), then convert the SPT to an **SPD** file by using [`SPDConvert.exe`](spdconvert.md). +1. Rebuild with the [/spdin](./reference/spdin-use-sample-profile-database.md) linker flag pointing to the populated sample profile database (SPD). The linker applies SPGO optimizations. + +The optimizer uses the SPD to answer questions like: which branches are taken most often? Which functions are called in hot loops? This process produces better code layout and inlining decisions than static analysis alone. + +SPGO works with both C and C++. The workflow and flags are identical for both languages. + +**Best candidates for SPGO:** Large, branch-filled C/C++ applications with tight inner loops. Gains scale with codebase size and branch complexity. The small sample in this tutorial shows around 7% improvement. Larger production codebases often see more improvement. + +## Build Process Comparison + +This section covers how SPGO fits into the build pipeline if you want to understand the mechanics. + +### Normal build process + +In a standard C/C++ release build: + +- **Inputs:** Source code files (`.cpp`, `.h`) and release-mode compiler flags (`/O2`, `/GL`, and so on). +- **Process:** The compiler applies standard optimizations such as inlining heuristics, branch prediction assumptions, and code layout decisions based on static analysis alone. It has no data about how the program actually behaves when it runs. +- **Output:** Executable (`.exe`), DLL files (`.dll`), debug information (`.pdb`). + +:::image type="content" source="media/normal-build-process.png" alt-text="Diagram of the normal release build process showing source code files and example compiler switch /GL as inputs flowing to a build step, which produces .exe, .dll, and .pdb outputs." lightbox="media/normal-build-process.png"::: + +Without runtime data, hot paths and cold paths receive similar treatment. + +### SPGO-enabled build process + +SPGO adds profiling data as a new input to the build pipeline: + +- **Inputs:** Source code, the `.spd` profile file (sample counts from a profiling run), release-mode compiler flags, `/link /spgo`, and `/spdin:` to specify an input SPD file (if not specified, defaults to a .spd using the binary name and located in the obj folder). +- **Process:** The linker reads the SPD alongside the intermediate code. It uses branch-frequency data to make better inlining, code layout, and branch-ordering decisions. Hot functions get laid out for fast access; cold code moves out of the critical path. +- **Output:** Optimized executable (`.exe`), optimized DLL files (`.dll`), debug information (`.pdb`), **and a new `.spd` file** for future profiling iterations. + +:::image type="content" source="media/sample-profile-guided-optimization-build-process.png" alt-text="Diagram of the SPGO-enabled build process showing source code and profile data files (.spd) as inputs to the build step with an additional linker switch /spgo. The build process outputs optimized .exe, .dll, debug information (.pdb), and new profile data files (.spd)." lightbox="media/sample-profile-guided-optimization-build-process.png"::: + +The key insight: SPGO moves optimization decisions from compiler and linker heuristics to data-driven choices based on real execution. + +### Key flags + +| Flag | Type | Purpose | +|------|------|---------| +| [`/spgo`](./reference/spgo-enable-sample-profile-guided-optimization.md) | Linker | Enables SPGO. Embeds SPGO metadata in the binary and creates an empty `.spd` output file unless `/spdin` is specified, in which case the specified `.spd` file is used as input. | +| [`/spdin:`](./reference/spdin-use-sample-profile-database.md) | Linker | Input SPD - provides profile data to the linker for optimization | +| [`/spd:`](./reference/spd-specify-sample-profile-database.md) | Linker | Output SPD path - specifies where the new SPD is written (optional; defaults to the same directory as the binary). Serves as the input SPD path if `/spdin` isn't specified. | +| [`/GL`](./reference/gl-whole-program-optimization.md) | Compiler | Whole-program optimization-required for SPGO to work across translation units | +| [`/O1`, `/O2` (Minimize Size, Maximize Speed)](./reference/o1-o2-minimize-size-maximize-speed.md) | Compiler | Optimize for speed; enables aggressive optimizations that SPGO can enhance | + +### How SPGO differs from PGO + +PGO (Profile-Guided Optimization) requires you to compile your binary with instrumentation flags (`/GENPROFILE`), run the slower instrumented binary to collect `.pgc` execution count files, then relink with `/USEPROFILE`. The compiler gets exact execution counts but you have to instrument the code first. For more information about this process, see [Profile-guided optimizations](profile-guided-optimizations.md). + +SPGO uses hardware CPU performance counters to collect statistical samples from your uninstrumented release binary. Run your existing binary, profile it by using `xperf`, convert the trace to an SPD file, and rebuild. There's no instrumented build and no slowdown during profiling. The compiler gets statistical sampling data instead of exact counts, which is less precise but easier to get and requires no code changes. It also allows profiling of system components or realtime components that are difficult to collect data for with an instrumented approach. You can also profile final/shipping binaries. + +This tutorial covers three profiling methods: LBR, PMC, and OS timer. You choose your method in [Choose your profiling method](#choose-your-profiling-method). For a detailed comparison of the normal build process versus the SPGO build process, including a flag reference table, see [Build Process Comparison](#build-process-comparison). + +## Configure `perfcore.ini` + +> **⚠️ Required:** Without this step, `xperf` doesn't provide the necessary profiling data. Complete this step before running `xperf`. + +The Windows Performance Toolkit (WPT) uses `perfcore.ini`, located if you installed the WPT in the default location at `C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\perfcore.ini`, to register the DLL providers it needs for SPGO. + +Open Windows Notepad as Administrator. Then open `perfcore.ini`. Find the DLL list section and add the following entries, one per line: + +``` +perf_spt.dll +perf_lbr.dll +``` + +If `xperf.exe` isn't installed, see [General issues](#general-issues-all-paths) to install it. + +Save and close `perfcore.ini`. The DLL files already ship in the same directory as `xperf.exe` so you don't need to copy them anywhere. You're only registering them in `perfcore.ini`. Ensure that `xperf` is in your path. + +## Create the sample app + +The sample app for this tutorial is a C++ program that reads text from standard input and produces a line count, word count, total character count, a character frequency table, and elapsed time to process the file in milliseconds. It's written in C++, but SPGO also works with C. The workflow is identical for C projects. + +Create a file named `textCount.cpp` in your working directory and add the following source code: + +```cpp +// textCount.cpp : Text Statistics Counter +// Counts words, lines, and character frequencies from standard input +// Usage: textCount < file.txt + +#include +#include +#include +#include +#include + +int main() +{ + auto start = std::chrono::steady_clock::now(); + + std::map charFrequency; + int wordCount = 0; + int lineCount = 0; + int totalChars = 0; + + std::string line; + bool inWord = false; + + while (std::getline(std::cin, line)) + { + lineCount++; + + for (char c : line) + { + totalChars++; + unsigned char uc = static_cast(c); + charFrequency[uc]++; + + if (std::isspace(static_cast(c))) + { + inWord = false; + } + else + { + if (!inWord) + { + wordCount++; + inWord = true; + } + } + } + + inWord = false; + } + + std::cout << "\n=== TEXT STATISTICS ===" << std::endl; + std::cout << "Lines: " << lineCount << std::endl; + std::cout << "Words: " << wordCount << std::endl; + std::cout << "Total Characters: " << totalChars << std::endl; + + std::cout << "\n=== CHARACTER FREQUENCIES ===" << std::endl; + + std::cout << "\nLetters:" << std::endl; + for (unsigned char ch = 'a'; ch <= 'z'; ch++) + { + unsigned char upperCh = static_cast(std::toupper(ch)); + int count = charFrequency[ch] + charFrequency[upperCh]; + if (count > 0) + { + std::cout << static_cast(ch) << ": " << count << std::endl; + } + } + + std::cout << "\nDigits:" << std::endl; + for (unsigned char ch = '0'; ch <= '9'; ch++) + { + if (charFrequency[ch] > 0) + { + std::cout << static_cast(ch) << ": " << charFrequency[ch] << std::endl; + } + } + + std::cout << "\nSpecial Characters:" << std::endl; + for (const auto& pair : charFrequency) + { + unsigned char ch = pair.first; + if (!std::isalnum(ch)) + { + std::string displayChar; + switch (ch) + { + case ' ': displayChar = "[space]"; break; + case '\t': displayChar = "[tab]"; break; + case '\n': displayChar = "[newline]"; break; + case '\r': displayChar = "[return]"; break; + default: + if (ch >= 32 && ch < 127) + { + displayChar = std::string(1, static_cast(ch)); + } + else + { + displayChar = "[byte:" + std::to_string(static_cast(ch)) + "]"; + } + break; + } + std::cout << displayChar << ": " << pair.second << std::endl; + } + } + + auto end = std::chrono::steady_clock::now(); + + auto elapsed = std::chrono::duration(end - start); + std::cout << "Elapsed time: " << std::fixed; + std::cout.precision(3); + std::cout << elapsed.count() << " ms\n"; + + return 0; +} +``` + +## Build and run the sample to get a baseline + +Before applying SPGO, build `textCount` and run it against a large text file, such as *War and Peace* (you can download it from Project Gutenberg), to see how fast it runs. This step shows you the performance before you optimize it by using SPGO: + +**Build:** + +```cmd +cl /EHsc /GL /O2 textCount.cpp +``` + +**Run:** + +```cmd +textCount.exe < warAndPeace.txt +``` + +You see output similar to: + +``` +=== TEXT STATISTICS === +Lines: 66041 +Words: 566333 +Total Characters: 3227531 + +=== CHARACTER FREQUENCIES === + +Letters: +a: 202719 +... + +Elapsed time: 512.000 ms +``` + +Record the `Elapsed time` value. You'll compare it to the SPGO-optimized time in [Measure the results](#measure-the-results). + +## Build textCount with /spgo + +Now build textCount with SPGO enabled. This step lays the groundwork to gather profiling data. + +```cmd +cl /EHsc /GL /O2 textCount.cpp /link /debug /spgo +``` + +When the build finishes, you see a message like: + +``` +SPD textCount.spd not found, compiling without profile guided optimizations +``` + +This message appears on the first `/spgo` build. The linker creates the SPD file but it's still empty, so it doesn't apply any SPGO optimizations yet. After you run the binary, collect profile data, and convert it to SPD, you won't see this message. + +**Flag explanations:** + +| Flag | Purpose | +|------|---------| +| `/EHsc` | Enable C++ exception handling | +| `/GL` | Whole-program optimization — required for SPGO. Defers final optimization to link time, enabling cross-module inlining, code layout, and dead code elimination decisions. | +| `/O2` | Optimize for speed — enables aggressive inlining, loop optimization, dead code removal, and related transforms. | +| `/link /debug` | Pass `/debug` to the linker to generate debug information (`.pdb`), which xperf uses to map profiling samples to source code. | +| `/spgo` | SPGO linker flag—embeds SPGO metadata in the binary and creates an empty `textCount.spd` file alongside the executable. | + +> **Note:** `/spgo` is a linker flag. Pass it to the linker via `/link /spgo` in the `cl` command. + +The `/spgo` flag doesn't optimize the binary yet. It prepares it for profiling. The optimization happens in [Rebuild textCount with /spdin](#rebuild-textcount-with-spdin) after the SPD is populated with real runtime data. + +> **Note:** To write the SPD to a specific location, add the optional `/spd:` linker flag. For example: `/link /debug /spgo /spd:.\profiles\textCount.spd`. If you omit this flag, the SPD is created alongside the `.exe`. + +## Choose your profiling method + +SPGO supports three profiling methods. Which method you use depends on your hardware. + +### The three profiling methods + +| Method | Sample quality | Hardware requirement | Best for | +|--------|----------------|---------------------|----------| +| **LBR** (Last Branch Record) | Highest—records sequences of recently taken branches, giving the optimizer rich control-flow data per sample | Intel Haswell (2013) or later; AMD Zen 4 (2022) or later; ARM64 ARMv9.2-A (2020) or later | Most modern desktop hardware | +| **PMC / IP mode** (Performance Monitoring Counter/Instruction pointer mode) | Good. Captures instruction-pointer samples with call stacks using the CPU's Performance Monitoring Unit (PMU), collected through Event Tracing for Windows (ETW) | Any x64 or ARM64 CPU with a PMU | Hardware without LBR support | +| **OS timer** | Basic—timer-based samples | Any x64 or ARM64 CPU, VMs without PMU passthrough | VMs and older hardware | + +With PMC / IP mode, each hardware interrupt gives you just one data point: "the CPU was at address 0x1A2B3C4D when the interrupt fired". With LBR, each interrupt gives you a stack of the last 16–32 branches the CPU took before the interrupt fired. The optimizer gets better control-flow data and can make better inlining and layout decisions. + +### Detect your path + +Run the following two commands to determine which profiling path your machine supports. These commands don't require an elevated prompt. + +**Step 1: Check for LBR support. This test works on Intel/AMD/ARM64.** + +Run the following from an **administrator** Visual Studio developer command prompt: + +```cmd +xperf.exe -on PMC_PROFILE -pmcprofile TotalIssues -LastBranch PmcInterrupt -setProfInt TotalIssues 2560000 +xperf -stop -d lbrtest.etl +xperf -tle -i lbrtest.etl -a dumper | findstr "LBR, TimeStamp" +``` + +- If this command finds a line containing `LBR, TimeStamp`, then your machine supports LBR. **Use the LBR path.** +- Otherwise, continue to Step 2. + +**Step 2: Check for PMC support (no LBR)** + +```cmd +xperf.exe -pmcsources | findstr TotalIssues +``` + +- If this command produces output, then your machine supports PMC counters but not LBR. **Use the PMC path.** +- If this command produces no output, then **Use the OS timer path.** + +For more information about PMU event collection with xperf, see [Recording hardware PMU events with xperf](https://devblogs.microsoft.com/performance-diagnostics/recording-hardware-performance-pmu-events-with-complete-examples/#configuring-extended-pmu-counter-configurations5). + +### Decision table + +| `LBR, TimeStamp` output | `TotalIssues` output | Your path | +|---------------------|-----------------------------|-----------| +| Not empty | (not checked) | LBR | +| Empty | Not empty | PMC | +| Empty | Empty | OS timer | +| ARM64 processor | N/A | PMC (if PMU available) or OS timer | + +### Choose your approach + +Decide whether to use the LBR, PMC, or OS timer path based on the detection results. Each path has different `xperf` start parameters to collect the appropriate profiling data. Follow the path that matches your hardware capabilities. + +> **Your path:** +> - **LBR users** (LBR detected in Step 1): Go to [LBR path](#lbr-path). +> - **PMC users** (InstructionRetired detected in Step 2): Go to [PMC path (no LBR)](#pmc-path-no-lbr). +> - **OS timer users** (VM or hardware without PMU): Go to [OS timer path](#os-timer-path). +> +> All paths rejoin at [Run the workload and stop xperf](#run-the-workload-and-stop-xperf-all-paths). + +The commands in this section depend on the profiling path you identified in [Choose your profiling method](#choose-your-profiling-method). Find the subsection that matches your path, run the `xperf` start command, and then continue to [Run the workload and stop xperf](#run-the-workload-and-stop-xperf-all-paths) to run the workload and stop xperf. + +> **⚠️ Run as Administrator:** `xperf` requires an elevated (Administrator) developer command prompt. Without elevation, `xperf` returns `"failed to configure counters"`. + +### LBR path + +Start `xperf` with LBR collection: + +```cmd +xperf -on LOADER+PROC_THREAD+PMC_PROFILE -MinBuffers 4096 -MaxBuffers 4096 -BufferSize 4096 -pmcprofile BranchInstructionRetired -LastBranch PmcInterrupt -setProfInt BranchInstructionRetired 16384 +``` + +**Parameter explanation:** + +| Parameter | Purpose | +|-----------|---------| +| `LOADER+PROC_THREAD+PMC_PROFILE` | Kernel providers: loader events (module mapping), process/thread events (execution context), and PMC profiling events | +| `-MinBuffers 4096 -MaxBuffers 4096 -BufferSize 4096` | Large ring buffers to avoid dropped samples during a full War and Peace run | +| `-pmcprofile BranchInstructionRetired` | PMC event trigger: generate a sample on every Nth retired branch instruction | +| `-LastBranch PmcInterrupt` | Enables LBR hardware recording: on each PMC interrupt, capture the hardware last-branch record stack | +| `-setProfInt BranchInstructionRetired 16384` | Sample interval: fire an interrupt every 16,384 retired branch instructions | + +After starting xperf, continue to [Run the workload and stop xperf](#run-the-workload-and-stop-xperf-all-paths). + +### PMC path (no LBR) + +Start `xperf` with PMC / IP-mode collection: + +```cmd +xperf -on LOADER+PROC_THREAD+PMC_PROFILE+PROFILE -MinBuffers 4096 -BufferSize 4096 -pmcprofile InstructionRetired -setProfInt InstructionRetired 16384 -stackwalk profile +``` + +**Parameter explanation:** + +| Parameter | Purpose | +|-----------|---------| +| `LOADER+PROC_THREAD+PMC_PROFILE+PROFILE` | Adds `PROFILE` (CPU sampling) and `PMC_PROFILE` for PMC events; no `-LastBranch` | +| `-pmcprofile InstructionRetired` | PMC event trigger: sample on retired instructions (instruction pointer mode) | +| `-setProfInt InstructionRetired 16384` | Fire an interrupt every 16,384 retired instructions | +| `-stackwalk profile` | Capture a call stack on each profile interrupt, providing call-chain data instead of branch sequences | + +Compared to LBR: no `-LastBranch` flag; uses `InstructionRetired` instead of `BranchInstructionRetired`. The result is instruction-pointer samples with call stacks, not branch sequences. This path still provides effective data for the optimizer, but it's slightly less rich. + +After starting `xperf`, continue to [Run the workload and stop xperf](#run-the-workload-and-stop-xperf-all-paths). + +### OS timer path + +Start xperf with OS timer-based sampling: + +```cmd +xperf -on LOADER+PROC_THREAD+PROFILE -MinBuffers 4096 -BufferSize 4096 -setProfInt Timer 1221 -stackwalk profile +``` + +**Parameter explanation:** + +| Parameter | Purpose | +|-----------|---------| +| `LOADER+PROC_THREAD+PROFILE` | No PMC events; CPU sampling via OS timer interrupt only | +| `-setProfInt Timer 1221` | Fire on the OS timer interrupt every 1,221 timer ticks (approximately 1 kHz) | +| `-stackwalk profile` | Capture a call stack on each timer interrupt | + +Compared to LBR and PMC, this method doesn't use hardware performance counters. The OS timer fires at roughly fixed time intervals regardless of CPU activity. Samples are less densely correlated to hot code but still provide useful control-flow data for the optimizer. + +### Run the workload and stop xperf (all paths) + +With `xperf` running, run `textCount` against War and Peace: + +```cmd +textCount.exe < warAndPeace.txt +``` + +After `textCount` finishes, stop `xperf` and write the trace file. Letting other processes run during profiling dilutes sample quality. For best results, close unnecessary applications before running the workload. + +```cmd +xperf -stop -d textCount.etl +``` + +After stopping `xperf` (it can take a while to write out the etl file), confirm that `textCount.etl` was created in the current directory. + +## Convert the ETL file to SPT + +This step is the same for all three profiling paths. + +Run `SPTAggregate.exe` to process the raw ETL trace and create an SPT profile file: + +```cmd +SPTAggregate.exe /binary textCount.exe /etl textCount.etl textCount.spt +``` + +**Parameter explanation:** + +| Parameter | Purpose | +|-----------|---------| +| `/binary textCount.exe` | The binary to extract samples from. The ETL might contain samples from all processes that ran during profiling | +| `/etl textCount.etl` | Input ETL trace file | +| `textCount.spt` | Output SPT profile file | + +`SPTAggregate` outputs a summary that shows how many samples it collected. This summary is your first confirmation that profiling worked. + +Check the output from `SPTAggregate` against the path you took: + +- **LBR path:** Look for a nonzero Used LBR Samples count. +- **PMC path:** Look for a nonzero PMC or stack sample count. +- **OS timer path:** Look for a nonzero used stack samples count. + +If all counts are zero, see [Troubleshooting](#troubleshooting) before continuing. + +## Convert the SPT file to SPD + +> **Your path:** +> - **LBR users** (use `/mode:LBR`): [LBR mode](#lbr-mode) +> - **PMC users** (use `/mode:IP`): [IP mode (PMC and OS timer)](#ip-mode-pmc-and-os-timer) +> - **OS timer users** (use `/mode:IP`): [IP mode (PMC and OS timer)](#ip-mode-pmc-and-os-timer) +> +> Both PMC and OS timer paths use `/mode:IP` because both produce instruction-pointer samples. + +The next step branches by profiling path, specifically on the `/mode` flag passed to `SPDConvert.exe`. + +### LBR mode + +```cmd +SPDConvert.exe /mode:LBR textCount.spd textCount.spt +``` + +`/mode:LBR` tells `SPDConvert` to interpret the SPT as containing LBR branch sequence data. + +### IP mode (PMC and OS timer) + +Both PMC and OS timer produce instruction-pointer samples, so both use the same conversion command: + +```cmd +SPDConvert.exe /mode:IP textCount.spd textCount.spt +``` + +`/mode:IP` tells `SPDConvert` to interpret the SPT as containing instruction-pointer samples. + +> **Warning:** Using the wrong mode for your data type can produce an empty or malformed SPD. If you profiled with LBR, use `/mode:LBR`. If you profiled with PMC or OS timer, use `/mode:IP`. The `SPTAggregate` summary output from [Convert the ETL file to SPT](#convert-the-etl-file-to-spt) shows which sample types were collected and confirms the correct mode to use. + +After running `SPDConvert`, confirm that `textCount.spd` was created (or updated) in the current directory. + +### Interpreting SPDConvert output + +The command `SPDConvert textCount.spd textCount.spt` prints a before-and-after block coverage summary, for example: + +``` +Block coverage (before) : 33.90% ( 4507/ 13294) +Block coverage (after) : 45.64% ( 6067/ 13294) +``` + +This summary shows the percentage of the binary's code blocks that have associated profile data. A higher percentage is better. Coverage above 70% is excellent, while coverage below 40% might limit optimization effectiveness. If coverage is low, run the profiling workload longer or combine multiple SPT files from separate runs with different workloads. For example, you could run `textCount` against multiple text files to exercise different code paths. + +You might see a warning from `SPDConvert` like the following: + +``` +Compiler may be conservative on some hot functions due to sparse sample coverage. +SPGO is estimated to optimize better if sample density is increased to 5.4x of current level. +Sample density can be increased by sampling for longer period, or increasing sample rate. +``` + +This warning means your profiling run didn't collect enough samples for the optimizer to confidently optimize all hot functions. The SPD is still usable, but you can improve results by: + +- Running the workload longer (for example, 5 or more minutes instead of 1 minute) or using different workloads. +- Lowering the `-setProfInt` value in the `xperf` command to increase the sampling rate. The tradeoff is that this change produces a larger ETL file, which takes longer to process. +- Combining multiple SPT files from separate profiling runs by passing them all to `SPDConvert`. + +The SPT file is a binary format. To inspect its contents, you can run `SPTDump.exe textCount.spt`. Similarly, `PTDump.exe textCount.spt` shows the compiled profile data after running `SPDConvert`. Both tools are useful for verifying nonzero samples before proceeding. + +## Rebuild textCount with /spdin + +Rebuild `textCount` by using the populated SPD file. The linker reads the profile data and applies SPGO optimizations. + +This step is the same for all three profiling paths. + +```cmd +cl /EHsc /GL /O2 textCount.cpp /link /debug /spgo /spdin:textCount.spd +``` + +**New flag (compared to [Build textCount with /spgo](#build-textcount-with-spgo)):** + +| Flag | Purpose | +|------|---------| +| `/spdin:textCount.spd` | Provide the SPD profile data to the linker for optimization | + +The command still includes `/spgo`. It generates a new SPD file alongside the optimized binary, which you can use as the starting point for subsequent profiling iterations. + +> **Warning:** The SPD file is associated with the exact binary it profiles against. If you rebuild `textCount` without `/spdin`, or rebuild from changed source, you must generate a new SPD file. The existing one doesn't match the new binary's GUID, and the linker won't use it. + +After the rebuild with `/spdin`, the linker outputs statistics about how much of your code was optimized using profile data. For example: + +``` +221 of 221 (100.00%) profiled functions will be compiled for speed +201 of 1383 inline instances were from dead/cold paths +474 of 474 profiled functions (100.0%) were optimized using profile data +202738780 of 202738780 instructions (100.0%) were optimized using profile data +``` + +A high percentage means the SPD covers your binary well. If the percentage is low (for example, below 90%), either the profiling workload didn't exercise enough of the binary, or the binary has changed significantly since the profile was collected. In both cases, reprofile against the current binary. + +### What SPGO does with your profile data + +SPGO uses the collected sample data to populate counts on each block and edge in the program's control flow graph. These counts drive optimizations such as: +- **Profile-guided inlining**: Aggressively inline hot call sites while avoiding code bloat from inlining cold paths. +- **Hot/cold code separation**: Move rarely executed code to separate sections of the binary, improving instruction cache utilization and paging behavior. +- **Function layout**: Place functions that call each other frequently near each other in the binary, reducing page faults and improving locality. Optimized functions are organized into high affinity COFF groups in the binary. +- **Size/speed decisions**: Compile hot functions for speed and cold functions for size. Routines with no observed profile hits might be compiled for size rather than speed, limiting optimizations like inlining and loop unrolling in those cold paths. +- **Speculative devirtualization**: When sampling reveals that an indirect call consistently targets the same function, SPGO can speculate on that target and inline it, with a fallback for the uncommon case. + +## Measure the results + +Run `textCount` again and compare elapsed times. + +```cmd +textCount.exe < warAndPeace.txt +``` + +Collect multiple runs for each configuration and use the median. A single run isn't reliable because OS scheduling and system noise can skew individual measurements. + +| Build | Representative elapsed time | +|-------|-----------------------------| +| Baseline (`cl /EHsc /O2`) | *(your measurement)* | +| `/spgo` build (no profile data yet) | *(should be close to baseline)* | +| SPGO-optimized (`/spdin`) | *(should show improvement)* | + +In one test, SPGO using the LBR method delivered approximately 7% reduction in elapsed time. Your results might vary with your own projects because SPGO gains depend on how well the profiling workload represents typical execution. Larger, branch filled codebases tend to see more improvement within the 5–10% range. The profiling method affects optimization quality. LBR typically produces better results than PMC, which produces better results than OS timer. If you're on the OS timer path, expect smaller gains. + +The LBR path followed in this tutorial was applied to the [SQLite](https://github.com/sqlite/sqlite) project, which is a production database library. The SPGO-optimized SQLite binary showed approximately a 7% improvement. + +## Apply SPGO to your own project + +Use this checklist to apply SPGO to your own C or C++ application. + +1. **Add `/link /spgo` to your existing release build command.** Modify your build script or project file: + + ```cmd + cl /EHsc /GL /O2 myapp.cpp /link /spgo + ``` + +1. **Choose a representative workload.** Select a real usage scenario that exercises the hot paths of your application. Use production-like data. Avoid the following as your primary profiling workload: code coverage tests (they don't stress performance bottlenecks), uncommon error paths, startup and shutdown phases, and deprecated code paths. This workload drives the profile that feeds the optimizer. +1. **Run xperf using your detected path.** Use the path you identified in [Choose your profiling method](#choose-your-profiling-method) (LBR, PMC, or OS timer). Start `xperf`, run the workload once, stop `xperf`, and capture the ETL file. +1. For the PMC or OS timer path, **run SPTAggregate and SPDConvert with the correct `/mode` flag.** Convert ETL to SPT then to SPD. Use `/mode:LBR` for LBR data; use `/mode:IP` for PMC or OS timer data. +1. **Rebuild with `/spdin:`.** Compile your application with the populated SPD: + + ```cmd + cl /EHsc /GL /O2 yourApp.cpp /link /spgo /spdin:yourApp.spd + ``` + +1. **Measure before and after.** Run your workload with both the nonoptimized and SPGO-optimized binaries. Collect the **median of multiple runs** for each configuration. A single run isn't reliable for benchmarking. +1. **Store the `.spd` file in source control.** Check the `.spd` file into your source control system alongside your source code. +1. **Enable SPGO in developer Release builds.** Have your team's Release builds use the same SPGO-optimized binaries as production. This helps catch performance regressions early. +1. Disable SPGO in Debug builds. +1. **Watch the linker's profile completeness statistics.** After each build with `/spgo`, note the percentage of profiled functions optimized using profile data. If this drops significantly (below 90%), reprofile the current binary. Code changes accumulate and the SPD can become stale. + +### Alternative to using `xperf` + +Another way to gather profile data is to use a sampling profiler like Windows Performance Recorder (WPR). WPR is installed by default on Windows 10 and later. It collects similar data to `xperf`. You can configure WPR to collect CPU samples with call stacks, and then export the data to an ETL file that you can process with `SPTAggregate` and `SPDConvert` like the `xperf` ETL. Here's an example of using WPR to collect profile data: + +```cmd +wpr -start CPU.light -filemode +textCount.exe < warAndPeace.txt +wpr -stop spgo_data.etl +``` +For more information on using WPR, see [Using Windows Performance Recorder](/windows-hardware/test/wpt/recording-pmu-events) + +### SPD distribution + +You can: + +- Check the `.spd` file directly into source control alongside your source code. +- Share the `.spd` file with teammates so they can build with SPGO optimizations without reprofiling. +- Package the `.spd` file with your binaries as a versioned artifact (for example, a NuGet package) and record which version corresponds to which binary. +- Regenerate the `.spd` file at any time by repeating the profiling workflow. + +The SPD ties to the exact binary it was built from. After significant code changes, reprofile to generate a fresh SPD. During the `/spdin` build, the compiler also produces a new `.spd` file. Save this new SPD as a build artifact - it's the starting point for your next profiling iteration. + +## Reusing SPD information across builds + +The "carry forward" concept in SPGO allows you to add profiling data to an existing SPD file without profiling all your scenarios over again from scratch and without losing existing profile information. You can also adjust how much weight to give to older profile data. This flexibility is useful when there might be behavioral changes over time and you don't want to completely lose the profiling information from earlier scenario runs. For instance, a DLL might see different APIs called as the application that calls it evolves. You still want the optimizations from how it used to behave, but want to mix in optimization opportunities for how it sometimes behaves differently now. You can evolve the profile over time by mixing old and new data. + +When you run `SPDConvert` with a new SPT file, pass the name of the existing SPD file. Then use the `/retire:N` option to control how aggressively `SPDConvert` de-emphasizes older profile data when you add new SPT files: +- The default (`/retire:8`) weights newer data more heavily. +- Use `/retire:0` to give equal weight to all runs. +- Use `/retire:16` to let only the newest data count. + +## Troubleshooting + +> **Find your issue:** +> - **LBR path problems:** [LBR path problems](#lbr-path-problems) +> - **PMC path problems:** [PMC path problems](#pmc-path-problems) +> - **OS timer problems:** [OS timer path problems](#os-timer-path-problems) +> - **Issues affecting all paths:** [General issues](#general-issues-all-paths) + +### LBR path problems + +| Problem | Likely cause | Fix | +|---------|-------------|-----| +| Zero LBR samples in `SPTAggregate` output | CPU doesn't support LBR, or VM doesn't expose LBR | Run the detection command from [Detect your path](#detect-your-path). If in a Hyper-V VM, run `Set-VMProcessor MyVMName -Perfmon @("pmu", "lbr")` on the host. If LBR isn't available, switch to the PMC or OS timer path. | +| Processor supports LBR but `SPTAggregate` shows 0 LBR samples | `perfcore.ini` DLL registration incomplete | Complete the `perfcore.ini` setup in [Configure perfcore.ini](#configure-perfcoreini). Ensure `perf_lbr.dll` is registered. | +| `SPDConvert` fails or produces an empty SPD | Wrong `/mode` flag, or SPT contains only IP-mode samples | Confirm `SPTAggregate` output showed LBR samples. If the output shows only IP-mode samples, switch to `/mode:IP`. | + +### PMC path problems + +| Problem | Likely cause | Fix | +|---------|-------------|-----| +| Zero PMC samples in `SPTAggregate` output | `perfcore.ini` DLL registration incorrect | Complete the `perfcore.ini` setup in [Configure perfcore.ini](#configure-perfcoreini). Ensure `perf_spt.dll` is registered. Without this DLL, `xperf` produces zero PMC samples without an error message.
      Run `xperf.exe -pmcsources` to see the list of Performance Counters sources available on your CPU. If you don't see entries like `SPT_OP_RETIRE_INSTR` or `SPT_OP_RETIRE_BR_INSTR` or `SPT_OP_ETW_INSTR`, then the DLL registration in `perfcore.ini` might be incomplete or your CPU might not support PMC. If you can't resolve the DLL registration, try the OS timer path, instead. | +| `findstr InstructionRetired` returns output but `xperf` produces no samples | VM masking PMC counters | Check if running in a VM. Enable PMU in Hyper-V with `Set-VMProcessor`, or switch to the OS timer path. | +| `SPDConvert` fails on PMC path | Using `/mode:LBR` on an IP-only SPT | Switch to `/mode:IP`. | + +### OS timer path problems + +| Problem | Likely cause | Fix | +|---------|-------------|-----| +| Less improvement than expected | Expected - OS timer is lower fidelity | This is normal. The optimizer has less branch-flow information from timer samples than from LBR or PMC. Performance gains are smaller. Consider upgrading to PMC or LBR if hardware supports it. | +| Zero timer samples | `xperf` wasn't run in an elevated prompt, or `PROFILE` provider missing | Confirm running as Administrator. Confirm `-stackwalk profile` was provided to the `xperf` command. | + +### General issues (all paths) + +| Problem | Likely cause | Fix | +|---------|-------------|-----| +| `"failed to configure counters"` error | `xperf` not running as administrator | Restart the command prompt as **Administrator** (right-click > Run as administrator). xperf requires elevated privileges to configure hardware performance counters. | +| `xperf` not found | `xperf.exe` not on PATH | Confirm the Windows ADK is installed. Check `C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\`. Add that directory to your PATH, or run xperf from it directly. | +| `textCount.etl` not created | xperf failed silently | Confirm running as administrator. Rerun the xperf start command and check for error output. | +| `SPTAggregate` fails with "binary not found" | `textCount.exe` not in current directory or wrong path | Confirm you're in the same directory as `textCount.exe`, or provide the full path to the `/binary` parameter. | +| SPD file not created | `SPDConvert` failed | Check that `textCount.spt` size is nonzero. Run `SPTDump.exe textCount.spt` to inspect its contents. | +| `/spdin` build produces no improvement | GUID/age mismatch between SPD and binary | The SPD was built from a different `textCount.exe`. Profile the current build again to generate a fresh SPD. | +| MSVC version error on `/spgo` | MSVC toolset earlier than v14.51 | Open the Visual Studio Installer > **Individual Components** > install **MSVC v14.51** or later. Reopen the Developer Command Prompt. | + +## Next steps + +After completing this tutorial, explore these capabilities to get more from SPGO: + +- **Profile blending:** Run multiple workloads, accumulate SPT files from each run, and pass all of them to `SPDConvert`. A blended SPD reflects the full range of real usage patterns and produces better optimizations than a single-scenario profile. Use the `/retire:N` option to control how aggressively `SPDConvert` de-emphasizes older profile data when you add new SPT files. The default (`/retire:8`) weights newer data more heavily. Use `/retire:0` to give equal weight to all runs; use `/retire:16` to let only the newest data count. +- The best results come from blending profiles from multiple sources such as benchmarks that stress key scenarios plus real-world data (where available). Pass SPT files from all sources to `SPDConvert`. Repeat an SPT file in the argument list to give it more weight (for example, `SPDConvert myapp.spd critical.spt critical.spt common.spt` weights `critical.spt` twice as heavily as `common.spt`). +- **Iterative optimization:** Each rebuild with `/spdin` produces a new SPD. You can repeat the run, profile, rebuild cycle. Later iterations might show diminishing returns, but a second pass can sometimes capture patterns the first missed. +- **Code changes:** After significant source changes, recollect profile data. The existing SPD is tied to the binary it was profiled against. It won't match a substantially rebuilt binary. +- **Profile freshness:** The linker reports the percentage of profiled functions optimized using profile data after each `/spdin` build. If this percentage drops significantly, it's a signal that the code has diverged from the profile. Reprofile the current binary. \ No newline at end of file diff --git a/docs/build/spdconvert.md b/docs/build/spdconvert.md new file mode 100644 index 00000000000..e886c1e1846 --- /dev/null +++ b/docs/build/spdconvert.md @@ -0,0 +1,119 @@ +--- +description: "Learn more about: SPDConvert" +title: "SPDConvert" +ms.date: 05/08/2026 +ai-usage: ai-assisted +helpviewer_keywords: ["SPDConvert program", "sample profile-guided optimizations, SPDConvert", "SPGO"] +--- +# SPDConvert + +Use `SPDConvert` to prepare and manage sample profile data for Sample Profile-Guided Optimization (SPGO). + +This tool correlates the raw hardware samples in SPT files against the code structure in the SPD. This step performs sample correlation, flow smoothing, and size/speed decisions, and produces an enriched SPD file with execution counts annotated on the flow graph. + +You can combine data from multiple sources such as lab benchmarks, internal monitoring, and production telemetry, in a single conversion. To emphasize the importance of a particular scenario, you can specify its SPT file multiple times. Listing a critical benchmark SPT three times effectively triples its weight. + +This tool operates in three modes: + +- *import* .SPT data into an .SPD file for [/SPGO](sample-profile-guided-optimization.md) builds +- *extract* an embedded .SPD file from a .PDB +- *merge* multiple .SPD files from separate profiling runs + +`SPDConvert` works with three file types: +- **ETL** (Event Trace Log) Raw hardware performance events recorded by `xperf` +- **SPT** (Sample Profile Trace) Packaged sample events produced by [`SPTAggregate`](sptaggregate.md) from ETL files +- **SPD** (Sample Profile Database) Processed profile data used by the compiler during an optimized build. You can also embed SPD files in PDB symbol files during a `/spdembed` build + +## Syntax + +Import SPT data into an existing SPD file: + +> `SPDConvert` [*options*] *spdfile* *sptfile(s)* + +Extract an embedded SPD file from a PDB: + +> `SPDConvert` **/extract** *pdbfile* *spdfile* + +Merge multiple SPD files into one: + +> `SPDConvert` **/merge** *outputspdfile* *spdfile(s)* + +### Parameters + +**IMPORT MODE** + +*options*\ +Specify the following options in import mode: + +- **/mode:**\<**IP**\|**LBR**\> Select the profile mode. Use **IP** for instruction pointer profile data (default) or **LBR** for last branch record profile data. +- **/reset:** Reset the count to 0. This action ignores SPTs. Use this option to reset an SPD file before importing new data, or to create an empty SPD file if the specified file doesn't exist. +- **/sptlist:**\<*file*\> Specify SPT file names in a text file, with one file name per line. +- **/summary** Print a summary of the SPD file. +- **/help** Display help information. + +*spdfile*\ +The SPD file to import sample data into. + +*sptfiles*\ +One or more SPT files to import. SPT files are produced by [SPTAggregate](sptaggregate.md). + +**EXTRACT MODE (/extract)** + +*pdbfile*\ +The PDB file that contains an embedded SPD. + +*spdfile*\ +The output SPD file to create. + +**MERGE MODE (/merge)** + +*outputspdfile*\ +The output SPD file to create. + +**/retire:**\<*N*\> Set the profile data retire rate to *N*/16, where 0 ≤ *N* ≤ 16. The default is 8. This value controls how much of the existing data in an SPD to delete when adding new SPT data. For example, `/retire:8` deletes 8/16 (half) of the existing data before adding new SPT data. This setting weights newer profile data more heavily because it discards half of the older data. The two most common usages are `/retire:0` which gives equal weight to all profile runs, or `/retire:16` to make only the newest data count because it deletes all the old data. Use `/retire:N` to control how aggressively `SPDConvert` de-emphasizes older profile data. This "carry forward" concept allows you to refresh a profile using existing SPD data without starting over with new profiling data, which is time-consuming. This concept is discussed more in the [SPGO tutorial - Reusing SPD information across builds](sample-profile-guided-optimization.md#reusing-spd-information-across-builds). + +*spdfiles*\ +One or more SPD files to merge. + +## Remarks + +> [!NOTE] +> Run this tool from a Visual Studio developer command prompt. + +`SPDConvert` is the main conversion tool in the SPGO workflow. After collecting a trace by using `xperf` and converting it to an SPT file by using [`SPTAggregate`](sptaggregate.md), use `SPDConvert` to import the sample data into an SPD file. Pass the resulting SPD file to the compiler by using the [`/SPGO`](sample-profile-guided-optimization.md) flag to build an optimized binary. + +Use `/extract` to recover an SPD file that was embedded in a PDB during a `/SPGO` build. +Use `/merge` to combine SPD files from multiple profiling sessions before rebuilding. + +The GUID and age of a binary must match between the SPT and SPD files. If they don't match, `SPDConvert` reports an "SPD version incompatible" error. Use [`SPTDump /progid`](sptdump.md) to check the binary identifiers in the SPT file, and [`SPDDump /header`](spddump.md) to check the SPD file. + +The GUID and age of the binary recorded in the SPD file must match the SPT file. To diagnose this error, use [`SPTDump /progid`](sptdump.md) to inspect the binary identifiers in the SPT file, and [`SPDDump /header`](spddump.md) to inspect the SPD file. A valid SPD file is used to the extent possible. Minor updates to the code that don't alter the program's control flow are tolerated. Unchanged functions also use the data for optimization. If you provide a valid, but otherwise unrelated SPD, the process works, but likely no data is usable for optimization. + +## Example + +This example imports LBR profile data from an SPT file into an SPD file: + +`SPDConvert /mode:LBR sample.spd sample.spt` + +This example imports IP profile data by using a list of SPT files: + +`SPDConvert /mode:IP /sptlist:mysptfiles.txt sample.spd` + +This example prints a summary of the profile data in an SPD file: + +`SPDConvert /summary sample.spd` + +This example extracts the embedded SPD from a PDB file: + +`SPDConvert /extract sample.pdb sample_extracted.spd` + +This example merges two SPD files from different profiling runs: + +`SPDConvert /merge combined.spd run1.spd run2.spd` + +## See also + +[Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve performance](sample-profile-guided-optimization.md)\ +[`SPDDump`](spddump.md)\ +[`SPTAggregate`](sptaggregate.md)\ +[`SPTDump`](sptdump.md) diff --git a/docs/build/spddump.md b/docs/build/spddump.md new file mode 100644 index 00000000000..f3cfdade2b3 --- /dev/null +++ b/docs/build/spddump.md @@ -0,0 +1,68 @@ +--- +description: "Learn more about: SPDDump" +title: "SPDDump" +ms.date: 04/30/2026 +ai-usage: ai-assisted +helpviewer_keywords: ["SPDDump program", "sample profile-guided optimizations, SPDDump", "SPGO"] +--- +# SPDDump + +Use `SPDDump` to inspect Sample Profile Database (SPD) files and object files that contain sample profile data for Sample Profile-Guided Optimization (SPGO). Use this tool to verify SPD contents, troubleshoot SPD/PDB compatibility problems, and view profile details such as functions, flow graphs, coverage, and dynamic instruction estimates. Run `SPDDump` from a Visual Studio Developer Command Prompt. + +An SPD file contains processed profile data that the compiler uses to make optimization decisions during a build. + +## Syntax + +> `SPDDump` [*options*] *spdfile* + +### Parameters + +*options*\ +Specify the following options for `SPDDump`: + +- **/all** Output the entire SPD file. This option is the default. +- **/header** Output the SPD file header. +- **/module** Output the module header in the SPD file. Implies **/header**. +- **/symbol** Output the module symbol table. Implies **/module**. +- **/func** Output the function profile. Implies **/module**. +- **/funcid:**\<*fid*\> Output the function profile for the function with the given function ID. +- **/cg** Include callee information in function profile output. Implies **/func**. +- **/fg** Include the flow graph in function profile output. Implies **/func**. +- **/data** Output the data profile. Implies **/module**. +- **/minidump** Exclude sample correlation information such as RVA ranges from output. +- **/coverage** Output basic block coverage information. +- **/dyninst**[**:**\<*n*\>] Output a dynamic instruction estimate for the top 50 functions, or the top *n* functions if specified. +- **/help** Display help information. + +*spdfile*\ +The path to the SPD file or object file to inspect. + +## Remarks + +> [!NOTE] +> Run this tool from a Visual Studio developer command prompt. + +Use `SPDDump` to inspect the contents of a Sample Profile Database (SPD) file. [`SPDConvert`](spdconvert.md) produces SPD files. The build process that uses [`/SPGO`](sample-profile-guided-optimization.md) embeds these files in PDB files. + +To diagnose an "SPD version incompatible" error, use `/header` to examine the PDB GUID and age stored in the SPD file. Then, compare those values against the SPT file by using [`SPTDump /progid`](sptdump.md). + +## Example + +This example outputs estimated basic block coverage information for an SPD file: + +`SPDDump /coverage filename.spd` + +This example outputs the SPD header to check the PDB GUID and age: + +`SPDDump /header filename.spd` + +This example outputs a dynamic instruction estimate for the top 10 functions: + +`SPDDump /dyninst:10 filename.spd` + +## See also + +[Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve performance](sample-profile-guided-optimization.md)\ +[SPDConvert](spdconvert.md)\ +[SPTDump](sptdump.md)\ +[SPTAggregate](sptaggregate.md) diff --git a/docs/build/sptaggregate.md b/docs/build/sptaggregate.md new file mode 100644 index 00000000000..1d5a67e8a6b --- /dev/null +++ b/docs/build/sptaggregate.md @@ -0,0 +1,69 @@ +--- +description: "Learn more about: SPTAggregate" +title: "SPTAggregate" +ms.date: 05/01/2026 +ai-usage: ai-assisted +helpviewer_keywords: ["SPTAggregate program", "sample profile-guided optimizations, SPTAggregate", "SPGO"] +--- +# SPTAggregate + +`SPTAggregate` is a command-line tool for Sample Profile-Guided Optimization (SPGO). Use it to combine one or more ETL (Event Trace Log) files that `xperf` collects into a single SPT (Sample Profile Trace) file. You can optionally filter data by process or binary name and exclude kernel events. After you create the SPT file, use [SPDConvert](spdconvert.md) to import it into an SPD (Sample Profile Database) file for optimization workflows. + +ETL (Event Trace Log) files contain raw hardware performance events that `xperf` records. `SPTAggregate` converts those ETL files into SPT format, which packages the sample events for import into an SPD (Sample Profile Database) file by [SPDConvert](spdconvert.md). + +## Syntax + +> `SPTAggregate` [*options*] **/etl** *etlfiles* *sptfile* + +### Parameters + +*options*\ +Specify the following options to `SPTAggregate`: + +- **/process:**\<*processes*\> Filter events by process name. Specify one or more process names as a comma-separated list.\ + Example: `/process:myapp.exe` +- **/binary:**\<*binaries*\> Filter events by binary name. Specify one or more binary names as a comma-separated list.\ + Example: `/binary:mylib.dll,myapp.exe` +- **/nokernel** Exclude OS kernel events. +- **/help** Display help information. + +*etlfiles*\ +A comma-separated list of ETL (Event Trace Log) files to process. Collect ETL files by using `xperf`. + +*sptfile*\ +The output SPT file to create. + +## Remarks + +> [!NOTE] +> Run this tool from a Visual Studio developer command prompt. + +Use `SPTAggregate` to convert one or more ETL files collected by `xperf` into an SPT file. The `/etl` flag is required and must precede the list of ETL files. You can import the resulting SPT file into an SPD file by using [`SPDConvert`](spdconvert.md). + +`SPTAggregate` uses `xperf`, which must be in your path and set up with the `perfcore.ini` changes as described in [Configure perfcore.ini](sample-profile-guided-optimization.md#configure-perfcoreini). + +When `SPTAggregate` runs `xperf`, it uses parameters like: `xperf -a spt -genSPT outputfile.spt -binary application.exe,support.dll,companion.dll` where `-a spt` specifies generate a sample profile trace analysis report, `-genSPT` specifies the output SPT file, and `-binary` focuses analysis on the specified binaries. + +For more information about `xperf` flags, see the [Xperf Command-Line Reference](/windows-hardware/test/wpt/xperf-command-line-reference) documentation. + +## Example + +This example converts a single ETL file into an SPT file: + +`SPTAggregate /etl filename.etl filename.spt` + +This example filters events to a specific process: + +`SPTAggregate /process:filename.exe /etl filename.etl filename.spt` + +This example aggregates two ETL files and excludes kernel events: + +`SPTAggregate /nokernel /etl run1.etl,run2.etl filename.spt` + +## See also + +[Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve performance](sample-profile-guided-optimization.md)\ +[Profile-Guided Optimizations](profile-guided-optimizations.md)\ +[`SPDConvert`](spdconvert.md)\ +[`SPDDump`](spddump.md)\ +[`SPTDump`](sptdump.md) diff --git a/docs/build/sptdump.md b/docs/build/sptdump.md new file mode 100644 index 00000000000..ac885470d62 --- /dev/null +++ b/docs/build/sptdump.md @@ -0,0 +1,108 @@ +--- +description: "Learn more about: SPTDump" +title: "SPTDump" +ms.date: 05/05/2026 +ai-usage: ai-assisted +helpviewer_keywords: ["SPTDump program", "sample profile-guided optimizations, SPTDump", "SPGO"] +--- +# SPTDump + +`SPTDump` is a command-line tool for inspecting Sample Profile Trace (SPT) files used in Sample Profile-Guided Optimization (SPGO) workflows. Use it to view SPT metadata and sample data. Validate trace contents before conversion to SPD, and troubleshoot issues such as SPD version mismatches. + +An SPT file contains raw hardware performance sample events collected from an application workload. + +## Syntax + +> `SPTDump` [*options*] *sptfile* + +### Parameters + +*options*\ +Specify the following options to `SPTDump`: + +- **/all** Output the entire SPT file. This option is the default. +- **/header** Output the SPT file header. +- **/progid** Output program IDs (GUID and age for each binary). +- **/strtab** Output the string table. +- **/event** Output sample events. +- **/help** Display help information. + +*sptfile*\ +The path to the SPT file to inspect. + +## Remarks + +> [!NOTE] +> Start this tool from a Visual Studio developer command prompt. + +Use `SPTDump` to inspect the contents of a Sample Profile Trace (SPT) file. [SPTAggregate](sptaggregate.md) produces SPT files from ETL event trace logs collected by `xperf`. Import SPT files into an SPD file (Sample Profile Database) by using [SPDConvert](spdconvert.md). + +To diagnose an "SPD version incompatible" error, use `/progid` to display the GUID and age for each binary in the SPT file, and then compare those values against the SPD file by using [`SPDDump /header`](spddump.md). + +## Example + +This example outputs the full contents of an SPT file: + +`SPTDump sample.spt` + +This example outputs only the program IDs (GUID and age) for binaries in an SPT file: + +`SPTDump /progid sample.spt` + +## SPT header format + +SPT file is a binary format with a 32-byte header, string table, program ID table, and sample event data stream. This document describes version 1 of the format. The version field updates if the layout changes in the future. + +The SPT header is 32 bytes: + +- `[0x00-0x03]` Signature (uint32 LE) = 0x5350543A ("SPT:") +- `[0x04-0x07]` Version (uint32 LE) = 1 +- `[0x08-0x0B]` RawDataId (uint32 LE) = 0 (unused/reserved) +- `[0x0C-0x0F]` TargetArch (uint32 LE) = 0 (unused/reserved) +- `[0x10-0x13]` StringTableOffset (uint32 LE) = offset to binary name string table (typically 0x20) +- `[0x14-0x17]` ProgramIdTableOffset (uint32 LE) = offset to RSDSKEY table (typically StringTableOffset+StringTableCapacity) +- `[0x18-0x19]` StringTableUsed (uint16 LE) = bytes used in string table +- `[0x1A-0x1B]` StringTableCapacity (uint16 LE) = bytes allocated in string table (typically 0x4000) +- `[0x1C-0x1D]` ProgramIdsUsed (uint16 LE) = number of program IDs (often just 1) +- `[0x1E-0x1F]` ProgramIdCapacity (uint16 LE) = capacity in count (not bytes) for program IDs (typically 0x100) + +The StringTable immediately follows the header at the specified offset. It contains a null-terminated UTF-8 binary filename. +The ProgramIdTable follows the StringTable at the specified offset. Each entry is 24 bytes: 16-byte Rich Signature Data Stream (RSDS) GUID + 4-byte age + 4-byte string index into StringTable. +The data stream starts at `ProgramIdTableOffset + (ProgramIdCapacity * 24)`, and starts with a `SPT_OP_BINARY_ID` opcode. + +**SPT Opcodes** + +In the following descriptions: +- RVA means the 32-bit relative virtual address of an instruction in the binary, that is, it's offset in the module. +- LE means little-endian byte order. + +`SPT_OP_REPEAT` (0x82)\ +Repeat the next record for the specified number of times. A repeat count of 2 means that there are 3 identical records in total. The repeat count resets after processing it.\ +Layout: 1 byte: opcode 0x82. 1 byte: padding. 8 bytes: repeat count (uint64 LE) + +`SPT_OP_UNHALT_CYCLE`, `SPT_OP_RETIRE_INSTR`, `SPT_OP_RETIRE_BR_INSTR`, `SPT_OP_L1_ICACHE_MISS`, `SPT_OP_L1_DCACHE_MISS`, `SPT_OP_ETW_INSTR` (0x01, 0x02, 0x03, 0x04, 0x05, 0x41)\ +Layout: 1 byte: opcode. 1 byte: RVA count (N). 4N bytes: N RVAs (uint32 LE each)\ +Each RVA represents an IP sample hit count = 1 + repeat count. + +`SPT_OP_LBR` (0x10)\ +Layout: 1 byte: opcode 0x10. 1 byte: event count (N). 8N bytes: N LBR pairs, each pair is: 4 bytes: To RVA (uint32 LE), 4 bytes: From RVA (uint32 LE)\ +Each pair represents a branch arc with hit count = 1 + repeat count. + +`SPT_OP_ETW_CALLSTACK` (0x42)\ +Layout: 1 byte: opcode 0x42. 1 byte: RVA count (N). 4N bytes: N RVAs (uint32 LE each, representing stack frames).\ +When: +- N = 2: Two RVAs form a single stack arc (RVA[0], RVA[1]) +- N > 2: Creates N-1 arcs from consecutive pairs: (RVA[0]->RVA[1]), (RVA[1]->RVA[2]), ..., (RVA[N-2]->RVA[N-1]) +Each series, whether it's a single arc or consecutive pairs, has hit count = 1 + repeat count. + +`SPT_OP_BINARY_ID` (0x81)\ +Layout: 1 byte: opcode 0x81. 1 byte: padding. 2 bytes: program ID (uint16 LE). 4 bytes: total data length in this segment (uint32 LE).\ +Marks the start of data records for a specific binary specified by an index ID. The index ID refers back to the RSDSKey and binary name string table in the SPT header.\ +The data length includes the 4-byte length field itself. This opcode can occur multiple times in a data stream. + +## See also + +[Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve performance](sample-profile-guided-optimization.md)\ +[`SPDConvert`](spdconvert.md)\ +[`SPDDump`](spddump.md)\ +[`SPTAggregate`](sptaggregate.md) \ No newline at end of file diff --git a/docs/build/toc.yml b/docs/build/toc.yml index 57a47a03ffb..87586735a6d 100644 --- a/docs/build/toc.yml +++ b/docs/build/toc.yml @@ -137,6 +137,8 @@ items: items: - name: Profile-guided optimizations href: ../build/profile-guided-optimizations.md + - name: Sample profile-guided optimization tutorial + href: ../build/sample-profile-guided-optimization.md - name: Environment variables for profile-guided optimizations href: ../build/environment-variables-for-profile-guided-optimizations.md - name: PgoAutoSweep @@ -145,6 +147,14 @@ items: href: ../build/pgomgr.md - name: pgosweep href: ../build/pgosweep.md + - name: SPDConvert + href: ../build/spdconvert.md + - name: SPDDump + href: ../build/spddump.md + - name: SPTAggregate + href: ../build/sptaggregate.md + - name: SPTDump + href: ../build/sptdump.md - name: "How to: Merge multiple PGO profiles into a single profile" href: ../build/how-to-merge-multiple-pgo-profiles-into-a-single-profile.md - name: Use the MSVC toolset from the command line From 6e36160bae7f91379985d39b29ec8ee58385deb1 Mon Sep 17 00:00:00 2001 From: AndrewDeanMS <45858683+AndrewDeanMS@users.noreply.github.com> Date: Mon, 11 May 2026 19:07:28 -0700 Subject: [PATCH 454/619] Document /feature:APX (#6709) * Document /feature:APX --------- Co-authored-by: Andrew Dean --- docs/build/reference/arch-x64.md | 1 + .../compiler-options-listed-alphabetically.md | 3 +- .../compiler-options-listed-by-category.md | 3 +- .../feature-enable-architecture-features.md | 23 +++++++++ docs/build/reference/feature-x64.md | 48 +++++++++++++++++++ docs/build/toc.yml | 7 ++- docs/preprocessor/predefined-macros.md | 18 +++++++ 7 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 docs/build/reference/feature-enable-architecture-features.md create mode 100644 docs/build/reference/feature-x64.md diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index 696f055f190..da9e57733f8 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -84,5 +84,6 @@ Support for **`/arch:AVX10.1`** was added in Visual Studio 2022. Support for **` ## See also [`/arch` (Minimum CPU Architecture)](arch-minimum-cpu-architecture.md)\ +[`/feature` (x64)](feature-x64.md)\ [MSVC compiler options](compiler-options.md)\ [MSVC compiler command-line syntax](compiler-command-line-syntax.md) diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md index 193a21544b1..bc25a3051cb 100644 --- a/docs/build/reference/compiler-options-listed-alphabetically.md +++ b/docs/build/reference/compiler-options-listed-alphabetically.md @@ -66,7 +66,7 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/FC`](fc-full-path-of-source-code-file-in-diagnostics.md) | Displays the full path of source code files passed to *cl.exe* in diagnostic text. | | [`/Fd`](fd-program-database-file-name.md) | Renames program database file. | | [`/Fe`](fe-name-exe-file.md) | Renames the executable file. | -| [`/feature`](feature-arm64.md) | Enable architecture features.17.10 | +| [`/feature`](feature-enable-architecture-features.md) | Enable architecture features. | | [`/forceInterlockedFunctions`](force-interlocked-functions.md) | Dynamically selects between Armv8.0 load, store exclusive instructions or Armv8.1 LSE atomic instructions based on target CPU.17.14 | | [`/FI`](fi-name-forced-include-file.md) | Preprocesses the specified include file. | | [`/Fi`](fi-preprocess-output-file-name.md) | Specifies the preprocessed output file name. | @@ -261,7 +261,6 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/Zs`](zs-syntax-check-only.md) | Checks syntax only. | | [`/ZW`](zw-windows-runtime-compilation.md) | Produces an output file to run on the Windows Runtime. | -17.10 This option is available starting in Visual Studio 2022 version 17.10.\ 17.14 This option is available starting in Visual Studio 2022 version 17.14. ## See also diff --git a/docs/build/reference/compiler-options-listed-by-category.md b/docs/build/reference/compiler-options-listed-by-category.md index 5b2a78c030d..b5498287621 100644 --- a/docs/build/reference/compiler-options-listed-by-category.md +++ b/docs/build/reference/compiler-options-listed-by-category.md @@ -43,7 +43,7 @@ This article contains a categorical list of compiler options. For an alphabetica | [`/EHc`](eh-exception-handling-model.md) | `extern "C"` defaults to `nothrow`. | | [`/EHr`](eh-exception-handling-model.md) | Always generate `noexcept` runtime termination checks. | | [`/EHs`](eh-exception-handling-model.md) | Enable C++ exception handling (no SEH exceptions). | -| [`/feature`](feature-arm64.md) | Enable architecture features.17.10 | +| [`/feature`](feature-enable-architecture-features.md) | Enable architecture features. | | [`/forceInterlockedFunctions`](force-interlocked-functions.md) | Dynamically selects between Armv8.0 load, store exclusive instructions or Armv8.1 LSE atomic instructions based on target CPU.17.14 | | [`/fp:contract`](fp-specify-floating-point-behavior.md) | Consider floating-point contractions when generating code. | | [`/fp:except[-]`](fp-specify-floating-point-behavior.md) | Consider floating-point exceptions when generating code. | @@ -329,7 +329,6 @@ Experimental options may only be supported by certain versions of the compiler. | [`/Ze`](za-ze-disable-language-extensions.md) | Deprecated. Enables language extensions. | | [`/Zg`](zg-generate-function-prototypes.md) | Removed in Visual Studio 2015. Generates function prototypes. | -17.10 This option is available starting in Visual Studio 2022 version 17.10.\ 17.14 This option is available starting in Visual Studio 2022 version 17.14. ## See also diff --git a/docs/build/reference/feature-enable-architecture-features.md b/docs/build/reference/feature-enable-architecture-features.md new file mode 100644 index 00000000000..b9ca7324c68 --- /dev/null +++ b/docs/build/reference/feature-enable-architecture-features.md @@ -0,0 +1,23 @@ +--- +description: "Learn more about: /feature (Enable architecture features)" +title: "/feature (Enable architecture features)" +ms.date: 05/11/2026 +f1_keywords: ["/feature"] +helpviewer_keywords: ["-feature compiler option [C++]", "/feature compiler option [C++]", "feature compiler option [C++]"] +--- +# `/feature` (Enable architecture features) + +The **`/feature`** option enables specific architecture features for code generation. Select the target platform you're working with to see **`/feature`** options for that platform. + +- [`/feature` (ARM64)](feature-arm64.md)17.10 + +- [`/feature` (x64)](feature-x64.md)14.51 + +17.10 This option is available starting in Visual Studio 2022 version 17.10.\ +14.51 This option ships with MSVC Build Tools version 14.51. Available as part of Visual Studio starting with version 18.6. + +## See also + +[`/arch` (Minimum CPU architecture)](arch-minimum-cpu-architecture.md)\ +[MSVC compiler options](compiler-options.md)\ +[MSVC compiler command-line syntax](compiler-command-line-syntax.md) diff --git a/docs/build/reference/feature-x64.md b/docs/build/reference/feature-x64.md new file mode 100644 index 00000000000..4e36fb8a8d5 --- /dev/null +++ b/docs/build/reference/feature-x64.md @@ -0,0 +1,48 @@ +--- +description: "Learn more about: /feature (x64)" +title: "/feature (x64)" +ms.date: 05/11/2026 +--- +# `/feature` (x64) + +Enable one or more architecture features for x64 code generation. + +> [!NOTE] +> **`/feature:APX`** support is experimental and subject to change. + +## Syntax + +> **`/feature:`** + +## Arguments + +To enable one or more features the x64 target supports, specify one or more of the following feature arguments: + +| Feature argument | Description | Supported in version | +|--|--|--| +| **`APX`** | Enables preview support for Intel APX (Advanced Performance Extensions). Enables the compiler to target various APX features like Extended General-Purpose Registers (EGPRs), New Data Destination (NDD), No-Flags Update (NF), new conditional ISA and optimized registers save/restore operations. For more information, see [Intel Advanced Performance Extensions (APX)](https://www.intel.com/content/www/us/en/developer/articles/technical/advanced-performance-extensions-apx.html). | MSVC Build Tools 14.51 (Preview Support) | + +## Remarks + +Example usage: to enable APX, specify **`/feature:APX`**. + +When **`/feature:APX`** is specified, the following preprocessor macros are defined: `__APX_F__`, `__CCMP__`, `__CF__`, `__EGPR__`, `__NDD__`, `__NF__`, `__PPX__`, `__PUSH2POP2__`, and `__ZU__`. For more information, see [Microsoft-specific predefined macros](../../preprocessor/predefined-macros.md). + +### To set the `/feature` compiler option in Visual Studio + +1. Open the **Property Pages** dialog box for the project. For more information, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). + +1. Select the **Configuration Properties** > **C/C++** > **Command Line** property page. + +1. In the **Additional options** box, add *`/feature:APX`*. Choose **OK** to save your changes. + +### To set this compiler option programmatically + +- See . + +## See also + +[`/arch` (x64)](arch-x64.md)\ +[`/arch` (Minimum CPU architecture)](arch-minimum-cpu-architecture.md)\ +[MSVC compiler options](compiler-options.md)\ +[MSVC compiler command-line syntax](compiler-command-line-syntax.md) diff --git a/docs/build/toc.yml b/docs/build/toc.yml index 87586735a6d..345c6fa37fe 100644 --- a/docs/build/toc.yml +++ b/docs/build/toc.yml @@ -571,7 +571,12 @@ items: - name: /FC (Full path of source code file in diagnostics) href: ../build/reference/fc-full-path-of-source-code-file-in-diagnostics.md - name: /feature (Enable architecture features) - href: ../build/reference/feature-arm64.md + href: ../build/reference/feature-enable-architecture-features.md + items: + - name: /feature (ARM64) + href: ../build/reference/feature-arm64.md + - name: /feature (x64) + href: ../build/reference/feature-x64.md - name: /forceInterlockedFunctions (Generate and link with out-of-line atomic functions) href: ./reference/force-interlocked-functions.md diff --git a/docs/preprocessor/predefined-macros.md b/docs/preprocessor/predefined-macros.md index f76713d42fa..40a086752f7 100644 --- a/docs/preprocessor/predefined-macros.md +++ b/docs/preprocessor/predefined-macros.md @@ -65,6 +65,8 @@ The compiler supports these predefined macros specified by the ISO C99, C11, C17 MSVC supports other predefined macros: +- `__APX_F__` Defined as 1 when the [`/feature:APX`](../build/reference/feature-x64.md) compiler option is set and the compiler target is x64. Otherwise, undefined. + - `__ARM_ARCH` Defined as an integer literal that represents the ARM architecture version. The value is defined as 8 for the Armv8-A architecture. For 8.1 and onwards, the value is scaled for minor versions, such as X.Y, by using the formula X * 100 + Y as defined by the ARM C language extension. For example, for Armv8.1, `__ARM_ARCH` is 8 * 100 + 1 or 801. To set the ARM architecture version, see [`/arch (ARM64)`](../build/reference/arch-arm64.md). This macro was introduced in Visual Studio 2022 version 17.10. - `__ATOM__` Defined as 1 when the [`/favor:ATOM`](../build/reference/favor-optimize-for-architecture-specifics.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. @@ -85,6 +87,10 @@ MSVC supports other predefined macros: - `__AVX10_VER__` Defined as an integer that represents version of AVX10 when the [`/arch:AVX10.1`](../build/reference/arch-x86.md) or [`/arch:AVX10.2`](../build/reference/arch-x86.md) compiler option is set and the compiler target is x86 or x64. Otherwise, undefined. +- `__CCMP__` Defined as 1 when the [`/feature:APX`](../build/reference/feature-x64.md) compiler option is set and the compiler target is x64. Otherwise, undefined. + +- `__CF__` Defined as 1 when the [`/feature:APX`](../build/reference/feature-x64.md) compiler option is set and the compiler target is x64. Otherwise, undefined. + - `_CHAR_UNSIGNED` Defined as 1 if the default **`char`** type is unsigned. This value is defined when the [**`/J`** (Default char type is unsigned)](../build/reference/j-default-char-type-is-unsigned.md) compiler option is set. Otherwise, undefined. - `__CLR_VER` Defined as an integer literal that represents the version of the Common Language Runtime (CLR) used to compile the app. The value is encoded in the form `Mmmbbbbb`, where `M` is the major version of the runtime, `mm` is the minor version of the runtime, and `bbbbb` is the build number. `__CLR_VER` is defined if the [`/clr`](../build/reference/clr-common-language-runtime-compilation.md) compiler option is set. Otherwise, undefined. @@ -169,6 +175,8 @@ MSVC supports other predefined macros: - `_DLL` Defined as 1 when the [`/MD`](../build/reference/md-mt-ld-use-run-time-library.md) or [`/MDd`](../build/reference/md-mt-ld-use-run-time-library.md) (Multithreaded DLL) compiler option is set. Otherwise, undefined. +- `__EGPR__` Defined as 1 when the [`/feature:APX`](../build/reference/feature-x64.md) compiler option is set and the compiler target is x64. Otherwise, undefined. + - `__FUNCDNAME__` Defined as a string literal that contains the [decorated name](../build/reference/decorated-names.md) of the enclosing function. The macro is defined only within a function. The `__FUNCDNAME__` macro isn't expanded if you use the [`/EP`](../build/reference/ep-preprocess-to-stdout-without-hash-line-directives.md) or [`/P`](../build/reference/p-preprocess-to-a-file.md) compiler option. This example uses the `__FUNCDNAME__`, `__FUNCSIG__`, and `__FUNCTION__` macros to display function information. @@ -287,6 +295,10 @@ MSVC supports other predefined macros: - `_MT` Defined as 1 when [**`/MD`** or **`/MDd`** (Multithreaded DLL)](../build/reference/md-mt-ld-use-run-time-library.md) or [**`/MT`** or **`/MTd`** (Multithreaded)](../build/reference/md-mt-ld-use-run-time-library.md) is specified. Otherwise, undefined. +- `__NDD__` Defined as 1 when the [`/feature:APX`](../build/reference/feature-x64.md) compiler option is set and the compiler target is x64. Otherwise, undefined. + +- `__NF__` Defined as 1 when the [`/feature:APX`](../build/reference/feature-x64.md) compiler option is set and the compiler target is x64. Otherwise, undefined. + - `_NATIVE_WCHAR_T_DEFINED` Defined as 1 when the [`/Zc:wchar_t`](../build/reference/zc-wchar-t-wchar-t-is-native-type.md) compiler option is set. Otherwise, undefined. - `_OPENMP` Defined as integer literal 200203, if the [**`/openmp`** (Enable OpenMP 2.0 Support)](../build/reference/openmp-enable-openmp-2-0-support.md) compiler option is set. This value represents the date of the OpenMP specification implemented by MSVC. Otherwise, undefined. @@ -300,8 +312,12 @@ MSVC supports other predefined macros: } ``` +- `__PPX__` Defined as 1 when the [`/feature:APX`](../build/reference/feature-x64.md) compiler option is set and the compiler target is x64. Otherwise, undefined. + - `_PREFAST_` Defined as 1 when the [`/analyze`](../build/reference/analyze-code-analysis.md) compiler option is set. Otherwise, undefined. +- `__PUSH2POP2__` Defined as 1 when the [`/feature:APX`](../build/reference/feature-x64.md) compiler option is set and the compiler target is x64. Otherwise, undefined. + - `__SANITIZE_ADDRESS__` Available beginning with Visual Studio 2019 version 16.9. Defined as 1 when the [`/fsanitize=address`](../build/reference/fsanitize.md) compiler option is set. Otherwise, undefined. - `__TIMESTAMP__` Defined as a string literal that contains the date and time of the last modification of the current source file, in the abbreviated, constant length form returned by the CRT [`asctime`](../c-runtime-library/reference/asctime-wasctime.md) function, for example, `Fri 19 Aug 13:32:58 2016`. This macro is always defined. @@ -316,6 +332,8 @@ MSVC supports other predefined macros: - `_WINRT_DLL` Defined as 1 when compiled as C++ and both [**`/ZW`** (Windows Runtime Compilation)](../build/reference/zw-windows-runtime-compilation.md) and [**`/LD`** or **`/LDd`**](../build/reference/md-mt-ld-use-run-time-library.md) compiler options are set. Otherwise, undefined. +- `__ZU__` Defined as 1 when the [`/feature:APX`](../build/reference/feature-x64.md) compiler option is set and the compiler target is x64. Otherwise, undefined. + No preprocessor macros that identify the ATL or MFC library version are predefined by the compiler. ATL and MFC library headers define these version macros internally. They're undefined in preprocessor directives made before the required header is included. - `_ATL_VER` Defined in `` as an integer literal that encodes the ATL version number. From 16be863b73532098bb25d96eefbdf19668cc645b Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 11 May 2026 19:08:17 -0700 Subject: [PATCH 455/619] New assembler directives for unwind version 3 (#6701) * Add MASM Unwind Version 3 (experimental) documentation --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: AgostonSzepessy --- docs/assembler/masm/at-unwindversion.md | 60 ++++++++++++++ docs/assembler/masm/directives-reference.md | 45 +++++++++- docs/assembler/masm/dot-allocstack.md | 78 +++++++++++++++--- docs/assembler/masm/dot-beginepilog.md | 59 +++++++++++++ docs/assembler/masm/dot-endepilog.md | 60 ++++++++++++++ docs/assembler/masm/dot-endprolog.md | 19 ++++- docs/assembler/masm/dot-freestack.md | 74 +++++++++++++++++ docs/assembler/masm/dot-pop2reg.md | 76 +++++++++++++++++ docs/assembler/masm/dot-popframe.md | 74 +++++++++++++++++ docs/assembler/masm/dot-popreg.md | 70 ++++++++++++++++ docs/assembler/masm/dot-push2reg.md | 65 +++++++++++++++ docs/assembler/masm/dot-pushframe.md | 47 +++++++++-- docs/assembler/masm/dot-pushreg.md | 58 ++++++++++--- docs/assembler/masm/dot-restorereg.md | 77 +++++++++++++++++ docs/assembler/masm/dot-restorexmm128.md | 77 +++++++++++++++++ docs/assembler/masm/dot-savereg.md | 56 +++++++++++-- docs/assembler/masm/dot-savexmm128.md | 55 +++++++++++-- docs/assembler/masm/dot-setframe.md | 54 ++++++++++-- docs/assembler/masm/dot-unsetframe.md | 82 +++++++++++++++++++ docs/assembler/masm/masm-for-x64-ml64-exe.md | 45 +++++++--- .../ml-and-ml64-command-line-reference.md | 8 +- docs/assembler/masm/proc.md | 10 +-- docs/assembler/masm/symbols-reference.md | 7 +- docs/assembler/toc.yml | 22 +++++ 24 files changed, 1202 insertions(+), 76 deletions(-) create mode 100644 docs/assembler/masm/at-unwindversion.md create mode 100644 docs/assembler/masm/dot-beginepilog.md create mode 100644 docs/assembler/masm/dot-endepilog.md create mode 100644 docs/assembler/masm/dot-freestack.md create mode 100644 docs/assembler/masm/dot-pop2reg.md create mode 100644 docs/assembler/masm/dot-popframe.md create mode 100644 docs/assembler/masm/dot-popreg.md create mode 100644 docs/assembler/masm/dot-push2reg.md create mode 100644 docs/assembler/masm/dot-restorereg.md create mode 100644 docs/assembler/masm/dot-restorexmm128.md create mode 100644 docs/assembler/masm/dot-unsetframe.md diff --git a/docs/assembler/masm/at-unwindversion.md b/docs/assembler/masm/at-unwindversion.md new file mode 100644 index 00000000000..388cfd802e7 --- /dev/null +++ b/docs/assembler/masm/at-unwindversion.md @@ -0,0 +1,60 @@ +--- +description: "Learn more about: @UnwindVersion" +title: "@UnwindVersion" +ms.date: 05/07/2026 +f1_keywords: ["@UnwindVersion"] +helpviewer_keywords: ["@UnwindVersion symbol"] +ai-usage: ai-assisted +--- +# \@UnwindVersion + +A predefined macro that returns the unwind version the `.asm` file is being assembled with. + +## Syntax + +> **\@UnwindVersion** + +## Remarks + +> [!IMPORTANT] +> This symbol is experimental and is subject to change. Enable Unwind Version 3 with `ml64.exe /unwindv3`. + +**\@UnwindVersion** is set to the unwind version used by the assembler. When `/unwindv3` is passed to `ml64.exe`, **\@UnwindVersion** is set to `3`; otherwise it's set to `1`. + +Use this macro with conditional assembly directives such as `IF` to assemble different code paths depending on the unwind version. + +This example is intended to be assembled only as it doesn't define an application entry point: + +## Example for unwindv3 + +```asm +; ml64 /c /unwindv3 ex1.asm +.code + +IF @UnwindVersion EQ 3 + +foo PROC FRAME + .pushreg r12 + push r12 + + .endprolog + + mov rax, 0 + + .beginepilog + .popreg r12 + pop r12 + .endepilog + ret +foo ENDP +ELSE + .ERR <@UnwindVersion should be 3> +ENDIF + +END +``` + +## See also + +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ +[MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/directives-reference.md b/docs/assembler/masm/directives-reference.md index c9f7208c7d7..97de3fcad7a 100644 --- a/docs/assembler/masm/directives-reference.md +++ b/docs/assembler/masm/directives-reference.md @@ -4,7 +4,7 @@ title: "Directives Reference" ms.date: 07/15/2020 f1_keywords: ["Directives Reference"] helpviewer_keywords: ["MASM (Microsoft Macro Assembler), directives reference"] -ms.assetid: da6efcd1-18f7-41de-81cd-a002a02f9a22 +ai-usage: ai-assisted --- # Directives Reference @@ -27,6 +27,49 @@ ms.assetid: da6efcd1-18f7-41de-81cd-a002a02f9a22 :::column-end::: :::row-end::: +## x64 Unwind Version 3 (experimental) + +The following directives are used with `ml64.exe` when the `/unwindv3` option is enabled. Unwind Version 3 is experimental and is subject to change. + +**Prologue directives** + +:::row::: + :::column span=""::: + [`.ALLOCSTACK`](dot-allocstack.md)\ + [`.ENDPROLOG`](dot-endprolog.md)\ + [`.PUSH2REG`](dot-push2reg.md) + :::column-end::: + :::column span=""::: + [`.PUSHFRAME`](dot-pushframe.md)\ + [`.PUSHREG`](dot-pushreg.md)\ + [`.SAVEREG`](dot-savereg.md) + :::column-end::: + :::column span=""::: + [`.SAVEXMM128`](dot-savexmm128.md)\ + [`.SETFRAME`](dot-setframe.md) + :::column-end::: +:::row-end::: + +**Epilogue directives** + +:::row::: + :::column span=""::: + [`.BEGINEPILOG`](dot-beginepilog.md)\ + [`.ENDEPILOG`](dot-endepilog.md)\ + [`.FREESTACK`](dot-freestack.md) + :::column-end::: + :::column span=""::: + [`.POP2REG`](dot-pop2reg.md)\ + [`.POPFRAME`](dot-popframe.md)\ + [`.POPREG`](dot-popreg.md)\ + [`.RESTOREREG`](dot-restorereg.md) + :::column-end::: + :::column span=""::: + [`.RESTOREXMM128`](dot-restorexmm128.md)\ + [`.UNSETFRAME`](dot-unsetframe.md) + :::column-end::: +:::row-end::: + ## Code Labels :::row::: diff --git a/docs/assembler/masm/dot-allocstack.md b/docs/assembler/masm/dot-allocstack.md index 13c5e6e1146..6d0881627bd 100644 --- a/docs/assembler/masm/dot-allocstack.md +++ b/docs/assembler/masm/dot-allocstack.md @@ -1,39 +1,41 @@ --- description: "Learn more about: .ALLOCSTACK" title: ".ALLOCSTACK" -ms.date: "12/17/2019" +ms.date: 05/11/2026 f1_keywords: [".ALLOCSTACK"] helpviewer_keywords: [".ALLOCSTACK directive"] -ms.assetid: 9801594b-7ac2-4df2-a49d-07d9dd9af99e +ai-usage: ai-assisted --- # .ALLOCSTACK -Generates a **UWOP_ALLOC_SMALL** or a **UWOP_ALLOC_LARGE** with the specified size for the current offset in the prologue. +`.ALLOCSTACK` generates a **UWOP_ALLOC_SMALL** or a **UWOP_ALLOC_LARGE** with the specified size for the current offset in the prologue. ## Syntax -> **.ALLOCSTACK** *size* +> `.ALLOCSTACK` *size* ## Remarks -MASM will choose the most efficient encoding for a given size. +Microsoft Assembler (MASM) chooses the most efficient encoding for a given size. -**.ALLOCSTACK** allows ml64.exe users to specify how a frame function unwinds and is only allowed within the prologue, which extends from the [PROC](proc.md) FRAME declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. **.ALLOCSTACK** should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement. +`.ALLOCSTACK` allows `ml64.exe` users to specify how a frame function unwinds and is only allowed within the prologue, which extends from the [PROC](proc.md) `FRAME` declaration to the [.ENDPROLOG](dot-endprolog.md) directive. +- These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. +- Precede `.ALLOCSTACK` with the instructions that actually implement the actions to be unwound. Wrap both the unwind directives and the code they're meant to unwind in a macro to ensure agreement. The *size* operand must be a multiple of 8. -For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md). +The epilogue counterpart is [.FREESTACK](dot-freestack.md). -## Sample +## Example: specify an unwind version 3 unwind/exception handler The following sample shows how to specify an unwind/exception handler: ```asm -; ml64 ex3.asm /link /entry:Example1 /SUBSYSTEM:Console +; ml64 ex3.asm /link /entry:Example3 /SUBSYSTEM:Console text SEGMENT PUBLIC Example3 PUBLIC Example3_UW -Example3_UW PROC NEAR +Example3_UW PROC ; exception/unwind handler body ret 0 @@ -56,7 +58,61 @@ text ENDS END ``` +## Unwind Version 3 behavior + +> [!IMPORTANT] +> Unwind Version 3 support is experimental and is subject to change. Enable it by using `ml64.exe /unwindv3`. + +`.ALLOCSTACK` generates a `WOD_ALLOC_SMALL`, `WOD_ALLOC_LARGE`, or `WOD_ALLOC_HUGE` Unwind Version 3 unwind code entry with the specified size for the current offset in the prolog. + +`.ALLOCSTACK` must appear **before** the `sub rsp, N` instruction it describes. This requirement is the opposite of Version 1, where the directive follows the instruction. + +MASM emits one of three unwind codes depending on the allocation size: + +| Unwind code | Condition | +|---|---| +| `WOD_ALLOC_SMALL` | *size* ≤ 128 bytes | +| `WOD_ALLOC_LARGE` | *size* ≤ 32 KB | +| `WOD_ALLOC_HUGE` | *size* > 32 KB | + +Version 1 generates only `UWOP_ALLOC_SMALL` or `UWOP_ALLOC_LARGE`. Version 3 adds a third variant, `WOD_ALLOC_HUGE`, for allocations larger than 32 KB. + +> [!NOTE] +> In Unwind Version 1, the directive appears after the corresponding instruction. In Unwind Version 3, the directive appears **before** the instruction. + +### Example for unwindv3 + +```asm +; ml64 ex3.asm /unwindv3 /link /entry:Example3 /SUBSYSTEM:Console +text SEGMENT +PUBLIC Example3 +PUBLIC Example3_UW +Example3_UW PROC + ; exception/unwind handler body + + ret 0 + +Example3_UW ENDP + +Example3 PROC FRAME : Example3_UW + +.allocstack 16 + sub rsp, 16 + +.endprolog + + ; function body + add rsp, 16 + ret 0 + +Example3 ENDP +text ENDS +END +``` + ## See also +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ [Directives Reference](directives-reference.md)\ -[MASM BNF Grammar](masm-bnf-grammar.md) +[MASM BNF Grammar](masm-bnf-grammar.md)\ +[MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md) \ No newline at end of file diff --git a/docs/assembler/masm/dot-beginepilog.md b/docs/assembler/masm/dot-beginepilog.md new file mode 100644 index 00000000000..9f05bcdaf1d --- /dev/null +++ b/docs/assembler/masm/dot-beginepilog.md @@ -0,0 +1,59 @@ +--- +description: "Learn more about: .BEGINEPILOG" +title: ".BEGINEPILOG" +ms.date: 05/04/2026 +ai-usage: ai-assisted +f1_keywords: [".BEGINEPILOG"] +helpviewer_keywords: [".BEGINEPILOG directive"] +--- +# .BEGINEPILOG + +Marks the start of an epilogue unwind region. This directive doesn't emit an Unwind Operation Descriptors (WOD) code. + +## Syntax + +> `.BEGINEPILOG` + +## Remarks + +> [!IMPORTANT] +> This directive is experimental and is subject to change. +> Enable Unwind Version 3 by using `ml64.exe /unwindv3`. + +`.BEGINEPILOG` is only valid in Unwind Version 3. + +- It marks the start of an epilogue region where epilogue unwind operations are recorded. Pair `.BEGINEPILOG` with a closing [.ENDEPILOG](dot-endepilog.md) or no epilog unwind codes are emitted. +- In Unwind Version 3, epilog directives are mandatory for epilog unwind code generation. +- Epilogues must contain at least one directive. +- These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. + +> [!NOTE] +> In Unwind Version 1, the directive appears after the corresponding instruction. In Unwind Version 3, the directive appears **before** the instruction. + +## Example for unwindv3 + +```asm +; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE +_text SEGMENT +Example1 PROC FRAME + .allocstack 16 + sub rsp, 16 +.endprolog + ; function body + .beginepilog + .freestack 16 + add rsp, 16 + .endepilog + ret +Example1 ENDP +_text ENDS +END +``` + +## See also + +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ +[Directives Reference](directives-reference.md)\ +[.ENDEPILOG](dot-endepilog.md)\ +[.ENDPROLOG](dot-endprolog.md)\ +[MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/dot-endepilog.md b/docs/assembler/masm/dot-endepilog.md new file mode 100644 index 00000000000..af9383ae19e --- /dev/null +++ b/docs/assembler/masm/dot-endepilog.md @@ -0,0 +1,60 @@ +--- +description: "Learn more about: .ENDEPILOG" +title: ".ENDEPILOG" +ms.date: "04/29/2026" +ai-usage: ai-assisted +f1_keywords: [".ENDEPILOG"] +helpviewer_keywords: [".ENDEPILOG directive"] +--- +# .ENDEPILOG + +Marks the end of an epilogue unwind region. This directive doesn't emit a Windows unwind data (WOD) unwind code. + +## Syntax + +> **.ENDEPILOG** + +## Remarks + +> [!IMPORTANT] +> This directive is experimental and is subject to change. +> Enable Unwind Version 3 by using `ml64.exe /unwindv3`. + +**.ENDEPILOG** is only valid in Unwind Version 3. + +- It marks the end of an epilogue region started by [.BEGINEPILOG](dot-beginepilog.md). +- These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. +- Epilogues must contain at least one directive. +- Epilogue directives are mandatory for epilogue unwind code generation. No epilogue unwind codes are emitted without a `.BEGINEPILOG`/`.ENDEPILOG` pair. +- It's an error to use epilogue directives outside of the region between [.BEGINEPILOG](dot-beginepilog.md) and **.ENDEPILOG**. + +> [!NOTE] +> In Unwind Version 1, the directive appears after the corresponding instruction. In Unwind Version 3, the directive appears **before** the instruction. + +## Example + +```asm +; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE +_text SEGMENT +Example1 PROC FRAME + .allocstack 16 + sub rsp, 16 +.endprolog + ; function body + .beginepilog + .freestack 16 + add rsp, 16 + .endepilog + ret +Example1 ENDP +_text ENDS +END +``` + +## See also + +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ +[Directives Reference](directives-reference.md)\ +[.BEGINEPILOG](dot-beginepilog.md)\ +[.ENDPROLOG](dot-endprolog.md)\ +[MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/dot-endprolog.md b/docs/assembler/masm/dot-endprolog.md index c864e0c8494..bc366ab72e5 100644 --- a/docs/assembler/masm/dot-endprolog.md +++ b/docs/assembler/masm/dot-endprolog.md @@ -1,14 +1,14 @@ --- description: "Learn more about: .ENDPROLOG" title: ".ENDPROLOG" -ms.date: "12/17/2019" +ms.date: 05/06/2026 f1_keywords: [".ENDPROLOG"] helpviewer_keywords: [".ENDPROLOG directive"] -ms.assetid: 61a2474c-9527-46e6-9f9d-bc4b42c10f35 +ai-usage: ai-assisted --- # .ENDPROLOG -Signals the end of the prologue declarations. +Marks the end of the prologue declarations. ## Syntax @@ -16,11 +16,22 @@ Signals the end of the prologue declarations. ## Remarks -It is an error to use any of the prologue declarations outside of the region between [PROC](proc.md) **FRAME** and **.ENDPROLOG**. +It's an error to use any of the prologue declarations outside of the region between [PROC](proc.md) `FRAME` and **.ENDPROLOG**. For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md). +## Unwind Version 3 behavior + +> [!IMPORTANT] +> Unwind Version 3 support is experimental and is subject to change. +> Enable it with `ml64.exe /unwindv3`. + +`.ENDPROLOG` is also used in Unwind Version 3 and continues to mark the end of the function prologue. It doesn't generate a Windows unwind data (WOD) unwind code entry. + +It's an error to use any prologue directive outside the region between `PROC FRAME` and `.ENDPROLOG`. + ## See also +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ [Directives Reference](directives-reference.md)\ [MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/dot-freestack.md b/docs/assembler/masm/dot-freestack.md new file mode 100644 index 00000000000..bf80a2be682 --- /dev/null +++ b/docs/assembler/masm/dot-freestack.md @@ -0,0 +1,74 @@ +--- +description: "Learn more about: .FREESTACK" +title: ".FREESTACK" +ms.date: 05/06/2026 +f1_keywords: [".FREESTACK"] +helpviewer_keywords: [".FREESTACK directive"] +ai-usage: ai-assisted +--- +# .FREESTACK + +Generates a **WOD_ALLOC_SMALL**, **WOD_ALLOC_LARGE**, or **WOD_ALLOC_HUGE** unwind code entry with the specified size for the current offset in the epilogue. + +## Syntax + +> **.FREESTACK** *size* + +## Parameters + +*size*\ +The number of bytes to deallocate from the stack. Must be a multiple of 8. + +## Remarks + +> [!IMPORTANT] +> This directive is experimental and is subject to change. +> Enable Unwind Version 3 by using `ml64.exe /unwindv3`. + +- You can use **.FREESTACK** only in Unwind Version 3. It's the epilogue counterpart to [.ALLOCSTACK](dot-allocstack.md). +- You can use **.FREESTACK** only within an epilogue region, between [.BEGINEPILOG](dot-beginepilog.md) and [.ENDEPILOG](dot-endepilog.md). +- In Unwind Version 3, **.FREESTACK** must appear **before** the `add rsp, N` instruction that implements the stack deallocation. +- To ensure agreement, wrap both the unwind directives and the code they're meant to unwind in a macro. +- These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. +- Microsoft Assembler (MASM) chooses the most efficient encoding for a given size. + +MASM emits one of three unwind codes depending on the size: + +| Unwind code | Condition | +|---|---| +| `WOD_ALLOC_SMALL` | *size* ≤ 128 bytes | +| `WOD_ALLOC_LARGE` | *size* ≤ 32 KB | +| `WOD_ALLOC_HUGE` | *size* > 32 KB | + +In Unwind Version 3, epilogue directives are mandatory for epilogue unwind code generation. The assembler doesn't emit epilogue unwind codes without a `.BEGINEPILOG`/`.ENDEPILOG` pair. + +> [!NOTE] +> In Unwind Version 1, the directive appears after the corresponding instruction. In Unwind Version 3, the directive appears **before** the instruction. + +## Example for unwindv3 + +```asm +; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE +_text SEGMENT +Example1 PROC FRAME + .allocstack 16 + sub rsp, 16 +.endprolog + ; function body + .beginepilog + .freestack 16 + add rsp, 16 + .endepilog + ret +Example1 ENDP +_text ENDS +END +``` + +## See also + +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ +[Directives Reference](directives-reference.md)\ +[.ALLOCSTACK](dot-allocstack.md)\ +[.BEGINEPILOG](dot-beginepilog.md)\ +[MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/dot-pop2reg.md b/docs/assembler/masm/dot-pop2reg.md new file mode 100644 index 00000000000..56dbdff4b52 --- /dev/null +++ b/docs/assembler/masm/dot-pop2reg.md @@ -0,0 +1,76 @@ +--- +description: "Learn more about: .POP2REG" +title: ".POP2REG" +ms.date: 05/04/2026 +f1_keywords: [".POP2REG"] +helpviewer_keywords: [".POP2REG directive"] +ai-usage: ai-assisted +--- +# .POP2REG + +Generates a two-register pop unwind code entry for the specified register pair using the current offset in the epilogue. + +## Syntax + +> **.POP2REG** *register1*, *register2* + +## Parameters + +*register1*\ +The first register to pop. Must be a general-purpose 64-bit register. + +*register2*\ +The second register to pop. Must be a general-purpose 64-bit register. + +*register1* and *register2* may each be one of:\ +`RAX, RCX, RDX, RBX, RDI, RSI, RBP, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31`. + +## Remarks + +> [!IMPORTANT] +> This directive is experimental and is subject to change. Enable Unwind Version 3 with `ml64.exe /unwindv3`. + +- **.POP2REG** is only valid in Unwind Version 3. It's the epilogue counterpart to [.PUSH2REG](dot-push2reg.md). +- **.POP2REG** is only allowed within an epilogue region, between [.BEGINEPILOG](dot-beginepilog.md) and [.ENDEPILOG](dot-endepilog.md). +- These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. +- In Unwind Version 3, **.POP2REG** must appear **before** the instruction that actually implements the action to be unwound. +- In Unwind Version 3, epilogue directives are mandatory for epilogue unwind code generation. No epilogue unwind codes are emitted without a `.BEGINEPILOG`/`.ENDEPILOG` pair. +- To ensure agreement, wrap both the unwind directives and the code they're meant to unwind in a macro. + +If *register1* and *register2* are consecutive and in increasing order, MASM emits a `WOD_PUSH_CONSECUTIVE_2` unwind code. Otherwise, MASM emits a `WOD_PUSH2` unwind code. + +> [!NOTE] +> In Unwind Version 1, the directive appears after the corresponding instruction. In Unwind Version 3, the directive appears **before** the instruction. + +## Example + +```asm +; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE +_text SEGMENT +Example1 PROC FRAME + .push2reg rbx, rsi + push2 rbx, rsi + .push2reg r10, r11 + push2 r10, r11 +.endprolog + ; rest of function ... + .beginepilog + .pop2reg r10, r11 + pop2 r10, r11 + .pop2reg rbx, rsi + pop2 rbx, rsi + .endepilog + ret +Example1 ENDP +_text ENDS +END +``` + +## See also + +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ +[Directives Reference](directives-reference.md)\ +[.PUSH2REG](dot-push2reg.md)\ +[.POPREG](dot-popreg.md)\ +[.BEGINEPILOG](dot-beginepilog.md)\ +[MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/dot-popframe.md b/docs/assembler/masm/dot-popframe.md new file mode 100644 index 00000000000..6f0d869f13d --- /dev/null +++ b/docs/assembler/masm/dot-popframe.md @@ -0,0 +1,74 @@ +--- +description: "Learn more about: .POPFRAME" +title: ".POPFRAME" +ms.date: 05/01/2026 +f1_keywords: [".POPFRAME"] +helpviewer_keywords: [".POPFRAME directive"] +ai-usage: ai-assisted +--- +# .POPFRAME + +Generates a `WOD_PUSH_CANONICAL_FRAME` Windows unwind data (WOD) unwind code entry in the epilogue. + +## Syntax + +> **.POPFRAME** ⟦**CODE** | *value*⟧ + +## Parameters + +*value*\ +An optional numeric modifier in the range 0–255.\ +Mutually exclusive with **CODE**. If you specify the optional **CODE** keyword, the unwind code entry receives a modifier of 1.\ +If you specify an optional numeric *value* instead, it receives the specified value.\ +If you don't pass an argument, the value is 0. + +## Remarks + +> [!IMPORTANT] +> This directive is experimental and is subject to change. Enable Unwind Version 3 with `ml64.exe /unwindv3`. + +The **.POPFRAME** directive lets `ml64.exe` users specify how a frame function unwinds in an epilog. You can only use it within an epilog region, between [.BEGINEPILOG](dot-beginepilog.md) and [.ENDEPILOG](dot-endepilog.md). + +- **.POPFRAME** is only valid in Unwind Version 3. It's the epilog counterpart of [.PUSHFRAME](dot-pushframe.md). The operand value should match the corresponding **.PUSHFRAME** in the prologue. +- In Unwind Version 3, **.POPFRAME** must appear **before** the instruction that implements the action to be unwound. To ensure agreement, wrap both the unwind directives and the code they're meant to unwind in a macro. +- In Unwind Version 3, epilogue directives are mandatory for epilogue unwind code generation. No epilogue unwind codes are emitted without a `.BEGINEPILOG`/`.ENDEPILOG` pair. +- These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. + +> [!NOTE] +> In Unwind Version 1, directives appear after the corresponding instruction. In Unwind Version 3, directives appear **before** the instruction. + +## Example for unwindv3 + +The following example shows how to use **.POPFRAME** in an epilogue to indicate an interrupt handler that pushes and pops a canonical machine frame. + +```asm +; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE +_text SEGMENT +Example1 PROC FRAME + .pushframe + .pushreg rbx + push rbx + .allocstack 32 + sub rsp, 32 +.endprolog + ; interrupt handler body ... + .beginepilog + .freestack 32 + add rsp, 32 + .popreg rbx + pop rbx + .popframe + .endepilog + iretq +Example1 ENDP +_text ENDS +END +``` + +## See also + +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ +[.PUSHFRAME](dot-pushframe.md)\ +[.BEGINEPILOG](dot-beginepilog.md)\ +[.ENDEPILOG](dot-endepilog.md)\ +[MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/dot-popreg.md b/docs/assembler/masm/dot-popreg.md new file mode 100644 index 00000000000..963e7de0f48 --- /dev/null +++ b/docs/assembler/masm/dot-popreg.md @@ -0,0 +1,70 @@ +--- +description: "Learn more about: .POPREG" +title: ".POPREG" +ms.date: 05/04/2026 +f1_keywords: [".POPREG"] +helpviewer_keywords: [".POPREG directive"] +ai-usage: ai-assisted +--- +# .POPREG + +Generates a `WOD_PUSH` unwind code entry for the specified register using the current offset in the epilogue. + +## Syntax + +> .POPREG *register* + +## Parameters + +*register*\ +The register to pop. Must be a general-purpose 64-bit register. + +## Remarks + +> [!IMPORTANT] +> This directive is experimental and is subject to change. Enable Unwind Version 3 by using the `/unwindv3` option in ml64.exe. + +`.POPREG` is only valid in Unwind Version 3. It's the epilogue counterpart to [.PUSHREG](dot-pushreg.md). + +`.POPREG` is only allowed within an epilogue region, between [.BEGINEPILOG](dot-beginepilog.md) and [.ENDEPILOG](dot-endepilog.md). These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. In Unwind Version 3, `.POPREG` must appear **before** the `pop` instruction that implements the register restore. To ensure agreement, wrap both the unwind directives and the code they're meant to unwind in a macro. + +*register* may be one of:\ +`RAX, RCX, RDX, RBX, RDI, RSI, RBP, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31` + +In Unwind Version 3, epilogue directives are mandatory for epilogue unwind code generation. The assembler doesn't emit epilogue unwind codes without a `.BEGINEPILOG`/`.ENDEPILOG` pair. + +> [!NOTE] +> In Unwind Version 1, the directive appears after the corresponding instruction. In Unwind Version 3, the directive appears **before** the instruction. + +## Example for unwindv3 + +```asm +; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE +_text SEGMENT +Example1 PROC FRAME + .pushreg rbx + push rbx + .pushreg rsi + push rsi +.endprolog + ; rest of function ... + .beginepilog + .popreg rsi + pop rsi + .popreg rbx + pop rbx + .endepilog + ret +Example1 ENDP +_text ENDS +END +``` + +## See also + +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ +[Directives Reference](directives-reference.md)\ +[.PUSHREG](dot-pushreg.md)\ +[.POP2REG](dot-pop2reg.md)\ +[.BEGINEPILOG](dot-beginepilog.md)\ +[MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/dot-push2reg.md b/docs/assembler/masm/dot-push2reg.md new file mode 100644 index 00000000000..d43e1113271 --- /dev/null +++ b/docs/assembler/masm/dot-push2reg.md @@ -0,0 +1,65 @@ +--- +description: "Learn more about: .PUSH2REG" +title: ".PUSH2REG" +ms.date: 05/04/2026 +f1_keywords: [".PUSH2REG"] +helpviewer_keywords: [".PUSH2REG directive"] +ai-usage: ai-assisted +--- +# .PUSH2REG + +Generates a two-register push unwind code entry for the specified register pair using the current offset in the prologue. + +## Syntax + +> `.PUSH2REG` *register1*, *register2* + +## Parameters + +*register1*\ +The first register to push. Must be a general-purpose 64-bit register. + +*register2*\ +The second register to push. Must be a general-purpose 64-bit register. + +*register1* and *register2* may each be one of:\ +`RAX, RCX, RDX, RBX, RDI, RSI, RBP, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31.` + +## Remarks + +> [!IMPORTANT] +> This directive is experimental and is subject to change. Enable Unwind Version 3 by using `ml64.exe /unwindv3`. + +- Use `.PUSH2REG` to specify how a frame function unwinds. You can only use this directive within the prologue, which extends from the [PROC](proc.md) `FRAME` declaration to the [.ENDPROLOG](dot-endprolog.md) directive. +- These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. In Unwind Version 3, `.PUSH2REG` must appear **before** the instruction that actually implements the action to be unwound. To ensure agreement, it's a good practice to wrap both the unwind directives and the code they're meant to unwind in a macro. +- If *register1* and *register2* are consecutive and in increasing order, MASM emits a `WOD_PUSH_CONSECUTIVE_2` unwind code. Otherwise, MASM emits a `WOD_PUSH2` unwind code. + +> [!NOTE] +> In Unwind Version 1, the directive appears after the corresponding instruction. In Unwind Version 3, the directive appears **before** the instruction. + +## Example for unwindv3 + +```asm +; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE +_text SEGMENT +Example1 PROC FRAME + .push2reg r10, r11 + push2 r10, r11 + .push2reg rbx, rsi + push2 rbx, rsi +.endprolog + ; rest of function ... + ret +Example1 ENDP +_text ENDS +END +``` + +## See also + +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ +[Directives Reference](directives-reference.md)\ +[.POP2REG](dot-pop2reg.md)\ +[.PUSHREG](dot-pushreg.md)\ +[.ENDPROLOG](dot-endprolog.md)\ +[MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/dot-pushframe.md b/docs/assembler/masm/dot-pushframe.md index 07dc3972dfc..da3d77c596f 100644 --- a/docs/assembler/masm/dot-pushframe.md +++ b/docs/assembler/masm/dot-pushframe.md @@ -4,23 +4,58 @@ description: "Describes the .PUSHFRAME MASM directive, used to specify how to un ms.date: "12/06/2019" f1_keywords: [".PUSHFRAME"] helpviewer_keywords: [".PUSHFRAME directive"] -ms.assetid: 17b123d0-4c6d-4fd2-85eb-798e8ad0a73c +ai-usage: ai-assisted --- # .PUSHFRAME -Generates a `UWOP_PUSH_MACHFRAME` unwind code entry. If the optional **CODE** keyword is specified, the unwind code entry is given a modifier of 1. Otherwise the modifier is 0. +Generates a `UWOP_PUSH_MACHFRAME` unwind code entry. If you specify the optional **CODE** keyword, the unwind code entry gets a modifier of 1. Otherwise, the modifier is 0. ## Syntax -> **.PUSHFRAME** ⟦**CODE**⟧;; +> `.PUSHFRAME` ⟦**CODE**⟧ ;Prior to Unwind Version 3 +> `.PUSHFRAME` ⟦**CODE**⟧ | [0-255] ;Unwind Version 3 specific ## Remarks -.PUSHFRAME allows ml64.exe users to specify how a frame function unwinds. It's only allowed within the prologue, which extends from the [PROC](proc.md) FRAME declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives don't generate code; they only generate `.xdata` and `.pdata`. **.PUSHFRAME** should be preceded by instructions that actually implement the actions to be unwound. It's a good practice to wrap both the unwind directives and the code they're meant to unwind in a macro to ensure agreement. +Use `.PUSHFRAME` with `ml64.exe` to specify how a frame function unwinds. You can only use it within the prologue, which extends from the [PROC](proc.md) `FRAME` declaration to the [.ENDPROLOG](dot-endprolog.md) directive. +- These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. +- Precede `.PUSHFRAME` with the instructions that implement the actions to be unwound. +- To ensure agreement, wrap both the unwind directives and the code they're meant to unwind in a macro. -For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md). +## Unwind Version 3 behavior + +> [!IMPORTANT] +> Unwind Version 3 support is experimental and is subject to change. Enable it by using `ml64.exe /unwindv3`. + +In Unwind Version 3, `.PUSHFRAME` emits a `WOD_PUSH_CANONICAL_FRAME` unwind code entry.\ +When you specify the optional **CODE** keyword, the unwind code entry modifier value is 1.\ +If you specify an optional *value*, the directive uses it directly.\ +If you don't pass an argument, the value is 0. The *value* must be in the range 0–255. + +> **Note:** In Unwind Version 1 the directives come after the instruction. In Unwind Version 3, the directives come before the instruction. +> `.PUSHFRAME` must appear **before** the instruction it describes. This behavior is the opposite of Version 1, where the directive follows the instruction. + +### Example for unwindv3 + +```asm +; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE +_text SEGMENT +Example1 PROC FRAME + .pushframe CODE +.endprolog + ; interrupt handler body ... + iretq +Example1 ENDP +_text ENDS +END +``` + +The epilogue counterpart is [.POPFRAME](dot-popframe.md). ## See also +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ [Directives reference](directives-reference.md)\ -[MASM BNF Grammar](masm-bnf-grammar.md) +[.POPFRAME](dot-popframe.md)\ +[MASM BNF Grammar](masm-bnf-grammar.md)\ +[MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md) diff --git a/docs/assembler/masm/dot-pushreg.md b/docs/assembler/masm/dot-pushreg.md index a433f688d6e..d6a48cb5227 100644 --- a/docs/assembler/masm/dot-pushreg.md +++ b/docs/assembler/masm/dot-pushreg.md @@ -1,10 +1,10 @@ --- description: "Learn more about: .PUSHREG" title: ".PUSHREG" -ms.date: "12/16/2019" +ms.date: 05/04/2026 f1_keywords: [".PUSHREG"] helpviewer_keywords: [".PUSHREG directive"] -ms.assetid: e0c83758-dfed-40ea-afe6-cb833c8d2d30 +ai-usage: ai-assisted --- # .PUSHREG @@ -14,23 +14,20 @@ Generates a `UWOP_PUSH_NONVOL` unwind code entry for the specified register numb > .PUSHREG *register* -## Remarks - -**.PUSHREG** allows ml64.exe users to specify how a frame function unwinds, and is only allowed within the prologue, which extends from the [PROC](proc.md) **FRAME** declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. **.PUSHREG** should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement. - *register* may be one of:\ -RAX | RCX | RDX | RBX | RDI | RSI | RBP | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15. - -For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md). +`RAX, RCX, RDX, RBX, RDI, RSI, RBP, R8, R9, R10, R11, R12, R13, R14, R15` -## Sample +Unwind Version 3 extends register support to include R16–R31. *register* may be one of:\ +`RAX, RCX, RDX, RBX, RDI, RSI, RBP, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20, R21, R22, R23, R24, R25, R26, R27, R28, R29, R30, R31` -### Description +## Remarks -The following sample shows how to push non-volatile registers. +Use `.PUSHREG` with `ml64.exe` to specify how a frame function unwinds. You can only use `.PUSHREG` within the prologue, which extends from the [PROC](proc.md) `FRAME` declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. Precede `.PUSHREG` with the instructions that actually implement the actions to be unwound. To ensure agreement, wrap both the unwind directives and the code they're meant to unwind in a macro. ### Code +The following sample shows how to push nonvolatile registers. + ```asm ; ml64 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE _text SEGMENT @@ -51,7 +48,42 @@ _text ENDS END ``` +## Unwind Version 3 behavior + +> [!IMPORTANT] +> Unwind Version 3 support is experimental and is subject to change. Enable it by using `ml64.exe /unwindv3`. + +> [!NOTE] +> In Unwind Version 1, the directive appears after the corresponding instruction. In Unwind Version 3, the directive appears **before** the instruction. +> In Unwind Version 3, `.PUSHREG` generates a `WOD_PUSH` unwind code entry and must appear **before** the `push reg` instruction it describes. This requirement is the opposite of Version 1, where the directive follows the instruction. + +### Example for unwindv3 + +```asm +; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE +_text SEGMENT +Example1 PROC FRAME + .pushreg r10 + push r10 + .pushreg r15 + push r15 + .pushreg rbx + push rbx + .pushreg rsi + push rsi +.endprolog + ; rest of function ... + ret +Example1 ENDP +_text ENDS +END +``` + +The epilogue counterpart is [.POPREG](dot-popreg.md). + ## See also +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ [Directives reference](directives-reference.md)\ -[MASM BNF Grammar](masm-bnf-grammar.md) +[MASM BNF Grammar](masm-bnf-grammar.md)\ +[MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md) \ No newline at end of file diff --git a/docs/assembler/masm/dot-restorereg.md b/docs/assembler/masm/dot-restorereg.md new file mode 100644 index 00000000000..94836c8da74 --- /dev/null +++ b/docs/assembler/masm/dot-restorereg.md @@ -0,0 +1,77 @@ +--- +description: "Learn more about: .RESTOREREG" +title: ".RESTOREREG" +ms.date: 05/04/2026 +f1_keywords: [".RESTOREREG"] +helpviewer_keywords: [".RESTOREREG directive"] +ai-usage: ai-assisted +--- +# .RESTOREREG + +Generates either a `WOD_SAVE_NONVOL` or a `WOD_SAVE_NONVOL_FAR` unwind code entry for the specified register and offset, using the current epilogue offset. + +## Syntax + +> `.RESTOREREG` *reg*, *offset* + +## Parameters + +*reg*\ +The nonvolatile register to restore. + +*offset*\ +The stack offset from which the register is restored. + +## Remarks + +> [!IMPORTANT] +> This directive is experimental and is subject to change. Enable Unwind Version 3 by using `ml64.exe /unwindv3`. + +`.RESTOREREG` is only valid in Unwind Version 3. It's the epilogue counterpart to [.SAVEREG](dot-savereg.md). + +Microsoft Assembler (MASM) chooses the most efficient encoding for a given offset. + +- `.RESTOREREG` is only allowed within an epilogue region, between [.BEGINEPILOG](dot-beginepilog.md) and [.ENDEPILOG](dot-endepilog.md). +- These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. +- In Unwind Version 3, `.RESTOREREG` must appear **before** the instruction that loads the register from the stack. +- To ensure agreement, wrap both the unwind directives and the code they're meant to unwind in a macro. +- In Unwind Version 3, epilogue directives are mandatory for epilogue unwind code generation. No epilogue unwind codes are emitted without a `.BEGINEPILOG`/`.ENDEPILOG` pair. + +> [!NOTE] +> In Unwind Version 1, the directive appears after the corresponding instruction. In Unwind Version 3, the directive appears **before** the instruction. + +## Example for unwindv3 + +```asm +; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE +_text SEGMENT +Example1 PROC FRAME + .allocstack 020h + sub rsp, 020h + .savereg rbx, 0 + mov [rsp], rbx + .savereg rsi, 8 + mov [rsp+8], rsi +.endprolog + ; rest of function ... + .beginepilog + .restorereg rsi, 8 + mov rsi, [rsp+8] + .restorereg rbx, 0 + mov rbx, [rsp] + .freestack 020h + add rsp, 020h + .endepilog + ret +Example1 ENDP +_text ENDS +END +``` + +## See also + +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ +[Directives Reference](directives-reference.md)\ +[.SAVEREG](dot-savereg.md)\ +[.BEGINEPILOG](dot-beginepilog.md)\ +[MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/dot-restorexmm128.md b/docs/assembler/masm/dot-restorexmm128.md new file mode 100644 index 00000000000..03d1bc27750 --- /dev/null +++ b/docs/assembler/masm/dot-restorexmm128.md @@ -0,0 +1,77 @@ +--- +description: "Learn more about: .RESTOREXMM128" +title: ".RESTOREXMM128" +ms.date: 05/06/2026 +f1_keywords: [".RESTOREXMM128"] +helpviewer_keywords: [".RESTOREXMM128 directive"] +ai-usage: ai-assisted +--- +# .RESTOREXMM128 + +Generates either a `WOD_SAVE_XMM128` or a `WOD_SAVE_XMM128_FAR` Unwind Version 3 unwind code entry for the specified XMM register and offset using the current epilogue offset. + +## Syntax + +> `.RESTOREXMM128` *xmmreg*, *offset* + +## Parameters + +*xmmreg*\ +The XMM register to restore. + +*offset*\ +The stack offset from which the register is restored. Must be a multiple of 16. + +## Remarks + +> [!IMPORTANT] +> This directive is experimental and is subject to change. Enable Unwind Version 3 with `ml64.exe /unwindv3`. + +`.RESTOREXMM128` is only valid in Unwind Version 3. It's the epilogue counterpart to [.SAVEXMM128](dot-savexmm128.md). + +Microsoft Assembler (MASM) chooses the most efficient encoding for a given offset. + +- `.RESTOREXMM128` is only allowed within an epilogue region, between [.BEGINEPILOG](dot-beginepilog.md) and [.ENDEPILOG](dot-endepilog.md). +- These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. +- In Unwind Version 3, `.RESTOREXMM128` must appear **before** the instruction that loads the XMM register from the stack. +- To ensure agreement, wrap both the unwind directives and the code they're meant to unwind in a macro. +- In Unwind Version 3, epilogue directives are mandatory for epilogue unwind code generation. No epilogue unwind codes are emitted without a `.BEGINEPILOG`/`.ENDEPILOG` pair. + +> [!NOTE] +> In Unwind Version 1, the directive appears after the corresponding instruction. In Unwind Version 3, the directive appears **before** the instruction. + +## Example for unwindv3 + +```asm +; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE +_text SEGMENT +Example1 PROC FRAME + .allocstack 030h + sub rsp, 030h + .savexmm128 xmm6, 0 + movdqa [rsp], xmm6 + .savexmm128 xmm7, 010h + movdqa [rsp+010h], xmm7 +.endprolog + ; rest of function ... + .beginepilog + .restorexmm128 xmm7, 010h + movdqa xmm7, [rsp+010h] + .restorexmm128 xmm6, 0 + movdqa xmm6, [rsp] + .freestack 030h + add rsp, 030h + .endepilog + ret +Example1 ENDP +_text ENDS +END +``` + +## See also + +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ +[Directives Reference](directives-reference.md)\ +[.SAVEXMM128](dot-savexmm128.md)\ +[.BEGINEPILOG](dot-beginepilog.md)\ +[MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/dot-savereg.md b/docs/assembler/masm/dot-savereg.md index a786f88777f..654d19cfe57 100644 --- a/docs/assembler/masm/dot-savereg.md +++ b/docs/assembler/masm/dot-savereg.md @@ -1,26 +1,70 @@ --- description: "Learn more about: .SAVEREG" title: ".SAVEREG" -ms.date: "12/16/2019" +ms.date: 05/06/2026 f1_keywords: [".SAVEREG"] helpviewer_keywords: [".SAVEREG directive"] -ms.assetid: 1dbc2ef6-a197-40e7-9e55-fddcae8cef29 +ai-usage: ai-assisted --- # .SAVEREG -Generates either a `UWOP_SAVE_NONVOL` or a `UWOP_SAVE_NONVOL_FAR` unwind code entry for the specified register (*reg*) and offset (*offset*) using the current prologue offset. MASM will choose the most efficient encoding. +Generates either a `UWOP_SAVE_NONVOL` or a `UWOP_SAVE_NONVOL_FAR` unwind code entry for the specified register (*reg*) and offset (*offset*) using the current prologue offset. Microsoft Assembler (MASM) chooses the most efficient encoding. ## Syntax -> **.SAVEREG** *reg*__,__ *offset* +> `.SAVEREG` *reg*__,__ *offset* ## Remarks -**.SAVEREG** allows ml64.exe users to specify how a frame function unwinds and is only allowed within the prologue, which extends from the [PROC](proc.md) FRAME declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. **.SAVEREG** should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement. +Use `.SAVEREG` with `ml64.exe` to specify how a frame function unwinds. You can only use it within the prologue, which extends from the [`PROC`](proc.md) `FRAME` declaration to the [.ENDPROLOG](dot-endprolog.md) directive. +- These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. +- Precede `.SAVEREG` with instructions that actually implement the actions to be unwound. +- To ensure agreement, wrap both the unwind directives and the code they're meant to unwind in a macro. -For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md). +## Unwind Version 3 behavior + +> [!IMPORTANT] +> Unwind Version 3 support is experimental and is subject to change. Enable it by using `ml64.exe /unwindv3`. + +In Unwind Version 3, `.SAVEREG` emits either a `WOD_SAVE_NONVOL` or a `WOD_SAVE_NONVOL_FAR` unwind code entry. MASM selects the most efficient encoding based on the size of *offset*: + +| Unwind code | Condition | +|---|---| +| `WOD_SAVE_NONVOL` | *offset* can be encoded as a scaled 16-bit value | +| `WOD_SAVE_NONVOL_FAR` | *offset* requires a full 32-bit value | + +> [!NOTE] +> In Unwind Version 1, the directive appears after the corresponding instruction. In Unwind Version 3, the directive appears **before** the instruction. +> `.SAVEREG` must appear **before** the instruction it describes. This requirement is the opposite of Version 1, where the directive follows the instruction. + +### Example for unwindv3 + +```asm +; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE +_text SEGMENT +Example1 PROC FRAME + .allocstack 020h + sub rsp, 020h + .savereg rbx, 0 + mov [rsp], rbx + .savereg rsi, 8 + mov [rsp+8], rsi +.endprolog + ; rest of function ... + mov rsi, [rsp+8] + mov rbx, [rsp] + add rsp, 020h + ret +Example1 ENDP +_text ENDS +END +``` + +The epilogue counterpart is [.RESTOREREG](dot-restorereg.md). ## See also +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ [Directives reference](directives-reference.md)\ +[MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md)\ [MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/dot-savexmm128.md b/docs/assembler/masm/dot-savexmm128.md index 6a914c5547f..ed2fae15341 100644 --- a/docs/assembler/masm/dot-savexmm128.md +++ b/docs/assembler/masm/dot-savexmm128.md @@ -1,28 +1,69 @@ --- description: "Learn more about: .SAVEXMM128" title: ".SAVEXMM128" -ms.date: "12/17/2019" +ms.date: 05/04/2026 f1_keywords: [".SAVEXMM128"] helpviewer_keywords: [".SAVEXMM128 directive"] -ms.assetid: 551eb472-b8d0-47b1-8d82-995d1f485723 +ai-usage: ai-assisted --- # .SAVEXMM128 -Generates either a `UWOP_SAVE_XMM128` or a `UWOP_SAVE_XMM128_FAR` unwind code entry for the specified XMM register and offset using the current prologue offset. MASM will choose the most efficient encoding. +Generates either a `UWOP_SAVE_XMM128` or a `UWOP_SAVE_XMM128_FAR` unwind code entry for the specified XMM register and offset using the current prologue offset. Microsoft Assembler (MASM) chooses the most efficient encoding. ## Syntax -> **.SAVEXMM128** *xmmreg* , *offset* +> `.SAVEXMM128` *xmmreg* , *offset* ## Remarks -**.SAVEXMM128** allows ml64.exe users to specify how a frame function unwinds, and is only allowed within the prologue, which extends from the [PROC](proc.md) FRAME declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. .SAVEXMM128 should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement. +Use `.SAVEXMM128` with `ml64.exe` to specify how a frame function unwinds. You can only use it within the prologue, which extends from the [`PROC`](proc.md) `FRAME` declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. Precede `.SAVEXMM128` by the instructions that actually implement the actions to be unwound. To ensure agreement, wrap both the unwind directives and the code they're meant to unwind in a macro. *offset* must be a multiple of 16. -For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md). +## Unwind Version 3 behavior + +> [!IMPORTANT] +> Unwind Version 3 support is experimental and is subject to change. Enable it by using `ml64.exe /unwindv3`. + +In Unwind Version 3, `.SAVEXMM128` emits either a `WOD_SAVE_XMM128` or a `WOD_SAVE_XMM128_FAR` unwind code entry. Microsoft Assembler (MASM) selects the most efficient encoding based on the size of *offset*: + +| Unwind code | Condition | +|---|---| +| `WOD_SAVE_XMM128` | *offset* can be encoded as a scaled 16-bit value | +| `WOD_SAVE_XMM128_FAR` | *offset* requires a full 32-bit value | + +> [!NOTE] +> In Unwind Version 1 the directives come after the instruction. In Unwind Version 3, the directives come before the instruction. +> `.SAVEXMM128` must appear **before** the instruction it describes. This requirement is the opposite of Version 1, where the directive follows the instruction. + +### Example for unwindv3 + +```asm +; ml64 /unwindv3 ex1.asm /link /entry:Example1 /SUBSYSTEM:CONSOLE +_text SEGMENT +Example1 PROC FRAME + .allocstack 030h + sub rsp, 030h + .savexmm128 xmm6, 0 + movdqa [rsp], xmm6 + .savexmm128 xmm7, 010h + movdqa [rsp+010h], xmm7 +.endprolog + ; rest of function ... + movdqa xmm7, [rsp+010h] + movdqa xmm6, [rsp] + add rsp, 030h + ret +Example1 ENDP +_text ENDS +END +``` + +The epilogue counterpart is [.RESTOREXMM128](dot-restorexmm128.md). ## See also +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ [Directives reference](directives-reference.md)\ -[MASM BNF Grammar](masm-bnf-grammar.md) +[MASM BNF Grammar](masm-bnf-grammar.md)\ +[MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md) diff --git a/docs/assembler/masm/dot-setframe.md b/docs/assembler/masm/dot-setframe.md index d33281ed97a..7eeec50f330 100644 --- a/docs/assembler/masm/dot-setframe.md +++ b/docs/assembler/masm/dot-setframe.md @@ -1,10 +1,10 @@ --- description: "Learn more about: .SETFRAME" title: ".SETFRAME" -ms.date: "12/17/2019" +ms.date: 05/04/2026 f1_keywords: [".SETFRAME"] helpviewer_keywords: [".SETFRAME directive"] -ms.assetid: eaa9b5ed-4daa-4f1e-bdb6-100758007ab3 +ai-usage: ai-assisted --- # .SETFRAME @@ -12,13 +12,11 @@ Fills in the frame register field and offset in the unwind information using the ## Syntax -> **.SETFRAME** *reg*, *offset* +> `.SETFRAME` *reg*, *offset* ## Remarks -**.SETFRAME** allows ml64.exe users to specify how a frame function unwinds, and is only allowed within the prologue, which extends from the [PROC](proc.md) FRAME declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. **.SETFRAME** should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement. - -For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md). +Use `.SETFRAME` to specify how a frame function unwinds. You can only use it within the prologue, which extends from the [`PROC`](proc.md) `FRAME` declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code. Precede `.SETFRAME` with instructions that implement the actions to be unwound. To ensure agreement, wrap both the unwind directives and the code they're meant to unwind in a macro. ## Sample @@ -55,7 +53,51 @@ _text ENDS END ``` +## Unwind Version 3 behavior + +> [!IMPORTANT] +> Unwind Version 3 support is experimental and is subject to change. Enable it by using `ml64.exe /unwindv3`. + +In Unwind Version 3, `.SETFRAME` emits a `WOD_SET_FPREG` unwind code entry for the specified register using the current prologue offset. It also fills in the frame register field and offset in the unwind information. The *offset* must be a multiple of 16 and less than or equal to 240. + +> [!NOTE] +> In Unwind Version 1 the directives come after the instruction. In Unwind Version 3, the directives come before the instruction. +> `.SETFRAME` must appear **before** the instruction it describes. This requirement is the opposite of Version 1, where the directive follows the instruction. + +### Example for unwindv3 + +```asm +; ml64 /unwindv3 frmex2.asm /link /entry:frmex2 /SUBSYSTEM:CONSOLE +_text SEGMENT +frmex2 PROC FRAME + .pushreg rbp + push rbp + .allocstack 010h + sub rsp, 010h + .setframe rbp, 0 + mov rbp, rsp +.endprolog + ; modify the stack pointer outside of the prologue (similar to alloca) + sub rsp, 060h + + ; we can unwind from the following AV because of the frame pointer + mov rax, 0 + mov rax, [rax] ; AV! + + add rsp, 060h + add rsp, 010h + pop rbp + ret +frmex2 ENDP +_text ENDS +END +``` + +The epilogue counterpart is [.UNSETFRAME](dot-unsetframe.md). + ## See also +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ +[MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md)\ [Directives reference](directives-reference.md)\ [MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/dot-unsetframe.md b/docs/assembler/masm/dot-unsetframe.md new file mode 100644 index 00000000000..10b55371053 --- /dev/null +++ b/docs/assembler/masm/dot-unsetframe.md @@ -0,0 +1,82 @@ +--- +description: "Learn more about: .UNSETFRAME" +title: ".UNSETFRAME" +ms.date: 05/04/2026 +f1_keywords: [".UNSETFRAME"] +helpviewer_keywords: [".UNSETFRAME directive"] +ai-usage: ai-assisted +--- +# .UNSETFRAME + +Generates a `WOD_SET_FPREG` unwind code entry for the specified register and offset using the current offset in the epilogue. + +## Syntax + +> `.UNSETFRAME` *reg*, *offset* + +## Parameters + +*reg*\ +The frame pointer register to unset. + +*offset*\ +The offset into the stack frame where the frame pointer was established. + +## Remarks + +> [!IMPORTANT] +> This directive is experimental and is subject to change. Enable Unwind Version 3 with `ml64.exe /unwindv3`. + +`.UNSETFRAME` is only valid in Unwind Version 3. It's the epilogue counterpart to [.SETFRAME](dot-setframe.md). + +`.UNSETFRAME` is only allowed within an epilogue region, between [.BEGINEPILOG](dot-beginepilog.md) and [.ENDEPILOG](dot-endepilog.md). These directives generate unwind metadata (`.xdata` and `.pdata` sections) but don't produce executable code.\ +In Unwind Version 3, `.UNSETFRAME` must appear **before** the instruction that restores the stack pointer from the frame pointer register.\ +It's a good practice to wrap both the unwind directives and the code they're meant to unwind in a macro to ensure agreement. + +In Unwind Version 3, epilogue directives are mandatory for epilogue unwind code generation. No epilogue unwind codes are emitted without a `.BEGINEPILOG`/`.ENDEPILOG` pair. + +> [!NOTE] +> In Unwind Version 1, the directive appears after the corresponding instruction. In Unwind Version 3, the directive appears **before** the instruction. + +## Example for unwindv3 + +```asm +; ml64 /unwindv3 frmex2.asm /link /entry:frmex2 /SUBSYSTEM:CONSOLE +_text SEGMENT +frmex2 PROC FRAME + .pushreg rbp + push rbp + .allocstack 010h + sub rsp, 010h + .setframe rbp, 0 + mov rbp, rsp +.endprolog + ; modify the stack pointer outside of the prologue (similar to alloca) + sub rsp, 060h + + ; we can unwind from the following AV because of the frame pointer + mov rax, 0 + mov rax, [rax] ; AV! + + add rsp, 060h + .beginepilog + .unsetframe rbp, 0 + mov rsp, rbp + .freestack 010h + add rsp, 010h + .popreg rbp + pop rbp + .endepilog + ret +frmex2 ENDP +_text ENDS +END +``` + +## See also + +[x64 Unwind Version 3 (experimental)](directives-reference.md#x64-unwind-version-3-experimental)\ +[Directives Reference](directives-reference.md)\ +[.SETFRAME](dot-setframe.md)\ +[.BEGINEPILOG](dot-beginepilog.md)\ +[MASM BNF Grammar](masm-bnf-grammar.md) diff --git a/docs/assembler/masm/masm-for-x64-ml64-exe.md b/docs/assembler/masm/masm-for-x64-ml64-exe.md index 840b0020837..6abb9b44993 100644 --- a/docs/assembler/masm/masm-for-x64-ml64-exe.md +++ b/docs/assembler/masm/masm-for-x64-ml64-exe.md @@ -1,8 +1,9 @@ --- description: "Learn more about: Microsoft Macro Assembler (MASM) for x64 (ml64.exe)" title: "MASM for x64 (ml64.exe)" -ms.date: 09/21/2021 +ms.date: 05/07/2026 helpviewer_keywords: ["ml64", "ml64.exe", "masm for x64"] +ai-usage: ai-assisted --- # MASM for x64 (ml64.exe) @@ -21,34 +22,54 @@ The Visual Studio project system supports assembler-language files built by usin ### To add an assembler-language file to an existing Visual Studio C++ project 1. Select the project in **Solution Explorer**. On the menu bar, choose **Project**, **Build Customizations**. - 1. In the **Visual C++ Build Customization Files** dialog box, check the checkbox next to **masm(.targets,.props)**. Choose **OK** to save your selection and close the dialog box. - 1. On the menu bar, choose **Project**, **Add New Item**. - 1. In the **Add New Item** dialog box, select **C++ file (.cpp)** in the center pane. In the **Name** edit control, enter a new file name that has a *`.asm`* extension instead of *`.cpp`*. Choose **Add** to add the file to your project and close the dialog box. Create your assembler-language code in the *`.asm`* file you added. When you build your solution, the MASM assembler is invoked to assemble the *`.asm`* file into an object file that is then linked into your project. To make symbol access easier, declare your assembler functions as `extern "C"` in your C++ source code, rather than using the C++ name decoration conventions in your assembler-language source files. -## ml64-Specific Directives +## ml64-specific directives You can use the following ml64-specific directives in your assembler-language source code that targets x64: - [`.ALLOCSTACK`](dot-allocstack.md) - - [`.ENDPROLOG`](dot-endprolog.md) - - [`.PUSHFRAME`](dot-pushframe.md) - - [`.PUSHREG`](dot-pushreg.md) - - [`.SAVEREG`](dot-savereg.md) - - [`.SAVEXMM128`](dot-savexmm128.md) - - [`.SETFRAME`](dot-setframe.md) -The [`PROC`](proc.md) directive has also been updated for use with ml64.exe. +The [`PROC`](proc.md) directive is also updated for use with ml64.exe. + +## Unwind Version 3 directives (experimental) + +> [!IMPORTANT] +> Unwind Version 3 support is experimental and is subject to change. + +Unwind Version 3 is an updated unwind code scheme for x64 that generates richer stack unwind metadata. It introduces new epilogue directives, extends register support, and changes the directive ordering model. + +### Enable Unwind Version 3 + +Assemble with the `/unwindv3` option: `ml64 /unwindv3 filename.asm /link /entry:FunctionName` + +### Key differences from Version 1 + +| Feature | Version 1 | Version 3 | +|---|---|---| +| Directive ordering | Directive follows instruction | Directive precedes instruction | +| Unwind codes | `UWOP_*` | `WOD_*` | +| `.ALLOCSTACK` size variants | 2 (`UWOP_ALLOC_SMALL`, `UWOP_ALLOC_LARGE`) | 3 (adds `WOD_ALLOC_HUGE` for > 32 KB) | +| `.PUSHREG` register range | R0–R15 | R0–R31 | +| Epilogue recording | Optional | Mandatory (`.BEGINEPILOG`/`.ENDEPILOG` required) | +| Register-pair push/pop | Not supported | `.PUSH2REG`/`.POP2REG` directives | + +Epilogue recording is mandatory in Version 3: `.BEGINEPILOG` and `.ENDEPILOG` must surround the epilogue instructions. Without them, no epilogue unwind codes are emitted. + +> [!NOTE] +> In Unwind Version 1 the directives come after the instruction. In Unwind Version 3, the directives come before the instruction. + +For a complete list of Version 3 directives, see [x64 Unwind Version 3 directives](directives-reference.md) and [@UnwindVersion](at-unwindversion.md). ## 32-Bit Address Mode (Address Size Override) diff --git a/docs/assembler/masm/ml-and-ml64-command-line-reference.md b/docs/assembler/masm/ml-and-ml64-command-line-reference.md index e4ea469e36f..990ae9b5d2a 100644 --- a/docs/assembler/masm/ml-and-ml64-command-line-reference.md +++ b/docs/assembler/masm/ml-and-ml64-command-line-reference.md @@ -1,9 +1,10 @@ --- title: "ML and ML64 command-line reference" description: "Reference guide to the Microsoft MASM ML and ML64 assembler command-line options." -ms.date: 7/3/2023 -f1_keywords: ["ML"] -helpviewer_keywords: ["/W* MASM compiler option", "/c MASM compiler option", "/EP MASM compiler option", "/Fe MASM compiler option", "/Zp MASM compiler option", "/AT MASM compiler option", "/Zm MASM compiler option", "/Sf MASM compiler option", "/Sp MASM compiler option", "/w MASM compiler option", "/Fl MASM compiler option", "/coff MASM compiler option", "/St MASM compiler option", "/Cx MASM compiler option", "/Sl MASM compiler option", "/Cu MASM compiler option", "MASM (Microsoft Macro Assembler), ML command-line reference", "/FPi MASM compiler option", "/Zf MASM compiler option", "ML environment variable", "/Fr MASM compiler option", "/help MASM compiler option", "/Sa MASM compiler option", "/Zd MASM compiler option", "/I MASM compiler option", "/? MASM compiler option", "/Bl MASM compiler option", "/Fm MASM compiler option", "/Fo MASM compiler option", "command-line reference [ML]", "/Sn MASM compiler option", "/Gd MASM compiler option", "/D* MASM compiler option", "environment variables, ML", "/Gc MASM compiler option", "/F* MASM compiler option", "/Sc MASM compiler option", "/H MASM compiler option", "/Zs MASM compiler option", "/omf MASM compiler option", "/quiet MASM compiler option", "/Sg MASM compiler option", "/Cp MASM compiler option", "/Zi MASM compiler option", "/nologo MASM compiler option", "/Sx MASM compiler option", "/WX MASM compiler option", "/Ss MASM compiler option", "command line, reference [ML]", "/Ta MASM compiler option"] +ms.date: 04/29/2026 +ai-usage: ai-assisted +f1_keywords: ["ML", "/unwindv3"] +helpviewer_keywords: ["/W* MASM compiler option", "/c MASM compiler option", "/EP MASM compiler option", "/Fe MASM compiler option", "/Zp MASM compiler option", "/AT MASM compiler option", "/Zm MASM compiler option", "/Sf MASM compiler option", "/Sp MASM compiler option", "/w MASM compiler option", "/Fl MASM compiler option", "/coff MASM compiler option", "/St MASM compiler option", "/Cx MASM compiler option", "/Sl MASM compiler option", "/Cu MASM compiler option", "MASM (Microsoft Macro Assembler), ML command-line reference", "/FPi MASM compiler option", "/Zf MASM compiler option", "ML environment variable", "/Fr MASM compiler option", "/help MASM compiler option", "/Sa MASM compiler option", "/Zd MASM compiler option", "/I MASM compiler option", "/? MASM compiler option", "/Bl MASM compiler option", "/Fm MASM compiler option", "/Fo MASM compiler option", "command-line reference [ML]", "/Sn MASM compiler option", "/Gd MASM compiler option", "/D* MASM compiler option", "environment variables, ML", "/Gc MASM compiler option", "/F* MASM compiler option", "/Sc MASM compiler option", "/H MASM compiler option", "/Zs MASM compiler option", "/omf MASM compiler option", "/quiet MASM compiler option", "/Sg MASM compiler option", "/Cp MASM compiler option", "/Zi MASM compiler option", "/nologo MASM compiler option", "/Sx MASM compiler option", "/WX MASM compiler option", "/Ss MASM compiler option", "command line, reference [ML]", "/Ta MASM compiler option", "/unwindv3 MASM compiler option"] --- # ML and ML64 command-line reference @@ -61,6 +62,7 @@ The options listed in the following table: | **`/St`** *`text`* | Specifies title for source listing. Same as [`TITLE`](title.md) text. | | **`/Sx`** | Turns on false conditionals in listing. | | **`/Ta`** *`filename`* | Assembles source file whose name doesn't end with the *`.asm`* extension. | +| **`/unwindv3`** | Enables experimental Unwind Version 3 unwind directive support. When specified, V3 unwind directives must appear *before* their associated instruction (the reverse of V1 behavior), epilogue recording via [`.BEGINEPILOG`](dot-beginepilog.md)/[`.ENDEPILOG`](dot-endepilog.md) is required, and the predefined macro [`@UnwindVersion`](at-unwindversion.md) returns `3`. For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md).
      Only available in ml64.exe. | | **`/w`** | Same as **`/W0 /WX`**. | | **`/W`** *`level`* | Sets the warning level, where *`level`* = 0, 1, 2, or 3. | | **`/WX`** | If warnings are generated, returns an error code. | diff --git a/docs/assembler/masm/proc.md b/docs/assembler/masm/proc.md index 9eb65fc3770..222b437a4a9 100644 --- a/docs/assembler/masm/proc.md +++ b/docs/assembler/masm/proc.md @@ -12,8 +12,8 @@ Marks start and end of a procedure block called *label*. The statements in the b ## Syntax -> *label* **PROC** ⟦*distance*⟧ ⟦*language-type*⟧ ⟦ **PUBLIC** | **PRIVATE** | **EXPORT** ⟧ ⟦__\<__*prologuearg*__>__⟧ ⟦**USES** *reglist*⟧ ⟦__,__ *parameter* ⟦__:__*tag*⟧ ...⟧\ -> ⟦**FRAME** ⟦__:__*ehandler-address*⟧ ⟧\ +> *label* `PROC` ⟦*distance*⟧ ⟦*language-type*⟧ ⟦ `PUBLIC` | `PRIVATE` | `EXPORT` ⟧ ⟦__\<__*prologuearg*__>__⟧ ⟦`USES` *reglist*⟧ ⟦__,__ *parameter* ⟦__:__*tag*⟧ ...⟧\ +> ⟦`FRAME` ⟦__:__*ehandler-address*⟧ ⟧\ > *statements*\ > *label* **ENDP** @@ -21,9 +21,9 @@ Marks start and end of a procedure block called *label*. The statements in the b The ⟦*distance*⟧ and ⟦*language-type*⟧ arguments are valid only in 32-bit MASM. -⟦**FRAME** ⟦__:__*ehandler-address*⟧ ⟧ is only valid with ml64.exe, and causes MASM to generate a function table entry in .pdata and unwind information in .xdata for a function's structured exception handling unwind behavior. +⟦`FRAME` ⟦__:__*ehandler-address*⟧ ⟧ is only valid with ml64.exe, and causes MASM to generate a function table entry in .pdata and unwind information in .xdata for a function's structured exception handling unwind behavior. -When the **FRAME** attribute is used, it must be followed by an [.ENDPROLOG](dot-endprolog.md) directive. +When the `FRAME` attribute is used, it must be followed by an [.ENDPROLOG](dot-endprolog.md) directive. See [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md) for more information on using ml64.exe. @@ -49,7 +49,7 @@ _text ENDS END ``` -The above code will emit the following function table and unwind information: +The above code emits the following function table and unwind information: ```Output FileHeader->Machine 34404 diff --git a/docs/assembler/masm/symbols-reference.md b/docs/assembler/masm/symbols-reference.md index c7fd4af9f81..a6c296fc5c1 100644 --- a/docs/assembler/masm/symbols-reference.md +++ b/docs/assembler/masm/symbols-reference.md @@ -1,9 +1,9 @@ --- description: "Learn more about: Symbols reference" title: "Symbols reference" -ms.date: 07/15/2020 +ms.date: 05/04/2026 helpviewer_keywords: ["MASM (Microsoft Macro Assembler), symbols reference"] -ms.assetid: 96ed59cc-dafa-4299-bb2e-9c7c3f496491 +ai-usage: ai-assisted --- # Symbols reference @@ -30,6 +30,9 @@ ms.assetid: 96ed59cc-dafa-4299-bb2e-9c7c3f496491 :::column span=""::: [`@Interface`](at-interface.md) :::column-end::: + :::column span=""::: + [`@UnwindVersion`](at-unwindversion.md) + :::column-end::: :::column span=""::: [`@Version`](at-version.md) :::column-end::: diff --git a/docs/assembler/toc.yml b/docs/assembler/toc.yml index 8f8b923a9c3..1e90a1e19d3 100644 --- a/docs/assembler/toc.yml +++ b/docs/assembler/toc.yml @@ -117,6 +117,8 @@ items: href: ../assembler/masm/dot-alpha.md - name: ASSUME href: ../assembler/masm/assume.md + - name: .BEGINEPILOG + href: ../assembler/masm/dot-beginepilog.md - name: .BREAK href: ../assembler/masm/dot-break.md - name: BYTE @@ -171,6 +173,8 @@ items: href: ../assembler/masm/end-masm.md - name: .ENDIF href: ../assembler/masm/dot-endif.md + - name: .ENDEPILOG + href: ../assembler/masm/dot-endepilog.md - name: ENDM href: ../assembler/masm/endm.md - name: ENDP @@ -225,6 +229,8 @@ items: href: ../assembler/masm/forc.md - name: .FPO href: ../assembler/masm/dot-fpo.md + - name: .FREESTACK + href: ../assembler/masm/dot-freestack.md - name: FWORD href: ../assembler/masm/fword.md - name: GOTO @@ -315,8 +321,14 @@ items: href: ../assembler/masm/oword.md - name: PAGE href: ../assembler/masm/page.md + - name: .POP2REG + href: ../assembler/masm/dot-pop2reg.md - name: POPCONTEXT href: ../assembler/masm/popcontext.md + - name: .POPREG + href: ../assembler/masm/dot-popreg.md + - name: .POPFRAME + href: ../assembler/masm/dot-popframe.md - name: PROC href: ../assembler/masm/proc.md - name: PROTO @@ -325,6 +337,8 @@ items: href: ../assembler/masm/public-masm.md - name: PURGE href: ../assembler/masm/purge.md + - name: .PUSH2REG + href: ../assembler/masm/dot-push2reg.md - name: PUSHCONTEXT href: ../assembler/masm/pushcontext.md - name: .PUSHFRAME @@ -349,6 +363,10 @@ items: href: ../assembler/masm/repeat.md - name: REPT href: ../assembler/masm/rept.md + - name: .RESTOREREG + href: ../assembler/masm/dot-restorereg.md + - name: .RESTOREXMM128 + href: ../assembler/masm/dot-restorexmm128.md - name: .SAFESEH href: ../assembler/masm/dot-safeseh.md - name: .SALL @@ -401,6 +419,8 @@ items: href: ../assembler/masm/typedef-masm.md - name: UNION href: ../assembler/masm/union.md + - name: .UNSETFRAME + href: ../assembler/masm/dot-unsetframe.md - name: .UNTIL href: ../assembler/masm/dot-until.md - name: .UNTILCXZ @@ -479,6 +499,8 @@ items: href: ../assembler/masm/at-substr.md - name: "@Time" href: ../assembler/masm/at-time.md + - name: "@UnwindVersion" + href: ../assembler/masm/at-unwindversion.md - name: "@Version" href: ../assembler/masm/at-version.md - name: "@WordSize" From f2cbfff884902039d074ed50dd7296f69a1e7dd2 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 11 May 2026 22:05:51 -0700 Subject: [PATCH 456/619] Spgo (#6711) Address PR feedback. Needs to publish in the morning. --- docs/build/profile-guided-optimizations.md | 6 +++--- docs/build/sample-profile-guided-optimization.md | 15 ++++++++++----- docs/build/toc.yml | 8 ++++++++ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/docs/build/profile-guided-optimizations.md b/docs/build/profile-guided-optimizations.md index b953ba33dd7..d171360f143 100644 --- a/docs/build/profile-guided-optimizations.md +++ b/docs/build/profile-guided-optimizations.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Profile-guided optimizations" title: "Profile-guided optimizations" -ms.date: "04/23/2019" +ms.date: 05/11/2026 helpviewer_keywords: ["profile-guided optimizations", "optimization, profile-guided [C++]"] --- # Profile-guided optimizations @@ -30,7 +30,7 @@ To use profile-guided optimization, follow these steps to optimize your app: - Profile the application. - Each time a profiled EXE session ends, or a profiled DLL unloads, the process creates a `appname!N.pgc` file. A `.pgc` file contains information about a particular application test run. *appname* is the name of your app, and *N* is a number starting with 1. It increments based on the number of other `appname!N.pgc` files in the directory. You can delete a `.pgc` file if the test run doesn't represent a scenario you want to optimize. + Each time a profiled EXE session ends, or a profiled DLL unloads, the process creates an `appname!N.pgc` file. A `.pgc` file contains information about a particular application test run. *appname* is the name of your app, and *N* is a number starting with 1. It increments based on the number of other `appname!N.pgc` files in the directory. You can delete a `.pgc` file if the test run doesn't represent a scenario you want to optimize. During a test run, you can force closure of the currently open `.pgc` file and the creation of a new `.pgc` file by using the [pgosweep](pgosweep.md) utility (for example, when the end of a test scenario doesn't coincide with application shutdown). @@ -75,7 +75,7 @@ Profile-guided optimizations include these checks and improvements: To learn more about these environment variables, functions, and tools you can use in profile-guided optimizations, see the following resources: -[Environment variables for profile-guided optimizations](environment-variables-for-profile-guided-optimizations.md) +[Environment variables for profile-guided optimizations](environment-variables-for-profile-guided-optimizations.md)\ These variables specify the run-time behavior of testing scenarios. They're now deprecated and replaced by new linker options. This document shows you how to move from the environment variables to the linker options. [PgoAutoSweep](pgoautosweep.md)\ diff --git a/docs/build/sample-profile-guided-optimization.md b/docs/build/sample-profile-guided-optimization.md index 8fcc4c4f3a8..084be1122e3 100644 --- a/docs/build/sample-profile-guided-optimization.md +++ b/docs/build/sample-profile-guided-optimization.md @@ -301,11 +301,13 @@ This message appears on the first `/spgo` build. The linker creates the SPD file | `/link /debug` | Pass `/debug` to the linker to generate debug information (`.pdb`), which xperf uses to map profiling samples to source code. | | `/spgo` | SPGO linker flag—embeds SPGO metadata in the binary and creates an empty `textCount.spd` file alongside the executable. | -> **Note:** `/spgo` is a linker flag. Pass it to the linker via `/link /spgo` in the `cl` command. +> [!NOTE] +> `/spgo` is a linker flag. Pass it to the linker via `/link /spgo` in the `cl` command. The `/spgo` flag doesn't optimize the binary yet. It prepares it for profiling. The optimization happens in [Rebuild textCount with /spdin](#rebuild-textcount-with-spdin) after the SPD is populated with real runtime data. -> **Note:** To write the SPD to a specific location, add the optional `/spd:` linker flag. For example: `/link /debug /spgo /spd:.\profiles\textCount.spd`. If you omit this flag, the SPD is created alongside the `.exe`. +> [!NOTE] +> To write the SPD to a specific location, add the optional `/spd:` linker flag. For example: `/link /debug /spgo /spd:.\profiles\textCount.spd`. If you omit this flag, the SPD is created alongside the `.exe`. ## Choose your profiling method @@ -505,7 +507,9 @@ SPDConvert.exe /mode:IP textCount.spd textCount.spt `/mode:IP` tells `SPDConvert` to interpret the SPT as containing instruction-pointer samples. -> **Warning:** Using the wrong mode for your data type can produce an empty or malformed SPD. If you profiled with LBR, use `/mode:LBR`. If you profiled with PMC or OS timer, use `/mode:IP`. The `SPTAggregate` summary output from [Convert the ETL file to SPT](#convert-the-etl-file-to-spt) shows which sample types were collected and confirms the correct mode to use. +> [!WARNING] +> Using the wrong mode for your data type can produce an empty or malformed SPD. If you profiled with LBR, use `/mode:LBR`. +> If you profiled with PMC or OS timer, use `/mode:IP`. The `SPTAggregate` summary output from [Convert the ETL file to SPT](#convert-the-etl-file-to-spt) shows which sample types were collected and confirms the correct mode to use. After running `SPDConvert`, confirm that `textCount.spd` was created (or updated) in the current directory. @@ -554,7 +558,8 @@ cl /EHsc /GL /O2 textCount.cpp /link /debug /spgo /spdin:textCount.spd The command still includes `/spgo`. It generates a new SPD file alongside the optimized binary, which you can use as the starting point for subsequent profiling iterations. -> **Warning:** The SPD file is associated with the exact binary it profiles against. If you rebuild `textCount` without `/spdin`, or rebuild from changed source, you must generate a new SPD file. The existing one doesn't match the new binary's GUID, and the linker won't use it. +> [!WARNING] +> The SPD file is associated with the exact binary it profiles against. If you rebuild `textCount` without `/spdin`, or rebuild from changed source, you must generate a new SPD file. The existing one doesn't match the new binary's GUID, and the linker won't use it. After the rebuild with `/spdin`, the linker outputs statistics about how much of your code was optimized using profile data. For example: @@ -630,7 +635,7 @@ wpr -start CPU.light -filemode textCount.exe < warAndPeace.txt wpr -stop spgo_data.etl ``` -For more information on using WPR, see [Using Windows Performance Recorder](/windows-hardware/test/wpt/recording-pmu-events) +For more information on using WPR, see [Using Windows Performance Recorder](/windows-hardware/test/wpt/recording-pmu-events). ### SPD distribution diff --git a/docs/build/toc.yml b/docs/build/toc.yml index 345c6fa37fe..d9dcd53f723 100644 --- a/docs/build/toc.yml +++ b/docs/build/toc.yml @@ -1113,6 +1113,14 @@ items: href: ../build/reference/section-specify-section-attributes.md - name: /SOURCELINK (Include Sourcelink file in PDB) href: ../build/reference/sourcelink.md + - name: /SPD + href: ../build/reference/spd-specify-sample-profile-database.md + - name: /SPDEMBED + href: ../build/reference/spdembed-embed-sample-profile-database.md + - name: /SPDIN + href: ../build/reference/spdin-use-sample-profile-database.md + - name: /SPGO + href: ../build/reference/spgo-enable-sample-profile-guided-optimization.md - name: /STACK (Stack allocations) href: ../build/reference/stack-stack-allocations.md - name: /STUB (MS-DOS stub file name) From 914fb42b812623a3822545d0fdad2a7d95d9536d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 12 May 2026 10:29:19 -0700 Subject: [PATCH 457/619] update f1 metadata and fix formatting --- docs/build/sptdump.md | 4 ++-- docs/preprocessor/predefined-macros.md | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/build/sptdump.md b/docs/build/sptdump.md index ac885470d62..e7605bdb0ff 100644 --- a/docs/build/sptdump.md +++ b/docs/build/sptdump.md @@ -66,8 +66,8 @@ The SPT header is 32 bytes: - `[0x1C-0x1D]` ProgramIdsUsed (uint16 LE) = number of program IDs (often just 1) - `[0x1E-0x1F]` ProgramIdCapacity (uint16 LE) = capacity in count (not bytes) for program IDs (typically 0x100) -The StringTable immediately follows the header at the specified offset. It contains a null-terminated UTF-8 binary filename. -The ProgramIdTable follows the StringTable at the specified offset. Each entry is 24 bytes: 16-byte Rich Signature Data Stream (RSDS) GUID + 4-byte age + 4-byte string index into StringTable. +The StringTable immediately follows the header at the specified offset. It contains a null-terminated UTF-8 binary filename.\ +The ProgramIdTable follows the StringTable at the specified offset. Each entry is 24 bytes: 16-byte Rich Signature Data Stream (RSDS) GUID + 4-byte age + 4-byte string index into StringTable.\ The data stream starts at `ProgramIdTableOffset + (ProgramIdCapacity * 24)`, and starts with a `SPT_OP_BINARY_ID` opcode. **SPT Opcodes** diff --git a/docs/preprocessor/predefined-macros.md b/docs/preprocessor/predefined-macros.md index 40a086752f7..4c1b0170f87 100644 --- a/docs/preprocessor/predefined-macros.md +++ b/docs/preprocessor/predefined-macros.md @@ -2,9 +2,9 @@ title: "Predefined macros" description: "Lists and describes the Microsoft C++ compiler predefined preprocessor macros." ms.custom: "update_every_version" -ms.date: 06/18/2025 -f1_keywords: ["__ARM_ARCH", "_ATL_VER", "__ATOM__", "__AVX__", "__AVX2__", "__AVX512BW__", "__AVX512CD__", "__AVX512DQ__", "__AVX512F__", "__AVX512VL__", "_CHAR_UNSIGNED", "__CLR_VER", "_CONTROL_FLOW_GUARD", "__COUNTER__", "__cplusplus", "__cplusplus_cli", "__cplusplus_winrt", "_CPPRTTI", "_CPPUNWIND", "__DATE__", "_DEBUG", "_DLL", "__FILE__", "__FUNCDNAME__", "__FUNCSIG__", "__FUNCTION__", "_INTEGRAL_MAX_BITS", "_ISO_VOLATILE", "_KERNEL_MODE", "__LINE__", "_M_AMD64", "_M_ARM", "_M_ARM_ARMV7VE", "_M_ARM_FP", "_M_ARM64", "_M_CEE", "_M_CEE_PURE", "_M_CEE_SAFE", "_M_FP_EXCEPT", "_M_FP_FAST", "_M_FP_PRECISE", "_M_FP_STRICT", "_M_IX86", "_M_IX86_FP", "_M_X64", "_MANAGED", "_MFC_VER", "_MSC_BUILD", "_MSC_EXTENSIONS", "_MSC_FULL_VER", "_MSC_VER", "_MSVC_LANG", "__MSVC_RUNTIME_CHECKS", "_MT", "_NATIVE_WCHAR_T_DEFINED", "_NO_SIZED_DEALLOCATION", "_OPENMP", "_PREFAST_", "_RESUMABLE_FUNCTIONS_SUPPORTED", "_RTC_CONVERSION_CHECKS_ENABLED", "__SANITIZE_ADDRESS__", "__STDC__", "__STDC_HOSTED__", "__STDC_NO_ATOMICS__", "__STDC_NO_COMPLEX__", "__STDC_NO_THREADS__", "__STDC_NO_VLA__", "__STDC_VERSION__", "__STDCPP_DEFAULT_NEW_ALIGNMENT__", "__STDCPP_THREADS__", "__TIME__", "__TIMESTAMP__", "__VA_ARGS__", "_VC_NODEFAULTLIB", "_WCHAR_T_DEFINED", "_WIN32", "_WIN64", "_WINRT_DLL"] -helpviewer_keywords: ["__ARM_ARCH macro", "timestamps, preprocessor macro", "cl.exe compiler, version number", "version numbers, C/C++ compiler (cl.exe)", "macros, predefined C++", "preprocessor, macros", "predefined macros", "_ATL_VER macro", "__ATOM__ macro", "__AVX__ macro", "__AVX2__ macro", "__AVX512BW__ macro", "__AVX512CD__ macro", "__AVX512DQ__ macro", "__AVX512F__ macro", "__AVX512VL__ macro", "_CHAR_UNSIGNED macro", "__CLR_VER macro", "_CONTROL_FLOW_GUARD macro", "__COUNTER__ macro", "__cplusplus macro", "__cplusplus_cli macro", "__cplusplus_winrt macro", "_CPPRTTI macro", "_CPPUNWIND macro", "__DATE__ macro", "_DEBUG macro", "_DLL macro", "__FILE__ macro", "__FUNCDNAME__ macro", "__FUNCSIG__ macro", "__FUNCTION__ macro", "_INTEGRAL_MAX_BITS macro", "_ISO_VOLATILE macro", "_KERNEL_MODE macro", "__LINE__ macro", "_M_AMD64 macro", "_M_ARM macro", "_M_ARM_ARMV7VE macro", "_M_ARM_FP macro", "_M_ARM64 macro", "_M_ARM64EC macro", "_M_CEE macro", "_M_CEE_PURE macro", "_M_CEE_SAFE macro", "_M_FP_EXCEPT macro", "_M_FP_FAST macro", "_M_FP_PRECISE macro", "_M_FP_STRICT macro", "_M_IX86 macro", "_M_IX86_FP macro", "_M_X64 macro", "_MANAGED macro", "_MFC_VER macro", "_MSC_BUILD macro", "_MSC_EXTENSIONS macro", "_MSC_FULL_VER macro", "_MSC_VER macro", "_MSVC_LANG macro", "__MSVC_RUNTIME_CHECKS macro", "_MT macro", "_NATIVE_WCHAR_T_DEFINED macro", "_NO_SIZED_DEALLOCATION macro", "_OPENMP macro", "_PREFAST_ macro", "_RESUMABLE_FUNCTIONS_SUPPORTED macro", "_RTC_CONVERSION_CHECKS_ENABLED macro", "__SANITIZE_ADDRESS__ macro", "__STDC__ macro", "__STDC_HOSTED__ macro", "__STDC_NO_ATOMICS__ macro", "__STDC_NO_COMPLEX__ macro", "__STDC_NO_THREADS__ macro", "__STDC_NO_VLA__ macro", "__STDC_VERSION__ macro", "__STDCPP_DEFAULT_NEW_ALIGNMENT__", "__STDCPP_THREADS__ macro", "__TIME__ macro", "__TIMESTAMP__ macro", "__VA_ARGS__ macro", "_VC_NODEFAULTLIB macro", "_WCHAR_T_DEFINED macro", "_WIN32 macro", "_WIN64 macro", "_WINRT_DLL macro", "__func__ identifier"] +ms.date: 05/12/2026 +f1_keywords: ["__APX_F__", "__ARM_ARCH", "_ATL_VER", "__ATOM__", "__AVX__", "__AVX2__", "__AVX512BW__", "__AVX512CD__", "__AVX512DQ__", "__AVX512F__", "__AVX512VL__", "__CCMP__", "__CF__", "_CHAR_UNSIGNED", "__CLR_VER", "_CONTROL_FLOW_GUARD", "__COUNTER__", "__cplusplus", "__cplusplus_cli", "__cplusplus_winrt", "_CPPRTTI", "_CPPUNWIND", "__DATE__", "_DEBUG", "_DLL", "__EGPR__", "__FILE__", "__FUNCDNAME__", "__FUNCSIG__", "__FUNCTION__", "_INTEGRAL_MAX_BITS", "_ISO_VOLATILE", "_KERNEL_MODE", "__LINE__", "_M_AMD64", "_M_ARM", "_M_ARM_ARMV7VE", "_M_ARM_FP", "_M_ARM64", "_M_CEE", "_M_CEE_PURE", "_M_CEE_SAFE", "_M_FP_EXCEPT", "_M_FP_FAST", "_M_FP_PRECISE", "_M_FP_STRICT", "_M_IX86", "_M_IX86_FP", "_M_X64", "_MANAGED", "_MFC_VER", "_MSC_BUILD", "_MSC_EXTENSIONS", "_MSC_FULL_VER", "_MSC_VER", "_MSVC_LANG", "__MSVC_RUNTIME_CHECKS", "_MT", "_NATIVE_WCHAR_T_DEFINED", "__NDD__", "__NF__", "_NO_SIZED_DEALLOCATION", "_OPENMP", "__PPX__", "_PREFAST_", "__PUSH2POP2__", "_RESUMABLE_FUNCTIONS_SUPPORTED", "_RTC_CONVERSION_CHECKS_ENABLED", "__SANITIZE_ADDRESS__", "__STDC__", "__STDC_HOSTED__", "__STDC_NO_ATOMICS__", "__STDC_NO_COMPLEX__", "__STDC_NO_THREADS__", "__STDC_NO_VLA__", "__STDC_VERSION__", "__STDCPP_DEFAULT_NEW_ALIGNMENT__", "__STDCPP_THREADS__", "__TIME__", "__TIMESTAMP__", "__VA_ARGS__", "_VC_NODEFAULTLIB", "_WCHAR_T_DEFINED", "_WIN32", "_WIN64", "_WINRT_DLL", "__ZU__"] +helpviewer_keywords: ["__APX_F__ macro", "__ARM_ARCH macro", "_ATL_VER macro", "__ATOM__ macro", "__AVX__ macro", "__AVX2__ macro", "__AVX512BW__ macro", "__AVX512CD__ macro", "__AVX512DQ__ macro", "__AVX512F__ macro", "__AVX512VL__ macro", "__CCMP__ macro", "__CF__ macro", "_CHAR_UNSIGNED macro", "cl.exe compiler, version number", "__CLR_VER macro", "_CONTROL_FLOW_GUARD macro", "__COUNTER__ macro", "__cplusplus macro", "__cplusplus_cli macro", "__cplusplus_winrt macro", "_CPPRTTI macro", "_CPPUNWIND macro", "__DATE__ macro", "_DEBUG macro", "_DLL macro", "__EGPR__ macro", "__FILE__ macro", "__func__ identifier", "__FUNCDNAME__ macro", "__FUNCSIG__ macro", "__FUNCTION__ macro", "_INTEGRAL_MAX_BITS macro", "_ISO_VOLATILE macro", "_KERNEL_MODE macro", "__LINE__ macro", "_M_AMD64 macro", "_M_ARM macro", "_M_ARM_ARMV7VE macro", "_M_ARM_FP macro", "_M_ARM64 macro", "_M_ARM64EC macro", "_M_CEE macro", "_M_CEE_PURE macro", "_M_CEE_SAFE macro", "_M_FP_EXCEPT macro", "_M_FP_FAST macro", "_M_FP_PRECISE macro", "_M_FP_STRICT macro", "_M_IX86 macro", "_M_IX86_FP macro", "_M_X64 macro", "macros, predefined C++", "_MANAGED macro", "_MFC_VER macro", "_MSC_BUILD macro", "_MSC_EXTENSIONS macro", "_MSC_FULL_VER macro", "_MSC_VER macro", "_MSVC_LANG macro", "__MSVC_RUNTIME_CHECKS macro", "_MT macro", "_NATIVE_WCHAR_T_DEFINED macro", "__NDD__ macro", "__NF__ macro", "_NO_SIZED_DEALLOCATION macro", "_OPENMP macro", "__PPX__ macro", "predefined macros", "_PREFAST_ macro", "preprocessor, macros", "__PUSH2POP2__ macro", "_RESUMABLE_FUNCTIONS_SUPPORTED macro", "_RTC_CONVERSION_CHECKS_ENABLED macro", "__SANITIZE_ADDRESS__ macro", "__STDC__ macro", "__STDC_HOSTED__ macro", "__STDC_NO_ATOMICS__ macro", "__STDC_NO_COMPLEX__ macro", "__STDC_NO_THREADS__ macro", "__STDC_NO_VLA__ macro", "__STDC_VERSION__ macro", "__STDCPP_DEFAULT_NEW_ALIGNMENT__", "__STDCPP_THREADS__ macro", "__TIME__ macro", "__TIMESTAMP__ macro", "timestamps, preprocessor macro", "__VA_ARGS__ macro", "_VC_NODEFAULTLIB macro", "version numbers, C/C++ compiler (cl.exe)", "_WCHAR_T_DEFINED macro", "_WIN32 macro", "_WIN64 macro", "_WINRT_DLL macro", "__ZU__ macro"] ms.assetid: 1cc5f70a-a225-469c-aed0-fe766238e23f no-loc: [_ATL_VER, __ATOM__, __AVX__, __AVX2__, __AVX512BW__, __AVX512CD__, __AVX512DQ__, __AVX512F__, __AVX512VL__, _CHAR_UNSIGNED, __CLR_VER, _CONTROL_FLOW_GUARD, __COUNTER__, __cplusplus, __cplusplus_cli, __cplusplus_winrt, _CPPRTTI, _CPPUNWIND, __DATE__, _DEBUG, _DLL, __FILE__, __FUNCDNAME__, __FUNCSIG__, __FUNCTION__, _INTEGRAL_MAX_BITS, _ISO_VOLATILE, _KERNEL_MODE, __LINE__, _M_AMD64, _M_ARM, _M_ARM_ARMV7VE, _M_ARM_FP, _M_ARM64, _M_ARM64EC, _M_CEE, _M_CEE_PURE, _M_CEE_SAFE, _M_FP_EXCEPT, _M_FP_FAST, _M_FP_PRECISE, _M_FP_STRICT, _M_IX86, _M_IX86_FP, _M_X64, _MANAGED, _MFC_VER, _MSC_BUILD, _MSC_EXTENSIONS, _MSC_FULL_VER, _MSC_VER, _MSVC_LANG, __MSVC_RUNTIME_CHECKS, _MT, _NATIVE_WCHAR_T_DEFINED, _NO_SIZED_DEALLOCATION, _OPENMP, _PREFAST_, _RESUMABLE_FUNCTIONS_SUPPORTED, _RTC_CONVERSION_CHECKS_ENABLED, __SANITIZE_ADDRESS__, __STDC__, __STDC_HOSTED__, __STDC_NO_ATOMICS__, __STDC_NO_COMPLEX__, __STDC_NO_THREADS__, __STDC_NO_VLA__, __STDC_VERSION__, __STDCPP_DEFAULT_NEW_ALIGNMENT__, __STDCPP_THREADS__, __TIME__, __TIMESTAMP__, __VA_ARGS__, _VC_NODEFAULTLIB, _WCHAR_T_DEFINED, _WIN32, _WIN64, _WINRT_DLL, __func__] --- From b57362821ac18f7580a4e7067eb4b7d15cc10e62 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 12 May 2026 10:35:17 -0700 Subject: [PATCH 458/619] tech review --- docs/overview/what-s-new-for-msvc.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 3f9c4f0e595..41aa00b0d56 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -1,7 +1,7 @@ --- title: "What's new for MSVC Build Tools" description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." -ms.date: 05/11/2026 +ms.date: 05/12/2026 ms.service: "visual-cpp" ms.subservice: "cpp-lang" ms.custom: intro-whats-new @@ -25,7 +25,6 @@ MSVC Build Tools version 14.51 preserves binary compatibility with code built wi |---|---| | What's new for C++ developers | [MSVC Build Tools version 14.51 Release Candidate Now Available](https://devblogs.microsoft.com/cppblog/msvc-build-tools-version-14-51-release-candidate-now-available/) | | Standard Library (STL) improvements | [STL Changelog MSVC Build Tools 14.51](https://github.com/microsoft/STL/wiki/Changelog#msvc-build-tools-1451) | -| C++23 language updates | [C++23 Support in MSVC Build Tools 14.51](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51) | | C++ language conformance improvements | [C/C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C++ (MSVC) Build Tools](msvc-conformance-improvements.md) | Here's a quick highlight of some of the new features in MSVC Build Tools version 14.51: From 9e1001b22572dab470dcc5b9f5ae804444b29479 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 12 May 2026 10:46:16 -0700 Subject: [PATCH 459/619] acrolinx --- docs/overview/msvc-conformance-improvements.md | 10 +++++----- docs/overview/what-s-new-for-msvc.md | 8 +++++--- docs/porting/features-deprecated-in-visual-studio.md | 10 +++++----- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/docs/overview/msvc-conformance-improvements.md b/docs/overview/msvc-conformance-improvements.md index 039b3325444..71c66d185d9 100644 --- a/docs/overview/msvc-conformance-improvements.md +++ b/docs/overview/msvc-conformance-improvements.md @@ -1,13 +1,13 @@ --- title: "/C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C++ (MSVC) Build Tools" description: "Summary of conformance improvements in Microsoft C/C++ (MSVC)" -ms.date: 05/08/2026 +ms.date: 05/12/2026 ms.service: "visual-cpp" ms.subservice: "cpp-lang" --- # C/C++ Conformance improvements, behavior changes, and bug fixes in Microsoft C++ (MSVC) Build Tools -Microsoft C++ (MSVC) Build Tools makes conformance improvements and bug fixes in every release. Starting with Visual Studio 2026 version 18.0, major improvements are organized by MSVC Build Tools version number. To jump directly to the changes for a specific version, use the **In this article** links at the top of this article. +We make conformance improvements and bug fixes in every release of Microsoft C++ (MSVC) Build Tools. Starting with Visual Studio 2026 version 18.0, we organize major improvements by MSVC Build Tools version number. Use the **In this article** links at the top of this article to jump directly to the changes for a specific version. For changes in earlier versions of Visual Studio: @@ -31,7 +31,7 @@ Key highlights of this release include: - Improved `consteval` function handling with default-enabled experimental features - New standard library headers `` and `` -For more information about library features and additional updates, see [C++23 Support in MSVC Build Tools 14.51](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51) and [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog). +For more information about library features and other updates, see [C++23 Support in MSVC Build Tools 14.51](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51) and [STL Changelog](https://github.com/microsoft/STL/wiki/Changelog). ### P2647R1: Static constexpr variables in constexpr functions @@ -49,7 +49,7 @@ This feature improves both compile-time evaluation and run-time optimization. Pr ### Other C++23 features -Other C++23 features implemented in this release include Unicode support improvements, labels at the end of compound statements for C compatibility, Class Template Argument Deduction (CTAD) from inherited constructors, and meaningful exports for modules. For more details and related Core Working Group (CWG) issue resolutions, see the [C++23 Support in MSVC Build Tools 14.51](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51). +Other C++23 features implemented in this release include Unicode support improvements, labels at the end of compound statements for C compatibility, Class Template Argument Deduction (CTAD) from inherited constructors, and meaningful exports for modules. For more information and related Core Working Group (CWG) issue resolutions, see the [C++23 Support in MSVC Build Tools 14.51](https://devblogs.microsoft.com/cppblog/c23-support-in-msvc-build-tools-14-51). ### Standard Library @@ -62,7 +62,7 @@ For the complete list, see the [STL Changelog](https://github.com/microsoft/STL/ ## C++ conformance improvements, behavior changes, and bug fixes in MSVC Build Tools v14.50 -MSVC Build Tools v14.50 introduces improvements to the MSVC compiler and standard library, including better C++23 standards conformance, enhanced reliability, and improved correctness. This release also includes numerous bug fixes and updates that benefit large-scale C++ development. +MSVC Build Tools v14.50 introduces improvements to the MSVC compiler and standard library including better C++23 standards conformance, enhanced reliability, and improved correctness. This release also includes numerous bug fixes and updates that benefit large-scale C++ development. This version shipped first with Visual Studio 2026 version 18.0 and includes version 19.50 of the MSVC compiler. diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index 41aa00b0d56..a9e342a61dd 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -111,7 +111,7 @@ Here's a quick highlight of some of the new features in MSVC Build Tools version - Copilot Chat allows you to use natural language to get answers to questions (Ask mode) or even implement changes for you automatically (Agent Mode). - Copilot Chat is smarter with improved context for everyday tasks. Expect better results when searching your codebase and referencing specific lines in your code. - A **Copilot Actions** option was added to the right-click context menu in the Visual Studio editor. Use it to quickly bring a specific file or lines of code you select to the attention of Copilot Chat. You can then ask Copilot to explain what the code does, make optimizations, generate comments, generate unit tests, and more. -- Better AI code completions for C++. GitHub Copilot uses context from relevant files to improve inline autocomplete for C++. GitHub Copilot includes other relevant files as context which reduces hallucinations while offering more relevant and accurate suggestions. +- Better AI code completions for C++. GitHub Copilot uses context from relevant files to improve inline autocomplete for C++. GitHub Copilot includes other relevant files as context, which reduces hallucinations while offering more relevant and accurate suggestions. - For more information, see [New GitHub Copilot capabilities for C++ developers: Upgrade MSVC, improve build performance, and refactor C++ code](https://devblogs.microsoft.com/cppblog/new-github-copilot-capabilities-for-c-developers-upgrade-msvc-improve-build-performance-and-refactor-c-code/). ### Build enhancements @@ -129,7 +129,7 @@ Here's a quick highlight of some of the new features in MSVC Build Tools version - Access the new options from **Project Properties** > **Code Analysis** > **Clang-Tidy**: ![Screenshot of Project Properties dialog showing clang-tidy configuration options including processor allocation and custom command line arguments](./media/clang-tidy-improvements.png) -- AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools have supported building projects that target x64 and x86 with [AddressSanitizer](/cpp/sanitizers/asan), which allows you to identify hard-to-find memory safety issues with zero false positives at runtime and increase memory safety. Now you can use AddressSanitizer to target ARM64. This feature is in preview. +- AddressSanitizer support for ARM64 Builds (Preview): For some time, the MSVC Build Tools supported building projects that target x64 and x86 with [AddressSanitizer](/cpp/sanitizers/asan), which allows you to identify hard-to-find memory safety issues with zero false positives at runtime and increase memory safety. Now you can use AddressSanitizer to target ARM64. This feature is in preview. ### Productivity enhancements @@ -167,4 +167,6 @@ We'd love to hear from you! You can [Report a Problem or Suggest a Feature](/vis ## Blogs -Take advantage of the insights and recommendations available in the [Microsoft Developer Blogs](https://devblogs.microsoft.com/) site to stay up to date on all new releases. The blogs include deep dive posts on a broad range of features. The [C++ Team Blog](https://devblogs.microsoft.com/cppblog) and the [Visual Studio Blog](https://devblogs.microsoft.com/visualstudio) are of particular interest. +Stay up to date on all new releases by taking advantage of the insights and recommendations available in at [Microsoft Developer Blogs](https://devblogs.microsoft.com/). The blogs include deep dive posts on a broad range of features. + +The [C++ Team Blog](https://devblogs.microsoft.com/cppblog) and the [Visual Studio Blog](https://devblogs.microsoft.com/visualstudio) are of particular interest. diff --git a/docs/porting/features-deprecated-in-visual-studio.md b/docs/porting/features-deprecated-in-visual-studio.md index 82c81a98e8a..98421c0f4e3 100644 --- a/docs/porting/features-deprecated-in-visual-studio.md +++ b/docs/porting/features-deprecated-in-visual-studio.md @@ -6,7 +6,7 @@ helpviewer_keywords: ["Features deprecated or removed from Visual Studio"] --- # C++ features deprecated or removed from Visual Studio -This article is a non-exhaustive list of C++ features deprecated or removed from Visual Studio 2019 and later. For information on breaking changes and conformance improvements for C++ in the latest version of Visual Studio, see [C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md). +This article is a nonexhaustive list of C++ features deprecated or removed from Visual Studio 2019 and later. For information on breaking changes and conformance improvements for C++ in the latest version of Visual Studio, see [C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md). ### Support for Windows XP development @@ -18,7 +18,7 @@ Visual Studio 2019 and later versions don't include current build tools support - ### Removed features -The following long-deprecated non-Standard features have been removed: +The following long-deprecated non-Standard features are removed: - **TR1** including the `std::tr1` namespace, old `array::assign()`, and old `` engines and distributions. Deprecated since VS 2017 15.5 (December 2017). - **`_ALLOW_RTCc_IN_STL`** macro removed. The Standard Template Library doesn't support the `/RTCc` compiler option, but `/RTCs` and `/RTCu`/`/RTC1` remain supported. @@ -32,13 +32,13 @@ The following long-deprecated non-Standard features have been removed: ### Support for project upgrade from Visual C++ 6 -Visual Studio 2022 and later versions don't support upgrades from Visual C++ 6 Workspace (*`.dsw`*) and Project (*`.dsp`*) files. Visual Studio no longer registers the *`.dsw`* and *`.dsp`* file extensions as Visual Studio file types. To upgrade a project with these extensions, first use Visual Studio 2019 to upgrade the project to modern Solution (*`.sln`*) and C++ Project (*`.vcxproj`*) files. Then use the current version of Visual Studio to upgrade the project again. +Visual Studio 2022 and later versions don't support upgrades from Visual C++ 6 Workspace (*`.dsw`*) and Project (*`.dsp`*) files. Visual Studio no longer registers the *`.dsw`* and *`.dsp`* file extensions as Visual Studio file types. To upgrade a project with these extensions, first use Visual Studio 2019 to upgrade the project to modern Solution (*`.sln`*) and C++ Project (*`.vcxproj`*) files. Then upgrade the project again using the current version of Visual Studio. ## Visual Studio 2026 -### Support for C++AMP, ARM32 toolchain, and /DEBUG:FASTLINK +### Support for C++AMP, ARM32 toolchain, and `/DEBUG:FASTLINK` -Visual Studio 2026 and later versions don't support C++AMP, the ARM32 toolchain, and /DEBUG:FASTLINK. If you're utilizing `/DEBUG:FASTLINK`, it's recommended to switch to [`/DEBUG:FULL`](/cpp/build/reference/debug-generate-debug-info) for improved debugging support. Developers needing to target ARM32 can continue using the Visual Studio 2022 v143 build tools as detailed in this [Microsoft blog post](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). +Visual Studio 2026 and later versions don't support C++AMP, the ARM32 toolchain, and /DEBUG:FASTLINK. If you're utilizing `/DEBUG:FASTLINK`, switch to [`/DEBUG:FULL`](/cpp/build/reference/debug-generate-debug-info) for improved debugging support. Developers needing to target ARM32 can continue using the Visual Studio 2022 v143 build tools as detailed in this [Microsoft blog post](https://devblogs.microsoft.com/cppblog/side-by-side-minor-version-msvc-toolsets-in-visual-studio-2019/). ### Deprecation of `/await` From 976257896db563821ff27ca48417d4310bec7608 Mon Sep 17 00:00:00 2001 From: James Barnett Date: Tue, 12 May 2026 12:01:21 -0700 Subject: [PATCH 460/619] Update features-deprecated-in-visual-studio.md --- docs/porting/features-deprecated-in-visual-studio.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/porting/features-deprecated-in-visual-studio.md b/docs/porting/features-deprecated-in-visual-studio.md index 98421c0f4e3..21848bb9152 100644 --- a/docs/porting/features-deprecated-in-visual-studio.md +++ b/docs/porting/features-deprecated-in-visual-studio.md @@ -16,7 +16,7 @@ Visual Studio 2019 and later versions don't include current build tools support - The following experimental coroutine headers are now deprecated: ``, ``, and ``. Transition to standard C++20 coroutines using the `` header. -- ### Removed features +### Removed features The following long-deprecated non-Standard features are removed: @@ -58,4 +58,4 @@ These changes allow for better performance, enhanced security, and alignment wit ### Support for Mobile development with C++ and Embedded and IoT tools -Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. \ No newline at end of file +Starting with Visual Studio 2026 (version 18.0), the **Mobile development with C++** workload for iOS and Android targeting in the Visual Studio installer and the **Embedded and IoT tools**--including RTOS Viewer, Serial Monitor, Peripheral Viewer, and ST Project Import--are no longer supported and will be removed in a future update. However, the Android NDKs listed in the Mobile development with C++ workload continue to be supported. From d9f17bd13d00207eef8a698bfec8abd061828153 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 12 May 2026 12:18:07 -0700 Subject: [PATCH 461/619] update per VS/MSVC on separate tracks (#6705) * update per VS/MSVC on separate tracks * remove locale * more link fixing * update * moved the history down and more relevant info up * tech review * wordsmithing * Apply suggestion from @AugP Co-authored-by: Augustin Popa * Apply suggestion from @AugP Co-authored-by: Augustin Popa * incorp feedback --------- Co-authored-by: Augustin Popa --- docs/overview/compiler-versions.md | 191 ++++++++++++++++++----------- 1 file changed, 121 insertions(+), 70 deletions(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index f1502c60088..21b903f2128 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -1,7 +1,7 @@ --- description: "Learn more about Microsoft C++ compiler versioning." title: "Microsoft C++ (MSVC) compiler versioning" -ms.date: 02/12/2025 +ms.date: 05/08/2026 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] @@ -35,36 +35,29 @@ The macros reflect these values like this: >[!Note] >Visual Studio 2019 versions 16.8 and 16.9 share the same major and minor versions, and so have the same value for `_MSC_VER`. As do Visual Studio 2019 versions 16.10 and 16.11. To distinguish them, use `_MSC_FULL_VER` as described in [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). -## A brief history of Microsoft C++ compiler versioning - -### Visual Studio 6.0 through Visual Studio 2015 (14.0) +## Visual Studio channels -- For major releases, `_MSC_VER` increases by 100. `_MSC_FULL_VER` increases by 10,000,000. -- For minor releases, `_MSC_VER` increases by 10. `_MSC_FULL_VER` increases by 1,000,000. - - >[!Note] - > Visual Studio .NET 2003 was considered a minor release. - -### Visual Studio 2017 to Visual Studio 2022 - -- For major releases, the minor version increases by 10. -- For minor releases, the minor version increases by 1 starting with Visual Studio 2017 version 15.3. +All MSVC Build Tools are available through the Visual Studio Installer. -### Visual Studio 2026 and later +The [Visual Studio Stable Channel](https://visualstudio.microsoft.com) gets monthly updates and includes the latest supported MSVC Build Tools. The [Visual Studio Insiders Channel](https://visualstudio.microsoft.com/insiders) updates more often, so you can try upcoming MSVC changes sooner. For more information about the release cadence, see [Visual Studio 2026 release rhythm](/visualstudio/releases/2026/release-rhythm) and [Visual Studio Insiders release notes](/visualstudio/releases/2026/release-notes-insiders). -- The compiler minor version is no longer incremented in relation to Visual Studio version updates. -- The minor version increments by 1 with each new MSVC release. -- Not every new Visual Studio version will ship a new MSVC compiler version. +Each Visual Studio update receives updates to all of the MSVC build toolsets: +- The **preview** toolset receives new features and fixes that the development team completed since the previous update. +- The **default** and **older in-support** toolsets receive only targeted bug fixes. -### Service releases starting with Visual Studio 2017 -Servicing releases are distinguished by `_MSC_FULL_VER`. The build field (the BBBBB in the MMNNBBBBB version number) typically increases by 1. +Visual Studio Insiders users get early access to MSVC releases: +- On the Insiders Channel, preview toolsets update approximately weekly. +- On the Insiders Channel, new toolsets are available as release candidates about a month before they reach the Stable Channel, giving Insiders users time to validate the toolset and report issues. -For example, two cases where `_MSC_FULL_VER` is useful is to distinguish Visual Studio 2019 version 16.8 from 16.9, and Visual Studio 2019 version 16.10 from 16.11. That's because those versions share the same major and minor versions, and so have the same value for `_MSC_VER`. +### Install specific MSVC toolsets -To distinguish these versions, use `_MSC_FULL_VER`.\ -The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.8 is 192829333.\ -The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.9 is 192829910. +- To install only the default MSVC toolset, install the `Desktop development with C++` workload. +- To install the preview toolset, run the Visual Studio Installer and select **MSVC Build Tools for <arch> (Preview)**. For more information, see [MSVC Build Tools Preview](https://aka.ms/msvc/preview). +- To install an older in-support 14.5x toolset, run the Visual Studio Installer, open the **Individual Components** tab, and select the specific 14.5x toolset. +- To restore a previously installed toolset after an upgrade—for example, when 14.50 is replaced by 14.51—add the older toolset back from the **Individual Components** tab. +- To install only the Build Tools without the full Visual Studio IDE, use the [Visual Studio Stable Build Tools SKU](https://aka.ms/vs/stable/vs_BuildTools.exe). +- Some out-of-support toolsets (labeled **(Out of support)**) may also be available in the Visual Studio Installer. These toolsets don't receive any updates and may be removed in the future. We strongly recommend moving to a supported version. ## Version macros @@ -79,62 +72,120 @@ R - revision version **[`_MSC_FULL_VER`](../preprocessor/predefined-macros.md)** represents the major, minor, and build version of the compiler. It has the form: MMNNBBBBB. Use it to distinguish between different versions of the compiler, including servicing releases. For more information about Visual Studio 2019 versions 16.8, 16.9, 16.10 and 16.11, see [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). -**[`_MSC_BUILD`](../preprocessor/predefined-macros.md)** represents the build version of the compiler. It has the form: R. Use it to distinguish between servicing releases. +**[`_MSC_BUILD`](../preprocessor/predefined-macros.md)** represents the revision version of the compiler. It has the form: R. Use it to distinguish between compiler revisions. When the major version changed between Visual Studio 2013 and Visual Studio 2015, `_MSC_VER` reflected the change by going from 1800 to 1900. An example of a minor change is from Visual Studio 2022 version 17.1 to Visual Studio 2022 version 17.2. In that case, `_MSC_VER` changed from 1931 to 1932. -The following table lists the Visual Studio version corresponding to each Microsoft C++ compiler (`_MSC_VER`) and MSVC Build Tools release: - -| Visual Studio version | `_MSC_VER` | MSVC Build Tools version | -|--|--|--| -| Visual Studio 6.0 | 1200 | 6.0 | -| Visual Studio .NET 2002 (7.0) | 1300 | 7.0 | -| Visual Studio .NET 2003 (7.1) | 1310 | 7.1 | -| Visual Studio 2005 (8.0) | 1400 | 8.0 | -| Visual Studio 2008 (9.0) | 1500 | 9.0 | -| Visual Studio 2010 (10.0) | 1600 | 10.0 | -| Visual Studio 2012 (11.0) | 1700 | 11.0 | -| Visual Studio 2013 (12.0) | 1800 | 12.0 | -| Visual Studio 2015 (14.0) | 1900 | 14.0 | -| Visual Studio 2017 RTW (15.0) | 1910 | 14.10 | -| Visual Studio 2017 version 15.3 | 1911 | 14.11 | -| Visual Studio 2017 version 15.5 | 1912 | 14.12 | -| Visual Studio 2017 version 15.6 | 1913 | 14.13 | -| Visual Studio 2017 version 15.7 | 1914 | 14.14 | -| Visual Studio 2017 version 15.8 | 1915 | 14.15 | -| Visual Studio 2017 version 15.9 | 1916 | 14.16 | -| Visual Studio 2019 RTW 16.0 | 1920 | 14.20 | -| Visual Studio 2019 version 16.1 | 1921 | 14.21 | -| Visual Studio 2019 version 16.2 | 1922 | 14.22 | -| Visual Studio 2019 version 16.3 | 1923 | 14.23 | -| Visual Studio 2019 version 16.4 | 1924 | 14.24 | -| Visual Studio 2019 version 16.5 | 1925 | 14.25 | -| Visual Studio 2019 version 16.6 | 1926 | 14.26 | -| Visual Studio 2019 version 16.7 | 1927 | 14.27 | -| Visual Studio 2019 version 16.8, 16.9 a | 1928 | 14.28 | -| Visual Studio 2019 version 16.10, 16.11 b | 1929 | 14.29 | -| Visual Studio 2022 RTW 17.0 | 1930 | 14.30 | -| Visual Studio 2022 version 17.1 | 1931 | 14.31 | -| Visual Studio 2022 version 17.2 | 1932 | 14.32 | -| Visual Studio 2022 version 17.3 | 1933 | 14.33 | -| Visual Studio 2022 version 17.4 | 1934 | 14.34 | -| Visual Studio 2022 version 17.5 | 1935 | 14.35 | -| Visual Studio 2022 version 17.6 | 1936 | 14.36 | -| Visual Studio 2022 version 17.7 | 1937 | 14.37 | -| Visual Studio 2022 version 17.8 | 1938 | 14.38 | -| Visual Studio 2022 version 17.9 | 1939 | 14.39 | -| Visual Studio 2022 version 17.10 | 1940 | 14.40 | -| Visual Studio 2022 version 17.11 | 1941 | 14.41 | -| Visual Studio 2022 version 17.12 | 1942 | 14.42 | -| Visual Studio 2022 version 17.13 | 1943 | 14.43 | -| Visual Studio 2022 version 17.14 | 1944 | 14.44 | +The following table lists the Visual Studio version that corresponds to each MSVC compiler (`_MSC_VER`) and MSVC Build Tools release, together with support status. EOL means end of life. + +| Visual Studio version | `_MSC_VER` | MSVC Build Tools version | Support | More info | +|--|--|--|--|--| +| Visual Studio 6.0 | 1200 | 6.0 | EOL | [Visual Studio lifecycle policy](/visualstudio/releases/2026/servicing-vs#support-for-older-versions) | +| Visual Studio .NET 2002 (7.0) | 1300 | 7.0 | EOL | [Visual Studio lifecycle policy](/visualstudio/releases/2026/servicing-vs#support-for-older-versions) | +| Visual Studio .NET 2003 (7.1) | 1310 | 7.1 | EOL | [Visual Studio lifecycle policy](/visualstudio/releases/2026/servicing-vs#support-for-older-versions) | +| Visual Studio 2005 (8.0) | 1400 | 8.0 | EOL | [Visual Studio lifecycle policy](/visualstudio/releases/2026/servicing-vs#support-for-older-versions) | +| Visual Studio 2008 (9.0) | 1500 | 9.0 | EOL | [Visual Studio lifecycle policy](/visualstudio/releases/2026/servicing-vs#support-for-older-versions) | +| Visual Studio 2010 (10.0) | 1600 | 10.0 | EOL | [Visual Studio lifecycle policy](/visualstudio/releases/2026/servicing-vs#support-for-older-versions) | +| Visual Studio 2012 (11.0) | 1700 | 11.0 | EOL | [Visual Studio lifecycle policy](/visualstudio/releases/2026/servicing-vs#support-for-older-versions) | +| Visual Studio 2013 (12.0) | 1800 | 12.0 | EOL | [Visual Studio lifecycle policy](/visualstudio/releases/2026/servicing-vs#support-for-older-versions) | +| Visual Studio 2015 (14.0) | 1900 | 14.0 | EOL | [Visual Studio lifecycle policy](/visualstudio/releases/2026/servicing-vs#support-for-older-versions) | +| Visual Studio 2017 RTW (15.0) | 1910 | 14.10 | EOL | [Visual Studio 2017 lifecycle](/lifecycle/products/visual-studio-2017) | +| Visual Studio 2017 version 15.3 | 1911 | 14.11 | EOL | [Visual Studio 2017 lifecycle](/lifecycle/products/visual-studio-2017) | +| Visual Studio 2017 version 15.5 | 1912 | 14.12 | EOL | [Visual Studio 2017 lifecycle](/lifecycle/products/visual-studio-2017) | +| Visual Studio 2017 version 15.6 | 1913 | 14.13 | EOL | [Visual Studio 2017 lifecycle](/lifecycle/products/visual-studio-2017) | +| Visual Studio 2017 version 15.7 | 1914 | 14.14 | EOL | [Visual Studio 2017 lifecycle](/lifecycle/products/visual-studio-2017) | +| Visual Studio 2017 version 15.8 | 1915 | 14.15 | EOL | [Visual Studio 2017 lifecycle](/lifecycle/products/visual-studio-2017) | +| Visual Studio 2017 version 15.9 | 1916 | 14.16 | Apr 13, 2027 | [Visual Studio 2017 lifecycle](/lifecycle/products/visual-studio-2017) | +| Visual Studio 2019 RTW (16.0) | 1920 | 14.20 | EOL | [Visual Studio 2019 lifecycle](/lifecycle/products/visual-studio-2019) | +| Visual Studio 2019 version 16.1 | 1921 | 14.21 | EOL | [Visual Studio 2019 lifecycle](/lifecycle/products/visual-studio-2019) | +| Visual Studio 2019 version 16.2 | 1922 | 14.22 | EOL | [Visual Studio 2019 lifecycle](/lifecycle/products/visual-studio-2019) | +| Visual Studio 2019 version 16.3 | 1923 | 14.23 | EOL | [Visual Studio 2019 lifecycle](/lifecycle/products/visual-studio-2019) | +| Visual Studio 2019 version 16.4 | 1924 | 14.24 | EOL | [Visual Studio 2019 lifecycle](/lifecycle/products/visual-studio-2019) | +| Visual Studio 2019 version 16.5 | 1925 | 14.25 | EOL | [Visual Studio 2019 lifecycle](/lifecycle/products/visual-studio-2019) | +| Visual Studio 2019 version 16.6 | 1926 | 14.26 | EOL | [Visual Studio 2019 lifecycle](/lifecycle/products/visual-studio-2019) | +| Visual Studio 2019 version 16.7 | 1927 | 14.27 | EOL | [Visual Studio 2019 lifecycle](/lifecycle/products/visual-studio-2019) | +| Visual Studio 2019 version 16.8, 16.9 a | 1928 | 14.28 | EOL | [Visual Studio 2019 lifecycle](/lifecycle/products/visual-studio-2019) | +| Visual Studio 2019 version 16.10, 16.11 b | 1929 | 14.29 | Apr 10, 2029 | [Visual Studio 2019 lifecycle](/lifecycle/products/visual-studio-2019) | +| Visual Studio 2022 RTW 17.0 | 1930 | 14.30 | EOL | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.1 | 1931 | 14.31 | EOL | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.2 | 1932 | 14.32 | EOL | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.3 | 1933 | 14.33 | EOL | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.4 | 1934 | 14.34 | EOL | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.5 | 1935 | 14.35 | EOL | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.6 | 1936 | 14.36 | EOL | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.7 | 1937 | 14.37 | EOL | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.8 | 1938 | 14.38 | EOL | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.9 | 1939 | 14.39 | EOL | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.10 | 1940 | 14.40 | EOL | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.11 | 1941 | 14.41 | EOL | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.12 | 1942 | 14.42 | Jul 14, 2026 | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.13 | 1943 | 14.43 | EOL | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | +| Visual Studio 2022 version 17.14 | 1944 | 14.44 | Jan 13, 2032 | [Visual Studio 2022 lifecycle](/lifecycle/products/visual-studio-2022) | + +The following table lists MSVC Build Tools versions for Visual Studio 2026 and later. Starting with Visual Studio 2026, MSVC versioning is decoupled from Visual Studio versioning. EOL (end of life) dates are defined by the [MSVC lifecycle policy](https://aka.ms/msvc/lifecycle). + +| MSVC Build Tools version | `_MSC_VER` | Support | EOL date | More info | +|--|--|--|--|--| +| 14.50 | 1950 | Long-term | Nov 2028 | [What's New for C++ developers in Visual Studio 2026 version 18.0](https://devblogs.microsoft.com/cppblog/whats-new-for-cpp-developers-in-visual-studio-2026-version-18-0/) | +| 14.51 | 1951 | Standard | TBD | [MSVC lifecycle policy](https://aka.ms/msvc/lifecycle) | +| 14.52 | 1952 | Standard | TBD | [MSVC lifecycle policy](https://aka.ms/msvc/lifecycle) | a Visual Studio 2019 versions 16.8 and 16.9 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.8 is 192829333. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.9 is 192829910. b Visual Studio 2019 versions 16.10 and 16.11 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.10 is 192929917. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.11 is 192930129. +## A brief history of Microsoft C++ compiler versioning + +### Visual Studio 6.0 through Visual Studio 2015 (14.0) + +- For major releases, `_MSC_VER` increases by 100. `_MSC_FULL_VER` increases by 10,000,000. +- For minor releases, `_MSC_VER` increases by 10. `_MSC_FULL_VER` increases by 1,000,000. + + >[!Note] + > Visual Studio .NET 2003 was considered a minor release. + +### Visual Studio 2017 to Visual Studio 2022 + +- For major releases, the minor version increases by 10. +- For minor releases, the minor version increases by 1 starting with Visual Studio 2017 version 15.3. + +### Visual Studio 2026 and later + +The MSVC build tools that ship with Visual Studio 2026 and later start at version 14.50, and `_MSC_VER` starts at 1950. A new MSVC version—14.51/1951, 14.52/1952, and so on, ships every six months. Support follows the [MSVC lifecycle policy](https://aka.ms/msvc/lifecycle). + +This versioning system differs from earlier Visual Studio releases because MSVC versioning is now separate from Visual Studio versioning. That means the compiler minor version can stay the same across multiple Visual Studio updates. + +At any given time, the Visual Studio Installer can offer several MSVC versions: + +- A preview toolset with the newest changes +- The current default toolset +- Earlier toolsets that are still in support + +For example, as of May 2026: + +- **14.52** is the preview toolset and gets regular feature and fix updates. +- **14.51** is the default toolset released in May 2026, with 9 months of support. +- **14.50** is the toolset released in November 2025, with 3 years of support. + +By November 2026, we expect **14.53** to become the new preview toolset, **14.52** to become the default toolset, and **14.51** and **14.50** to remain in support under the [MSVC lifecycle policy](https://aka.ms/msvc/lifecycle). + +Microsoft changed to this model for three reasons: +- It shortens the time between MSVC feature development and preview availability from months to a week or so. +- It keeps the MSVC release cadence aligned with Visual Studio and long-term servicing releases aligned with .NET Long Term Support (LTS) releases. +- It reduces the complexity of servicing older compilers. + +### Service releases starting with Visual Studio 2017 + +Use `_MSC_FULL_VER` to distinguish servicing releases. The build field (the BBBBB in the MMNNBBBBB version number) typically increases by 1. + +For example, `_MSC_FULL_VER` is useful to distinguish Visual Studio 2019 version 16.8 from 16.9, and Visual Studio 2019 version 16.10 from 16.11. Those versions share the same major and minor versions, so they have the same value for `_MSC_VER`. + +To distinguish these versions, use `_MSC_FULL_VER`.\ +The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.8 is 192829333.\ +The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.9 is 192829910. + ## See also [`_MSC_VER`](../preprocessor/predefined-macros.md)\ From 135a14f2c1cbcc0df8fa1fa4e50226f82202ef31 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 12 May 2026 15:09:06 -0700 Subject: [PATCH 462/619] updates --- docs/build/sptdump.md | 6 ++++-- docs/overview/compiler-versions.md | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/docs/build/sptdump.md b/docs/build/sptdump.md index e7605bdb0ff..7ba096eee51 100644 --- a/docs/build/sptdump.md +++ b/docs/build/sptdump.md @@ -66,8 +66,10 @@ The SPT header is 32 bytes: - `[0x1C-0x1D]` ProgramIdsUsed (uint16 LE) = number of program IDs (often just 1) - `[0x1E-0x1F]` ProgramIdCapacity (uint16 LE) = capacity in count (not bytes) for program IDs (typically 0x100) -The StringTable immediately follows the header at the specified offset. It contains a null-terminated UTF-8 binary filename.\ -The ProgramIdTable follows the StringTable at the specified offset. Each entry is 24 bytes: 16-byte Rich Signature Data Stream (RSDS) GUID + 4-byte age + 4-byte string index into StringTable.\ +The StringTable immediately follows the header at the specified offset. It contains a null-terminated UTF-8 binary filename. + +The ProgramIdTable follows the StringTable at the specified offset. Each entry is 24 bytes: 16-byte Rich Signature Data Stream (RSDS) GUID + 4-byte age + 4-byte string index into StringTable. + The data stream starts at `ProgramIdTableOffset + (ProgramIdCapacity * 24)`, and starts with a `SPT_OP_BINARY_ID` opcode. **SPT Opcodes** diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index 21b903f2128..a51e9795b8e 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -1,7 +1,7 @@ --- description: "Learn more about Microsoft C++ compiler versioning." title: "Microsoft C++ (MSVC) compiler versioning" -ms.date: 05/08/2026 +ms.date: 05/12/2026 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] @@ -45,7 +45,6 @@ Each Visual Studio update receives updates to all of the MSVC build toolsets: - The **preview** toolset receives new features and fixes that the development team completed since the previous update. - The **default** and **older in-support** toolsets receive only targeted bug fixes. - Visual Studio Insiders users get early access to MSVC releases: - On the Insiders Channel, preview toolsets update approximately weekly. - On the Insiders Channel, new toolsets are available as release candidates about a month before they reach the Stable Channel, giving Insiders users time to validate the toolset and report issues. @@ -129,13 +128,15 @@ The following table lists MSVC Build Tools versions for Visual Studio 2026 and l | MSVC Build Tools version | `_MSC_VER` | Support | EOL date | More info | |--|--|--|--|--| | 14.50 | 1950 | Long-term | Nov 2028 | [What's New for C++ developers in Visual Studio 2026 version 18.0](https://devblogs.microsoft.com/cppblog/whats-new-for-cpp-developers-in-visual-studio-2026-version-18-0/) | -| 14.51 | 1951 | Standard | TBD | [MSVC lifecycle policy](https://aka.ms/msvc/lifecycle) | -| 14.52 | 1952 | Standard | TBD | [MSVC lifecycle policy](https://aka.ms/msvc/lifecycle) | +| 14.51 | 1951 | Standard | Feb 2027 | [MSVC lifecycle policy](https://aka.ms/msvc/lifecycle) | +| 14.52 | 1952 | Standard | Previewc | [MSVC lifecycle policy](https://aka.ms/msvc/lifecycle) | a Visual Studio 2019 versions 16.8 and 16.9 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.8 is 192829333. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.9 is 192829910. b Visual Studio 2019 versions 16.10 and 16.11 share the same major and minor versions (and so have the same value for `_MSC_VER`). To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.10 is 192929917. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.11 is 192930129. +c MSVC Build Tools version 14.52 is in preview. The EOL date will be established upon general availability. + ## A brief history of Microsoft C++ compiler versioning ### Visual Studio 6.0 through Visual Studio 2015 (14.0) From 4781ee1ce3c9da3ceef6ab4fc41b7b669abe0f18 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 12 May 2026 15:13:20 -0700 Subject: [PATCH 463/619] pickup couple what's new items --- docs/overview/what-s-new-for-msvc.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index a9e342a61dd..bc4c3aa96bd 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -57,9 +57,10 @@ Fixed [C4319](/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c43 ### Build enhancements - **Arm SVE support:** First Arm Scalable Vector Extension (SVE) support in MSVC, including frontend type support, intrinsic lowering, callee-saved register unwinding, and DIA SDK support. -- **Sample-based PGO:** Preview support for sample-based profile guided optimizations. +- **Sample-based PGO:** Preview support for sample-based profile guided optimizations. For more information, see [Use Sample Profile Guided Optimization (SPGO) to improve C++ performance](../build/sample-profile-guided-optimization.md). - The C++ backend optimizer improves code generation, including better inlining, loop optimizations, and pattern matching. -- **Intel APX preview:** Preview support for Intel Advanced Performance Extensions. +- **Experimental support for x64 Unwind Version 3 MASM directives**. For more information, see [Unwind Version 3 directives (experimental)](../assembler/masm/directives-reference#x64-unwind-version-3-experimental.md). +- **Intel APX preview:** Preview support for Intel Advanced Performance Extensions. For more information, see [/feature (x64)](..build/reference/feature-x64.md). - Enabled debug info pruning to reduce PDB sizes. ### Deprecations From 78cecde90abdaf0056ab344006987524c5e6c798 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 12 May 2026 15:20:12 -0700 Subject: [PATCH 464/619] fix links --- docs/overview/what-s-new-for-msvc.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index bc4c3aa96bd..f354b8eb1d7 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -59,8 +59,8 @@ Fixed [C4319](/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c43 - **Arm SVE support:** First Arm Scalable Vector Extension (SVE) support in MSVC, including frontend type support, intrinsic lowering, callee-saved register unwinding, and DIA SDK support. - **Sample-based PGO:** Preview support for sample-based profile guided optimizations. For more information, see [Use Sample Profile Guided Optimization (SPGO) to improve C++ performance](../build/sample-profile-guided-optimization.md). - The C++ backend optimizer improves code generation, including better inlining, loop optimizations, and pattern matching. -- **Experimental support for x64 Unwind Version 3 MASM directives**. For more information, see [Unwind Version 3 directives (experimental)](../assembler/masm/directives-reference#x64-unwind-version-3-experimental.md). -- **Intel APX preview:** Preview support for Intel Advanced Performance Extensions. For more information, see [/feature (x64)](..build/reference/feature-x64.md). +- **Experimental support for x64 Unwind Version 3 MASM directives**. For more information, see [Unwind Version 3 directives (experimental)](../assembler/masm/directives-reference.md#x64-unwind-version-3-experimental) +- **Intel APX preview:** Preview support for Intel Advanced Performance Extensions. For more information, see [/feature (x64)](../build/reference/feature-x64.md). - Enabled debug info pruning to reduce PDB sizes. ### Deprecations From eb8673fd897da5a607f73248cc0703d5f6174b21 Mon Sep 17 00:00:00 2001 From: Justin Piesco <107575186+JustPies@users.noreply.github.com> Date: Wed, 13 May 2026 09:08:21 -0400 Subject: [PATCH 465/619] removed links --- .../set-up-fips-compliant-secure-remote-linux-development.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md b/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md index aa4ba4bf66e..c771087b836 100644 --- a/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md +++ b/docs/linux/set-up-fips-compliant-secure-remote-linux-development.md @@ -147,7 +147,7 @@ It's possible to enable FIPS mode globally in Windows. 1. In the **Local Security Setting** tab, select **Enabled** or **Disabled**, and then choose **OK** to save your changes. > [!WARNING] -> Enabling FIPS mode may cause some applications to break or behave unexpectedly. For more information, see the blog post [Why We're Not Recommending "FIPS mode" Anymore](https://techcommunity.microsoft.com/t5/microsoft-security-baselines/why-we-8217-re-not-recommending-8220-fips-mode-8221-anymore/ba-p/701037). +> Enabling FIPS mode may cause some applications to break or behave unexpectedly. ## Additional resources @@ -157,8 +157,6 @@ It's possible to enable FIPS mode globally in Windows. [Cryptographic Algorithm Validation Program: Validation Notes](https://csrc.nist.gov/projects/cryptographic-algorithm-validation-program/Validation-Notes) (from NIST) -Microsoft blog post on [Why We're Not Recommending "FIPS mode" Anymore](https://techcommunity.microsoft.com/t5/microsoft-security-baselines/why-we-8217-re-not-recommending-8220-fips-mode-8221-anymore/ba-p/701037) - [SSH Server Configuration](https://www.ssh.com/ssh/sshd_config) ## See also From 34bb356867c5abeed2c4819e4709492d09cccbb0 Mon Sep 17 00:00:00 2001 From: Justin Piesco <107575186+JustPies@users.noreply.github.com> Date: Wed, 13 May 2026 09:12:14 -0400 Subject: [PATCH 466/619] updated link --- .../how-to-report-a-problem-with-the-visual-cpp-toolset.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md index 5664f47bcee..579d8db1796 100644 --- a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md +++ b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md @@ -422,6 +422,6 @@ To maintain your privacy and keep your sensitive information out of public view, ## How to report a C++ documentation issue -If you see an issue with a document, a bad code sample, a confusing explanation, a critical omission, or even just a typo, you can easily let us know by using the feedback buttons on the page. Since 2024, we no longer use GitHub issues to track problems reported. For more information, see [Announcing a new way to give feedback on Microsoft Learn](https://techcommunity.microsoft.com/blog/microsoftlearnblog/announcing-a-new-way-to-give-feedback-on-microsoft-learn/4027635). +If you see an issue with a document, a bad code sample, a confusing explanation, a critical omission, or even just a typo, you can easily let us know by using the feedback buttons on the page. Since 2024, we no longer use GitHub issues to track problems reported. For more information, see [Announcing a new way to give feedback on Microsoft Learn](https://techcommunity.microsoft.com/blog/skills-hub-blog/announcing-a-new-way-to-give-feedback-on-microsoft-learn/4027635). [Our C++ docs are open source](https://github.com/MicrosoftDocs/cpp-docs/), so if you'd like to submit a fix yourself, you can. For more information about how you can contribute to our documentation, see our [Contributing guide](https://github.com/MicrosoftDocs/cpp-docs/blob/main/CONTRIBUTING.md) on GitHub. From c238fc5c52ecf1bbc0e9a599fa736086d6c590da Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Wed, 13 May 2026 13:30:48 -0700 Subject: [PATCH 467/619] Add more to Segment Heap description in documentation Expanded the description of the Segment Heap setting to include benefits such as improved memory efficiency, reduced fragmentation, and enhanced memory security. --- docs/build/reference/manifest-tool-property-pages.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/manifest-tool-property-pages.md b/docs/build/reference/manifest-tool-property-pages.md index ddabe61e2cc..fc70cc16669 100644 --- a/docs/build/reference/manifest-tool-property-pages.md +++ b/docs/build/reference/manifest-tool-property-pages.md @@ -100,7 +100,7 @@ Specifies whether the application is DPI-aware. By default, the setting is **Yes ### Segment Heap -Specifies whether the application utilizes the Segment Heap. For new C++ projects, the setting is **Yes** by default. +Specifies whether the application utilizes the Segment Heap. When enabled, applications benefit from improved memory efficiency, reduced fragmentation, and enhanced memory security. For new C++ projects, the setting is **Yes** by default. ## Isolated COM Property Page From a0429e0ca16ff5f66a28351ddd772177d5b2d07e Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Wed, 13 May 2026 14:17:13 -0700 Subject: [PATCH 468/619] Include usage examples of the environment variables --- docs/build/cmake-presets-vs.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/build/cmake-presets-vs.md b/docs/build/cmake-presets-vs.md index 90427d3ffd4..e0a16372fe9 100644 --- a/docs/build/cmake-presets-vs.md +++ b/docs/build/cmake-presets-vs.md @@ -465,13 +465,17 @@ Pass runtime flags to AddressSanitizer by using the `ASAN_OPTIONS` field in *`la The Segment Heap is a modern Windows heap implementation that reduces memory usage and fragmentation. Visual Studio ships a CMake script that enables Segment Heap for your project by adding the required manifest settings. New C++ CMake projects enable Segment Heap by default. -To enable Segment Heap, set `CMAKE_PROJECT_TOP_LEVEL_INCLUDES` in the `cacheVariables` map of your Configure Preset in *`CMakePresets.json`*: +To enable Segment Heap, set `CMAKE_PROJECT_TOP_LEVEL_INCLUDES` in the `cacheVariables` map of your Configure Preset in *`CMakePresets.json`*. Optionally, set the `VS_SEGMENT_HEAP_ALLOWLIST` and `VS_SEGMENT_HEAP_EXCLUDE` environment variables to control which targets in the project use Segment Heap. Separate target names with semicolons: ```json { "configurePresets": [ { // ... + "environment": { + "VS_SEGMENT_HEAP_ALLOWLIST": "target1;target2;", + "VS_SEGMENT_HEAP_EXCLUDE": "target3;" + }, "cacheVariables": { "CMAKE_PROJECT_TOP_LEVEL_INCLUDES": "$env{VSINSTALLDIR}Common7/IDE/CommonExtensions/Microsoft/CMake/cmake/Microsoft/SegmentHeap.cmake" } @@ -484,12 +488,10 @@ To enable Segment Heap, set `CMAKE_PROJECT_TOP_LEVEL_INCLUDES` in the `cacheVari > [!NOTE] > `CMAKE_PROJECT_TOP_LEVEL_INCLUDES` is available in CMake 3.24 or later. -Use the `VS_SEGMENT_HEAP_ALLOWLIST` and `VS_SEGMENT_HEAP_EXCLUDE` environment variables to control which targets in the project use Segment Heap. Separate target names with semicolons. - - `VS_SEGMENT_HEAP_ALLOWLIST` — Apply the Segment Heap manifest entry only to the listed targets. Exclude all other targets. - `VS_SEGMENT_HEAP_EXCLUDE` — Exclude the listed targets from using the Segment Heap. -When neither variable is set, Visual Studio enables Segment Heap for all targets. If both variables are set, `VS_SEGMENT_HEAP_ALLOWLIST` takes precedence. +In this example, `CMAKE_PROJECT_TOP_LEVEL_INCLUDES` points to the Visual Studio-provided `SegmentHeap.cmake` script. The optional `VS_SEGMENT_HEAP_ALLOWLIST` and `VS_SEGMENT_HEAP_EXCLUDE` variables show how to include or exclude specific targets. If neither variable is set, Visual Studio enables Segment Heap for all targets. If both variables are set, `VS_SEGMENT_HEAP_ALLOWLIST` takes precedence. ## Run CMake from the command line or a CI pipeline From 8b310c96188c1f460c95110d826814d3baf0704e Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Wed, 13 May 2026 14:17:57 -0700 Subject: [PATCH 469/619] Remove 'modern' --- docs/build/cmake-presets-vs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/cmake-presets-vs.md b/docs/build/cmake-presets-vs.md index e0a16372fe9..62d80010a54 100644 --- a/docs/build/cmake-presets-vs.md +++ b/docs/build/cmake-presets-vs.md @@ -463,7 +463,7 @@ Pass runtime flags to AddressSanitizer by using the `ASAN_OPTIONS` field in *`la ## Enable Segment Heap -The Segment Heap is a modern Windows heap implementation that reduces memory usage and fragmentation. Visual Studio ships a CMake script that enables Segment Heap for your project by adding the required manifest settings. New C++ CMake projects enable Segment Heap by default. +The Segment Heap is a Windows heap implementation that reduces memory usage and fragmentation. Visual Studio ships a CMake script that enables Segment Heap for your project by adding the required manifest settings. New C++ CMake projects enable Segment Heap by default. To enable Segment Heap, set `CMAKE_PROJECT_TOP_LEVEL_INCLUDES` in the `cacheVariables` map of your Configure Preset in *`CMakePresets.json`*. Optionally, set the `VS_SEGMENT_HEAP_ALLOWLIST` and `VS_SEGMENT_HEAP_EXCLUDE` environment variables to control which targets in the project use Segment Heap. Separate target names with semicolons: From 6173eabf77f6c9ff173e3ff09581e32c6a28b37e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 14 May 2026 15:22:12 -0700 Subject: [PATCH 470/619] docs(attributes): Add [[msvc::disable(feature:APX)]] and [[msvc::enable(feature:APX)]] documentation Integrated new Microsoft-specific C++ attributes for APX (Intel Advanced Performance Extensions) feature control into attributes.md. Both attributes are x64-only and experimental. ## Changes - Added [[msvc::disable(feature:APX)]] attribute documentation with examples - Added [[msvc::enable(feature:APX)]] attribute documentation with examples - Attributes placed alphabetically between [[gsl::suppress]] and [[msvc::flatten]] - Updated YAML front matter with msvc::disable and msvc::enable keywords - Applied Windows x64 calling convention corrections to assembly examples - Added experimental x64-only designation per [[msvc::musttail]] pattern ## Key Teaching Point Demonstrates per-function scope: when main has [[msvc::disable(feature:APX)]], main does NOT use APX instructions, but called functions still generate APX instructions. ## Pending Verification - Visual Studio version (placeholder: 17.XX) - /arch:APX compiler flag spelling confirmation - Experimental vs production status confirmation - Assembly example validation against actual compiler output These items flagged for TylerMSFT verification before publication. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/cpp/attributes.md | 83 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 3 deletions(-) diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md index 84be79ffc4b..d8f6471e601 100644 --- a/docs/cpp/attributes.md +++ b/docs/cpp/attributes.md @@ -1,9 +1,9 @@ --- title: "Attributes in C++" description: "Learn more about: Attributes in C++" -f1_keywords: ["deprecated", "noreturn", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::flatten", "msvc::forceinline", "msvc::forceinline_calls", "msvc::intrinsic", "msvc::noinline", "msvc::noinline_calls", "msvc::no_tls_guard", "msvc::musttail"] -helpviewer_keywords: ["deprecated", "noreturn", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::flatten", "msvc::forceinline", "msvc::forceinline_calls", "msvc::intrinsic", "msvc::noinline", "msvc::noinline_calls", "msvc::no_tls_guard", "msvc::musttail"] -ms.date: 12/9/2025 +f1_keywords: ["deprecated", "noreturn", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::disable", "msvc::enable", "msvc::flatten", "msvc::forceinline", "msvc::forceinline_calls", "msvc::intrinsic", "msvc::noinline", "msvc::noinline_calls", "msvc::no_tls_guard", "msvc::musttail"] +helpviewer_keywords: ["deprecated", "noreturn", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::disable", "msvc::enable", "msvc::flatten", "msvc::forceinline", "msvc::forceinline_calls", "msvc::intrinsic", "msvc::noinline", "msvc::noinline_calls", "msvc::no_tls_guard", "msvc::musttail"] +ms.date: 05/14/2026 --- # Attributes in C++ @@ -114,6 +114,83 @@ Both `#pragma warning(suppress)` and `[[gsl::suppress]]` offer fine-grained cont Whenever possible, use `[[gsl::suppress]]` for suppressing Microsoft C++ Code Analysis warnings. +### `[[msvc::disable(feature:APX)]]` + +The `[[msvc::disable(feature:APX)]]` attribute, introduced in Visual Studio 2022 version 17.XX, is an experimental x64-only Microsoft-specific attribute that disables Intel Advanced Performance Extensions (APX) instruction generation for a specific function. When applied to a function declaration or definition, it prevents the compiler from emitting APX instructions in that function's body, even when APX is globally enabled via the `/arch:APX` compiler option. Other functions in the same translation unit continue to use APX instructions unless they are similarly attributed. + + + +#### Example + +```cpp +// Compile with /arch:APX on x64 + +int subtract(int a, int b) +{ + return a - b; +} + +[[msvc::disable(feature:APX)]] +int main() +{ + int result = subtract(10, 3); + return result; +} + +// Compiled output (relevant portions): +// +// subtract: +// {nf} sub eax,ecx,edx ; APX NDD instruction: eax = ecx - edx (no EFLAGS update) +// ret +// +// main: +// mov edx,3 ; Set up second argument +// mov ecx,10 ; Set up first argument +// call subtract ; Call proceeds normally; subtract uses APX +// ret ; main itself uses no APX instructions +``` + +In this example, `main` is compiled without APX instructions due to `[[msvc::disable(feature:APX)]]`. The `subtract` function, which has no such attribute, still generates APX instructions including the `{nf}` no-flags encoding. This demonstrates that the attribute affects only the specific function to which it is applied — other functions in the same translation unit continue to use APX. + +### `[[msvc::enable(feature:APX)]]` + +The `[[msvc::enable(feature:APX)]]` attribute, introduced in Visual Studio 2022 version 17.XX, is an experimental x64-only Microsoft-specific attribute that enables Intel Advanced Performance Extensions (APX) instruction generation for a specific function. When applied to a function declaration or definition, it allows the compiler to emit APX instructions in that function's body, even when APX is not globally enabled. This provides per-function opt-in to APX features without requiring `/arch:APX` for the entire translation unit. + + + +#### Example + +```cpp +// Compile without /arch:APX on x64 + +[[msvc::enable(feature:APX)]] +int add_three(int a, int b, int c) +{ + return a + b + c; +} + +int main() +{ + return add_three(5, 10, 15); +} + +// Compiled output (relevant portions): +// +// add_three: +// {nf} add eax,ecx,edx ; APX NDD instruction: eax = ecx + edx (no EFLAGS update) +// {nf} add eax,eax,r8d ; APX NDD instruction: eax = eax + r8d +// ret +// +// main: +// mov r8d,15 ; Third argument +// mov edx,10 ; Second argument +// mov ecx,5 ; First argument +// call add_three +// ret ; main uses no APX instructions +``` + +The `add_three` function uses APX NDD (New Data Destination) 3-operand instructions even though APX isn't enabled globally, while `main` uses standard x64 instructions. This demonstrates per-function opt-in to APX without requiring `/arch:APX` for the entire translation unit. + ### `[[msvc::flatten]]` The Microsoft-specific attribute `[[msvc::flatten]]` is similar to `[[msvc::forceinline_calls]]`, and can be used in the same places and in the same way. The difference is that `[[msvc::flatten]]` will `[[msvc::forceinline_calls]]` all calls in the scope it's applied to recursively, until no calls are left. This may have consequences for the resulting code size growth of the function or the throughput of the compiler, which you must manage manually. From 9ae6e6d2108ff34a456ce6cbc90e50b9d607cf5b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 14 May 2026 15:29:06 -0700 Subject: [PATCH 471/619] Document [[msvc::disable(feature:APX)]] and [[msvc::enable(feature:APX)]] attributes Introduced in MSVC Build Tools 14.51 (Visual Studio 18.6.0). Both attributes are x64-only, non-experimental, and affect inlined callees. Examples use test()/test2() pattern showing APX vs non-APX compiled output. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- docs/cpp/attributes.md | 54 +++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md index d8f6471e601..4e7d0883fed 100644 --- a/docs/cpp/attributes.md +++ b/docs/cpp/attributes.md @@ -116,47 +116,41 @@ Whenever possible, use `[[gsl::suppress]]` for suppressing Microsoft C++ Code An ### `[[msvc::disable(feature:APX)]]` -The `[[msvc::disable(feature:APX)]]` attribute, introduced in Visual Studio 2022 version 17.XX, is an experimental x64-only Microsoft-specific attribute that disables Intel Advanced Performance Extensions (APX) instruction generation for a specific function. When applied to a function declaration or definition, it prevents the compiler from emitting APX instructions in that function's body, even when APX is globally enabled via the `/arch:APX` compiler option. Other functions in the same translation unit continue to use APX instructions unless they are similarly attributed. - - +The `[[msvc::disable(feature:APX)]]` attribute, introduced in [MSVC Build Tools version 14.51](../overview/what-s-new-for-msvc.md#whats-new-for-msvc-build-tools-version-1451) (Visual Studio version 18.6.0), is an x64-only Microsoft-specific attribute that disables Intel Advanced Performance Extensions (APX) instruction generation for a specific function. When applied to a function declaration or definition, it prevents the compiler from emitting APX instructions in that function's body, even when APX is globally enabled via the `/arch:APX` compiler option. Other functions in the same translation unit continue to use APX instructions unless they are similarly attributed. If a function with `[[msvc::disable(feature:APX)]]` has calls that are inlined into it, the inlined code is also compiled without APX instructions. #### Example ```cpp // Compile with /arch:APX on x64 -int subtract(int a, int b) +int test(int a, int b) { return a - b; } [[msvc::disable(feature:APX)]] -int main() +int test2(int a, int b) { - int result = subtract(10, 3); - return result; + return a - b; } // Compiled output (relevant portions): // -// subtract: -// {nf} sub eax,ecx,edx ; APX NDD instruction: eax = ecx - edx (no EFLAGS update) +// test: // APX enabled — uses {nf} instruction +// {nf} sub eax,ecx,edx // APX NDD: eax = ecx - edx (no EFLAGS update) // ret // -// main: -// mov edx,3 ; Set up second argument -// mov ecx,10 ; Set up first argument -// call subtract ; Call proceeds normally; subtract uses APX -// ret ; main itself uses no APX instructions +// test2: // APX disabled by [[msvc::disable(feature:APX)]] +// mov eax,ecx // Standard x64: copy a to return register +// sub eax,edx // Subtract b (eax = a - b) +// ret ``` -In this example, `main` is compiled without APX instructions due to `[[msvc::disable(feature:APX)]]`. The `subtract` function, which has no such attribute, still generates APX instructions including the `{nf}` no-flags encoding. This demonstrates that the attribute affects only the specific function to which it is applied — other functions in the same translation unit continue to use APX. +`test` uses the APX `{nf}` (no-flags) NDD instruction, while `test2` uses standard x64 instructions. The attribute affects only the function it's applied to. ### `[[msvc::enable(feature:APX)]]` -The `[[msvc::enable(feature:APX)]]` attribute, introduced in Visual Studio 2022 version 17.XX, is an experimental x64-only Microsoft-specific attribute that enables Intel Advanced Performance Extensions (APX) instruction generation for a specific function. When applied to a function declaration or definition, it allows the compiler to emit APX instructions in that function's body, even when APX is not globally enabled. This provides per-function opt-in to APX features without requiring `/arch:APX` for the entire translation unit. - - +The `[[msvc::enable(feature:APX)]]` attribute, introduced in [MSVC Build Tools version 14.51](../overview/what-s-new-for-msvc.md#whats-new-for-msvc-build-tools-version-1451) (Visual Studio version 18.6.0), is an x64-only Microsoft-specific attribute that enables Intel Advanced Performance Extensions (APX) instruction generation for a specific function. When applied to a function declaration or definition, it allows the compiler to emit APX instructions in that function's body, even when APX is not globally enabled. This provides per-function opt-in to APX features without requiring `/arch:APX` for the entire translation unit. If a function with `[[msvc::enable(feature:APX)]]` has calls that are inlined into it, the inlined code is also compiled with APX instructions. #### Example @@ -164,32 +158,28 @@ The `[[msvc::enable(feature:APX)]]` attribute, introduced in Visual Studio 2022 // Compile without /arch:APX on x64 [[msvc::enable(feature:APX)]] -int add_three(int a, int b, int c) +int test(int a, int b) { - return a + b + c; + return a + b; } -int main() +int test2(int a, int b) { - return add_three(5, 10, 15); + return a + b; } // Compiled output (relevant portions): // -// add_three: -// {nf} add eax,ecx,edx ; APX NDD instruction: eax = ecx + edx (no EFLAGS update) -// {nf} add eax,eax,r8d ; APX NDD instruction: eax = eax + r8d +// test: // APX enabled by [[msvc::enable(feature:APX)]] +// {nf} add eax,ecx,edx // APX NDD: eax = ecx + edx (no EFLAGS update) // ret // -// main: -// mov r8d,15 ; Third argument -// mov edx,10 ; Second argument -// mov ecx,5 ; First argument -// call add_three -// ret ; main uses no APX instructions +// test2: // Standard x64 — APX not enabled globally +// lea eax,[rcx+rdx] // Standard x64 addition +// ret ``` -The `add_three` function uses APX NDD (New Data Destination) 3-operand instructions even though APX isn't enabled globally, while `main` uses standard x64 instructions. This demonstrates per-function opt-in to APX without requiring `/arch:APX` for the entire translation unit. +`test` uses the APX `{nf}` (no-flags) NDD instruction even though `/arch:APX` isn't enabled globally, while `test2` uses standard x64 instructions. The attribute provides per-function opt-in to APX. ### `[[msvc::flatten]]` From a0caa5ccc474d308b008cadf9c30dc4c713e8d05 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 15 May 2026 15:25:53 -0700 Subject: [PATCH 472/619] draft --- docs/cpp/attributes.md | 69 ++++++++++++++++++---------- docs/overview/what-s-new-for-msvc.md | 4 +- 2 files changed, 48 insertions(+), 25 deletions(-) diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md index 4e7d0883fed..f59a6aa83d8 100644 --- a/docs/cpp/attributes.md +++ b/docs/cpp/attributes.md @@ -3,7 +3,7 @@ title: "Attributes in C++" description: "Learn more about: Attributes in C++" f1_keywords: ["deprecated", "noreturn", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::disable", "msvc::enable", "msvc::flatten", "msvc::forceinline", "msvc::forceinline_calls", "msvc::intrinsic", "msvc::noinline", "msvc::noinline_calls", "msvc::no_tls_guard", "msvc::musttail"] helpviewer_keywords: ["deprecated", "noreturn", "carries_dependency", "fallthrough", "nodiscard", "maybe_unused", "likely", "unlikely", "gsl::suppress", "msvc::disable", "msvc::enable", "msvc::flatten", "msvc::forceinline", "msvc::forceinline_calls", "msvc::intrinsic", "msvc::noinline", "msvc::noinline_calls", "msvc::no_tls_guard", "msvc::musttail"] -ms.date: 05/14/2026 +ms.date: 05/15/2026 --- # Attributes in C++ @@ -116,61 +116,84 @@ Whenever possible, use `[[gsl::suppress]]` for suppressing Microsoft C++ Code An ### `[[msvc::disable(feature:APX)]]` -The `[[msvc::disable(feature:APX)]]` attribute, introduced in [MSVC Build Tools version 14.51](../overview/what-s-new-for-msvc.md#whats-new-for-msvc-build-tools-version-1451) (Visual Studio version 18.6.0), is an x64-only Microsoft-specific attribute that disables Intel Advanced Performance Extensions (APX) instruction generation for a specific function. When applied to a function declaration or definition, it prevents the compiler from emitting APX instructions in that function's body, even when APX is globally enabled via the `/arch:APX` compiler option. Other functions in the same translation unit continue to use APX instructions unless they are similarly attributed. If a function with `[[msvc::disable(feature:APX)]]` has calls that are inlined into it, the inlined code is also compiled without APX instructions. +The `[[msvc::disable(feature:APX)]]` attribute, introduced in [MSVC Build Tools version 14.51](../overview/what-s-new-for-msvc.md#whats-new-for-msvc-build-tools-version-1451) (Visual Studio version 18.6.0), is an x64-only Microsoft-specific attribute that disables Intel Advanced Performance Extensions (APX) instruction generation for a specific function. When applied to a function declaration or definition, it prevents the compiler from emitting APX instructions in that function's body, even if APX is globally enabled via the `/feature:APX` compiler option. Other functions in the same translation unit continue to use APX instructions unless they are similarly attributed. If a function with `[[msvc::disable(feature:APX)]]` calls inlined functions, the inlined code is also compiled without APX instructions. #### Example ```cpp -// Compile with /arch:APX on x64 +// cl /std:c++latest apx.cpp /Zi /MD /O2 /d2offSSAPEEPLEA,SSAPEEPBUILDLEA,LEA_COMPLEX_ADDR,ADDR /link /incremental:no -int test(int a, int b) +​int test(int argc) { - return a - b; + auto lambda = + [] + [[msvc::enable(feature:APX), msvc::noinline]] + (int argc) + { + return argc + 42; + }; + return lambda(argc); } -[[msvc::disable(feature:APX)]] -int test2(int a, int b) +[[msvc::enable(feature:APX), msvc::noinline]] +int test2(int x) { - return a - b; + return x + 42; +} + +int main(int argc, char** argv) +{ + return test(argc) - test2(argc); } // Compiled output (relevant portions): // -// test: // APX enabled — uses {nf} instruction -// {nf} sub eax,ecx,edx // APX NDD: eax = ecx - edx (no EFLAGS update) +// test: // APX enabled by [[msvc::enable(feature:APX)]] +// {nf} add eax,ecx,edx // APX NDD: eax = ecx + edx (no EFLAGS update) // ret // -// test2: // APX disabled by [[msvc::disable(feature:APX)]] -// mov eax,ecx // Standard x64: copy a to return register -// sub eax,edx // Subtract b (eax = a - b) +// test2: // Standard x64 — APX not enabled globally +// lea eax,[rcx+rdx] // Standard x64 addition // ret ``` -`test` uses the APX `{nf}` (no-flags) NDD instruction, while `test2` uses standard x64 instructions. The attribute affects only the function it's applied to. +`test` uses the APX `{nf}` (no-flags) New Data Destination (NDD) instruction, while `test2` uses standard x64 instructions. The attribute affects only the function it's applied to. ### `[[msvc::enable(feature:APX)]]` The `[[msvc::enable(feature:APX)]]` attribute, introduced in [MSVC Build Tools version 14.51](../overview/what-s-new-for-msvc.md#whats-new-for-msvc-build-tools-version-1451) (Visual Studio version 18.6.0), is an x64-only Microsoft-specific attribute that enables Intel Advanced Performance Extensions (APX) instruction generation for a specific function. When applied to a function declaration or definition, it allows the compiler to emit APX instructions in that function's body, even when APX is not globally enabled. This provides per-function opt-in to APX features without requiring `/arch:APX` for the entire translation unit. If a function with `[[msvc::enable(feature:APX)]]` has calls that are inlined into it, the inlined code is also compiled with APX instructions. -#### Example +#### `[[msvc::enable(feature:APX)]]` example ```cpp -// Compile without /arch:APX on x64 +// cl /std:c++latest apx.cpp /Zi /MD /O2 /d2offSSAPEEPLEA,SSAPEEPBUILDLEA,LEA_COMPLEX_ADDR,ADDR /link /incremental:no + +​int test(int argc) +{ + auto lambda = + [] + [[msvc::enable(feature:APX), msvc::noinline]] + (int argc) + { + return argc + 42; + }; + return lambda(argc); +} -[[msvc::enable(feature:APX)]] -int test(int a, int b) +[[msvc::enable(feature:APX), msvc::noinline]] +int test2(int x) { - return a + b; + return x + 42; } -int test2(int a, int b) +int main(int argc, char** argv) { - return a + b; + return test(argc) - test2(argc); } // Compiled output (relevant portions): // -// test: // APX enabled by [[msvc::enable(feature:APX)]] +// test: // APX enabled by [[msvc::enable(feature:APX)]] // {nf} add eax,ecx,edx // APX NDD: eax = ecx + edx (no EFLAGS update) // ret // @@ -179,7 +202,7 @@ int test2(int a, int b) // ret ``` -`test` uses the APX `{nf}` (no-flags) NDD instruction even though `/arch:APX` isn't enabled globally, while `test2` uses standard x64 instructions. The attribute provides per-function opt-in to APX. +`test` uses the APX `{nf}` (no-flags) New Data Destination (NDD) instruction even though `/feat:APX` isn't enabled globally, while `test2` uses standard x64 instructions. The attribute provides per-function APX opt-in. ### `[[msvc::flatten]]` diff --git a/docs/overview/what-s-new-for-msvc.md b/docs/overview/what-s-new-for-msvc.md index f354b8eb1d7..31aabe88305 100644 --- a/docs/overview/what-s-new-for-msvc.md +++ b/docs/overview/what-s-new-for-msvc.md @@ -1,7 +1,7 @@ --- title: "What's new for MSVC Build Tools" description: "The new features and fixes in the Microsoft C/C++ compiler and tools (MSVC)." -ms.date: 05/12/2026 +ms.date: 05/15/2026 ms.service: "visual-cpp" ms.subservice: "cpp-lang" ms.custom: intro-whats-new @@ -60,7 +60,7 @@ Fixed [C4319](/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c43 - **Sample-based PGO:** Preview support for sample-based profile guided optimizations. For more information, see [Use Sample Profile Guided Optimization (SPGO) to improve C++ performance](../build/sample-profile-guided-optimization.md). - The C++ backend optimizer improves code generation, including better inlining, loop optimizations, and pattern matching. - **Experimental support for x64 Unwind Version 3 MASM directives**. For more information, see [Unwind Version 3 directives (experimental)](../assembler/masm/directives-reference.md#x64-unwind-version-3-experimental) -- **Intel APX preview:** Preview support for Intel Advanced Performance Extensions. For more information, see [/feature (x64)](../build/reference/feature-x64.md). +- **Intel APX preview:** Preview support for Intel Advanced Performance Extensions. For more information, see [/feature (x64)](../build/reference/feature-x64.md), [`[[msvc::enable(feature:APX)]]`](../cpp/attributes.md#msvcenablefeatureapx), and [`[[msvc::disable(feature:APX)]]`](../cpp/attributes.md#msvcdisablefeatureapx). - Enabled debug info pruning to reduce PDB sizes. ### Deprecations From 8fc40814ae6bd86795037a85f619ec510c97edfa Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 15 May 2026 16:22:13 -0700 Subject: [PATCH 473/619] fix --- docs/cpp/attributes.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md index f59a6aa83d8..41b2e0f4e44 100644 --- a/docs/cpp/attributes.md +++ b/docs/cpp/attributes.md @@ -121,13 +121,12 @@ The `[[msvc::disable(feature:APX)]]` attribute, introduced in [MSVC Build Tools #### Example ```cpp -// cl /std:c++latest apx.cpp /Zi /MD /O2 /d2offSSAPEEPLEA,SSAPEEPBUILDLEA,LEA_COMPLEX_ADDR,ADDR /link /incremental:no +// cl /std:c++latest apx.cpp /feature:APX /Zi /MD /O2 /d2offSSAPEEPLEA,SSAPEEPBUILDLEA,LEA_COMPLEX_ADDR,ADDR /link /incremental:no ​int test(int argc) { auto lambda = [] - [[msvc::enable(feature:APX), msvc::noinline]] (int argc) { return argc + 42; @@ -135,7 +134,7 @@ The `[[msvc::disable(feature:APX)]]` attribute, introduced in [MSVC Build Tools return lambda(argc); } -[[msvc::enable(feature:APX), msvc::noinline]] +[[msvc::disable(feature:APX)]] int test2(int x) { return x + 42; @@ -148,16 +147,14 @@ int main(int argc, char** argv) // Compiled output (relevant portions): // -// test: // APX enabled by [[msvc::enable(feature:APX)]] -// {nf} add eax,ecx,edx // APX NDD: eax = ecx + edx (no EFLAGS update) +// test2() is compiled without APX instructions because it has the attribute, e.g.: +// +// add eax,ecx,edx // instead of APX NDD: eax = ecx + edx (no EFLAGS update) // ret // -// test2: // Standard x64 — APX not enabled globally -// lea eax,[rcx+rdx] // Standard x64 addition -// ret ``` -`test` uses the APX `{nf}` (no-flags) New Data Destination (NDD) instruction, while `test2` uses standard x64 instructions. The attribute affects only the function it's applied to. +The function `test()` and the lambda inside `test()` are compiled with APX `{nf}` (no-flags) New Data Destination (NDD) instructions because of the `/feature:APX` flag, but `test2()` isn't because it has the attribute. ### `[[msvc::enable(feature:APX)]]` @@ -193,7 +190,7 @@ int main(int argc, char** argv) // Compiled output (relevant portions): // -// test: // APX enabled by [[msvc::enable(feature:APX)]] +// lambda inside test: // APX enabled by [[msvc::enable(feature:APX)]] // {nf} add eax,ecx,edx // APX NDD: eax = ecx + edx (no EFLAGS update) // ret // @@ -202,7 +199,7 @@ int main(int argc, char** argv) // ret ``` -`test` uses the APX `{nf}` (no-flags) New Data Destination (NDD) instruction even though `/feat:APX` isn't enabled globally, while `test2` uses standard x64 instructions. The attribute provides per-function APX opt-in. +`test` itself doesn't use the APX `{nf}` (no-flags) New Data Destination (NDD) instruction because `/feat:APX` isn't enabled globally, while the lambda inside `test` does. The attribute provides per-function APX opt-in. ### `[[msvc::flatten]]` From 82fcc5af0e9a03cdbcc709ad9e7b5d1cfe398e7b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 15 May 2026 17:00:46 -0700 Subject: [PATCH 474/619] update --- docs/cpp/attributes.md | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md index 41b2e0f4e44..a2651c31af1 100644 --- a/docs/cpp/attributes.md +++ b/docs/cpp/attributes.md @@ -121,12 +121,13 @@ The `[[msvc::disable(feature:APX)]]` attribute, introduced in [MSVC Build Tools #### Example ```cpp -// cl /std:c++latest apx.cpp /feature:APX /Zi /MD /O2 /d2offSSAPEEPLEA,SSAPEEPBUILDLEA,LEA_COMPLEX_ADDR,ADDR /link /incremental:no +// cl /std:c++latest apx.cpp /feature:APX /Zi /MD /O2 /link /incremental:no ​int test(int argc) { auto lambda = [] + [[msvc::disable(feature:APX)]] (int argc) { return argc + 42; @@ -147,15 +148,13 @@ int main(int argc, char** argv) // Compiled output (relevant portions): // -// test2() is compiled without APX instructions because it has the attribute, e.g.: +// test2(), and the lambda inside test(), are compiled without APX New Data Destination (NDD) +// instructions because they have the attribute, e.g.: // -// add eax,ecx,edx // instead of APX NDD: eax = ecx + edx (no EFLAGS update) -// ret +// add eax,ecx,edx instead of APX NDD: eax = ecx + edx (no EFLAGS update) // ``` -The function `test()` and the lambda inside `test()` are compiled with APX `{nf}` (no-flags) New Data Destination (NDD) instructions because of the `/feature:APX` flag, but `test2()` isn't because it has the attribute. - ### `[[msvc::enable(feature:APX)]]` The `[[msvc::enable(feature:APX)]]` attribute, introduced in [MSVC Build Tools version 14.51](../overview/what-s-new-for-msvc.md#whats-new-for-msvc-build-tools-version-1451) (Visual Studio version 18.6.0), is an x64-only Microsoft-specific attribute that enables Intel Advanced Performance Extensions (APX) instruction generation for a specific function. When applied to a function declaration or definition, it allows the compiler to emit APX instructions in that function's body, even when APX is not globally enabled. This provides per-function opt-in to APX features without requiring `/arch:APX` for the entire translation unit. If a function with `[[msvc::enable(feature:APX)]]` has calls that are inlined into it, the inlined code is also compiled with APX instructions. @@ -163,7 +162,7 @@ The `[[msvc::enable(feature:APX)]]` attribute, introduced in [MSVC Build Tools v #### `[[msvc::enable(feature:APX)]]` example ```cpp -// cl /std:c++latest apx.cpp /Zi /MD /O2 /d2offSSAPEEPLEA,SSAPEEPBUILDLEA,LEA_COMPLEX_ADDR,ADDR /link /incremental:no +// cl /std:c++latest apx.cpp /Zi /MD /O2 /link /incremental:no ​int test(int argc) { @@ -190,16 +189,13 @@ int main(int argc, char** argv) // Compiled output (relevant portions): // -// lambda inside test: // APX enabled by [[msvc::enable(feature:APX)]] -// {nf} add eax,ecx,edx // APX NDD: eax = ecx + edx (no EFLAGS update) -// ret -// -// test2: // Standard x64 — APX not enabled globally -// lea eax,[rcx+rdx] // Standard x64 addition +// test2(), and the lambda inside test(), are compiled with APX instructionsNew Data Destination (NDD) +// instructions because they have the attribute, e.g. +// instead of add eax,ecx,edx, get APX NDD: eax = ecx + edx (no EFLAGS update) // ret ``` -`test` itself doesn't use the APX `{nf}` (no-flags) New Data Destination (NDD) instruction because `/feat:APX` isn't enabled globally, while the lambda inside `test` does. The attribute provides per-function APX opt-in. +`test` itself doesn't use the APX `{nf}` (no-flags) New Data Destination (NDD) instruction because `/feat:APX` isn't enabled globally, but the lambda inside `test` does because of the attribute. The attribute provides per-function APX opt-in. ### `[[msvc::flatten]]` From 5943f7d322a995c650ecbc55a9c752313c87f4a7 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 15 May 2026 18:41:14 -0700 Subject: [PATCH 475/619] simplify --- docs/cpp/attributes.md | 36 +++++------------------------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md index a2651c31af1..5e6cfc32fc0 100644 --- a/docs/cpp/attributes.md +++ b/docs/cpp/attributes.md @@ -121,8 +121,8 @@ The `[[msvc::disable(feature:APX)]]` attribute, introduced in [MSVC Build Tools #### Example ```cpp -// cl /std:c++latest apx.cpp /feature:APX /Zi /MD /O2 /link /incremental:no - +// The following shows how to disable APX instructions for specific functions, +// even when APX is enabled globally with /feature:APX ​int test(int argc) { auto lambda = @@ -140,19 +140,6 @@ int test2(int x) { return x + 42; } - -int main(int argc, char** argv) -{ - return test(argc) - test2(argc); -} - -// Compiled output (relevant portions): -// -// test2(), and the lambda inside test(), are compiled without APX New Data Destination (NDD) -// instructions because they have the attribute, e.g.: -// -// add eax,ecx,edx instead of APX NDD: eax = ecx + edx (no EFLAGS update) -// ``` ### `[[msvc::enable(feature:APX)]]` @@ -162,13 +149,14 @@ The `[[msvc::enable(feature:APX)]]` attribute, introduced in [MSVC Build Tools v #### `[[msvc::enable(feature:APX)]]` example ```cpp -// cl /std:c++latest apx.cpp /Zi /MD /O2 /link /incremental:no +// The following shows how to enable APX instructions for specific functions, +// even when APX isn't enabled globally with /feature:APX ​int test(int argc) { auto lambda = [] - [[msvc::enable(feature:APX), msvc::noinline]] + [[msvc::enable(feature:APX)]] (int argc) { return argc + 42; @@ -181,22 +169,8 @@ int test2(int x) { return x + 42; } - -int main(int argc, char** argv) -{ - return test(argc) - test2(argc); -} - -// Compiled output (relevant portions): -// -// test2(), and the lambda inside test(), are compiled with APX instructionsNew Data Destination (NDD) -// instructions because they have the attribute, e.g. -// instead of add eax,ecx,edx, get APX NDD: eax = ecx + edx (no EFLAGS update) -// ret ``` -`test` itself doesn't use the APX `{nf}` (no-flags) New Data Destination (NDD) instruction because `/feat:APX` isn't enabled globally, but the lambda inside `test` does because of the attribute. The attribute provides per-function APX opt-in. - ### `[[msvc::flatten]]` The Microsoft-specific attribute `[[msvc::flatten]]` is similar to `[[msvc::forceinline_calls]]`, and can be used in the same places and in the same way. The difference is that `[[msvc::flatten]]` will `[[msvc::forceinline_calls]]` all calls in the scope it's applied to recursively, until no calls are left. This may have consequences for the resulting code size growth of the function or the throughput of the compiler, which you must manage manually. From 2bb18f484b2fbd3a31113e91bdcf42d64b4c0da6 Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo Teixeira Date: Mon, 18 May 2026 11:28:10 -0700 Subject: [PATCH 476/619] - x64 ABI cleanup with "Content Mentor" help. - APX Calling Convention - APX setjmp/longjmp - Unwind V3 - Beta. --- docs/build/exception-handling-x64.md | 190 +++++---- docs/build/toc.yml | 2 + docs/build/x64-calling-convention.md | 98 +++-- docs/build/x64-software-conventions.md | 42 +- docs/build/x64-unwind-information-v3.md | 539 ++++++++++++++++++++++++ 5 files changed, 728 insertions(+), 143 deletions(-) create mode 100644 docs/build/x64-unwind-information-v3.md diff --git a/docs/build/exception-handling-x64.md b/docs/build/exception-handling-x64.md index 8e35eb70ffd..a0cd688e6ab 100644 --- a/docs/build/exception-handling-x64.md +++ b/docs/build/exception-handling-x64.md @@ -9,27 +9,31 @@ ms.assetid: 41fecd2d-3717-4643-b21c-65dcd2f18c93 An overview of structured exception handling and C++ exception handling coding conventions and behavior on the x64. For general information on exception handling, see [Exception Handling in Microsoft C++](../cpp/exception-handling-in-visual-cpp.md). -## Unwind data for exception handling, debugger support +## Unwind data for exception handling and debugger support -Several data structures are required for exception handling and debugging support. +To recover nonvolatile registers when an exception is handled, nonleaf functions are annotated with static data. This data, commonly referred to as "Function Unwind Information", describes how to properly unwind the function at an arbitrary instruction. This data is stored as *pdata*, or procedure data, which in turn refers to *xdata*, the exception handling data. + +The Function Unwind Information is composed of several data structures, described next. + +For Unwind Information supporting the Intel APX (Advanced Performance Extensions), see the [Unwind V3 Preview Specification](../build/x64-unwind-information-v3.md). ### struct RUNTIME_FUNCTION Table-based exception handling requires a table entry for all functions that allocate stack space or call another function (for example, nonleaf functions). Function table entries have the format: -|Size|Value| +| Size | Value | |-|-| |ULONG|Function start address| |ULONG|Function end address| |ULONG|Unwind info address| -The RUNTIME_FUNCTION structure must be DWORD aligned in memory. All addresses are image relative, that is, they're 32-bit offsets from the starting address of the image that contains the function table entry. These entries are sorted, and put in the .pdata section of a PE32+ image. For dynamically generated functions [JIT compilers], the runtime to support these functions must either use RtlInstallFunctionTableCallback or RtlAddFunctionTable to provide this information to the operating system. Failure to do so will result in unreliable exception handling and debugging of processes. +The `RUNTIME_FUNCTION` structure must be `DWORD` aligned in memory. All addresses are image relative, that is, they're 32-bit offsets from the starting address of the image that contains the function table entry. These entries are sorted, and put in the `.pdata` section of a PE32+ image. For dynamically generated functions [JIT compilers], the runtime to support these functions must either use `RtlInstallFunctionTableCallback` or `RtlAddFunctionTable` to provide this information to the operating system. Failure to do so results in unreliable exception handling and debugging of processes. ### struct UNWIND_INFO -The unwind data info structure is used to record the effects a function has on the stack pointer, and where the nonvolatile registers are saved on the stack: +The unwind data info structure records the effects a function has on the stack pointer and where the nonvolatile registers are saved on the stack: -|Size|Value| +| Size | Value | |-|-| |UBYTE: 3|Version| |UBYTE: 5|Flags| @@ -42,20 +46,20 @@ The unwind data info structure is used to record the effects a function has on t (1) Exception Handler -|Size|Value| +| Size | Value | |-|-| |ULONG|Address of exception handler| |variable|Language-specific handler data (optional)| (2) Chained Unwind Info -|Size|Value| +| Size | Value | |-|-| |ULONG|Function start address| |ULONG|Function end address| |ULONG|Unwind info address| -The UNWIND_INFO structure must be DWORD aligned in memory. Here's what each field means: +The `UNWIND_INFO` structure must be `DWORD` aligned in memory. Here's what each field means: - **Version** @@ -67,9 +71,9 @@ The UNWIND_INFO structure must be DWORD aligned in memory. Here's what each fiel |Flag|Description| |-|-| - |`UNW_FLAG_EHANDLER`| The function has an exception handler that should be called when looking for functions that need to examine exceptions.| - |`UNW_FLAG_UHANDLER`| The function has a termination handler that should be called when unwinding an exception.| - |`UNW_FLAG_CHAININFO`| This unwind info structure is not the primary one for the procedure. Instead, the chained unwind info entry is the contents of a previous RUNTIME_FUNCTION entry. For information, see [Chained unwind info structures](#chained-unwind-info-structures). If this flag is set, then the UNW_FLAG_EHANDLER and UNW_FLAG_UHANDLER flags must be cleared. Also, the frame register and fixed-stack allocation fields must have the same values as in the primary unwind info.| + |`UNW_FLAG_EHANDLER`| The function has an exception handler that the system calls when looking for functions that need to examine exceptions.| + |`UNW_FLAG_UHANDLER`| The function has a termination handler that the system calls when unwinding an exception.| + |`UNW_FLAG_CHAININFO`| This unwind info structure isn't the primary one for the procedure. Instead, the chained unwind info entry is the contents of a previous `RUNTIME_FUNCTION` entry. For information, see [Chained unwind info structures](#chained-unwind-info-structures). If this flag is set, then the `UNW_FLAG_EHANDLER` and `UNW_FLAG_UHANDLER` flags must be cleared. Also, the frame register and fixed-stack allocation fields must have the same values as in the primary unwind info.| - **Size of prolog** @@ -77,23 +81,23 @@ The UNWIND_INFO structure must be DWORD aligned in memory. Here's what each fiel - **Count of unwind codes** - The number of slots in the unwind codes array. Some unwind codes, for example, UWOP_SAVE_NONVOL, require more than one slot in the array. + The number of slots in the unwind codes array. Some unwind codes, such as `UWOP_SAVE_NONVOL`, require more than one slot in the array. - **Frame register** - If nonzero, then the function uses a frame pointer (FP), and this field is the number of the nonvolatile register used as the frame pointer, using the same encoding for the operation info field of UNWIND_CODE nodes. + If nonzero, the function uses a frame pointer (FP), and this field is the number of the nonvolatile register used as the frame pointer, using the same encoding for the operation info field of `UNWIND_CODE` nodes. - **Frame register offset (scaled)** - If the frame register field is nonzero, this field is the scaled offset from RSP that is applied to the FP register when it's established. The actual FP register is set to RSP + 16 \* this number, allowing offsets from 0 to 240. This offset permits pointing the FP register into the middle of the local stack allocation for dynamic stack frames, allowing better code density through shorter instructions. (That is, more instructions can use the 8-bit signed offset form.) + If the frame register field is nonzero, this field is the scaled offset from `RSP` that will be applied the selected Frame Pointer (FP) register value. The actual FP register is set to `RSP` + 16 \* this number, which means you can use offsets from 0 to 240. This offset points the FP register into the middle of the local stack allocation for dynamic stack frames, so you get better code density through shorter instructions. (That is, more instructions can use the 8-bit signed offset form.) - **Unwind codes array** - An array of items that explains the effect of the prolog on the nonvolatile registers and RSP. See the section on UNWIND_CODE for the meanings of individual items. For alignment purposes, this array always has an even number of entries, and the final entry is potentially unused. In that case, the array is one longer than indicated by the count of unwind codes field. + An array of items that explains the effect of the prolog on the nonvolatile registers and `RSP`. See the section on `UNWIND_CODE` for the meanings of individual items. For alignment purposes, this array always has an even number of entries, and the final entry is potentially unused. In that case, the array is one longer than indicated by the count of unwind codes field. - **Address of exception handler** - An image-relative pointer to either the function's language-specific exception or termination handler, if flag UNW_FLAG_CHAININFO is clear and one of the flags UNW_FLAG_EHANDLER or UNW_FLAG_UHANDLER is set. + An image-relative pointer to either the function's language-specific exception or termination handler, if flag `UNW_FLAG_CHAININFO` is clear and one of the flags `UNW_FLAG_EHANDLER` or `UNW_FLAG_UHANDLER` is set. - **Language-specific handler data** @@ -101,13 +105,13 @@ The UNWIND_INFO structure must be DWORD aligned in memory. Here's what each fiel - **Chained Unwind Info** - If flag UNW_FLAG_CHAININFO is set, then the UNWIND_INFO structure ends with three UWORDs. These UWORDs represent the RUNTIME_FUNCTION information for the function of the chained unwind. + If flag `UNW_FLAG_CHAININFO` is set, the `UNWIND_INFO` structure ends with three `UWORD`s. These `UWORD`s represent the `RUNTIME_FUNCTION` information for the function of the chained unwind. ### struct UNWIND_CODE -The unwind code array is used to record the sequence of operations in the prolog that affect the nonvolatile registers and RSP. Each code item has this format: +Use the unwind code array to record the sequence of operations in the prolog that affect the nonvolatile registers and `RSP`. Each code item has this format: -|Size|Value| +| Size | Value | |-|-| |UBYTE|Offset in prolog| |UBYTE: 4|Unwind operation code| @@ -121,17 +125,17 @@ Offset (from the beginning of the prolog) of the end of the instruction that per #### Unwind operation code -Note: Certain operation codes require an unsigned offset to a value in the local stack frame. This offset is from the start, that is, the lowest address of the fixed stack allocation. If the Frame Register field in the UNWIND_INFO is zero, this offset is from RSP. If the Frame Register field is nonzero, this offset is from where RSP was located when the FP register was established. It equals the FP register minus the FP register offset (16 \* the scaled frame register offset in the UNWIND_INFO). If an FP register is used, then any unwind code taking an offset must only be used after the FP register is established in the prolog. +Certain operation codes require an unsigned offset to a value in the local stack frame. This offset is from the start, that is, the lowest address of the fixed stack allocation. If the Frame Register field in the `UNWIND_INFO` is zero, this offset is from `RSP`. If the Frame Register field is nonzero, this offset is from where `RSP` was located when the FP register was established. It equals the FP register minus the FP register offset (16 \* the scaled frame register offset in the `UNWIND_INFO`). If an FP register is used, then any unwind code taking an offset must only be used after the FP register is established in the prolog. -For all opcodes except `UWOP_SAVE_XMM128` and `UWOP_SAVE_XMM128_FAR`, the offset is always a multiple of 8, because all stack values of interest are stored on 8-byte boundaries (the stack itself is always 16-byte aligned). For operation codes that take a short offset (less than 512K), the final USHORT in the nodes for this code holds the offset divided by 8. For operation codes that take a long offset (512K <= offset < 4GB), the final two USHORT nodes for this code hold the offset (in little-endian format). +For all opcodes except `UWOP_SAVE_XMM128` and `UWOP_SAVE_XMM128_FAR`, the offset is always a multiple of 8, because all stack values of interest are stored on 8-byte boundaries (the stack itself is always 16-byte aligned). For operation codes that take a short offset (less than 512K), the final `USHORT` in the nodes for this code holds the offset divided by 8. For operation codes that take a long offset (512K <= offset < 4GB), the final two `USHORT` nodes for this code hold the offset (in little-endian format). -For the opcodes `UWOP_SAVE_XMM128` and `UWOP_SAVE_XMM128_FAR`, the offset is always a multiple of 16, since all 128-bit XMM operations must occur on 16-byte aligned memory. Therefore, a scale factor of 16 is used for `UWOP_SAVE_XMM128`, permitting offsets of less than 1M. +For the opcodes `UWOP_SAVE_XMM128` and `UWOP_SAVE_XMM128_FAR`, the offset is always a multiple of 16, since all 128-bit `XMM` operations must occur on 16-byte aligned memory. Therefore, a scale factor of 16 is used for `UWOP_SAVE_XMM128`, permitting offsets of less than 1M. The unwind operation code is one of these values: - `UWOP_PUSH_NONVOL` (0) 1 node - Push a nonvolatile integer register, decrementing RSP by 8. The operation info is the number of the register. Because of the constraints on epilogs, `UWOP_PUSH_NONVOL` unwind codes must appear first in the prolog and correspondingly, last in the unwind code array. This relative ordering applies to all other unwind codes except `UWOP_PUSH_MACHFRAME`. + Push a nonvolatile integer register, decrementing `RSP` by 8. The operation info is the number of the register. Because of the constraints on epilogs, `UWOP_PUSH_NONVOL` unwind codes must appear first in the prolog and correspondingly, last in the unwind code array. This relative ordering applies to all other unwind codes except `UWOP_PUSH_MACHFRAME`. - `UWOP_ALLOC_LARGE` (1) 2 or 3 nodes @@ -151,7 +155,7 @@ The unwind operation code is one of these values: - `UWOP_SET_FPREG` (3) 1 node - Establish the frame pointer register by setting the register to some offset of the current RSP. The offset is equal to the Frame Register offset (scaled) field in the UNWIND_INFO \* 16, allowing offsets from 0 to 240. The use of an offset permits establishing a frame pointer that points to the middle of the fixed stack allocation, helping code density by allowing more accesses to use short instruction forms. The operation info field is reserved and shouldn't be used. + Establish the frame pointer register by setting the register to some offset of the current `RSP`. The offset is equal to the Frame Register offset (scaled) field in the `UNWIND_INFO` \* 16, allowing offsets from 0 to 240. The use of an offset permits establishing a frame pointer that points to the middle of the fixed stack allocation, helping code density by allowing more accesses to use short instruction forms. The operation info field is reserved and shouldn't be used. - `UWOP_SAVE_NONVOL` (4) 2 nodes @@ -163,52 +167,52 @@ The unwind operation code is one of these values: - `UWOP_SAVE_XMM128` (8) 2 nodes - Save all 128 bits of a nonvolatile XMM register on the stack. The operation info is the number of the register. The scaled-by-16 stack offset is recorded in the next slot. + Save all 128 bits of a nonvolatile `XMM` register on the stack. The operation info is the number of the register. The scaled-by-16 stack offset is recorded in the next slot. - `UWOP_SAVE_XMM128_FAR` (9) 3 nodes - Save all 128 bits of a nonvolatile XMM register on the stack with a long offset. The operation info is the number of the register. The unscaled stack offset is recorded in the next two slots. + Save all 128 bits of a nonvolatile `XMM` register on the stack with a long offset. The operation info is the number of the register. The unscaled stack offset is recorded in the next two slots. - `UWOP_PUSH_MACHFRAME` (10) 1 node - Push a machine frame. This unwind code is used to record the effect of a hardware interrupt or exception. There are two forms. If the operation info equals 0, one of these frames has been pushed on the stack: + Push a machine frame. This unwind code records the effect of a hardware interrupt or exception. It has two forms. A value of 0, indicates hardware has pushed a frame such as this on the stack: |Location|Value| |-|-| - |RSP+32|SS| - |RSP+24|Old RSP| - |RSP+16|EFLAGS| - |RSP+8|CS| - |RSP|RIP| + |`RSP`+32|`SS`| + |`RSP`+24|Old `RSP`| + |`RSP`+16|`EFLAGS`| + |`RSP`+8|`CS`| + |`RSP`|`RIP`| - If the operation info equals 1, then one of these frames has been pushed: + A value of 1, indicates hardware has pushed a frame such as this on the stack: |Location|Value| |-|-| - |RSP+40|SS| - |RSP+32|Old RSP| - |RSP+24|EFLAGS| - |RSP+16|CS| - |RSP+8|RIP| - |RSP|Error code| + |`RSP`+40|`SS`| + |`RSP`+32|Old `RSP`| + |`RSP`+24|`EFLAGS`| + |`RSP`+16|`CS`| + |`RSP`+8|`RIP`| + |`RSP`|Error code| This unwind code always appears in a dummy prolog, which is never actually executed, but instead appears before the real entry point of an interrupt routine, and exists only to provide a place to simulate the push of a machine frame. `UWOP_PUSH_MACHFRAME` records that simulation, which indicates the machine has conceptually done this operation: - 1. Pop RIP return address from top of stack into *Temp* + 1. Pop `RIP` return address from top of stack into *Temp* - 1. Push SS + 1. Push `SS` - 1. Push old RSP + 1. Push old `RSP` - 1. Push EFLAGS + 1. Push `EFLAGS` - 1. Push CS + 1. Push `CS` 1. Push *Temp* 1. Push Error Code (if op info equals 1) - The simulated `UWOP_PUSH_MACHFRAME` operation decrements RSP by 40 (op info equals 0) or 48 (op info equals 1). + The simulated `UWOP_PUSH_MACHFRAME` operation decrements `RSP` by 40 (if op info equals 0) or 48 (if op info equals 1). #### Operation info @@ -216,57 +220,57 @@ The meaning of the operation info bits depends upon the operation code. To encod |Bit|Register| |-|-| -|0|RAX| -|1|RCX| -|2|RDX| -|3|RBX| -|4|RSP| -|5|RBP| -|6|RSI| -|7|RDI| -|8 to 15|R8 to R15| +|0|`RAX`| +|1|`RCX`| +|2|`RDX`| +|3|`RBX`| +|4|`RSP`| +|5|`RBP`| +|6|`RSI`| +|7|`RDI`| +|8 to 15|`R8` to `R15`| ### Chained unwind info structures -If the UNW_FLAG_CHAININFO flag is set, then an unwind info structure is a secondary one, and the shared exception-handler/chained-info address field contains the primary unwind information. This sample code retrieves the primary unwind information, assuming that `unwindInfo` is the structure that has the UNW_FLAG_CHAININFO flag set. +If the `UNW_FLAG_CHAININFO` flag is set, then an unwind info structure is a secondary one, and the shared exception-handler/chained-info address field contains the primary unwind information. This sample code retrieves the primary unwind information, assuming that `unwindInfo` is the structure that has the `UNW_FLAG_CHAININFO` flag set. ```cpp PRUNTIME_FUNCTION primaryUwindInfo = (PRUNTIME_FUNCTION)&(unwindInfo->UnwindCode[( unwindInfo->CountOfCodes + 1 ) & ~1]); ``` -Chained info is useful in two situations. First, it can be used for noncontiguous code segments. By using chained info, you can reduce the size of the required unwind information, because you do not have to duplicate the unwind codes array from the primary unwind info. +Chained info is useful in two situations. First, it can be used for noncontiguous code segments. By using chained info, you can reduce the size of the required unwind information, because you don't have to duplicate the unwind codes array from the primary unwind info. -You can also use chained info to group volatile register saves. The compiler may delay saving some volatile registers until it is outside of the function entry prolog. You can record them by having primary unwind info for the portion of the function before the grouped code, and then setting up chained info with a non-zero size of prolog, where the unwind codes in the chained info reflect saves of the nonvolatile registers. In that case, the unwind codes are all instances of UWOP_SAVE_NONVOL. A grouping that saves nonvolatile registers by using a PUSH or modifies the RSP register by using an additional fixed stack allocation is not supported. +You can also use chained info to group volatile register saves. The compiler might delay saving some volatile registers until it is outside of the function entry prolog. You can record them by having primary unwind info for the portion of the function before the grouped code, and then setting up chained info with a nonzero size of prolog, where the unwind codes in the chained info reflect saves of the nonvolatile registers. In that case, the unwind codes are all instances of `UWOP_SAVE_NONVOL`. A grouping that saves nonvolatile registers by using a `PUSH` or modifies the `RSP` register by using an additional fixed stack allocation isn't supported. -An UNWIND_INFO item that has UNW_FLAG_CHAININFO set can contain a RUNTIME_FUNCTION entry whose UNWIND_INFO item also has UNW_FLAG_CHAININFO set, sometimes called *multiple shrink-wrapping*. Eventually, the chained unwind info pointers arrive at an UNWIND_INFO item that has UNW_FLAG_CHAININFO cleared. This item is the primary UNWIND_INFO item, which points to the actual procedure entry point. +An `UNWIND_INFO` item that has `UNW_FLAG_CHAININFO` set can contain a `RUNTIME_FUNCTION` entry whose `UNWIND_INFO` item also has `UNW_FLAG_CHAININFO` set, sometimes called *multiple shrink-wrapping*. Eventually, the chained unwind info pointers arrive at an `UNWIND_INFO` item that has `UNW_FLAG_CHAININFO` cleared. This item is the primary `UNWIND_INFO` item, which points to the actual procedure entry point. ## Unwind procedure -The unwind code array is sorted into descending order. When an exception occurs, the complete context is stored by the operating system in a context record. The exception dispatch logic is then invoked, which repeatedly executes these steps to find an exception handler: +The unwind code array is sorted into descending order. When an exception occurs, the operating system stores the complete context in a context record. The exception dispatch logic is then invoked, which repeatedly executes these steps to find an exception handler: -1. Use the current RIP stored in the context record to search for a RUNTIME_FUNCTION table entry that describes the current function (or function portion, for chained UNWIND_INFO entries). +1. Use the current `RIP` stored in the context record to search for a `RUNTIME_FUNCTION` table entry that describes the current function (or function portion, for chained `UNWIND_INFO` entries). -1. If no function table entry is found, then it's in a leaf function, and RSP directly addresses the return pointer. The return pointer at [RSP] is stored in the updated context, the simulated RSP is incremented by 8, and step 1 is repeated. +1. If the search doesn't find a function table entry, the code is assumed to be part of a leaf function, and `RSP` directly addresses the return pointer. The return pointer at [`RSP`] is stored in the updated context, the simulated `RSP` is incremented by 8, and step 1 is repeated. -1. If a function table entry is found, RIP can lie within three regions: a) in an epilog, b) in the prolog, or c) in code that may be covered by an exception handler. +1. If the search finds a function table entry, `RIP` can lie within three regions: a) in an epilog, b) in the prolog, or c) in code that might be covered by an exception handler. - - Case a) If the RIP is within an epilog, then control is leaving the function, there can be no exception handler associated with this exception for this function, and the effects of the epilog must be continued to compute the context of the caller function. To determine if the RIP is within an epilog, the code stream from RIP onward is examined. If that code stream can be matched to the trailing portion of a legitimate epilog, then it's in an epilog, and the remaining portion of the epilog is simulated, with the context record updated as each instruction is processed. After this processing, step 1 is repeated. + - Case a) If the `RIP` is within an epilog, control is leaving the function. There can be no exception handler associated with this exception for this function. The effects of the epilog must continue to compute the context of the caller function. To determine if the `RIP` is within an epilog, the code stream from `RIP` onward is examined. If that code stream matches the trailing portion of a legitimate epilog, it's in an epilog. The remaining portion of the epilog is simulated, with the context record updated as each instruction is processed. After this processing, step 1 is repeated. - - Case b) If the RIP lies within the prologue, then control hasn't entered the function, there can be no exception handler associated with this exception for this function, and the effects of the prolog must be undone to compute the context of the caller function. The RIP is within the prolog if the distance from the function start to the RIP is less than or equal to the prolog size encoded in the unwind info. The effects of the prolog are unwound by scanning forward through the unwind codes array for the first entry with an offset less than or equal to the offset of the RIP from the function start, then undoing the effect of all remaining items in the unwind code array. Step 1 is then repeated. + - Case b) If the `RIP` lies within the prolog, control hasn't entered the function. There can be no exception handler associated with this exception for this function. The effects of the prolog must be undone to compute the context of the caller function. The `RIP` is within the prolog if the distance from the function start to the `RIP` is less than or equal to the prolog size encoded in the unwind info. The unwinder scans forward through the unwind codes array for the first entry with an offset less than or equal to the offset of the `RIP` from the function start, then undoes the effect of all remaining items in the unwind code array. Step 1 is then repeated. - - Case c) If the RIP isn't within a prolog or epilog, and the function has an exception handler (UNW_FLAG_EHANDLER is set), then the language-specific handler is called. The handler scans its data and calls filter functions as appropriate. The language-specific handler can return that the exception was handled or that the search is to be continued. It can also initiate an unwind directly. + - Case c) If the `RIP` isn't within a prolog or epilog, and the function has an exception handler (`UNW_FLAG_EHANDLER` is set), the language-specific handler is called. The handler scans its data and calls filter functions as appropriate. The language-specific handler can return that the exception was handled or that the search is to be continued. It can also initiate an unwind directly. -1. If the language-specific handler returns a handled status, then execution is continued using the original context record. +1. If the language-specific handler returns a handled status, execution continues by using the original context record. -1. If there's no language-specific handler or the handler returns a "continue search" status, then the context record must be unwound to the state of the caller. It's done by processing all of the unwind code array elements, undoing the effect of each. Step 1 is then repeated. +1. If there's no language-specific handler or the handler returns a "continue search" status, the context record must be unwound to the state of the caller. The unwinder undoes the effect of each element in the unwind code array. Step 1 is then repeated. -When chained unwind info is involved, these basic steps are still followed. The only difference is that, while walking the unwind code array to unwind a prolog's effects, once the end of the array is reached, it's then linked to the parent unwind info and the entire unwind code array found there is walked. This linking continues until arriving at an unwind info without the UNW_CHAINED_INFO flag, and then it finishes walking its unwind code array. +When chained unwind info is involved, these basic steps are still followed. The only difference is that, while walking the unwind code array to unwind a prolog's effects, once the process reaches the end of the array, it links to the parent unwind info and walks the entire unwind code array found there. This linking continues until arriving at an unwind info without the `UNW_CHAINED_INFO` flag, and then it finishes walking its unwind code array. -The smallest set of unwind data is 8 bytes. This would represent a function that only allocated 128 bytes of stack or less, and possibly saved one nonvolatile register. It's also the size of a chained unwind info structure for a zero-length prolog with no unwind codes. +The smallest set of unwind data is 8 bytes. Such set represents a function that only allocated 128 bytes of stack or less, and possibly saved one nonvolatile register. It's also the size of a chained unwind info structure for a zero-length prolog with no unwind codes. ## Language-specific handler -The relative address of the language-specific handler is present in the UNWIND_INFO whenever flags UNW_FLAG_EHANDLER or UNW_FLAG_UHANDLER are set. As described in the previous section, the language-specific handler is called as part of the search for an exception handler or as part of an unwind. It has this prototype: +The `UNWIND_INFO` structure provides the relative address of the language-specific handler when either `UNW_FLAG_EHANDLER` or `UNW_FLAG_UHANDLER` flags are set. As described in the previous section, the search for an exception handler or the process of unwinding calls the language-specific handler. The handler uses this prototype: ```cpp typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE) ( @@ -298,15 +302,15 @@ typedef struct _DISPATCHER_CONTEXT { } DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT; ``` -**ControlPc** is the value of RIP within this function. This value is either an exception address or the address at which control left the establishing function. The RIP is used to determine if control is within some guarded construct inside this function, for example, a **`__try`** block for **`__try`**/**`__except`** or **`__try`**/**`__finally`**. +**ControlPc** is the value of `RIP` within this function. This value is either an exception address or the address at which control left the establishing function. The `RIP` is used to determine if control is within some guarded construct inside this function, for example, a **`__try`** block for **`__try`**/**`__except`** or **`__try`**/**`__finally`**. -**ImageBase** is the image base (load address) of the module containing this function, to be added to the 32-bit offsets used in the function entry and unwind info to record relative addresses. +**ImageBase** is the image base (load address) of the module containing this function. The 32-bit offsets used in the function entry and unwind info should be added to the ImageBase obtain the final address. -**FunctionEntry** supplies a pointer to the RUNTIME_FUNCTION function entry holding the function and unwind info image-base relative addresses for this function. +**FunctionEntry** supplies a pointer to the `RUNTIME_FUNCTION` function entry holding the function and unwind info image-base relative addresses for this function. **EstablisherFrame** is the address of the base of the fixed stack allocation for this function. -**TargetIp** Supplies an optional instruction address that specifies the continuation address of the unwind. This address is ignored if **EstablisherFrame** isn't specified. +**TargetIp** supplies an optional instruction address that specifies the continuation address of the unwind. This address is ignored if **EstablisherFrame** isn't specified. **ContextRecord** points to the exception context, for use by the system exception dispatch/unwind code. @@ -316,19 +320,19 @@ typedef struct _DISPATCHER_CONTEXT { ## Unwind helpers for MASM -In order to write proper assembly routines, there's a set of pseudo-operations that can be used in parallel with the actual assembly instructions to create the appropriate .pdata and .xdata. And, there's a set of macros that provide simplified use of the pseudo-operations for their most common uses. +To write proper assembly routines, use a set of pseudo-operations alongside the actual assembly instructions. These pseudo-operations create the appropriate `.pdata` and `.xdata`. Also, use a set of macros that simplify the use of these pseudo-operations for their most common uses. ### Raw pseudo-operations |Pseudo operation|Description| |-|-| -|PROC FRAME \[:*ehandler*]|Causes MASM to generate a function table entry in .pdata and unwind information in .xdata for a function's structured exception handling unwind behavior. If *ehandler* is present, this proc is entered in the .xdata as the language-specific handler.

      When the FRAME attribute is used, it must be followed by an .ENDPROLOG directive. If the function is a leaf function (as defined in [Function types](../build/stack-usage.md#function-types)) the FRAME attribute is unnecessary, as are the remainder of these pseudo-operations.| -|.PUSHREG *register*|Generates a UWOP_PUSH_NONVOL unwind code entry for the specified register number using the current offset in the prologue.

      Only use it with nonvolatile integer registers. For pushes of volatile registers, use an .ALLOCSTACK 8, instead| -|.SETFRAME *register*, *offset*|Fills in the frame register field and offset in the unwind information using the specified register and offset. The offset must be a multiple of 16 and less than or equal to 240. This directive also generates a UWOP_SET_FPREG unwind code entry for the specified register using the current prologue offset.| -|.ALLOCSTACK *size*|Generates a UWOP_ALLOC_SMALL or a UWOP_ALLOC_LARGE with the specified size for the current offset in the prologue.

      The *size* operand must be a multiple of 8.| -|.SAVEREG *register*, *offset*|Generates either a UWOP_SAVE_NONVOL or a UWOP_SAVE_NONVOL_FAR unwind code entry for the specified register and offset using the current prologue offset. MASM chooses the most efficient encoding.

      *offset* must be positive, and a multiple of 8. *offset* is relative to the base of the procedure's frame, which is generally in RSP, or, if using a frame pointer, the unscaled frame pointer.| -|.SAVEXMM128 *register*, *offset*|Generates either a UWOP_SAVE_XMM128 or a UWOP_SAVE_XMM128_FAR unwind code entry for the specified XMM register and offset using the current prologue offset. MASM chooses the most efficient encoding.

      *offset* must be positive, and a multiple of 16. *offset* is relative to the base of the procedure's frame, which is generally in RSP, or, if using a frame pointer, the unscaled frame pointer.| -|.PUSHFRAME \[*code*]|Generates a UWOP_PUSH_MACHFRAME unwind code entry. If the optional *code* is specified, the unwind code entry is given a modifier of 1. Otherwise the modifier is 0.| +|PROC FRAME \[:*ehandler*]|Causes MASM to generate a function table entry in `.pdata` and unwind information in `.xdata` for a function's structured exception handling unwind behavior. If *ehandler* is present, this proc is entered in the .xdata as the language-specific handler.

      When you use the FRAME attribute, follow it with an .ENDPROLOG directive. If the function is a leaf function (as defined in [Function types](../build/stack-usage.md#function-types)), the FRAME attribute is unnecessary, as are the remainder of these pseudo-operations.| +|.PUSHREG *register*|Generates a `UWOP_PUSH_NONVOL` unwind code entry for the specified register number using the current offset in the prologue.

      Only use it with nonvolatile integer registers. For pushes of volatile registers, use an .ALLOCSTACK 8, instead.| +|.SETFRAME *register*, *offset*|Fills in the frame register field and offset in the unwind information using the specified register and offset. The offset must be a multiple of 16 and less than or equal to 240. This directive also generates a `UWOP_SET_FPREG` unwind code entry for the specified register using the current prologue offset.| +|.ALLOCSTACK *size*|Generates a `UWOP_ALLOC_SMALL` or a `UWOP_ALLOC_LARGE` with the specified size for the current offset in the prologue.

      The *size* operand must be a multiple of 8.| +|.SAVEREG *register*, *offset*|Generates either a `UWOP_SAVE_NONVOL` or a `UWOP_SAVE_NONVOL_FAR` unwind code entry for the specified register and offset using the current prologue offset. MASM chooses the most efficient encoding.

      *offset* must be positive, and a multiple of 8. *offset* is relative to the base of the procedure's frame, which is generally in `RSP`, or, if using a frame pointer, the unscaled frame pointer.| +|.SAVEXMM128 *register*, *offset*|Generates either a `UWOP_SAVE_XMM128` or a `UWOP_SAVE_XMM128_FAR` unwind code entry for the specified `XMM` register and offset using the current prologue offset. MASM chooses the most efficient encoding.

      *offset* must be positive, and a multiple of 16. *offset* is relative to the base of the procedure's frame, which is generally in `RSP`, or, if using a frame pointer, the unscaled frame pointer.| +|.PUSHFRAME \[*code*]|Generates a `UWOP_PUSH_MACHFRAME` unwind code entry. If you specify the optional *code*, the unwind code entry gets a modifier of 1. Otherwise the modifier is 0.| |.ENDPROLOG|Signals the end of the prologue declarations. Must occur in the first 255 bytes of the function.| Here's a sample function prolog with proper usage of most of the opcodes: @@ -384,19 +388,19 @@ For more information about the epilog example, see [Epilog code](prolog-and-epil ### MASM macros -In order to simplify the use of the [Raw pseudo-operations](#raw-pseudo-operations), there's a set of macros, defined in ksamd64.inc, which can be used to create typical procedure prologues and epilogues. +To simplify the use of [Raw pseudo-operations](#raw-pseudo-operations), use the set of macros defined in `ksamd64.inc`. These macros help you create typical procedure prologues and epilogues. |Macro|Description| |-|-| -|alloc_stack(n)|Allocates a stack frame of n bytes (using `sub rsp, n`), and emits the appropriate unwind information (.allocstack n)| -|save_reg *reg*, *loc*|Saves a nonvolatile register *reg* on the stack at RSP offset *loc*, and emits the appropriate unwind information. (.savereg reg, loc)| -|push_reg *reg*|Pushes a nonvolatile register *reg* on the stack, and emits the appropriate unwind information. (.pushreg reg)| -|rex_push_reg *reg*|Saves a nonvolatile register on the stack using a 2-byte push, and emits the appropriate unwind information (.pushreg reg). Use this macro if the push is the first instruction in the function, to ensure that the function is hot-patchable.| -|save_xmm128 *reg*, *loc*|Saves a nonvolatile XMM register *reg* on the stack at RSP offset *loc*, and emits the appropriate unwind information (.savexmm128 reg, loc)| -|set_frame *reg*, *offset*|Sets the frame register *reg* to be the RSP + *offset* (using a `mov`, or an `lea`), and emits the appropriate unwind information (.set_frame reg, offset)| -|push_eflags|Pushes the eflags with a `pushfq` instruction, and emits the appropriate unwind information (.alloc_stack 8)| - -Here's a sample function prolog with proper usage of the macros: +|alloc_stack(n)|Allocates a stack frame of *n* bytes (using `sub rsp, n`), and emits the appropriate unwind information (.allocstack n)| +|save_reg *reg*, *loc*|Saves a nonvolatile register *reg* on the stack at `RSP` offset *loc*, and emits the appropriate unwind information (.savereg reg, loc)| +|push_reg *reg*|Pushes a nonvolatile register *reg* on the stack, and emits the appropriate unwind information (.pushreg reg)| +|rex_push_reg *reg*|Saves a nonvolatile register on the stack by using a 2-byte push, and emits the appropriate unwind information (.pushreg reg). Use this macro if the push is the first instruction in the function, to ensure that the function is hot-patchable.| +|save_xmm128 *reg*, *loc*|Saves a nonvolatile `XMM` register *reg* on the stack at `RSP` offset *loc*, and emits the appropriate unwind information (.savexmm128 reg, loc)| +|set_frame *reg*, *offset*|Sets the frame register *reg* to be the `RSP` + *offset* (using a `mov` or an `lea`), and emits the appropriate unwind information (.set_frame reg, offset)| +|push_eflags|Pushes the eflags by using a `pushfq` instruction, and emits the appropriate unwind information (.alloc_stack 8)| + +Here's a sample function prologue with proper usage of the macros: ```MASM sampleFrame struct diff --git a/docs/build/toc.yml b/docs/build/toc.yml index d9dcd53f723..639c828118b 100644 --- a/docs/build/toc.yml +++ b/docs/build/toc.yml @@ -324,6 +324,8 @@ items: href: ../build/prolog-and-epilog.md - name: x64 exception handling href: ../build/exception-handling-x64.md + - name: x64 Unwind Information V3 + href: ../build/x64-unwind-information-v3.md - name: Configure C++ projects for ARM processors expanded: false items: diff --git a/docs/build/x64-calling-convention.md b/docs/build/x64-calling-convention.md index ff47e9dfd76..955092926a1 100644 --- a/docs/build/x64-calling-convention.md +++ b/docs/build/x64-calling-convention.md @@ -19,7 +19,7 @@ There's a strict one-to-one correspondence between a function call's arguments a The x87 register stack is unused. It might be used by the callee, but consider it volatile across function calls. All floating point operations are done using the 16 XMM registers. -Integer arguments are passed in registers RCX, RDX, R8, and R9. Floating point arguments are passed in XMM0L, XMM1L, XMM2L, and XMM3L. 16-byte arguments are passed by reference. Parameter passing is described in detail in [Parameter passing](#parameter-passing). These registers, and RAX, R10, R11, XMM4, and XMM5, are considered *volatile*, or potentially changed by a callee on return. Register usage is documented in detail in [x64 register usage](x64-software-conventions.md#x64-register-usage) and [Caller/callee saved registers](#callercallee-saved-registers). +Integer arguments are passed in registers `RCX`, `RDX`, `R8`, and `R9`. Floating point arguments are passed in `XMM0L`, `XMM1L`, `XMM2L`, and `XMM3L`. 16-byte arguments are passed by reference. Parameter passing is described in detail in [Parameter passing](#parameter-passing). These registers, and `RAX`, `R10`, `R11`, `XMM4`, and `XMM5`, are considered *volatile*, or potentially changed by a callee on return. Register usage is documented in detail in [x64 register usage](x64-software-conventions.md#x64-register-usage) and [Caller/callee saved registers](#callercallee-saved-registers). For prototyped functions, all arguments are converted to the expected callee types before passing. The caller is responsible for allocating space for the callee's parameters. The caller must always allocate sufficient space to store four register parameters, even if the callee doesn't take that many parameters. This convention simplifies support for unprototyped C-language functions and vararg C/C++ functions. For vararg or unprototyped functions, any floating point values must be duplicated in the corresponding general-purpose register. Any parameters beyond the first four must be stored on the stack after the shadow store before the call. Vararg function details can be found in [Varargs](#varargs). Unprototyped function information is detailed in [Unprototyped functions](#unprototyped-functions). @@ -29,7 +29,7 @@ Most structures are aligned to their natural alignment. The primary exceptions a ## Unwindability -Leaf functions are functions that don't change any nonvolatile registers. A nonleaf function might change nonvolatile RSP, for example, by calling a function. Or, it could change RSP by allocating more stack space for local variables. To recover nonvolatile registers when an exception is handled, nonleaf functions are annotated with static data. The data describes how to properly unwind the function at an arbitrary instruction. This data is stored as *pdata*, or procedure data, which in turn refers to *xdata*, the exception handling data. The xdata contains the unwinding information, and can point to additional pdata or an exception handler function. +Leaf functions are functions that don't change any nonvolatile registers. A nonleaf function might change nonvolatile `RSP`, for example, by calling a function. Or, it could change `RSP` by allocating more stack space for local variables. To recover nonvolatile registers when an exception is handled, nonleaf functions are annotated with static data. The data describes how to properly unwind the function at an arbitrary instruction. This data is stored as *pdata*, or procedure data, which in turn refers to *xdata*, the exception handling data. The xdata contains the unwinding information, and can point to additional pdata or an exception handler function. Prologs and epilogs are highly restricted so that they can be properly described in xdata. The stack pointer must remain 16-byte aligned in any region of code that isn't part of an epilog or prolog, except within leaf functions. Leaf functions can be unwound simply by simulating a return, so pdata and xdata aren't required. For details about the proper structure of function prologs and epilogs, see [x64 prolog and epilog](../build/prolog-and-epilog.md). For more information about exception handling, and the exception handling and unwinding of pdata and xdata, see [x64 exception handling](../build/exception-handling-x64.md). @@ -37,9 +37,9 @@ Prologs and epilogs are highly restricted so that they can be properly described By default, the x64 calling convention passes the first four arguments to a function in registers. The registers used for these arguments depend on the position and type of the argument. Remaining arguments are passed on the stack in right-to-left order. The caller reserves the required stack space and writes these arguments to stack memory using store or move instructions, maintaining 8-byte alignment for each argument. -Integer valued arguments in the leftmost four positions are passed in left-to-right order in RCX, RDX, R8, and R9, respectively. The fifth and higher arguments are passed on the stack as previously described. All integer arguments in registers are right-justified, so the callee can ignore the upper bits of the register and access only the portion of the register necessary. +Integer valued arguments in the leftmost four positions are passed in left-to-right order in `RCX`, `RDX`, `R8`, and `R9`, respectively. The fifth and higher arguments are passed on the stack as previously described. All integer arguments in registers are right-justified, so the callee can ignore the upper bits of the register and access only the portion of the register necessary. -Any floating-point and double-precision arguments in the first four parameters are passed in XMM0 - XMM3, depending on position. Floating-point values are only placed in the integer registers RCX, RDX, R8, and R9 when there are varargs arguments. For details, see [Varargs](#varargs). Similarly, the XMM0 - XMM3 registers are ignored when the corresponding argument is an integer or pointer type. +Any floating-point and double-precision arguments in the first four parameters are passed in `XMM0` - `XMM3`, depending on position. Floating-point values are only placed in the integer registers `RCX`, `RDX`, `R8`, and `R9` when there are varargs arguments. For details, see [Varargs](#varargs). Similarly, the `XMM0` - `XMM3` registers are ignored when the corresponding argument is an integer or pointer type. [`__m128`](../cpp/m128.md) types, arrays, and strings are never passed by immediate value. Instead, a pointer is passed to memory allocated by the caller. Structs and unions of size 8, 16, 32, or 64 bits, and **`__m64`** types, are passed as if they were integers of the same size. Structs or unions of other sizes are passed as a pointer to memory allocated by the caller. For these aggregate types passed as a pointer, including **`__m128`**, the caller-allocated temporary memory must be 16-byte aligned. @@ -51,11 +51,11 @@ The following table summarizes how parameters are passed, by type and position f | Parameter type | fifth and higher | fourth | third | second | leftmost | |-|-|-|-|-|-| -| floating-point | stack | XMM3 | XMM2 | XMM1 | XMM0 | -| integer | stack | R9 | R8 | RDX | RCX | -| Aggregates (8, 16, 32, or 64 bits) and **`__m64`** | stack | R9 | R8 | RDX | RCX | -| Other aggregates, as pointers | stack | R9 | R8 | RDX | RCX | -| **`__m128`**, as a pointer | stack | R9 | R8 | RDX | RCX | +| floating-point | stack | `XMM3` | `XMM2` | `XMM1` | `XMM0` | +| integer | stack | `R9` | `R8` | `RDX` | `RCX` | +| Aggregates (8, 16, 32, or 64 bits) and **`__m64`** | stack | `R9` | `R8` | `RDX` | `RCX` | +| Other aggregates, as pointers | stack | `R9` | `R8` | `RDX` | `RCX` | +| **`__m128`**, as a pointer | stack | `R9` | `R8` | `RDX` | `RCX` | ### Example of argument passing 1 - all integers @@ -103,9 +103,9 @@ func2() { // RCX = 2, RDX = XMM1 = 1.0, and R8 = 7 ## Return values -A scalar return value that can fit into 64 bits, including the `__m64` type, is returned through RAX. Nonscalar types including floats, doubles, and vector types such as [`__m128`](../cpp/m128.md), [`__m128i`](../cpp/m128i.md), [`__m128d`](../cpp/m128d.md) are returned in XMM0. The state of unused bits in the value returned in RAX or XMM0 is undefined. +A scalar return value that can fit into 64 bits, including the `__m64` type, is returned through `RAX`. Nonscalar types including floats, doubles, and vector types such as [`__m128`](../cpp/m128.md), [`__m128i`](../cpp/m128i.md), [`__m128d`](../cpp/m128d.md) are returned in `XMM0`. The state of unused bits in the value returned in `RAX` or `XMM0` is undefined. -User-defined types can be returned by value from global functions and static member functions. To return a user-defined type by value in RAX, it must have a length of 1, 2, 4, 8, 16, 32, or 64 bits. It must also have no user-defined constructor, destructor, or copy assignment operator. It can have no private or protected nonstatic data members, and no nonstatic data members of reference type. It can't have base classes or virtual functions. And, it can only have data members that also meet these requirements. This definition is essentially the same as a C++03 POD type. Because the definition has changed in the C++11 standard, we don't recommend using `std::is_pod` for this test. Otherwise, the caller must allocate memory for the return value and pass a pointer to it as the first argument. The remaining arguments are then shifted one argument to the right. The same pointer must be returned by the callee in RAX. +User-defined types can be returned by value from global functions and static member functions. To return a user-defined type by value in `RAX`, it must have a length of 1, 2, 4, 8, 16, 32, or 64 bits. It must also have no user-defined constructor, destructor, or copy assignment operator. It can have no private or protected nonstatic data members, and no nonstatic data members of reference type. It can't have base classes or virtual functions. And, it can only have data members that also meet these requirements. This definition is essentially the same as a C++03 POD type. Because the definition has changed in the C++11 standard, we don't recommend using `std::is_pod` for this test. Otherwise, the caller must allocate memory for the return value and pass a pointer to it as the first argument. The remaining arguments are then shifted one argument to the right. The same pointer must be returned by the callee in `RAX`. These examples show how parameters and return values are passed for functions with the specified declarations: @@ -150,9 +150,11 @@ Struct2 func4(int a, double b, int c, float d); ## Caller/callee saved registers -The x64 ABI considers the registers RAX, RCX, RDX, R8, R9, R10, R11, and XMM0-XMM5 volatile. When present, the upper portions of YMM0-YMM15 and ZMM0-ZMM15 are also volatile. On AVX512VL, the ZMM, YMM, and XMM registers 16-31 are also volatile. When AMX support is present, the TMM tile registers are volatile. Consider volatile registers destroyed on function calls unless otherwise safety-provable by analysis such as whole program optimization. +The x64 ABI considers the registers `RAX`, `RCX`, `RDX`, `R8`, `R9`, `R10`, `R11`, and `XMM0`-`XMM5` volatile. When present, the upper portions of `YMM0`-`YMM15` and `ZMM0`-`ZMM15` are also volatile. On AVX512VL, the `ZMM`, `YMM`, and `XMM` registers 16-31 are also volatile. When AMX support is present, the `TMM` tile registers are volatile. Consider volatile registers destroyed on function calls unless otherwise safety-provable by analysis such as whole program optimization. -The x64 ABI considers registers RBX, RBP, RDI, RSI, RSP, R12, R13, R14, R15, and XMM6-XMM15 nonvolatile. They must be saved and restored by a function that uses them. +The x64 ABI considers registers `RBX`, `RBP`, `RDI`, `RSI`, `RSP`, `R12`, `R13`, `R14`, `R15`, and `XMM6`-`XMM15` nonvolatile. They must be saved and restored by a function that uses them. + +When APX support is present, registers `R16`-`R29` are volatile. `R30` and `R31` are nonvolatile. ## Function pointers @@ -160,7 +162,7 @@ Function pointers are simply pointers to the label of the respective function. T ## Floating-point support for older code -The MMX and floating-point stack registers (MM0-MM7/ST0-ST7) are preserved across context switches. There's no explicit calling convention for these registers. The use of these registers is strictly prohibited in kernel mode code. +The MMX and floating-point stack registers (`MM0`-`MM7`/`ST0`-`ST7`) are preserved across context switches. There's no explicit calling convention for these registers. The use of these registers is strictly prohibited in kernel mode code. ## FPCSR @@ -170,48 +172,84 @@ The x87 FPU control word register gets set using the following standard values a | Register\[bits] | Setting | |-|-| -| FPCSR\[0:6] | Exception masks all 1s (all exceptions masked) | -| FPCSR\[7] | Reserved - 0 | -| FPCSR\[8:9] | Precision Control - 10B (double precision) | -| FPCSR\[10:11] | Rounding control - 0 (round to nearest) | -| FPCSR\[12] | Infinity control - 0 (not used) | +| `FPCSR\[0:6]` | Exception masks all 1s (all exceptions masked) | +| `FPCSR\[7]` | Reserved - 0 | +| `FPCSR\[8:9]` | Precision Control - 10B (double precision) | +| `FPCSR\[10:11]` | Rounding control - 0 (round to nearest) | +| `FPCSR\[12]` | Infinity control - 0 (not used) | -A callee that modifies any of the fields within FPCSR must restore them before returning to its caller. Furthermore, a caller that has modified any of these fields must restore them to their standard values before invoking a callee, unless by agreement the callee expects the modified values. +A callee that modifies any of the fields within `FPCSR` must restore them before returning to its caller. Furthermore, a caller that has modified any of these fields must restore them to their standard values before invoking a callee, unless by agreement the callee expects the modified values. There are two exceptions to the rules about the nonvolatility of the control flags: -- In functions where the documented purpose of the given function is to modify the nonvolatile FPCSR flags. +- In functions where the documented purpose of the given function is to modify the nonvolatile `FPCSR` flags. - When it's provably correct that the violation of these rules results in a program that behaves the same as a program that doesn't violate the rules, for example, through whole-program analysis. +Despite being considered nonvolatile, there is no static unwind descriptor describing where it was saved and where it should be restored from. Exception-safe code which modifies `FPCSR` should resort to an exception finalizer (e.g. C++ destructor or a `__finally` clause) to restore it explicitly, when unwinding the stack. + ## MXCSR -The register state also includes MXCSR. The calling convention divides this register into a volatile portion and a nonvolatile portion. The volatile portion consists of the six status flags, in MXCSR\[0:5], while the rest of the register, MXCSR\[6:15], is considered nonvolatile. +The register state also includes `MXCSR`. The calling convention divides this register into a volatile portion and a nonvolatile portion. The volatile portion consists of the six status flags, in `MXCSR\[0:5]`, while the rest of the register, `MXCSR\[6:15]`, is considered nonvolatile. The nonvolatile portion is set to the following standard values at the start of program execution: | Register\[bits] | Setting | |-|-| -| MXCSR\[6] | Denormals are zeros - 0 | -| MXCSR\[7:12] | Exception masks all 1s (all exceptions masked) | -| MXCSR\[13:14] | Rounding control - 0 (round to nearest) | -| MXCSR\[15] | Flush to zero for masked underflow - 0 (off) | +| `MXCSR\[6]` | Denormals are zeros - 0 | +| `MXCSR\[7:12]` | Exception masks all 1s (all exceptions masked) | +| `MXCSR\[13:14]` | Rounding control - 0 (round to nearest) | +| `MXCSR\[15]` | Flush to zero for masked underflow - 0 (off) | -A callee that modifies any of the nonvolatile fields within MXCSR must restore them before returning to its caller. Furthermore, a caller that has modified any of these fields must restore them to their standard values before invoking a callee, unless by agreement the callee expects the modified values. +A callee that modifies any of the nonvolatile fields within `MXCSR` must restore them before returning to its caller. Furthermore, a caller that has modified any of these fields must restore them to their standard values before invoking a callee, unless by agreement the callee expects the modified values. There are two exceptions to the rules about the nonvolatility of the control flags: -- In functions where the documented purpose of the given function is to modify the nonvolatile MXCSR flags. +- In functions where the documented purpose of the given function is to modify the nonvolatile `MXCSR` flags. - When it's provably correct that the violation of these rules results in a program that behaves the same as a program that doesn't violate the rules, for example, through whole-program analysis. -Make no assumptions about the MXCSR register's volatile portion state across a function boundary, unless the function documentation explicitly describes it. +Make no assumptions about the `MXCSR` register's volatile portion state across a function boundary, unless the function documentation explicitly describes it. + +Despite parts of `MXCSR` being considered nonvolatile, there is no static unwind descriptor describing where it was saved and where it should be restored from. Exception-safe code which modifies the nonvolatile portions of `MXCSR` should resort to an exception finalizer (e.g. C++ destructor or a `__finally` clause) to restore it explicitly, when unwinding the stack. ## setjmp/longjmp When you include `setjmpex.h` or `setjmp.h`, all calls to [`setjmp`](../c-runtime-library/reference/setjmp.md) or [`longjmp`](../c-runtime-library/reference/longjmp.md) result in an unwind that invokes destructors and `__finally` calls. This behavior differs from x86, where including `setjmp.h` results in `__finally` clauses and destructors not being invoked. -A call to `setjmp` preserves the current stack pointer, nonvolatile registers, and MXCSR registers. Calls to `longjmp` return to the most recent `setjmp` call site and resets the stack pointer, nonvolatile registers, and MXCSR registers, back to the state as preserved by the most recent `setjmp` call. +A call to `setjmp` preserves the current stack pointer, nonvolatile registers, and `MXCSR` registers. Calls to `longjmp` return to the most recent `setjmp` call site and resets the stack pointer, nonvolatile registers, and `MXCSR` registers, back to the state as preserved by the most recent `setjmp` call. + +If APX is supported, `R30` and `R31` should not be modified in a function from the point `setjmp` is called to the point where the call which ultimately results in `longjmp` is made. This limitation is the result of `R30` and `R31` not being saved as part of `jmp_buf` - this structure definition cannot change. Instead, they are restored via the unwinder. The following example helps illustrate this point: + +```c +jmp_buf jmpbuffer; + +void function_a() { + ... + + int val = setjmp(jmpbuffer); // At this time R30 is 10 + + ... + + if (val == 0) { + function_b(); // At this time R30 is 20 + } + + ... +} + +void function_b() { + ... + + longjmp(jmpbuffer, 1); + + ... +} +``` + +In this example, the value of `R30` changes from the point where `setjmp` is called to the point `function_b` is called. In `function_b`, `longjmp` will unwind the stack until it reaches the function which called `setjmp` (`function_a` in this case). The value restored for `R30` will be `20` (the value at the point `function_b` was called), not `10` (the value at which `setjmp` was called). This means that when `setjmp` returns for the second time (as the result of `longjmp`) the value of `R30` will be set to `20` instead of `10`, which is incorrect. This is the reason why compilers should make sure `R30` and `R31` must remain constant from the point `setjmp` is called to the last place in the function which could ultimately result in `longjmp` being called. + +Since `longjmp` can be called from an exception filter (not just a sub-routine), this effectively dictates that `R30` and `R31` should remain constant from the point `setjmp` is called through the rest of the function. ## See also diff --git a/docs/build/x64-software-conventions.md b/docs/build/x64-software-conventions.md index 7f8229a5313..fdb9f859bd9 100644 --- a/docs/build/x64-software-conventions.md +++ b/docs/build/x64-software-conventions.md @@ -187,7 +187,7 @@ If you require more strict alignment, use `__declspec(align(N))` on your variabl ## x64 register usage -The x64 architecture provides for 16 general-purpose registers (hereafter referred to as integer registers) as well as 16 XMM/YMM registers available for floating-point use. Volatile registers are scratch registers presumed by the caller to be destroyed across a call. Nonvolatile registers are required to retain their values across a function call and must be saved by the callee if used. +The x64 architecture provides for 16 general-purpose registers (hereafter referred to as integer registers) as well as 16 `XMM`/`YMM` registers available for floating-point use. Volatile registers are scratch registers presumed by the caller to be destroyed across a call. Nonvolatile registers are required to retain their values across a function call and must be saved by the callee if used. ### Register volatility and preservation @@ -195,25 +195,27 @@ The following table describes how each register is used across function calls: |Register|Status|Use| |-|-|-| -|RAX|Volatile|Return value register| -|RCX|Volatile|First integer argument| -|RDX|Volatile|Second integer argument| -|R8|Volatile|Third integer argument| -|R9|Volatile|Fourth integer argument| -|R10:R11|Volatile|Must be preserved as needed by caller; used in syscall/sysret instructions| -|R12:R15|Nonvolatile|Must be preserved by callee| -|RDI|Nonvolatile|Must be preserved by callee| -|RSI|Nonvolatile|Must be preserved by callee| -|RBX|Nonvolatile|Must be preserved by callee| -|RBP|Nonvolatile|May be used as a frame pointer; must be preserved by callee| -|RSP|Nonvolatile|Stack pointer| -|XMM0, YMM0|Volatile|First FP argument; first vector-type argument when **`__vectorcall`** is used| -|XMM1, YMM1|Volatile|Second FP argument; second vector-type argument when **`__vectorcall`** is used| -|XMM2, YMM2|Volatile|Third FP argument; third vector-type argument when **`__vectorcall`** is used| -|XMM3, YMM3|Volatile|Fourth FP argument; fourth vector-type argument when **`__vectorcall`** is used| -|XMM4, YMM4|Volatile|Must be preserved as needed by caller; fifth vector-type argument when **`__vectorcall`** is used| -|XMM5, YMM5|Volatile|Must be preserved as needed by caller; sixth vector-type argument when **`__vectorcall`** is used| -|XMM6:XMM15, YMM6:YMM15|Nonvolatile (XMM), Volatile (upper half of YMM)|Must be preserved by callee. YMM registers must be preserved as needed by caller.| +|`RAX`|Volatile|Return value register| +|`RCX`|Volatile|First integer argument| +|`RDX`|Volatile|Second integer argument| +|`R8`|Volatile|Third integer argument| +|`R9`|Volatile|Fourth integer argument| +|`R10`:`R11`|Volatile|Must be preserved as needed by caller; used in syscall/sysret instructions| +|`R12`:`R15`|Nonvolatile|Must be preserved by callee| +|`R16`:`R29`|Volatile|Must be preserved by callee (APX Register)| +|`R30`:`R31`|Nonvolatile|Must be preserved by callee (APX Register)| +|`RDI`|Nonvolatile|Must be preserved by callee| +|`RSI`|Nonvolatile|Must be preserved by callee| +|`RBX`|Nonvolatile|Must be preserved by callee| +|`RBP`|Nonvolatile|May be used as a frame pointer; must be preserved by callee| +|`RSP`|Nonvolatile|Stack pointer| +|`XMM0`, `YMM0`|Volatile|First FP argument; first vector-type argument when **`__vectorcall`** is used| +|`XMM1`, `YMM1`|Volatile|Second FP argument; second vector-type argument when **`__vectorcall`** is used| +|`XMM2`, `YMM2`|Volatile|Third FP argument; third vector-type argument when **`__vectorcall`** is used| +|`XMM3`, `YMM3`|Volatile|Fourth FP argument; fourth vector-type argument when **`__vectorcall`** is used| +|`XMM4`, `YMM4`|Volatile|Must be preserved as needed by caller; fifth vector-type argument when **`__vectorcall`** is used| +|`XMM5`, `YMM5`|Volatile|Must be preserved as needed by caller; sixth vector-type argument when **`__vectorcall`** is used| +|`XMM6`:`XMM15`, `YMM6`:`YMM15`|Nonvolatile (`XMM`), Volatile (upper half of `YMM`)|Must be preserved by callee. `YMM` registers must be preserved as needed by caller.| On function exit and on function entry to C Runtime Library calls and Windows system calls, the direction flag in the CPU flags register is expected to be cleared. diff --git a/docs/build/x64-unwind-information-v3.md b/docs/build/x64-unwind-information-v3.md new file mode 100644 index 00000000000..bc519fc68f3 --- /dev/null +++ b/docs/build/x64-unwind-information-v3.md @@ -0,0 +1,539 @@ +--- +title: x64 Unwind Information V3 +description: Exception Handling Unwind Information V3 - Preview Specification +ms.date: 05/18/2026 +author: pmsjt +ms.author: pedrot +ms.reviewer: pedrot +--- + +# Exception Handling Unwind Information V3 + +## 1. Scope + +Unwind Information V3 adds support for the Intel APX (Advanced Performance Extensions). It also brings additional flexibility to the code generation allowed in both function prologues and epilogues, enabling compilers to better optimize functions as a whole. + +Unwind V3 is required for code supporting APX. Non-APX enabled code should still use the [conventional (pre-V3) Unwind Information](../build/exception-handling-x64.md). + +This is a **Preview Specification**, in Beta Stage: There's still a risk of breaking changes. Code produced under this guidance should itself be considered **Preview Code**. + +--- + +## 2. Terminology + +| Term | Definition | +|------|------------| +| **Fragment** | A contiguous region of machine code described by a single `RUNTIME_FUNCTION` / `UNWIND_INFO_V3` pair. A function might consist of a *main fragment* and zero or more *sub-fragments* [chained together](../build/exception-handling-x64.md#chained-unwind-info-structures). | +| **WOD** | Winding Operation Descriptor — a variable-length packed encoding of a single unwind operation (push, alloc, save, and so on). | +| **WOD pool** | The byte array within the payload that stores all WODs for a fragment's prolog and epilog(s). | +| **IP Offset** | A single unsigned byte giving the byte offset of an instruction relative to the start of the prolog or epilog. | +| **Payload** | The variable-length region immediately after the 4-byte `UNWIND_INFO_V3` header, sized by `PayloadWords` 16-bit words. Contains prolog IP offsets, epilog descriptors (with their IP offsets), and the WOD pool. | + +--- + +## 3. Overall Object-File Layout + +Unwind V3 reuses the existing PE/COFF `.pdata` and `.xdata` section +conventions unchanged: + +``` +.pdata — sorted array of IMAGE_AMD64_RUNTIME_FUNCTION_ENTRY (12 bytes each) +.xdata — UNWIND_INFO_V3 structures referenced by .pdata entries +``` + +Each `RUNTIME_FUNCTION` entry is: + +| Offset | Size | Field | +|--------|------|-------| +| 0 | 4 | `BeginAddress` — RVA of fragment start | +| 4 | 4 | `EndAddress` — RVA of first byte past fragment end | +| 8 | 4 | `UnwindInfoAddress` — RVA of `UNWIND_INFO_V3` in `.xdata` | + +No changes from V1/V2. + +--- + +## 4. `UNWIND_INFO_V3` Header + +All multi-byte fields are little-endian. Bit 0 is the LSB of each byte. + +``` +Byte 0: + Bits [2:0] Version = 3 + Bits [7:3] Flags (5 bits) + +Byte 1: + Bits [7:0] SizeOfProlog (8 bits) + +Byte 2: + Bits [7:0] PayloadWords (8 bits) + +Byte 3: + Bits [4:0] NumberOfOps (5 bits) + Bits [7:5] NumberOfEpilogs (3 bits) +``` + +### 4.1. Field Semantics + +| Field | Description | +|-------|-------------| +| `Version` | Must be `3`. A dumper should gate all V3 decoding on this value. | +| `Flags` | Same flag definitions as V1/V2: `UNW_FLAG_EHANDLER` (0x01), `UNW_FLAG_UHANDLER` (0x02), `UNW_FLAG_CHAININFO` (0x04). New in V3: `UNW_FLAG_LARGE` (0x08). Bit 4 reserved (zero). | +| `SizeOfProlog` | Byte offset to the start of the first instruction that isn't part of the prolog. When `UNW_FLAG_LARGE` is set, this 8-bit field is the **low byte** of a 16-bit prolog size; see §4.2. | +| `PayloadWords` | Number of **16-bit words** of payload following this header. The payload contains prolog IP offsets, all epilog descriptors (including their IP offsets), and the WOD pool. Does **not** include the exception-handler RVA or chained `RUNTIME_FUNCTION` that might follow. The algorithm to locate the handler/chain data is the same as V1/V2: `header + 4 + PayloadWords * 2`, DWORD-aligned. | +| `NumberOfOps` | Count of WODs in the prolog (0–31). Zero means no prolog. If a function needs more than 31 prolog operations, use a sub-fragment. | +| `NumberOfEpilogs` | Count of `EPILOG_INFO_V3` descriptors that follow the prolog IP offsets (0–7). Zero means no epilogs in this fragment. If more than 7 are needed, use a sub-fragment. | + +### 4.2. `UNW_FLAG_LARGE` and `UNWIND_INFO_LARGE_V3` + +When `UNW_FLAG_LARGE` is set in the header `Flags`, the first byte of +the payload is a 1-byte `UNWIND_INFO_LARGE_V3` extension: + +``` +Byte 0: + Bits [7:0] SizeOfPrologHighByte (8 bits) +``` + +`SizeOfPrologHighByte` is combined with `UNWIND_INFO_V3.SizeOfProlog` +to form a 16-bit prolog size: +`SizeOfProlog16 = (SizeOfPrologHighByte << 8) | SizeOfProlog`. + +Additionally, when `UNW_FLAG_LARGE` is set: + +- Prolog IP offset entries are **16-bit unsigned** (2 bytes each) + instead of 8-bit. + +The `UNWIND_INFO_LARGE_V3` byte is part of the payload and is included +in `PayloadWords`. The handler-offset formula remains unchanged. + +This flag is expected to be needed very rarely (prologs exceeding +255 bytes). + +### 4.3. Locating Exception Handler / Chain Info + +Identical to V1/V2: + +``` +handler_offset = ALIGN_UP(sizeof(UNWIND_INFO_V3) + PayloadWords * 2, 4) +``` + +If `UNW_FLAG_EHANDLER` or `UNW_FLAG_UHANDLER` is set, a 4-byte handler RVA is +at `handler_offset`, followed by language-specific handler data. + +If `UNW_FLAG_CHAININFO` is set, a 12-byte `RUNTIME_FUNCTION` is at +`handler_offset`. + +--- + +## 5. Payload Layout + +Immediately after the 4-byte header, the payload is arranged as follows (all +packed, `#pragma pack(1)` semantics): + +``` +┌──────────────────────────────────────────────────────────────────┐ +│ UNWIND_INFO_LARGE_V3 (only if UNW_FLAG_LARGE) │ +├──────────────────────────────────────────────────────────────────┤ +│ Prolog IP Offsets [NumberOfOps bytes (or words if LARGE)] │ +├──────────────────────────────────────────────────────────────────┤ +│ EPILOG_INFO_V3[0] │ +| EPILOG_INFO(_LARGE)_EX_V3[0] (optional) | +│ + IP Offsets[0] [NumberOfOps bytes (or words if LARGE)] │ +├──────────────────────────────────────────────────────────────────┤ +│ EPILOG_INFO_V3[1] │ +| EPILOG_INFO(_LARGE)_EX_V3[1] (optional) | +│ + IP Offsets[1] [NumberOfOps bytes (or words if LARGE)] │ +├──────────────────────────────────────────────────────────────────┤ +│ ... │ +├──────────────────────────────────────────────────────────────────┤ +│ WOD Pool [remaining bytes] │ +└──────────────────────────────────────────────────────────────────┘ + Total size = PayloadWords * 2 bytes (may include padding to fill words) +``` + +### 5.1. Prolog IP Offsets + +An array of `NumberOfOps` entries. Each entry is an unsigned byte (or an +unsigned 16-bit word when `UNW_FLAG_LARGE` is set) giving the IP offset +(from the start of the prolog / start of the fragment) of the instruction +that performs the corresponding unwind operation. + +**Ordering:** The first entry corresponds to the operation closest to the +function body (the *last* prolog instruction with an unwind effect). The last +entry corresponds to the operation closest to the function entry point (the +*first* prolog instruction). This matches the V1/V2 convention of listing +unwind codes in reverse execution order. The prolog WODs always start at byte +offset 0 of the WOD pool, and this same ordering applies. + +### 5.2. Epilog Descriptors + +Zero or more `EPILOG_INFO_V3` structures follow the prolog IP offsets. Each +can have an optional `EPILOG_INFO_EX_V3` (or `EPILOG_INFO_LARGE_EX_V3` when +the `EPILOG_INFO_LARGE` flag is set) plus its own variable-size IP offset +array, of size `NumberOfOps`: + +#### 5.2.1. When `NumberOfOps > 0` (full descriptor) + +**Standard form** (`EPILOG_INFO_LARGE` not set): + +``` +EPILOG_INFO_V3 + +Byte 0: + Bits [2:0] Flags (3 bits) + Bits [7:3] NumberOfOps (5 bits) + +Bytes 1–2: + Bits [15:0] EpilogOffset (16-bit signed) + + +EPILOG_INFO_EX_V3 + +Bytes 0–1: + Bits [15:0] FirstOp (16-bit unsigned) + +Byte 2: + Bits [7:0] IpOffsetOfLastInstruction (8 bits unsigned) + +Bytes 3 .. + IP Offset array [NumberOfOps bytes, unsigned] +``` + +**Large form** (`EPILOG_INFO_LARGE` set): + +``` +EPILOG_INFO_V3 + +Byte 0: + Bits [2:0] Flags (3 bits) + Bits [7:3] NumberOfOps (5 bits) + +Bytes 1–2: + Bits [15:0] EpilogOffset (16-bit signed) + + +EPILOG_INFO_LARGE_EX_V3 + +Bytes 0–1: + Bits [15:0] FirstOp (16-bit unsigned) + +Bytes 2–3: + Bits [15:0] IpOffsetOfLastInstruction (16 bits unsigned) + +Bytes 4 .. + IP Offset array [NumberOfOps × 2 bytes, unsigned 16-bit] +``` + +#### 5.2.2. When `NumberOfOps == 0` (inherited descriptor): 3 bytes + +``` +EPILOG_INFO_V3 + +Byte 0: + Bits [2:0] Flags (3 bits) + Bits [7:3] NumberOfOps = 0 + +Bytes 1–2: + Bits [15:0] EpilogOffset (16-bit signed) +``` + +The `Flags` bits 0 and 1, `FirstOp`, `IpOffsetOfLastInstruction`, and IP offset array are inherited from the immediately preceding `EPILOG_INFO_V3`. + +#### 5.2.3. Epilog Field Semantics + +| Field | Description | +|-------|-------------| +| `Flags` | Bit 0: `EPILOG_INFO_PARENT_FRAGMENT_TRANSFER` — set if this epilog transfers control back to the parent fragment (e.g. via JMP) rather than returning to the caller. Bit 1: `EPILOG_INFO_LARGE` — when set, the extended descriptor uses `EPILOG_INFO_LARGE_EX_V3` (16-bit `IpOffsetOfLastInstruction`) and each IP offset entry is 16-bit, accommodating epilogs exceeding 255 bytes. Expected very rarely. Bit 2: reserved (zero). | +| `NumberOfOps` | Number of WODs for this epilog (0–31). Zero is a special value meaning "inherit from previous epilog descriptor." | +| `EpilogOffset` | 16-bit signed displacement to the first instruction of this epilog. For the **first** epilog descriptor: positive values are byte offsets from the fragment start; negative values are byte offsets from the fragment tail (first byte past the end). For **subsequent** epilog descriptors: delta from the start of the previous epilog. All epilogs must use the same sign (all sorted ascending from start, or all sorted descending from tail). | +| `FirstOp` | Byte index into the WOD pool where the first WOD for this epilog resides. Since WODs are variable-length, this is a byte offset, not a WOD index. Epilogs may share WODs with the prolog or with each other by pointing into the same pool region. | +| `IpOffsetOfLastInstruction` | Unsigned byte offset (from the epilog start) of the last instruction in the epilog (typically RET or JMP). 8-bit in `EPILOG_INFO_EX_V3`; 16-bit in `EPILOG_INFO_LARGE_EX_V3`. The unwinder uses this to determine where the epilog ends and the function body resumes. | + +#### 5.2.4. Epilog IP Offsets + +Immediately after each full epilog descriptor (when `NumberOfOps > 0`), an +array of `NumberOfOps` entries gives the IP offset of each epilog instruction +that has a corresponding WOD. Each entry is an unsigned byte, or an unsigned +16-bit word when `EPILOG_INFO_LARGE` is set. Ordering: first entry = operation +closest to the body (first epilog instruction with an unwind effect), last +entry = operation closest to the control-transfer instruction. + +### 5.3. WOD Pool + +The remaining bytes in the payload form the WOD pool. The prolog's WODs +implicitly start at byte offset 0 of this pool. Each epilog's WODs start at +the byte offset given by its `FirstOp` field. WODs are packed with no alignment +or padding between them. + +The number of WODs consumed for the prolog is `UNWIND_INFO_V3.NumberOfOps`. The +number consumed for each epilog is its respective `EPILOG_INFO_V3.NumberOfOps` +(or inherited). + +--- + +## 6. WOD Encoding Reference + +WODs are variable-length (1–5 bytes), packed with `#pragma pack(1)`. The opcode +is encoded in the **low-order bits** of the first byte. Decoding requires +multi-level bit inspection. + +### 6.1. Opcode Dispatch Table + +To decode a WOD, read the first byte and test low bits in the following order: + +| Test | Opcode Value | WOD Type | Size | +|------|--------------|----------|------| +| `byte[0] == 0x00` | 0 | `WOD_SET_FPREG` | 2 bytes | +| `byte[0] == 0x01` | 1 | `WOD_ALLOC_HUGE` | 5 bytes | +| `byte[0] == 0x02` | 2 | `WOD_ALLOC_LARGE` | 3 bytes | +| `byte[0] == 0x03` | 3 | `WOD_PUSH_CANONICAL_FRAME` | 2 bytes | +| `(byte[0] & 0x07) == 0x04` | 4 | `WOD_PUSH` | 1 byte | +| `(byte[0] & 0x07) == 0x05` | 5 | `WOD_SAVE_NONVOL_FAR` | 5 bytes | +| `(byte[0] & 0x07) == 0x06` | 6 | `WOD_SAVE_NONVOL` | 3 bytes | +| `(byte[0] & 0x07) == 0x07` | 7 | `WOD_PUSH_CONSECUTIVE_2` | 1 byte | +| `(byte[0] & 0x0F) == 0x08` | 8 | `WOD_ALLOC_SMALL` | 1 byte | +| `(byte[0] & 0x0F) == 0x09` | 9 | `WOD_SAVE_XMM128_FAR` | 5 bytes | +| `(byte[0] & 0x0F) == 0x0A` | 10 | `WOD_SAVE_XMM128` | 3 bytes | +| `(byte[0] & 0x3F) == 0x20` | 32 | `WOD_PUSH2` | 2 bytes | + +**Decoding algorithm (pseudocode):** + +```c +uint8_t b0 = pool[offset]; + +if (b0 <= 0x03) { + // 8-bit opcode: exact match on entire byte + switch (b0) { + case 0x00: return WOD_SET_FPREG; + case 0x01: return WOD_ALLOC_HUGE; + case 0x02: return WOD_ALLOC_LARGE; + case 0x03: return WOD_PUSH_CANONICAL_FRAME; + } +} else if ((b0 & 0x07) >= 0x04) { + // 3-bit opcode + switch (b0 & 0x07) { + case 0x04: return WOD_PUSH; + case 0x05: return WOD_SAVE_NONVOL_FAR; + case 0x06: return WOD_SAVE_NONVOL; + case 0x07: return WOD_PUSH_CONSECUTIVE_2; + } +} else if ((b0 & 0x0F) >= 0x08 && (b0 & 0x0F) <= 0x0A) { + // 4-bit opcode + switch (b0 & 0x0F) { + case 0x08: return WOD_ALLOC_SMALL; + case 0x09: return WOD_SAVE_XMM128_FAR; + case 0x0A: return WOD_SAVE_XMM128; + } +} else if ((b0 & 0x3F) == 0x20) { + // 6-bit opcode + return WOD_PUSH2; +} +return INVALID; +``` + +A cleaner approach: match from the shortest prefix (3-bit) upward, +since the 8-bit opcodes use values 0–3 which don't conflict with any +3-bit prefix pattern (the 3-bit opcodes occupy values 4–7): + +```c +uint8_t b0 = pool[offset]; +uint8_t op3 = b0 & 0x07; + +switch (op3) { +case 4: return WOD_PUSH; // 3-bit opcode = 100b +case 5: return WOD_SAVE_NONVOL_FAR;// 3-bit opcode = 101b +case 6: return WOD_SAVE_NONVOL; // 3-bit opcode = 110b +case 7: return WOD_PUSH_CONSECUTIVE_2; // 3-bit opcode = 111b +default: break; // bits[2:0] are 0b000, 0b001, 0b010, or 0b011 +} + +uint8_t op4 = b0 & 0x0F; +switch (op4) { +case 0x08: return WOD_ALLOC_SMALL; +case 0x09: return WOD_SAVE_XMM128_FAR; +case 0x0A: return WOD_SAVE_XMM128; +default: break; +} + +uint8_t op6 = b0 & 0x3F; +if (op6 == 0x20) return WOD_PUSH2; + +// 8-bit opcode (full byte match) +switch (b0) { +case 0x00: return WOD_SET_FPREG; +case 0x01: return WOD_ALLOC_HUGE; +case 0x02: return WOD_ALLOC_LARGE; +case 0x03: return WOD_PUSH_CANONICAL_FRAME; +default: return INVALID; +} +``` + +### 6.2. WOD Layouts (Bit-Level) + +All bit positions are numbered LSB-first within each byte. Multi-byte integer +fields are little-endian. + +#### 6.2.1. `WOD_PUSH` — 1 byte + +``` +Byte 0: [2:0] = 100b (opcode 4) + [7:3] = Register (5 bits, AMD64 integer register number) +``` + +**Effect:** `PUSH ` — adjusts RSP by 8 and stores register. + +#### 6.2.2. `WOD_PUSH2` — 2 bytes + +``` +Byte 0: [5:0] = 100000b (opcode 32) + [7:6] = Register1[1:0] (low 2 bits) +Byte 1: [2:0] = Register1[4:2] (high 3 bits) + [7:3] = Register2 (5 bits) +``` + +**Effect:** `PUSH2 , ` — pushes two registers with a single +instruction (APX). Adjusts RSP by 16. + +#### 6.2.3. `WOD_PUSH_CONSECUTIVE_2` — 1 byte + +``` +Byte 0: [2:0] = 111b (opcode 7) + [7:3] = Register (5 bits) +``` + +**Effect:** Pushes `Register` and `Register+1` consecutively. Adjusts `RSP` +by 16 total. `Register` value must be limited to [0, 30], as value of 31 would place `Register+1` out of bounds. + +#### 6.2.4. `WOD_ALLOC_SMALL` — 1 byte + +``` +Byte 0: [3:0] = 1000b (opcode 8) + [7:4] = Size (4 bits) +``` + +**Actual allocation:** `(Size + 1) * 8` bytes. Range: 8–128 bytes in steps +of 8. + +#### 6.2.5. `WOD_ALLOC_LARGE` — 3 bytes + +``` +Byte 0: [7:0] = 0x02 (opcode 2) +Bytes 1–2: Size (16-bit unsigned, little-endian) +``` + +**Actual allocation:** `Size * 8` bytes. Range: up to 524,280 bytes. + +#### 6.2.6. `WOD_ALLOC_HUGE` — 5 bytes + +``` +Byte 0: [7:0] = 0x01 (opcode 1) +Bytes 1–4: Size (32-bit unsigned, little-endian) +``` + +**Actual allocation:** Raw byte count (no scaling). Range: up to 4 GiB. + +#### 6.2.7. `WOD_SET_FPREG` — 2 bytes + +``` +Byte 0: [7:0] = 0x00 (opcode 0) +Byte 1: [3:0] = Register (4 bits, 0–15) + [7:4] = Offset (4 bits) +``` + +**Effect:** Establishes a frame pointer. ` = RSP + Offset * 16`. + +#### 6.2.8. `WOD_SAVE_NONVOL` — 3 bytes + +``` +Byte 0: [2:0] = 110b (opcode 6) + [7:3] = Register (5 bits) +Bytes 1–2: Displacement (16-bit unsigned, little-endian) +``` + +**Effect:** `MOV [RSP + Displacement * 8], ` — saves a non-volatile +integer register to the stack. + +#### 6.2.9. `WOD_SAVE_NONVOL_FAR` — 5 bytes + +``` +Byte 0: [2:0] = 101b (opcode 5) + [7:3] = Register (5 bits) +Bytes 1–4: Displacement (32-bit unsigned, little-endian) +``` + +**Effect:** Same as `WOD_SAVE_NONVOL` but with a 32-bit unscaled byte +displacement. Used when the offset doesn't fit in 16 bits scaled by 8. + +#### 6.2.10. `WOD_SAVE_XMM128` — 3 bytes + +``` +Byte 0: [3:0] = 1010b (opcode 10) + [7:4] = Register (4 bits, XMM0–XMM15) +Bytes 1–2: Displacement (16-bit unsigned, little-endian) +``` + +**Effect:** `MOVAPS [RSP + Displacement * 16], ` — saves a 128-bit +XMM register. + +#### 6.2.11. `WOD_SAVE_XMM128_FAR` — 5 bytes + +``` +Byte 0: [3:0] = 1001b (opcode 9) + [7:4] = Register (4 bits, XMM0–XMM15) +Bytes 1–4: Displacement (32-bit unsigned, little-endian) +``` + +**Effect:** Same as `WOD_SAVE_XMM128` but with a 32-bit unscaled byte +displacement. + +#### 6.2.12. `WOD_PUSH_CANONICAL_FRAME` — 2 bytes + +``` +Byte 0: [7:0] = 0x03 (opcode 3) +Byte 1: [7:0] = Type (8 bits) +``` + +**Effect:** Indicates the hardware/OS pushed a canonical frame onto the +stack. Type values distinguish: +- Machine frame without error code +- Machine frame with error code +- Machine frame with shadow-stack push +- Context record + +(Exact type values are defined by the OS; consult the Windows SDK headers.) + +### 6.3. Opcode Constant Summary + +```c +#define WOD_OP_SET_FPREG 0 // 8-bit opcode, 2 bytes +#define WOD_OP_ALLOC_HUGE 1 // 8-bit opcode, 5 bytes +#define WOD_OP_ALLOC_LARGE 2 // 8-bit opcode, 3 bytes +#define WOD_OP_PUSH_CANONICAL_FRAME 3 // 8-bit opcode, 2 bytes +#define WOD_OP_PUSH 4 // 3-bit opcode, 1 byte +#define WOD_OP_SAVE_NONVOL_FAR 5 // 3-bit opcode, 5 bytes +#define WOD_OP_SAVE_NONVOL 6 // 3-bit opcode, 3 bytes +#define WOD_OP_PUSH_CONSECUTIVE_2 7 // 3-bit opcode, 1 byte +#define WOD_OP_ALLOC_SMALL 8 // 4-bit opcode, 1 byte +#define WOD_OP_SAVE_XMM128_FAR 9 // 4-bit opcode, 5 bytes +#define WOD_OP_SAVE_XMM128 10 // 4-bit opcode, 3 bytes +#define WOD_OP_PUSH2 32 // 6-bit opcode, 2 bytes +``` + +### 6.4. Register Encoding + +Integer registers use the standard AMD64 numbering (5 bits, 0–31): + +| Value | Register | +|-------|----------| +| 0 | RAX | +| 1 | RCX | +| 2 | RDX | +| 3 | RBX | +| 4 | RSP | +| 5 | RBP | +| 6 | RSI | +| 7 | RDI | +| 8 - 15 | R8 - R15 +| 16 - 31 | R16 - R31 (APX) | + +XMM register fields are 4 bits (0–15), mapping directly to XMM0–XMM15. From edcad4c1c5781c771628a9391fc07f158cd3e10f Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo Teixeira Date: Mon, 18 May 2026 12:14:55 -0700 Subject: [PATCH 477/619] Add "omissions" to the list of potential hazards with Beta specs. --- docs/build/x64-unwind-information-v3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/x64-unwind-information-v3.md b/docs/build/x64-unwind-information-v3.md index bc519fc68f3..e2b001f84bf 100644 --- a/docs/build/x64-unwind-information-v3.md +++ b/docs/build/x64-unwind-information-v3.md @@ -15,7 +15,7 @@ Unwind Information V3 adds support for the Intel APX (Advanced Performance Exten Unwind V3 is required for code supporting APX. Non-APX enabled code should still use the [conventional (pre-V3) Unwind Information](../build/exception-handling-x64.md). -This is a **Preview Specification**, in Beta Stage: There's still a risk of breaking changes. Code produced under this guidance should itself be considered **Preview Code**. +This is a **Preview Specification**, in Beta Stage: There's still a risk of breaking changes or omissions. Code produced under this guidance should itself be considered **Preview Code**. --- From 423035fa63ee2cf75c2bc76d148104fb5f3051d8 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 19 May 2026 09:18:17 -0700 Subject: [PATCH 478/619] add link to blog post --- docs/build/profile-guided-optimizations.md | 2 +- docs/build/sample-profile-guided-optimization.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/build/profile-guided-optimizations.md b/docs/build/profile-guided-optimizations.md index d171360f143..2da31ddff99 100644 --- a/docs/build/profile-guided-optimizations.md +++ b/docs/build/profile-guided-optimizations.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["profile-guided optimizations", "optimization, profile-gui Profile-guided optimization (PGO) lets you optimize a whole executable file. The optimizer uses data from test runs of the .exe or .dll file. The data represents the likely performance of the program in a production environment. > [!NOTE] -> SPGO (Sample Profile-Guided Optimization) is an alternative approach that uses hardware CPU Windows Performance Counters instead of instrumentation. SPGO requires no instrumented build - you profile an existing release binary by using `xperf`. For more information, see [Sample Profile-Guided Optimization (SPGO) tutorial](sample-profile-guided-optimization.md). +> SPGO (Sample Profile-Guided Optimization) is an alternative approach that uses hardware CPU Windows Performance Counters instead of instrumentation. SPGO requires no instrumented build - you profile an existing release binary by using `xperf`. For more information, see [Introducing Sample Profile Guided Optimization in MSVC](https://devblogs.microsoft.com/cppblog/introducing-sample-profile-guided-optimization-in-msvc/) and [Sample Profile-Guided Optimization (SPGO) tutorial](sample-profile-guided-optimization.md). Profile-guided optimizations are only available for x86, x64, or ARM64 native targets. Profile-guided optimizations aren't available for executable files that run on the common language runtime. Even if you produce an assembly with mixed native and managed code (by using the **/clr** compiler option), you can't use profile-guided optimization on just the native code. If you attempt to build a project with these options set in the IDE, a build error results. diff --git a/docs/build/sample-profile-guided-optimization.md b/docs/build/sample-profile-guided-optimization.md index 084be1122e3..f9f2df002ca 100644 --- a/docs/build/sample-profile-guided-optimization.md +++ b/docs/build/sample-profile-guided-optimization.md @@ -14,6 +14,8 @@ SPGO takes a different approach. Instead of instrumenting your binary and runnin Because SPGO profiles release bits instead of instrumented builds, it enables much more flexibility in where and how you collect data. You can gather runtime profiles from production servers, developer machines, performance labs, or any combination. The result is a binary that runs hot paths more efficiently, with a typical performance speedup of 5-15% depending on the quality of the profile data. +For more information about Sample Profile‑Guided Optimization (PGO) in MSVC and how it improves performance using sampling‑based profiling, see [Introducing Sample Profile Guided Optimization in MSVC](https://devblogs.microsoft.com/cppblog/introducing-sample-profile-guided-optimization-in-msvc/) + In this tutorial, you walk through the complete SPGO workflow: build a sample app, profile it by using `xperf`, prepare the profile data, and rebuild with the profile data. When you finish, you can apply the same process to your own projects. ## Prerequisites From e61067551f92a1c7beaad20c04b9f5ccfd2b5dd6 Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo Teixeira Date: Wed, 20 May 2026 10:50:56 -0700 Subject: [PATCH 479/619] Feedback batch. --- docs/build/exception-handling-x64.md | 8 ++--- docs/build/x64-calling-convention.md | 4 +-- docs/build/x64-unwind-information-v3.md | 47 +++---------------------- 3 files changed, 11 insertions(+), 48 deletions(-) diff --git a/docs/build/exception-handling-x64.md b/docs/build/exception-handling-x64.md index a0cd688e6ab..efb1eac2d73 100644 --- a/docs/build/exception-handling-x64.md +++ b/docs/build/exception-handling-x64.md @@ -71,8 +71,8 @@ The `UNWIND_INFO` structure must be `DWORD` aligned in memory. Here's what each |Flag|Description| |-|-| - |`UNW_FLAG_EHANDLER`| The function has an exception handler that the system calls when looking for functions that need to examine exceptions.| - |`UNW_FLAG_UHANDLER`| The function has a termination handler that the system calls when unwinding an exception.| + |`UNW_FLAG_EHANDLER`| The function has an exception handler that the operating system calls to examine the state of the exception and potentially handle it. Language features such as the C `__try` clause register such a handler.| + |`UNW_FLAG_UHANDLER`| The function has a termination handler that the operation system calls when unwinding the stack. This handler could release resources allocated by the function in exception safe code. Language features such as local C++ object destructors and C `__finally` clauses register such a termination handler. | |`UNW_FLAG_CHAININFO`| This unwind info structure isn't the primary one for the procedure. Instead, the chained unwind info entry is the contents of a previous `RUNTIME_FUNCTION` entry. For information, see [Chained unwind info structures](#chained-unwind-info-structures). If this flag is set, then the `UNW_FLAG_EHANDLER` and `UNW_FLAG_UHANDLER` flags must be cleared. Also, the frame register and fixed-stack allocation fields must have the same values as in the primary unwind info.| - **Size of prolog** @@ -89,11 +89,11 @@ The `UNWIND_INFO` structure must be `DWORD` aligned in memory. Here's what each - **Frame register offset (scaled)** - If the frame register field is nonzero, this field is the scaled offset from `RSP` that will be applied the selected Frame Pointer (FP) register value. The actual FP register is set to `RSP` + 16 \* this number, which means you can use offsets from 0 to 240. This offset points the FP register into the middle of the local stack allocation for dynamic stack frames, so you get better code density through shorter instructions. (That is, more instructions can use the 8-bit signed offset form.) + This field is a scaled offset between the `RSP` register value and the selected Frame Pointer (FP) register value. The selected FP register is set to `RSP` + 16 * this number, which means you can use offsets from 0 to 240. This offset points the FP register into the middle of the local stack allocation for dynamic stack frames, so you get better code density through shorter instructions. (That is, more instructions can use the 8-bit signed offset form.) - **Unwind codes array** - An array of items that explains the effect of the prolog on the nonvolatile registers and `RSP`. See the section on `UNWIND_CODE` for the meanings of individual items. For alignment purposes, this array always has an even number of entries, and the final entry is potentially unused. In that case, the array is one longer than indicated by the count of unwind codes field. + An array of items that explains the effect of the prolog on the nonvolatile registers and `RSP`. See the section on [Unwind operations code](#unwind-operation-code) for the meanings of individual items. To maintain proper data alignment, this array always contains an even number of entries, and the final entry may be unused. In that case, the array is one longer than indicated by the count of unwind codes field. - **Address of exception handler** diff --git a/docs/build/x64-calling-convention.md b/docs/build/x64-calling-convention.md index 955092926a1..a1265ca7cfc 100644 --- a/docs/build/x64-calling-convention.md +++ b/docs/build/x64-calling-convention.md @@ -219,7 +219,7 @@ When you include `setjmpex.h` or `setjmp.h`, all calls to [`setjmp`](../c-runtim A call to `setjmp` preserves the current stack pointer, nonvolatile registers, and `MXCSR` registers. Calls to `longjmp` return to the most recent `setjmp` call site and resets the stack pointer, nonvolatile registers, and `MXCSR` registers, back to the state as preserved by the most recent `setjmp` call. -If APX is supported, `R30` and `R31` should not be modified in a function from the point `setjmp` is called to the point where the call which ultimately results in `longjmp` is made. This limitation is the result of `R30` and `R31` not being saved as part of `jmp_buf` - this structure definition cannot change. Instead, they are restored via the unwinder. The following example helps illustrate this point: +If APX is supported, `R30` and `R31` should not be modified in a function from the point `setjmp` is called to the point where the call which ultimately results in `longjmp` is made. This limitation is the result of `R30` and `R31` not being saved as part of `jmp_buf` - this structure definition cannot change. Instead, they are restored via the unwinder. The following example demonstrates how the difference on how the data is restored influences this restriction: ```c jmp_buf jmpbuffer; @@ -247,7 +247,7 @@ void function_b() { } ``` -In this example, the value of `R30` changes from the point where `setjmp` is called to the point `function_b` is called. In `function_b`, `longjmp` will unwind the stack until it reaches the function which called `setjmp` (`function_a` in this case). The value restored for `R30` will be `20` (the value at the point `function_b` was called), not `10` (the value at which `setjmp` was called). This means that when `setjmp` returns for the second time (as the result of `longjmp`) the value of `R30` will be set to `20` instead of `10`, which is incorrect. This is the reason why compilers should make sure `R30` and `R31` must remain constant from the point `setjmp` is called to the last place in the function which could ultimately result in `longjmp` being called. +In this example, the value of `R30` changes from the point where `setjmp` is called to the point `function_b` is called. In `function_b`, `longjmp` unwinds the stack until it reaches the function which called `setjmp` (`function_a` in this case). The value restored for `R30` will be `20` (the value at the point `function_b` was called), not `10` (the value at which `setjmp` was called). This means that when `setjmp` returns for the second time (as the result of `longjmp`) the value of `R30` will be set to `20` instead of `10`, which is incorrect. This is why compilers must ensure `R30` and `R31` remain constant from the point `setjmp` is called to the last place in the function which could ultimately result in `longjmp` being called. Since `longjmp` can be called from an exception filter (not just a sub-routine), this effectively dictates that `R30` and `R31` should remain constant from the point `setjmp` is called through the rest of the function. diff --git a/docs/build/x64-unwind-information-v3.md b/docs/build/x64-unwind-information-v3.md index e2b001f84bf..377c9c7d7df 100644 --- a/docs/build/x64-unwind-information-v3.md +++ b/docs/build/x64-unwind-information-v3.md @@ -23,11 +23,11 @@ This is a **Preview Specification**, in Beta Stage: There's still a risk of brea | Term | Definition | |------|------------| -| **Fragment** | A contiguous region of machine code described by a single `RUNTIME_FUNCTION` / `UNWIND_INFO_V3` pair. A function might consist of a *main fragment* and zero or more *sub-fragments* [chained together](../build/exception-handling-x64.md#chained-unwind-info-structures). | +| **Fragment** | A contiguous region of machine code described by a single `RUNTIME_FUNCTION` / `UNWIND_INFO_V3` pair. A function might consist of a *main fragment* and zero or more *sub-fragments* chained together. For more information see [Chained unwind info structures](../build/exception-handling-x64.md#chained-unwind-info-structures). | | **WOD** | Winding Operation Descriptor — a variable-length packed encoding of a single unwind operation (push, alloc, save, and so on). | | **WOD pool** | The byte array within the payload that stores all WODs for a fragment's prolog and epilog(s). | -| **IP Offset** | A single unsigned byte giving the byte offset of an instruction relative to the start of the prolog or epilog. | -| **Payload** | The variable-length region immediately after the 4-byte `UNWIND_INFO_V3` header, sized by `PayloadWords` 16-bit words. Contains prolog IP offsets, epilog descriptors (with their IP offsets), and the WOD pool. | +| **IP Offset** | The unsigned byte offset of an instruction relative to the start of the prolog or epilog. | +| **Payload** | The variable-length region immediately after the 4-byte `UNWIND_INFO_V3` header, sized by `PayloadWords` 16-bit words. Contains the large prolog extension, prolog IP offsets, epilog descriptors (with their IP offsets), and the WOD pool. | --- @@ -77,7 +77,7 @@ Byte 3: | Field | Description | |-------|-------------| -| `Version` | Must be `3`. A dumper should gate all V3 decoding on this value. | +| `Version` | Must be `3`. | | `Flags` | Same flag definitions as V1/V2: `UNW_FLAG_EHANDLER` (0x01), `UNW_FLAG_UHANDLER` (0x02), `UNW_FLAG_CHAININFO` (0x04). New in V3: `UNW_FLAG_LARGE` (0x08). Bit 4 reserved (zero). | | `SizeOfProlog` | Byte offset to the start of the first instruction that isn't part of the prolog. When `UNW_FLAG_LARGE` is set, this 8-bit field is the **low byte** of a 16-bit prolog size; see §4.2. | | `PayloadWords` | Number of **16-bit words** of payload following this header. The payload contains prolog IP offsets, all epilog descriptors (including their IP offsets), and the WOD pool. Does **not** include the exception-handler RVA or chained `RUNTIME_FUNCTION` that might follow. The algorithm to locate the handler/chain data is the same as V1/V2: `header + 4 + PayloadWords * 2`, DWORD-aligned. | @@ -296,44 +296,7 @@ To decode a WOD, read the first byte and test low bits in the following order: | `(byte[0] & 0x0F) == 0x0A` | 10 | `WOD_SAVE_XMM128` | 3 bytes | | `(byte[0] & 0x3F) == 0x20` | 32 | `WOD_PUSH2` | 2 bytes | -**Decoding algorithm (pseudocode):** - -```c -uint8_t b0 = pool[offset]; - -if (b0 <= 0x03) { - // 8-bit opcode: exact match on entire byte - switch (b0) { - case 0x00: return WOD_SET_FPREG; - case 0x01: return WOD_ALLOC_HUGE; - case 0x02: return WOD_ALLOC_LARGE; - case 0x03: return WOD_PUSH_CANONICAL_FRAME; - } -} else if ((b0 & 0x07) >= 0x04) { - // 3-bit opcode - switch (b0 & 0x07) { - case 0x04: return WOD_PUSH; - case 0x05: return WOD_SAVE_NONVOL_FAR; - case 0x06: return WOD_SAVE_NONVOL; - case 0x07: return WOD_PUSH_CONSECUTIVE_2; - } -} else if ((b0 & 0x0F) >= 0x08 && (b0 & 0x0F) <= 0x0A) { - // 4-bit opcode - switch (b0 & 0x0F) { - case 0x08: return WOD_ALLOC_SMALL; - case 0x09: return WOD_SAVE_XMM128_FAR; - case 0x0A: return WOD_SAVE_XMM128; - } -} else if ((b0 & 0x3F) == 0x20) { - // 6-bit opcode - return WOD_PUSH2; -} -return INVALID; -``` - -A cleaner approach: match from the shortest prefix (3-bit) upward, -since the 8-bit opcodes use values 0–3 which don't conflict with any -3-bit prefix pattern (the 3-bit opcodes occupy values 4–7): +** WOD decoding algorithm (pseudocode):** ```c uint8_t b0 = pool[offset]; From d290f0ce4401abe4141cee58572e8a64374de585 Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo Teixeira Date: Wed, 20 May 2026 11:44:17 -0700 Subject: [PATCH 480/619] Feedback batch --- docs/build/x64-unwind-information-v3.md | 313 +++++++++--------------- 1 file changed, 120 insertions(+), 193 deletions(-) diff --git a/docs/build/x64-unwind-information-v3.md b/docs/build/x64-unwind-information-v3.md index 377c9c7d7df..303d2cbe4d7 100644 --- a/docs/build/x64-unwind-information-v3.md +++ b/docs/build/x64-unwind-information-v3.md @@ -9,21 +9,21 @@ ms.reviewer: pedrot # Exception Handling Unwind Information V3 -## 1. Scope +## Scope Unwind Information V3 adds support for the Intel APX (Advanced Performance Extensions). It also brings additional flexibility to the code generation allowed in both function prologues and epilogues, enabling compilers to better optimize functions as a whole. Unwind V3 is required for code supporting APX. Non-APX enabled code should still use the [conventional (pre-V3) Unwind Information](../build/exception-handling-x64.md). -This is a **Preview Specification**, in Beta Stage: There's still a risk of breaking changes or omissions. Code produced under this guidance should itself be considered **Preview Code**. +Unwind Information V3 is a preview specification. There's still a risk of breaking changes or omissions. Code produced under this guidance should itself be considered Preview Code. --- -## 2. Terminology +## Terminology | Term | Definition | |------|------------| -| **Fragment** | A contiguous region of machine code described by a single `RUNTIME_FUNCTION` / `UNWIND_INFO_V3` pair. A function might consist of a *main fragment* and zero or more *sub-fragments* chained together. For more information see [Chained unwind info structures](../build/exception-handling-x64.md#chained-unwind-info-structures). | +| **Fragment** | A contiguous region of machine code described by a single `RUNTIME_FUNCTION` / `UNWIND_INFO_V3` pair. A function might consist of a *main fragment* and zero or more *subfragments* chained together. For more information see [Chained unwind info structures](../build/exception-handling-x64.md#chained-unwind-info-structures). | | **WOD** | Winding Operation Descriptor — a variable-length packed encoding of a single unwind operation (push, alloc, save, and so on). | | **WOD pool** | The byte array within the payload that stores all WODs for a fragment's prolog and epilog(s). | | **IP Offset** | The unsigned byte offset of an instruction relative to the start of the prolog or epilog. | @@ -31,7 +31,7 @@ This is a **Preview Specification**, in Beta Stage: There's still a risk of brea --- -## 3. Overall Object-File Layout +## Overall Object-File Layout Unwind V3 reuses the existing PE/COFF `.pdata` and `.xdata` section conventions unchanged: @@ -53,63 +53,49 @@ No changes from V1/V2. --- -## 4. `UNWIND_INFO_V3` Header +## `UNWIND_INFO_V3` Header All multi-byte fields are little-endian. Bit 0 is the LSB of each byte. -``` -Byte 0: - Bits [2:0] Version = 3 - Bits [7:3] Flags (5 bits) - -Byte 1: - Bits [7:0] SizeOfProlog (8 bits) +| Byte | Bits | Field | Width | +|------|------|-------|-------| +| 0 | [2:0] | `Version` (= 3) | 3 bits | +| 0 | [7:3] | `Flags` | 5 bits | +| 1 | [7:0] | `SizeOfProlog` | 8 bits | +| 2 | [7:0] | `PayloadWords` | 8 bits | +| 3 | [4:0] | `NumberOfOps` | 5 bits | +| 3 | [7:5] | `NumberOfEpilogs` | 3 bits | -Byte 2: - Bits [7:0] PayloadWords (8 bits) - -Byte 3: - Bits [4:0] NumberOfOps (5 bits) - Bits [7:5] NumberOfEpilogs (3 bits) -``` - -### 4.1. Field Semantics +### Field Semantics | Field | Description | |-------|-------------| | `Version` | Must be `3`. | | `Flags` | Same flag definitions as V1/V2: `UNW_FLAG_EHANDLER` (0x01), `UNW_FLAG_UHANDLER` (0x02), `UNW_FLAG_CHAININFO` (0x04). New in V3: `UNW_FLAG_LARGE` (0x08). Bit 4 reserved (zero). | -| `SizeOfProlog` | Byte offset to the start of the first instruction that isn't part of the prolog. When `UNW_FLAG_LARGE` is set, this 8-bit field is the **low byte** of a 16-bit prolog size; see §4.2. | -| `PayloadWords` | Number of **16-bit words** of payload following this header. The payload contains prolog IP offsets, all epilog descriptors (including their IP offsets), and the WOD pool. Does **not** include the exception-handler RVA or chained `RUNTIME_FUNCTION` that might follow. The algorithm to locate the handler/chain data is the same as V1/V2: `header + 4 + PayloadWords * 2`, DWORD-aligned. | -| `NumberOfOps` | Count of WODs in the prolog (0–31). Zero means no prolog. If a function needs more than 31 prolog operations, use a sub-fragment. | -| `NumberOfEpilogs` | Count of `EPILOG_INFO_V3` descriptors that follow the prolog IP offsets (0–7). Zero means no epilogs in this fragment. If more than 7 are needed, use a sub-fragment. | +| `SizeOfProlog` | Byte offset to the start of the first instruction that isn't part of the prolog. When `UNW_FLAG_LARGE` is set, this 8-bit field is the low byte of a 16-bit prolog size. For more information on the 16-bit form see [`UNW_FLAG_LARGE` and `UNWIND_INFO_LARGE_V3`](#unw_flag_large-and-unwind_info_large_v3). | +| `PayloadWords` | Number of 16-bit words of payload following this header. The payload contains prolog IP offsets, all epilog descriptors (including their IP offsets), and the WOD pool. Does not include the exception-handler RVA or chained `RUNTIME_FUNCTION` that might follow. The algorithm to locate the handler/chain data is the same as V1/V2: `header + 4 + PayloadWords * 2`, DWORD-aligned. | +| `NumberOfOps` | Count of WODs in the prolog (0–31). Zero means no prolog. If a function needs more than 31 prolog operations, use a subfragment. | +| `NumberOfEpilogs` | Count of `EPILOG_INFO_V3` descriptors that follow the prolog IP offsets (0–7). Zero means no epilogs in this fragment. If more than 7 are needed, use a subfragment. | -### 4.2. `UNW_FLAG_LARGE` and `UNWIND_INFO_LARGE_V3` +### `UNW_FLAG_LARGE` and `UNWIND_INFO_LARGE_V3` -When `UNW_FLAG_LARGE` is set in the header `Flags`, the first byte of -the payload is a 1-byte `UNWIND_INFO_LARGE_V3` extension: +When `UNW_FLAG_LARGE` is set in the header `Flags`, the first byte of the payload is a 1-byte `UNWIND_INFO_LARGE_V3` extension: -``` -Byte 0: - Bits [7:0] SizeOfPrologHighByte (8 bits) -``` +| Byte | Bits | Field | Width | +|------|------|-------|-------| +| 0 | [7:0] | `SizeOfPrologHighByte` | 8 bits | -`SizeOfPrologHighByte` is combined with `UNWIND_INFO_V3.SizeOfProlog` -to form a 16-bit prolog size: -`SizeOfProlog16 = (SizeOfPrologHighByte << 8) | SizeOfProlog`. +`SizeOfPrologHighByte` is combined with `UNWIND_INFO_V3.SizeOfProlog` to form a 16-bit prolog size: `SizeOfProlog16 = (SizeOfPrologHighByte << 8) | SizeOfProlog`. Additionally, when `UNW_FLAG_LARGE` is set: -- Prolog IP offset entries are **16-bit unsigned** (2 bytes each) - instead of 8-bit. +- Prolog IP offset entries are 16-bit unsigned (2 bytes each) instead of 8-bit. -The `UNWIND_INFO_LARGE_V3` byte is part of the payload and is included -in `PayloadWords`. The handler-offset formula remains unchanged. +The `UNWIND_INFO_LARGE_V3` byte is part of the payload and is included in `PayloadWords`. The handler-offset formula remains unchanged. -This flag is expected to be needed very rarely (prologs exceeding -255 bytes). +This flag is expected to be needed very rarely (prologs exceeding 255 bytes). -### 4.3. Locating Exception Handler / Chain Info +### Locating Exception Handler / Chain Info Identical to V1/V2: @@ -117,169 +103,113 @@ Identical to V1/V2: handler_offset = ALIGN_UP(sizeof(UNWIND_INFO_V3) + PayloadWords * 2, 4) ``` -If `UNW_FLAG_EHANDLER` or `UNW_FLAG_UHANDLER` is set, a 4-byte handler RVA is -at `handler_offset`, followed by language-specific handler data. +If `UNW_FLAG_EHANDLER` or `UNW_FLAG_UHANDLER` is set, a 4-byte handler RVA is at `handler_offset`, followed by language-specific handler data. -If `UNW_FLAG_CHAININFO` is set, a 12-byte `RUNTIME_FUNCTION` is at -`handler_offset`. +If `UNW_FLAG_CHAININFO` is set, a 12-byte `RUNTIME_FUNCTION` is at `handler_offset`. --- -## 5. Payload Layout +## Payload Layout -Immediately after the 4-byte header, the payload is arranged as follows (all -packed, `#pragma pack(1)` semantics): +Immediately after the 4-byte header, the payload is arranged in the following order (all packed, `#pragma pack(1)` semantics): -``` -┌──────────────────────────────────────────────────────────────────┐ -│ UNWIND_INFO_LARGE_V3 (only if UNW_FLAG_LARGE) │ -├──────────────────────────────────────────────────────────────────┤ -│ Prolog IP Offsets [NumberOfOps bytes (or words if LARGE)] │ -├──────────────────────────────────────────────────────────────────┤ -│ EPILOG_INFO_V3[0] │ -| EPILOG_INFO(_LARGE)_EX_V3[0] (optional) | -│ + IP Offsets[0] [NumberOfOps bytes (or words if LARGE)] │ -├──────────────────────────────────────────────────────────────────┤ -│ EPILOG_INFO_V3[1] │ -| EPILOG_INFO(_LARGE)_EX_V3[1] (optional) | -│ + IP Offsets[1] [NumberOfOps bytes (or words if LARGE)] │ -├──────────────────────────────────────────────────────────────────┤ -│ ... │ -├──────────────────────────────────────────────────────────────────┤ -│ WOD Pool [remaining bytes] │ -└──────────────────────────────────────────────────────────────────┘ - Total size = PayloadWords * 2 bytes (may include padding to fill words) -``` - -### 5.1. Prolog IP Offsets - -An array of `NumberOfOps` entries. Each entry is an unsigned byte (or an -unsigned 16-bit word when `UNW_FLAG_LARGE` is set) giving the IP offset -(from the start of the prolog / start of the fragment) of the instruction -that performs the corresponding unwind operation. +1. `UNWIND_INFO_LARGE_V3` — 1 byte, present only if `UNW_FLAG_LARGE` is set. +1. Prolog IP Offsets — `NumberOfOps` bytes (or 16-bit words if `UNW_FLAG_LARGE`). +1. For each epilog (repeated `NumberOfEpilogs` times): + - `EPILOG_INFO_V3` descriptor. + - `EPILOG_INFO_EX_V3` or `EPILOG_INFO_LARGE_EX_V3` extended descriptor (present only when `NumberOfOps > 0`). + - IP Offset array — `NumberOfOps` bytes (or 16-bit words if `EPILOG_INFO_LARGE`). +1. WOD Pool — remaining bytes. -**Ordering:** The first entry corresponds to the operation closest to the -function body (the *last* prolog instruction with an unwind effect). The last -entry corresponds to the operation closest to the function entry point (the -*first* prolog instruction). This matches the V1/V2 convention of listing -unwind codes in reverse execution order. The prolog WODs always start at byte -offset 0 of the WOD pool, and this same ordering applies. +Total size = `PayloadWords` × 2 bytes (may include padding to fill words). -### 5.2. Epilog Descriptors +### Prolog IP Offsets -Zero or more `EPILOG_INFO_V3` structures follow the prolog IP offsets. Each -can have an optional `EPILOG_INFO_EX_V3` (or `EPILOG_INFO_LARGE_EX_V3` when -the `EPILOG_INFO_LARGE` flag is set) plus its own variable-size IP offset -array, of size `NumberOfOps`: +An array of `NumberOfOps` entries. Each entry is an unsigned byte (or an unsigned 16-bit word when `UNW_FLAG_LARGE` is set) giving the IP offset (from the start of the prolog / start of the fragment) of the instruction that performs the corresponding unwind operation. -#### 5.2.1. When `NumberOfOps > 0` (full descriptor) +**Ordering:** The first entry corresponds to the operation closest to the function body (the *last* prolog instruction with an unwind effect). The last entry corresponds to the operation closest to the function entry point (the *first* prolog instruction). This matches the V1/V2 convention of listing unwind codes in reverse execution order. The prolog WODs always start at byte offset 0 of the WOD pool, and this same ordering applies. -**Standard form** (`EPILOG_INFO_LARGE` not set): - -``` -EPILOG_INFO_V3 +### Epilog Descriptors -Byte 0: - Bits [2:0] Flags (3 bits) - Bits [7:3] NumberOfOps (5 bits) +Zero or more `EPILOG_INFO_V3` structures follow the prolog IP offsets. Each can have an optional `EPILOG_INFO_EX_V3` (or `EPILOG_INFO_LARGE_EX_V3` when the `EPILOG_INFO_LARGE` flag is set) plus its own variable-size IP offset array, of size `NumberOfOps`: -Bytes 1–2: - Bits [15:0] EpilogOffset (16-bit signed) +#### When `NumberOfOps > 0` (full descriptor) +**Standard form** (`EPILOG_INFO_LARGE` not set): -EPILOG_INFO_EX_V3 +`EPILOG_INFO_V3`: -Bytes 0–1: - Bits [15:0] FirstOp (16-bit unsigned) +| Byte | Bits | Field | Width | +|------|------|-------|-------| +| 0 | [2:0] | `Flags` | 3 bits | +| 0 | [7:3] | `NumberOfOps` | 5 bits | +| 1–2 | [15:0] | `EpilogOffset` | 16-bit signed | -Byte 2: - Bits [7:0] IpOffsetOfLastInstruction (8 bits unsigned) +`EPILOG_INFO_EX_V3`: -Bytes 3 .. - IP Offset array [NumberOfOps bytes, unsigned] -``` +| Byte | Bits | Field | Width | +|------|------|-------|-------| +| 0–1 | [15:0] | `FirstOp` | 16-bit unsigned | +| 2 | [7:0] | `IpOffsetOfLastInstruction` | 8 bits unsigned | +| 3 .. | — | IP Offset array | `NumberOfOps` bytes, unsigned | **Large form** (`EPILOG_INFO_LARGE` set): -``` -EPILOG_INFO_V3 +`EPILOG_INFO_V3`: -Byte 0: - Bits [2:0] Flags (3 bits) - Bits [7:3] NumberOfOps (5 bits) +| Byte | Bits | Field | Width | +|------|------|-------|-------| +| 0 | [2:0] | `Flags` | 3 bits | +| 0 | [7:3] | `NumberOfOps` | 5 bits | +| 1–2 | [15:0] | `EpilogOffset` | 16-bit signed | -Bytes 1–2: - Bits [15:0] EpilogOffset (16-bit signed) +`EPILOG_INFO_LARGE_EX_V3`: +| Byte | Bits | Field | Width | +|------|------|-------|-------| +| 0–1 | [15:0] | `FirstOp` | 16-bit unsigned | +| 2–3 | [15:0] | `IpOffsetOfLastInstruction` | 16 bits unsigned | +| 4 .. | — | IP Offset array | `NumberOfOps` × 2 bytes, unsigned 16-bit | -EPILOG_INFO_LARGE_EX_V3 +#### When `NumberOfOps == 0` (inherited descriptor) -Bytes 0–1: - Bits [15:0] FirstOp (16-bit unsigned) +`EPILOG_INFO_V3`: -Bytes 2–3: - Bits [15:0] IpOffsetOfLastInstruction (16 bits unsigned) - -Bytes 4 .. - IP Offset array [NumberOfOps × 2 bytes, unsigned 16-bit] -``` - -#### 5.2.2. When `NumberOfOps == 0` (inherited descriptor): 3 bytes - -``` -EPILOG_INFO_V3 - -Byte 0: - Bits [2:0] Flags (3 bits) - Bits [7:3] NumberOfOps = 0 - -Bytes 1–2: - Bits [15:0] EpilogOffset (16-bit signed) -``` +| Byte | Bits | Field | Width | +|------|------|-------|-------| +| 0 | [2:0] | `Flags` | 3 bits | +| 0 | [7:3] | `NumberOfOps` (= 0) | 5 bits | +| 1–2 | [15:0] | `EpilogOffset` | 16-bit signed | The `Flags` bits 0 and 1, `FirstOp`, `IpOffsetOfLastInstruction`, and IP offset array are inherited from the immediately preceding `EPILOG_INFO_V3`. -#### 5.2.3. Epilog Field Semantics +#### Epilog Field Semantics | Field | Description | |-------|-------------| | `Flags` | Bit 0: `EPILOG_INFO_PARENT_FRAGMENT_TRANSFER` — set if this epilog transfers control back to the parent fragment (e.g. via JMP) rather than returning to the caller. Bit 1: `EPILOG_INFO_LARGE` — when set, the extended descriptor uses `EPILOG_INFO_LARGE_EX_V3` (16-bit `IpOffsetOfLastInstruction`) and each IP offset entry is 16-bit, accommodating epilogs exceeding 255 bytes. Expected very rarely. Bit 2: reserved (zero). | | `NumberOfOps` | Number of WODs for this epilog (0–31). Zero is a special value meaning "inherit from previous epilog descriptor." | -| `EpilogOffset` | 16-bit signed displacement to the first instruction of this epilog. For the **first** epilog descriptor: positive values are byte offsets from the fragment start; negative values are byte offsets from the fragment tail (first byte past the end). For **subsequent** epilog descriptors: delta from the start of the previous epilog. All epilogs must use the same sign (all sorted ascending from start, or all sorted descending from tail). | +| `EpilogOffset` | 16-bit signed displacement to the first instruction of this epilog. For the first epilog descriptor: positive values are byte offsets from the fragment start; negative values are byte offsets from the fragment tail (first byte past the end). For subsequent epilog descriptors: delta from the start of the previous epilog. All epilogs must use the same sign (all sorted ascending from start, or all sorted descending from tail). | | `FirstOp` | Byte index into the WOD pool where the first WOD for this epilog resides. Since WODs are variable-length, this is a byte offset, not a WOD index. Epilogs may share WODs with the prolog or with each other by pointing into the same pool region. | | `IpOffsetOfLastInstruction` | Unsigned byte offset (from the epilog start) of the last instruction in the epilog (typically RET or JMP). 8-bit in `EPILOG_INFO_EX_V3`; 16-bit in `EPILOG_INFO_LARGE_EX_V3`. The unwinder uses this to determine where the epilog ends and the function body resumes. | -#### 5.2.4. Epilog IP Offsets - -Immediately after each full epilog descriptor (when `NumberOfOps > 0`), an -array of `NumberOfOps` entries gives the IP offset of each epilog instruction -that has a corresponding WOD. Each entry is an unsigned byte, or an unsigned -16-bit word when `EPILOG_INFO_LARGE` is set. Ordering: first entry = operation -closest to the body (first epilog instruction with an unwind effect), last -entry = operation closest to the control-transfer instruction. +#### Epilog IP Offsets -### 5.3. WOD Pool +Immediately after each full epilog descriptor (when `NumberOfOps > 0`), an array of `NumberOfOps` entries gives the IP offset of each epilog instruction that has a corresponding WOD. Each entry is an unsigned byte, or an unsigned 16-bit word when `EPILOG_INFO_LARGE` is set. Ordering: first entry = operation closest to the body (first epilog instruction with an unwind effect), last entry = operation closest to the control-transfer instruction. -The remaining bytes in the payload form the WOD pool. The prolog's WODs -implicitly start at byte offset 0 of this pool. Each epilog's WODs start at -the byte offset given by its `FirstOp` field. WODs are packed with no alignment -or padding between them. +### WOD Pool -The number of WODs consumed for the prolog is `UNWIND_INFO_V3.NumberOfOps`. The -number consumed for each epilog is its respective `EPILOG_INFO_V3.NumberOfOps` -(or inherited). +The remaining bytes in the payload form the WOD pool. The prolog's WODs implicitly start at byte offset 0 of this pool. Each epilog's WODs start at the byte offset given by its `FirstOp` field. WODs are packed with no alignment or padding between them. ---- +The number of WODs consumed for the prolog is `UNWIND_INFO_V3.NumberOfOps`. The number consumed for each epilog is its respective `EPILOG_INFO_V3.NumberOfOps` (or inherited). -## 6. WOD Encoding Reference +## WOD Encoding Reference -WODs are variable-length (1–5 bytes), packed with `#pragma pack(1)`. The opcode -is encoded in the **low-order bits** of the first byte. Decoding requires -multi-level bit inspection. +WODs are variable-length (1–5 bytes), packed with `#pragma pack(1)`. The opcode is encoded in the **low-order bits** of the first byte. Decoding requires multi-level bit inspection. -### 6.1. Opcode Dispatch Table +### Opcode Dispatch Table -To decode a WOD, read the first byte and test low bits in the following order: +To decode a WOD, read the first byte and test its low bits in the following order: | Test | Opcode Value | WOD Type | Size | |------|--------------|----------|------| @@ -302,7 +232,8 @@ To decode a WOD, read the first byte and test low bits in the following order: uint8_t b0 = pool[offset]; uint8_t op3 = b0 & 0x07; -switch (op3) { +switch (op3) +{ case 4: return WOD_PUSH; // 3-bit opcode = 100b case 5: return WOD_SAVE_NONVOL_FAR;// 3-bit opcode = 101b case 6: return WOD_SAVE_NONVOL; // 3-bit opcode = 110b @@ -311,7 +242,8 @@ default: break; // bits[2:0] are 0b000, 0b001, 0b010, or 0b011 } uint8_t op4 = b0 & 0x0F; -switch (op4) { +switch (op4) +{ case 0x08: return WOD_ALLOC_SMALL; case 0x09: return WOD_SAVE_XMM128_FAR; case 0x0A: return WOD_SAVE_XMM128; @@ -322,7 +254,8 @@ uint8_t op6 = b0 & 0x3F; if (op6 == 0x20) return WOD_PUSH2; // 8-bit opcode (full byte match) -switch (b0) { +switch (b0) +{ case 0x00: return WOD_SET_FPREG; case 0x01: return WOD_ALLOC_HUGE; case 0x02: return WOD_ALLOC_LARGE; @@ -331,21 +264,20 @@ default: return INVALID; } ``` -### 6.2. WOD Layouts (Bit-Level) +### WOD layouts (Bit-Level) -All bit positions are numbered LSB-first within each byte. Multi-byte integer -fields are little-endian. +All bit positions are numbered LSB-first within each byte. Multi-byte integer fields are little-endian. -#### 6.2.1. `WOD_PUSH` — 1 byte +#### `WOD_PUSH` — 1 byte ``` Byte 0: [2:0] = 100b (opcode 4) [7:3] = Register (5 bits, AMD64 integer register number) ``` -**Effect:** `PUSH ` — adjusts RSP by 8 and stores register. +**Effect:** `PUSH ` adjusts RSP by 8 and stores register. -#### 6.2.2. `WOD_PUSH2` — 2 bytes +#### `WOD_PUSH2` — 2 bytes ``` Byte 0: [5:0] = 100000b (opcode 32) @@ -354,20 +286,18 @@ Byte 1: [2:0] = Register1[4:2] (high 3 bits) [7:3] = Register2 (5 bits) ``` -**Effect:** `PUSH2 , ` — pushes two registers with a single -instruction (APX). Adjusts RSP by 16. +**Effect:** `PUSH2 , ` pushes two registers with a single instruction (APX). Adjusts RSP by 16. -#### 6.2.3. `WOD_PUSH_CONSECUTIVE_2` — 1 byte +#### `WOD_PUSH_CONSECUTIVE_2` — 1 byte ``` Byte 0: [2:0] = 111b (opcode 7) [7:3] = Register (5 bits) ``` -**Effect:** Pushes `Register` and `Register+1` consecutively. Adjusts `RSP` -by 16 total. `Register` value must be limited to [0, 30], as value of 31 would place `Register+1` out of bounds. +**Effect:** Pushes `Register` and `Register+1` consecutively. Adjusts `RSP` by 16 total. `Register` value must be limited to [0, 30], as value of 31 would place `Register+1` out of bounds. -#### 6.2.4. `WOD_ALLOC_SMALL` — 1 byte +#### `WOD_ALLOC_SMALL` — 1 byte ``` Byte 0: [3:0] = 1000b (opcode 8) @@ -377,7 +307,7 @@ Byte 0: [3:0] = 1000b (opcode 8) **Actual allocation:** `(Size + 1) * 8` bytes. Range: 8–128 bytes in steps of 8. -#### 6.2.5. `WOD_ALLOC_LARGE` — 3 bytes +#### `WOD_ALLOC_LARGE` — 3 bytes ``` Byte 0: [7:0] = 0x02 (opcode 2) @@ -386,7 +316,7 @@ Bytes 1–2: Size (16-bit unsigned, little-endian) **Actual allocation:** `Size * 8` bytes. Range: up to 524,280 bytes. -#### 6.2.6. `WOD_ALLOC_HUGE` — 5 bytes +#### `WOD_ALLOC_HUGE` — 5 bytes ``` Byte 0: [7:0] = 0x01 (opcode 1) @@ -395,7 +325,7 @@ Bytes 1–4: Size (32-bit unsigned, little-endian) **Actual allocation:** Raw byte count (no scaling). Range: up to 4 GiB. -#### 6.2.7. `WOD_SET_FPREG` — 2 bytes +#### `WOD_SET_FPREG` — 2 bytes ``` Byte 0: [7:0] = 0x00 (opcode 0) @@ -405,7 +335,7 @@ Byte 1: [3:0] = Register (4 bits, 0–15) **Effect:** Establishes a frame pointer. ` = RSP + Offset * 16`. -#### 6.2.8. `WOD_SAVE_NONVOL` — 3 bytes +#### `WOD_SAVE_NONVOL` — 3 bytes ``` Byte 0: [2:0] = 110b (opcode 6) @@ -413,10 +343,10 @@ Byte 0: [2:0] = 110b (opcode 6) Bytes 1–2: Displacement (16-bit unsigned, little-endian) ``` -**Effect:** `MOV [RSP + Displacement * 8], ` — saves a non-volatile +**Effect:** `MOV [RSP + Displacement * 8], ` saves a non-volatile integer register to the stack. -#### 6.2.9. `WOD_SAVE_NONVOL_FAR` — 5 bytes +#### `WOD_SAVE_NONVOL_FAR` — 5 bytes ``` Byte 0: [2:0] = 101b (opcode 5) @@ -424,10 +354,9 @@ Byte 0: [2:0] = 101b (opcode 5) Bytes 1–4: Displacement (32-bit unsigned, little-endian) ``` -**Effect:** Same as `WOD_SAVE_NONVOL` but with a 32-bit unscaled byte -displacement. Used when the offset doesn't fit in 16 bits scaled by 8. +**Effect:** Same as `WOD_SAVE_NONVOL` but with a 32-bit unscaled byte displacement. Used when the offset doesn't fit in 16 bits scaled by 8. -#### 6.2.10. `WOD_SAVE_XMM128` — 3 bytes +#### `WOD_SAVE_XMM128` — 3 bytes ``` Byte 0: [3:0] = 1010b (opcode 10) @@ -435,10 +364,10 @@ Byte 0: [3:0] = 1010b (opcode 10) Bytes 1–2: Displacement (16-bit unsigned, little-endian) ``` -**Effect:** `MOVAPS [RSP + Displacement * 16], ` — saves a 128-bit +**Effect:** `MOVAPS [RSP + Displacement * 16], ` saves a 128-bit XMM register. -#### 6.2.11. `WOD_SAVE_XMM128_FAR` — 5 bytes +#### `WOD_SAVE_XMM128_FAR` — 5 bytes ``` Byte 0: [3:0] = 1001b (opcode 9) @@ -446,18 +375,16 @@ Byte 0: [3:0] = 1001b (opcode 9) Bytes 1–4: Displacement (32-bit unsigned, little-endian) ``` -**Effect:** Same as `WOD_SAVE_XMM128` but with a 32-bit unscaled byte -displacement. +**Effect:** Same as `WOD_SAVE_XMM128` but with a 32-bit unscaled byte displacement. -#### 6.2.12. `WOD_PUSH_CANONICAL_FRAME` — 2 bytes +#### `WOD_PUSH_CANONICAL_FRAME` — 2 bytes ``` Byte 0: [7:0] = 0x03 (opcode 3) Byte 1: [7:0] = Type (8 bits) ``` -**Effect:** Indicates the hardware/OS pushed a canonical frame onto the -stack. Type values distinguish: +**Effect:** Indicates the hardware/OS pushed a canonical frame onto the stack. Type values distinguish: - Machine frame without error code - Machine frame with error code - Machine frame with shadow-stack push @@ -465,7 +392,7 @@ stack. Type values distinguish: (Exact type values are defined by the OS; consult the Windows SDK headers.) -### 6.3. Opcode Constant Summary +### Opcode Constant Summary ```c #define WOD_OP_SET_FPREG 0 // 8-bit opcode, 2 bytes @@ -482,7 +409,7 @@ stack. Type values distinguish: #define WOD_OP_PUSH2 32 // 6-bit opcode, 2 bytes ``` -### 6.4. Register Encoding +### Register Encoding Integer registers use the standard AMD64 numbering (5 bits, 0–31): From 62e5f50758abf84977d98fe6b991fd8a569e50e3 Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo Teixeira Date: Wed, 20 May 2026 11:48:48 -0700 Subject: [PATCH 481/619] Feedback batch --- docs/build/x64-unwind-information-v3.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/build/x64-unwind-information-v3.md b/docs/build/x64-unwind-information-v3.md index 303d2cbe4d7..03e9a1524ab 100644 --- a/docs/build/x64-unwind-information-v3.md +++ b/docs/build/x64-unwind-information-v3.md @@ -28,6 +28,7 @@ Unwind Information V3 is a preview specification. There's still a risk of breaki | **WOD pool** | The byte array within the payload that stores all WODs for a fragment's prolog and epilog(s). | | **IP Offset** | The unsigned byte offset of an instruction relative to the start of the prolog or epilog. | | **Payload** | The variable-length region immediately after the 4-byte `UNWIND_INFO_V3` header, sized by `PayloadWords` 16-bit words. Contains the large prolog extension, prolog IP offsets, epilog descriptors (with their IP offsets), and the WOD pool. | +| **RVA** | Relative Virtual Address — an offset from the base address of the image at load time. | --- @@ -49,7 +50,7 @@ Each `RUNTIME_FUNCTION` entry is: | 4 | 4 | `EndAddress` — RVA of first byte past fragment end | | 8 | 4 | `UnwindInfoAddress` — RVA of `UNWIND_INFO_V3` in `.xdata` | -No changes from V1/V2. +No changes from V1 or V2. --- @@ -71,9 +72,9 @@ All multi-byte fields are little-endian. Bit 0 is the LSB of each byte. | Field | Description | |-------|-------------| | `Version` | Must be `3`. | -| `Flags` | Same flag definitions as V1/V2: `UNW_FLAG_EHANDLER` (0x01), `UNW_FLAG_UHANDLER` (0x02), `UNW_FLAG_CHAININFO` (0x04). New in V3: `UNW_FLAG_LARGE` (0x08). Bit 4 reserved (zero). | +| `Flags` | Same flag definitions as V1 or V2: `UNW_FLAG_EHANDLER` (0x01), `UNW_FLAG_UHANDLER` (0x02), `UNW_FLAG_CHAININFO` (0x04). New in V3: `UNW_FLAG_LARGE` (0x08). Bit 4 reserved (zero). | | `SizeOfProlog` | Byte offset to the start of the first instruction that isn't part of the prolog. When `UNW_FLAG_LARGE` is set, this 8-bit field is the low byte of a 16-bit prolog size. For more information on the 16-bit form see [`UNW_FLAG_LARGE` and `UNWIND_INFO_LARGE_V3`](#unw_flag_large-and-unwind_info_large_v3). | -| `PayloadWords` | Number of 16-bit words of payload following this header. The payload contains prolog IP offsets, all epilog descriptors (including their IP offsets), and the WOD pool. Does not include the exception-handler RVA or chained `RUNTIME_FUNCTION` that might follow. The algorithm to locate the handler/chain data is the same as V1/V2: `header + 4 + PayloadWords * 2`, DWORD-aligned. | +| `PayloadWords` | Number of 16-bit words of payload following this header. The payload contains prolog IP offsets, all epilog descriptors (including their IP offsets), and the WOD pool. Does not include the exception-handler RVA or chained `RUNTIME_FUNCTION` that might follow. The algorithm to locate the handler/chain data is the same as V1 or V2: `header + 4 + PayloadWords * 2`, DWORD-aligned. | | `NumberOfOps` | Count of WODs in the prolog (0–31). Zero means no prolog. If a function needs more than 31 prolog operations, use a subfragment. | | `NumberOfEpilogs` | Count of `EPILOG_INFO_V3` descriptors that follow the prolog IP offsets (0–7). Zero means no epilogs in this fragment. If more than 7 are needed, use a subfragment. | @@ -97,7 +98,7 @@ This flag is expected to be needed very rarely (prologs exceeding 255 bytes). ### Locating Exception Handler / Chain Info -Identical to V1/V2: +Identical to V1 or V2: ``` handler_offset = ALIGN_UP(sizeof(UNWIND_INFO_V3) + PayloadWords * 2, 4) @@ -127,7 +128,7 @@ Total size = `PayloadWords` × 2 bytes (may include padding to fill words). An array of `NumberOfOps` entries. Each entry is an unsigned byte (or an unsigned 16-bit word when `UNW_FLAG_LARGE` is set) giving the IP offset (from the start of the prolog / start of the fragment) of the instruction that performs the corresponding unwind operation. -**Ordering:** The first entry corresponds to the operation closest to the function body (the *last* prolog instruction with an unwind effect). The last entry corresponds to the operation closest to the function entry point (the *first* prolog instruction). This matches the V1/V2 convention of listing unwind codes in reverse execution order. The prolog WODs always start at byte offset 0 of the WOD pool, and this same ordering applies. +**Ordering:** The first entry corresponds to the operation closest to the function body (the *last* prolog instruction with an unwind effect). The last entry corresponds to the operation closest to the function entry point (the *first* prolog instruction). This matches the V1 or V2 convention of listing unwind codes in reverse execution order. The prolog WODs always start at byte offset 0 of the WOD pool, and this same ordering applies. ### Epilog Descriptors From d4922a2aa01f67de003bcceef74fdf1b68e33d71 Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo Teixeira Date: Wed, 20 May 2026 11:55:32 -0700 Subject: [PATCH 482/619] Feedback batch --- docs/build/x64-unwind-information-v3.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/docs/build/x64-unwind-information-v3.md b/docs/build/x64-unwind-information-v3.md index 03e9a1524ab..4dc70040986 100644 --- a/docs/build/x64-unwind-information-v3.md +++ b/docs/build/x64-unwind-information-v3.md @@ -17,8 +17,6 @@ Unwind V3 is required for code supporting APX. Non-APX enabled code should still Unwind Information V3 is a preview specification. There's still a risk of breaking changes or omissions. Code produced under this guidance should itself be considered Preview Code. ---- - ## Terminology | Term | Definition | @@ -30,12 +28,9 @@ Unwind Information V3 is a preview specification. There's still a risk of breaki | **Payload** | The variable-length region immediately after the 4-byte `UNWIND_INFO_V3` header, sized by `PayloadWords` 16-bit words. Contains the large prolog extension, prolog IP offsets, epilog descriptors (with their IP offsets), and the WOD pool. | | **RVA** | Relative Virtual Address — an offset from the base address of the image at load time. | ---- - ## Overall Object-File Layout -Unwind V3 reuses the existing PE/COFF `.pdata` and `.xdata` section -conventions unchanged: +Unwind V3 reuses the existing PE/COFF `.pdata` and `.xdata` section conventions unchanged: ``` .pdata — sorted array of IMAGE_AMD64_RUNTIME_FUNCTION_ENTRY (12 bytes each) @@ -52,8 +47,6 @@ Each `RUNTIME_FUNCTION` entry is: No changes from V1 or V2. ---- - ## `UNWIND_INFO_V3` Header All multi-byte fields are little-endian. Bit 0 is the LSB of each byte. @@ -108,8 +101,6 @@ If `UNW_FLAG_EHANDLER` or `UNW_FLAG_UHANDLER` is set, a 4-byte handler RVA is at If `UNW_FLAG_CHAININFO` is set, a 12-byte `RUNTIME_FUNCTION` is at `handler_offset`. ---- - ## Payload Layout Immediately after the 4-byte header, the payload is arranged in the following order (all packed, `#pragma pack(1)` semantics): From 7a157f8a6044bf21ba19f823ca82c4b4642b51fa Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo Teixeira Date: Wed, 20 May 2026 12:05:52 -0700 Subject: [PATCH 483/619] Feedback batch --- docs/build/x64-unwind-information-v3.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/x64-unwind-information-v3.md b/docs/build/x64-unwind-information-v3.md index 4dc70040986..f72cf5f8cbb 100644 --- a/docs/build/x64-unwind-information-v3.md +++ b/docs/build/x64-unwind-information-v3.md @@ -117,7 +117,7 @@ Total size = `PayloadWords` × 2 bytes (may include padding to fill words). ### Prolog IP Offsets -An array of `NumberOfOps` entries. Each entry is an unsigned byte (or an unsigned 16-bit word when `UNW_FLAG_LARGE` is set) giving the IP offset (from the start of the prolog / start of the fragment) of the instruction that performs the corresponding unwind operation. +An array of `NumberOfOps` entries. Each entry is an unsigned byte giving the IP offset from the start of the fragment of the instruction that performs the corresponding unwind operation. When `UNW_FLAG_LARGE` is set, each entry is an unsigned 16-bit word instead. **Ordering:** The first entry corresponds to the operation closest to the function body (the *last* prolog instruction with an unwind effect). The last entry corresponds to the operation closest to the function entry point (the *first* prolog instruction). This matches the V1 or V2 convention of listing unwind codes in reverse execution order. The prolog WODs always start at byte offset 0 of the WOD pool, and this same ordering applies. @@ -179,11 +179,11 @@ The `Flags` bits 0 and 1, `FirstOp`, `IpOffsetOfLastInstruction`, and IP offset | Field | Description | |-------|-------------| -| `Flags` | Bit 0: `EPILOG_INFO_PARENT_FRAGMENT_TRANSFER` — set if this epilog transfers control back to the parent fragment (e.g. via JMP) rather than returning to the caller. Bit 1: `EPILOG_INFO_LARGE` — when set, the extended descriptor uses `EPILOG_INFO_LARGE_EX_V3` (16-bit `IpOffsetOfLastInstruction`) and each IP offset entry is 16-bit, accommodating epilogs exceeding 255 bytes. Expected very rarely. Bit 2: reserved (zero). | +| `Flags` | Bit 0: `EPILOG_INFO_PARENT_FRAGMENT_TRANSFER` — set if this epilog transfers control back to the parent fragment (e.g. via JMP) rather than returning to the caller. Bit 1: `EPILOG_INFO_LARGE` — when set, the extended descriptor uses `EPILOG_INFO_LARGE_EX_V3` (16-bit `IpOffsetOfLastInstruction`) and each IP offset entry is 16-bit, accommodating epilogs exceeding 255 bytes. Bit 2: reserved (zero). | | `NumberOfOps` | Number of WODs for this epilog (0–31). Zero is a special value meaning "inherit from previous epilog descriptor." | -| `EpilogOffset` | 16-bit signed displacement to the first instruction of this epilog. For the first epilog descriptor: positive values are byte offsets from the fragment start; negative values are byte offsets from the fragment tail (first byte past the end). For subsequent epilog descriptors: delta from the start of the previous epilog. All epilogs must use the same sign (all sorted ascending from start, or all sorted descending from tail). | +| `EpilogOffset` | 16-bit signed displacement to the first instruction of this epilog. For the first epilog descriptor: positive values are byte offsets from the fragment start, and negative values are byte offsets from the fragment tail, that is, the first byte past the end. For subsequent epilog descriptors: delta from the start of the previous epilog. All epilogs must use the same sign — either all sorted ascending from start, or all sorted descending from tail. | | `FirstOp` | Byte index into the WOD pool where the first WOD for this epilog resides. Since WODs are variable-length, this is a byte offset, not a WOD index. Epilogs may share WODs with the prolog or with each other by pointing into the same pool region. | -| `IpOffsetOfLastInstruction` | Unsigned byte offset (from the epilog start) of the last instruction in the epilog (typically RET or JMP). 8-bit in `EPILOG_INFO_EX_V3`; 16-bit in `EPILOG_INFO_LARGE_EX_V3`. The unwinder uses this to determine where the epilog ends and the function body resumes. | +| `IpOffsetOfLastInstruction` | Unsigned byte offset from the epilog start of the last instruction in the epilog, typically RET or JMP. 8-bit in `EPILOG_INFO_EX_V3`; 16-bit in `EPILOG_INFO_LARGE_EX_V3`. The unwinder uses this to determine where the epilog ends and the function body resumes. | #### Epilog IP Offsets From f7f00ace312340f8b31c744d1b0ad11231246042 Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo Teixeira Date: Wed, 20 May 2026 12:16:31 -0700 Subject: [PATCH 484/619] Warning format - trusting Content Mentor... --- docs/build/x64-unwind-information-v3.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/build/x64-unwind-information-v3.md b/docs/build/x64-unwind-information-v3.md index f72cf5f8cbb..f9b40fb4a6d 100644 --- a/docs/build/x64-unwind-information-v3.md +++ b/docs/build/x64-unwind-information-v3.md @@ -15,7 +15,8 @@ Unwind Information V3 adds support for the Intel APX (Advanced Performance Exten Unwind V3 is required for code supporting APX. Non-APX enabled code should still use the [conventional (pre-V3) Unwind Information](../build/exception-handling-x64.md). -Unwind Information V3 is a preview specification. There's still a risk of breaking changes or omissions. Code produced under this guidance should itself be considered Preview Code. +> [!WARNING] +> Unwind Information V3 is a preview specification. There's still a risk of breaking changes or omissions. Code produced under this guidance should itself be considered preview code. ## Terminology From c839d831cfb02279cfcee5ab52cabefa8282d3f2 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 20 May 2026 13:44:02 -0700 Subject: [PATCH 485/619] fix bugs --- docs/build/sample-profile-guided-optimization.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/build/sample-profile-guided-optimization.md b/docs/build/sample-profile-guided-optimization.md index f9f2df002ca..aa0364d2c98 100644 --- a/docs/build/sample-profile-guided-optimization.md +++ b/docs/build/sample-profile-guided-optimization.md @@ -1,7 +1,7 @@ --- description: "Learn how to use Sample Profile-Guided Optimization (SPGO) to improve the performance of C and C++ applications." title: "Tutorial: Use Sample Profile-Guided Optimization (SPGO) to improve C++ performance" -ms.date: 05/08/2026 +ms.date: 05/20/2026 ms.topic: tutorial ai-usage: ai-assisted helpviewer_keywords: ["SPGO", "sample profile-guided optimization", "profiling, SPGO", "SPDConvert", "SPTAggregate"] @@ -112,8 +112,9 @@ The Windows Performance Toolkit (WPT) uses `perfcore.ini`, located if you instal Open Windows Notepad as Administrator. Then open `perfcore.ini`. Find the DLL list section and add the following entries, one per line: ``` -perf_spt.dll +perf_hv.dll perf_lbr.dll +perf_spt.dll ``` If `xperf.exe` isn't installed, see [General issues](#general-issues-all-paths) to install it. @@ -249,7 +250,7 @@ Before applying SPGO, build `textCount` and run it against a large text file, su **Build:** ```cmd -cl /EHsc /GL /O2 textCount.cpp +cl /Zi /EHsc /GL /O2 textCount.cpp /link /debug ``` **Run:** @@ -282,7 +283,7 @@ Record the `Elapsed time` value. You'll compare it to the SPGO-optimized time in Now build textCount with SPGO enabled. This step lays the groundwork to gather profiling data. ```cmd -cl /EHsc /GL /O2 textCount.cpp /link /debug /spgo +cl /Zi /EHsc /GL /O2 textCount.cpp /link /debug /spgo ``` When the build finishes, you see a message like: @@ -297,6 +298,7 @@ This message appears on the first `/spgo` build. The linker creates the SPD file | Flag | Purpose | |------|---------| +| `/Zi` | Generate complete debugging information | | `/EHsc` | Enable C++ exception handling | | `/GL` | Whole-program optimization — required for SPGO. Defers final optimization to link time, enabling cross-module inlining, code layout, and dead code elimination decisions. | | `/O2` | Optimize for speed — enables aggressive inlining, loop optimization, dead code removal, and related transforms. | @@ -549,7 +551,7 @@ Rebuild `textCount` by using the populated SPD file. The linker reads the profil This step is the same for all three profiling paths. ```cmd -cl /EHsc /GL /O2 textCount.cpp /link /debug /spgo /spdin:textCount.spd +cl /Zi /EHsc /GL /O2 textCount.cpp /link /debug /spgo /spdin:textCount.spd ``` **New flag (compared to [Build textCount with /spgo](#build-textcount-with-spgo)):** From 200afee7b85d294fabf3419db654f466c742546d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 20 May 2026 15:24:29 -0700 Subject: [PATCH 486/619] fixes --- docs/build/sample-profile-guided-optimization.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/sample-profile-guided-optimization.md b/docs/build/sample-profile-guided-optimization.md index aa0364d2c98..c3dd44aa60a 100644 --- a/docs/build/sample-profile-guided-optimization.md +++ b/docs/build/sample-profile-guided-optimization.md @@ -112,9 +112,9 @@ The Windows Performance Toolkit (WPT) uses `perfcore.ini`, located if you instal Open Windows Notepad as Administrator. Then open `perfcore.ini`. Find the DLL list section and add the following entries, one per line: ``` -perf_hv.dll perf_lbr.dll perf_spt.dll +perf_hv.dll ``` If `xperf.exe` isn't installed, see [General issues](#general-issues-all-paths) to install it. @@ -597,7 +597,7 @@ Collect multiple runs for each configuration and use the median. A single run is | Build | Representative elapsed time | |-------|-----------------------------| -| Baseline (`cl /EHsc /O2`) | *(your measurement)* | +| Baseline (`cl /Zi /EHsc /O2 /link debug`) | *(your measurement)* | | `/spgo` build (no profile data yet) | *(should be close to baseline)* | | SPGO-optimized (`/spdin`) | *(should show improvement)* | @@ -609,7 +609,7 @@ The LBR path followed in this tutorial was applied to the [SQLite](https://githu Use this checklist to apply SPGO to your own C or C++ application. -1. **Add `/link /spgo` to your existing release build command.** Modify your build script or project file: +1. **Add `/Zi /link /spgo /debug` to your existing release build command.** Modify your build script or project file: ```cmd cl /EHsc /GL /O2 myapp.cpp /link /spgo @@ -621,7 +621,7 @@ Use this checklist to apply SPGO to your own C or C++ application. 1. **Rebuild with `/spdin:`.** Compile your application with the populated SPD: ```cmd - cl /EHsc /GL /O2 yourApp.cpp /link /spgo /spdin:yourApp.spd + cl /Zi /EHsc /GL /O2 yourApp.cpp /link /debug /spgo /spdin:yourApp.spd ``` 1. **Measure before and after.** Run your workload with both the nonoptimized and SPGO-optimized binaries. Collect the **median of multiple runs** for each configuration. A single run isn't reliable for benchmarking. From 1f19195f73770ff11abbffb0bcfed241116a00a7 Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo Teixeira Date: Wed, 20 May 2026 16:38:24 -0700 Subject: [PATCH 487/619] Acrolinx --- docs/build/x64-unwind-information-v3.md | 72 ++++++++++++------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/docs/build/x64-unwind-information-v3.md b/docs/build/x64-unwind-information-v3.md index f9b40fb4a6d..246d81ca455 100644 --- a/docs/build/x64-unwind-information-v3.md +++ b/docs/build/x64-unwind-information-v3.md @@ -22,29 +22,29 @@ Unwind V3 is required for code supporting APX. Non-APX enabled code should still | Term | Definition | |------|------------| -| **Fragment** | A contiguous region of machine code described by a single `RUNTIME_FUNCTION` / `UNWIND_INFO_V3` pair. A function might consist of a *main fragment* and zero or more *subfragments* chained together. For more information see [Chained unwind info structures](../build/exception-handling-x64.md#chained-unwind-info-structures). | -| **WOD** | Winding Operation Descriptor — a variable-length packed encoding of a single unwind operation (push, alloc, save, and so on). | +| **Fragment** | A contiguous region of machine code described by a single `RUNTIME_FUNCTION` / `UNWIND_INFO_V3` pair. A function might consist of a *main fragment* and zero or more *subfragments* chained together. For more information, see [Chained unwind info structures](../build/exception-handling-x64.md#chained-unwind-info-structures). | +| **WOD** | The Winding Operation Descriptor is a variable-length packed encoding of a single unwind operation (push, alloc, save, and so on). | | **WOD pool** | The byte array within the payload that stores all WODs for a fragment's prolog and epilog(s). | | **IP Offset** | The unsigned byte offset of an instruction relative to the start of the prolog or epilog. | | **Payload** | The variable-length region immediately after the 4-byte `UNWIND_INFO_V3` header, sized by `PayloadWords` 16-bit words. Contains the large prolog extension, prolog IP offsets, epilog descriptors (with their IP offsets), and the WOD pool. | -| **RVA** | Relative Virtual Address — an offset from the base address of the image at load time. | +| **RVA** | Relative Virtual Address is the offset from the base address of the image at load time. | ## Overall Object-File Layout Unwind V3 reuses the existing PE/COFF `.pdata` and `.xdata` section conventions unchanged: ``` -.pdata — sorted array of IMAGE_AMD64_RUNTIME_FUNCTION_ENTRY (12 bytes each) -.xdata — UNWIND_INFO_V3 structures referenced by .pdata entries +.pdata - sorted array of IMAGE_AMD64_RUNTIME_FUNCTION_ENTRY (12 bytes each) +.xdata - UNWIND_INFO_V3 structures referenced by .pdata entries ``` Each `RUNTIME_FUNCTION` entry is: | Offset | Size | Field | |--------|------|-------| -| 0 | 4 | `BeginAddress` — RVA of fragment start | -| 4 | 4 | `EndAddress` — RVA of first byte past fragment end | -| 8 | 4 | `UnwindInfoAddress` — RVA of `UNWIND_INFO_V3` in `.xdata` | +| 0 | 4 | `BeginAddress` - RVA of fragment start | +| 4 | 4 | `EndAddress` - RVA of first byte past fragment end | +| 8 | 4 | `UnwindInfoAddress` - RVA of `UNWIND_INFO_V3` in `.xdata` | No changes from V1 or V2. @@ -67,8 +67,8 @@ All multi-byte fields are little-endian. Bit 0 is the LSB of each byte. |-------|-------------| | `Version` | Must be `3`. | | `Flags` | Same flag definitions as V1 or V2: `UNW_FLAG_EHANDLER` (0x01), `UNW_FLAG_UHANDLER` (0x02), `UNW_FLAG_CHAININFO` (0x04). New in V3: `UNW_FLAG_LARGE` (0x08). Bit 4 reserved (zero). | -| `SizeOfProlog` | Byte offset to the start of the first instruction that isn't part of the prolog. When `UNW_FLAG_LARGE` is set, this 8-bit field is the low byte of a 16-bit prolog size. For more information on the 16-bit form see [`UNW_FLAG_LARGE` and `UNWIND_INFO_LARGE_V3`](#unw_flag_large-and-unwind_info_large_v3). | -| `PayloadWords` | Number of 16-bit words of payload following this header. The payload contains prolog IP offsets, all epilog descriptors (including their IP offsets), and the WOD pool. Does not include the exception-handler RVA or chained `RUNTIME_FUNCTION` that might follow. The algorithm to locate the handler/chain data is the same as V1 or V2: `header + 4 + PayloadWords * 2`, DWORD-aligned. | +| `SizeOfProlog` | Byte offset to the start of the first instruction that isn't part of the prolog. When `UNW_FLAG_LARGE` is set, this 8-bit field is the low byte of a 16-bit prolog size. For more information on the 16-bit form, see [`UNW_FLAG_LARGE` and `UNWIND_INFO_LARGE_V3`](#unw_flag_large-and-unwind_info_large_v3). | +| `PayloadWords` | Number of 16-bit words of payload following this header. The payload contains prolog IP offsets, all epilog descriptors (including their IP offsets), and the WOD pool. Doesn't include the exception-handler RVA or chained `RUNTIME_FUNCTION` that might follow. The algorithm to locate the handler/chain data is the same as V1 or V2: `header + 4 + PayloadWords * 2`, DWORD-aligned. | | `NumberOfOps` | Count of WODs in the prolog (0–31). Zero means no prolog. If a function needs more than 31 prolog operations, use a subfragment. | | `NumberOfEpilogs` | Count of `EPILOG_INFO_V3` descriptors that follow the prolog IP offsets (0–7). Zero means no epilogs in this fragment. If more than 7 are needed, use a subfragment. | @@ -88,7 +88,7 @@ Additionally, when `UNW_FLAG_LARGE` is set: The `UNWIND_INFO_LARGE_V3` byte is part of the payload and is included in `PayloadWords`. The handler-offset formula remains unchanged. -This flag is expected to be needed very rarely (prologs exceeding 255 bytes). +This flag is only necessary for prologs exceeding 255 bytes. ### Locating Exception Handler / Chain Info @@ -106,13 +106,13 @@ If `UNW_FLAG_CHAININFO` is set, a 12-byte `RUNTIME_FUNCTION` is at `handler_offs Immediately after the 4-byte header, the payload is arranged in the following order (all packed, `#pragma pack(1)` semantics): -1. `UNWIND_INFO_LARGE_V3` — 1 byte, present only if `UNW_FLAG_LARGE` is set. -1. Prolog IP Offsets — `NumberOfOps` bytes (or 16-bit words if `UNW_FLAG_LARGE`). +1. `UNWIND_INFO_LARGE_V3` - 1 byte, present only if `UNW_FLAG_LARGE` is set. +1. Prolog IP Offsets - `NumberOfOps` bytes (or 16-bit words if `UNW_FLAG_LARGE`). 1. For each epilog (repeated `NumberOfEpilogs` times): - `EPILOG_INFO_V3` descriptor. - `EPILOG_INFO_EX_V3` or `EPILOG_INFO_LARGE_EX_V3` extended descriptor (present only when `NumberOfOps > 0`). - - IP Offset array — `NumberOfOps` bytes (or 16-bit words if `EPILOG_INFO_LARGE`). -1. WOD Pool — remaining bytes. + - IP Offset array - `NumberOfOps` bytes (or 16-bit words if `EPILOG_INFO_LARGE`). +1. WOD Pool - remaining bytes. Total size = `PayloadWords` × 2 bytes (may include padding to fill words). @@ -120,7 +120,7 @@ Total size = `PayloadWords` × 2 bytes (may include padding to fill words). An array of `NumberOfOps` entries. Each entry is an unsigned byte giving the IP offset from the start of the fragment of the instruction that performs the corresponding unwind operation. When `UNW_FLAG_LARGE` is set, each entry is an unsigned 16-bit word instead. -**Ordering:** The first entry corresponds to the operation closest to the function body (the *last* prolog instruction with an unwind effect). The last entry corresponds to the operation closest to the function entry point (the *first* prolog instruction). This matches the V1 or V2 convention of listing unwind codes in reverse execution order. The prolog WODs always start at byte offset 0 of the WOD pool, and this same ordering applies. +**Ordering:** The first entry corresponds to the operation closest to the function body (the *last* prolog instruction with an unwind effect). The last entry corresponds to the operation closest to the function entry point (the *first* prolog instruction). This matches the V1 or V2 convention of listing unwind codes in reverse execution order. The prolog WODs always start at byte offset zero of the WOD pool, and this same ordering applies. ### Epilog Descriptors @@ -144,7 +144,7 @@ Zero or more `EPILOG_INFO_V3` structures follow the prolog IP offsets. Each can |------|------|-------|-------| | 0–1 | [15:0] | `FirstOp` | 16-bit unsigned | | 2 | [7:0] | `IpOffsetOfLastInstruction` | 8 bits unsigned | -| 3 .. | — | IP Offset array | `NumberOfOps` bytes, unsigned | +| 3 .. | - | IP Offset array | `NumberOfOps` bytes, unsigned | **Large form** (`EPILOG_INFO_LARGE` set): @@ -162,7 +162,7 @@ Zero or more `EPILOG_INFO_V3` structures follow the prolog IP offsets. Each can |------|------|-------|-------| | 0–1 | [15:0] | `FirstOp` | 16-bit unsigned | | 2–3 | [15:0] | `IpOffsetOfLastInstruction` | 16 bits unsigned | -| 4 .. | — | IP Offset array | `NumberOfOps` × 2 bytes, unsigned 16-bit | +| 4 .. | - | IP Offset array | `NumberOfOps` × 2 bytes, unsigned 16-bit | #### When `NumberOfOps == 0` (inherited descriptor) @@ -180,11 +180,11 @@ The `Flags` bits 0 and 1, `FirstOp`, `IpOffsetOfLastInstruction`, and IP offset | Field | Description | |-------|-------------| -| `Flags` | Bit 0: `EPILOG_INFO_PARENT_FRAGMENT_TRANSFER` — set if this epilog transfers control back to the parent fragment (e.g. via JMP) rather than returning to the caller. Bit 1: `EPILOG_INFO_LARGE` — when set, the extended descriptor uses `EPILOG_INFO_LARGE_EX_V3` (16-bit `IpOffsetOfLastInstruction`) and each IP offset entry is 16-bit, accommodating epilogs exceeding 255 bytes. Bit 2: reserved (zero). | +| `Flags` | Bit 0: `EPILOG_INFO_PARENT_FRAGMENT_TRANSFER` - set if this epilog transfers control back to the parent fragment (for example, via JMP) rather than returning to the caller. Bit 1: `EPILOG_INFO_LARGE` - when set, the extended descriptor uses `EPILOG_INFO_LARGE_EX_V3` (16-bit `IpOffsetOfLastInstruction`) and each IP offset entry is 16-bit, accommodating epilogs exceeding 255 bytes. Bit 2: reserved (zero). | | `NumberOfOps` | Number of WODs for this epilog (0–31). Zero is a special value meaning "inherit from previous epilog descriptor." | -| `EpilogOffset` | 16-bit signed displacement to the first instruction of this epilog. For the first epilog descriptor: positive values are byte offsets from the fragment start, and negative values are byte offsets from the fragment tail, that is, the first byte past the end. For subsequent epilog descriptors: delta from the start of the previous epilog. All epilogs must use the same sign — either all sorted ascending from start, or all sorted descending from tail. | -| `FirstOp` | Byte index into the WOD pool where the first WOD for this epilog resides. Since WODs are variable-length, this is a byte offset, not a WOD index. Epilogs may share WODs with the prolog or with each other by pointing into the same pool region. | -| `IpOffsetOfLastInstruction` | Unsigned byte offset from the epilog start of the last instruction in the epilog, typically RET or JMP. 8-bit in `EPILOG_INFO_EX_V3`; 16-bit in `EPILOG_INFO_LARGE_EX_V3`. The unwinder uses this to determine where the epilog ends and the function body resumes. | +| `EpilogOffset` | 16-bit signed displacement to the first instruction of this epilog. For the first epilog descriptor: positive values are byte offsets from the fragment start, and negative values are byte offsets from the fragment tail, that is, the first byte past the end. For subsequent epilog descriptors: delta from the start of the previous epilog. All epilogs must use the same sign - either all sorted ascending from start, or all sorted descending from tail. | +| `FirstOp` | Byte index into the WOD pool where the first WOD for this epilog resides. This is a byte offset, not a WOD index. Epilogs may share WODs with the prolog or with each other by pointing into the same pool region. | +| `IpOffsetOfLastInstruction` | Unsigned byte offset from the epilog start of the last instruction in the epilog, typically RET, or JMP. 8-bit in `EPILOG_INFO_EX_V3`; 16-bit in `EPILOG_INFO_LARGE_EX_V3`. The unwinder uses this value to determine where the epilog ends and the function body resumes. | #### Epilog IP Offsets @@ -192,7 +192,7 @@ Immediately after each full epilog descriptor (when `NumberOfOps > 0`), an array ### WOD Pool -The remaining bytes in the payload form the WOD pool. The prolog's WODs implicitly start at byte offset 0 of this pool. Each epilog's WODs start at the byte offset given by its `FirstOp` field. WODs are packed with no alignment or padding between them. +The remaining bytes in the payload form the WOD pool. The prolog's WODs implicitly start at byte offset 0 of this pool. Each epilog's WOD list start at the byte offset given by its `FirstOp` field. WODs are packed with no alignment or padding between them. The number of WODs consumed for the prolog is `UNWIND_INFO_V3.NumberOfOps`. The number consumed for each epilog is its respective `EPILOG_INFO_V3.NumberOfOps` (or inherited). @@ -261,7 +261,7 @@ default: return INVALID; All bit positions are numbered LSB-first within each byte. Multi-byte integer fields are little-endian. -#### `WOD_PUSH` — 1 byte +#### `WOD_PUSH` - 1 byte ``` Byte 0: [2:0] = 100b (opcode 4) @@ -270,7 +270,7 @@ Byte 0: [2:0] = 100b (opcode 4) **Effect:** `PUSH ` adjusts RSP by 8 and stores register. -#### `WOD_PUSH2` — 2 bytes +#### `WOD_PUSH2` - 2 bytes ``` Byte 0: [5:0] = 100000b (opcode 32) @@ -281,7 +281,7 @@ Byte 1: [2:0] = Register1[4:2] (high 3 bits) **Effect:** `PUSH2 , ` pushes two registers with a single instruction (APX). Adjusts RSP by 16. -#### `WOD_PUSH_CONSECUTIVE_2` — 1 byte +#### `WOD_PUSH_CONSECUTIVE_2` - 1 byte ``` Byte 0: [2:0] = 111b (opcode 7) @@ -290,7 +290,7 @@ Byte 0: [2:0] = 111b (opcode 7) **Effect:** Pushes `Register` and `Register+1` consecutively. Adjusts `RSP` by 16 total. `Register` value must be limited to [0, 30], as value of 31 would place `Register+1` out of bounds. -#### `WOD_ALLOC_SMALL` — 1 byte +#### `WOD_ALLOC_SMALL` - 1 byte ``` Byte 0: [3:0] = 1000b (opcode 8) @@ -300,7 +300,7 @@ Byte 0: [3:0] = 1000b (opcode 8) **Actual allocation:** `(Size + 1) * 8` bytes. Range: 8–128 bytes in steps of 8. -#### `WOD_ALLOC_LARGE` — 3 bytes +#### `WOD_ALLOC_LARGE` - 3 bytes ``` Byte 0: [7:0] = 0x02 (opcode 2) @@ -309,7 +309,7 @@ Bytes 1–2: Size (16-bit unsigned, little-endian) **Actual allocation:** `Size * 8` bytes. Range: up to 524,280 bytes. -#### `WOD_ALLOC_HUGE` — 5 bytes +#### `WOD_ALLOC_HUGE` - 5 bytes ``` Byte 0: [7:0] = 0x01 (opcode 1) @@ -318,7 +318,7 @@ Bytes 1–4: Size (32-bit unsigned, little-endian) **Actual allocation:** Raw byte count (no scaling). Range: up to 4 GiB. -#### `WOD_SET_FPREG` — 2 bytes +#### `WOD_SET_FPREG` - 2 bytes ``` Byte 0: [7:0] = 0x00 (opcode 0) @@ -328,7 +328,7 @@ Byte 1: [3:0] = Register (4 bits, 0–15) **Effect:** Establishes a frame pointer. ` = RSP + Offset * 16`. -#### `WOD_SAVE_NONVOL` — 3 bytes +#### `WOD_SAVE_NONVOL` - 3 bytes ``` Byte 0: [2:0] = 110b (opcode 6) @@ -336,10 +336,10 @@ Byte 0: [2:0] = 110b (opcode 6) Bytes 1–2: Displacement (16-bit unsigned, little-endian) ``` -**Effect:** `MOV [RSP + Displacement * 8], ` saves a non-volatile +**Effect:** `MOV [RSP + Displacement * 8], ` saves a nonvolatile integer register to the stack. -#### `WOD_SAVE_NONVOL_FAR` — 5 bytes +#### `WOD_SAVE_NONVOL_FAR` - 5 bytes ``` Byte 0: [2:0] = 101b (opcode 5) @@ -349,7 +349,7 @@ Bytes 1–4: Displacement (32-bit unsigned, little-endian) **Effect:** Same as `WOD_SAVE_NONVOL` but with a 32-bit unscaled byte displacement. Used when the offset doesn't fit in 16 bits scaled by 8. -#### `WOD_SAVE_XMM128` — 3 bytes +#### `WOD_SAVE_XMM128` - 3 bytes ``` Byte 0: [3:0] = 1010b (opcode 10) @@ -360,7 +360,7 @@ Bytes 1–2: Displacement (16-bit unsigned, little-endian) **Effect:** `MOVAPS [RSP + Displacement * 16], ` saves a 128-bit XMM register. -#### `WOD_SAVE_XMM128_FAR` — 5 bytes +#### `WOD_SAVE_XMM128_FAR` - 5 bytes ``` Byte 0: [3:0] = 1001b (opcode 9) @@ -370,7 +370,7 @@ Bytes 1–4: Displacement (32-bit unsigned, little-endian) **Effect:** Same as `WOD_SAVE_XMM128` but with a 32-bit unscaled byte displacement. -#### `WOD_PUSH_CANONICAL_FRAME` — 2 bytes +#### `WOD_PUSH_CANONICAL_FRAME` - 2 bytes ``` Byte 0: [7:0] = 0x03 (opcode 3) From 52de283132947b55abc335a39bbded704a747c13 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 20 May 2026 17:00:44 -0700 Subject: [PATCH 488/619] missed one spot for /Zi --- docs/build/sample-profile-guided-optimization.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build/sample-profile-guided-optimization.md b/docs/build/sample-profile-guided-optimization.md index c3dd44aa60a..a1bcf408526 100644 --- a/docs/build/sample-profile-guided-optimization.md +++ b/docs/build/sample-profile-guided-optimization.md @@ -298,7 +298,7 @@ This message appears on the first `/spgo` build. The linker creates the SPD file | Flag | Purpose | |------|---------| -| `/Zi` | Generate complete debugging information | +| `/Zi` | Generate complete debugging information. This is necessary for SPGO to map profiling samples to source code. | | `/EHsc` | Enable C++ exception handling | | `/GL` | Whole-program optimization — required for SPGO. Defers final optimization to link time, enabling cross-module inlining, code layout, and dead code elimination decisions. | | `/O2` | Optimize for speed — enables aggressive inlining, loop optimization, dead code removal, and related transforms. | @@ -609,10 +609,10 @@ The LBR path followed in this tutorial was applied to the [SQLite](https://githu Use this checklist to apply SPGO to your own C or C++ application. -1. **Add `/Zi /link /spgo /debug` to your existing release build command.** Modify your build script or project file: +1. **Add `/Zi /link /debug /spgo` to your existing release build command.** Modify your build script or project file: ```cmd - cl /EHsc /GL /O2 myapp.cpp /link /spgo + cl /Zi /EHsc /GL /O2 myapp.cpp /link /debug /spgo ``` 1. **Choose a representative workload.** Select a real usage scenario that exercises the hot paths of your application. Use production-like data. Avoid the following as your primary profiling workload: code coverage tests (they don't stress performance bottlenecks), uncommon error paths, startup and shutdown phases, and deprecated code paths. This workload drives the profile that feeds the optimizer. From ccde0628b6d7b635a084def06f287864600416ba Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 20 May 2026 17:03:05 -0700 Subject: [PATCH 489/619] fix flag --- docs/build/sample-profile-guided-optimization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/sample-profile-guided-optimization.md b/docs/build/sample-profile-guided-optimization.md index a1bcf408526..9a9b7babe60 100644 --- a/docs/build/sample-profile-guided-optimization.md +++ b/docs/build/sample-profile-guided-optimization.md @@ -597,7 +597,7 @@ Collect multiple runs for each configuration and use the median. A single run is | Build | Representative elapsed time | |-------|-----------------------------| -| Baseline (`cl /Zi /EHsc /O2 /link debug`) | *(your measurement)* | +| Baseline (`cl /Zi /EHsc /O2 /link /debug`) | *(your measurement)* | | `/spgo` build (no profile data yet) | *(should be close to baseline)* | | SPGO-optimized (`/spdin`) | *(should show improvement)* | From 5b149a6b58b7fa86a8f16749354b73ab63c968bc Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 21 May 2026 14:35:58 -0700 Subject: [PATCH 490/619] add links --- docs/build/reference/feature-x64.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/build/reference/feature-x64.md b/docs/build/reference/feature-x64.md index 4e36fb8a8d5..6f7e91b1e03 100644 --- a/docs/build/reference/feature-x64.md +++ b/docs/build/reference/feature-x64.md @@ -1,7 +1,7 @@ --- description: "Learn more about: /feature (x64)" title: "/feature (x64)" -ms.date: 05/11/2026 +ms.date: 05/21/2026 --- # `/feature` (x64) @@ -28,12 +28,21 @@ Example usage: to enable APX, specify **`/feature:APX`**. When **`/feature:APX`** is specified, the following preprocessor macros are defined: `__APX_F__`, `__CCMP__`, `__CF__`, `__EGPR__`, `__NDD__`, `__NF__`, `__PPX__`, `__PUSH2POP2__`, and `__ZU__`. For more information, see [Microsoft-specific predefined macros](../../preprocessor/predefined-macros.md). +APX extends the x64 architecture with new registers and instructions, which affects how the compiler generates calls, preserves state across function boundaries, and emits unwind metadata. The following articles describe the x64 conventions and unwind information that APX builds on: + +- [Caller/callee saved registers](../x64-calling-convention.md#callercallee-saved-registers)\ + Describes which registers a callee must preserve and which the caller is responsible for saving across a call on x64. +- [setjmp/longjmp](../x64-calling-convention.md#setjmplongjmp)\ + Explains how nonlocal jumps capture and restore nonvolatile register state on x64, including the registers that participate in the jump buffer. +- [Register volatility and preservation](../x64-software-conventions.md#register-volatility-and-preservation)\ + Summarizes the x64 software conventions for volatile and nonvolatile general-purpose, `XMM`, `YMM`, and `ZMM` registers, and the rules callees must follow to preserve them. +- [Exception handling unwind information V3](../x64-unwind-information-v3.md)\ + Preview specification of the V3 unwind information format used to describe prologs, epilogs, and frame layout for x64 code, including the extended state introduced by APX. + ### To set the `/feature` compiler option in Visual Studio 1. Open the **Property Pages** dialog box for the project. For more information, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). - 1. Select the **Configuration Properties** > **C/C++** > **Command Line** property page. - 1. In the **Additional options** box, add *`/feature:APX`*. Choose **OK** to save your changes. ### To set this compiler option programmatically From b155663e2165e54c440d4f4e1a92336978df82e4 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 21 May 2026 14:39:36 -0700 Subject: [PATCH 491/619] wording tweak --- docs/build/reference/feature-x64.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/feature-x64.md b/docs/build/reference/feature-x64.md index 6f7e91b1e03..676648ce4b5 100644 --- a/docs/build/reference/feature-x64.md +++ b/docs/build/reference/feature-x64.md @@ -28,7 +28,7 @@ Example usage: to enable APX, specify **`/feature:APX`**. When **`/feature:APX`** is specified, the following preprocessor macros are defined: `__APX_F__`, `__CCMP__`, `__CF__`, `__EGPR__`, `__NDD__`, `__NF__`, `__PPX__`, `__PUSH2POP2__`, and `__ZU__`. For more information, see [Microsoft-specific predefined macros](../../preprocessor/predefined-macros.md). -APX extends the x64 architecture with new registers and instructions, which affects how the compiler generates calls, preserves state across function boundaries, and emits unwind metadata. The following articles describe the x64 conventions and unwind information that APX builds on: +APX extends the x64 architecture with new registers and instructions, which affects how the compiler generates calls, preserves state across function boundaries, and emits unwind metadata. The following articles describe the x64 conventions and unwind information related to APX: - [Caller/callee saved registers](../x64-calling-convention.md#callercallee-saved-registers)\ Describes which registers a callee must preserve and which the caller is responsible for saving across a call on x64. From 8102876455b79905d751e6bef1e5cd22a0c20acd Mon Sep 17 00:00:00 2001 From: Ivan Povazan Date: Mon, 25 May 2026 12:31:49 +0200 Subject: [PATCH 492/619] Add versioning for SHA384 and SHA512 source file checksum feature --- .../ml-and-ml64-command-line-reference.md | 8 +-- .../compiler-options-listed-alphabetically.md | 8 +-- .../compiler-options-listed-by-category.md | 7 ++- docs/build/reference/zh.md | 53 ++++++++++++++++--- .../compiler-errors-1/fatal-error-c1029.md | 5 +- 5 files changed, 64 insertions(+), 17 deletions(-) diff --git a/docs/assembler/masm/ml-and-ml64-command-line-reference.md b/docs/assembler/masm/ml-and-ml64-command-line-reference.md index d838fb61520..2406e82a461 100644 --- a/docs/assembler/masm/ml-and-ml64-command-line-reference.md +++ b/docs/assembler/masm/ml-and-ml64-command-line-reference.md @@ -1,7 +1,7 @@ --- title: "ML and ML64 command-line reference" description: "Reference guide to the Microsoft MASM ML and ML64 assembler command-line options." -ms.date: 04/29/2026 +ms.date: 05/25/2026 ai-usage: ai-assisted f1_keywords: ["ML", "/unwindv3"] helpviewer_keywords: ["/W* MASM compiler option", "/c MASM compiler option", "/EP MASM compiler option", "/Fe MASM compiler option", "/Zp MASM compiler option", "/AT MASM compiler option", "/Zm MASM compiler option", "/Sf MASM compiler option", "/Sp MASM compiler option", "/w MASM compiler option", "/Fl MASM compiler option", "/coff MASM compiler option", "/St MASM compiler option", "/Cx MASM compiler option", "/Sl MASM compiler option", "/Cu MASM compiler option", "MASM (Microsoft Macro Assembler), ML command-line reference", "/FPi MASM compiler option", "/Zf MASM compiler option", "ML environment variable", "/Fr MASM compiler option", "/help MASM compiler option", "/Sa MASM compiler option", "/Zd MASM compiler option", "/I MASM compiler option", "/? MASM compiler option", "/Bl MASM compiler option", "/Fm MASM compiler option", "/Fo MASM compiler option", "command-line reference [ML]", "/Sn MASM compiler option", "/Gd MASM compiler option", "/D* MASM compiler option", "environment variables, ML", "/Gc MASM compiler option", "/F* MASM compiler option", "/Sc MASM compiler option", "/H MASM compiler option", "/Zs MASM compiler option", "/omf MASM compiler option", "/quiet MASM compiler option", "/Sg MASM compiler option", "/Cp MASM compiler option", "/Zi MASM compiler option", "/nologo MASM compiler option", "/Sx MASM compiler option", "/WX MASM compiler option", "/Ss MASM compiler option", "command line, reference [ML]", "/Ta MASM compiler option", "/unwindv3 MASM compiler option"] @@ -71,14 +71,16 @@ The options listed in the following table: | **`/Zf`** | Makes all symbols public. | | **`/ZH:MD5`** | Use MD5 for checksum in debug info. | | **`/ZH:SHA_256`** | Use SHA256 for checksum in debug info (default in Visual Studio 2022 version 17.0 and later). | -| **`/ZH:SHA384`** | Use SHA384 for checksum in debug info. | -| **`/ZH:SHA512`** | Use SHA512 for checksum in debug info. | +| **`/ZH:SHA384`** | Use SHA384 for checksum in debug info.18.6.0 | +| **`/ZH:SHA512`** | Use SHA512 for checksum in debug info.18.6.0 | | **`/Zi`** | Generates CodeView information in object file. | | **`/Zm`** | Enables **`M510`** option for maximum compatibility with MASM 5.1.
      Not available in ml64.exe. | | **`/Zp`**⟦*`alignment`*⟧ | Packs structures on the specified byte boundary. The *`alignment`* can be 1, 2, 4, 8, or 16. | | **`/Zs`** | Performs a syntax check only. | | **`/?`** | Displays a summary of ML command-line syntax and options. | +18.6.0 This option is available starting in Visual Studio 2026 version 18.6.0. + *`filename`*\ The name of the file. diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md index 8e518cb266b..b0a5bfce9ac 100644 --- a/docs/build/reference/compiler-options-listed-alphabetically.md +++ b/docs/build/reference/compiler-options-listed-alphabetically.md @@ -1,7 +1,8 @@ --- title: "Compiler options listed alphabetically" description: "Reference listing in alphabetical order of the Microsoft C/C++ compiler command-line options." -ms.date: 2/5/2025 +ms.date: 05/25/2026 +ai-usage: ai-assisted helpviewer_keywords: ["compiler options, C++"] --- # Compiler options listed alphabetically @@ -251,7 +252,7 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/Zc:zeroSizeArrayNew[-]`](zc-zerosizearraynew.md) | Call member `new`/`delete` for zero-size arrays of objects (on by default). | | [`/Ze`](za-ze-disable-language-extensions.md) | Deprecated. Enables C89 language extensions. | | [`/Zf`](zf.md) | Improves PDB generation time in parallel builds. | -| [`/ZH:[MD5|SHA1|SHA_256|SHA384|SHA512]`](zh.md) | Specifies MD5, SHA-1, SHA-256, SHA-384, or SHA-512 for checksums in debug info. | +| [`/ZH:[MD5|SHA1|SHA_256|SHA384|SHA512]`](zh.md) | Specifies MD5, SHA-1, SHA-256, SHA-38418.6.0, or SHA-51218.6.0 for checksums in debug info. | | [`/ZI`](z7-zi-zi-debug-information-format.md) | Includes debug information in a program database compatible with Edit and Continue. (x86 only) | | [`/Zi`](z7-zi-zi-debug-information-format.md) | Generates complete debugging information. | | [`/Zl`](zl-omit-default-library-name.md) | Removes the default library name from the *`.obj`* file. | @@ -261,7 +262,8 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/Zs`](zs-syntax-check-only.md) | Checks syntax only. | | [`/ZW`](zw-windows-runtime-compilation.md) | Produces an output file to run on the Windows Runtime. | -17.14 This option is available starting in Visual Studio 2022 version 17.14. +17.14 This option is available starting in Visual Studio 2022 version 17.14.\ +18.6.0 This option is available starting in Visual Studio 2026 version 18.6.0. ## See also diff --git a/docs/build/reference/compiler-options-listed-by-category.md b/docs/build/reference/compiler-options-listed-by-category.md index f7a5bde9e64..71a24e0ad5a 100644 --- a/docs/build/reference/compiler-options-listed-by-category.md +++ b/docs/build/reference/compiler-options-listed-by-category.md @@ -1,7 +1,8 @@ --- title: "Compiler Options Listed by Category" description: "Reference listing by category of the Microsoft C/C++ compiler command-line options." -ms.date: 2/5/2025 +ms.date: 05/25/2026 +ai-usage: ai-assisted helpviewer_keywords: ["compiler options, C++"] --- # Compiler options listed by category @@ -210,7 +211,7 @@ This article contains a categorical list of compiler options. For an alphabetica | [`/Zc:zeroSizeArrayNew[-]`](zc-zerosizearraynew.md) | Call member `new`/`delete` for 0-size arrays of objects (on by default). | | [`/Ze`](za-ze-disable-language-extensions.md) | Deprecated. Enables C89 language extensions. | | [`/Zf`](zf.md) | Improves PDB generation time in parallel builds. | -| [`/ZH`:[MD5|SHA1|SHA_256|SHA384|SHA512]](zh.md) | Specifies MD5, SHA-1, SHA-256, SHA-384, or SHA-512 for checksums in debug info. | +| [`/ZH`:[MD5|SHA1|SHA_256|SHA384|SHA512]](zh.md) | Specifies MD5, SHA-1, SHA-256, SHA-38418.6.0, or SHA-51218.6.0 for checksums in debug info. | | [`/ZI`](z7-zi-zi-debug-information-format.md) | Includes debug information in a program database compatible with Edit and Continue. (x86 only) | | [`/Zi`](z7-zi-zi-debug-information-format.md) | Generates complete debugging information. | | [`/Zl`](zl-omit-default-library-name.md) | Removes the default library name from the *`.obj`* file. | @@ -219,6 +220,8 @@ This article contains a categorical list of compiler options. For an alphabetica | [`/Zs`](zs-syntax-check-only.md) | Checks syntax only. | | [`/ZW`](zw-windows-runtime-compilation.md) | Produces an output file to run on the Windows Runtime. | +18.6.0 This option is available starting in Visual Studio 2026 version 18.6.0. + ## Linking | Option | Purpose | diff --git a/docs/build/reference/zh.md b/docs/build/reference/zh.md index d30cd5a3651..46bddc95fcb 100644 --- a/docs/build/reference/zh.md +++ b/docs/build/reference/zh.md @@ -1,7 +1,7 @@ --- title: "/ZH (Hash algorithm for calculation of file checksum in debug info)" -description: "Use the /ZH compiler option to enable MD5, SHA-1, SHA-256, SHA-384, or SHA-512 source file checksums in debug info" -ms.date: 04/13/2026 +description: "Use the /ZH compiler option to enable source file checksums in debug info" +ms.date: 05/25/2026 f1_keywords: ["/ZH", "/ZH:MD5", "/ZH:SHA1", "/ZH:SHA_256", "/ZH:SHA384", "/ZH:SHA512"] helpviewer_keywords: ["/ZH", "/ZH:MD5", "/ZH:SHA1", "/ZH:SHA_256", "/ZH:SHA384", "/ZH:SHA512", "/ZH compiler option", "/ZH:MD5 compiler option", "/ZH:SHA1 compiler option", "/ZH:SHA_256 compiler option", "/ZH:SHA384 compiler option", "/ZH:SHA512 compiler option", "Hash algorithm for file checksum in debug info"] --- @@ -13,10 +13,15 @@ Specifies which cryptographic hash algorithm to use to generate a checksum of ea > **`/ZH:MD5`**\ > **`/ZH:SHA1`**\ -> **`/ZH:SHA_256`**\ +> **`/ZH:SHA_256`** + +::: moniker range=">=msvc-180" + > **`/ZH:SHA384`**\ > **`/ZH:SHA512`** +::: moniker-end + ## Arguments **`/ZH:MD5`**\ @@ -28,21 +33,45 @@ Use an SHA-1 hash for the checksum. **`/ZH:SHA_256`**\ Use an SHA-256 hash for the checksum. This option is the default in Visual Studio 2022 version 17.0 and later. +::: moniker range=">=msvc-180" + **`/ZH:SHA384`**\ -Use an SHA-384 hash for the checksum. +Use an SHA-384 hash for the checksum. This option is available starting in Visual Studio 2026 version 18.6.0 and MSVC version 14.51. **`/ZH:SHA512`**\ -Use an SHA-512 hash for the checksum. +Use an SHA-512 hash for the checksum. This option is available starting in Visual Studio 2026 version 18.6.0 and MSVC version 14.51. + +::: moniker-end ## Remarks -PDB files store a checksum for each source file, compiled into the object code in the associated executable. The checksum allows the debugger to verify that the source code it loads matches the executable. The compiler and debugger support MD5, SHA-1, SHA-256, SHA-384, and SHA-512 hash algorithms. By default, in Visual Studio 2019 the compiler uses an MD5 hash to generate the checksum. To specify this hash algorithm explicitly, use the **`/ZH:MD5`** option. +PDB files store a checksum for each source file, compiled into the object code in the associated executable. The checksum allows the debugger to verify that the source code it loads matches the executable. The compiler and debugger support MD5, SHA-1, and SHA-256 hash algorithms. + +::: moniker range=">=msvc-180" + +Starting in Visual Studio 2026 version 18.6.0 and MSVC version 14.51, the compiler and debugger also support SHA-384 and SHA-512 hash algorithms. + +::: moniker-end + +By default, in Visual Studio 2019 the compiler uses an MD5 hash to generate the checksum. To specify this hash algorithm explicitly, use the **`/ZH:MD5`** option. + +Because of a risk of collision problems in MD5 and SHA-1, use the **`/ZH:SHA_256`** option or stronger. -Because of a risk of collision problems in MD5 and SHA-1, use the **`/ZH:SHA_256`** option or stronger. The SHA-384 and SHA-512 options provide stronger checksums but can increase compile time. The **`/ZH:SHA_256`** option is the default in Visual Studio 2022 version 17.0 and later. +::: moniker range=">=msvc-180" + +The SHA-384 and SHA-512 options provide stronger checksums but can increase compile time. + +::: moniker-end + +The **`/ZH:SHA_256`** option is the default in Visual Studio 2022 version 17.0 and later. + +::: moniker range=">=msvc-180" > [!NOTE] > The **`/ZH:SHA384`** and **`/ZH:SHA512`** options aren't supported for IFC (module interface) files. If you compile modules with one of these options, the compiler emits [fatal error C1029](../../error-messages/compiler-errors-1/fatal-error-c1029.md). Use **`/ZH:SHA_256`** or a smaller hash algorithm when you compile C++ modules. +::: moniker-end + When more than one **`/ZH`** option is specified, the last option is used. The **`/ZH`** option is available in Visual Studio 2019 version 16.4 and later. @@ -55,8 +84,18 @@ The **`/ZH`** option is available in Visual Studio 2019 version 16.4 and later. 1. Select the **Configuration Properties** > **C/C++** > **Command Line** property page. +::: moniker range=">=msvc-180" + 1. Modify the **Additional options** property to add a **`/ZH:MD5`**, **`/ZH:SHA1`**, **`/ZH:SHA_256`**, **`/ZH:SHA384`**, or **`/ZH:SHA512`** option, and then choose **OK**. +::: moniker-end + +::: moniker range=">=msvc-160 <=msvc-170" + +1. Modify the **Additional options** property to add a **`/ZH:MD5`**, **`/ZH:SHA1`**, or **`/ZH:SHA_256`** option, and then choose **OK**. + +::: moniker-end + ## See also [Compiler options](compiler-options.md)\ diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1029.md b/docs/error-messages/compiler-errors-1/fatal-error-c1029.md index 0e52957dfe2..c5e1b7e5018 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1029.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1029.md @@ -1,7 +1,8 @@ --- title: "Fatal error C1029" description: "Learn more about: Fatal error C1029" -ms.date: 04/13/2026 +ms.date: 05/25/2026 +ai-usage: ai-assisted f1_keywords: ["C1029"] helpviewer_keywords: ["C1029"] --- @@ -11,6 +12,6 @@ helpviewer_keywords: ["C1029"] ## Remarks -This error occurs when you compile a C++ module (or header unit) with a [`/ZH`](../../build/reference/zh.md) hash algorithm that produces a checksum larger than the current IFC format supports. The **`/ZH:SHA384`** and **`/ZH:SHA512`** options produce checksums that exceed this limit. +This error occurs when you compile a C++ module (or header unit) with a [`/ZH`](../../build/reference/zh.md) hash algorithm that produces a checksum larger than the current IFC format supports. The **`/ZH:SHA384`** and **`/ZH:SHA512`** options produce checksums that exceed this limit. These algorithms are available starting in Visual Studio 2026 version 18.6.0 and MSVC version 14.51. To fix this error, use **`/ZH:SHA_256`** or a smaller hash algorithm (such as **`/ZH:SHA1`** or **`/ZH:MD5`**) when you compile modules or header units. The default **`/ZH:SHA_256`** option works correctly with IFC files. From 4d375e9696629cda37c70cb5ffdcc76642eb7630 Mon Sep 17 00:00:00 2001 From: Ivan Povazan Date: Mon, 25 May 2026 12:53:32 +0200 Subject: [PATCH 493/619] Minor cleanup --- docs/build/reference/zh.md | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/docs/build/reference/zh.md b/docs/build/reference/zh.md index 46bddc95fcb..1cccbdd369f 100644 --- a/docs/build/reference/zh.md +++ b/docs/build/reference/zh.md @@ -11,12 +11,19 @@ Specifies which cryptographic hash algorithm to use to generate a checksum of ea ## Syntax +::: moniker range=">=msvc-160 <=msvc-170" + > **`/ZH:MD5`**\ > **`/ZH:SHA1`**\ > **`/ZH:SHA_256`** +::: moniker-end + ::: moniker range=">=msvc-180" +> **`/ZH:MD5`**\ +> **`/ZH:SHA1`**\ +> **`/ZH:SHA_256`**\ > **`/ZH:SHA384`**\ > **`/ZH:SHA512`** @@ -36,10 +43,10 @@ Use an SHA-256 hash for the checksum. This option is the default in Visual Studi ::: moniker range=">=msvc-180" **`/ZH:SHA384`**\ -Use an SHA-384 hash for the checksum. This option is available starting in Visual Studio 2026 version 18.6.0 and MSVC version 14.51. +Use an SHA-384 hash for the checksum. **`/ZH:SHA512`**\ -Use an SHA-512 hash for the checksum. This option is available starting in Visual Studio 2026 version 18.6.0 and MSVC version 14.51. +Use an SHA-512 hash for the checksum. ::: moniker-end @@ -47,26 +54,16 @@ Use an SHA-512 hash for the checksum. This option is available starting in Visua PDB files store a checksum for each source file, compiled into the object code in the associated executable. The checksum allows the debugger to verify that the source code it loads matches the executable. The compiler and debugger support MD5, SHA-1, and SHA-256 hash algorithms. -::: moniker range=">=msvc-180" - -Starting in Visual Studio 2026 version 18.6.0 and MSVC version 14.51, the compiler and debugger also support SHA-384 and SHA-512 hash algorithms. - -::: moniker-end - By default, in Visual Studio 2019 the compiler uses an MD5 hash to generate the checksum. To specify this hash algorithm explicitly, use the **`/ZH:MD5`** option. Because of a risk of collision problems in MD5 and SHA-1, use the **`/ZH:SHA_256`** option or stronger. -::: moniker range=">=msvc-180" - -The SHA-384 and SHA-512 options provide stronger checksums but can increase compile time. - -::: moniker-end - The **`/ZH:SHA_256`** option is the default in Visual Studio 2022 version 17.0 and later. ::: moniker range=">=msvc-180" +Starting in Visual Studio 2026 version 18.6.0 and MSVC version 14.51, the compiler and debugger also support SHA-384 and SHA-512 hash algorithms. These options provide stronger checksums but can increase compile time. + > [!NOTE] > The **`/ZH:SHA384`** and **`/ZH:SHA512`** options aren't supported for IFC (module interface) files. If you compile modules with one of these options, the compiler emits [fatal error C1029](../../error-messages/compiler-errors-1/fatal-error-c1029.md). Use **`/ZH:SHA_256`** or a smaller hash algorithm when you compile C++ modules. From 97951b5a83a77baf88c76fd9061e43d827f25f14 Mon Sep 17 00:00:00 2001 From: Ivan Povazan Date: Mon, 25 May 2026 13:14:59 +0200 Subject: [PATCH 494/619] Better wording and cleaning up versioning --- docs/build/reference/zh.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/build/reference/zh.md b/docs/build/reference/zh.md index 1cccbdd369f..3cfa06349a0 100644 --- a/docs/build/reference/zh.md +++ b/docs/build/reference/zh.md @@ -9,9 +9,12 @@ helpviewer_keywords: ["/ZH", "/ZH:MD5", "/ZH:SHA1", "/ZH:SHA_256", "/ZH:SHA384", Specifies which cryptographic hash algorithm to use to generate a checksum of each source file. +> [!NOTE] +> The **`/ZH`** option is available in Visual Studio 2019 version 16.4 and later. + ## Syntax -::: moniker range=">=msvc-160 <=msvc-170" +::: moniker range="<=msvc-170" > **`/ZH:MD5`**\ > **`/ZH:SHA1`**\ @@ -52,17 +55,17 @@ Use an SHA-512 hash for the checksum. ## Remarks -PDB files store a checksum for each source file, compiled into the object code in the associated executable. The checksum allows the debugger to verify that the source code it loads matches the executable. The compiler and debugger support MD5, SHA-1, and SHA-256 hash algorithms. - -By default, in Visual Studio 2019 the compiler uses an MD5 hash to generate the checksum. To specify this hash algorithm explicitly, use the **`/ZH:MD5`** option. +::: moniker range="<=msvc-170" +PDB files store a checksum for each source file, compiled into the object code in the associated executable. The checksum allows the debugger to verify that the source code it loads matches the executable. The compiler and debugger support MD5, SHA-1, and SHA-256 hash algorithms. Because of a risk of collision problems in MD5 and SHA-1, use the **`/ZH:SHA_256`** option or stronger. -The **`/ZH:SHA_256`** option is the default in Visual Studio 2022 version 17.0 and later. +::: moniker-end ::: moniker range=">=msvc-180" -Starting in Visual Studio 2026 version 18.6.0 and MSVC version 14.51, the compiler and debugger also support SHA-384 and SHA-512 hash algorithms. These options provide stronger checksums but can increase compile time. +PDB files store a checksum for each source file, compiled into the object code in the associated executable. The checksum allows the debugger to verify that the source code it loads matches the executable. The compiler and debugger support MD5, SHA-1, SHA-256, SHA-384, and SHA-512 hash algorithms. +Because of a risk of collision problems in MD5 and SHA-1, use the **`/ZH:SHA_256`** option or a stronger algorithm. SHA-384 and SHA-512 provide stronger checksums, but they can increase compile time. > [!NOTE] > The **`/ZH:SHA384`** and **`/ZH:SHA512`** options aren't supported for IFC (module interface) files. If you compile modules with one of these options, the compiler emits [fatal error C1029](../../error-messages/compiler-errors-1/fatal-error-c1029.md). Use **`/ZH:SHA_256`** or a smaller hash algorithm when you compile C++ modules. @@ -71,8 +74,6 @@ Starting in Visual Studio 2026 version 18.6.0 and MSVC version 14.51, the compil When more than one **`/ZH`** option is specified, the last option is used. -The **`/ZH`** option is available in Visual Studio 2019 version 16.4 and later. - ### To set this compiler option in the Visual Studio development environment 1. Open the **Property Pages** dialog box for the project. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md). From 580b5135f681a535544157ef4cc829260edb500f Mon Sep 17 00:00:00 2001 From: Ivan Povazan Date: Tue, 26 May 2026 10:48:05 +0200 Subject: [PATCH 495/619] Include and MSVC version as well --- docs/assembler/masm/ml-and-ml64-command-line-reference.md | 2 +- docs/build/reference/compiler-options-listed-alphabetically.md | 2 +- docs/build/reference/compiler-options-listed-by-category.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/assembler/masm/ml-and-ml64-command-line-reference.md b/docs/assembler/masm/ml-and-ml64-command-line-reference.md index 2406e82a461..ab91d77ce37 100644 --- a/docs/assembler/masm/ml-and-ml64-command-line-reference.md +++ b/docs/assembler/masm/ml-and-ml64-command-line-reference.md @@ -79,7 +79,7 @@ The options listed in the following table: | **`/Zs`** | Performs a syntax check only. | | **`/?`** | Displays a summary of ML command-line syntax and options. | -18.6.0 This option is available starting in Visual Studio 2026 version 18.6.0. +18.6.0 This option is available starting in Visual Studio 2026 version 18.6.0 and MSVC version 14.51. *`filename`*\ The name of the file. diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md index b0a5bfce9ac..8e2d8e81772 100644 --- a/docs/build/reference/compiler-options-listed-alphabetically.md +++ b/docs/build/reference/compiler-options-listed-alphabetically.md @@ -263,7 +263,7 @@ This table contains an alphabetical list of compiler options. For a list of comp | [`/ZW`](zw-windows-runtime-compilation.md) | Produces an output file to run on the Windows Runtime. | 17.14 This option is available starting in Visual Studio 2022 version 17.14.\ -18.6.0 This option is available starting in Visual Studio 2026 version 18.6.0. +18.6.0 This option is available starting in Visual Studio 2026 version 18.6.0 and MSVC version 14.51. ## See also diff --git a/docs/build/reference/compiler-options-listed-by-category.md b/docs/build/reference/compiler-options-listed-by-category.md index 71a24e0ad5a..2636a52da0e 100644 --- a/docs/build/reference/compiler-options-listed-by-category.md +++ b/docs/build/reference/compiler-options-listed-by-category.md @@ -220,7 +220,7 @@ This article contains a categorical list of compiler options. For an alphabetica | [`/Zs`](zs-syntax-check-only.md) | Checks syntax only. | | [`/ZW`](zw-windows-runtime-compilation.md) | Produces an output file to run on the Windows Runtime. | -18.6.0 This option is available starting in Visual Studio 2026 version 18.6.0. +18.6.0 This option is available starting in Visual Studio 2026 version 18.6.0 and MSVC version 14.51. ## Linking From bdf747355cf686881c7f1fc0a08574f7635d3fb9 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Wed, 27 May 2026 10:16:42 -0700 Subject: [PATCH 496/619] Freshness. --- docs/build/building-on-the-command-line.md | 262 ++++++++++++--------- 1 file changed, 149 insertions(+), 113 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 5f7a2fdff45..cb912d1cbe3 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -1,65 +1,78 @@ --- title: "Use the Microsoft C++ Build Tools from the command line" -description: "Use the Microsoft C++ (MSVC) Build Tools from the command line outside of the Visual Studio IDE." +description: "Learn how to install and use the Microsoft C++ Build Tools from the command line outside of the Visual Studio IDE." ms.custom: "conceptual" -ms.date: 04/07/2022 +ms.date: 05/28/2026 ms.topic: how-to helpviewer_keywords: ["command-line builds [C++]", "compiling source code [C++], command line", "builds [C++], command-line", "command line [C++], building from", "command line [C++], compilers"] +#custom intent: As a C++ developer, I want to understand all the options for using the command line to compile and build my software projects as part of my workflow. --- # Use the Microsoft C++ Build Tools from the command line -You can build C and C++ applications on the command line by using tools that are included in Visual Studio. The Microsoft C++ (MSVC) Build Tools are also downloadable as a standalone package. You don't need to install the Visual Studio IDE if you don't plan to use it. +You can build C and C++ applications on the command line by using tools that are included in Visual Studio. You can also download the Microsoft C++ (MSVC) Build Tools as a standalone package. You don't need to install the Visual Studio IDE if you don't plan to use it. > [!NOTE] -> This article is about how to set up an environment to use the individual compilers, linkers, librarian, and other basic tools. The native project build system in Visual Studio, based on MSBuild, doesn't use the environment as described in this article. For more information on how to use MSBuild from the command line, see [MSBuild on the command line - C++](msbuild-visual-cpp.md). +> This article is about how to set up an environment to use the individual compilers, linkers, libraries, and other basic tools. The native project build system in Visual Studio, based on MSBuild, doesn't use the environment as described in this article. For more information on how to use MSBuild from the command line, see [MSBuild on the command line - C++](msbuild-visual-cpp.md). ## Download and install the tools ::: moniker range=">=msvc-160" -If you've installed Visual Studio and a C++ workload, you have all the command-line tools. For information on how to install C++ and Visual Studio, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). If you only want the command-line toolset, download the [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/). On the downloads page, expand the **Tools for Visual Studio** section to find the Build Tools download. When you run the downloaded executable, it updates and runs the Visual Studio Installer. To install only the tools you need for C++ development, select the **Desktop development with C++** workload. You can select optional libraries and toolsets to include under **Installation details**. To build code by using the Visual Studio 2015, 2017, or 2019 toolsets, select the optional MSVC v140, v141, or v142 build tools. When you're satisfied with your selections, choose **Install**. +If you installed Visual Studio and a C++ workload, you have all the command-line tools. For information on how to install C++ and Visual Studio, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). + +If you want only the command-line toolset, download the [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/). On the downloads page, expand **Tools for Visual Studio** to find the Build Tools download. When you run the downloaded executable, it updates and runs the Visual Studio Installer. + +To install only the tools you need for C++ development, select the **Desktop development with C++** workload. Under **Installation details**, you can select optional libraries and toolsets. To build code by using the Visual Studio 2015, Visual Studio 2017, or Visual Studio 2019 toolsets, select the optional MSVC v140, v141, or v142 build tools. When you're satisfied with your selections, choose **Install**. ::: moniker-end ::: moniker range="<=msvc-150" -If you've installed Visual Studio and a C++ workload, you have all the command-line tools. For information on how to install C++ and Visual Studio, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). If you only want the command-line toolset, download the [Build Tools for Visual Studio 2017](https://my.visualstudio.com/Downloads?q=2017). When you run the downloaded executable, it updates and runs the Visual Studio Installer. To install only the tools you need for C++ development, select the **Desktop development with C++** workload. You can select optional libraries and toolsets to include under **Installation details**. To build code by using the Visual Studio 2015 toolset, select the optional MSVC v140 build tools. When you're satisfied with your selections, choose **Install**. +If you installed Visual Studio and a C++ workload, you have all the command-line tools. For information on how to install C++ and Visual Studio, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). + +If you want only the command-line toolset, download the [Build Tools for Visual Studio 2017](https://my.visualstudio.com/Downloads?q=2017). When you run the downloaded executable, it updates and runs the Visual Studio Installer. + +To install only the tools you need for C++ development, select the **Desktop development with C++** workload. Under **Installation details**, you can select optional libraries and toolsets. To build code by using the Visual Studio 2015 toolset, select the optional MSVC v140 build tools. When you're satisfied with your selections, choose **Install**. ::: moniker-end ## How to use the command-line tools -When you choose one of the C++ workloads in the Visual Studio Installer, by default, it installs a particular version of the MSVC Build Tools package. For Visual Studio 2022 and earlier, this is organized by a *platform toolset* (v### version format) that has all the C and C++ tools for a specific version of Visual Studio. For Visual Studio 2026 and later, this consists of the MSVC version (v##.## version format), which has all the C and C++ tools for that particular MSVC package. The MSVC version is decoupled from the Visual Studio version. The tools include the C/C++ compilers, linkers, assemblers, and other build tools, and matching libraries and header files. You can use all of these tools at the command-line. They're also used internally by the Visual Studio IDE. There are separate x86-hosted and x64-hosted compilers and tools that build code for x86, x64, ARM, and ARM64 targets. Each set of tools for a particular host and target build architecture is stored in its own directory. +When you choose one of the C++ workloads in the Visual Studio Installer, it installs a specific version of the MSVC Build Tools package by default. For Visual Studio 2022 and earlier, the package is organized by a *platform toolset* (v### version format) that includes all the C and C++ tools for a specific version of Visual Studio. For later versions of Visual Studio, the package consists of the MSVC version (v##.## version format), which includes all the C and C++ tools for that particular MSVC package. The MSVC version is decoupled from the Visual Studio version. -To work correctly, the tools require several specific environment variables to be set. These variables are used to add the tools to the path, and to set the locations of include files, library files, and SDKs. To make it easy to set these environment variables, the installer creates customized *command files*, or batch files, during installation. You can run one of these command files to set a specific host and target build architecture, Windows SDK version, and platform toolset. For convenience, the installer also creates shortcuts in your Start menu. The shortcuts open developer command prompt windows by using these command files for specific combinations of host and target. These shortcuts ensure all the required environment variables are set and ready to use. +The tools include the C/C++ compilers, linkers, assemblers, and other build tools. It includes matching libraries and header files. You can use all of these tools at the command line. The Visual Studio IDE uses them internally. There are separate x86-hosted and x64-hosted compilers and tools that build code for x86, x64, ARM, and ARM64 targets. Each set of tools for a particular host and target build architecture is stored in its own directory. -The required environment variables are specific to your installation and to the build architecture you choose. They also might be changed by product updates or upgrades. This variability is one reason why we recommend you use an installed command prompt shortcut or command file, instead of setting the environment variables yourself. +To work correctly, the tools require several environment variables to be set. These variables add the tools to the path and set the locations of include files, library files, and SDKs. To make it easy to set these environment variables, the installer creates customized *command files*, or batch files, during installation. You can run one of these command files to set a specific host and target build architecture, Windows SDK version, and platform toolset. -The toolsets, command files, and shortcuts installed depend on your computer processor and the options you selected during installation. The x86-hosted tools and cross tools that build x86 and x64 code are always installed. If you have 64-bit Windows, the x64-hosted tools and cross tools that build x86 and x64 code are also installed. If you choose the optional C++ Universal Windows Platform tools, then the x86 and x64 tools that build ARM and ARM64 code also get installed. Other workloads may install these and other tools. +For convenience, the installer also creates shortcuts in your Start menu. The shortcuts open developer Command Prompt windows by using these command files for specific combinations of host and target. These shortcuts ensure all the required environment variables are set and ready to use. + +The required environment variables are specific to your installation and to the build architecture you choose. Product updates or upgrades might change the variables. This variability is one reason why we recommend you use an installed command prompt shortcut or command file, instead of setting the environment variables yourself. + +The toolsets, command files, and shortcuts that the installer adds depend on your computer processor and the options you select during installation. The x86-hosted tools and cross tools that build x86 and x64 code are always installed. If you have 64-bit Windows, the x64-hosted tools and cross tools that build x86 and x64 code are also installed. If you choose the optional C++ Universal Windows Platform tools, the x86 and x64 tools that build ARM and ARM64 code are also installed. Other workloads can install these tools. ## Path and environment variables for command-line builds -The MSVC command-line tools use the `PATH`, `TMP`, `INCLUDE`, `LIB`, and `LIBPATH` environment variables, and also use other environment variables specific to your installed tools, platforms, and SDKs. Even a simple Visual Studio installation may set twenty or more environment variables. This complexity is why we strongly recommend that you use a [developer command prompt shortcut](#developer_command_prompt_shortcuts) or one of the [customized command files](#developer_command_file_locations). We don't recommend you set these variables in the Windows environment yourself. +The MSVC command-line tools use the `PATH`, `TMP`, `INCLUDE`, `LIB`, and `LIBPATH` environment variables. They also use other environment variables specific to your installed tools, platforms, and SDKs. Even a simple Visual Studio installation can set twenty or more environment variables. This complexity is why we strongly recommend that you use a [developer command prompt shortcut](#developer_command_prompt_shortcuts) or one of the [customized command files](#developer_command_file_locations). We don't recommend you set these variables in the Windows environment yourself. -To see which environment variables are set by a developer command prompt shortcut, you can use the `SET` command. Open a plain command prompt window and capture the output of the `SET` command for a baseline. Open a developer command prompt window and capture the output of the `SET` command for comparison. Use a diff tool such as the one built into Visual Studio to highlight the environment variables set by the developer command prompt. For more information about the compiler and linker environment variables, see [CL environment variables](reference/cl-environment-variables.md). +To see which environment variables a developer command prompt shortcut sets, use the `SET` command. Open a plain Command Prompt window and capture the output of the `SET` command for a baseline. Open a developer Command Prompt window and capture the output of the `SET` command for comparison. Use a diff tool such as the one built into Visual Studio to highlight the environment variables set by the developer command prompt. For more information about the compiler and linker environment variables, see [CL environment variables](reference/cl-environment-variables.md). ## Developer command prompt shortcuts The command prompt shortcuts are installed in a version-specific Visual Studio folder in your Windows Start menu. Here's a list of the base command prompt shortcuts and the build architectures they support: -- **Developer Command Prompt** - Sets the environment to use 32-bit, x86-native tools to build 32-bit, x86-native code. -- **x86 Native Tools Command Prompt** - Sets the environment to use 32-bit, x86-native tools to build 32-bit, x86-native code. -- **x64 Native Tools Command Prompt** - Sets the environment to use 64-bit, x64-native tools to build 64-bit, x64-native code. -- **x86_x64 Cross Tools Command Prompt** - Sets the environment to use 32-bit, x86-native tools to build 64-bit, x64-native code. -- **x64_x86 Cross Tools Command Prompt** - Sets the environment to use 64-bit, x64-native tools to build 32-bit, x86-native code. +- **Developer Command Prompt**. Sets the environment to use 32-bit, x86-native tools to build 32-bit, x86-native code. +- **x86 Native Tools Command Prompt**. Sets the environment to use 32-bit, x86-native tools to build 32-bit, x86-native code. +- **x64 Native Tools Command Prompt**. Sets the environment to use 64-bit, x64-native tools to build 64-bit, x64-native code. +- **x86_x64 Cross Tools Command Prompt**. Sets the environment to use 32-bit, x86-native tools to build 64-bit, x64-native code. +- **x64_x86 Cross Tools Command Prompt**. Sets the environment to use 64-bit, x64-native tools to build 32-bit, x86-native code. ::: moniker range=">= msvc-160" -The Start menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2022, and you gave it a nickname of *Latest*. The developer command prompt shortcut is named **Developer Command Prompt for VS 2022 (Latest)**, in a folder named **Visual Studio 2022**. +The Start menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2022, and you gave it a nickname of *Latest*. The developer command prompt shortcut is named **Developer Command Prompt for VS 2022 (Latest)** in a folder named **Visual Studio 2022**. ::: moniker-end ::: moniker range="msvc-150" -The Start menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2017, and you gave it a nickname of *Latest*. The developer command prompt shortcut is named **Developer Command Prompt for VS 2017 (Latest)**, in a folder named **Visual Studio 2017**. +The Start menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2017, and you gave it a nickname of *Latest*. The developer command prompt shortcut is named **Developer Command Prompt for VS 2017 (Latest)** in a folder named **Visual Studio 2017**. ::: moniker-end ::: moniker range="< msvc-150" @@ -69,134 +82,141 @@ The Start menu folder and shortcut names vary depending on the installed version ::: moniker-end > [!NOTE] -> Several command-line tools or tool options may require Administrator permission. If you have permission issues when you use them, we recommend that you open the developer command prompt window by using the **Run as Administrator** option. Right-click to open the shortcut menu for the command prompt window, then choose **More**, **Run as administrator**. +> Several command-line tools or tool options require Administrator privileges. If you have permission issues when you use them, we recommend that you open the developer Command Prompt window by using the **Run as Administrator** option. Right-click to open the shortcut menu for the Command Prompt window, then choose **More** > **Run as administrator**. -### To open a developer command prompt window +### To open a developer Command Prompt window -1. On the desktop, open the Windows **Start** menu. In Windows 11, choose the **All apps** button to open the list of installed apps. In Windows 10, the list is open to the left. Scroll down the list to find and open the folder (not the app) for your version of Visual Studio, for example, **Visual Studio 2022**. +1. On the desktop, open the Windows **Start** menu. In Windows 11, choose **All apps** to open the list of installed apps. In Windows 10, the list is open to the left. Scroll down the list to find and open the folder (not the app) for your version of Visual Studio, such as **Visual Studio 2022**. -1. In the folder, choose the **Developer Command Prompt** for your version of Visual Studio. This shortcut starts a developer command prompt window that uses the default build architecture of 32-bit, x86-native tools to build 32-bit, x86-native code. If you prefer a non-default build architecture, choose one of the native or cross tools command prompts to specify the host and target architecture. +1. In the folder, choose the **Developer Command Prompt** for your version of Visual Studio. This shortcut starts a developer Command Prompt window that uses the default build architecture of 32-bit, x86-native tools to build 32-bit, x86-native code. If you prefer a nondefault build architecture, choose one of the native or cross tools command prompts to specify the host and target architecture. For an even faster way to open a developer command prompt, enter *developer command prompt* in the desktop search box. Then choose the result you want. > [!NOTE] -> By default, the current working directory in a developer command prompt is the root of your Visual Studio installation in the Program Files directory. This isn't an appropriate location for your code and projects. Change the current working directory to another location before you create a project. The IDE creates projects in your user directory, typically in *`%USERPROFILE%\source\repos`*. +> By default, the current working directory in a developer command prompt is the root of your Visual Studio installation in the Program Files directory. This location isn't appropriate for your code and projects. Change the current working directory to another location before you create a project. The IDE creates projects in your user directory, typically in `%USERPROFILE%\source\repos`. ## Developer command file locations -If you prefer to set the build environment in an existing command prompt window, you can use one of the command files created by the installer. We recommend you set the environment in a new command prompt window. We don't recommend you later switch environments in the same command window. +If you prefer to set the build environment in an existing Command Prompt window, you can use one of the command files created by the installer. We recommend you set the environment in a new Command Prompt window. We don't recommend you later switch environments in the same command window. ::: moniker range=">= msvc-170" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2022, the typical installation location on a 64-bit system is in *`\Program Files\Microsoft Visual Studio\2022\`*. The *``* may be Community, Professional, Enterprise, BuildTools, or another nickname you supplied. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2022, the typical installation location on a 64-bit system is in `\Program Files\Microsoft Visual Studio\2022\`. The `` can be Community, Professional, Enterprise, BuildTools, or another nickname you supplied. ::: moniker-end ::: moniker range="= msvc-160" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2019, the typical installation location on a 64-bit system is in *`\Program Files (x86)\Microsoft Visual Studio\2019\`*. The *``* may be Community, Professional, Enterprise, BuildTools, or another nickname you supplied. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2019, the typical installation location on a 64-bit system is in `\Program Files (x86)\Microsoft Visual Studio\2019\`. The `` can be Community, Professional, Enterprise, BuildTools, or another nickname you supplied. ::: moniker-end ::: moniker range="= msvc-150" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2017, the typical installation location on a 64-bit system is in *`\Program Files (x86)\Microsoft Visual Studio\2017\`*. The *``* may be Community, Professional, Enterprise, BuildTools, or another nickname you supplied. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2017, the typical installation location on a 64-bit system is in `\Program Files (x86)\Microsoft Visual Studio\2017\`. The `` can be Community, Professional, Enterprise, BuildTools, or another nickname you supplied. ::: moniker-end ::: moniker range="< msvc-150" -The command file location depends on the Visual Studio version, and the installation directory. For Visual Studio 2015, the typical installation location on a 64-bit system is in *`\Program Files (x86)\Microsoft Visual Studio 14.0`*. +The command file location depends on the Visual Studio version, and the installation directory. For Visual Studio 2015, the typical installation location on a 64-bit system is in `\Program Files (x86)\Microsoft Visual Studio 14.0`. ::: moniker-end -The primary developer command prompt command file, *`VsDevCmd.bat`*, is located in the *`Common7\Tools`* subdirectory. When no parameters are specified, it sets the environment to use the x86-native tools to build 32-bit x86 code. +The primary developer command prompt command file, `VsDevCmd.bat`, is located in the `Common7\Tools` directory. When you don't specify parameters, it sets the environment to use the x86-native tools to build 32-bit x86 code. ::: moniker range=">= msvc-150" -More command files are available to set up specific build architectures. The command files available depend on the Visual Studio workloads and options you've installed. In Visual Studio 2017 and Visual Studio 2019, you'll find them in the *`VC\Auxiliary\Build`* subdirectory. +More command files are available to set up specific build architectures. The command files available depend on the Visual Studio workloads and options you installed. In Visual Studio 2017 and Visual Studio 2019, you find them in the `VC\Auxiliary\Build` directory. ::: moniker-end ::: moniker range="< msvc-150" -More command files are available to set up specific build architectures. The command files available depend on the Visual Studio workloads and options you've installed. In Visual Studio 2015, they're located in the *`VC`*, *`VC\bin`*, or *`VC\bin\`* subdirectories, where *``* is one of the native or cross-compiler options. +More command files are available to set up specific build architectures. The command files available depend on the Visual Studio workloads and options you installed. In Visual Studio 2015, they're located in the `VC`, `VC\bin`, or `VC\bin\` directories, where `` is one of the native or cross-compiler options. ::: moniker-end -These command files set default parameters and call *`VsDevCmd.bat`* to set up the specified build architecture environment. A typical installation may include these command files: +These command files set default parameters and call `VsDevCmd.bat` to set up the specified build architecture environment. A typical installation might include these command files: | Command File | Host and Target architectures | |--|--| -| *`vcvars32.bat`* | Use the 32-bit x86-native tools to build 32-bit x86 code. | -| *`vcvars64.bat`* | Use the 64-bit x64-native tools to build 64-bit x64 code. | -| *`vcvarsx86_amd64.bat`* | Use the 32-bit x86-native cross tools to build 64-bit x64 code. | -| *`vcvarsamd64_x86.bat`* | Use the 64-bit x64-native cross tools to build 32-bit x86 code. | -| *`vcvarsx86_arm.bat`* | Use the 32-bit x86-native cross tools to build ARM code. | -| *`vcvarsamd64_arm.bat`* | Use the 64-bit x64-native cross tools to build ARM code. | -| *`vcvarsx86_arm64.bat`* | Use the 32-bit x86-native cross tools to build ARM64 code. | -| *`vcvarsamd64_arm64.bat`* | Use the 64-bit x64-native cross tools to build ARM64 code. | -| *`vcvarsall.bat`* | Use parameters to specify the host and target architectures, Windows SDK, and platform choices. For a list of supported options, call by using a `/help` parameter. | +| `vcvars32.bat` | Use the 32-bit x86-native tools to build 32-bit x86 code. | +| `vcvars64.bat` | Use the 64-bit x64-native tools to build 64-bit x64 code. | +| `vcvarsx86_amd64.bat` | Use the 32-bit x86-native cross tools to build 64-bit x64 code. | +| `vcvarsamd64_x86.bat` | Use the 64-bit x64-native cross tools to build 32-bit x86 code. | +| `vcvarsx86_arm.bat` | Use the 32-bit x86-native cross tools to build ARM code. | +| `vcvarsamd64_arm.bat` | Use the 64-bit x64-native cross tools to build ARM code. | +| `vcvarsx86_arm64.bat` | Use the 32-bit x86-native cross tools to build ARM64 code. | +| `vcvarsamd64_arm64.bat` | Use the 64-bit x64-native cross tools to build ARM64 code. | +| `vcvarsall.bat` | Use parameters to specify the host and target architectures, Windows SDK, and platform choices. For a list of supported options, call by using a `/help` parameter. | > [!CAUTION] -> The *`vcvarsall.bat`* file and other Visual Studio command files can vary from computer to computer. Do not replace a missing or damaged *`vcvarsall.bat`* file by using a file from another computer. Rerun the Visual Studio installer to replace the missing file. +> The `vcvarsall.bat` file and other Visual Studio command files can vary from computer to computer. Don't replace a missing or damaged `vcvarsall.bat` file by using a file from another computer. Rerun the Visual Studio installer to replace the missing file. > -> The *`vcvarsall.bat`* file also varies from version to version. If the current version of Visual Studio is installed on a computer that also has an earlier version of Visual Studio, do not run *`vcvarsall.bat`* or another Visual Studio command file from different versions in the same command prompt window. +> The `vcvarsall.bat` file also varies from version to version. If the current version of Visual Studio is installed on a computer that also has an earlier version of Visual Studio, don't run `vcvarsall.bat` or another Visual Studio command file from different versions in the same Command Prompt window. ## Use the developer tools in an existing command window -The simplest way to specify a particular build architecture in an existing command window is to use the *`vcvarsall.bat`* file. Use *`vcvarsall.bat`* to set environment variables to configure the command line for native 32-bit or 64-bit compilation. Arguments let you specify cross-compilation to x86, x64, ARM, or ARM64 processors. You can target Microsoft Store, Universal Windows Platform, or Windows Desktop platforms. You can even specify which Windows SDK to use, and select the platform toolset version. +The simplest way to specify a particular build architecture in an existing command window is to use the `vcvarsall.bat` file. Use `vcvarsall.bat` to set environment variables to configure the Command Prompt window for native 32-bit or 64-bit compilation. Arguments let you specify cross-compilation to x86, x64, ARM, or ARM64 processors. You can target Microsoft Store, Universal Windows Platform, or Windows Desktop platforms. You can even specify which Windows SDK to use, and select the platform toolset version. -When used with no arguments, *`vcvarsall.bat`* configures the environment variables to use the current x86-native compiler for 32-bit Windows Desktop targets. You can add arguments to configure the environment to use any of the native or cross compiler tools. *`vcvarsall.bat`* displays an error message if you specify a configuration that's not installed, or not available on your computer. +When you use `vcvarsall.bat` with no arguments, it configures the environment variables to use the current x86-native compiler for 32-bit Windows Desktop targets. Add arguments to configure the environment to use any of the native or cross compiler tools. `vcvarsall.bat` displays an error message if you specify a configuration that isn't installed, or isn't available on your computer. ### `vcvarsall` syntax -> **`vcvarsall.bat`** [*`architecture`*] [*`platform_type`*] [*`winsdk_version`*] [**`-vcvars_ver=`***`vcversion`*] [*`spectre_mode`*] +```cmd +vcvarsall.bat [architecture] [platform_type] [winsdk_version] [-vcvars_ver= vcversion] [spectre_mode] +``` -*`architecture`*\ -This optional argument specifies the host and target architecture to use. If *`architecture`* isn't specified, the default build environment is used. These arguments are supported: +- `architecture` -| *`architecture`* | Compiler | Host computer architecture | Build output (target) architecture | -|--|--|--|--| -| `x86` | x86 32-bit native | x86, x64 | x86 | -| `x86_amd64` or `x86_x64` | x64 on x86 cross | x86, x64 | x64 | -| `x86_arm` | ARM on x86 cross | x86, x64 | ARM | -| `x86_arm64` | ARM64 on x86 cross | x86, x64 | ARM64 | -| `amd64` or `x64` | x64 64-bit native | x64 | x64 | -| `amd64_x86` or `x64_x86` | x86 on x64 cross | x64 | x86 | -| `amd64_arm` or `x64_arm` | ARM on x64 cross | x64 | ARM | -| `amd64_arm64` or `x64_arm64` | ARM64 on x64 cross | x64 | ARM64 | + This optional argument specifies the host and target architecture to use. If you don't specify `architecture`, the default build environment is used. The following arguments are supported: -*`platform_type`*\ -This optional argument allows you to specify **`store`** or **`uwp`** as the platform type. By default, the environment is set to build desktop or console apps. + | `architecture` | Compiler | Host computer architecture | Build output (target) architecture | + |--|--|--|--| + | `x86` | x86 32-bit native | x86, x64 | x86 | + | `x86_amd64` or `x86_x64` | x64 on x86 cross | x86, x64 | x64 | + | `x86_arm` | ARM on x86 cross | x86, x64 | ARM | + | `x86_arm64` | ARM64 on x86 cross | x86, x64 | ARM64 | + | `amd64` or `x64` | x64 64-bit native | x64 | x64 | + | `amd64_x86` or `x64_x86` | x86 on x64 cross | x64 | x86 | + | `amd64_arm` or `x64_arm` | ARM on x64 cross | x64 | ARM | + | `amd64_arm64` or `x64_arm64` | ARM64 on x64 cross | x64 | ARM64 | -*`winsdk_version`*\ -Optionally specifies the version of the Windows SDK to use. By default, the latest installed Windows SDK is used. To specify the Windows SDK version, you can use a full Windows SDK number such as **`10.0.10240.0`**, or specify **`8.1`** to use the Windows 8.1 SDK. +- `platform_type` -*`vcversion`*\ -Optionally specifies the Visual Studio compiler toolset to use. By default, the environment is set to use the current Visual Studio compiler toolset. + This optional argument specifies `store` or `uwp` as the platform type. By default, the environment is set to build desktop or console apps. + +- `winsdk_version` + + Optionally specifies the version of the Windows SDK to use. By default, the latest installed Windows SDK is used. To specify the Windows SDK version, use a full Windows SDK number such as `10.0.10240.0`, or specify `8.1` to use the Windows 8.1 SDK. + +- `vcversion` + + Optionally specifies the Visual Studio compiler toolset to use. By default, the environment is set to use the current Visual Studio compiler toolset. ::: moniker range=">= msvc-160" -Use **-vcvars_ver=14.2x.yyyyy** to specify a specific version of the Visual Studio 2019 compiler toolset. + Use **-vcvars_ver=14.2x.yyyyy** to specify a specific version of the Visual Studio 2019 compiler toolset. -Use **-vcvars_ver=14.29** to specify the latest version of the Visual Studio 2019 compiler toolset. + Use **-vcvars_ver=14.29** to specify the latest version of the Visual Studio 2019 compiler toolset. ::: moniker-end ::: moniker range="= msvc-150" -Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset. + Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset. -Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. + Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. ::: moniker-end -Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. + Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. -*`spectre_mode`*\ -Leave this parameter out to use libraries without Spectre mitigations. Use the value **`spectre`** to use libraries with Spectre mitigations. +- `spectre_mode` -#### To set up the build environment in an existing command prompt window + Leave this parameter out to use libraries without Spectre mitigations. Use the value `spectre` to use libraries with Spectre mitigations. -1. At the command prompt, use the `CD` command to change to the Visual Studio installation directory. Then, use `CD` again to change to the subdirectory that contains the configuration-specific command files. For Visual Studio 2019 and Visual Studio 2017, use the *`VC\Auxiliary\Build`* subdirectory. For Visual Studio 2015, use the *`VC`* subdirectory. +#### To set up the build environment in an existing Command Prompt window -1. Enter the command for your preferred developer environment. For example, to build ARM code for UWP on a 64-bit platform, using the latest Windows SDK and Visual Studio compiler toolset, use this command line: +1. At the command prompt, use the `CD` command to change to the Visual Studio installation directory. Then, use `CD` again to change to the subdirectory that contains the configuration-specific command files. For Visual Studio 2019 and Visual Studio 2017, use the `VC\Auxiliary\Build` subdirectory. For Visual Studio 2015, use the `VC` subdirectory. + +1. Enter the command for your preferred developer environment. For example, to build ARM code for UWP on a 64-bit platform, using the latest Windows SDK and Visual Studio compiler toolset, use this command: ```cmd vcvarsall.bat amd64_arm uwp @@ -206,7 +226,7 @@ Leave this parameter out to use libraries without Spectre mitigations. Use the v ::: moniker range=">= msvc-160" -Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2019** shortcut is something similar to: +Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2019** shortcut is similar to: ```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" @@ -215,7 +235,7 @@ Open the Properties dialog for a developer command prompt shortcut to see the co ::: moniker-end ::: moniker range="= msvc-150" -Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2017** shortcut is something similar to: +Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2017** shortcut is similar to: ```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" @@ -224,7 +244,7 @@ Open the Properties dialog for a developer command prompt shortcut to see the co ::: moniker-end ::: moniker range="< msvc-150" -Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **VS2015 x64 Native Tools Command Prompt** shortcut is something similar to: +Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **VS2015 x64 Native Tools Command Prompt** shortcut is similar to: ```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 @@ -232,7 +252,7 @@ Open the Properties dialog for a developer command prompt shortcut to see the co ::: moniker-end -The architecture-specific batch files set the *`architecture`* parameter and call *`vcvarsall.bat`*. You can pass the same options to these batch files as you would pass to *`vcvarsall.bat`*, or you can just call *`vcvarsall.bat`* directly. To specify parameters for your own command shortcut, add them to the end of the command in double-quotes. For example, here's a shortcut to build ARM code for UWP on a 64-bit platform, using the latest Windows SDK. To use an earlier compiler toolset, specify the version number. Use something like this command target in your shortcut: +The architecture-specific batch files set the `architecture` parameter and call `vcvarsall.bat`. You can pass the same options to these batch files as you pass to `vcvarsall.bat`, or you can just call `vcvarsall.bat` directly. To specify parameters for your own command shortcut, add them to the end of the command in double quotes. For example, here's a shortcut to build ARM code for UWP on a 64-bit platform, using the latest Windows SDK. To use an earlier compiler toolset, specify the version number. Use a command like this command target in your shortcut: ::: moniker range=">= msvc-160" @@ -256,17 +276,19 @@ The architecture-specific batch files set the *`architecture`* parameter and cal ::: moniker-end -Adjust the path to reflect your Visual Studio installation directory. The *`vcvarsall.bat`* file has additional information about specific version numbers. +Adjust the path to reflect your Visual Studio installation directory. The `vcvarsall.bat` file has additional information about specific version numbers. ## Command-line tools To build a C/C++ project at a command prompt, Visual Studio provides these command-line tools: -[`CL`](reference/compiling-a-c-cpp-program.md)\ -Use the compiler (`cl.exe`) to compile and link source code files into apps, libraries, and DLLs. +- [CL](reference/compiling-a-c-cpp-program.md) + + Use the compiler (`cl.exe`) to compile and link source code files into apps, libraries, and DLLs. + +- [Link](reference/linking.md) -[`Link`](reference/linking.md)\ -Use the linker (`link.exe`) to link compiled object files and libraries into apps and DLLs. + Use the linker (`link.exe`) to link compiled object files and libraries into apps and DLLs. When you build on the command line, the F1 command isn't available for instant help. Instead, you can use a search engine to get information about warnings, errors, and messages. You can also download and use the offline help files. To use the search in Microsoft Learn, enter your query in the search box at the top of any article. @@ -274,17 +296,21 @@ When you build on the command line, the F1 command isn't available for instant h By default, the Visual Studio IDE uses native project build systems based on MSBuild. You can invoke MSBuild directly to build projects without using the IDE. You can also use the `devenv` command to use Visual Studio to build projects and solutions. Visual Studio also supports build systems based on CMake or NMake. -[`MSBuild`](msbuild-visual-cpp.md)\ -Use MSBuild (`msbuild.exe`) and a project file (`.vcxproj`) to configure a build and invoke the toolset without loading the Visual Studio IDE. It's equivalent to running the **Build** project or **Build Solution** command in the Visual Studio IDE. MSBuild has advantages over the IDE when you build at the command line. You don't have to install the full IDE on all your build servers and build pipelines. You avoid the extra overhead of the IDE. MSBuild runs in containerized build environments, and supports a [binary logger](https://msbuildlog.com/). +- [MSBuild](msbuild-visual-cpp.md) -[`DEVENV`](/visualstudio/ide/reference/devenv-command-line-switches)\ -Use DEVENV (`devenv.exe`) combined with a command-line switch such as **`/Build`** or **`/Clean`** to execute certain build commands without displaying the Visual Studio IDE. + Use MSBuild (`msbuild.exe`) and a project file (`.vcxproj`) to configure a build and invoke the toolset without loading the Visual Studio IDE. It's equivalent to running the **Build** project or **Build Solution** command in the Visual Studio IDE. MSBuild has advantages over the IDE when you build at the command line. You don't have to install the full IDE on all your build servers and build pipelines. You avoid the extra overhead of the IDE. MSBuild runs in containerized build environments, and supports a [binary logger](https://msbuildlog.com/). -[`CMake`](../build/cmake-projects-in-visual-studio.md)\ -CMake (`cmake.exe`) is a cross-platform, open-source tool for defining build processes that run on multiple platforms. CMake can configure and control native build tools for its supported platforms, such as MSBuild and Make. For more information about CMake, see the [CMake documentation](https://cmake.org/cmake/help/latest/index.html#). +- [DEVENV](/visualstudio/ide/reference/devenv-command-line-switches) -[`NMAKE`](reference/nmake-reference.md)\ -Use NMAKE (`nmake.exe`) to build C++ projects by using a traditional makefile. + Use DEVENV (`devenv.exe`) combined with a command-line switch such as `/Build` or `/Clean` to execute certain build commands without displaying the Visual Studio IDE. + +- [CMake](../build/cmake-projects-in-visual-studio.md) + + CMake (`cmake.exe`) is a cross-platform open-source tool for defining build processes that run on multiple platforms. CMake can configure and control native build tools for its supported platforms, such as MSBuild and Make. For more information about CMake, see the [CMake documentation](https://cmake.org/cmake/help/latest/index.html#). + +- [NMAKE](reference/nmake-reference.md) + + Use NMAKE (`nmake.exe`) to build C++ projects by using a traditional makefile. > [!NOTE] > Starting in Visual Studio 2019 version 16.5, MSBuild and DEVENV don't use the command-line environment to control the toolset and libraries used. @@ -293,38 +319,48 @@ Use NMAKE (`nmake.exe`) to build C++ projects by using a traditional makefile. These articles show how to build apps on the command line, and describe how to customize the command-line build environment. Some show how to use 64-bit toolsets, and target x86, x64, ARM, and ARM64 platforms. They also describe use of the command-line build tools MSBuild and NMAKE. -[Walkthrough: Compiling a native C++ program on the command line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md)\ -Gives an example that shows how to create and compile a C++ program on the command line. +- [Walkthrough: Compiling a native C++ program on the command line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md) + + Gives an example that shows how to create and compile a C++ program using the command line. + +- [Walkthrough: Compile a C program on the command line](walkthrough-compile-a-c-program-on-the-command-line.md) + + Describes how to compile a program written in the C programming language. -[Walkthrough: Compile a C program on the command line](walkthrough-compile-a-c-program-on-the-command-line.md)\ -Describes how to compile a program written in the C programming language. +- [Walkthrough: Compiling a C++/CLI program on the command line](walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md) -[Walkthrough: Compiling a C++/CLI program on the command line](walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md)\ -Describes how to create and compile a C++/CLI program that uses the .NET Framework. + Describes how to create and compile a C++/CLI program that uses the .NET Framework. -[Walkthrough: Compiling a C++/CX program on the command line](walkthrough-compiling-a-cpp-cx-program-on-the-command-line.md)\ -Describes how to create and compile a C++/CX program that uses the Windows Runtime. +- [Walkthrough: Compiling a C++/CX program on the command line](walkthrough-compiling-a-cpp-cx-program-on-the-command-line.md) -[NMAKE reference](reference/nmake-reference.md)\ -Provides links to articles that describe the Microsoft Program Maintenance Utility (`NMAKE.EXE`). + Describes how to create and compile a C++/CX program that uses the Windows Runtime. -[MSBuild on the command line - C++](msbuild-visual-cpp.md)\ -Provides links to articles that discuss how to use `msbuild.exe` from the command line. +- [NMAKE reference](reference/nmake-reference.md) + + Provides links to articles that describe the Microsoft Program Maintenance Utility (`NMAKE.EXE`). + +- [MSBuild on the command line - C++](msbuild-visual-cpp.md)\ + + Provides links to articles that discuss how to use `msbuild.exe` from the command line. ## Related sections -[`/MD`, `/MT`, `/LD` (Use run-time library)](reference/md-mt-ld-use-run-time-library.md)\ -Describes how to use these compiler options to use a Debug or Release run-time library. +- [`/MD`, `/MT`, `/LD` (Use run-time library)](reference/md-mt-ld-use-run-time-library.md) + + Describes how to use these compiler options to use a Debug or Release run-time library. + +- [C/C++ compiler options](reference/compiler-options.md) + + Provides links to articles that discuss the C and C++ compiler options and `CL.exe`. + +- [MSVC linker options](reference/linker-options.md) -[C/C++ compiler options](reference/compiler-options.md)\ -Provides links to articles that discuss the C and C++ compiler options and `CL.exe`. + Provides links to articles that discuss the linker options and `LINK.exe`. -[MSVC linker options](reference/linker-options.md)\ -Provides links to articles that discuss the linker options and `LINK.exe`. +- [Additional MSVC build tools](reference/c-cpp-build-tools.md) -[Additional MSVC build tools](reference/c-cpp-build-tools.md)\ -Provides links to the C/C++ build tools that are included in Visual Studio. + Provides links to the C/C++ build tools that are included in Visual Studio. -## See also +## Related content [Projects and build systems](projects-and-build-systems-cpp.md) From 0b25b0e454630b15497d7158988e4db11b819594 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Wed, 27 May 2026 10:31:32 -0700 Subject: [PATCH 497/619] Troubleshoot formatting. --- docs/build/building-on-the-command-line.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index cb912d1cbe3..2c39da716c5 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -191,20 +191,20 @@ vcvarsall.bat [architecture] [platform_type] [winsdk_version] [-vcvars_ver= vcve Optionally specifies the Visual Studio compiler toolset to use. By default, the environment is set to use the current Visual Studio compiler toolset. -::: moniker range=">= msvc-160" + ::: moniker range=">= msvc-160" Use **-vcvars_ver=14.2x.yyyyy** to specify a specific version of the Visual Studio 2019 compiler toolset. Use **-vcvars_ver=14.29** to specify the latest version of the Visual Studio 2019 compiler toolset. -::: moniker-end -::: moniker range="= msvc-150" + ::: moniker-end + ::: moniker range="= msvc-150" Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset. Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. -::: moniker-end + ::: moniker-end Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. From 44a3d4658d7ecbe8be9d6109402fe041324b7040 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 27 May 2026 16:09:02 -0700 Subject: [PATCH 498/619] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- docs/build/building-on-the-command-line.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 2c39da716c5..60f27f61b55 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -339,7 +339,7 @@ These articles show how to build apps on the command line, and describe how to c Provides links to articles that describe the Microsoft Program Maintenance Utility (`NMAKE.EXE`). -- [MSBuild on the command line - C++](msbuild-visual-cpp.md)\ +- [MSBuild on the command line - C++](msbuild-visual-cpp.md) Provides links to articles that discuss how to use `msbuild.exe` from the command line. From 5e7d84487b288598335911451ab62ae94dbe819a Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Thu, 28 May 2026 08:13:42 -0700 Subject: [PATCH 499/619] Incorporate feedback. --- docs/build/use-github-copilot-create-cpp-console-app.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md index ce880922b87..ccc3dce470a 100644 --- a/docs/build/use-github-copilot-create-cpp-console-app.md +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -8,7 +8,7 @@ ms.custom: - ai-assisted - copilot-scenario-highlight ms.update-cycle: 180-days -#customer intent: As a C++ developer, I want to be able to use GitHub Copilot to create, troubleshoot, and understand C++ code in Microsoft Visual Studio. +#customer intent: As a C++ developer, I want to use GitHub Copilot to create, troubleshoot, and understand C++ code in Microsoft Visual Studio. --- # Use AI to create a C++ console application in Visual Studio @@ -56,7 +56,7 @@ Visual Studio uses *projects* to organize the code for an app, and *solutions* t :::image-end::: 1. Select **Next**. -1. Set the project name to *Life* and choose the location for the project. +1. Set the project name to `Life` and choose the location for the project. 1. Select **Create**. 1. After the project opens, find the `Life.cpp` file in Solution Explorer. 1. Open `Life.cpp` and delete the default "Hello, World!" code to start with a clean slate. @@ -249,7 +249,7 @@ To install **Desktop development with C++**, you can run the installer right fro - Ask Copilot to fix specific compilation errors by pasting the error message into Copilot chat. - Try refining your prompt to be more specific about what you want the app to do. -## Related content +## See also - [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) - [GitHub Copilot documentation](https://docs.github.com/copilot) - Dive deeper into AI-assisted development From c2ce2c15028ee51c713151de8b4c6b5e3b39349f Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Thu, 28 May 2026 08:43:27 -0700 Subject: [PATCH 500/619] Remove orphaned screens. --- .../media/github-copilot-fix-warning-accept.png | Bin 16661 -> 0 bytes docs/build/media/github-copilot-fix-warning.png | Bin 22327 -> 0 bytes docs/build/media/github-copilot-open-chat.png | Bin 11248 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/build/media/github-copilot-fix-warning-accept.png delete mode 100644 docs/build/media/github-copilot-fix-warning.png delete mode 100644 docs/build/media/github-copilot-open-chat.png diff --git a/docs/build/media/github-copilot-fix-warning-accept.png b/docs/build/media/github-copilot-fix-warning-accept.png deleted file mode 100644 index bb8f3ded8765e3cdfdc9b23d5fd86eaf0b05c42d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16661 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 diff --git a/docs/build/media/github-copilot-open-chat.png b/docs/build/media/github-copilot-open-chat.png deleted file mode 100644 index c89019f9abcc81ebc04b57df1a05b2a6cf47f28f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11248 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 From 50b4db61d0ee672231882b010e64a98fa1a97e67 Mon Sep 17 00:00:00 2001 From: Tim Sherer <28902327+TimShererWithAquent@users.noreply.github.com> Date: Thu, 28 May 2026 08:49:05 -0700 Subject: [PATCH 501/619] Update date for C++ console app tutorial --- docs/build/use-github-copilot-create-cpp-console-app.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/use-github-copilot-create-cpp-console-app.md b/docs/build/use-github-copilot-create-cpp-console-app.md index ccc3dce470a..3cd09ebd3cb 100644 --- a/docs/build/use-github-copilot-create-cpp-console-app.md +++ b/docs/build/use-github-copilot-create-cpp-console-app.md @@ -1,7 +1,7 @@ --- title: Use AI to create a C++ console application in Visual Studio description: "Learn how to use GitHub Copilot to create an example C++ console app using Microsoft C++ in Visual Studio." -ms.date: 04/29/2026 +ms.date: 05/28/2026 ms.topic: "tutorial" ms.collection: ce-skilling-ai-copilot ms.custom: @@ -253,4 +253,4 @@ To install **Desktop development with C++**, you can run the installer right fro - [GitHub Copilot in Visual Studio](/visualstudio/ide/visual-studio-github-copilot-install-and-states) - [GitHub Copilot documentation](https://docs.github.com/copilot) - Dive deeper into AI-assisted development -- [Awesome ChatGPT Prompts](https://github.com/f/awesome-chatgpt-prompts) - Community-driven prompting examples for inspiration \ No newline at end of file +- [Awesome ChatGPT Prompts](https://github.com/f/awesome-chatgpt-prompts) - Community-driven prompting examples for inspiration From fe0848f413f57c86a85624feb4f6f2676e221476 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Thu, 28 May 2026 08:57:17 -0700 Subject: [PATCH 502/619] Incorporate feedback. --- ...-native-cpp-program-on-the-command-line.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md index 18ec3988786..9eef6bad483 100644 --- a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md +++ b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md @@ -2,10 +2,10 @@ title: "Walkthrough: Compiling a Native C++ Program on the Command Line" description: "Learn how to use the Microsoft C++ compiler from a command prompt to compile and run C++ code by using a simple example." ms.custom: "conceptual" -ms.date: 04/29/2026 +ms.date: 05/28/2026 helpviewer_keywords: ["native code [C++]", "Visual C++, native code", "compiling programs [C++]", "command-line applications [C++], native"] ms.assetid: b200cfd1-0440-498f-90ee-7ecf92492dc0 -#customer intent: As a C++ developer, I want to build and run programs by using the command line. +#customer intent: As a C++ developer, I want to build and run programs from the command line. --- # Walkthrough: Compiling a Native C++ Program on the Command Line @@ -64,7 +64,7 @@ If you can't find the developer command prompt shortcut, or if you get an error 1. Enter `notepad hello.cpp` in the command prompt window. - Choose **Yes** when Notepad prompts you to create a new file. This step opens a blank Notepad window, ready for you to enter your code in a file named *hello.cpp*. + Choose **Yes** when Notepad prompts you to create a new file. This step opens a blank Notepad window, ready for you to enter your code in a file named `hello.cpp`. 1. In Notepad, enter the following code: @@ -81,9 +81,9 @@ If you can't find the developer command prompt shortcut, or if you get an error 1. Save your work! In Notepad, on the **File** menu, choose **Save**. - Congratulations! You created a C++ source file, *hello.cpp*, that's ready to compile. + Congratulations! You created a C++ source file, `hello.cpp`, that's ready to compile. -1. Switch back to the developer command prompt window. Enter `dir` at the command prompt to list the contents of the `C:\hello` directory. You should see the source file *hello.cpp* in the directory listing, which looks something like: +1. Switch back to the developer command prompt window. Enter `dir` at the command prompt to list the contents of the `C:\hello` directory. You should see the source file `hello.cpp` in the directory listing, which looks something like: ```Output C:\hello>dir @@ -101,11 +101,11 @@ If you can't find the developer command prompt shortcut, or if you get an error The dates and other details will differ on your computer. > [!NOTE] - > If you don't see your source code file, *hello.cpp*, make sure the current working directory in your command prompt is the *C:\hello* directory you created. Also make sure that this location is the directory where you saved your source file. + > If you don't see your source code file, `hello.cpp`, make sure the current working directory in your command prompt is the `C:\hello` directory you created. Also make sure that this location is the directory where you saved your source file. > > Make sure that you saved the source code with a `.cpp` file name extension, not a `.txt` extension. Your source file gets saved in the current directory as a `.cpp` file automatically if you open Notepad at the command prompt by using the `notepad hello.cpp` command. > - > Notepad's behavior is different if you open it another way: By default, Notepad appends a `.txt` extension to new files when you save them. It also defaults to saving files in your *Documents* directory. To save your file with a *.cpp* extension in Notepad, choose **File** > **Save As**. In the **Save As** dialog, navigate to your *C:\hello* folder in the directory tree view control. Then use the **Save as type** dropdown control to select **All Files (\*.\*)**. Enter *hello.cpp* in the **File name** edit control, and then choose **Save** to save the file. + > Notepad's behavior is different if you open it another way: By default, Notepad appends a `.txt` extension to new files when you save them. It also defaults to saving files in your `Documents` directory. To save your file with a `.cpp extension in Notepad, choose **File** > **Save As**. In the **Save As** dialog, navigate to your *C:\hello* folder in the directory tree view control. Then use the **Save as type** dropdown control to select **All Files (\*.\*)**. Enter `hello.cpp` in the **File name** edit control, and then choose **Save** to save the file. 1. At the developer command prompt, enter `cl /EHsc hello.cpp` to compile your program. @@ -129,7 +129,7 @@ If you can't find the developer command prompt shortcut, or if you get an error > > If you get a different compiler or linker error or warning, review your source code to correct any errors, then save it and run the compiler again. For information about specific errors, use the search box to look for the error number. -1. To run the hello.exe program, at the command prompt, enter *hello*. +1. To run the hello.exe program, at the command prompt, enter `hello`. The program displays this text and exits: @@ -143,7 +143,7 @@ If you can't find the developer command prompt shortcut, or if you get an error This "Hello, World" example is about as simple as a C++ program can get. Real world programs usually have header files, more source files, and link to libraries. -You can use the steps in this walkthrough to build your own C++ code instead of typing the sample code shown. These steps also let you build many C++ code sample programs that you find elsewhere. You can put your source code and build your apps in any writable directory. By default, the Visual Studio IDE creates projects in your user folder, in a *source\\repos* subfolder. Older versions might put projects in a *Documents\\Visual Studio \{version}\\Projects* folder. +You can use the steps in this walkthrough to build your own C++ code instead of typing the sample code shown. These steps also let you build many C++ code sample programs that you find elsewhere. You can put your source code and build your apps in any writable directory. By default, the Visual Studio IDE creates projects in your user folder, in a `source\repos` subfolder. Older versions might put projects in a `Documents\Visual Studio \{version}\Projects` folder. To compile a program that has other source code files, enter them all on the command line, like: @@ -153,7 +153,7 @@ cl /EHsc file1.cpp file2.cpp file3.cpp The `/EHsc` command-line option instructs the compiler to enable standard C++ exception handling behavior. Without it, thrown exceptions can result in undestroyed objects and resource leaks. For more information, see [/EH (Exception Handling Model)](reference/eh-exception-handling-model.md). -When you supply other source files, the compiler uses the first input file to create the program name. In this case, it outputs a program called *file1.exe*. To change the name to *program1.exe*, add an [/out](reference/out-output-file-name.md) linker option: +When you supply other source files, the compiler uses the first input file to create the program name. In this case, it outputs a program called `file1.exe`. To change the name to `program1.exe`, add an [/out](reference/out-output-file-name.md) linker option: ```cmd cl /EHsc file1.cpp file2.cpp file3.cpp /link /out:program1.exe @@ -173,7 +173,7 @@ The C and C++ languages are similar, but not the same. The MSVC compiler uses a The MSVC compiler includes a C Runtime Library (CRT) that conforms to the ISO C99 standard, with minor exceptions. Portable code generally compiles and runs as expected. Certain obsolete library functions, and several POSIX function names, are deprecated by the MSVC compiler. The functions are supported, but the preferred names have changed. For more information, see [Security Features in the CRT](../c-runtime-library/security-features-in-the-crt.md) and [Compiler Warning (level 3) C4996](../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). -## Related content +## See also - [C++ Language Reference](../cpp/cpp-language-reference.md) - [Projects and build systems](projects-and-build-systems-cpp.md) From 1fa5c51d61346a06ca86d1109d425d1f424b61d1 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Thu, 28 May 2026 10:23:17 -0700 Subject: [PATCH 503/619] Incorporate feedback. --- ...ble-a-64-bit-visual-cpp-toolset-on-the-command-line.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md b/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md index a41c25f50cb..0467db81855 100644 --- a/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md +++ b/docs/build/how-to-enable-a-64-bit-visual-cpp-toolset-on-the-command-line.md @@ -1,9 +1,9 @@ --- title: "How to: Enable a 64-Bit MSVC Toolset on the Command Line" description: "Learn how to enable a 64-Bit, x64 hosted MSVC toolset on the command line. Use this toolset to create apps that run on 32-bit, 64-bit, or ARM-based systems." -ms.date: "05/04/2026" +ms.date: "05/28/2026" helpviewer_keywords: ["x64 [C++]", "64-bit compiler [C++], command line usage", "64-bit compiler [C++], toolset enabling at command line", "command line [C++], 64-bit compiler", "Itanium [C++], command-line compiler", "IPF", "Itanium [C++]", "IPF, command-line compiler", "x64 [C++], command-line compiler"] -#customer intent: As a cross-platform developer, I need the toolset installed with Visual Studio to build code for x86, x64, or ARM processors. +#customer intent: As a developer, I need the toolset installed with Visual Studio to build code for x86, x64, or ARM processors. --- # How to: Enable a 64-Bit, x64 hosted MSVC toolset on the command line @@ -23,7 +23,7 @@ On earlier versions of Windows, choose **Start**, expand **All Programs**, and t ## Use vcvarsall.bat to set a 64-bit hosted build architecture -Any of the native or cross compiler tools build configurations can be used on the command line by running the *vcvarsall.bat* command file. This command file configures the path and environment variables that enable a particular build architecture in an existing command prompt window. For more information, see [Developer command file locations](building-on-the-command-line.md#developer_command_file_locations). +Any of the native or cross compiler tools build configurations can be used on the command line by running the `vcvarsall.bat` command file. This command file configures the path and environment variables that enable a particular build architecture in an existing command prompt window. For more information, see [Developer command file locations](building-on-the-command-line.md#developer_command_file_locations). ## Remarks @@ -36,6 +36,6 @@ If you install these workloads on a 64-bit, x64 processor, you also get 64-bit n > > For information about how to use the Visual Studio IDE to create 64-bit applications, see [How to: Configure Visual Studio C++ Projects to Target 64-Bit, x64 Platforms](how-to-configure-visual-cpp-projects-to-target-64-bit-platforms.md). -## Related content +## See also - [Configure C++ projects for 64-bit, x64 targets](configuring-programs-for-64-bit-visual-cpp.md) From eae0be4adacc588741d8b8e08a42173e96a1d263 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Thu, 28 May 2026 10:42:04 -0700 Subject: [PATCH 504/619] Incorporate feedback. --- docs/overview/compiler-versions.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index 920398bc1ae..1a8d102d076 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -1,13 +1,13 @@ --- -title: "Microsoft C++ compiler versioning" +title: "Microsoft C++ (MSVC) compiler versioning" description: "Visual Studio includes a Microsoft C++ (MSVC) compiler. Learn about the versioning system used for the compiler." -ms.date: 05/04/2026 +ms.date: 05/28/2026 ms.service: "visual-cpp" ms.subservice: "tools" helpviewer_keywords: ["Visual C++, platforms supported", "platforms [C++]"] #customer intent: As a C++ developer using Visual Studio, I need to be aware of different versions of the Microsoft C++ compiler for consistency in my organization's production process. --- -# Microsoft C++ compiler versioning +# Microsoft C++ (MSVC) compiler versioning The Microsoft C++ (MSVC) compiler version consists of four fields: @@ -139,7 +139,7 @@ The following table lists the Visual Studio version corresponding to each Micros b Visual Studio 2019 versions 16.10 and 16.11 share the same major and minor versions, and so have the same value for `_MSC_VER`. To distinguish them, use `_MSC_FULL_VER`. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.10 is 192929917. The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.11 is 192930129. -## Related content +## See also - [`_MSC_VER`](../preprocessor/predefined-macros.md) - [Visual C++ compiler version blog post](https://devblogs.microsoft.com/cppblog/visual-c-compiler-version/) From fc4b019480409041915380936c3feb3ca90bd636 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Thu, 28 May 2026 13:08:34 -0700 Subject: [PATCH 505/619] Incorporate feedback. --- docs/build/building-on-the-command-line.md | 45 ++-------------------- 1 file changed, 4 insertions(+), 41 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 2c39da716c5..b48507b8346 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -160,9 +160,7 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va ### `vcvarsall` syntax -```cmd -vcvarsall.bat [architecture] [platform_type] [winsdk_version] [-vcvars_ver= vcversion] [spectre_mode] -``` +`vcvarsall.bat` [`architecture`] [`platform_type`] [`winsdk_version`] [`-vcvars_ver=`*`vcversion`*] [`spectre_mode`] - `architecture` @@ -315,52 +313,17 @@ By default, the Visual Studio IDE uses native project build systems based on MSB > [!NOTE] > Starting in Visual Studio 2019 version 16.5, MSBuild and DEVENV don't use the command-line environment to control the toolset and libraries used. -## In this section - -These articles show how to build apps on the command line, and describe how to customize the command-line build environment. Some show how to use 64-bit toolsets, and target x86, x64, ARM, and ARM64 platforms. They also describe use of the command-line build tools MSBuild and NMAKE. +## See also - [Walkthrough: Compiling a native C++ program on the command line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md) - - Gives an example that shows how to create and compile a C++ program using the command line. - - [Walkthrough: Compile a C program on the command line](walkthrough-compile-a-c-program-on-the-command-line.md) - - Describes how to compile a program written in the C programming language. - - [Walkthrough: Compiling a C++/CLI program on the command line](walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md) - - Describes how to create and compile a C++/CLI program that uses the .NET Framework. - - [Walkthrough: Compiling a C++/CX program on the command line](walkthrough-compiling-a-cpp-cx-program-on-the-command-line.md) +- [Projects and build systems](projects-and-build-systems-cpp.md) - Describes how to create and compile a C++/CX program that uses the Windows Runtime. - -- [NMAKE reference](reference/nmake-reference.md) - - Provides links to articles that describe the Microsoft Program Maintenance Utility (`NMAKE.EXE`). - -- [MSBuild on the command line - C++](msbuild-visual-cpp.md)\ - - Provides links to articles that discuss how to use `msbuild.exe` from the command line. - -## Related sections +The following reference content might also be useful: - [`/MD`, `/MT`, `/LD` (Use run-time library)](reference/md-mt-ld-use-run-time-library.md) - - Describes how to use these compiler options to use a Debug or Release run-time library. - - [C/C++ compiler options](reference/compiler-options.md) - - Provides links to articles that discuss the C and C++ compiler options and `CL.exe`. - - [MSVC linker options](reference/linker-options.md) - - Provides links to articles that discuss the linker options and `LINK.exe`. - - [Additional MSVC build tools](reference/c-cpp-build-tools.md) - - Provides links to the C/C++ build tools that are included in Visual Studio. - -## Related content - -[Projects and build systems](projects-and-build-systems-cpp.md) From 09deebd33bd296b1dd1f451a4cd237f3f01eb5c4 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Thu, 28 May 2026 14:14:54 -0700 Subject: [PATCH 506/619] Incorporate feedback. --- docs/build/building-on-the-command-line.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index b48507b8346..a4f97e08ceb 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -320,9 +320,6 @@ By default, the Visual Studio IDE uses native project build systems based on MSB - [Walkthrough: Compiling a C++/CLI program on the command line](walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md) - [Walkthrough: Compiling a C++/CX program on the command line](walkthrough-compiling-a-cpp-cx-program-on-the-command-line.md) - [Projects and build systems](projects-and-build-systems-cpp.md) - -The following reference content might also be useful: - - [`/MD`, `/MT`, `/LD` (Use run-time library)](reference/md-mt-ld-use-run-time-library.md) - [C/C++ compiler options](reference/compiler-options.md) - [MSVC linker options](reference/linker-options.md) From 2435609165a24f4b5b560734f6cbb9d2059756c1 Mon Sep 17 00:00:00 2001 From: Tim Sherer <28902327+TimShererWithAquent@users.noreply.github.com> Date: Thu, 28 May 2026 14:48:01 -0700 Subject: [PATCH 507/619] Incorporate feedback. Clarified note about Visual Studio 2019 versions sharing the same _MSC_VER value. --- docs/overview/compiler-versions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index 7d02ef1dcaf..e7b45349210 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -36,7 +36,7 @@ The macros reflect these values like this: - `_MSC_BUILD` (the revision) is 0 > [!NOTE] -> Visual Studio 2019 versions 16.8 and 16.9 share the same major and minor versions, and so have the same value for `_MSC_VER`. This fact is also true for Visual Studio 2019 versions 16.10 and 16.11. To distinguish them, use `_MSC_FULL_VER` as described in [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). +> Visual Studio 2019 versions 16.8 and 16.9 share the same major and minor versions, and so have the same value for `_MSC_VER`. This is also true for Visual Studio 2019 versions 16.10 and 16.11. To distinguish them, use `_MSC_FULL_VER` as described in [Service releases starting with Visual Studio 2017](#service-releases-starting-with-visual-studio-2017). ## Visual Studio channels From d151e8e17470a470b2992f35b68711b9a72720e3 Mon Sep 17 00:00:00 2001 From: Tim Sherer <28902327+TimShererWithAquent@users.noreply.github.com> Date: Fri, 29 May 2026 08:25:53 -0700 Subject: [PATCH 508/619] Freshness Edit: C++ and C content : (#6697) * Freshness, in progress. * Freshness. * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Correct capitalization in unique_ptr documentation * Incorporate feedback. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/cpp/smart-pointers-modern-cpp.md | 113 ++++++++++++++++---------- 1 file changed, 68 insertions(+), 45 deletions(-) diff --git a/docs/cpp/smart-pointers-modern-cpp.md b/docs/cpp/smart-pointers-modern-cpp.md index 2551bba44a0..86b821bb7a3 100644 --- a/docs/cpp/smart-pointers-modern-cpp.md +++ b/docs/cpp/smart-pointers-modern-cpp.md @@ -1,9 +1,9 @@ --- -description: "Learn more about: Smart pointers (Modern C++)" title: "Smart pointers (Modern C++)" -ms.date: "11/19/2019" +description: "Learn more about how smart pointers in modern C++ help ensure that programs are free of memory and resource leaks and are exception-safe." +ms.date: 05/28/2026 ms.topic: "concept-article" -ms.assetid: 909ef870-904c-49b6-b8cd-e9d0b7dc9435 +#customer intent: As a C++ developer, I want to understand how smart pointers in modern C++ help prevent memory and resource leaks and are exception-safe. --- # Smart pointers (Modern C++) @@ -11,22 +11,26 @@ In modern C++ programming, the Standard Library includes *smart pointers*, which ## Uses for smart pointers -Smart pointers are defined in the `std` namespace in the [\](../standard-library/memory.md) header file. They are crucial to the [RAII](./object-lifetime-and-resource-management-modern-cpp.md) or *Resource Acquisition Is Initialization* programming idiom. The main goal of this idiom is to ensure that resource acquisition occurs at the same time that the object is initialized, so that all resources for the object are created and made ready in one line of code. In practical terms, the main principle of RAII is to give ownership of any heap-allocated resource—for example, dynamically-allocated memory or system object handles—to a stack-allocated object whose destructor contains the code to delete or free the resource and also any associated cleanup code. +Smart pointers are defined in the `std` namespace in the [\](../standard-library/memory.md) header file. They're crucial to the *Resource Acquisition Is Initialization* [(RAII)](./object-lifetime-and-resource-management-modern-cpp.md) programming idiom. The main goal of this idiom is to ensure that resource acquisition occurs at the same time that the object is initialized. All resources for the object are created and made ready in one line of code. -In most cases, when you initialize a raw pointer or resource handle to point to an actual resource, pass the pointer to a smart pointer immediately. In modern C++, raw pointers are only used in small code blocks of limited scope, loops, or helper functions where performance is critical and there is no chance of confusion about ownership. +In practical terms, the main principle of RAII is to give ownership of any heap-allocated resource to a stack-allocated object whose destructor contains the code to delete or free the resource and also any associated cleanup code. Such objects include dynamically allocated memory or system object handles. + +In most cases, when you initialize a raw pointer or resource handle to point to an actual resource, pass the pointer to a smart pointer immediately. In modern C++, raw pointers are only used in small code blocks of limited scope, loops, or helper functions where performance is critical and there's no chance of confusion about ownership. The following example compares a raw pointer declaration to a smart pointer declaration. [!code-cpp[smart_pointers_intro#1](codesnippet/CPP/smart-pointers-modern-cpp_1.cpp)] -As shown in the example, a smart pointer is a class template that you declare on the stack, and initialize by using a raw pointer that points to a heap-allocated object. After the smart pointer is initialized, it owns the raw pointer. This means that the smart pointer is responsible for deleting the memory that the raw pointer specifies. The smart pointer destructor contains the call to delete, and because the smart pointer is declared on the stack, its destructor is invoked when the smart pointer goes out of scope, even if an exception is thrown somewhere further up the stack. +As shown in the example, a smart pointer is a class template that you declare on the stack, and initialize by using a raw pointer that points to a heap-allocated object. After the smart pointer is initialized, it owns the raw pointer. This approach means that the smart pointer is responsible for deleting the memory that the raw pointer specifies. + +The smart pointer destructor contains the call to `delete`. Because the smart pointer is declared on the stack, its destructor is invoked when the smart pointer goes out of scope. It's invoked even if an exception is thrown somewhere further up the stack. -Access the encapsulated pointer by using the familiar pointer operators, `->` and `*`, which the smart pointer class overloads to return the encapsulated raw pointer. +Access the encapsulated pointer by using the familiar pointer operators: `->` and `*`. The smart pointer class overloads these operators to return the encapsulated raw pointer. -The C++ smart pointer idiom resembles object creation in languages such as C#: you create the object and then let the system take care of deleting it at the correct time. The difference is that no separate garbage collector runs in the background; memory is managed through the standard C++ scoping rules so that the runtime environment is faster and more efficient. +The C++ smart pointer idiom resembles object creation in languages such as C#. You create the object and then let the system take care of deleting it at the correct time. The difference is that no separate garbage collector runs in the background. Memory is managed through the standard C++ scoping rules so that the runtime environment is faster and more efficient. > [!IMPORTANT] -> Always create smart pointers on a separate line of code, never in a parameter list, so that a subtle resource leak won't occur due to certain parameter list allocation rules. +> Always create smart pointers on a separate line of code, never in a parameter list. This approach prevents a subtle resource leak due to certain parameter list allocation rules. The following example shows how a `unique_ptr` smart pointer type from the C++ Standard Library could be used to encapsulate a pointer to a large object. @@ -34,23 +38,23 @@ The following example shows how a `unique_ptr` smart pointer type from the C++ S The example demonstrates the following essential steps for using smart pointers. -1. Declare the smart pointer as an automatic (local) variable. (Do not use the **`new`** or `malloc` expression on the smart pointer itself.) +1. Declare the smart pointer as an automatic (local) variable. Don't use the `new` or `malloc` expression on the smart pointer itself. 1. In the type parameter, specify the pointed-to type of the encapsulated pointer. -1. Pass a raw pointer to a **`new`**-ed object in the smart pointer constructor. (Some utility functions or smart pointer constructors do this for you.) +1. Pass a raw pointer to a `new`-ed object in the smart pointer constructor. Some utility functions or smart pointer constructors do this action for you. 1. Use the overloaded `->` and `*` operators to access the object. 1. Let the smart pointer delete the object. -Smart pointers are designed to be as efficient as possible both in terms of memory and performance. For example, the only data member in `unique_ptr` is the encapsulated pointer. This means that `unique_ptr` is exactly the same size as that pointer, either four bytes or eight bytes. Accessing the encapsulated pointer by using the smart pointer overloaded * and -> operators is not significantly slower than accessing the raw pointers directly. +Smart pointers are designed to be as efficient as possible both in terms of memory and performance. For example, the only data member in `unique_ptr` is the encapsulated pointer. This fact means that `unique_ptr` is exactly the same size as that pointer, either four bytes or eight bytes. Accessing the encapsulated pointer by using the smart pointer overloaded `*` and `->` operators isn't significantly slower than accessing the raw pointers directly. -Smart pointers have their own member functions, which are accessed by using "dot" notation. For example, some C++ Standard Library smart pointers have a reset member function that releases ownership of the pointer. This is useful when you want to free the memory owned by the smart pointer before the smart pointer goes out of scope, as shown in the following example. +Smart pointers have their own member functions, which are accessed by using dot notation. For example, some C++ Standard Library smart pointers have a `reset` member function that releases ownership of the pointer. This aspect is useful when you want to free the memory owned by the smart pointer before the smart pointer goes out of scope, as shown in the following example. [!code-cpp[smart_pointers_intro#3](codesnippet/CPP/smart-pointers-modern-cpp_3.cpp)] -Smart pointers usually provide a way to access their raw pointer directly. C++ Standard Library smart pointers have a `get` member function for this purpose, and `CComPtr` has a public `p` class member. By providing direct access to the underlying pointer, you can use the smart pointer to manage memory in your own code and still pass the raw pointer to code that does not support smart pointers. +Smart pointers usually provide a way to access their raw pointer directly. C++ Standard Library smart pointers have a `get` member function for this purpose. `CComPtr` has a public `p` class member. By providing direct access to the underlying pointer, you can use the smart pointer to manage memory in your own code and still pass the raw pointer to code that doesn't support smart pointers. [!code-cpp[smart_pointers_intro#4](codesnippet/CPP/smart-pointers-modern-cpp_4.cpp)] @@ -62,55 +66,74 @@ The following section summarizes the different kinds of smart pointers that are Use these smart pointers as a first choice for encapsulating pointers to plain old C++ objects (POCO). -- `unique_ptr`
      - Allows exactly one owner of the underlying pointer. Use as the default choice for POCO unless you know for certain that you require a `shared_ptr`. Can be moved to a new owner, but not copied or shared. Replaces `auto_ptr`, which is deprecated. Compare to `boost::scoped_ptr`. `unique_ptr` is small and efficient; the size is one pointer and it supports rvalue references for fast insertion and retrieval from C++ Standard Library collections. Header file: ``. For more information, see [How to: Create and Use unique_ptr Instances](how-to-create-and-use-unique-ptr-instances.md) and [unique_ptr Class](../standard-library/unique-ptr-class.md). +- `unique_ptr` + + Allows exactly one owner of the underlying pointer. Use as the default choice for POCO unless you know for certain that you require a `shared_ptr`. Can be moved to a new owner, but not copied or shared. Replaces `auto_ptr`, which is deprecated. Compare to `boost::scoped_ptr`. + + `unique_ptr` is small and efficient. The size is one pointer and it supports rvalue references for fast insertion and retrieval from C++ Standard Library collections. Header file: ``. For more information, see [How to: Create and use unique_ptr instances](how-to-create-and-use-unique-ptr-instances.md) and [unique_ptr Class](../standard-library/unique-ptr-class.md). + +- `shared_ptr` -- `shared_ptr`
      - Reference-counted smart pointer. Use when you want to assign one raw pointer to multiple owners, for example, when you return a copy of a pointer from a container but want to keep the original. The raw pointer is not deleted until all `shared_ptr` owners have gone out of scope or have otherwise given up ownership. The size is two pointers; one for the object and one for the shared control block that contains the reference count. Header file: ``. For more information, see [How to: Create and Use shared_ptr Instances](how-to-create-and-use-shared-ptr-instances.md) and [shared_ptr Class](../standard-library/shared-ptr-class.md). + Reference-counted smart pointer. Use when you want to assign one raw pointer to multiple owners. For example, you can return a copy of a pointer from a container but also keep the original. The raw pointer isn't deleted until all `shared_ptr` owners go out of scope or otherwise give up ownership. -- `weak_ptr`
      - Special-case smart pointer for use in conjunction with `shared_ptr`. A `weak_ptr` provides access to an object that is owned by one or more `shared_ptr` instances, but does not participate in reference counting. Use when you want to observe an object, but do not require it to remain alive. Required in some cases to break circular references between `shared_ptr` instances. Header file: ``. For more information, see [How to: Create and Use weak_ptr Instances](how-to-create-and-use-weak-ptr-instances.md) and [weak_ptr Class](../standard-library/weak-ptr-class.md). + The size is two pointers: one for the object and one for the shared control block that contains the reference count. Header file: ``. For more information, see [How to: Create and use shared_ptr instances](how-to-create-and-use-shared-ptr-instances.md) and [shared_ptr Class](../standard-library/shared-ptr-class.md). + +- `weak_ptr` + + Special-case smart pointer for use with `shared_ptr`. A `weak_ptr` provides access to an object that one or more `shared_ptr` instances own, but doesn't participate in reference counting. Use when you want to observe an object, but don't require it to remain alive. Required in some cases to break circular references between `shared_ptr` instances. + + Header file: ``. For more information, see [How to: Create and use weak_ptr instances](how-to-create-and-use-weak-ptr-instances.md) and [weak_ptr Class](../standard-library/weak-ptr-class.md). ### Smart pointers for COM objects (classic Windows programming) -When you work with COM objects, wrap the interface pointers in an appropriate smart pointer type. The Active Template Library (ATL) defines several smart pointers for various purposes. You can also use the `_com_ptr_t` smart pointer type, which the compiler uses when it creates wrapper classes from .tlb files. It's the best choice when you do not want to include the ATL header files. +When you work with COM objects, wrap the interface pointers in an appropriate smart pointer type. The Active Template Library (ATL) defines several smart pointers for various purposes. You can also use the `_com_ptr_t` smart pointer type, which the compiler uses when it creates wrapper classes from .tlb files. It's the best choice when you don't want to include the ATL header files. + +- [CComPtr Class](../atl/reference/ccomptr-class.md) -[CComPtr Class](../atl/reference/ccomptr-class.md)
      -Use this unless you cannot use ATL. Performs reference counting by using the `AddRef` and `Release` methods. For more information, see [How to: Create and Use CComPtr and CComQIPtr Instances](how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md). + Use this class unless you can't use ATL. Performs reference counting by using the `AddRef` and `Release` methods. For more information, see [How to: Create and use CComPtr and CComQIPtr instances](how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md). -[CComQIPtr Class](../atl/reference/ccomqiptr-class.md)
      -Resembles `CComPtr` but also provides simplified syntax for calling `QueryInterface` on COM objects. For more information, see [How to: Create and Use CComPtr and CComQIPtr Instances](how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md). +- [CComQIPtr Class](../atl/reference/ccomqiptr-class.md) -[CComHeapPtr Class](../atl/reference/ccomheapptr-class.md)
      -Smart pointer to objects that use `CoTaskMemFree` to free memory. + Resembles `CComPtr` but also provides simplified syntax for calling `QueryInterface` on COM objects. For more information, see [How to: Create and use CComPtr and CComQIPtr instances](how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md). -[CComGITPtr Class](../atl/reference/ccomgitptr-class.md)
      -Smart pointer for interfaces that are obtained from the global interface table (GIT). +- [CComHeapPtr Class](../atl/reference/ccomheapptr-class.md) -[_com_ptr_t Class](com-ptr-t-class.md)
      -Resembles `CComQIPtr` in functionality but does not depend on ATL headers. + Smart pointer to objects that use `CoTaskMemFree` to free memory. + +- [CComGITPtr Class](../atl/reference/ccomgitptr-class.md) + + Smart pointer for interfaces that are obtained from the global interface table (GIT). + +- [_com_ptr_t Class](com-ptr-t-class.md) + + Resembles `CComQIPtr` in functionality but doesn't depend on ATL headers. ### ATL smart pointers for POCO objects -In addition to smart pointers for COM objects, ATL also defines smart pointers, and collections of smart pointers, for plain old C++ objects (POCO). In classic Windows programming, these types are useful alternatives to the C++ Standard Library collections, especially when code portability is not required or when you do not want to mix the programming models of the C++ Standard Library and ATL. +In addition to smart pointers for COM objects, ATL also defines smart pointers, and collections of smart pointers, for plain old C++ objects (POCO). In classic Windows programming, these types are useful alternatives to the C++ Standard Library collections, especially when code portability isn't required or when you don't want to mix the programming models of the C++ Standard Library and ATL. + +- [CAutoPtr Class](../atl/reference/cautoptr-class.md) + + Smart pointer that enforces unique ownership by transferring ownership on copy. Comparable to the deprecated `std::auto_ptr` Class. + +- [CHeapPtr Class](../atl/reference/cheapptr-class.md) + + Smart pointer for objects that are allocated by using the C [malloc](../c-runtime-library/reference/malloc.md) function. + +- [CAutoVectorPtr Class](../atl/reference/cautovectorptr-class.md) -[CAutoPtr Class](../atl/reference/cautoptr-class.md)
      -Smart pointer that enforces unique ownership by transferring ownership on copy. Comparable to the deprecated `std::auto_ptr` Class. + Smart pointer for arrays that are allocated by using `new[]`. -[CHeapPtr Class](../atl/reference/cheapptr-class.md)
      -Smart pointer for objects that are allocated by using the C [malloc](../c-runtime-library/reference/malloc.md) function. +- [CAutoPtrArray Class](../atl/reference/cautoptrarray-class.md) -[CAutoVectorPtr Class](../atl/reference/cautovectorptr-class.md)
      -Smart pointer for arrays that are allocated by using `new[]`. + Class that encapsulates an array of `CAutoPtr` elements. -[CAutoPtrArray Class](../atl/reference/cautoptrarray-class.md)
      -Class that encapsulates an array of `CAutoPtr` elements. +- [CAutoPtrList Class](../atl/reference/cautoptrlist-class.md) -[CAutoPtrList Class](../atl/reference/cautoptrlist-class.md)
      -Class that encapsulates methods for manipulating a list of `CAutoPtr` nodes. + Class that encapsulates methods for manipulating a list of `CAutoPtr` nodes. ## See also -[Pointers](pointers-cpp.md)
      -[C++ Language Reference](../cpp/cpp-language-reference.md)
      -[C++ Standard Library](../standard-library/cpp-standard-library-reference.md) +- [Pointers](pointers-cpp.md) +- [C++ Language Reference](../cpp/cpp-language-reference.md) +- [C++ Standard Library](../standard-library/cpp-standard-library-reference.md) From 5419829c0f0890fb30ba8cb5aa20d14e728be75e Mon Sep 17 00:00:00 2001 From: Tim Sherer <28902327+TimShererWithAquent@users.noreply.github.com> Date: Fri, 29 May 2026 08:28:49 -0700 Subject: [PATCH 509/619] Freshness Edit: C++ and C content : Welcome back to C++ - Modern C++ (#6700) * Freshness. * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Incorporate feedback. * fix small nit regarding c-style programming --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Tyler Whitney --- docs/cpp/welcome-back-to-cpp-modern-cpp.md | 69 ++++++++++++++-------- 1 file changed, 43 insertions(+), 26 deletions(-) diff --git a/docs/cpp/welcome-back-to-cpp-modern-cpp.md b/docs/cpp/welcome-back-to-cpp-modern-cpp.md index dad330d014a..b619c962491 100644 --- a/docs/cpp/welcome-back-to-cpp-modern-cpp.md +++ b/docs/cpp/welcome-back-to-cpp-modern-cpp.md @@ -1,22 +1,35 @@ --- -title: "Welcome back to C++ - Modern C++" -description: "Describes the new programming idioms in Modern C++ and their rationale." -ms.date: 06/02/2022 +title: "Welcome Back to C++ - Modern C++" +description: "Learn about the new programming idioms in modern C++ and their rationale. Understand some of the advantages of modern C++." +ms.date: 05/28/2026 ms.topic: "concept-article" +#customer intent: As a developer, I want to understand advantages of modern C++ and how modern C++ differs from previous versions of the language. --- # Welcome back to C++ - Modern C++ -Since its creation, C++ has become one of the most widely used programming languages in the world. Well-written C++ programs are fast and efficient. The language is more flexible than other languages: It can work at the highest levels of abstraction, and down at the level of the silicon. C++ supplies highly optimized standard libraries. It enables access to low-level hardware features, to maximize speed and minimize memory requirements. C++ can create almost any kind of program: Games, device drivers, HPC, cloud, desktop, embedded, and mobile apps, and much more. Even libraries and compilers for other programming languages get written in C++. +Since its creation, C++ has become one of the most widely used programming languages in the world. Well-written C++ programs are fast and efficient. The language is more flexible than other languages: It can work at the highest levels of abstraction, and down at the level of the silicon. -One of the original requirements for C++ was backward compatibility with the C language. As a result, C++ has always permitted C-style programming, with raw pointers, arrays, null-terminated character strings, and other features. They may enable great performance, but can also spawn bugs and complexity. The evolution of C++ has emphasized features that greatly reduce the need to use C-style idioms. The old C-programming facilities are still there when you need them. However, in modern C++ code you should need them less and less. Modern C++ code is simpler, safer, more elegant, and still as fast as ever. +C++ supplies highly optimized standard libraries. It enables access to low-level hardware features, to maximize speed and minimize memory requirements. C++ can create almost any kind of program: Games, device drivers, High-Performance Computing, cloud, desktop, embedded, and mobile apps, and much more. Even libraries and compilers for other programming languages are written in C++. + +One of the original requirements for C++ was backward compatibility with the C language. As a result, C++ permits C-style programming, with raw pointers, arrays, null-terminated character strings, and other features. They can enable great performance, but can also spawn bugs and complexity. + +The evolution of C++ emphasizes features that greatly reduce the need to use C-style idioms. The old C-programming facilities are still there when you need them. However, in modern C++ code you should need them less and less. Modern C++ code is simpler, safer, more elegant, and still as fast as ever. The following sections provide an overview of the main features of modern C++. Unless noted otherwise, the features listed here are available in C++11 and later. In the Microsoft C++ compiler, you can set the [`/std`](../build/reference/std-specify-language-standard-version.md) compiler option to specify which version of the standard to use for your project. ## Resources and smart pointers -One of the major classes of bugs in C-style programming is the *memory leak*. Leaks are often caused by a failure to call **`delete`** for memory that was allocated with **`new`**. Modern C++ emphasizes the principle of *resource acquisition is initialization* (RAII). The idea is simple. Resources (heap memory, file handles, sockets, and so on) should be *owned* by an object. That object creates, or receives, the newly allocated resource in its constructor, and deletes it in its destructor. The principle of RAII guarantees that all resources get properly returned to the operating system when the owning object goes out of scope. +One of the major classes of bugs in C-style programming is the *memory leak*. Leaks are often caused by a failure to call `delete` for memory that was allocated with `new`. Modern C++ emphasizes the principle of *resource acquisition is initialization* (RAII). + +The idea is simple. Resources, such as heap memory, file handles, and sockets, should be *owned* by an object. That object creates, or receives, the newly allocated resource in its constructor, and deletes it in its destructor. The principle of RAII guarantees that all resources get properly returned to the operating system when the owning object goes out of scope. + +To support easy adoption of RAII principles, the C++ Standard Library provides three smart pointer types: -To support easy adoption of RAII principles, the C++ Standard Library provides three smart pointer types: [`std::unique_ptr`](../standard-library/unique-ptr-class.md), [`std::shared_ptr`](../standard-library/shared-ptr-class.md), and [`std::weak_ptr`](../standard-library/weak-ptr-class.md). A smart pointer handles the allocation and deletion of the memory it owns. The following example shows a class with an array member that is allocated on the heap in the call to `make_unique()`. The calls to **`new`** and **`delete`** are encapsulated by the `unique_ptr` class. When a `widget` object goes out of scope, the unique_ptr destructor will be invoked and it will release the memory that was allocated for the array. +- [`std::unique_ptr`](../standard-library/unique-ptr-class.md) +- [`std::shared_ptr`](../standard-library/shared-ptr-class.md) +- [`std::weak_ptr`](../standard-library/weak-ptr-class.md) + +A *smart pointer* handles the allocation and deletion of the memory it owns. The following example shows a class with an array member that is allocated on the heap in the call to `make_unique()`. The `unique_ptr` class encapsulates the calls to `new` and `delete`. When a `widget` object goes out of scope, the `unique_ptr` destructor will be invoked and it releases the memory that was allocated for the array. ```cpp #include @@ -38,7 +51,7 @@ void functionUsingWidget() { } // automatic destruction and deallocation for w and w.data ``` -Whenever possible, use a smart pointer to manage heap memory. If you must use the **`new`** and **`delete`** operators explicitly, follow the principle of RAII. For more information, see [Object lifetime and resource management (RAII)](object-lifetime-and-resource-management-modern-cpp.md). +Whenever possible, use a smart pointer to manage heap memory. If you must use the `new` and `delete` operators explicitly, follow the principle of RAII. For more information, see [Object lifetime and resource management (RAII)](object-lifetime-and-resource-management-modern-cpp.md). ## `std::string` and `std::string_view` @@ -46,7 +59,7 @@ C-style strings are another major source of bugs. By using [`std::string` and `s ## `std::vector` and other Standard Library containers -The standard library containers all follow the principle of RAII. They provide iterators for safe traversal of elements. And, they're highly optimized for performance and have been thoroughly tested for correctness. By using these containers, you eliminate the potential for bugs or inefficiencies that might be introduced in custom data structures. Instead of raw arrays, use [`vector`](../standard-library/vector-class.md) as a sequential container in C++. +The standard library containers all follow the principle of RAII. They provide iterators for safe traversal of elements. They're highly optimized for performance and thoroughly tested for correctness. By using these containers, you eliminate the potential for bugs or inefficiencies that might be introduced in custom data structures. Instead of raw arrays, use [`vector`](../standard-library/vector-class.md) as a sequential container in C++. ```cpp vector apples; @@ -61,25 +74,25 @@ map apple_color; apple_color["Granny Smith"] = "Green"; ``` -When performance optimization is needed, consider using: +When you need performance optimization, consider using: -- Unordered associative containers such as [`unordered_map`](../standard-library/unordered-map-class.md). These have lower per-element overhead and constant-time lookup, but they can be harder to use correctly and efficiently. +- Unordered associative containers such as [`unordered_map`](../standard-library/unordered-map-class.md). These containers have lower per-element overhead and constant-time lookup, but they can be harder to use correctly and efficiently. - Sorted `vector`. For more information, see [Algorithms](../standard-library/algorithms.md). Don't use C-style arrays. For older APIs that need direct access to the data, use accessor methods such as `f(vec.data(), vec.size());` instead. For more information about containers, see [C++ Standard Library Containers](../standard-library/stl-containers.md). ## Standard Library algorithms -Before you assume that you need to write a custom algorithm for your program, first review the C++ Standard Library [algorithms](../standard-library/algorithm.md). The Standard Library contains an ever-growing assortment of algorithms for many common operations such as searching, sorting, filtering, and randomizing. The math library is extensive. In C++17 and later, parallel versions of many algorithms are provided. +Before you assume that you need to write a custom algorithm for your program, review the C++ Standard Library [algorithms](../standard-library/algorithm.md). The Standard Library contains an ever-growing assortment of algorithms for many common operations such as searching, sorting, filtering, and randomizing. The math library is extensive. In C++17 and later, parallel versions of many algorithms are provided. Here are some important examples: -- `for_each`, the default traversal algorithm (along with range-based `for` loops). -- `transform`, for not-in-place modification of container elements -- `find_if`, the default search algorithm. +- `for_each`: the default traversal algorithm, along with range-based `for` loops. +- `transform`: for not-in-place modification of container elements. +- `find_if`: the default search algorithm. - `sort`, `lower_bound`, and the other default sorting and searching algorithms. -To write a comparator, use strict **`<`** and use *named lambdas* when you can. +To write a comparator, use strict `<` and use *named lambdas* when you can. ```cpp auto comp = [](const widget& w1, const widget& w2) @@ -92,7 +105,7 @@ auto i = lower_bound( v.begin(), v.end(), widget{0}, comp ); ## `auto` instead of explicit type names -C++11 introduced the [`auto`](auto-cpp.md) keyword for use in variable, function, and template declarations. **`auto`** tells the compiler to deduce the type of the object so that you don't have to type it explicitly. **`auto`** is especially useful when the deduced type is a nested template: +C++11 introduced the [`auto`](auto-cpp.md) keyword for use in variable, function, and template declarations. `auto` tells the compiler to deduce the type of the object so that you don't have to type it explicitly. `auto` is especially useful when the deduced type is a nested template: ```cpp map>::iterator i = m.begin(); // C-style @@ -101,7 +114,7 @@ auto i = m.begin(); // modern C++ ## Range-based `for` loops -C-style iteration over arrays and containers is prone to indexing errors and is also tedious to type. To eliminate these errors, and make your code more readable, use range-based **`for`** loops with both Standard Library containers and raw arrays. For more information, see [Range-based `for` statement](../cpp/range-based-for-statement-cpp.md). +C-style iteration over arrays and containers is prone to indexing errors and is also tedious to type. To eliminate these errors, and make your code more readable, use range-based `for` loops with both Standard Library containers and raw arrays. For more information, see [Range-based `for` statement](../cpp/range-based-for-statement-cpp.md). ```cpp #include @@ -173,11 +186,15 @@ For more information, see [Brace initialization](initializing-classes-and-struct ## Move semantics -Modern C++ provides *move semantics*, which make it possible to eliminate unnecessary memory copies. In earlier versions of the language, copies were unavoidable in certain situations. A *move* operation transfers ownership of a resource from one object to the next without making a copy. Some classes own resources such as heap memory, file handles, and so on. When you implement a resource-owning class, you can define a *move constructor* and *move assignment operator* for it. The compiler chooses these special members during overload resolution in situations where a copy isn't needed. The Standard Library container types invoke the move constructor on objects if one is defined. For more information, see [Move Constructors and Move Assignment Operators (C++)](move-constructors-and-move-assignment-operators-cpp.md). +Modern C++ provides *move semantics*, which make it possible to eliminate unnecessary memory copies. In earlier versions of the language, copies were unavoidable in certain situations. A *move* operation transfers ownership of a resource from one object to the next without making a copy. Some classes own resources such as heap memory, file handles, and so on. + +When you implement a resource-owning class, you can define a *move constructor* and *move assignment operator* for it. The compiler chooses these special members during overload resolution in situations where a copy isn't needed. The Standard Library container types invoke the move constructor on objects if one is defined. For more information, see [Move Constructors and Move Assignment Operators (C++)](move-constructors-and-move-assignment-operators-cpp.md). ## Lambda expressions -In C-style programming, a function can be passed to another function by using a *function pointer*. Function pointers are inconvenient to maintain and understand. The function they refer to may be defined elsewhere in the source code, far away from the point at which it's invoked. Also, they're not type-safe. Modern C++ provides *function objects*, classes that override the [`operator()`](function-call-operator-parens.md) operator, which enables them to be called like a function. The most convenient way to create function objects is with inline [lambda expressions](../cpp/lambda-expressions-in-cpp.md). The following example shows how to use a lambda expression to pass a function object, that the `find_if` function will invoke on each element in the vector: +In C-style programming, a function can be passed to another function by using a *function pointer*. Function pointers are inconvenient to maintain and understand. The function they refer to might be defined elsewhere in the source code, far away from the point at which it's invoked. Also, they're not type-safe. + +Modern C++ provides *function objects*, classes that override the [`operator()`](function-call-operator-parens.md) operator, which enables them to be called like a function. The most convenient way to create function objects is with inline [lambda expressions](../cpp/lambda-expressions-in-cpp.md). The following example shows how to use a lambda expression to pass a function object that the `find_if` function invokes on each element in the vector: ```cpp std::vector v {1,2,3,4,5}; @@ -186,7 +203,7 @@ In C-style programming, a function can be passed to another function by using a auto result = find_if(begin(v), end(v), [=](int i) { return i > x && i < y; }); ``` -The lambda expression `[=](int i) { return i > x && i < y; }` can be read as "function that takes a single argument of type **`int`** and returns a boolean that indicates whether the argument is greater than `x` and less than `y`." Notice that the variables `x` and `y` from the surrounding context can be used in the lambda. The `[=]` specifies that those variables are *captured* by value; in other words, the lambda expression has its own copies of those values. +The lambda expression `[=](int i) { return i > x && i < y; }` can be read as "function that takes a single argument of type `int` and returns a boolean that indicates whether the argument is greater than `x` and less than `y`." Notice that the variables `x` and `y` from the surrounding context can be used in the lambda. The `[=]` specifies that those variables are *captured* by value. In other words, the lambda expression has its own copies of those values. ## Exceptions @@ -198,11 +215,11 @@ Use the C++ Standard Library [`std::atomic`](../standard-library/atomic-structur ## `std::variant` (C++17) -Unions are commonly used in C-style programming to conserve memory by enabling members of different types to occupy the same memory location. However, unions aren't type-safe and are prone to programming errors. C++17 introduces the [`std::variant`](../standard-library/variant-class.md) class as a more robust and safe alternative to unions. The [`std::visit`](../standard-library/variant-functions.md#visit) function can be used to access the members of a `variant` type in a type-safe manner. +Unions are commonly used in C-style programming to conserve memory by enabling members of different types to occupy the same memory location. Unions aren't type-safe and are prone to programming errors. C++17 introduces the [`std::variant`](../standard-library/variant-class.md) class as a more robust and safe alternative to unions. The [`std::visit`](../standard-library/variant-functions.md#visit) function can be used to access the members of a `variant` type in a type-safe manner. ## See also -[C++ Language Reference](../cpp/cpp-language-reference.md)\ -[Lambda Expressions](../cpp/lambda-expressions-in-cpp.md)\ -[C++ Standard Library](../standard-library/cpp-standard-library-reference.md)\ -[Microsoft C/C++ language conformance](../overview/visual-cpp-language-conformance.md) +- [C++ Language Reference](../cpp/cpp-language-reference.md) +- [Lambda Expressions](../cpp/lambda-expressions-in-cpp.md) +- [C++ Standard Library](../standard-library/cpp-standard-library-reference.md) +- [Microsoft C/C++ language conformance](../overview/visual-cpp-language-conformance.md) From edb4e5b35af37d83fe030491428211c8d490d3cc Mon Sep 17 00:00:00 2001 From: Tim Sherer <28902327+TimShererWithAquent@users.noreply.github.com> Date: Fri, 29 May 2026 08:40:09 -0700 Subject: [PATCH 510/619] Freshness Edit: C++ and C content: AddressSanitizer (#6702) * Freshness. * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Minor edit. * Lightboxes. * Fix formatting of image syntax in asan.md * Incorporate feedback. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/sanitizers/asan.md | 91 +++++++++--------- .../asan-cmake-configuration-drop-down.png | Bin 44747 -> 28751 bytes docs/sanitizers/media/asan-cmake-error-f5.png | Bin 158303 -> 76144 bytes .../asan-command-basic-global-overflow.png | Bin 8985 -> 6895 bytes .../media/asan-global-buffer-overflow-f5.png | Bin 32976 -> 35337 bytes .../media/asan-project-system-dialog.png | Bin 79495 -> 45906 bytes 6 files changed, 46 insertions(+), 45 deletions(-) diff --git a/docs/sanitizers/asan.md b/docs/sanitizers/asan.md index 63d7c1cb7f2..1972e7e502e 100644 --- a/docs/sanitizers/asan.md +++ b/docs/sanitizers/asan.md @@ -1,17 +1,18 @@ --- title: "AddressSanitizer" -description: "Top-level description of the AddressSanitizer feature for Microsoft C/C++." -ms.date: 09/06/2024 +description: "Learn how to locate hard-to-find bugs with this top-level description of the AddressSanitizer feature for Microsoft C/C++." +ms.date: 05/28/2026 ms.topic: overview f1_keywords: ["AddressSanitizer"] helpviewer_keywords: ["ASan", "AddressSanitizer", "Address Sanitizer", "compiling for AddressSanitizer"] +#customer intent: As a C/C++ developer, I want to understand the advantages of using Address Sanitizer to avoid hard-to-find bugs in my code by using Visual Studio or the developer command line. --- # AddressSanitizer ## Overview -The C & C++ languages are powerful, but can suffer from a class of bugs that affect program correctness and program security. Starting in Visual Studio 2019 version 16.9, the Microsoft C/C++ compiler (MSVC) and IDE supports the *AddressSanitizer* sanitizer. AddressSanitizer (ASan) is a compiler and runtime technology that exposes many hard-to-find bugs with **zero** false positives: +The C and C++ languages are powerful, but can suffer from a class of bugs that affect program correctness and program security. Starting in Visual Studio 2019 version 16.9, the Microsoft C/C++ compiler (MSVC) and IDE support the *AddressSanitizer* sanitizer. AddressSanitizer (ASan) is a compiler and runtime technology that exposes many hard-to-find bugs with **zero** false positives: - [Alloc/dealloc mismatches](error-alloc-dealloc-mismatch.md) and [`new`/`delete` type mismatches](error-new-delete-type-mismatch.md) - [Allocations too large for the heap](error-allocation-size-too-big.md) @@ -35,7 +36,7 @@ Use AddressSanitizer to reduce your time spent on: AddressSanitizer, originally [introduced by Google](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany), provides runtime bug-finding technologies that use your existing build systems and existing test assets directly. -AddressSanitizer is integrated with the Visual Studio project system, the CMake build system, and the IDE. Projects can enable AddressSanitizer by setting a project property, or by using one extra compiler option: **`/fsanitize=address`**. The new option is compatible with all levels of optimization and configurations of x86 and x64. However, it isn't compatible with [edit-and-continue](/visualstudio/debugger/edit-and-continue-visual-cpp), [incremental linking](../build/reference/incremental-link-incrementally.md), and [`/RTC`](../build/reference/rtc-run-time-error-checks.md). +AddressSanitizer is integrated with the Visual Studio project system, the CMake build system, and the IDE. Projects can enable AddressSanitizer by setting a project property, or by using one extra compiler option: `/fsanitize=address`. The new option is compatible with all levels of optimization and configurations of x86 and x64. However, it isn't compatible with [edit-and-continue](/visualstudio/debugger/edit-and-continue-visual-cpp), [incremental linking](../build/reference/incremental-link-incrementally.md), and [`/RTC`](../build/reference/rtc-run-time-error-checks.md). Starting in Visual Studio 2019 version 16.9, Microsoft's AddressSanitizer technology enables integration with the Visual Studio IDE. The functionality can optionally create a crash dump file when the sanitizer finds a bug at runtime. If you set the `ASAN_SAVE_DUMPS=MyFileName.dmp` environment variable before you run your program, a crash dump file is created with extra metadata for efficient [post-mortem debugging](#crash-dumps) of precisely diagnosed bugs. These dump files make extended use of AddressSanitizer easier for: @@ -45,24 +46,24 @@ Starting in Visual Studio 2019 version 16.9, Microsoft's AddressSanitizer techno ### Install AddressSanitizer -C++ workloads in the Visual Studio Installer install the AddressSanitizer libraries and IDE integration by default. However, if you're upgrading from an older version of Visual Studio 2019, use the Installer to enable ASan support after the upgrade. You can open the installer from the Visual Studio main menu via **Tools** > **Get Tools and Features...** Choose **Modify** on your existing Visual Studio installation from the Visual Studio Installer to get to the following screen. +C++ workloads in the Visual Studio Installer install the AddressSanitizer libraries and IDE integration by default. However, if you're upgrading from an older version of Visual Studio 2019, use the Installer to enable ASan support after the upgrade. You can open the installer from the Visual Studio main menu by selecting **Tools** > **Get Tools and Features**. Choose **Modify** on your existing Visual Studio installation from the Visual Studio Installer to get to the following screen. -:::image type="content" source="media/asan-installer-option.png" alt-text="Screenshot of the Visual Studio Installer. The C++ AddressSanitizer component, under the Optional section, is highlighted."::: +:::image type="content" source="media/asan-installer-option.png" alt-text="Screenshot showing the Visual Studio Installer with the C++ AddressSanitizer component, under the Optional section, highlighted." lightbox="media/asan-installer-option.png"::: > [!NOTE] -> If you run Visual Studio on the new update but haven't installed ASan, you'll get an error when you run your code: +> If you run Visual Studio on the new update but haven't installed ASan, you get an error when you run your code: > > LNK1356: cannot find library 'clang_rt.asan_dynamic-i386.lib' ### Use AddressSanitizer -Start building your executables with the **`/fsanitize=address`** compiler option using any of these common development methods: +Start building your executables with the `/fsanitize=address` compiler option using any of these common development methods: - Command line builds - Visual Studio project system - Visual Studio CMake integration - Recompile, then run your program normally. This code generation exposes [many types of precisely diagnosed bugs](#error-types). These errors get reported in three ways: in the debugger IDE, on the command line, or stored in a [new type of dump file](#crash-dumps) for precise off-line processing. +Recompile, then run your program normally. This code generation exposes [many types of precisely diagnosed bugs](#error-types). These errors get reported in three ways: in the debugger IDE, on the command line, or stored in a [new type of dump file](#crash-dumps) for precise off-line processing. Microsoft recommends you use AddressSanitizer in these three standard workflows: @@ -78,14 +79,14 @@ Microsoft recommends you use AddressSanitizer in these three standard workflows: - [Azure OneFuzz](https://www.microsoft.com/security/blog/2020/09/15/microsoft-onefuzz-framework-open-source-developer-tool-fix-bugs/) - Local Machine -This article covers the information you require to enable the three workflows listed previously. The information is specific to the **platform-dependent** Windows 10 (and later) implementation of AddressSanitizer. This documentation supplements the excellent documentation from [Google, Apple, and GCC](#external-docs) already published. +This article covers the information you require to enable the three workflows listed previously. The information is specific to the *platform-dependent* Windows 10 (and later) implementation of AddressSanitizer. This documentation supplements the excellent documentation from [Google, Apple, and GCC](#external-docs) already published. > [!NOTE] -> Support is limited to x86 and x64 on Windows 10 and later. [Send us feedback](https://aka.ms/vsfeedback/browsecpp) on what you'd like to see in future releases. Your feedback helps us prioritize other sanitizers for the future, such as **`/fsanitize=thread`**, **`/fsanitize=leak`**, **`/fsanitize=memory`**, **`/fsanitize=undefined`**, or **`/fsanitize=hwaddress`**. You can [report bugs here](https://aka.ms/feedback/report?space=62) if you run into issues. +> Support is limited to x86 and x64 on Windows 10 and later. [Send us feedback](https://aka.ms/vsfeedback/browsecpp) on what you'd like to see in future releases. Your feedback helps us prioritize other sanitizers for the future, such as `/fsanitize=thread`, `/fsanitize=leak`, `/fsanitize=memory`, `/fsanitize=undefined`, or `/fsanitize=hwaddress`. You can [report bugs here](https://aka.ms/feedback/report?space=62) if you run into issues. ## Use AddressSanitizer from a developer command prompt -Use the **`/fsanitize=address`** compiler option in a [developer command prompt](../build/building-on-the-command-line.md#developer_command_prompt_shortcuts) to enable compiling for the AddressSanitizer runtime. The **`/fsanitize=address`** option is compatible with existing C++ or C optimization levels (for example, `/Od`, `/O1`, `/O2`, and `/O2 /GL`). The option works with static and dynamic CRTs (for example, `/MD`, `/MDd`, `/MT`, and `/MTd`). It works whether you create an EXE or a DLL. Debug information is required for optimal formatting of call stacks. In the following example, `cl /fsanitize=address /Zi` is passed on the command line. +Use the `/fsanitize=address` compiler option in a [developer command prompt](../build/building-on-the-command-line.md#developer_command_prompt_shortcuts) to enable compiling for the AddressSanitizer runtime. The `/fsanitize=address` option is compatible with existing C++ or C optimization levels, for example, `/Od`, `/O1`, `/O2`, and `/O2 /GL`. The option works with static and dynamic CRTs (for example, `/MD`, `/MDd`, `/MT`, and `/MTd`). It works whether you create an EXE or a DLL. Debug information is required for optimal formatting of call stacks. In the following example, `cl /fsanitize=address /Zi` is passed on the command line. > [!NOTE] > AddressSanitizer doesn't support Profile-guided optimization (PGO). AddressSanitizer shouldn't be used in production. @@ -105,15 +106,15 @@ int main() { } ``` -Using a developer command prompt for Visual Studio 2019, compile *`main.cpp`* using `/fsanitize=address /Zi` +Using a developer command prompt for Visual Studio 2019, compile *basic-global-overflow.cpp* using `/fsanitize=address /Zi`. -:::image type="content" source="media/asan-command-basic-global-overflow.png" alt-text="Screenshot of a command prompt showing the command to compile with AddressSanitizer options. The command is: `cl main.cpp -faanitize-address /Zi`."::: +:::image type="content" source="media/asan-command-basic-global-overflow.png" alt-text="Screenshot showing a command prompt with the command `cl basic-global-overflow.cpp /fsanitize=address /Zi`."::: -When you run the resulting *`main.exe`* at the command line, it creates the formatted error report that follows. +When you run the resulting *`basic-global-overflow.exe`* at the command line, it creates the formatted error report that follows. Consider the overlaid, red boxes that highlight seven key pieces of information: -:::image type="complex" source="media/asan-basic-global-overflow.png" alt-text="Screenshot of the debugger showing a basic global overflow error."::: +:::image type="complex" source="media/asan-basic-global-overflow.png" alt-text="Screenshot of the debugger showing a basic global overflow error." lightbox="media/asan-basic-global-overflow.png"::: There are seven red highlights identifying key pieces of information in the error report. They map to the numbered list that follows this screenshot. The numbered boxes highlight the following text: 1) global-buffer-overflow 2) WRITE of size 4 3) basic-global-overflow.cpp 7 4) to the right of global variable 'x' defined in 'basic-global-overflow.cpp:3:8' 5) of size 400 6) 00 00[f9]f9 f9 7) Box is in the shadow byte legend area and contains Global redzone: f9 :::image-end::: @@ -122,13 +123,13 @@ There are seven red highlights identifying key pieces of information in the erro 1. The memory safety bug is a global-buffer-overflow. 2. There were **4 bytes** (32 bits) **stored** outside any user-defined variable. 3. The store took place in function `main()` defined in file `basic-global-overflow.cpp` on line 7. -4. The variable named `x` gets defined in basic-global-overflow.cpp on line 3, starting at column 8 -5. This global variable `x` is of size 400 bytes -6. The exact [shadow byte](./asan-shadow-bytes.md) describing the address targeted by the store had a value of `0xf9` -7. The shadow byte legend says `0xf9` is an area of padding to the right of `int x[100]` +4. The variable named `x` gets defined in basic-global-overflow.cpp on line 3, starting at column 8. +5. This global variable `x` is of size 400 bytes. +6. The exact [shadow byte](./asan-shadow-bytes.md) describing the address targeted by the store had a value of `0xf9`. +7. The shadow byte legend says `0xf9` is an area of padding to the right of `int x[100]`. > [!NOTE] -> The function names in the call stack are produced through the [LLVM symbolizer](https://llvm.org/docs/CommandGuide/llvm-symbolizer.html) that's invoked by the runtime upon error. +> When AddressSanitizer reports an error, the ASan runtime invokes the [LLVM symbolizer](https://llvm.org/docs/CommandGuide/llvm-symbolizer.html) to produce the function names in the call stack. ## Use AddressSanitizer in Visual Studio @@ -136,7 +137,7 @@ AddressSanitizer is integrated with the Visual Studio IDE. To turn on AddressSan :::image type="content" source="media/asan-project-system-dialog.png" alt-text="Screenshot of the Property Pages dialog showing the Enable AddressSanitizer property."::: -To build from the IDE, opt out of any [incompatible options](./asan-known-issues.md#incompatible-options). For an existing project compiled by using **`/Od`** (or Debug mode), you may need to turn off these options: +To build from the IDE, opt out of any [incompatible options](./asan-known-issues.md#incompatible-options). For an existing project compiled by using `/Od` (or Debug mode), you might need to turn off these options: - Turn off [`/ZI` (Debug Information Format)](../build/reference/z7-zi-zi-debug-information-format.md) - Turn off [`/RTC1` (runtime checks)](../build/reference/rtc-run-time-error-checks.md) @@ -144,21 +145,21 @@ To build from the IDE, opt out of any [incompatible options](./asan-known-issues To build and run the debugger, press **F5**. An **Exception Thrown** window appears in Visual Studio: -:::image type="content" source="media/asan-global-buffer-overflow-F5.png" alt-text="Screenshot of the debugger showing a global buffer overflow error."::: +:::image type="content" source="media/asan-global-buffer-overflow-f5.png" alt-text="Screenshot of the debugger showing a global buffer overflow error."::: ## Use AddressSanitizer from Visual Studio: CMake To enable AddressSanitizer for a [CMake project created to target Windows](../build/cmake-projects-in-visual-studio.md), follow these steps: -1. Open the **Configurations** dropdown in the toolbar at the top of the IDE and select **Manage Configurations**. +1. Open the **Configurations** dropdown menu in the toolbar at the top of the IDE and select **Manage Configurations**. - :::image type="content" source="media/asan-cmake-configuration-drop-down.png" alt-text="Screenshot of the CMake configuration dropdown. It displays options like x64 Debug, x64 Release, and so on. At the bottom of the list, Manage Configurations... is highlighted."::: + :::image type="content" source="media/asan-cmake-configuration-drop-down.png" alt-text="Screenshot showing the CMake configuration dropdown menu that displays options like x64 Debug, x64 Release, and, at the bottom of the list, Manage Configurations... is highlighted."::: - That opens the CMake Project Settings editor, which reflects the contents of your project's `CMakeSettings.json` file. + That action opens the CMake Project Settings editor, which reflects the contents of your project's `CMakeSettings.json` file. -1. Choose the **Edit JSON** link in the editor. This selection switches the view to raw JSON. +1. Choose the **Edit JSON** link. This selection switches the view to raw JSON. -1. Add the following snippet to the `"windows-base"` preset, inside `"configurePresets":` to turn on AddressSanitizer: +1. To turn on AddressSanitizer, add the following snippet to the `"windows-base"` preset, inside `"configurePresets":`. ```json "environment": { @@ -193,15 +194,15 @@ To enable AddressSanitizer for a [CMake project created to target Windows](../bu }, ``` -1. AddressSanitizer doesn't work if edit-and-continue is specified (`/ZI`), which is enabled by default for new CMake projects. In `CMakeLists.txt`, comment out (prefix with `#`) the line that starts with `set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT"`. That line looks something like this, afterwards: +1. AddressSanitizer doesn't work if edit-and-continue is specified (`/ZI`), which is enabled by default for new CMake projects. In `CMakeLists.txt`, comment out (prefix with `#`) the line that starts with `set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT"`. That line looks something like this: ```json # set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$,$>,$<$:EditAndContinue>,$<$:ProgramDatabase>>") ``` -1. Enter **Ctrl+S** to save this JSON file +1. Use **Ctrl**+**S** to save this JSON file. 1. Clear your CMake cache directory and reconfigure by choosing from the Visual Studio menu: **Project** > **Delete cache and Reconfigure**. Choose **Yes** when the prompt appears to clear your cache directory and reconfigure. -1. Replace the contents of the source file (for example, `CMakeProject1.cpp`) with the following: +1. Replace the contents of the source file, for example, `CMakeProject1.cpp`, with the following code: ```cpp // CMakeProject1.cpp : Defines the entry point for the application @@ -222,13 +223,13 @@ To enable AddressSanitizer for a [CMake project created to target Windows](../bu This screenshot captures the error from the CMake build. - :::image type="content" source="media/asan-cmake-error-f5.png" alt-text="Screenshot of an exception that says: Address Sanitizer Error: Global buffer overflow. In the background, address sanitizer output is visible in command window."::: + :::image type="content" source="media/asan-cmake-error-f5.png" alt-text="Screenshot showing an exception that says: Address Sanitizer Error: Global buffer overflow." lightbox="media/asan-cmake-error-f5.png"::: ## AddressSanitizer crash dumps We introduced new functionality in AddressSanitizer for use with cloud and distributed workflows. This functionality allows offline viewing of an AddressSanitizer error in the IDE. The error gets overlaid on top of your source, just as you would experience in a live debug session. -These new dump files can lead to efficiencies when analyzing a bug. You don't need to rerun, or find remote data or look for a machine that went off-line. +These new dump files can lead to efficiencies when you analyze a bug. You don't need to rerun, or find remote data or look for a machine that went off-line. To produce a new type of dump file that can be viewed in Visual Studio on another machine at a later date: @@ -236,13 +237,13 @@ To produce a new type of dump file that can be viewed in Visual Studio on anothe set ASAN_SAVE_DUMPS=MyFileName.dmp ``` -Starting with Visual Studio 16.9 you can display **a precisely diagnosed error**, stored in your *`*.dmp`* file, on top of your source code. +Starting with Visual Studio 16.9, you can display *a precisely diagnosed error*, stored in your `*.dmp` file, on top of your source code. [This new crash dump functionality](./asan-offline-crash-dumps.md) enables cloud-based workflows, or distributed testing. It can also be used to file a detailed, actionable bug in any scenario. ## Example errors -AddressSanitizer can detect several kinds of memory misuse errors. Here are many of the runtime errors reported when you run your binaries compiled by using the AddressSanitizer (**`/fsanitize=address`**) compiler option: +AddressSanitizer can detect several kinds of memory misuse errors. Here are many of the runtime errors reported when you run your binaries compiled by using the AddressSanitizer (`/fsanitize=address`) compiler option: - [`alloc-dealloc-mismatch`](error-alloc-dealloc-mismatch.md) - [`allocation-size-too-big`](error-allocation-size-too-big.md) @@ -268,12 +269,12 @@ For more information about the examples, see [AddressSanitizer error examples](. MSVC currently differs from Clang 12.0 in two functional areas: -- **stack-use-after-scope** - this setting is on by default and can't be turned off. -- **stack-use-after-return** - this functionality requires an extra compiler option, and isn't available by only setting `ASAN_OPTIONS`. +- **stack-use-after-scope**: this setting is on by default and can't be turned off. +- **stack-use-after-return**: this functionality requires an extra compiler option, and isn't available by only setting `ASAN_OPTIONS`. These decisions were made to reduce the test matrix required to deliver this first version. -Features that could lead to false positives in Visual Studio 2019 16.9 weren't included. That discipline enforced the effective testing integrity necessary when considering interop with decades of existing code. More capabilities may be considered in later releases: +Features that could lead to false positives in Visual Studio 2019 16.9 weren't included. That discipline enforced the effective testing integrity necessary when considering interop with decades of existing code. More capabilities might be considered in later releases: - [Initialization Order Fiasco](https://github.com/google/sanitizers/wiki/AddressSanitizerInitializationOrderFiasco) - [Intra Object Overflow](https://github.com/google/sanitizers/wiki/AddressSanitizerIntraObjectOverflow) @@ -294,10 +295,10 @@ This seminal paper on the [AddressSanitizer (external)](https://www.usenix.org/s ## See also -[AddressSanitizer known issues](./asan-known-issues.md)\ -[AddressSanitizer build and language reference](./asan-building.md)\ -[AddressSanitizer runtime reference](./asan-runtime.md)\ -[AddressSanitizer shadow bytes](./asan-shadow-bytes.md)\ -[AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md)\ -[AddressSanitizer debugger integration](./asan-debugger-integration.md)\ -[AddressSanitizer error examples](./asan-error-examples.md) +- [AddressSanitizer known issues](./asan-known-issues.md) +- [AddressSanitizer build and language reference](./asan-building.md) +- [AddressSanitizer runtime reference](./asan-runtime.md) +- [AddressSanitizer shadow bytes](./asan-shadow-bytes.md) +- [AddressSanitizer cloud or distributed testing](./asan-offline-crash-dumps.md) +- [AddressSanitizer debugger integration](./asan-debugger-integration.md) +- [AddressSanitizer error examples](./asan-error-examples.md) diff --git a/docs/sanitizers/media/asan-cmake-configuration-drop-down.png b/docs/sanitizers/media/asan-cmake-configuration-drop-down.png index dea084d70505e6366e11ba3b66f7c4d47473a9ce..b7ea695f4ca04b5924906a237a3d2e327e4264a7 100644 GIT binary patch literal 28751 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 Tcn9!QE+8c#CtmdS)A#=a5Qcn- literal 44747 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

      WG`m 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 literal 158303 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 z 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 G*Z&veQm;Ay diff --git a/docs/sanitizers/media/asan-global-buffer-overflow-f5.png b/docs/sanitizers/media/asan-global-buffer-overflow-f5.png index 6aa808aa5a5cd1669e283739e0e3083a7f6f242d..1b7cc39c1fcb8c9d32122948bb4e3f8ab1e3479c 100644 GIT binary patch literal 35337 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 literal 32976 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 BXp{f| diff --git a/docs/sanitizers/media/asan-project-system-dialog.png b/docs/sanitizers/media/asan-project-system-dialog.png index 61d01b04fd9fcdecf07b7a1f98774da289431410..0ab58b42e4e43670bf08a4e58c7d4c5f4db7e301 100644 GIT binary patch literal 45906 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 literal 79495 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�i8cNX3$PFP(pT%(WUUc^lG%ImTL0W^}T=Y4eZDQnoXGrPU&+I_!V%+AA# zu5?~g*0bsHI*0G+8 zG|V@>o5bGo;bxzXV7JjS3MfQf^*Y>V4XEwDiyU`WZ~6zB%^%OF6DV9<_32iazLPwf z-`5pL=O3wA6^_QJYzVjpF)U3P6k<4O^o<9QN8_HhULtdHGFgO?-ycTCuLly{E!4>c zhTgwSugxXQjw=VAna8bUuI_2bVmk8Zi0aDqUK-UrU%PC)^v^N6AC6;&^I;8@WXbZc z)(}of-G=Rtzhbl{bAR4HIoXwa*_IQn5~Z5m({~*uF5b2_vFrWP@jM28LII|`#6j9O z!pHNwH1XD#Y1)L73KKBLlVE|cADB3kp|=xH1U6Z`o6Wd_e*@#6X~U4A%pwnPSR)zv zgK!tn7=^%%cR$7Z)qXc@$dWOM6>t^pf}VeeE4|x{$ke?Z2<8k<>gPeCG5x$Cpw&!6 z;)m^RoT%UowzHcZlUO+LF=?wOAt5Cs4j4dXgt}9`FhWOL>)vm$Wdi2?O=#@=q!v!G5+)1%8V`}vt45gGaYj1khj5Rbg zr~^F$&_CFjy|X|A039xuFPlDCWzg4n(tJ3ng~{mS`E=d~NCgA6J>=7`sejZFegS0St>VSHy~XgI#MHg>f?HKm0~Odj|0 z;>E*X$^^=hj^ zVLU1+DMm1(X>S;g$G(&fpu+u7W1}>^fi{py&ffX|^_c(v$-n<4GXB4mT=GCh?q5M1U26*{qzTPrF)uH^`}_NCWwtFm zvxH;TU#%V^O1sLFJe$&i#5+a}Ut>*vmpIhX#5mm4{OLCFrYhd(GuE%k4SuANjuQ(D z5+)`TT8F=;_+q4&id-9g;+MGgi|L7JO8g$m-6X3O|7Z=EDL`wW;c4I8&SZpFI%&a^ zYlG~l7XPLsCU;`w$Sy7~F?c4$E}QFUmsdp`eKs~q(Iw$?GUBpGc1H=#2n}>p1`L#H zPr67;pfE!Ein2I(&m+2u;x;dOB`%vO!<{rsYtceg_)%m<1Q?&*q!#}aF>9Gq4ngmq z^8ISdbk(1IpNLDtSZpcVrB)OOGzAUxDP5e5FBr;$(5X(Pl4CaS*PQfE;^J_|JRnz}R>b?qOLwx3`gfPGNCqW16N6K4b{rL!HaaI1Qd0!-o5INJ zf|-~Rah3z~v?SSZ-IbM;MUE}=a>qG{EA>L>oluZ=PPQ*qmn!2-U??c4EbU7NH1W+2 z-GNaju}!ofiJm4CRAov0jR12zO?zIU=HTQsd4KT^na2YEcSH3}zrOckeSB@XXMz)a z;mP8t$1di6i4bf&sTLdSp^Ae_7tbj&KOj_kt5IpwRVZdxy%9TE!JVA#JA41d(d-?Bv z`mcw(qKqEd(OSMlrE_T@I`0|$+%KJKNx zvaW*x1>r{s3s%?uYRJiYFSr!dtfqc24)db-9Ajt2Wp^mA%&o%1QS*&*7L>D?HQO=q zM%9dsuBT0dTlr{K{28YM#n%W&glcZ;OViI0`CZdm9bowivQnZz2W1FDMTra;VDemw z&;K(yCvDFi6%P^w*sKooH@tt@EW)?B3yYSF9Tm{`E{oj{I4AQBr{V3BAOwe$x*}fd;j`tI7v^zm8L2vJP^_4W1TVdHV>+~LViY-+x7rlR)0Po)Xh?Re zK*!XIOki0wyd{I#=WiHkwB3?Yjb~O|HkC?5r71&dTQ>HUs{Eazx!V6YQXv~~#E9t> zQA$^8ZV?7+ekVO*u2f-}R5Cp zWBv3W&o5Rx-=r>+Jn^_B39;OH`Bl$(WLrGH=aUd2dT>Nqw8f{f{9%^mlU=26{TU{- z^(`#CoRXhi)ns0RS*FTP?*w@X#5(<4rjRb4C#(W@t@TMFA5$JM_;zm9%F5-8 zIn^lV2D`xf3dk_#n@H>KD4X>=iZF}+5QH4YP|g9fr-81E(|B-JO&)%ziuEQ!mz4zD z>b)~!`L#e<$q(|a17EfUoC}w@%h(f;>CVA`k<68%q;dmR=>?-4q^0Rq&;AZTD)MMi zHz)?xY8;WU{)F1*mEXTCJ*q)8_pHNT-;R%@3_dlDWEi8m*plK1s})lt6<} z(g~rbZNs^r)JR=`bjOeeUUEi&wq97n9CmBKD!Y+=urEu4#iN0Z66AH&Pd%YL^1_m2= zd(XrBxP$+kY*vH8fj=tf}7R#TXKtuhbP8$7!EUsw#`oCP;JOK}Ax%dj=Fog@zRe#EH$Mn}i~ zC)?fJEoJRj16cQiMdWYL7y&A?gz85qfs6Gqvvp(dC=eM(IT@UJwX|m5L%p4Gs;9>y?;<^d*HwT5I zm`UNh4J}%S;%&d%qpiW!FI>FF3>P!SK6VO$8)>O{8$we^8Ia(Kaa&*6gP!dPK~!XX zvm%9@(s_5hDo!V6fdWWx3wHu-Hr%O{&x8_I{>5gA;RIo&GgX^eF&upmkTmUU8}7}~ zs~3Q6Ju>&%6fqtK)_o%)Vj)YQgTJ`QIL{YNOkOF&qR9S4g|Ql}xgO7{#Do_j49P)l z-7hEDvlB%;J?B8m=7(D?8Y@%t{n`490sD5d_&BRd-)!2+f0inmP3)0Z<7Kp)9Of^! z&!R*m1*+utsfh`_)lbLxnTg@~f-#ChUp{%(9)6uNei`nN0rXR_shu<#<$5+ii-X%E ziKSJL5zH9;$Ul9Yuz!dcFAh|`=Q;W=(+W#0=yE$D$QU|&2UAj8ImUrK`nhj%7p1Bw zx5s9WPbFnEM9UJC9k@SVrnjH%TG$ru@E#Xt&1w+k^L0TTrwtzYD;0N!qrMGs7P6s1 z#XwsID^qttN6EaAa~B)q2KmxJx;g>N$#cW13!AUn2#y*nR259qyuF-gkDRNQnHFB! znm-q6-`{>8OCO9%6t4B)MT+~jsGkOC68)ScG7LCxj<0i0F2YM!X_;VH7`E~`zMi6g z4tVkOj$_E!L?~Qje+gL_(mC(##WtM4A{dDXBF6HUnxVZ^)h3Jd$ggIF*S4)V%;Oe~ zzq8z}X8q-3SX%3caGDPdBXup1-4w=(%nsvz4Q;`4@K!BxGt1Y?v-Du%)CG%Nxx6kX zIzj_WyK_oD!bk>(_%cY%QBpm%4ii^IfXZPVnT-P(K;!d^$_cfCI;z%_s?p%-vGWXY z-sO^5=+dtgwN&Dqoz(Qu5d{uWwsas{jx7_ry`{tYcE-U;^uB)%!kr`ocr;gx5LKyR zpLw(Gt0{|4^?xhqxx%5vdgoT*u}e0c+aeIQ#51~2%^l{{qAn_7(g6LX9Gq#cEzGEV zbooU}jMVXFqQuw%c~QyT?)h*9cy(6_`B`6v$RH`tYM+!d3~JD_OQyNG-&DvU;~fJe zPPhIsX@Fje`UM$2HvAUee=yxsp~bTKhx0=8LF*hUDbevik++Nw$64I}2e{ytiyBnM z#W@#3ekeMkhSCiLd;`Er1feQexj@a5?Q1=GQvMP7cW+>FXY+868rurFL@G*IRh%Px zl=4`pA*+}h<74f70I@O^3*FI3n*M1O5a6fBwLf@Wual1B=@a)8s&fFaTnm@1P1n zHf%Hi#UKZOA0Y$47q&0(&^*8akQTpKMHiG7-hcQQEWsXaS~0MtS3jjpa5%IMK-1FT zGVk>wyG|sgL7g_q%yz7ipE&P5ARS&I1G+0hT9S=#DS;7njtkzYmfU@H$G#EUFW;L@f5b3mqL zqwxm!f;#nl10{BFY>a}RKeM${;COmld2(43L%al0{pD=0sNk(Eb6jSks!&#c(DmOJ zkhDRtb59RzsM7eAx=KP-=z5MYH>=cawT(L#0HdWQSV&NY3Kwc`k=%WmgKyf9lz3DG zKgi1;^S9U7<6$E8+7$f(D!HXUIQ1O^nrI|mYQD}Q(n*`*r3@EPx_@Nn6GV0z>x8)l z4-9W9$){zwh;1lI+PZG#xoX9Ua(`A?3=%2Psg5kDK8jAu)XjjqErKb?`2(AK!QzV4 znJ~Tzo@J1Tp^G&p*+4O`-dxK~^LNB4^;Ajyc<06;UmG1*`#h)qDN-RjQ>`*7B%p0k zI4ivk=11Q|c?A~_I$I~bey*4NA2}L{0yfOA`_b3sEcxih@r6ci^;qX;zxOtdM&wmb zd16vp>*w#>_#9l{zcT-3N}R}JQ!ox7_U(>hiAJw_aEHYUZ=)_Q&MCH38?3=d`V#T= zLIVRJ8D=pa-@kH?m0Rwx?pR%9vhb9C&TDJ_M=f*h&0C&YTbjcZ&tYR4n1r%hIZ?pA z;X_<%=A!Bpv)^e(o2~j`nLd;4crHO13%j#2_qxYXNnT`zkKTysB83bBqWk@;;eA#; zDJKVzkdaQn1O|iUz2&wMU0Of*k_j&qcYX;OfYwS!I-j>8yJf^Qh%daDV;4u|{=a7Y z+DU6aj2N+*(jdW2lMW45=e(n{7`SsmMhL!efs9G-Q2Pf;ZNuKyLTrs2G&|-ch=_jo z9}(U7UlILVX`aCTFWhqeg!z&Tb%C`~rpQxv$(LPh{7d7xtFx3k2)o5PI#a}FDiBM#9*Wc-}i(D;BkG(}C1Y=n@C)hu*px+--OXx$QX2#&6x}K2_mf8lV!IN$IBiw3 zPMYIu7PYY)FkS+3a(Rcv)R(5Bgbn)#I?W$}2^&6E;mDzeYrQ=0j@m$%Xfgh-Yv2QZ z+vmCsM#YK2kU93~ix90>yK2jEs!gxmm3WYL8VRJtY%yvH_4EAIdrBKpKk)939O}GM z`yTEr`@ZOe+cHyZ*nV@{{IhvZ!-S|1&_o#%xm=!@=>(}lurI;*= zvh_JxN(9|8F_>`PS`4M5l(KSR)tgr`d99l>ovV1XQVNturg`l9E$3Aac!IYf(=kit z%UGx-t8BCYU)>vExW`uc_I1Vij|Qy{Z#LtSY$q(xV;$|ng|kK%466OQ%eOASHviD( zCpZ5Tn|b*>vqsoM4admyuNAH^)nKvky0cihB!`gMXz;yP?R^2nRL7tOyz%sTLbYfm zUJOS2W~v?6kb%yQL^9`oLX1~7`QBevzX=Axndcc~rE@#mt$E&l(p;sBd{+CfZXEbu z`@mv1w{-kb_3bM4RZ}OmAaEY*SNh+*Uu+U8WB?GmCz-tebk={2r=8zUM$^mr01?9l z8I6JYKL7~*)S~88G>Bm^oBZMfc=JJU5|9c6Q)&^BF-nl5Ly1_ps1s!Y&U%AiE9ugH zal}>noEiG@Qdv(PX(lbH@WDU<8yvClcbUoYe8@VJSExsSyk8#jmoaROlckG80f>sp zTB({TahFmwJVXkC<<^vOI8hyjvg(Bb-g#LW?N2^BAn#k8F*8|)GSA=ORP+9^F%%kZ z*_Xe>BdmIWI~sOEcI3a}R%=PmTvuszaIvhiy(Dxrk-c-#5e{*FsYtyVP`A(bWdLNu z{q#3CI*#svILu9!pUTWLXUI7Qw*O^42QnAI!f5s;(10U5J{ar#c>1)*e}Pyg_VBvT zLQ_ZZ!xt5}Nab2|@sQp*kWWrHPo8B*KecOEi0~xIv~{kR?q3Y0U*PHX+px`{47u6r zW}XF#!?*;c96*OQi zi$jWw3)`9;B6s^=6cgF?3Df+M@hz#pf5q8F+c5&oD&Xm%?q_E&^X8<91%~%(AG<0- zEP1hX*l>4XNth-d6uo&9SfzJJX_(`bj4BwGFToW(F63KG1=T;OM~oC;L!PVRF zOkIUQ0%1UQbDFvKbG9ALtS*%`L!RruhWM{` zSQ#2e$G{nO4gQ{k!#ALz;ZRDz^dhL?uVdov<-(;#JxnvLNH07lF!n;rysT`Oe5gYg zal$dDomkb`*da?Q05*ERjx{7v_~NLl%3x7M(}mS;6fbYhli&P>yCUP@;GuJi7)|c& zOu$x25!=4TgY&Mk@Zs>CD;PP68&~2-OT26DQ6DHs0-`=!h<1gMk%??b+;Nr&5K( z<6p@uf>ngYQ}60N)4SkOHq;`S8B~^Aa@3+`<}=y9zGj*IWamxqhz+y#XqufQLQKqB zH3%zHl52!bgQM_3V&vLLRpHN7b^<{A0pV6!P(`}hF@dbtgwCAp(ud1B^z@n4fKTHv z8#{=%tU!7IV~H$TJWutp#@vi9W$1`(N-?@4NqjhtbsrkX(&iK*IDe&x3vBs}O#18j zs^NuWK3Et~A#?qX;Ghgq(q<>%P%B0m9X2YpZRDI!6@RvTe@J?6dVS+Gm0dxmZWOhjjeVE@|SO!(q#a)q(W?(0g##x8fvTu9vy z(FGS^yD(gAaCc#UPTnfEQRpu~ibryjp;TO2_uz%H^i7#czD2BE;YGFm0voaBC5 zK*0;qSjDIH>s_1Ux@xIg*j_|*{?6NyyXGIMVoe7&CFa?!CU?WLbP(1S#EFsHb|W8@ zUcg1z@!yeeHT_K?&_fO4feCHFf8MR1Q#St{`sR^JR!2BLaKn`N8{?%7411h84U|ta z#W$74}V%x)LmbdUhApU^=5@?`$; zTLy?G-Y&2uEd*LOIH2-AuGm*CMk_i1`?cpgz{BRS`EAw`j5dn# zb5-L7n@}|^BkHua|8qk(vMX^Cq~22~m@JDq{`1|`ppZ7Yc`Se?JdjLyg-l`zVRyO5 zY1p}kKfc!A(F564N|v8)kNt`Qj7d-y37k_lQ%(XL9nC1WJF7K=W?lNFD{guPfJpZ#>I3f829w=>`{;w|Y z=3u7+@ZJ2P(Bj6Q-}LV0J1kgyrghM`YgAlBrf>iuAv!aYNP}L7Io>tiPxU$mkLKSm z*9>O!)S@ZXG=G8IA3M)v5RTpP3e_}^!I1o1%%6m|39nCI%2GDjPG*TlcR=E`b)i)O zxiy@tSp8#%1UDpC9`inaN>*l7W%nfbjBfQj51@J+|CcSm7_EDw8G?H=sjZdexhBZ% zjz@hqM(V**aVbYq93C4`8nX?vEZeOgJ|hv zce6sZBcjGfz+o)YwOv+d1!f-ZVqkiP_{w4toZtKVzd7!Vgo=t}NjetlGqtQE-F_t* zcfkKgxeU9&m0L|GLfl|VJLQ+<=WnGo;LVB0(>AU~`ukDh*21=0^hbolY7(dGyR45i zETwQ+rk`u3RGY9h0M8jkOH2I=;0ZWYS;%2stABAviXY*Fm&^jP4J`@B*)^+`ev@?s zf`X}wMH5{O2MFU`P1I({d4UOa>`@AFcJ>*N1hd1;5Z51S)NRNDu&XE|t#^k!cao)7 z_>}r5LIK^gq<$w^4C6O)t@)HMYnPd?ba(1yy(yJiul(LKvTsV~2N|i9sr(@<%+7n4 zc?reknuzTXfId_6Oyi){L4he;XKa&I|HPwGm9RdGCZsMj8Y*Az_*n!AGW5!RbDfVTMN1(n2U!|b*))aXs`@P?k8&?rqdgiiq(TAN47dPk?p1+yfwZmGz= zznlaeH&pe_#p%(}mGyW#8A)78ojdO#S?xah83*Qjqu+8xL)^GO0ZT)|bCxhI1Y;~{ zlt{Ksw1hV}fj5RNbYkaM5hdm5nF(cj1rA_h@I#D3{#LjXuWbpdwX2Ui){W=|VX8hG)Y#*gT>tYup|;;ARf*he%2+ z`kb3g5#CEUC~7G0^?LiqbmS7eZ|2t+}7roLhpsuT>Ghu_Kc|23;e@_C-mw{3Z2eS zYyd;fG6(o}5H~#DO_O@7u5GJsH8BS1n;5ZdWXMX&Ni!^Q_Z?F(Ir__4{*vEwYv_nj59Eh&xygj?SbJ4@3l7LbIk|(Qu6!fkV5uiB^~m+lQ1HP8m=8AXtFjgJ z%T)u)*~V8JLVqgNvE7g{*{xLOwJpn%6iNW+dct9~;Dj^D-H_J}bFj411e;;`VYE*(GVGV)L*|0Mq>`w8pYe^|!7|3st z*kS-*xjf$)yoOp}M1#w+x zp&v@RQ)%5!WCLDA?}H6NRQTX^U+XZBM^Xtt{`QGa=sfbVfiXxf`FyM+XLDKIYZ(j& zwwo2&0NtJq95zKis09^9+5Vc!{_K|JEDHH(FlW65#c~cHC7JddzQzf-m;% za8@1?o6Gm-f9is4r06mc6wG?Pfvb@eFoZ))HW*sM;xZZq8yV#4W<%}IVe>V^lClqC zLpfp6r%|Y+qZg^V{FazM4QP&QZWfXYR~u8?`82uO?}=44nz8OGi{hg76YW9wcNOt7 zMxDi$xu5`!;_2PkZC;#KFRm1)@`QeJj8{2CG-7AcpcliNj57Q_G^lJz{k2LsO&W;9 z;Q%|cgg``K^c}38zd_`Il4B?E_Bw<{zPv3VY|NW*hel`PNm9%x{7|gq zd`f8$|2a04B}oobA-dWI0}^6Z8gFP(MdC0Yeeyr(znL5Vkp$Nc^*26zpDrmE9T+v1 zwE8@lMxV949mVKOI2f<`qkTd%&nGovSzAfDB@*|;>z(3pA&uoYB2C}o#a~;(R2H3I zjr$JFvX&$WjwF zwWsqpmWgiGhk-;_{-ohG%5;rS?-va}H(+}=$}HtEQi9K%h?x^rc_Xo~)u4IkzOr%( zk8GTve?+ggQXR0Nrz_&RnR2AOtFADZ$-cGvdQKQ)o6!5)fA#_h38wOlHjdpI8r3!E zDO~Zf(>{)2QmTrp*uB~W)+5mI4TAsNky$Z zWaOBMH91jl{=uSHLwx>-i*q<8z8CDNDg(-PzBm+*BtAYk3OS}S@Ynq8EEF)zKM2Kx z>OW!;&*Z43pG^j)$#HS4!Gu#C_mSY-;;wkr97B`XCI%v-7Y}KKOZnXqQczmD175ey z0^rnQkGP~!`bT`x$lYk{g||HWk8}5DuSyh^FAkd%bwTbr)BY3I+ zm`_o^o=+LhTGp}&f9qF1^5#FCM^eJ4Win#Ka;ApeBQQMgul=k8n+Z$ROu}FO`+cc`aNWFtY(ACRh z65nsqEnj}!hr2h4R18S|0_!}~Sjrp)51^9QMw=)VgFLoBh9min50|#qJk1z0L zQ|?IROAsk8V0GfpOHVvO*4>A#3BL7^bDD+6HLtOCTb$Ga{+9)8tVyUvO~PSNu|1qK2&c1(R867(No=<8SBi z0jteFK0Z;k;=Xrh4hAWF>$4PSP{3D&XfW5k%E1U&pKXATqlhtr)k;vR$Pt63g}cTO z=qb=e6xQuCeaAeJjb4641^32%E$HX5O)FZ}W^#8=o}Cifbr+WLmYaX!(6?Hi; ziGgNqZJI#dvbYezZh-dlMpx#FXuytK<8T_%RK7prA`A?S!dN;qHj{eL6^2MrWxDOgUcyM=jcMI+i+}+*XzK6W$ zoQwbJXFV6JHEU+Nx~pqf?b_XAl+NYFSHj>>PdlVc<5Zn7Ujj6cXop8c$MpTHd!vkV ziwi=1Bw5NboJNMDOKj3H>A0Z)y@nS%{dKKQVo3!W9AkU6_?1Q@uaF?F$d9s*WF}b^ zb+p|@tgkGwJZ7D;40up5p|W$Is4nHL9iBrdV?A_*Rowb(SU!_Tc=-9%UH{+)T|oCj z&ST_NK%JovC-?~Mb99vdptaS!!;woQFocDNV63#8)&@19=@g;cLPW_-Y&43Dw@CnZ z5BMq#hWDv{mLHP{A|6|*sDY6Yo5Q{mpnaD#GNPi2dLPw~X?ZGX1j{d?-yDL?w! zxGoABaUe z6Q18dtlpDS6-R`5IUXYWZ~{xy}S6TLfrALF%T(?{QU|&>fXzJ8*sRmCE>3M zO$S^}&+zR1{?Gn;L2`*e-_Lt5#3P%Z({6F8@p=S4ym%IS2;>zeH$1Zj+E{{bqMYncg1yj~doUW+s%PY>M9f@=E&Q(}z6f zq&Ld+ijtD7OHW`nqaobu?EfLBOQWSJCOZQf>K_E_Z;9KCRzp{8O7@ARiIdo3FoNTL zR~#}Yc=Qs{a2ede)%f@zAtR-mxgunKFd}_MfQF%d3xL!qtrS{E___>mj#p9VZHA|r zVzyVY0E9)B?i-`>FU9KK&IfuoJ=B7H3Lv*yS%AYti*m3|;wh!PhcmSt-KG&Fm`hI9Q${dBRde}DfXL|YrdV?6SENA@4r zkUdjQjlN%@kMwMW0{wC=#nd`IP+Vo)ue2KOLq~1d3On(11G+kPmAAEh)cp*Ykjl%o zd0a0bAIknWRG7G)fEqEvqeBJ#G5p0#yRVztvq9>wLu;m4)4|GKf-R9b(sX#N}`z(3s?WnKMhp7?fP@ew~K-B#L90@ z|9B&g5qdF^Ys26~Du%O}>9(OIaPj=0F>!{i((=R!a$Po#&9qj&@@&^~4%dW|EqIOz z8bodztj;^&zN&i1#N_!iB;X^d-AFR&XcH<%6wu#{K9+nno0XD3qW*k0K*M?-?{TV) z?a2qF9_dBQD>a!jG$h9}>|BRO(UMtD$NG0LG<5#X$OpW5(Z(jC)^SwRZ>UErs)AmR z&!=U@_lZ7>#>?v^o@3)L%)Y<0IM&cjMlv~3ev^g}) z7M%MzxkkOB^~PQGKmf_g*{7DM(4$mn-Mkh;*}*WB==bF-4~ulj5Iw32+OO zN?xi9oqDfQ5Nyb43AC2u(}Cy2rDGIrRFyw|UO@!8;F_T06J-D)wvO-d13P7A!4PI% ze&T*+j>ENW#E`K*DYp8sxCYwW$kK1Pqmz&3AB^of?-p+@pYyR1jUAg~S1j6MwZW|c zC4w(_B7%3!wU3Utya*T)m0fB}M=L+Z1O^tI zc0|B@QDr~3eD7WUQLQAD0$YiKOwi5yG^0%SX)S7VZ=269sH3`&?J4zpxtlZb{`WFt zCPFGc4lJkfsyP^{vvf}JV`H6b1#u;kkPIzB+`n!N2p$&%48#xgR0o3ITUPkx zNsiO%L0J#oL5B?F@Ppxp^Azyj<;~fEQEks0j~6%!FHhe$vsjQris)d2I=V(uR0YnQ z@?9;-2m@JoIk2cdC(39Hb)-NX+U0SPNdLMqkB#w+MHf_8vrj{P_YbCPagQoKETU{RrYy5`!=hvOpubQvqF5?=G$jx3S9{W&Lr9Qq}Efte9$(2X+D?^Jc zG02{094OYHxR=A#@06zq8NIw@2Z2DzHZd0)<6JgJH_tvZ0%vKPqa!R49iHy*;EU)~ z+#XgSV@AgJQ8$rMQD0?ck?rj4#!6g85?(C;{EBBCGq7)OB7ZoI?1p#62s>t_C>@Fb zE56Z|KH@>$`J9V9dUKPFUtr|&(q4%>WWM7-$S8ANr*0t&!B;JiB^s_uPMD5*o{}C- zgvoNQC5<|aOCeV27jeeJs@rP$3Vys*L1Bj$g+NOF=Z^MXzPusNFng&#w$O z{2<@6gnlE)kKTxp_!M z1?xyE|KRN{cT`lAf=CC88kUcm+m4i8&riS!ZgIgrWvOw)*7>t12t|Mn=NIyqcT&5D*Y% z%XOg%xGeu2fn9D+7-Vis9!}z_f?OCeH65}|9<20$JSX}P7qq^9Nd)_;k%%eu9oi zxQUlryj);-W^T!I38t@8^1807(3t~1YCqXAeHoTWrw=i7v->9>H@gBcc4o#asbn8@ z;I3R96*A*TeSbz+MnyUJo9baIxaXUC%!hQ&PzUnb6ch#x8%Z@nPYw+s@$m2r4Gpny zaEMr1GATkJkNZ{vVMl4t5us(xLrOumR7x=&JD!7xy`CL&^rfH2xM1YLG0DkMid80ni;`{(s&TD+59?cmP`fN8jo-@s4hqt{` zrA|?;2)J>N{Q7O{?+tg#)H^?CZNRfpW^FsGh8{atD$Zuw)6#=+^Ah z?DABzs7EKv7xAw1Uh=l=RaNatY)#m6EZhYbj;Q5_gua2GM3&I7Fg9LLC(sK5#veN0 zVQg$1757iZ4+{%B7M`IRKOD={ny|)}hz!ni?7)tV5#Djtf5hFE^Yimln8+JsYC;-J zO^Tnd4)mM+S)ew&X=!gCeRgKk<3RlJLJju-Sqv6z$=u?vsn91TGg(d5zDR?M7@V+3 zk;qS}5in%xh8Hisx986Iew!ay6x-(8Gj5r!-YJy~O4KwtDXGw9Wd4=U3?5QYLam9} zM#5g$QGp6lI$C!XuKf#%#Y`6q)$qzSDMCHFx#BG`?@sA7OR%0=x|0*m3es zd`Qzd45D9;{skDay=|2B-Q397SjHv(*}=yusYr0&;yj3jZz4w{);VR){dBW&RlA1R9VfVgX};DtWThBX%ZmY<6I_rY z^bIMaUd6TNY$>+i^*49x55G#y-A8;8Jc>uj3m>F!9N*9bkDaXMF*{P+}!x~Ro#yld2;jevTBbT8X7it zb`(`rai2D~wnT;#nU=BO*YvuI<#CN{AP|T-_Z>lTS*onrG|cZZn&f3$N@h&WtfNPE zj_%1xOdz0+EoDsCp=Tt?`TFCrAXaW^J$`LBNglaYCxi-9$8Yh-{89k_0knFYE&F18 zl5a62A7MRVN?{9LH~hI~ASq=M|E5_9zoVny##j@Ro{at&XI=;?f0+=uLH0AN#ZUih5NrPPvE2CXqF#7uXA>rY`s-s;6maCT7 zG@W2#WA~H@{d!B9jMAh0hchYka89jQ`wpGQjG}-{_badBdP7}XRR7{)ewtrJ%HhzE zbh7?UBghKjYHWkq&{YZfYTRnspKC9~{@0opqG~Uq46u86Tm)hE?8_Yelz&O(q~JhV z80Hb-N5;c2(I+&g1qaqG7N1)AWW_Rpb5i_$W8gYB3*O9wC-##`;D314+ffuFNNc$= z>W5iKhlH^K9=f?nQB_r?TB1Cx(QlNOp8iusR*sD`<97;w@REnD%EwJq7F~#ZF7@1_ zT$Xq19Ke&j7C4eBg-z>`N?ZZk%qmd8#Wld_OIUT#s#vug-Z11jt&dOc%UB`@h) z{Mp0=PG;?N20gJBeiKwOX46%IFdXV`H=;fM-QD0G{N(td_wO=B>{`OztD_I>8@6vq zi7m94Lx*<~tgPYNn&KV*E+Bx9ij?AFhFocnFvnNZYo&6O>&}S7j+LvWPrl6G*u6i) zRyXnb2C-{4K65v}UoKv0on;K|YU+YSJ2NjffcuG>9RapY1q;GlgtQM~BU>^S5{0%e!FT(sC2RB!dI~%`y{im!TBSz_nQ+jpPN7WngHa1Y(~Jr>n5Tg@4}j3 zQEze_?#CftGqer5FI5zsdyN5uEEs!*Ss1Set4(n;**__sWR52dkUIG7S4KjZ3sO2d zfL%X4GCg?pG22xz4xL$Gc)ZuKaK#_XSvxb=89`Q#HZ(C;)FRFt%mDubZ;N^xjs0tNVUrRf9}Q`@8M zYXSmfC_uKdz1r?W6V$Qfw31Tk*0eOTL;Q$;<90a`vhR9(s=HX{q0@gPBjPb4Qmbjv zCl+e=OO%xtb(#f3aV_{{Nu6VJ2cB%I`k8-Lkme91qtwAKbXV z8LX?->`l<51Qx-_t2s`~V8f|(_^`N^H>v`q%|^1uM$5OBJPI)6{P)wK@$C7_iqA&X z@Mfw<;1~>L$6NDnm_~Nzw`XZ>Y0rXoApM#w#!oZ~D+rwm3)c5-G$YJva4?_vZkM|I zYHwd_KoZJ;*`vm0?kL=WrI4vCnYXOh=6)elmNdl<~Rfe&aXJEr*xxRcasjc_v zVdBx^5wdfqAH|0&X}Pny+kdJnHw4pNAidl#du}9tEm>^-gr&+h*XHK$ZRPIsNbN!^ z5AFf8xU$oHP8H}9vT6={d5$vEnswu`)7Ni2@xfm@qvhr0wIoox!0zhM13=1V{fuBn z>mKaxg!5mzYH$2w>w}fSaq!E~tl%RNLBLDET!BQX>!ohxwK9gwOej!bm~#?1HW3AP z<6{jmSx~OiUraG1@q_!>BF91+Bo)9gvMPr z2dwh040F@%Q1$RQS$gm7(Qa>7AN?v({yuqGT3(I{42>UmOf>_wit68F`EF4+J{5KA zweMS7Z+m%ehMXK|Jcr7b^4a-EYV&nsL65SzY<$dJ@uXk-RmEQdpFbe&yzvNI8Wk~PU9ct3k^dmh*N{!h|#V^nNX9aFsjP5YWvOPHKsE6T^Y zPWJ!@yTTR=w}X)b<@)xWfG4Hji^Rm_c`p)`sZV%G+eQgr48H+)hY5Y*Rp3`qz*PZj zK{}HlhNG^|ca3#6$bS6=5>%rp`eu^6m}A@%U1n9fb#wg#wYM5#AqM8U{a}l8%zrOzdHS?IHmF6ppt zyoc0HcNNV}jWI)EM~wj6Iit@lmxQHd3;s;c7Xvp*vo|?;3R4FS5AyU}RuF$rjwJpM zgxPlw%nB}`KZ<;q_fRXJno-^%pSL~*;MJ?C;EreW?46#K^j@K#@JWuQ=-i69y~vd| z)jyJv=~l`60DcZ+&zsxZ=*zXCDuPO*MO@&@t%nx#=QRus9?qVHubtBF=O;E=6)}Nzv8+#F z1o4oGD`8HnR(s4K}_;fQ-E*NEq0asHK25HW*#d)4W$5nFr4@VN5 zzMaB9X`@bjgrp(zKgSLkv>4p!jaL-fi>zD_cg_K`c{?v>X(lEVUke-%Xn66E;kBH` zVo4hQxBx{$9nie!W@~FV2h@N-ys@E@`C-E$^sms?Wkdy2AmvRR9vpMk|HLEwyo*<<5dS6@jHOSlkN7+5GctnRA5}{xV{Pq@+wadmL00a( zSt?rHhldPRRiL4eR9#2M*n~MeBV(iZlqtf(&IouK1ji;#r~6SdUS6?<6bV6GR$ktK z$49r^+}!nAH?05o5oLdF;`bzG_-}<{f(r_0jq0?zPXKezMpf_n2pmx#!%uAH0=3J} za&Q{%hfYXNDL_whw(sH__RY4nv^ypVmWMQK-h)Pt^5Zm-4}{8_!UUgZ+s-2HeKf9| zGgre)O{&MQo?4=pn>p0pUG%dLOO0LxAJm@Bq(7K_?jFaFV2us5DP|7)eU-FR{^Ihh zSXfwuLzk_M+l79=0;!Eyfz%tvW0@XboFjT(-F4Ht}5{@ zDkYXx8ox=;sy|8SBhVs!Yv!OM%kU1eGb7CuAH*vgW@o8B7`sj&pKWSxj+3>om z_VL+CRjy51*&27j?nP$g)Ji^Cr6%ovwE+H}K2K8L5fsXy zqVlCJ8T|r$0oYRc1RpiU_&(Cdt-GCDSdI#@&|nKk1r`Hmb5rrp+j1 z(XYBVAK|igQK7vyL-ETXN%C;;{y_b%4_Ful7ROkbAn#ACZ$_WcQy(a+R$jttf5bX4G*Zt$oBsl2ekCE6*^qJ*WDp_v^}X)Y1ajxY34|CYjrBEiFW8}O2h;6Zy()I zUW=fsOgQ;Vk{exAFcZIMI7noyCwaFK&GI0ClSs4idZ7=(t}&Yemic<_rq z_iIPk(TQK5$SUU3Y-axE<(Ju1f|vD^2T&P-1zMU0VRH*qr%S%Z_&w0PC2@|v7PY|* zac!`a#I_roEQyIcGEI)64T|H(QHe=0g(Pxt>)G8%y}tt4Yc;`4n0f*pjHFaX98EE;u~8H+L%prsm?G}P8aw;+1d?UZC&JG+Xx zqcQjUsw%t71YH?aC2~3ds)nRTSt6na3nIUHTrGcxTw~mvUBI>WeYT??UA|NBxF}76 ztkrZsmZtxH4>m-$s9ku6nNN3zv0?7EhN<$nZd&@h{9@R2f|jgp)_u0umbIITVzZSp zrJ?3YuX6kVrSd$isd3gHUU3H+Hvcp$tGm;QNeD@9)_;*08TFK$UWKY%N$t8HM^qh2 z{gRN6L8DD886!T^2mdI$`^3(iHVa~J zle=$WKij@>dUw+Q_T>C=<);B8_oJZ1h4d#T^c5Q@xEjrvOS*(d51q97(o$=(bt&EtS&VE993)Qh_A@u(^x?jRG8N$h_t9e5mL`|30)s(lD(Q_= zStO22>Z0Ok)J+F%r8c}C0e`T&ZKTkWw4rQSI4o>YW+c&jeVz+mAUO@k5@$D3xN1|( zA4*T3uOi`1`gO)dPr$*PChj3%rpy^}sL?n4Wq5!zG76ffLAbI~p%|O&&W|QYNVp;$ z8`A_KN%VbEW zd`(E~VdL@II>ckZ$f8jMu{aT{5>lbR$G{^9{wR$b z==*+jujoSrON4d&ufj}Gviw4`Pxi87(!Uw7i?OBb!Rx*$jWN<$Hu#OfHh;hT1| z8l4JN1x%(CM*p3)OtlZ|MK+nvs=occ#B$%UzJPP+H?w-?ewKBhMt}2zH5rp}Yt-1K z66Cn`uCRyh{-RV9YzQiXw_l|_5<6n!kUR>2y>L|6W6b0FTbuy#yWhkQTTP5q+Pm5QhYthwvIOm1CA-y z`(JmG`GtkNwe!_a4^?*X3)|&>`r8bNOHEYL{++rV5iDlHl$oOOAfwD0X+W>Ccc{@* zW|PTX3%DN*Htd2%{9y%XGg&}pq^Ruo#Xzt@%O%+ybK5U>H_X9Vn%Xng^S>}Auri;O z$1ua-QI)}DxYSfdEFdDy!1DC>HKL!S?ADBgk`^8)EMlp!Rb83omeofB zJtO1$^Ag_+#P}*2Vf!^f^swDg%dpc~b~Fxj_fr239ljZH?&2xxb`1#y_MCQkl49jy zw0WcO1gbd)IMbrxk6^lDWqQt{58cr{e8|iegp-a1lm2d#+*s;t_W=jFRhmwh_LJkg zSAPj$jzoi4{PF%sWkone+JmtM%}+KMdX5b6M75R&lyWH2 zlX|j;z6M9#-{q22e|A^&qb$%iPWd01*Ag zqk51#!{V~$kgb@wiew%i+ij$QS=@nLH3t2S{3_5a8CoT#j7c2^MhBn_B6lHDimFWC zpLi-1XtKiA53Sw?eT(tsw%NrqK?p%_;mGq0vG-@wVRcV~wg7(tC%~4^$yZg%BOoYn zSqLrFqZwWpkr8lpV11Xb(+G5#Qtn7%`npv9#$ki1gNJ9HPJzN(6I>xmwi%x)X5LNu zTvk}dl;h&qgDmyVUm|&~uE+W>*N7K@D`O`WF>v4Qw+0U%NCv*56V_BaU9TQ~V6fe0 z>N$AfU4@+1$B4K5Zk?iJj=T|v3`$A-rNqN& z;uPMWxWo+X*=5mKZrlso0@Lbubl6;_ls*m(c-^_KYj6DJCNE*l6^4il{RtQ~<$m_x zJviGa9oHxWhwW}()03I zb(KbeIoX1?Rqm^R!yec6aPgS z%+Uz!F7$TGIx*v_s1jLRN#DDud{qhzBgH9F8&M4f%)b6F{lg*+`}+{@GM*GQG}ayc zR$!UKq7I+GNhI%ad2*HR&>}=B=IjP&qNha-SL6rYk$ax zPSD6LB(gVX0Ob2Y-eSROAn!!G^{o8_p82$&tJr?y2rqf(8}4tLDaH5>_Kmu(bZdhO zQu+l#JWu%rn;;dCS^4aw)xyuovNkL$gO{H)wfgtXEb|~aq*FmY5DwBa z{V=O+E`fr32v6VO;Kt!x6>TT6%PuL@aqGizw9TO-Z<^=nkHw2IUJ%{I=~`#K)zhEM z{e<^-Jkx&UjN+ffb`jm;=R`iIi)7S&BjnjZJ6G5s%w$cFkZUa8>U(($V#U(Rb^5_? zz4!DE&=Typ8K!pzpj0`XEQbs>d92`!Sc#C~1y&9E&nae>w5auq=g3pcpCn;LcDaRA zj=x{qb`5kGx%_nh)L?a<@!~+?(suc^KjKJ;MNk}Ap$LdA4!HP6zCF|8l+mQT=a;4_$bMy282Jk zz6isTrz9v2`Kaz0^8y!!Vx+?J7-nre@e2FXiPEb%! zINO}m^U^}_3pLPy%A7vPyK-yk@re8+jGo>`r2TOT^?0ofQrs9|5ul#mJn)v_CB*Z7 z#C5~>Maf9qh_bzJA(=^?ixrH{gg+FPtciCNQ~k_(-&KD-UbfGBll|d)*dxFg`CfGe z(W4th4og#i7h$1?4nz=JmlS2|CQAqx$?S+6$(Yq(-f#_3xm$}kIq!WS-a;v3JJ#$b zo}Rjx@Tca!3-D|oVYh%IP{uTO*WOh5^5xBbyCqr0kyE_NC9mE4Z5~BK;M`GM=3&Fl3X3(dWh)@;e(>~WHZsf!5 z*=Nt~ouH2I&-X>nRvrmr%dS69Xb{*J+h?u?{%km9cJohmyf|$^g+DeB_X-~6o)EY8 zjbi#0dfsz--go5HAGD{vv3}}(iGlXCrwn5I-0Rxvby4BDd7tJUiBipvRWzvW7D4@d z{>kHv`D8oQYS;Y$^6O78X6xmMXlnt@DUN5KvDFKmoV&(a@QmP4jaci@Ll9;(4)IQw zr#t^v$?J>kt zzzx)zB{p|Ij`rMoT|`L#f<(+aFFTzot921NYCEX>)3~og)ba}{0q15^_k>%;j#2B~ zW|YR&P}}Ko+nu7f=Zc8-3YccpErHSbj6Ks-v$rCUMCRrz-B#BJmD>m77p`kABE8-lMcs5`JUR#6dxatQ09mQ zqpL}F5=#Pq5HU3`zMiQ>@hxJ+lqzys`e&rn2N@ z^Qw$7yPO53>0b8uY4QQ0Nh*Kqu`hV478Yu$(|K^w_pQWW2j`nA{BMF5CYrwX5nfZv zR^7;8^+LcZ?NW99(c7&?~C+C!qqvgkj2K6+)sali;a_DH|gQts$ zQ3aPBa`h*goj0!7oJm-S2-rm*h6UAm-PJ2p<+b41goz%IhST#C-5nkv>zMK|<-jez zdtQcI-+I5K5__?!MXNd*7~_3W^)Q$Lx=_AbhBCD1d#XbtpAmV!=WWe9o%J>e4tsuh zmx-Zz^=5l?dyLd0*Q!w7HfC31McUao5iGeN&&TCP)J+KN3OC)k@3+l%X#_be{fSn!hWCk7`c-vhsN zb>npl`loOufgkiWtf4Q*r}#vk$BUu+-1}v?waNL`$AXWj<%ZpY%M;<_E!0W%+@;zJ z@!3*Zb1~7-^?3N*aYfT@r;}=hIwK98Dubx{#nmH=#T7~IR$+xpx;xkWxuUvNKyRY7 zsA!(7t@#ad=^Nblfb{bnkz#ddiv4Mq&67)Zk`Ix?B2BH-zb-4h(A&6dGMnXS4%S=T zMTKud5)$tzDV_f4`@9e9ZJL9e3ot(By3XCjuSv=GggW%r-{hh@)_jypeIesncHu># zM-e-yDr!xNs9fOw<6%iht2^UPJ=egie#gEQH)ekcHM-O)HE2AFX30Y*fcoE8cDPN4 znohvx6$fHaCytBG*({JoiqQVR4{2IqH~F=1n0tb#nbbW1%8BQ~_Qi+n_ zJ9YU?Sl7Kac-aDMVAm@X19#K;)(8Rp?{$OxvFc7$-b+~JCOsjuMf-PG##1NV-s#EOVtaNh!%TvvLXVLs@YcjBYb=?Eq;MzFWprX#fd)M@}#ex_3Dh z{MwIG`9$ulqx>A@T>qJOKuLwf(mV~bvWn{A#45X?-UA3fywk~px`O0ICss)}i#c`Y z-~oNf&9?;EpNMz)tQHi1(Nj34jV+-oPGg|}j(n`1W6X4^yK6XIT3hPe9uL)oHD&eV zu(Ow&%vHhJoiu1VuxjRPrhiZ}PFrsQq-qL(x$dB%u%?w(X*g;R_g&_G2&C73QE4G+V{v@v?9_nQ;ns^+&Af6sf|`F6>PpnPtvIZkIh}ryvfu z(M1d|@LIpV+t%FKa3%vb2m_u11&nUVDlu6+9RvFiR4x{x7-OiG;MXx2%TEgqq|@L) z94;_cqd4#ACRJyBLbTeBq=M)>71+9@QUc2q>5?;hfFVn6=FuxmC=hL6I$v$ z2JmJkBVoYXIJ|u3MTdncEjhV2J8_^07ihb)O?=&|AvmW6+$VG;ItfN_EAqtr&wl8; zS7)xf@VHZ^pb~LzTE`@#TIiOFawWr@K{=}jJxpjZ3-TNVj8yikhTjI`VLwL=)G;&5 zdc&J$`#UU7CnoZ!lXo_v$jmuwj7hRMNfnpcCC#;?>E#P5k(~f*2 zo3it?`zkZ;>!8@;eHli7OXxJ6m(#N zay67(y64n^T9QM-ad97Hja| zwP`?>`+od5&9R4!uhH@qo;tVVpUU2nM;mV!$eRzBnz%O3OIL1S)gn~!n;@%j)Z8}f zFk&cwo*x?V)Q;%hd!ve_cVc)xw~NH4y$Vr^9fTve<$?-t6r2v>-;4qN5Ce!o0u#hz zTw5-Uo0s_bfkGgU80|`-+)tbqq*gEd$5%<8V4w`lHG{0E=)-Fjv(9eyMNvCjm<&y3N z&r|F$WaMw`uiEp6T}QlD>_Et&@s7R^A>CJu)0@c&_t*S@+xA4F!)xy zm_lS>Rss&LDGH)Tyzy%-gFmx`VNo@fA~CfWgKEXkhsb4-45#i;Hqvw6HY5KYRnU3$ zU8<`G#a)ZNA;NzE_O_C&q9ghh-L71(BLv8S>$v!tAj>pmEswm$^O3|?+w_S z9+KOxMCK4#PBv^$^UtT-7s04p}g4ixux1L_ea~Sp8|or zfFxJOyFB-o;KFC1hoF8$mjVYMV(jNdqJM~0FHXbw=Ez{Lt9(c@A#EoJEnS3_pO~`3 zeeh4@11Sd6=O>V^$O6r400w*+zC)dKGfUKlZPMh^LORjC^4GuLsWf7=np<+;0h-W1 za&p>z_CKJUDliCZ>`MYK;9fCwXW~B$<G3kD2SMmhs@Eon-(Pw9uBp5RSV>AUY zun@pNo!lmY_isPLYx@L@Kf|<-C`cWt3s4TLg}CZ)Hx{DrA7oTlVfcIZ5Z$|^7wUyd zM*o9U2G9XuX~!pF%=ceZ5q$w-%e6o{kKNa8l7d5G%sAAYajZOX7t^-6AUc-HCU(xP z#1o}!V7xfYEOIkNHID*x0rXFHzkL7sH`;$a=qTF7^{W1h|6`81Q+B@CIA?d<_YH!P z{IvDqV)T0w0QD(G|A2L39f|gOqnoYDG`#?fe2yHTfvhNdMZU$e%*q)E&1 zf3*O$sgcF}Oo>w-&HfDv<8R|GAQY3@rldc8=1V;!`H5iQ|9(S$(yZZ*oMzO-lOpnw zB3yW#@F4Oafc?OF{0gJ!=Lal)wcc8O&e%b?8vI&rl`IN-(!xJ+E)GxdD;JFurWxaG z(<>c51UYy{R>-Jc4E8kfK+JsWmX2e!=SZktv%81b{Yd_8id-!Tz~*{hR&TN z3f&3q>|iIMK9;G~@z1uC*`c@$t zyKKsCNUvdl-tS-DXDz>wpHR~EUY(S<6>4=>mX=C{d^2mf>8G3@&&@oOcZ%h^YFfRZ zrChv~&t?7WCamD;{pxg*qx^IPl&z1$E;NbL2kjVF;i?7=9wT`I=?dTN9^rZy2610x-#$w!#>|UK@_%T=8)3UT_||_3p%CFR{q{h*#H6&N zAUYtxKUx87Gm>IL0F4sR8V{TlzWvMUoA#UV)a*b0!>1cPj4*q}wgb08Er2B`(3VW{ z^|RqPxL(V3elsUPYUa?f5i-TK zXI}-3lS?=yvZgvlizLUh>+RNc@BYf?n1biMhkjsQpJ(ZQWn~7vIr(f3rZDx)DU;Hq zcE)$}ja@8bqHB4NJS;^vv7>t(A)kK+dpZ>j`l}Xzh~tm~9W6G>EK&SD*DzkSTrQ6L ze-?Glrbxy8ezg}Qd%CLfaSh|f%^9|+`rW@`*TYeOQ(RH)Q0u0^tPsax_rgZqiO8UL zOvD_P_Z9!h7xg6VnrpBU6ID|#a^wE`W05g4hgTVo<|29SW&}XhKO8qH_Ean!xjna+ z*^G*v4CN02{Mbh86?AZ+G1cadY8=1Zm-@+sc!a?wN&ud={=WoTxuF*S7k%I)A$m0Y z&&+*967k*v&N%S&Wc4`gD}4n#LWFwr)vBUz33-%zL-%rDFr>rP!>Lh;aE(awvBo@scyeIl3{- z$38rIjQtkZsetSB4~i_yY;^uw_Cc_{!~dL|V{#OZP(|pKwWR~k_FeD=m`?pG%zL>Z zk|+!AKNki<(%mP!b9j4NxJ;`q0Q4KGh?0hg?JBIW{2%Kdl;;- z*VRjND)oj=`S403$m5S+i8OwC|KBX)@UN3ss0L{)R=Ntx5n5%M&$T2S0BHe!-d?7~ z;U@fO_-8dq&kzF$1N&&&m&6FmeXD@~E5I3l=UEF#OZ%xb0a{t62q!6krt34apdbzE z%B0P7(I%pFivE*D9eFqp6wL9Mp%IqIj*}H-?{x@x!Q=BagsyYV?LdQ)c*?{waZI!?+v2;Xr| z-oyzQ!oUo;0_H%Xy{l)`#hLpm9W+hW-maI)Z0Tzvmrr^bH+HE?gtC&6(-8h$&q%`M z)AfmjwMkeWkdgR=w-dP}M@I5GAOCr}XOd0WiufBpG#n9KQpF|L zG!cmB`{*byMEhTQ08prSJYqtsTzx#~fPxD6Z4ux^)o5`K4|*klRsT(HM<&|8TF?s{ zQ)En#5k|R5Kx!+~O6+H>$y2r5V7H2dE*^X}%_N{C;!+s7@CtC_xVYdxaf7a=;h<1< zY7n2t0X_(k%27odOQDax7d!6f8uwze=42#@HSs8=?YfQ6k&E@o^CfL7LWu}|4U3rxP4bN zLni7SC%?I#4Nw%Q1s_?P=S9Eq7x|;^$!%tO>0%1X-g(7VQ8OZ`QMSn$XfPJ{y4AQ{ z>Rl-xa4JCR%>LH^1H91oKbU^=PtM^FneYn)op1kma{VI~YMF@v(p2Rx&dH%Na={Gh z4o)EVJDs9Pe4%KnljnU~O|#{EwqZl3a1s7FxWAbuF`~f|VW8Pw>L{EY#^uaKUr49X z<<5<@ss!Sm!p;C*p@O{Y2wE*X@J$sE@;$AAoGI@oTJ-2IOT){A|C+%Sa_5i6zhg4v z%VsT-!eKV}xY2s+M5g)4nDy98SJ)UEhE(ytYBJb}LmV7#7s2`9!DsQeG--F0HHj%3 zh2ZrRQj!hYYvvH6yFU@m=|iylM{&MvNfDf=NzqoP!>hqw^yK`(j*LH|NR3(UsQ17^ z>Khk71L@NE1377`B2Mi<#!9qPqYK2J?n>Z%JsgxEffbu+wZjjs+YQLURQEGFXT(ra zOs2(xaW8CO@Xq5Z`DMf5|E|&IurXOSo~>q7ub3;x4cRkmHs6-N9-oT-f0TV?P+U#7 zE+HhiyE_DTx8Uw>!QI{6g9Ud85G1&}1b26LcXzm(yzh6;x#!2Nx>fv`nqv0s+125A37tQ?DhO zNFXK_*^D)3bn4qG0}r1&p7qecfWg3<5VRG>ahCK;z(H>STfXBjtlWc5fWFvbLm{%8 zV;gKac06aGH1|XR72LyrCq7n`#v<2>s|UKpIg-AsE`=V*YH~nL(by}O`GJD+qFHDu zEinG^&fOeF;0KN-i@iM+a%oQQ*;ZIWE7HS+Up7I|;l)UFKr7&G8fMf(jj7D6g(#s^ zT@K)D{J@eYK^p;(X=aM2YVihvmI9PF&P_114Ug|spL`J}$4rD_JdIxRw4gv%7UM9t z&n7ie3fs7|GDATM?sr&6tu`3f3QTf7L)?nwS`^r@%))z-ka)OE=fkxqlz`Xuy%V9s zz>P!)s25cUk|f3z79`VSxKq{aP~_n(kg!}OF<{o_?sJxS!Gp;<0NQY z@54MZwB&^EJfO&{oQ-+@CUOFhR2B~D=EME&07ZE@tl%%w99LOCPFo(kA_hv{iEV`> z@@J+p)%;)kntBQ9-O15i{KBa6Ml7oXoLBbXgChoX3mDSqW5NzT$GE0H2e09%fB4u! z_#8MJ@(UmYO8vil1b$~69wDa*^EqL9pkT>mwXbXG#F_VPeXe0I*TqHo=-QNa@8v%rq8)@DSd>K!(j1H10RKNQ-* zO*H(R@`lJ#v2)`C(~GokV;l!AxX|ok)4QYHeg+Nb!gL&)72&@oD(SH~kM;75RCbeQ zuHKDtb0L64E+>;`E@{L0NYaIy<#9;~wC(p50Pr*9y@P1tM^Ty+Wgd3TpKi4Y5Cr2J zVSLS`$}MPnZduucfYTWA1!+i3eTslwCVjm-O!W5=yQux-zQ)EeD%MM0(Q zO+0pm0~o?&R;an#Q6U`8m(vQGlqHZrm;rWDm<%darR`ybPQrV<9h|@|*v3Hu>@>I~ zb5-3HdVrCgobRtg4q{|CzqW-}lyKtlOb9Iu&Pe^sW`q!g^&8opVhw=Cf4)CrzQld& zi9wSnRt9^OOAn71=Bb0a?>5Mv4XI1}>uw+vQ0^^KD{GP%rtW2B?vn2a^G1k&ejC>ja*S$eT4@A=9FP(m>JpHE;oNeJ@}aBezLRlkp=uwflK2 zoa9DZMTOHx&kN}%&@gB2S#m!PS@ZJ?6wt3;vbTEh(h2EAG$$^WzoB91S=S$|R^)5MTf0!p z)rCvYt)C<)L-Hdq3j9Y%=73v$5KzSWPF1If^%8<_*sn9_tj#+vg>o(H=q%6lW@h$# zVg%jMfj~!+*;;yJ->*jj;k9Epi91ziV0#kaxE zIQdhL)b|_%?orDx%1!UY0ZEf4v^=2g5}|&wkP7{jk`l)kfD>Qd2?U(U&LW90O0W(> zzV$rDi_jwyqh@Al|8H)UVEp|c@7OB6uIuqzN5>aPjG>~!p(m_<2o^L2^)s8DoGCHS zhc@T?W|JmfamOUL996`6WcT74Oj+CT0`xXVq4>KMxdJu?P!L{wxp*)Um>K~&z6mJ6 z!nu0BxoJW3B7EAs4#w z;g5Dib`*8KC7|9N|5CER!YrYG%mUwP4EINYs~2L>-a~#jf88?~dLR2K^*u(YKjCG` z!^FZZ*qlxmwUKt_b?r8TRHhWD%cMre4UyHo$~TQ z*uXUQG7U$mR1T>z;tIDjnSIZn0TMfNtLAj^KLLMHS@y2qe9jCp!ch^w6wsjP+HXo` zXdXTk)F$675LRS~=(&AWlZbFomFcI^&+q}uS`qH0=zG!UgO>d~(DHApFH^^$TGLK& zW3oWfFV~;4K2rxun&^<( zs)U{7Udq%P$=iLA`7KnRT>cH*M;87gNs0L{DovMRAOqG921LGYYrK2Ex}L*{j}>oi z*0T|on(x^)L8YM$Bnx<8g8c%Hvb~qCgw0-Dvi}7Ide5_Q)=>%^~`^ur!#qQ^ulYJ8c7Yu@iJ2 z@j)wr;9{c0@Dde2`t=*W#~I$7iu0<6PZF)~h1GGR!NvuBm|vh&DzsV8`s_^&Z(d5e zOk+9+eeDvKLVX5F{8XFmozJdF#dSf|_$!jD| zU-Aprh?2(WNULG#Nlu?*8Z${Tflgh^v8xwPu*t=vOG`5wvzOT`ZV%BG>(w~dlGP4+ zJv#AvQWqkm%W3KQnE-~dc?TXmV0;G<3GD*5l~3~9+TqWva!CT0(3t`WjXM$B2EQ8x zO=`=6J8e@1EjlE|lHQ0lnBkqTQ!oic-pZv2h^Yz05pCVBQW(eh!^BAis45Xd8*(sby;+%%p}R*kN{S>yIts$oNMO z)A`x%aEa_2+FY2>cIcZjgD&Po{Xo2w8-u}-Hs~nT@%pa$wxfA^Ssl~$3okm*^Z9DJ zag~Imiqmwf0wh<`*adS6pW_7+ik6uAF9R3>rNYPD=BqIta||L_l6%uxOwL+5=(Nmh zp+@ze$`)xItt?ZT)pHFjR-%7 zT1h@}Cp`Rs6;hvPdCEft0Gt8=UKn=wnnU32CDd|^xEo*YC-C8B3HZsT(&+Dsy({^m zQC%^3e0qozs&$_!^HkPg&q@_dUdmhj$OdAnELQ&D!VAk_k>3mwH=KSossxB(Ca(ddyd-}Ex+bX zlG+vHc--g(ITT&rN{giexI;v`p|~qE!b#s2si-kkJuJ{{0tq0@i1ETc=}9Hu`85`O z6Lz#~Pyb#~bgrWt?;Vxu^x?X!biMtnjt@`s(xw*ZD|Cdyn6(2#W(%eB9Gl%E5yr=O zhjU*Jl>-&$19_-Ug9PimOk%BbK{L-4ju#SwpwiqOa1J>vRx`F6Y0+3mh0$udZVyf= zI_V;Y{(ugZ?=E;OgRT()8^E2*jL#L9uRh>~X~N@Yuslo)U($2K>qD=?bKkrRSlaO|v%QWW0qShsX7bQ@%G zMBRe#)Gd$;3(`tM;*wQC%!9;}T;nu9hg-f;{>_n{cVMk6=GMKA)--=vR)_uL@>yQF zPo{V5VpB}#E13*Tury~ZQH>d1Y^2=<&dbgx%h37M-uZ#Yf88Z(sLdEP1qm~5rys#q zOJ7#e)5Nr9oYNhIC+vxTb85AR>gSC=GQee;Yp#Fy;0W5gRn)R1(Ldwl<(B0eu(IO* zCVMfe9|aoC^F)1fP1B#VZNNR!LA>PJ;)?%RsXd*fc}R}yVXaf%_IL<-(sToq#?aP7 z`rC>U?E$4RE<{ug$3u)|l&*uh?JnC_W^DI^b8VwG-ltQNrm?nLzZw{)aHW8qakjR$ z#OwL)mK{L2uZEe#kJvM0+U^tD*B#n#CCwrqp0CCfU#95{4NW+y=K!B%c|c0))6Oyy z*hbWj$llj6zBg`J-Uq|QEicErB;Ww1f5`B=G$s6xKO@j97S)X_P7z6LPec3H6*n?h=f6KPj^kXCEhzL&=d z3gU4KhM>{QN3`8(SfuWt{c!=AQG!pPiTZNwR8>$PTbcZ^OLQ-rkn?aQB}4Vp__M^J z>7B?EFY|QA1_^msvs=XADi51<1mL0i0=I&I6w{t^n0*y9Be$0FO@fni{aCFbkf~L! zap$%De#`R30u|6PMu(J3Kx`Vy0u6uQ1#U*$(wl!F6^t{D>PW0rm zZce_6ZAN=bd-{|nyG(o85Ev6~A%MYJg>T54n*HYgjn<+Y3=t$~Gt9UtkgL&Ryu`@u zsF;*RP}5Z#B;n4myU@FBe3d92?<$k(6=he~94K98_(EPacJ1p}M*=ZY%*agSa`H>m-EzD&cR2XVgk zWC_Tg_a8*MBn>YdyoXw*0jGLfRgfRd_<8rvw+9li!vga}0)ergb!4h}px0pA>XnrA zrc2luPy4`bC=;PCkjovif8A(S7c4%KlHD+`G-*W}A7z&)QP;3+c?V;+3hpYqd0|Pu zY;OG)cFgo`E@Q=daWA{METh|D$MB}5W_wPaQ8&UR`5X5J*{buQ#Ak&N+=tO|Nm5O% zZt25GOMJ9%b^|F=PGJH8yHC%Z-C-crRvy}r zOT<|Q#(Su~#m;o3E93H6y&da|LgIJoy}RWU0G%xE(_T$yzpMUaI!HJ@AMwmH|AMVAT^b z2A(e)8y}I`+l(Dm&CCR3j0YFqFrVTxXhAtw-+Gj!pieVj|-PGwXGC zPohLlHi219^hk_poz(sAsmbx)W|$0_cJ1+vqiC*riPKaSzZ%vuGdu|dZ0g;Wq~9Hh zAnpxACqeEN)OlUJUqN6KPvUqnNv3GOiGx#>g9K3ZaDhlziSSvIVv%96nhu7En|t{D z99rqxN>WjZdKS#P&3lmM7IsP{0o+ZwCbFge)cIw#tIIcv?BkJfJ;TA5E^7STT+WfQ zVS3232jJut>cQGPq|wYU*bOz)x9~_{rIm6FXOe7?e_K3iIw%{84lLZBa}s1PFs*cTBx9lQsZOTvNcc@>(Y+j%(zE zpibgsmD8;#n&DJcHU5h3Z-Gp@G69)Tel?B*A6{G+UKwQ`yqRRwN`9f_LT`+!;T{oX z4nGThKw{-X%xZwyH8(&QZ4|^MAJ8^VP_S?xMI`TD%s@?n2&+!ajFm@u#a(tIJpq%J%Tj>=6eo?likmzCn9?FsefOrZ66RC&29oG#e7UscDxsHRQXu){hzZVuR%_q2=nnHk$k?_FKOR=5ep8b%B z>N2y*qN4trSchUdvpQZ$^vLFpM7-{E#CVo@A*%xvkrjvqj?3h0k|{nox9ecU%aULo zsc25mrr8%gn`M|$k4ZtNXH=(QFJ=L0g?hG%U9n#tE8bfUn2c5`53Nd3EOBz8zl;JZ zel?hL;B2W#-d!;X>~yMvh68(3DB1vfKrF?|W+;a?m@gb%$R!SHGdd?)1EuK*U>n8+ zE_L4^0CW^<$j)*=_xqJCn8zH26Ou!Wk`Cp;{MpYtHA>0W+%S;a2Of6mc4|uo)jz&4 ztFi9bqb1pEw^+L`*i6d3`iNhn{zl%;Jg|;iw;~}Jk1r1!D4K9hk6~?;ye$n#GhRtp zZwvz_mo`^{vQ?6?_3sptm2^*LRV(z1mBus{&N`LY*R2!D8_pT;o>phJ+%AzP&fnRA zC$xWzC}e$`)u$4EE-Nn?oknvRd33>zEMt|q-NyaOk{t9xwg!ddr9#5F0|H!wvnHk9 z7^Y`!n(0~TFW!j{NrgVUnW_$B)!jz&op>-D-aul@4G0PlFMDDo=z|nuCG@-5=>gzH z5wDj;^V)0O2l4(St-M)Ygd?61Z=XaC_6mhv_q8=Uw7HO^vPYTo8F@1o;{hi!CVd=2LUT*b6dU>*%PD9W#PA9RRFltSNl(|NrF z9k*>f)cxf?*eB$Qha9ZSVkKwU@pUnj&pfaw=$zf#|F)ha zg8W7?FV$ArUNoL%tBB z4xAJbiNd~%fv7&ZhnP?T6|_V-qu%}U)8!bKm?941n3>` z2O}g#9X}}&9D+TywraYhTDCE| zGnRn?Rm&O~pgBULz%D7LLMprSNk&?TNdC6aRa!uD%9b3kUE>`jfq01+g9Cv4Ki|bD z!i_W}Q$*yC*+Z*Fv)mun_&`a?LKx-Ei9;HGpdvRLA%!RfYu!SK*k0j zHcewuJ@Ia`?&p^6e$8L0t0MoBW5eKgGKAZ|CUrCJ)>+lzlAjbC1s5tc>Xm*FG)Pmw zU&86bG?N)8l=mYk4iBC!hxqRgQTz7JDNcL=4S223P5?7e;Wk7jK@@kzFzTFCF))p| ziWa1>ON_*87${gn7H2{co^hyrLyLoTzw-R6IXq&)_d622 zG3Twa>BQS$?J&!m33cQZa)YGJ&Sw3`%3%KygMSKwpalYjdI4pqBxGl2w>`nxu*}-S zBxWH`WtPHXx}4oym<|4>kj8@liihF%gKoD$ zdch$fnBE)eA}+r;%-VM_emRM9HAlfRO{xg5+DF)+!o7oLjl9zpY$HwRwm3j$C>8>t z``2JvO*|d0hyh}7SJe>a<)n45$bx%wdJf`BA2fgyJAIX5QrHx5PNsUYN+JNNrAe86 z2gB=`j$dT#z#F3#-Q+nHCucm8S23U3o?Ns1MEjaCSgox^eGnfTvHD4Oe(Iv1EK9}wGQ%m;P9TGZg>=DK5A z)gi%+U1nw{N#wZq8Z4Ug?lxf$cbkvs-F64j{B?LMv_gM0$bXid`qsXrCCsKWuc?Xs z1u6vX!Nas7P#~!5=V#4uYC?HCsw-gVG{8Ub@xVGPX*^M$_hrWQLlB# z-w-|F!6%W{yPUSAyugVZ)x-I>7Z6&f@4p5Qg=>KCMc~tfd*Ca~GrDA*+G=SQ{)(#N z3}wgHO8as#EpIXqt@|(BpJ!y(dr(*bWX%QlWVd^D&h5)@(M|{(|E4O=!exJ|WxQz8 zbhFG2^Ja{r&|tBic|TI{cUTwSeJ{HXBn6(6|GvrE*6uG?a2y-z$OTpnTi=)%5edv+ zPMXL;eWKKQa=k*0jut#81zkm(%(*+`dn{yK-ZuCsmcAXx%&2&5i*WD;Fic`cb-a`^ zm|g(p5nsvVJehIU&+PBb(>|uj(2D`8sBa+;e`^6f*sOSv=}E@&Y}t$Hi3b#1Lv|%?-ZJ*BdwR z_U<*HF2B>DM(rlf@}i-Z-I53Th;ej%v`l4r`lRT3&TVsMo;6_rvcg4gLqtnELx0?5^ihKOdMFxl-ZoDm-UNA23>ocf;k z`dR>c-s2862h!4GA$!7cY+fF7CTIVC6p`eLt@nrRMyj7#VhwVc&HfX&6Q=j$y38rA znu>(Y#g{~0lQlH7Zf*=>R%e~fUa0}h7p`^;!cSxJ7#CvkRkdwvv6f!QmWXJW#1WMC zJ)|^le^>eWH-1#^oryKB%ZD0l&m9Y$JvP3(15##j1T>NVFEgQJxRTC2%m4hFi9Y3* zzlH@h8z;E?>%*Sg~dW-cN2vz8P}q@UY|?}mzTGC zmWbA3I!E~5Z;DlEiUF-nrwh=L4-@!~sx;b7;ftD^GPZVn$>GLnPH!yQLsiv79BwFy zU^?V1lv&jtG3Hm>qcD$4kQRz{)ORD#^HCb(mXq|ImdB+*Q*Tv~tY0 z7~QPBwvez}>4wq^AZ9Oh-74h}9$XlazGB>s^3+dqp6+tMBgd9VA75Y{ke9w(=jK2N&MTHsRb;RuONMb_E9MACJ1^Y-2b_sf_WvPTP6w(r5|7=}r+ z}hp`5oZg5;k&KWP%4g8hadwqTTI}a z0ESi(7eokKv-w@`i><1tLDtIB1%0<$)&ks65fJ`bGp$FX^h#Xa1}9|?nN)r6diz9v z&B$6t2~~UGEe*3)78lJp;;%!V ztKwUYgK?ThPEj0t^3u2R0QbaiOv`m68(3Vi?~~+BE1m*0klqF$fl!{WnNcPXoVj4? z6sE@mviLQ^oo$s```h}$DWLkk0?dHEEB8AQp=j`4PHk-mH4_gePiYK7(dTeYg9;X` zZ_4rVmdc0TT~D#xmQ<@Hn2SCo2&UkPdsa`0t%ic`x({dp&J@>0Ut^y0EvD` zTGOE{nKX-IEW1l6E;%u#Z^yJIsP_;G36BzMK%(9k!kIUx)E1o>EtE+LL=8X~gnHld ze6vhJ*pmmm+0K0AV37F_eM?3Cx$(U*TgQ{p7st?D5zL980X5b~xtr4v!0A^J0FcM1 zyS}^k7?@_iraf02t&0%_oGj5_q{)fg;PN7gjZJ454ws@0F*p-SbO5Tev|r4gU_7tF z4P3?|=e$902{7oR7ZP>b!QWM^r{7j<5@hpuS_;r|!6oU!uGIzDe%95???cYn+33w&NmUY}b5fu=;Mh^q^V>yau`RlU0|^*B^S*F^F;WQL zfo=4@gGvqu(uBAVMP#3z$%PC%9<8MB8)z;Xp+d{mmzOXg-XAQEWgQctro%W=*S9fRCojl776hP(> z6sxHyW>~@ZPM#weT(pT3AUYo54b0?&RRf0*`(3Ia0+D)Vyx4EMov z5w`8Jw)`qB>**RP)v*{*BNK>FGPMjQZ9MZ57o)kyoW|Pf(Zy##&)O1)b98rjz3Z%L6S8N!UcFo%H;cAp)(AQ|q);_;xe#Tq7(_i*T z!UT4}2KIp_UwK`282fNO3~ZTPy5-3Eu&Mg$KlZXnm&dYuHO41%+EhRzEYfU9L9cIeJPtw6 zgXE*@ZD{u_?&jxs@-DH;$*szEhcUWx9wH7biRt+ulN0?W5Y?~Gn?GwQV*TcN%OFA* zYO-kz7#ZQgH~^hgvzxJRs7iW9GyP_c=;w(~!@8R2dAOa4-zohSpxPCI`zYvB<4j_* zU2r1sywVhT++McvxUf7Jikk{`vv-=YrIJ7@1tGPLhF%@(%l~97YHeyysG~RYi9`<^ z(M2maI4fq0-l?YdNO{b7(bh|{!pC($z`&4xT%A>FIIo~2gw-$i__ljNZ;MR!o<7QK zFmFygXY9N5s)=t%+d-NEz+50Lkn1y~6%rUBDiUxqNM}Yw;Cl`1Um8eDvM><<?(GlU$EB??PgGCrQ%kU!Ck+1Yu7q{b?`8YkJ8S3am5==# zv=E&%fK3{-2{d|{^4#Q#8Zy#S^8goVI+~A@vHSt}5;J%*#>_(yA==#`?jQyk(8^f;0-(pSpv+hE-J&5|P+$aA&@-f51<$Upy-siN2XB6_fSa*sadR3Z!i*C zA0+8FZvQ0!n0R?%B8HBNE)Z}Qk$CUq0dHia|16IYM}Y+-gwyNl8Wpb?<}-8C0_{-$wxw11o2x2py|v*NT}?|M-ezfl>COvYg<$*Rr`4}7Sp zqq-gqo#eD@Nk0_aL5k_{-C0c(0oKj=)=2=A3!d94)czF`G3hf8GYYD_mX?&@Sdds+ zW-yUHQ8r-Zo9}l-Ba$ft@7vi`l4=dY@Ew{(T3UqK`Cxbj*9)hr_tH_ClQJ3#GzTt$ zqt|Np{xUAK48quipaL_ipI@) zSdv{^ck*_F`!?I`I0qL66_O1nwm@XcnvgqoyAXqQFqFg(4&ZtmtJ1KI1nRAs&kj0|1MISXVx+I6Wl(C{PO?4Uufc;3P_A ziYbh~O2OcEPTcmB1%d|~JR%bG9|#NkIPkA{r%^jP>4UUVP|PurPrC`6!A{N;6reAM;*#T||wGqngXDUW>( zy1HQC+y8W2V%Ju#9uK(!q-u0csG-)*X48^ALTpD-mGP@8iDy5O{x7&nH)`IwKTSOH z?7@JvzpAP?Z4e6Zh6~oAAr*o-JIg+0W8?(2Gcy5ZtZqbM$phf};G-W!|@jLL)>)N3Yj%}4N&RA8~q`}iZH zR5gzrZ~R3^c98sn50tyr#ADLJZpfnUnfcR)3H?iAgyMsW^Q6m%Ky^v#Zq3ltN@h{! zd#d93J>jg~?AsQh6>Te7x>qlQkci@PwY){YaIsR7a`wY%=CnsqRYZLRVP-{crIJ*{ zvLWs|2I!Ewb<@1uTg?TaLoWp(S|}JM)4G5gX%>YH-bJ`E%u+il(_}<>31kB z;h=*eKi5f+X4pNXMAj~WH1{_xsfkwyl>D8T{@kJy_8{q{&3}QFdPn5)mfQIqZRi%hXomNdhi^Hdc<^=_H-CmulqCcGi=ANIicV+7Ph@1Xn-91HaR?<;|A$dDp@m6btC zZHa>VJmCi-HTE;$!#I|)$pnx#gYZ=_&6CSUaCgVzVT!DB%rh~bh>P1#F$0Mo35NST zp{PjD0^33GB{v8TOxJjEpPU=*XZ-hiTUrUf+5H9I2^Rw0>r$s*Z-w$$xTkY^qB|wN z$JD_7YP-oQ#vidx}>x`Pt1}x5;QX6 zS4q?>R#>;i@|w3?xBXca$*MsS-vzm#{v~9h-rm?xTc8|Z6kdNp{1f0pVB(E|aCYEY zd1bI{&++%Eq5nSf+Q}2f)py8o2QdE9<9B*}G#BdM>KLaqx?(PjqaxC+dI1ZAO>CH- zA9uICj6dfWOiU^6haDj#2cc3`lxjw6G^5>&UM1e~_L#&^UxQ_>Oruo4U22nY$)gBBX6mc6=S#!M#STRu zsKBm|(E;&KmJdTma%x}aEp@8}6Q>a1B(jg;YNq_EmS73>Tzsb>odtgs9^>>6GJ*w9 zeNbPRw^#l1T?^Pt9e8F|Jy4E`gyxnD96vH(IXHs*2S!DVOai9NxW@(dE2Z@s! zoTBbpn-q7lw$T<+o=skcoZ1kanfz6!`7<(dAQ{>EqtGvEW(L2^mZ&z~FxH_)UUAb! zHRXDk^7}d!Pj4OSFQlW+eKx!!#Nv3-P^^{Y8w7u-~eyBlZqlvw#_U0!T->XC55P z(t=Fl>w8J2tUvH|3N;4t0R_P$bwKe|-Nc{Y%-uriU&WotEjFTZe}MrBt-@ML$TM+n zJb1jZ@k`7)tv~^hhLLWt$495@ZKnoa@$)8*jdu5-@tvXl3p;_WEqY#=^Fj8YUuE*UW$sZl6Qx9o>1e>Kjos;($) z$4*EJpy9$!NDJ4f1g)w{>95>3W@;#iR)a`6{bR&O&>~89U9KDq(E=eUWrYVL!hiPc>P%ThkE$) zc=nG8V`nnT^kH{SdT1u5d4K+VV?o0uW=aeaW-iHo6m&`yePeeZFv)j-WT#+G55q`F zV}hFW9=p7+)`-g#bw^z^7N&sA^lny*mRY}_guq#HKv04pO-o^YWO%X#bsmx_LV>4` zVzYW>%d`;S)PNi4iNclR@5*<*$c`s8v`l17dw^(%i^ha`o8!!<-aG-u&MJYB*OJO1 zH^<-xYx;1eki|mIVphNXh<19hw!)pIPPtgVkxDAN3aZu}b-P5YiW~^a-~U5}an{Xl ztJjVSD2Yio3iiafZh%Y(C`okDNAQCsXa9~O5eY>W^wnz1vNh<36IY8g2GDd*M?9>Y zt@CfAB7s7lrcya_m`qAg1UmA2m|xkLWW^#E#=era8aX+BoWV74oM|FjI`{2U?DVzn zJpsJMwL);f6BWv>((ej|d){J}#?SP}e@4xsd!b&dq?j!#;BeeDaofIhYx6PWqigx4 zR*sU#cdO$%f6Kbn^)`5~EL`TVtiHf*Vq#0VB{}jr*ZPaU@U3#bgXs&SQC^97#0 zN|`{ZR+yLaj|qq9ii6+Lwqr%g^D5>1pAG7Z9EnegA zyp9x~Uu5U5T>gyJwsu#-m+Cqn;y-jQ?zyh*>&Q1Vpo}1opJ#kz9psK-n|My&eK_7+ zecDAAeC~)2CSd+ky`Yoxvo$n0_zgV|Mb`61=f3*Q-Dhx%7MVepCc2zy?MTWBB%&gn zUR|BxX48R@tRMiaI+p|DASz46IwV030u>_1*hIG%0m+;dq?)O4LETt7JBPeHH$Pu4 z4uCx~?yOY*0r4&_CZ3?w)ZpLZHR`=LNAzwh^Sms=rtVm26e!2Of_@)SFB;Uk$^=M| zh(*4r^efQ4YRijfE`4C(3Qx`GVYP!@(zFo@6u;-!YTvN)$1qx_jFQ5dJ?B_q3FdY}D!+%X*PtLMFgi~hBXVHF#+q>~b(&e_a>=A?g-yRU!uV_Bc z<8&}nFS~0KJjPFDhf!K7hUaETd&Q0JzRWFk>mG9j)Dv}I=FqT93yYl zWaw$2`@(0hn)$WHafA6AWjF@4S10&CPmrIFnxfC+_!<$P7Mpc%%%@YSJdgg!=lhgL zlJhyE*BzW)ddRvhT%MGl4@h_6P!{gymA^v!e5;-ag>~VKgq-TJIbXKvLVx}Bxu7wr zGH%0X)2HNx$kQS{E)VN@<#`hvuIiDmU1lf1hN0{Y-btr?^XaUmE9vb4dRftq?(KE& zt%K_fM;QJU@$ThV{*iB{zwa7`|Hg&cbI0UyeCdr)B2Z~J-BVByouK*E$^(KQ_um=O3FVpI9zWGkU zJDomGleTa~O<&5wAMz1(6kfd&wALE;*5kCxd5ov9`HU5;zv*WFv>ASh=PqZqw5!g! zlu*ImJ^}|QbVU2ak%s2KCW(&QYQ_hojme;*qsLXgQ&3{l_hU0)9771`m#`Lmq!Z9NMJ0y6yTB*Bdg_=R9gqtrrw_N)b>J? zzdBpPeQ|f6>XT*nBG!4O4lTXh7qrfH`fEI%xAjF3X0Vo9itW|Giu~w&t*=CL_Z)RELLaK(94^_J z0%oyzaKFB-z`Gi`r+N&pM5n+!jWPVfdYBO{NY4D+`U=Ura&PwfrkbDfjZadJr$aR@ zOZR0OWhy%HO0!N6@3r3@IQM0oG`dpt@2a`R5b$n;TlvZ~c-OT01{kEzR|yDT zsm6G2^o))3Q(o4iFEE$pINlCXgzsoPH?vAkJ>y=b9*32_k`yuVAPWRB!jDN5Sm$?A zr0kJ=GbKUA+eOV*+X+-IhQMzz3yYP5(4-HwGXBiswt|3{4^pYq9@XRw+qdl`Xd4lo zTNaU9_Dxt?>Svh_8(!Sp1TwPWCs4!R^XG*X5MhBrDGyjG<={d=p%=l!Zj3JN3~iFf zejt1)>GEj8U#SmQ=Lop#->f1JP4 zn#c1*aJpNWKW&0`n$s4^X(oWU0?haifnBK)2a=i;(jQ-XUG2Hp?YPx19nYF#Zel9OhJYTSAAB)x){HSrYGt}PMQbZS6(=bqKlHO>dpe_1eIJyv*Glt<-;5MwZDcaqKgyUkXKjfe8fV$Z-uJ zqi&)v6ayDe&os&(m=CB#^uViW82d1*NQvg~Xx9fDY2Z2?5AKC&3W-BGFm)3%Zh<0nCS{bd=VfVmTcOg07 zTdtec@cpD{r-q zT5W+ZGpYtiCjl6lQJAHWhDLhL7Pz-JM;oWjl`AfMQLxx@@VucXe&BL<%i&wEPn9bU zbjwajG2OHfXLdqjhQkEpsgG{*JTe!&l9jZE6_w1b%fate7}Du@mcOPK{{W2^?LSr^ z_b$9?BlHb@Xg?Wu*0mS-ZEm8I)*K}E3ZJYZDXHTEY!Q-HHg#*PA`wA)lp32+E@n=C?tkqW1PAeDxPbpZK-j{PqW6-C~utcS-uR zMkYzT`mMdmkGIjjR-CxF?uKKhOz@3t@!frBn|=s?HrfeDgnS7=Dbn`Lt4_>K=oQz^ zIA44D&9|r1j;8+xKgRTu4L+{naEI*E>yib%!Qqm5Ad0VB{ixjbvT5=#-uLw>Yp>X+ z1%O#rY7%BYApwE%g3Tnpu_qsIV!w8dArn6Rmhi{gw`iNTTQFJAZSU0r?|`Yd>!Wy2 zFxQu~XW$gqKDsw|->(FrDp~V3k$_r$WK9|PP)iPf_@X5^^ zTg}VOF`srM*?apcb=m^4@cUR9{Jh+;Sa_tP{Hd9y2U6D%g^(lQOTVwp3GF}%g|Gw; z@-hXyjIdR--{i-<>A8XVQItaN>~=2J0%(oz;mv#d99j76iBsljiOs6(vHro*WsL?8 zc7rDXsHw&L*9KH~Ac}bQ=jbG$a8o)dD=-zM(iH6sn-LL10+&_q7UT2U5IQw!KA+M&-O}`V zfNBKi>xxF>^L=T1YCKx?&>O*W9EGZRg)30;{&dq1uYP5r1GawG#xe?i$vpK)q&Pp4 z;2JrLzsuJChJO5bjx`H%PVsuYws?OIgttfQO!iA@5q#>6Q(5fht27^<7#@7D__g~} zhv!3b@4zSTndLDapP^#D*J$qRtBr-Ly#qHRo~c#7oS%*Xpplff~KAOHTsokZ+gf*SydRQua2|Qw{S#n@OLDsF^`I-Sa5K@aXes-nvu` zh&$SXJ_WrzI$6fe*|ofK-oD+t92+;Am8R4z0LmPLP!XOx)N4z`G7Ycy)%HV_=xWHy zjzFmnT~aUV=@%fN_OBl}4^qkW2&3<8lzk~UxYm6vzR!z{z_H0|Xkb^Up-P`a$WHHc zc%q>7o>=C!{2l?MRL^t^NEa3-8UB_~m;P5bTH2bTeq%wFKi@r03GYrl8Z1Vzyt}PMEk{n|fv?Y-91y}J8pU}#UH z)LFr0TklU!f3-44X0!CW5FK*rzq2-EM^?NzKU2S^PY-L5CjuO$kS&3v*`9}(*%8qu zVNjLTJL7^c-wc{M5bJ&Z5P$5XoeWT-ki6_p-`tJoeA}byK<4Ys>G%+nYprF`9y^}? zJ0-8rt}N3lsz%`1NOueImS?@@!|wbB$=Q9`yhSoIdEKFI?x{C)-SwIJx{=x-SXZCL z>Bs42TQv3pbRYlCMX+LP|1@pOT-}teXqQ4YOGuS3y#h7a_T!DL*OyX+G;~sZ=<}4A z90vgnZgsXT(>H}!w&jiReydP=NP|;Gq*%nXYw>yHlRKzlq>i#O#ronG`ngMUs6k2k z&G52p1HbZSyytbaSlo+U#0AXqH^9^1u_|$NvMKtOAMjV&DNG$>Va#dn(Q*47ZkWf1 zvZe-Y(f60lBVNyh1St&rEiAG7XPCCjRkh%Rt&x9+P~g60aaoXKGUut|74K`Wf=SYZ zT;7=x?5EU%=JAS|PUN;4yYIAo`MKy5O$9w0d2hehVDkm-`(F2Fr&xr@!uHvLN(~Tb z?Fgi~Xs64q$@xNU2w<0K8u=7gaQpkq^dKP>n-fZ9toEhkJSVuMuYaIA#2vbBeKf(y z26s6@0+;Z2p3ysQ=-&PkqqTSh?u2T;ZyYE%9o7!g~|q8U+ILn2hAfZWZg8FGax+@>%B}_mt^F ziWC)(0NCIcyRx$qJV9lH(+24d{vUf;Bco|L+vfF@AKjWEqQ!l_;SpcDSk4oNWN9@p zWhAZKPoC#g>&a&x3MDzej%7a%c$GU}-=ry!0Cutq93NSRm}pCNj+?J%MR?OZ#f|p= zo(+-QcqJ36`lx+PwZ=$fk_=z1!7odnI0gWaW5{^5VKH7`Vpn1pci~ z{x@1{T25>yfqk1M`mhB(=`W*lklpU~B~IWc_;l^JjKQ7`8;>7u4n#IJ3?!jPCZmAZrOF#-M8AvaebqpyW#Wmv+=B$~iaK%M9ui;{uJSw; z|I-QO;~^gPel^_mo4hFq+!pe>|7nE0!smq4V@FuCb4`;OK9o%4+XV6P=x9DXhOd*A90 z;5O{K6f;unjf%Mx&MUT+Kb^v){vrx@IUkIQcNy>Joqds@eFLG^Y0E1k6XY5kS91RDx<^`Fu1Y8uJbfs;rmnvVrdXK!60$Z=Scxqq(Fely}50< zh6Pg_2|Yh(zl;(UM%(gf@l zTly$SqX#1!Z|jEmI+J49Qyu$WOCH*hG}vdM`k982i2H?98z{EIrCPeOe5`3_XCmL) zFcLzESXLTC2$3nrTYBg7EY;oIzqE~>6(XpO?fB;lpgpGiyZS(X7`_Q1$|#9-tk;U2 zsT8B&d7k?jwVizWb#w31fi>DR3?K2!?3Sz#rjb=&Cnx+IGPpM+pK|uxG>Ae@$;RB- zIc;L{aL#uYpPBAI;%XIrdBpFTP`%?8>W6`U*2aHut8CW%{fajALqiibA-+gUmO;Y2 z*W<`LmX?VLt+n^%rz6-?ltAWZ)XLj53Rsn?nXsS06ad+X5eP9A=Z7F^g!<%qj>S|* zLQh0SVXt)r8-->MYYU1=6L-m-fSRH+`sU1>z~m8sf_-2sr)*Jb(AL2k7&CblCEynQ zPB%7|u@QORin`1ThsE?o5x5a{A_9`+eZ-tBmXmLVj>O##3}g};r{ZVFuaq-AA2TdM z2oUHeo)~SK+p*?INgYOLM$QzAt#6N)-}P0F_6=BBg9e!cI-8Oy(NJ%vE34;yDbR5v zI&hbkZ}a=;gwXhNrg;Gq_oyR!qm3ZTkyP-F8zR_LuU+Pc`BW4lX_n_+* ziaUid5g!f^8tF4VeKx_5o$#DEu-7NRFTaHBAFv-TDE76v?X;K{x)03QH6f<98IRki z|2bHDOZsY$ZqEb45b5^^5bKaKogdy6_xb6+^LgxV?(~8DpUe|rx&}|D+uxLHoAi&^ zIp#akO|oYM@AM4d5ic zKnqM{N^`2Cf^q0nF!hjOh|uyO;DyQ$hW!YA*U-lO`g<#An@px1tMI`yIhI)lvH4s53YnH3~;?0^({sC;RMFZHd^f{ z&bX=djSW5_BbPSXu}Ig9;#S^rQcj;pRh*dOft;B9Wj785WJB~e+7y&qfV`Io*!yt# z`-ti+XhIhM08yIITY{{YWvMj(UmkN+LaWhEW~_c*Nm}Oitp8TY%!X`i2{J!ddD_tp46hZ*l1ed-t6;BiuPsTld+}*F; z<3J%26?0$vN^C3w*iHg1o75H?_GLJtA&0fUzK?X}TRy>!CMFxcyJ|}>3^jLil8}E-ffvg@2M-^J8f{;Ak&&~4jae0net-***d03lDQy|VB_=-J z8;pVoPGfXgxpd>OT>;~^N$IJ3{V$Cj%Y~$84Wt)eV!DO>Ex;auUnCD>KPuQ1uWHuc z@Md2-hNPmW`fm6v4XqF9sye&lXCwuuE+hqI9G#i#&zFWPk|2kxQ4l79fgsPXX*HrS zs5fTD~|ea6h?-=>Hat&5|n#BWx{fI@)mo-l%=Y}EXl25MM!h!cWX!v4a8F^FG@F9q;0a89LBHIi3-hb0p!kz&qp9yf!AgBS`cWn9 z`1D{D_G*I_I`?hLgKRKpSo2hl;PhJKf2w?S#zGSIDTmbK2to04-rZ47e>mb6lE0E& zBkkRcSRry;IT9uPRIR*K`{5h-6-%+;6D&BgU|+?i0+VHxhhCTM$4siA#H|KP1Su0f zYu+#x7K~dBEgOd_*UGGn_*bHsP->o(*jcHiR;I@vFX9PDNYwul4MF zP8fUe*9BZG87a_E)gG05Gyr zX%t4g7|a2z-no3iDE3{=ngB{GZlD$aB1a?Jub@yBMXv_0hlYk;8Lqz51kD)}t1=aB za;u0%FY;b^GT3qU1HaYviRZYq)vV16dk)ygj73lsNa)|~MPD%R`eW1ycu6$KG} zfH>fUP3K0>kGpf(2Wy&rdCvXR>}3+`!%y(@%HFhplJbtK*hEer>4-LUBHe?@>e`$s zP1(iBur7oT`OVKLNEjQQDp>Q+p)wO3Hx)2$)z+V{+vL=J@A68mwrtzTT*+9&6tfQm10|^t2=O|IBV@r`-*NMg%}q`F zF39&o4a48up}8oTSaRR5$^OJbEjS%|??P#3e{!KPycxRC2^^1FbVdfLcpdyPF00#!yr}R(;iU)1Yns9lZr+A(k zT;-k)f5m$Dio`0m{7If-P-tv${8tp(w4}bawsvxIkz3v#mAysu#^>9MADv%{49%J` zsY#Conl|s&PFOM?YWtf+Cv!v{yN(@pl_Shzyn1J!SWkLBSYuD$6_Qc^T%?I7;im#d zxoY{o5Oddr8%90*1B;fDTw2H5ysW2r$Js1X7{4%`_maH1^VQC@&7j^Zje8MNjYh{) z_||i7D;2hxUf0uDk#Xte0ch&7&BW~(#PK)RiY0{7Mc0INbye(Y>wLRvj;6VZWXN5+ z<;tZ#IV{^ePfZ|hyM7FXH2n%%!C>InG}@#NmRRQdz!(&nlkt!(2Xu9Jr<@No0Sn4nC` z{Zi#UHwOcB)M|)055Fo8n)Qfk3b@;|(ZLsx_^s(H*4~}9vlG->e5)pcA<&QpCT>8< zaaoC{J+nhThV55q)8c~YY-pXa%|wYsPIqBLBlB(#^vlwA=mc}!D}dXAK3j7s@&Q6!pjQ_@d4~WO5kKqq;*mK?=&mbC)NYnNAE_K~N+=TzQzYQVz;P+VlC3C#701DAr{kRB>MB+Ya3CloaeQc`~NXA z)Z1IfGEE3ZM`qEK#VWrStwVF&wkg-6M!Q0@GCiP1JD5zgsmb~k#mhbfJ$yWL@=S)g2nQGr{c3fcZ;F`4;qg zqEJb?0JtmSWTWkgAJcZBk?;KjQujZmYyTQ^Y@=*FHAt6eiOCs+=2yV^RjzBHHh=V) z@i_m;%{QiYEiY!xddX9r%`QM?%;RODUB7;YHjp6Qee_z?aAMhda9R8QO+|rd*!5(8 z2hh6a<=ZbJjEU*{O;C@2b7gJq=GCV~mw^CDQb{QQ1wE*j^ivxusy&vlk#ZvP*b@Zn zbYeK~e-+E{4NQ4&N}w=Yi;Yb1doq+sC{#V;f(Bk+MG&F2-NG-4N)rMLtI0g!Y#5Uf z)jig(>miOZDz=OiiUWKxdq2u9g#d9`R0}2Vb$Lnel#J} zEEkr#9P-L%Aqn_v)NU~GS?lmSfBn5cUWx*ZR1ud1KJYCwo6#E0`^JrRRbm^X~rCLF%NJ>HK6a2)Y4Tb6zl@(F$>? z!-8PH&v4)8<8lJW$kyjY`=K7+#l9wsrz^qeRzMK`JKJ6nE{iK#bfGL#_;5qR&o+jG zg^7z+`fa~yfc4F$5wbtim_JU+ z@d*SN0zMBW^Vi;B=-XEx3kRX^Bq0MzsoZHRM$?bK&Wsch5!pIA!hlgRtq_e#)#2fI z_*SL*L#ncH9`WG|zU3*(I-k+KGYUT2eJqvTVb(Gn70B1uJry*reZ#LPyemuHL({HR5l^(0xVj!U;K;GG@8=tN;b zK`;n7ZSC!+mzRV4w-AHDtF}Yt^}8-S(lRns+}xoL4K6G!tkTPSCaet^Qrcc^bOb6Q zeZ7Y=eY-Bk_3O3kuD2)*cod^mcxAw7FMRlV-UM|vvPBmbzoSw^t-<-2vnNdZvpWgg zy+=FxOvvX-OEIr}Nb@6!h(krQX@1&{yO1Rb#3V6vg4VJPA?j&DC?xkAINFVD8(Z?I zV!XzfcPZwHxuGAb!(6)qMunK+Wq;U{Z6s=M3UzpgB+NS`9_)-3fM`P}sm|Tiau1_;DuhbkUu9LU-2}&s&V)RKa zp8U5_wNlW8+PHZO@2Rc`v!(h?2m7~yrhWe<-#;2_9Ubgi(ms;xE*T?5NF!hf@q2yx zZj0nQ?+^3)0(e~F^SY9GB|tH&K>!{gK3;-a{sA~I1NHJ44nHeaSfNpgIOjCQ)0$;blw z1=*me6C8sEnnDSDcz?v^j>?jQ*gqX^?Gb=^VU=Yx6H}+{Yod8e*OD}$8^b)}j-kqL zg^+|Rv+-nfTSzXSAjEe&IXvuHy{atOH-z^#pQL<@A&X~hG;2-O@HH%=Y@2{k11ZGD z*||RQbms2I!Nfd@B@eST9D~;q>QBvB538wh*k^OG^(AEFD8J&!Qdn^)X4Gq+L7w5@ z+`TG-(pkUumg8kd5VoSP{({k6S?qcQwW9r+P>MN#jhZue-u^bxex=RCVuv==Q|gX{^fOSKy&=!zzTi8NU@3Uf_L$@}140btSn4B6Iou^h z=`gRO7RqEsff~-jHTwOALQ6CaKVpVvHaw`>(DXr@f|@#!Y`pN(m9s34UuNlxKd!Pf zOF`U-3*Kuj@RxM{y6I7W6xHokbQ(d+9-THI@$|{#Q}M%%2YY)x0U8A~>vYC`W&!msr$z&D zd<)vQiB?Tk+nFni>jLS*4PQOuXDYf;qh{;a{$hG&gf+v~u9_>qcjO{ldu5RJqo7+9t$gtE(_m!yZ{xDF5MPxt7-oBxWoePeMwOP9K6W$(q7p?2CyLJAp=E0uPxz9wSfg{JkD7dMKNnqJcEBMi zF>WCc5UM1yKdds5v;%i_q5^2>OtC(`F)bsrHqa^v+H$q;%1I0<_OQ9q%_Y$`6nyq( z6kM2#bb7dJ*)^;XxMWQBYT@NjQOQxEgTCb?TR~oa@X*O>D}3T66FT^qG2(u9YhE^yg1{%~>1-N`Si0Kyot1 zk$ypA!rwvQTD1S|&jOL5UmbN)P&ngD*vK`xOXDHTPc7>U%og|}$rl^?h6S%776JF{ zx+<%xAy{)sE6lJ{g!>LHS;mIv`G};9TANrwiL3J(xP5_dYDZ7TD{uOV>JBA%>Z$-C zE_u!N>)S2f04)0={OMrIvx_c;d#o#+hQCTuiGDD*ae_^f`Dww-LltqNkLi}&`W}msS5*dGQTAsBM;~%@ulOlFn0Fh~0rih7!?asi*?p`<5K|tzTFpy`qB08Hq@&u=f>H3DUd(278-HjJK4;R^DFAV zDQV2(4APt#4xziHUom^&KehMoef=mdn%THP-EH3r8vN-WkVM-G=67$)E5K zPj?^48jipF1@7Y7q-`9A<3!@nw6&*$&d}^rC=?V@M*_>{9kDS`q^5gz9YgqYrLfW4 z-LH?HAmL5m{^S8V-hiabm@p8tr`oQx(y^8Tqx15F%kMOLbvS&YzXl^adcD_>?5bgOFqM8l^M5SCX;Q+%x?&bj zUD(FTr;f}iFv7t7$qct_r2_>0{xORGv&0k@ygcrh#693^|E#0doeTlw?K3r zL-)rW>9YUxrhDsNi{I+s^zZ&Ombq1l1v!GvtjXF8l2HYMbZe4i2C(C|;sw$j*{=|CMF z9R=O9(8Ndkj$E~x^cK|D!XzlsV8!(^$|#C9T>fbwbFU?CUdhWVe$(Cu@jZUq6MtLh zYoOa-F!0D6@Zndn<|iPY2mJ?lkniXc7c35*aa3@khQXsUZ;8(vyN^!g; z?-Y6_ez1L-*WlIHd=)X1Qp~n~95Bab-2A-K6{Aq)P3t?9seGgRksrz_6tIg3`%n z5nW8pXZh_3D$yDD4qARUL=%aY%wsnF13&-=f@iHDLx>8) z!1h80U+pz&S8A%Lo_sEpSfx9`5)*L;+4z%d#UMu8y`>hK3`>c2!oDauzI7D(+z8x3 zU(Y^%aDb~a1WxM)yU3GPC8O^=2T!_HAuEEu9HL+7)+<3Vn`CAq`tEl41=&YxCm1;% z8N~mcqTG!pwj6*h8BzrYDSl&|N$CNUNhk(m!m_4YDq*~VVplPQl8OpQS?E-A%nadA z7q&c=O*?ZHfkI%?I>IO-&ul<5pX5-Yp~CKmV=bKR7{vw-uSG};;`*kZaiu$wx3@Q@ zjA@AxbC-~K6kQY?6Y)pr;nVR=*BE?B3ojn(sXZgjDmU`yRo6G?+mnh3{<8JLqQ9I zhm!`>tX~>oo11);ZXfRLtPlvKDvx*vf=Op(fy759`JD-OQl27&qMLAs{?1<_>G<@NDI8Jn2x?=C#XX>Dp7+$ps?%I(MdfACuTDeJho$~fuzdd}C%Gvlxj9n( ziAg*YE|Rku!9oXr9}=~bAH}T42YI>|#eAqBgvSd-%a1-9&*tu?o{S2^K;QNbzUOZf zQt;wKv$;7^qL7!#rLgk{|8<2KTr#dFq2L9X6P?Qq;qVu{j5jY*H*tH@T*7B=GZ>to zxSrQy`G7)TGE69W8YNRfBvM4Y<_&M=3k$2#Q1qZ61N7HQ?aOd%5u-O-_QmW2CFQPK z(vIl%0}7?TA~Z;fw31;Vz)8kaDIpVaC#cl&PxOOEYAAj0WS@m_I^o|e_BnhFI_(dF zl_7(6NkT$)f`kDS7~-%)L1)+&!2I%XUTy*;78aJ9*M(Iwt>oY>`09S)b8+lh=T$RJ zhs^$Le(zNGOBaISxcSWo=A~fhnl|MAJgUOP;aWHMT>u4u-!~PB7zz}B?!F`qc-zU- z7Z;Y69%Qq|D6ZW%e9$c1AdpLB=;Jd2FaFIfrKOcR#~KevoPMOmfPn~N4Id8Pm<

      I~A97{&bE3>o0e6XZm*rk7=4Fkw7v=zaGs}osqravVy*k6~Si`nGH!eTxpJxuZ5nCGcCRm#;~?h!BhdwTKi91IZ zvHg>p85vB3A29d3R7vQ=wJxr^@f0kSu+AFPD(=)iAE=RT_xA-}EMAyQMI|Og>~M3e z%w}drcv&%?7hDr2Ln3ZXZ9n-5Y01B_F%-vkWo-qr=7v%;JG+s~OQ}x&6~v)V=4qk1kRa=m^5rq9vRrTU2h0Syup9CM z_r7x2P$4fU8FQ+@3Hl^vllbB2UO_K}PvwG}lA>K%`N4e`QkyMEJpu^uZ{WVZBmDfz zgCd27Gutuxfg_pWmV3P?YBQlBv*WqPJUE?5B787YP}qOsK}?cAf1JrU_ zhHm91iJWE!k(^y+szUaF*9Fayi6nC?GC3i4(CGkkVIp-r4^Pebw+pEj3Z}+pQE%QG z(%dbu#}s1MA$r4R@}feLqC&&58HnLj=2VvYc$T>Y(AE|e8I6tfB>fFdN{>te{EI{? zM?58{dI4#E38YB+;N|c9og-QQj)m;`LpPSfKx@tm)X`>7&<)`gB(yg8GLoQ0Eu(?0 zqR5H#ld-p=^C3J4N(nvP)j=c&{Eh6NL>@|7POe{a5bRXj&WS39X*p(h|2L~sDXlb` zG%W~;7!e}Y&*<=Vf5wWjCsy@Zv(7-DZW z(?Zf)sN?`7Cid@XxlV`7x)S~;Wa2_A@?yzm;C|g}iiPbw{OGDfG;*G*2^1onU^&RD z8q`P0i4berC)|4yPVLOZ+(AAUqS{}x0c6sJQfLf44ALtN?j8Dt$yka*9G>KDqI zu2jhRp78Kge8ZRW(@vj!0j;r%bL6^95A=x~QhZLUX)o<_*+P1?(3BSt;co)|Q^Ti{ zw-0#_Pr?R_G7iK}?wtS0O4Gmm+ycTPJ)nXPexPazOhaRSL$-*OgXGzz_>%|IJ8-1| zg&f#sBEo*MD2*)cyW9c8udOdq7-6G(DTU0=f;;wLlSa(0EA2+Pt0*lYEgc$-a8RL4 zQy^JjYEEWhjy5tOHZ?Mk0ubpr?Q>`(!>0;ZIyOczA~fS{x#1O;j?0x2YFs*<9en5pqXZJl>SrymOneTTAeZO0eI&6588;F$(Eq;IS-h$>cU-^0X`Q@PZcT zxpEtiG7qn^mzNS>c6^DDN`JsZ3F~=2NdO%J_?h!^(2#F6cxU={4_5>#0yAKtNNKWk z84tE#Mrr+lZl`%2hN2|jav7PD9g*@UA|*LGG2K&d!m|O=W&KOV@o*%xE#Vu#t{1DP-Y7$3Ikf(XJ0QC7Su9bL%7_!8^Jv zdm&Qz2)0q4sda%$b0#a?vx*!6j)=rLxY+8)2St7Xt4>!Rgj z%rLAkRlxB%4y@K8j(Lahg9eRHkBykN3Lo&3`gchv*~NkOsfPfw%2+gk3{1CzIeWvv z8{tw;$W;O=7K*ZPed+wg1hM57j6zuSf~|>@%ie`mSVBUGwRPs^W{_c*l#C^(y%Jc~ znYQmOKxO3u>QawH5eMx|5}@YIQf@C*D*Xqo4g-!qw;8&u8CoF|1`kFd>;&XQ7~ULlma{tVW;zkl(xppIM&Vr%;ox(}Y4s*t0}{hh7*j$q@HCTC~#+K44P z^jT4KO=-A~)$nrL@5?;f+Z29snt{)`TbKka5G-;#Ztu1fJhue9s2aPdS!1(!aBY6Q z04^xo{y>49Lh9-wB%6pmv$P#w932s`99+>{(7CQ08em^@e*G3H%CZa9A)sZ*cHx_# zsL0V!5CzV!yh?-cQHqWt00|BVF>d^)KT&9!wD3y~7Z*ZBh2%e2e4m?3U}aHeVFkej z&5>JKm%+3oDxe?r2$cygc;{INtf-T}0--N7@DukB9oEBT?|w|`MZ}>IQzYn$#p#5W zU=%4-`cpwH@EhZk+er?*_jTY8I+|nKU`T@Y7&3iHZ63nek5PjUghz1+)ScpD7iL@Q z!djHv?6Fne)aLSpe+0Q*fH^$QP;qOWck1i>T4f5gXt8K)TXAKkj7cL-8sLy=^SZQx z3>678btpY+i3vaEaaZSftFTFz#lxJ|K=eiuu<0`>6TBblqK z^-u%`hmAD&^|u8xeBa3YDG_b@)CzT`jD!lbFRn%5>4uycfURWRde5$y6BJj&GgoYy z1~bDVRFnOd=M`8LZ&wdx!P?6@xxG@X47QLZU!Py@VDqB_^EV-T5^~Rg*wneEpU5WX6c--pgo9ouBV{>}r zAE>)#AQqKLc#{b3QRQ6e8z$!bO2LGg#fCjZi)$rCRMOAY6Y zEwrzRN{W6?B=SsMHY9(R4Af_lN>}2R7uw4FZ6?}R{F@e3PBhw0dCsB!1%TM*PIru9 z%KVX$;V`8+TH=-?(dvrg@zQ^Xe*yYRu+D8(v2?k^>r3SmCPNYS}`GtkT+H@+~cupWToL@>o zSV19Zfej=p2Zg5KNW686VYZF=E4Ip_VL{otopR`Ew|!A)k7Q!^bYcPllU&T`trym8 zvnc1zY`+aB^!`(s*Ke93mMGB}5{2;rtdvydbx#WN92isiA&&%3qIt!TZhTz$N0<3B z8dz7N7bVFhM;J9K>xJ|gn6@@sE~I1vuqW8gK-7mfgajhELr0$e&4afX<=8!aPO1}e znCKlu)r4A|BA5gt@Xv{V>*h6Z0cIa{Zn*O|=sRZWM4CP2)m?Dce1jAIzR8_Aj7E4& zX1@vj4f5e)5tr?9kB)NgikN*LWc>HCC+k;k-|&6DUWi{mQ}lP5dHshbO;}%?UxgX; zp9m#ld=tOY+Y+MOzmjz%p$)J1`EG7gUTzza3a{*a^z>4_wvMKs1;%UuVqp-tJ?zVV zfl)t)xo)4$b+IiH_s&5lH?TYxx>#tafkB_%iuMx%T!ghC&z*fpTe)vA60_%8a_&wU zY>pDP?4H5}jY^%N5!`<+?z8Owa{<0&YjUPngx8v2VN(ymtj>ph#;hz*NgRN*cj}GR zI*CGlFLnZ17dtv|G>SfnPt+p&?|#;3f=n60;9qlA1nw)fEAkr&YoXWvb+oiC7!`0o ziCqobP5H|F=?V@hrRAO6R}$p-bw91~PxYLw8nt`3#!~=i9*o=4>^l~8IoCQqp&L7U&w72KjqxJgf^SO`P93Dwp}>xL`Ek+fI09j#=7wS+REd; z<;1(EY&$cueDxJUKdP;dt%vUkcwfG^`DMe!eKAU2LXW=LVRo9Nk2c#`ygv`!tQ1@S z6ZFXjXmNZ#X9yO6T)^G_W7^hpfh|~{G+LjLdrIC`P@2a-)&S(3W9)6e%yL0*8M}S= zl==EHJS0okwQ$J}-|Hf;v8(V7$!MXaaibkrA0Hf+eqEt{QXB+y> z?~?(mu)*kktdYy7Kx@+votln5H390}@FoA!*rT0>(r4WWZD4SFePmo$@HC$*CzxdG%TPf`>$fTgp~S9I=Sqz=0HjT|`XClYO-Kts7JybK6J!69G=7-VDTX2~!McKlZ2U?AD}_ zja_OcWoWkV8+CE5;W(KM4cMytzsgWZ3#YmLq?~i$cG5LEqk-H4BIdj=IWz=L?+I6j zcL^|lo42LA`sAbK=YJ^liQSuXdh%Nkw@^VAPz~s+Qs5Ef6Dl}W{8+vyOFD)AnmqM! zco6GHTpQTxk(XP0Wwj^5Z=-dSakyJJ#BV*A4R7V%g!iqkJskQnGG26l^-&=PxpvSt zUA>anm1YX+oG$L+i1(IT^1iXO0Z}E<~rQAeSzveKJJ$zD?f}s9d z?}Vz`!E)BU;k&(AzeV6h0-+R7t4Cuzn}* z#IA6_P*APt+1~86(^#$0#k@H8E!^%z?s0Y7@qcEXMH=(Jh9{anCg2coKcRf7PKghw z<_a*-Ap36M2rg)VN$|ex0ol}xo$0pnNn@+g>^}=Rw)PGS)=a_OQj~{xRY?W*K{xts zx`N^+y6w6e5a9h)dI?|A#*35xEdMFBgIgJsLPUC_QX2cPDVPuDthZ~zVoY!?uMnTD ziOy%i$rV6t5JkuL=)UhjDVc=-Ji82zX9iUy9&^Ph8^DQjp|}l7#Mf8Wz-CGJ&BFyc zBI^{+63dAvi;#+WO$nQNpkl#CE`}YrG!|vHtGH`>g>#ypP)JkVFrz!6Gi6V4*7I`Wk(9(Q1-`-JQ&W%rmLJ z>qr4^u&oB0ZFXZOfpgrFQ@fytX{#p-iZsvO+4!&gN+Lj7f#b-It7e4iqKZP70avTZ zBw1e5*6jjxnL>YA?`gPtx9D;YP2COmpbQ1%hl-92JNmHEk#BY@uD_lY8 z>$p*tJY-z0ckj&?mw24(Xv|YdJ6=3jWZk2>citja-IeJ>)9#cEKT~BmcqL1#Jv#@N zW2+i4K0J^;K9+Hlb#~5_`(0aYjD9uhj}fMLygI)7sgx+1HH^Y;oD`zGS$K##k zzVEBso-){u(D)JiDKY{^!?d16g^-S7N{vW&gD79ThdmS<=t}Y zImpxGq^QsX1E9MpVcR$J@jlGq0h4ebr=UN=xVbz}h=Z4FA(O<`t!7<~85FKrx3jj7 zn-9HEf(+bq$+a{VYFh2J7OvG)rpKz$j&JOWF9a2X{SincX2&Si7@z(_MuKL=ntm&& zSuK3?9A)H)-#x62NPEYhuq?DIUK;{Fca8LyHr>H?@yhc4Q&>GM$lhvKHz`sEtI90qcF;O7~0QS#yhI32I<~Q>ooLo z+o6Oc5vRJ}Lo=cB%qH%XHtUGnaRj?X84QQvAd-q02;bN~G4a_2Uos!7wIy!X|J-6G z!f`k2yKu#@TP|2@tVS;t8M12J%SV?oTCuyT*UV(6;MUDtp7R|d{?@zGgKucH$z{mb zj}toG>s0>RQ>V;djNFcrjH)W%U!e1>)=NA+JDZzY6yWgN9A|V>%ox~n0jW|)q*UTaq4EyO#P-#MDzvb|ikYy6}vS%4zxc{*mXmEE7sdyLaiRSO{ zjuwt}y<<=fzV$)5{L?ch=X1FGzUYFptnKLB=cD>-Qqf*6yx-q&GfN)BPDiNgnb6OD zIF9RcQl`t*6-{M)+w-k=f8ujhUhb}A`s(j_USSZvr1#E2#>eOKPhIC{_UK!Vd-cVP z!c8~+#0$S0f_>oSb;4ci4;+i9!08gaZa+alNn-5xNvQ&7>00oIxw)Aj-#r>YQNZUg zgbZ<3xYzIK+8y4j-sHnyj60EWU8;mqZrEu8!Fz5v!g2YT?R$NHBV&CC0Tlv_E^IPsGnFnT_4(H?TO zKSF>tjn+-BF1!hgxGB?CSDl!UxY=YBH+0-w1i;6Z!^UjxgU8W{ouQT$+N|A}35`2w ztKRQHfP_IoQLcu#Tf2TsXXv`pbEWiLPk20S^8~mJ9@PD7C0w_v#G`KkjN`cDtlGto z^T{}`L%z9Krn{+pCp5@17q;>Z4exRbsqRo2V`~?cr{YLcqF^78s?%J+Tw^oYei0;o z>pu1Wi9?eldHbfsw^h0vFBbFZksTn$_x(HSWjgk>x1k(GEZZ408hkB8z;EJQgS4)n zb&UH@mLjBU%%FH5Dh)*#6&W0@jcsAKZ;q&zNuE(o-yfdYF(;aT))b|}#(Ys^9Y1?t zh1AuTT8Y3>fac|lg79ZC>-NZ6W@nSzv1+SRoYfmsoQ;sbW=P1jZ<1cmI@UVQL<<{CuQfoLAGH5+$%#24{kao`~o8~)BzyVIL)u$p2F21{Y z=3SPY>!r}Rc7!On1D)tMCIQQ_)uO!K6f`N=mJq7rHxh@9=^VWE1sHyrH@?X*?darp zahJ^8kUs73pKtt-`s#X+cAIpZ+d^XPs*ApB7Z~&kXusM!r%JopvR`}ea7i;~{rCF2 zc(VmxTv_vJT)R%Pm)44nn2s~(>-oUvf@aAt?&9vc7n4`8KM* zu0;7953#tN#cbAxhPCgG29>nF3=X%L(f0^?l6`UNcDys&603H;xN8S+=KkvA{ zwlxDd`?`sNf>*!~_t%20&*rai;B)TP{rexDwP()kk^S4hICif#G#XS z-|XoOr29n7o6wIRBl!F=+>F|uJ4e+@NK$k16|1+ZL%f*Un3SoBsH+-ms74#qsN{mP z`;kxF`kj^oEb*@UyiPfmq~hN@^Kl;{;Qn~%M`*6+S9)MfC!$>QfgpS$m3UpMq;K$* z74n1cGpgkEs&ktwSQHH=ENuJ`r2c$0?LY+wpZm84&ezRXGL~O<>rKi&!^>fd7Hj~5 zUB&cRP8%Etbyk)nx`fMF05SP{&fBbpLRbDa5lRY@+F*eG$sXQ21w#Ky>m`h!ta_1%D064Rd1WblLz63 zBPdbwFIi_0{PUswP4R2RgveTwN-M0yyb3lLfd)=;? za$~zB<;&;5lL8_LJ|WP26pEz^8ZIy3#h5gk21iP2fG+B9eA=HG97_q#EzgMO%@*mO z8mhI2LSXxm9l@v!u(#hNAp zszVwb_q5Vz?;O6Nkr8pXB?m+g7+Jk|kGXKLl!lS*(}ths`7!KU&r;F#z}vM*EPeFp z)L2`KT-;a7uumb^{fLmjH`xZhwa?k91QZzX-k!{|QUnk;8>9#pu_XnaZWLp&Ah{G} zafAGeXj~Mn`pWSwZUf72!i_!>Hlsgc9=A0Iv7XGRX{}~8+7${L1nUadrwZb`_f+pe z8_8Kf4W=pgElTpP69-~bhq(Vv8~_8OKmrPlG{TUMzTV!uHj+W%BVPlrA-I~2*DkK6Wk%V!vuGC8{FO9NzmZ#8Z@~35L|*=aCZ;7 z1IfMn{n)eT?DpXo(_K?SdNX*IOb@g43kL(DZgak!fu(#P=?3>xo z&-t;0CpBlDyimSW#v*6BK_G#^lU6P=(feP2t}SQ#tT@i`d%5+XMlz92vGDmn4^+q@ z{*Zm{@b7Zd$ek9*K1^---34H35J#> zgk{uhhirulvs;k(b`u=NNhz9$WBnK2gk2GE@e!x{xZ^kTke1SesLfs;JoptEpBLm=5>{P`65peAsJ zImL2wJh@v*$j%zyzVTmmLiHtRl|#5v-rkAR(;%vw(ovH1@u6lrCSgCR$eB{_X#W-v z@a9~~62~Ggc1mqqNnU>ZM1^}(XjX|U9f$?TAfHQKgr^6hJOFv5jBKNx{ZOZS*D-pf z9(sx#GAfJG`yjH108K}DhfK z%0IerkW{4p_-j~bT(Ma60Kyl1G&TzLcVqEfl;yS#UrHeA=fNcqvyC}VxPuq$=8vD` zRdIA1s>_(VfTcwaE?n+uwagtawH8;W#csy`wZS-Utnix<1`7BS?V+bD3pA%k)~!wY z=x_bwjbDnU24NAqr8Oq6@)H_dP5?{s9VQ) zlGq~7K&arx5^C?$PZ9M&`ynjd-Uz|UY*=d*)CJkADv2r_F;(c`b?{drXMcovbZ^XO zXb3J0`Z3_vw*)3z4`18fHK?i4bZLg-9JwCt@$mHU&1xY;(=V#p%6&tY6{gRA6_K|` zq1|;B>K#HC!o9TrQ@;yw1UY~i#>znIfq`LdfztaEqocd|VQTeohesAk6QoL7s(hscX#qpd+kh*cf|GN5rm7cXeIkK48_aP{xw$-`8(qG z=|NxKC(Gl<8J%}W9oCEN;PcqI%fL~Oza|~Bv(EkxBeg!iFp^O)`#V&Ue6Qug3Vet4=$EzHlXPx{C25>Kj9A~^m?b7&Z`1-C?zl-owU8nXQ#KwiyV8r1jg6JT$xEk6#L5D#P@L1c zo3**CjRZu)2;`Hm2&0uk+emCtxbuZDpS=KaEgnWZHV zcxL_##KSt~W31A-Z#@}@V~$_e(%^O_D4UZ=bJ2CJ;EX)7>|QH_CwtvLqEuvx;A!s# zcyAd}4dgv^?GAK81q&cXr$~>!T?(CxHoy`n3fm&D!{?N?3-NWI(D%$3SO~4H#u_zD zap1dfdaL}mCaC;IXK0X1ll1mmQ8Aw#=Trzo71&$KWsgUWRZ=d%yYiTqzx$9q%A5D& z`z#-x)Ev`KRtmeCo!}!T-?y~eJ=fUR5n<5oIuFBHEc}f}3$TQ%3pwm=M^FZ&wkKJ$ zee~F`kcVQ}3m*>VQ80y}Rm$rPtUp>d)f~#s7>c*De`C#XKg_Psl>tTVH{!q_bGuA! zgX?CiK7*@L%-}qDb3Jg;$iZ*kpx~o&E|UZaToDVtPF#DY)Uk%TA((#Pqch!`l;8a| zSzd}tgo{*QJNw5@>6tqgVM^4lgRixUVEcD-a$mz}=n-R8KaNgeFkL}W5o?{3r`xo; z@nd&WZA@M=aABwibOc^c)%1YT-Vz8a#*77lB`Q^cv(Y9JC-ak@z2Rx6-sUFF-yseg z_BRJ)s=up8!(Vqx7KCVi3{Gv>_yqwW4QVL;7edXUr@jP*Z&{91nwkBB?Gw12GwwhQzI2I{I%$BFt@3TL#HtAHml@aR>rhD&*NWit`H9gj zlzXY#Q7|d&8>oP-f?#Z4Uek50SSUIo(wN|EZGHGX6?su=z83o@wMiaU#jkqDw^oeC z!CmSr?Y5HY8JLgj*Ei>Qc#7Qeuw?7vFz@UuXelUjE^K%yU(wf#1;<|4@Ran;KCP)zW&>~S4|!SC zAu0AMPR#(DwT!YRAC2@=Qjs~CVN*a5_;f_Qu}z)G5N%jz%%aDybw=wi!DuPHEvnGm zQkl(!u_*ES(Ht}PcXIR-3riy?YTp#^LE}%I5`)3RG$oOlR*`t4Q;qKup|jGegB~r3 zCP%Nv@1%-lbM`e-mE;AV0%3ph=<%V2;DNhz89;T-as^A;qw6 zsBS|o3RofiHaN-BfUUBr;J)Xpi$8kQ^w(EMU!=~!+m}MNo$T>cT`ER$dx-xN!eE$$ z3o{szt{*z~y-AAC-Hvv_|S? zW_;M29B)5O0UPNKteM^inrmx13Rn)UB-sL|`}c?T*sS(A{Y;I_I#P?hp%PgwvR4eP z@_p@*AM&hdqxK1gsaJmTC$iKz@er~1tjP56_`V|;n<=ok{q;aIW8RN`gR>kedyn(V zM4Wm!3WVV~VQ~KXM&l6{(WPsm&Gr_68=T#D{mp8El)EKV%NSpJezzp}lt6oQ|JYvh z!#7zf^?0K@w}Iq=JB91H?3sgBNrwj&wYLC^kRxngzX$w%SGDGL`Lx4o-0InRkp!o} zN0&3Ip-_5V6!NL$qsPjtGjW>_X4oJ>rgf%GaR3EUC~M|=i&}Q*Rhb)!i;_Yi?eE}?UG0>iU8G{ zFT&7sN6)|N>1gX;H$XSavh zrTg+0v;|+Vi?ZahXx+1~^w&*X)n-*s+x|7=%fO5F&zpJUuYU>$_FMkrm%>D%{Ev^u z|1TeD6AOc>?%`oI?wg2Q1b^1cAsyd>LR9oh_|KYZLmbu1m>P!4j z-vGy-;PgT!ZRVU<)>z(aN3-71+%Y4E<0itu|9Be0CVzjJtbGl?TehOos2Iup&Uy%@ z|ILG(&tT6QF-P75N7>uBo#Z2pp~;Glh`BKzIAx{QR|lB(2P%Zg+XzFAds^$-LRuJb8{e2OTW(Bi!1dEyvyG(IZ%9* z7+#2r8PlBA(nxKOFSqe)bb76M=qd;Wa@Ose`s2~KNXZSB`RKKeegW; z=DhSxd}4x%{6uj!s@3hA*0Y7L%dzed^|S-yP0usp8+!M9CgqL*!M8<<45t3Z;PGTt zI^!nivG5GEwbJ|v)P%SGTdupKqmeTGy=Z!jU(T0sP1Vtfi1ogzk}{?;tLM#7Gb_5h z7!MlLq_~EX2^5$Dyusia$+;>mHO!WI0d$wC65s0MW&$QI?ES19UfVd$h8)PcG;seD z{S}6~5s*xkk04p|i(@k7QuN~F zIblA^@I$riA4;j`t1|Ii-JYK-+jt_(H>58ho?zp2C0ion#@iX6*dQPg!zVqvaROHja%$WuVWS*iUv(p;NR+OZHV;MYaT0?*R*J> zPkfCC+xnhMX0b;>Ctk6DOwTeP3J7P+R6>!-Xwz*-i(KP(vx+`SIg4PP3wf6Ng29`a z;+ly&Hq3f*v5+)r2&ZE`uu>=^eVH?4)n{mnF;RRu1~t6x9SV#YkDAz}S{N!nEYn`p zv6x(M1idfY?GgWp=xUb#iE%O)S!bkEdEF7KRE+cYSc>Wr`}!Q+wL6(i_);?FRXR$q zd=2bz2~}?1(Sf`yey_YE+=@KL#4bh|-?33^pomGtRA~N2w$o_%!V&zsQ*=ia?Iv4J zeu6P6l@&=&)3QI1TBC9?O{ZY7>DYGe==H+g3cIHZ2j z0?iSLNt%9+jwmFC$N1|*#mmtkCCbUH`mYAsiR3J>dbi{z6`~IHHzPz6k(>_*&C`#r5o3mAagCB7=z&uc#hbg>pD zY?Ly>i$8|fKz7={p~M%|uZI?><-l5VodN2tpZs`CKWkM;O)vhPbg$!%+5^W$V1@$G z8A8!O^pyjGIBYKlJM&wM=ZsC#?gz+LT~3Zh6=h!IG;#2`2q^F0zyC8rH#ad!)zQVq zL^Nt3`+!5FW8?o=ML^&9C5$uF(ac}R@6+uq8jL+lUTx8bXND_9Iyx%85k}^9Xz-C3 z78kH?HPv&7G_31%Z+tjXYZ;!vv$L)IN4V4i-~o>#Ekgt^x!k9*{CoanB(+d8H&z4Y zo33n*a^JW8(Zr-C@q@Dxr?Ic+^}){2ax2I9L$Ya<6NTD~u{p;ScWm<4 zJL(KgHjv+3MZo9Lp@*}Pqe2jmt}R6j`Wbfxh}ppt4S?8NJ!#J3b^O}ia=M=DXxmha z_(6CM8GBu(eHZ-7S3aajR(EW9X35G?a3lJ-@;hrrjsK;WPC{vGvPbq64|F za4LBiiRHrpuoa`{t9;D^U{7oeZZ%vKHN&CjmsQAz%v;Z*rPG`AM4f!26GV4NjoHS# zW+=O$d}ldGGJaIJOwnj(8V%Vs#m1ECCbTUqB|A^i$;Fnr{PFh7qf26lXnzz7MjoLc zM%~$f;-NxIo?76xSn*1r+0@&#ZJ)t9>+`M6u#97G`lC<^4&Gmr-@D9%(n~Vm*t7dx z_7|}?<|^6s;4)^3!+i8^lRSvU3WLa}EHvlfYckaT$PW`G(f4Q>NQ)Ohra#hb&g3(^ z{Y5K%oIh2QVJZ0whpao#k9xJhZFjPyVdvejY74sBdObnU%0nDzl=SP)5E)dX}@8heyxsQrlae%57sz8_gl-cJ-2{a1Znc2eCS$Fd^q(HrnEGF z>UpnBl>LHw8I1(=tt&1{%R04k9a67j2z*Kh=M3C7UGs@KES*_MnxG$2AJ64Tjes9B z`9c$sr`vyAGU?u*%4qYS6(6>N4`1`sw}mu`p@T&`q;K@vcPQoE-I&r}H`VinW~_TR zV7z{1$_m4X9pK`5p?4U4N}=0-gGAVyM_IWZYZTpU!264j?1NPsq&2nL)8{4mG>Q<^ zfWv{j@u(G}Bz6eSwJUK-8!hxDyY2~M0$@EwBkH$=;DMF2I{Z3kDLLE`ljJnMQ^pmD z>*=07^BFf5#QE&b?TD|@=qtT%0W18>5i!5M_I}K1!?uYmq*l_X|F~LDx(ZjofZ`(c-k{YYuf{JCJ>;ZBywI@)CGB& zF3amZ8|EK-i^D~sa#QJdJ<%JPL6^ehF^q?S|84o9#9D0o+G2v+b~C;SiGVqA#gr2Z ztTf-RfwW(H@)mkU3ST;AT1)Sxf-}bw7TgtBDQKM1TM}++5G$y&xmYz&ymuX>IA$iO zQVWgyD_S_X7&>P*Rc#iVGvZVhzE3ht?1*-*O)y7wtzJofovGh#Mv^B{#%zHU-AV%B zgDjI6*4U=aaT}V2KeQ$-#A7FL(O;bOR2mov8OVTNsaS}aq}3Lh(`#9BH9cXCZ?{4B z6|}p&JC~8x5?!&LHv;ePbiQPyX8px+N)pm;5(t^5l^u}sOq{|8(YzzYfe@nOVQ%Yr zKh+O_+vbQO=-?gL)p&-gNla<8*_9|d4`4k^a8$-P1T2`N=+zOp?7F8RBGN&KsBoQ- za$SR^8&H&wr#(w#zRO>-hYBB!mYLf6jiMfDYkM{jJGlvhEcM*HqvuyqQkjFz?sO8n zU3Sa9tKVFJ@D>vLLeN)G8@)-d4WLOvDLsjQ?AuqeR8EYAAKzGdgAxpX*sq6s(74o7 zaHJLm+U;=>B@A=9Yo770oxBlFg_@c@Te7_67W_l=oiLm&ffd!7s^q?%tEF%S8=6>M zKNxmk#d{(YRW6Ddv-F_^vdRNwB7Q)q;I2qk8%?_DOd9`3T#-LpCH=GD7`7uEmii-~ zIDhALsC8 z9?0;-oQToCzRIsJ2IeXN@<`k=6s2olaKIfu&b;!i_m6Wp)EY>E^sD6;d2Zu%b@WWoL%UteZu8wU$G68Ta%4=s@VWcxQFnFY5lk}e9 z4;SfX@UJ};3DT)+DZ>8xC~FA;*Z7|eG1e@`3F0UTm}#^cCb9SkJ1}@?Y|H27GZ6SW zURhtb40N2NhW7l~YCdqc7}y233P!Ve$7CM1443o$`0D9UkA9j9t6GC=azk3y+@9D2 zlcaoO%bvCtLKZzqL11YwadoD{AJ$Y4<@c0qegwX^JW=hi_8lTpXI8U6IvzfpyKt#7 zri@L2P|ZTXFG9{5G;~Nrq$1^w3QQ=n`;|`SlFQVQfIfixm-#P*2gFm48#ykk+iU+N+lAnf6SciWxow^SeS#w2w$RTJ`MdqE+-TH=Ae)}HLt`jP{ zj{0hzwYlTd@5&w4Og-s{td@<9M&T9osxI)-LrFysjJIY8!uP*rPaZJ~aXRdVQKMpZ zA@z|q;2=)mK7zQ)x4aITuI+|fD!hb20jzxQNr#x}!{;%?kn z2Vjdj^f8QG)9z=)9z|j#iZzVriFu~mp6OvMF)2;Z>R#sMZx-T(LjaNJ6pRM?M54S) zV0n0$WFVYg5@rdJy)%%enXto4O4$Ofza4#LoGRKqmp&pKT0x_x3v+8j5D1T1b2}SZ zkF75O*b46FNA0Vw4G(*12tzGmxy{YZF-OFjHFZd}6r|wxcrN?V?UyJ3+-jZw+Y?AC z^zt7-2s2ozm)4Ukj)Dqqu?Er~Uxoc-qCk7?Vx+F%JAc=9v(kgD=cO=AA@6^*()M9Y z;MuD>?N!J@1mAyqdVaj!Onn(&%v&uM@G1!5|LMC{^q!l+Z}Nrf178OZitC2=YMngf zjvu}1nag6x8SD0^NI*B# zjPWq@Y6?;ouo+(-5)~H&`2SE2$2TSlEFaP+egb=(;!;J93>-*Kw8va$l{ihv^{mrpXSZ)|BkrxUZ8(VRikv62h zvGLmmo8zkZ(pY{R_GWx*KNbo^VFed)R3bfKe<6|Jt0IV?1_0r z>mp0QYkd3xJhXeI&9mC`=GfW7z`eAr3?L(eXjqMtn3PoQdZH_G!CEmmgQw;Pd|3-W zvu}K##ad5$qYOFnjM~np7`%Kg#zJ=P?+z*r*wbcnKBtL*haWFB0p0jPDq8LTG*KW_ zAI%?aT@G6G9jrw9Z8T_W)u*b@l5$S?yR)%WOG?`v>;Jg+ioJ#ryNy`Lp9zSfe^MHb zJK>ikk>Uv01en`Zz#-CODk7jU^YBNBAE&^7bo8~7bqoyV1r5@gye`~gUhv>4&gg18 zglcv0A5M8(VuX?KlgoPwt)8%qT3b62DS#1vzYLc4o>VVw$Q+ZM0qu@TFcxnAsh7ar zPUz6~c1O&sB^7YP^u6359$8Jt71G?wu?TvAf;-ekD<8x_(Rrw>oN*o(Sm<4DdXz{b zy)lVm(=OS-uiGjIBn}2>W=Eo~v`p>>2gYcBwYvPwpzn}NB*tnRU>TiVXH7V}d1HqS zV~}F?+3ou^0Al~_Tgr#{1YU9}$Nb6EGogg@>Py9vO{-XYe7VGQL=$qCG$m+k3jZ0h zx?;Xbcxm03gh&bdbg4daOtEtF660v1q(1Dho1fNZ=9)JD3{gwq_u0N1x*|yF`Q#8^ z&{q$(-a-%X&7yVvkP@9-j&+wPCTUwb`(kk7wl>8_`lF{8*vbqEUnL3@&$O+P0uv=_ zDI`Zt{MO3lchH;sBx={i>DS-UgOe?(nf*r%^f|Fa=y+kAt_%9ro$(;1a`P&Qpmvl} zdYAr8@>Ha}z=?u;a$`W%dJsE)RsNFzJ8Q@v&^c~ZvyJiwxdf87ZLi=$5PO8Pln(B7 z-frmB2HBOvrE%id&lLuQ=)1Mzd}xtS$&I;9+cG4&Gfsf!>dL-Y)$EJ-*7rGxz@EuS zUu)RAyRCPXGoQjAsqSD$r6iW{N5`UbT6($X|4!iEcfNp`ddT!KJOq2lIP_3?%8rIQ zr`6$M5+}`i$?(WGb#CMUkbNs^ax6@FbX~b~@Z;op?eMYA`#}6B=BT7`l zG%;ZKbi8dkpp|9+kZc1d3ksz@ARMr#wE2dD@{*1vGuwUdL2Vn0>~_hi2e?Y)ilW0abY76kpn_)k)6`gS7|90 zJfr&C@|1L1Y$;V)06N}~Kce&5`~0h61b%HFfV)9`Mgb)!@JM_6vBjVJ!M7lM;|q?a zq;^S1h=%+z%W-e(I-EfysHKW5L?2aKKLBE@T^mnmcjKkY;QZvMn0RU-6UX=i$~zQ> z$*vf=;P$N%=DqJJXus&BUGvc8Wu8-*o`(>7S9sMAP2xZOI(Q%U^ow8QLc7HUF&ccj z9Cw|WB*j3(R%eaNzX za8R<>kU3ep@J)l6V_4rHb%jfMM2Rz*nT*uS^W$*CFVnsK1H#mgexU>0%ehQzw|m!y zFUt|%*zN|bd0kg^doGq8$N0b~t{aMFjil%EhrIOrcf_&&MvEbi3JA}?xajL`Lz($B zjW&FvntSk$)sy1mgstl7^+|i@VoihHSs!1>PGw1nKh+ne6zRDpM@n!9FenWT4T0r` z5W|J+m})1KvsFO6&MM2#A9?WDdP`6@_Z+9l&&M%KjsAFwj^G)90dx8^Zas z&A_&zic0X^oyXMdEOrZZ8vI5x{~Wf&E64v|+<>aV`v%({#mn!84gV;)Q}L4au+^4_ z=74CyKloI!dQs$6h%vF#BgNBx4y?Sn`za)yc8A8{^; z*DW<+*znhBkyLl1{!)GMQa{NXBx$hYZO7k4WSjBFx_a^Rt61{Ga@LN%-#!gU-J|#N z8VU;jdC|Tf^hBTi)O?Oj$Nmy}!8^v!XMw-ebUp`xr2H-k#qgphWM&%ZI{c+4R+Pk vQgm~w?b^V}VHeob7X!034Gj&L`c9v(q?<`$6zirTz)j+_ETBSIKj41>Kp)xw From 276e2467fbe0d4f3ea655c2c89b2674c351664e3 Mon Sep 17 00:00:00 2001 From: Anna Huff Date: Fri, 29 May 2026 12:20:13 -0600 Subject: [PATCH 511/619] PR review: Fix capitalization in walkthrough title Capitalize title to align with established Microsoft style; add missing tickmark on line 108. --- ...ough-compiling-a-native-cpp-program-on-the-command-line.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md index 9eef6bad483..0f04de0819b 100644 --- a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md +++ b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["native code [C++]", "Visual C++, native code", "compiling ms.assetid: b200cfd1-0440-498f-90ee-7ecf92492dc0 #customer intent: As a C++ developer, I want to build and run programs from the command line. --- -# Walkthrough: Compiling a Native C++ Program on the Command Line +# Walkthrough: Compiling a native C++ program on the command line Visual Studio includes a command-line C and C++ compiler. You can use it to create everything from basic console apps to Universal Windows Platform apps, Desktop apps, device drivers, and .NET components. @@ -105,7 +105,7 @@ If you can't find the developer command prompt shortcut, or if you get an error > > Make sure that you saved the source code with a `.cpp` file name extension, not a `.txt` extension. Your source file gets saved in the current directory as a `.cpp` file automatically if you open Notepad at the command prompt by using the `notepad hello.cpp` command. > - > Notepad's behavior is different if you open it another way: By default, Notepad appends a `.txt` extension to new files when you save them. It also defaults to saving files in your `Documents` directory. To save your file with a `.cpp extension in Notepad, choose **File** > **Save As**. In the **Save As** dialog, navigate to your *C:\hello* folder in the directory tree view control. Then use the **Save as type** dropdown control to select **All Files (\*.\*)**. Enter `hello.cpp` in the **File name** edit control, and then choose **Save** to save the file. + > Notepad's behavior is different if you open it another way: By default, Notepad appends a `.txt` extension to new files when you save them. It also defaults to saving files in your `Documents` directory. To save your file with a `.cpp` extension in Notepad, choose **File** > **Save As**. In the **Save As** dialog, navigate to your *C:\hello* folder in the directory tree view control. Then use the **Save as type** dropdown control to select **All Files (\*.\*)**. Enter `hello.cpp` in the **File name** edit control, and then choose **Save** to save the file. 1. At the developer command prompt, enter `cl /EHsc hello.cpp` to compile your program. From 49a78178703207c270b5aeda0e9a95ec8d70eb7d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 29 May 2026 13:59:12 -0700 Subject: [PATCH 512/619] update for 2026 --- docs/build/building-on-the-command-line.md | 93 +++++++++++++++------- 1 file changed, 64 insertions(+), 29 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index a4f97e08ceb..ef411c35eb6 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -2,7 +2,7 @@ title: "Use the Microsoft C++ Build Tools from the command line" description: "Learn how to install and use the Microsoft C++ Build Tools from the command line outside of the Visual Studio IDE." ms.custom: "conceptual" -ms.date: 05/28/2026 +ms.date: 05/29/2026 ms.topic: how-to helpviewer_keywords: ["command-line builds [C++]", "compiling source code [C++], command line", "builds [C++], command-line", "command line [C++], building from", "command line [C++], compilers"] #custom intent: As a C++ developer, I want to understand all the options for using the command line to compile and build my software projects as part of my workflow. @@ -37,11 +37,11 @@ To install only the tools you need for C++ development, select the **Desktop dev ## How to use the command-line tools -When you choose one of the C++ workloads in the Visual Studio Installer, it installs a specific version of the MSVC Build Tools package by default. For Visual Studio 2022 and earlier, the package is organized by a *platform toolset* (v### version format) that includes all the C and C++ tools for a specific version of Visual Studio. For later versions of Visual Studio, the package consists of the MSVC version (v##.## version format), which includes all the C and C++ tools for that particular MSVC package. The MSVC version is decoupled from the Visual Studio version. +When you choose one of the C++ workloads in the Visual Studio Installer, it installs a specific version of the MSVC Build Tools package by default. For Visual Studio 2022 and earlier, the package is organized by a *platform toolset* (v### version format) that includes all the C and C++ tools for a specific version of Visual Studio. For later versions of Visual Studio, the package consists of the MSVC version (v##.## version format), which includes all the C and C++ tools for that particular MSVC package. The MSVC version is decoupled from the Visual Studio version starting with Visual Studio 2026. The tools include the C/C++ compilers, linkers, assemblers, and other build tools. It includes matching libraries and header files. You can use all of these tools at the command line. The Visual Studio IDE uses them internally. There are separate x86-hosted and x64-hosted compilers and tools that build code for x86, x64, ARM, and ARM64 targets. Each set of tools for a particular host and target build architecture is stored in its own directory. -To work correctly, the tools require several environment variables to be set. These variables add the tools to the path and set the locations of include files, library files, and SDKs. To make it easy to set these environment variables, the installer creates customized *command files*, or batch files, during installation. You can run one of these command files to set a specific host and target build architecture, Windows SDK version, and platform toolset. +The tools require several environment variables be set. These variables add the tools to the path and set the locations of include files, library files, and SDKs. To make it easy to set these environment variables, the installer creates customized *command files*, or batch files, during installation. You can run one of these command files to set a specific host and target build architecture, Windows SDK version, and platform toolset. For convenience, the installer also creates shortcuts in your Start menu. The shortcuts open developer Command Prompt windows by using these command files for specific combinations of host and target. These shortcuts ensure all the required environment variables are set and ready to use. @@ -65,20 +65,17 @@ The command prompt shortcuts are installed in a version-specific Visual Studio f - **x86_x64 Cross Tools Command Prompt**. Sets the environment to use 32-bit, x86-native tools to build 64-bit, x64-native code. - **x64_x86 Cross Tools Command Prompt**. Sets the environment to use 64-bit, x64-native tools to build 32-bit, x86-native code. -::: moniker range=">= msvc-160" - -The Start menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2022, and you gave it a nickname of *Latest*. The developer command prompt shortcut is named **Developer Command Prompt for VS 2022 (Latest)** in a folder named **Visual Studio 2022**. - +::: moniker range=">=msvc-180" +The Start menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2026, and you gave it a nickname of *Insiders*. The developer command prompt shortcut is named **Developer Command Prompt for VS Insiders** in a folder named `C:\Program Files\Microsoft Visual Studio\18\Professional\Common7\Tools`. +::: moniker-end +::: moniker range="msvc-160 || msvc-170" +The Start menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2022, and you gave it a nickname of *Latest*. The developer command prompt shortcut is named **Developer Command Prompt for VS 2022 (Latest)** in a folder named `C:\Program Files\Microsoft Visual Studio\2022\Latest\Common7\Tools`. ::: moniker-end ::: moniker range="msvc-150" - The Start menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2017, and you gave it a nickname of *Latest*. The developer command prompt shortcut is named **Developer Command Prompt for VS 2017 (Latest)** in a folder named **Visual Studio 2017**. - ::: moniker-end ::: moniker range="< msvc-150" - The Start menu folder and shortcut names vary depending on the installed version of Visual Studio. For example, suppose you installed Visual Studio 2015. The developer command prompt shortcut is named **Developer Command Prompt for VS 2015**. - ::: moniker-end > [!NOTE] @@ -86,8 +83,7 @@ The Start menu folder and shortcut names vary depending on the installed version ### To open a developer Command Prompt window -1. On the desktop, open the Windows **Start** menu. In Windows 11, choose **All apps** to open the list of installed apps. In Windows 10, the list is open to the left. Scroll down the list to find and open the folder (not the app) for your version of Visual Studio, such as **Visual Studio 2022**. - +1. On the desktop, open the Windows **Start** menu. In Windows 11, choose **All apps** to open the list of installed apps. In Windows 10, the list is open to the left. Scroll down the list to find and open the folder (not the app) for your version of Visual Studio, such as **Visual Studio 2022** or **Visual Studio** for version 2026 and later. 1. In the folder, choose the **Developer Command Prompt** for your version of Visual Studio. This shortcut starts a developer Command Prompt window that uses the default build architecture of 32-bit, x86-native tools to build 32-bit, x86-native code. If you prefer a nondefault build architecture, choose one of the native or cross tools command prompts to specify the host and target architecture. For an even faster way to open a developer command prompt, enter *developer command prompt* in the desktop search box. Then choose the result you want. @@ -99,19 +95,24 @@ For an even faster way to open a developer command prompt, enter *developer comm If you prefer to set the build environment in an existing Command Prompt window, you can use one of the command files created by the installer. We recommend you set the environment in a new Command Prompt window. We don't recommend you later switch environments in the same command window. -::: moniker range=">= msvc-170" +::: moniker range=">= msvc-180" + +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2026 and later, the typical installation location on a 64-bit system is in `\Program Files\Microsoft Visual Studio\18\`. The `` can be `Insiders`, `Community`, `Professional`, `Enterprise`, `BuildTools`, or another nickname you supplied. + +::: moniker-end +::: moniker range="= msvc-170" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2022, the typical installation location on a 64-bit system is in `\Program Files\Microsoft Visual Studio\2022\`. The `` can be Community, Professional, Enterprise, BuildTools, or another nickname you supplied. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2022, the typical installation location on a 64-bit system is in `\Program Files\Microsoft Visual Studio\2022\`. On a 32-bit system, the typical installation location is in `\Program Files (x86)\Microsoft Visual Studio\2022\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`, or a nickname you supplied during installation. ::: moniker-end ::: moniker range="= msvc-160" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2019, the typical installation location on a 64-bit system is in `\Program Files (x86)\Microsoft Visual Studio\2019\`. The `` can be Community, Professional, Enterprise, BuildTools, or another nickname you supplied. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2019, the typical installation location on a 64-bit system is in `\Program Files (x86)\Microsoft Visual Studio\2019\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`, or another nickname you supplied during installation. ::: moniker-end ::: moniker range="= msvc-150" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2017, the typical installation location on a 64-bit system is in `\Program Files (x86)\Microsoft Visual Studio\2017\`. The `` can be Community, Professional, Enterprise, BuildTools, or another nickname you supplied. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2017, the typical installation location on a 64-bit system is in `\Program Files (x86)\Microsoft Visual Studio\2017\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`, or another nickname you supplied during installation. ::: moniker-end ::: moniker range="< msvc-150" @@ -189,31 +190,47 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va Optionally specifies the Visual Studio compiler toolset to use. By default, the environment is set to use the current Visual Studio compiler toolset. - ::: moniker range=">= msvc-160" +::: moniker range=">= msvc-180" - Use **-vcvars_ver=14.2x.yyyyy** to specify a specific version of the Visual Studio 2019 compiler toolset. +- Don't specify `vcvars_ver` to use the latest installed VC++ compiler toolset. +- Use `vcvars_ver="Preview"` to use the VC++ preview compiler toolset +- Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset +- Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11") +- Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") + +::: moniker-end +::: moniker range="= msvc-170" + +- Don't specify `vcvars_ver` to use the latest installed Visual Studio 2022 compiler toolset. +- Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset +- Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.29") +- Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.44.35207") - Use **-vcvars_ver=14.29** to specify the latest version of the Visual Studio 2019 compiler toolset. +::: moniker-end +::: moniker range="= msvc-160" - ::: moniker-end - ::: moniker range="= msvc-150" +- Don't specify `vcvars_ver` to use the latest installed Visual Studio 2019 compiler toolset. +- Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset +- Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11") +- Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") - Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset. +::: moniker-end +::: moniker range="= msvc-150" - Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. +- Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset. +- Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. - ::: moniker-end +::: moniker-end - Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. +- Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. - `spectre_mode` - Leave this parameter out to use libraries without Spectre mitigations. Use the value `spectre` to use libraries with Spectre mitigations. + Leave this parameter out to use libraries without Spectre mitigations. Specify `spectre` to use libraries with Spectre mitigations. #### To set up the build environment in an existing Command Prompt window 1. At the command prompt, use the `CD` command to change to the Visual Studio installation directory. Then, use `CD` again to change to the subdirectory that contains the configuration-specific command files. For Visual Studio 2019 and Visual Studio 2017, use the `VC\Auxiliary\Build` subdirectory. For Visual Studio 2015, use the `VC` subdirectory. - 1. Enter the command for your preferred developer environment. For example, to build ARM code for UWP on a 64-bit platform, using the latest Windows SDK and Visual Studio compiler toolset, use this command: ```cmd @@ -222,7 +239,25 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va ## Create your own command prompt shortcut -::: moniker range=">= msvc-160" +::: moniker range=">=msvc-180" + +Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for Visual Studio** shortcut is similar to: + +```cmd +%comspec% /k "C:\Program Files\Microsoft Visual Studio\18\Professional\Common7\Tools\VsDevCmd.bat" -arch=x64 +``` + +:::moniker-end +::: moniker range="=msvc-170" + +Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2022** shortcut is similar to: + +```cmd +%comspec% /k "C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\Tools\VsDevCmd.bat" +``` + +:::moniker-end +::: moniker range="= msvc-160" Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2019** shortcut is similar to: From 2623b35d277c71aad52e43ed306304b3d36d6ee0 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 29 May 2026 15:00:55 -0700 Subject: [PATCH 513/619] update for 2026 --- docs/build/building-on-the-command-line.md | 94 +++++++++++++--------- 1 file changed, 54 insertions(+), 40 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index ef411c35eb6..4363d92408a 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -43,7 +43,7 @@ The tools include the C/C++ compilers, linkers, assemblers, and other build tool The tools require several environment variables be set. These variables add the tools to the path and set the locations of include files, library files, and SDKs. To make it easy to set these environment variables, the installer creates customized *command files*, or batch files, during installation. You can run one of these command files to set a specific host and target build architecture, Windows SDK version, and platform toolset. -For convenience, the installer also creates shortcuts in your Start menu. The shortcuts open developer Command Prompt windows by using these command files for specific combinations of host and target. These shortcuts ensure all the required environment variables are set and ready to use. +For convenience, the installer also creates shortcuts in your **Start** menu. The shortcuts open developer Command Prompt windows by using these command files for specific combinations of host and target. These shortcuts ensure all the required environment variables are set and ready to use. The required environment variables are specific to your installation and to the build architecture you choose. Product updates or upgrades might change the variables. This variability is one reason why we recommend you use an installed command prompt shortcut or command file, instead of setting the environment variables yourself. @@ -57,7 +57,7 @@ To see which environment variables a developer command prompt shortcut sets, use ## Developer command prompt shortcuts -The command prompt shortcuts are installed in a version-specific Visual Studio folder in your Windows Start menu. Here's a list of the base command prompt shortcuts and the build architectures they support: +The command prompt shortcuts are installed in a version-specific Visual Studio folder in your Windows **Start** menu. Here's a list of the base command prompt shortcuts and the build architectures they support: - **Developer Command Prompt**. Sets the environment to use 32-bit, x86-native tools to build 32-bit, x86-native code. - **x86 Native Tools Command Prompt**. Sets the environment to use 32-bit, x86-native tools to build 32-bit, x86-native code. @@ -66,16 +66,16 @@ The command prompt shortcuts are installed in a version-specific Visual Studio f - **x64_x86 Cross Tools Command Prompt**. Sets the environment to use 64-bit, x64-native tools to build 32-bit, x86-native code. ::: moniker range=">=msvc-180" -The Start menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2026, and you gave it a nickname of *Insiders*. The developer command prompt shortcut is named **Developer Command Prompt for VS Insiders** in a folder named `C:\Program Files\Microsoft Visual Studio\18\Professional\Common7\Tools`. +The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed the Visual Studio 2026 Insiders version. The developer command prompt shortcut is named **Developer Command Prompt for VS Insiders** in a folder named `C:\Program Files\Microsoft Visual Studio\18\Insiders\Common7\Tools` ::: moniker-end ::: moniker range="msvc-160 || msvc-170" -The Start menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2022, and you gave it a nickname of *Latest*. The developer command prompt shortcut is named **Developer Command Prompt for VS 2022 (Latest)** in a folder named `C:\Program Files\Microsoft Visual Studio\2022\Latest\Common7\Tools`. +The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2022, and you gave it a nickname of *Latest*. The developer command prompt shortcut is named **Developer Command Prompt for VS 2022 (Latest)** in a folder named `C:\Program Files\Microsoft Visual Studio\2022\Latest\Common7\Tools`. ::: moniker-end ::: moniker range="msvc-150" -The Start menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2017, and you gave it a nickname of *Latest*. The developer command prompt shortcut is named **Developer Command Prompt for VS 2017 (Latest)** in a folder named **Visual Studio 2017**. +The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2017, and you gave it a nickname of *Latest*. The developer command prompt shortcut is named **Developer Command Prompt for VS 2017 (Latest)** in a folder named **Visual Studio 2017**. ::: moniker-end ::: moniker range="< msvc-150" -The Start menu folder and shortcut names vary depending on the installed version of Visual Studio. For example, suppose you installed Visual Studio 2015. The developer command prompt shortcut is named **Developer Command Prompt for VS 2015**. +The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. For example, suppose you installed Visual Studio 2015. The developer command prompt shortcut is named **Developer Command Prompt for VS 2015**. ::: moniker-end > [!NOTE] @@ -97,27 +97,27 @@ If you prefer to set the build environment in an existing Command Prompt window, ::: moniker range=">= msvc-180" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2026 and later, the typical installation location on a 64-bit system is in `\Program Files\Microsoft Visual Studio\18\`. The `` can be `Insiders`, `Community`, `Professional`, `Enterprise`, `BuildTools`, or another nickname you supplied. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2026 and later, the typical installation location on a 64-bit system is `\Program Files\Microsoft Visual Studio\18\`. The `` can be `Insiders`, `Community`, `Professional`, `Enterprise`, `BuildTools`, or another nickname you supplied. ::: moniker-end ::: moniker range="= msvc-170" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2022, the typical installation location on a 64-bit system is in `\Program Files\Microsoft Visual Studio\2022\`. On a 32-bit system, the typical installation location is in `\Program Files (x86)\Microsoft Visual Studio\2022\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`, or a nickname you supplied during installation. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2022, the typical installation location on a 64-bit system is `\Program Files\Microsoft Visual Studio\2022\`. On a 32-bit system, the typical installation location is `\Program Files (x86)\Microsoft Visual Studio\2022\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`, or a nickname you supplied during installation. ::: moniker-end ::: moniker range="= msvc-160" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2019, the typical installation location on a 64-bit system is in `\Program Files (x86)\Microsoft Visual Studio\2019\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`, or another nickname you supplied during installation. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2019, the typical installation location on a 64-bit system is `\Program Files (x86)\Microsoft Visual Studio\2019\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`, or another nickname you supplied during installation. ::: moniker-end ::: moniker range="= msvc-150" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2017, the typical installation location on a 64-bit system is in `\Program Files (x86)\Microsoft Visual Studio\2017\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`, or another nickname you supplied during installation. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2017, the typical installation location on a 64-bit system is `\Program Files (x86)\Microsoft Visual Studio\2017\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`, or another nickname you supplied during installation. ::: moniker-end ::: moniker range="< msvc-150" -The command file location depends on the Visual Studio version, and the installation directory. For Visual Studio 2015, the typical installation location on a 64-bit system is in `\Program Files (x86)\Microsoft Visual Studio 14.0`. +The command file location depends on the Visual Studio version, and the installation directory. For Visual Studio 2015, the typical installation location on a 64-bit system is `\Program Files (x86)\Microsoft Visual Studio 14.0`. ::: moniker-end @@ -192,37 +192,37 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va ::: moniker range=">= msvc-180" -- Don't specify `vcvars_ver` to use the latest installed VC++ compiler toolset. -- Use `vcvars_ver="Preview"` to use the VC++ preview compiler toolset -- Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset -- Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11") -- Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") + - Don't specify `vcvars_ver` to use the latest installed VC++ compiler toolset. + - Use `vcvars_ver="Preview"` to use the VC++ preview compiler toolset + - Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset + - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11") + - Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") ::: moniker-end ::: moniker range="= msvc-170" -- Don't specify `vcvars_ver` to use the latest installed Visual Studio 2022 compiler toolset. -- Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset -- Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.29") -- Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.44.35207") + - Don't specify `vcvars_ver` to use the latest installed Visual Studio 2022 compiler toolset. + - Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset + - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.29") + - Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.44.35207") ::: moniker-end ::: moniker range="= msvc-160" -- Don't specify `vcvars_ver` to use the latest installed Visual Studio 2019 compiler toolset. -- Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset -- Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11") -- Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") - + - Don't specify `vcvars_ver` to use the latest installed Visual Studio 2019 compiler toolset. + - Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset + - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11") + - Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") + ::: moniker-end ::: moniker range="= msvc-150" -- Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset. -- Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. - + - Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset. + - Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. + ::: moniker-end -- Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. + - Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. - `spectre_mode` @@ -241,16 +241,16 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va ::: moniker range=">=msvc-180" -Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for Visual Studio** shortcut is similar to: +Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS** shortcut is similar to: ```cmd -%comspec% /k "C:\Program Files\Microsoft Visual Studio\18\Professional\Common7\Tools\VsDevCmd.bat" -arch=x64 +%comspec% /k "C:\Program Files\Microsoft Visual Studio\18\Professional\VC\Auxiliary\Build\vcvars64.bat" ``` :::moniker-end ::: moniker range="=msvc-170" -Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2022** shortcut is similar to: +Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **Developer Command Prompt for VS 2022** shortcut is similar to: ```cmd %comspec% /k "C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\Tools\VsDevCmd.bat" @@ -259,35 +259,49 @@ Open the **Properties** dialog for a developer command prompt shortcut to see th :::moniker-end ::: moniker range="= msvc-160" -Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2019** shortcut is similar to: +Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **Developer Command Prompt for VS 2019** shortcut is similar to: ```cmd -%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\Tools\VsDevCmd.bat" ``` ::: moniker-end ::: moniker range="= msvc-150" -Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2017** shortcut is similar to: +Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **Developer Command Prompt for VS 2017** shortcut is similar to: ```cmd -%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\VsDevCmd.bat" ``` ::: moniker-end ::: moniker range="< msvc-150" -Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **VS2015 x64 Native Tools Command Prompt** shortcut is similar to: +Open the **Properties** dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **Developer Command Prompt for VS2015** shortcut is similar to: ```cmd -%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat" ``` ::: moniker-end The architecture-specific batch files set the `architecture` parameter and call `vcvarsall.bat`. You can pass the same options to these batch files as you pass to `vcvarsall.bat`, or you can just call `vcvarsall.bat` directly. To specify parameters for your own command shortcut, add them to the end of the command in double quotes. For example, here's a shortcut to build ARM code for UWP on a 64-bit platform, using the latest Windows SDK. To use an earlier compiler toolset, specify the version number. Use a command like this command target in your shortcut: -::: moniker range=">= msvc-160" +::: moniker range=">= msvc-180" + +```cmd +%comspec% /k "C:\Program Files\Microsoft Visual Studio\18\Professional\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.5 +``` + +::: moniker-end +::: moniker range="= msvc-170" + +```cmd +%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.44 +``` + +::: moniker-end +::: moniker range="= msvc-160" ```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.29 @@ -309,7 +323,7 @@ The architecture-specific batch files set the `architecture` parameter and call ::: moniker-end -Adjust the path to reflect your Visual Studio installation directory. The `vcvarsall.bat` file has additional information about specific version numbers. +Adjust the path to reflect your Visual Studio installation directory. The `vcvarsall.bat` file has more information about specific version numbers. ## Command-line tools From 2fe9ef8a6a30825b710c9a52913766fb5f8fac44 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 29 May 2026 15:10:52 -0700 Subject: [PATCH 514/619] fix formatting --- docs/build/building-on-the-command-line.md | 34 +++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 4363d92408a..c19f5e05f12 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -191,38 +191,38 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va Optionally specifies the Visual Studio compiler toolset to use. By default, the environment is set to use the current Visual Studio compiler toolset. ::: moniker range=">= msvc-180" - - - Don't specify `vcvars_ver` to use the latest installed VC++ compiler toolset. - - Use `vcvars_ver="Preview"` to use the VC++ preview compiler toolset - - Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset - - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11") - - Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") +\ + Don't specify `vcvars_ver` to use the latest installed VC++ compiler toolset.\ + Use `vcvars_ver="Preview"` to use the VC++ preview compiler toolset\ + Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ + Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11")\ + Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") ::: moniker-end ::: moniker range="= msvc-170" - - Don't specify `vcvars_ver` to use the latest installed Visual Studio 2022 compiler toolset. - - Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset - - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.29") - - Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.44.35207") + Don't specify `vcvars_ver` to use the latest installed Visual Studio 2022 compiler toolset.\ + Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ + Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.29")\ + Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.44.35207") ::: moniker-end ::: moniker range="= msvc-160" - - Don't specify `vcvars_ver` to use the latest installed Visual Studio 2019 compiler toolset. - - Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset - - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11") - - Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") + Don't specify `vcvars_ver` to use the latest installed Visual Studio 2019 compiler toolset.\ + Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ + Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11")\ + Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") ::: moniker-end ::: moniker range="= msvc-150" - - Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset. - - Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. + Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset.\ + Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. ::: moniker-end - - Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. + Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. - `spectre_mode` From b53f04db29d09e307be276abc5f3607ce4078c2c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 29 May 2026 15:21:40 -0700 Subject: [PATCH 515/619] fix formatting --- docs/build/building-on-the-command-line.md | 34 +++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index c19f5e05f12..1ee9249440e 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -191,38 +191,38 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va Optionally specifies the Visual Studio compiler toolset to use. By default, the environment is set to use the current Visual Studio compiler toolset. ::: moniker range=">= msvc-180" -\ - Don't specify `vcvars_ver` to use the latest installed VC++ compiler toolset.\ - Use `vcvars_ver="Preview"` to use the VC++ preview compiler toolset\ - Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11")\ - Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") + + Don't specify `vcvars_ver` to use the latest installed VC++ compiler toolset.\ + Use `vcvars_ver="Preview"` to use the VC++ preview compiler toolset\ + Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ + Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11")\ + Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") ::: moniker-end ::: moniker range="= msvc-170" - Don't specify `vcvars_ver` to use the latest installed Visual Studio 2022 compiler toolset.\ - Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.29")\ - Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.44.35207") + Don't specify `vcvars_ver` to use the latest installed Visual Studio 2022 compiler toolset.\ + Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ + Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.29")\ + Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.44.35207") ::: moniker-end ::: moniker range="= msvc-160" - Don't specify `vcvars_ver` to use the latest installed Visual Studio 2019 compiler toolset.\ - Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11")\ - Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") + Don't specify `vcvars_ver` to use the latest installed Visual Studio 2019 compiler toolset.\ + Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ + Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11")\ + Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") ::: moniker-end ::: moniker range="= msvc-150" - Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset.\ - Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. + Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset.\ + Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. ::: moniker-end - Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. + Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. - `spectre_mode` From daf8b8f8865e070a2959df5d40a8c1edf983ca50 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 29 May 2026 15:42:15 -0700 Subject: [PATCH 516/619] try table --- docs/build/building-on-the-command-line.md | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 1ee9249440e..d6b3afa82ea 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -190,20 +190,23 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va Optionally specifies the Visual Studio compiler toolset to use. By default, the environment is set to use the current Visual Studio compiler toolset. + | `vcvars_ver="{value}"` | Result | + |--|--| + ::: moniker range=">= msvc-180" - Don't specify `vcvars_ver` to use the latest installed VC++ compiler toolset.\ - Use `vcvars_ver="Preview"` to use the VC++ preview compiler toolset\ - Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11")\ - Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") + | Don't specify `vcvars_ver` | Use the latest installed Visual Studio compiler toolset | + | `"Preview"` | Use the Visual Studio preview compiler toolset | + | `"14.0"` | Use the Visual Studio 2015 Compiler Toolset | + | `"14.xx"` | Use the latest 14.xx.yyyyy toolset installed (for example "14.51") | + | `"14.xx.yyyyy"` | Use a specific full version number (for example "14.51.36231") | ::: moniker-end ::: moniker range="= msvc-170" Don't specify `vcvars_ver` to use the latest installed Visual Studio 2022 compiler toolset.\ - Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.29")\ + Use `vcvars_ver="14.0"` to use the Visual Studio 2015 Compiler Toolset\ + Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.44")\ Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.44.35207") ::: moniker-end @@ -211,8 +214,8 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va Don't specify `vcvars_ver` to use the latest installed Visual Studio 2019 compiler toolset.\ Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.11")\ - Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.11.25503") + Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.29")\ + Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.29.30133") ::: moniker-end ::: moniker range="= msvc-150" From 36fdbd27c32dc7b3ec60417ffea70571595f07f3 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 29 May 2026 15:47:57 -0700 Subject: [PATCH 517/619] another formatting attempt --- docs/build/building-on-the-command-line.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index d6b3afa82ea..ab1801cb574 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -190,17 +190,14 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va Optionally specifies the Visual Studio compiler toolset to use. By default, the environment is set to use the current Visual Studio compiler toolset. - | `vcvars_ver="{value}"` | Result | - |--|--| - ::: moniker range=">= msvc-180" - | Don't specify `vcvars_ver` | Use the latest installed Visual Studio compiler toolset | - | `"Preview"` | Use the Visual Studio preview compiler toolset | - | `"14.0"` | Use the Visual Studio 2015 Compiler Toolset | - | `"14.xx"` | Use the latest 14.xx.yyyyy toolset installed (for example "14.51") | - | `"14.xx.yyyyy"` | Use a specific full version number (for example "14.51.36231") | - + Don't specify `vcvars_ver` | Use the latest installed Visual Studio compiler toolset + `"Preview"` | Use the Visual Studio preview compiler toolset + `"14.0"` | Use the Visual Studio 2015 Compiler Toolset + `"14.xx"` | Use the latest 14.xx.yyyyy toolset installed (for example "14.51") + `"14.xx.yyyyy"` | Use a specific full version number (for example "14.51.36231") + ::: moniker-end ::: moniker range="= msvc-170" @@ -216,13 +213,13 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.29")\ Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.29.30133") - + ::: moniker-end ::: moniker range="= msvc-150" Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset.\ Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. - + ::: moniker-end Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. From a036276cf2c89bdee6213d55ab967aa5a7ee9e85 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 29 May 2026 15:54:44 -0700 Subject: [PATCH 518/619] another formatting attempt --- docs/build/building-on-the-command-line.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index ab1801cb574..5ce1213e0c1 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -197,29 +197,22 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va `"14.0"` | Use the Visual Studio 2015 Compiler Toolset `"14.xx"` | Use the latest 14.xx.yyyyy toolset installed (for example "14.51") `"14.xx.yyyyy"` | Use a specific full version number (for example "14.51.36231") - ::: moniker-end ::: moniker range="= msvc-170" - Don't specify `vcvars_ver` to use the latest installed Visual Studio 2022 compiler toolset.\ Use `vcvars_ver="14.0"` to use the Visual Studio 2015 Compiler Toolset\ Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.44")\ Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.44.35207") - ::: moniker-end ::: moniker range="= msvc-160" - Don't specify `vcvars_ver` to use the latest installed Visual Studio 2019 compiler toolset.\ Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.29")\ Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.29.30133") - ::: moniker-end ::: moniker range="= msvc-150" - Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset.\ Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. - ::: moniker-end Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. From e36c8ee291e246cf539b13b841cf63b595c3ca1e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 29 May 2026 16:11:32 -0700 Subject: [PATCH 519/619] another formatting attempt --- docs/build/building-on-the-command-line.md | 36 +++++----------------- 1 file changed, 8 insertions(+), 28 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 5ce1213e0c1..78c8233a27b 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -188,34 +188,14 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va - `vcversion` - Optionally specifies the Visual Studio compiler toolset to use. By default, the environment is set to use the current Visual Studio compiler toolset. - -::: moniker range=">= msvc-180" - - Don't specify `vcvars_ver` | Use the latest installed Visual Studio compiler toolset - `"Preview"` | Use the Visual Studio preview compiler toolset - `"14.0"` | Use the Visual Studio 2015 Compiler Toolset - `"14.xx"` | Use the latest 14.xx.yyyyy toolset installed (for example "14.51") - `"14.xx.yyyyy"` | Use a specific full version number (for example "14.51.36231") -::: moniker-end -::: moniker range="= msvc-170" - Don't specify `vcvars_ver` to use the latest installed Visual Studio 2022 compiler toolset.\ - Use `vcvars_ver="14.0"` to use the Visual Studio 2015 Compiler Toolset\ - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.44")\ - Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.44.35207") -::: moniker-end -::: moniker range="= msvc-160" - Don't specify `vcvars_ver` to use the latest installed Visual Studio 2019 compiler toolset.\ - Use `vcvars_ver="14.0"` to use the VC++ 2015 Compiler Toolset\ - Use `vcvars_ver="14.xx"` for the latest 14.xx.yyyyy toolset installed (for example "14.29")\ - Use `vcvars_ver="14.xx.yyyyy"` for a specific full version number (for example "14.29.30133") -::: moniker-end -::: moniker range="= msvc-150" - Use **-vcvars_ver=14.16** to specify the latest version of the Visual Studio 2017 compiler toolset.\ - Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Studio 2017 compiler toolset. -::: moniker-end - - Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset. + Optionally specifies the Visual Studio compiler toolset to use. By default, the environment uses the latest installed Visual Studio compiler toolset. The following table shows example `vcvars_ver` values: + + | `vcvars_ver={value}` | Result | VS 2026 example | VS 2022 example | VS 2019 example | VS 2017 example | + |--|--|--|--|--|--| + | `"Preview"` | Use the Visual Studio preview compiler toolset. | Supported | Not supported | Not supported | Not supported | + | `"14.0"` | Use the Visual Studio 2015 compiler toolset. | Supported | Supported | Supported | Supported | + | `"14.xx"` | Use the latest installed `14.xx.yyyyy` toolset. | `"14.51"` | `"14.44"` | `"14.29"` | `"14.16"` | + | `"14.xx.yyyyy"` | Use a specific full version number. | `"14.51.36231"` | `"14.44.35207"` | `"14.29.30133"` | `"14.16.27034"` | - `spectre_mode` From 12b8ebb829dca3f1e924ed2949f1d96e414d8f3f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 29 May 2026 16:42:48 -0700 Subject: [PATCH 520/619] review --- docs/build/building-on-the-command-line.md | 23 ++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 78c8233a27b..ff7ba0ce736 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -66,16 +66,19 @@ The command prompt shortcuts are installed in a version-specific Visual Studio f - **x64_x86 Cross Tools Command Prompt**. Sets the environment to use 64-bit, x64-native tools to build 32-bit, x86-native code. ::: moniker range=">=msvc-180" -The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed the Visual Studio 2026 Insiders version. The developer command prompt shortcut is named **Developer Command Prompt for VS Insiders** in a folder named `C:\Program Files\Microsoft Visual Studio\18\Insiders\Common7\Tools` +The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. For example, suppose you installed the Visual Studio 2026 Insiders version. The developer command prompt shortcut is named **Developer Command Prompt for VS Insiders** in **Start** > **Programs** > **Visual Studio** > **Visual Studio Tools**. ::: moniker-end -::: moniker range="msvc-160 || msvc-170" -The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2022, and you gave it a nickname of *Latest*. The developer command prompt shortcut is named **Developer Command Prompt for VS 2022 (Latest)** in a folder named `C:\Program Files\Microsoft Visual Studio\2022\Latest\Common7\Tools`. +::: moniker range="msvc-170" +The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. For example, the developer prompt shortcut for Visual Studio 2022 is named **Developer Command Prompt for VS 2022** in **Start** > **Programs** > **Visual Studio 2022** > **Visual Studio Tools**. +::: moniker-end +::: moniker range="msvc-160" +The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. For example, the developer prompt shortcut for Visual Studio 2019 is named **Developer Command Prompt for VS 2019** in **Start** > **Programs** > **Visual Studio 2019** > **Visual Studio Tools**. ::: moniker-end ::: moniker range="msvc-150" -The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. If you set one, they also depend on the installation **Nickname**. For example, suppose you installed Visual Studio 2017, and you gave it a nickname of *Latest*. The developer command prompt shortcut is named **Developer Command Prompt for VS 2017 (Latest)** in a folder named **Visual Studio 2017**. +The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. For example, the developer prompt shortcut for Visual Studio 2017 is named **Developer Command Prompt for VS 2017** in **Start** > **Programs** > **Visual Studio 2017** > **Visual Studio Tools**. ::: moniker-end ::: moniker range="< msvc-150" -The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. For example, suppose you installed Visual Studio 2015. The developer command prompt shortcut is named **Developer Command Prompt for VS 2015**. +The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. For example, the developer prompt shortcut for Visual Studio 2015 is named **Developer Command Prompt for VS 2015** in **Start** > **Programs** > **Visual Studio 2015** > **Visual Studio Tools**. ::: moniker-end > [!NOTE] @@ -97,27 +100,27 @@ If you prefer to set the build environment in an existing Command Prompt window, ::: moniker range=">= msvc-180" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2026 and later, the typical installation location on a 64-bit system is `\Program Files\Microsoft Visual Studio\18\`. The `` can be `Insiders`, `Community`, `Professional`, `Enterprise`, `BuildTools`, or another nickname you supplied. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2026 and later, the typical installation location on a 64-bit system is `C:\Program Files\Microsoft Visual Studio\18\`. The `` can be `Insiders`, `Community`, `Professional`, `Enterprise`, `BuildTools`. ::: moniker-end ::: moniker range="= msvc-170" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2022, the typical installation location on a 64-bit system is `\Program Files\Microsoft Visual Studio\2022\`. On a 32-bit system, the typical installation location is `\Program Files (x86)\Microsoft Visual Studio\2022\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`, or a nickname you supplied during installation. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2022, the typical installation location on a 64-bit system is `C:\Program Files\Microsoft Visual Studio\2022\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`. ::: moniker-end ::: moniker range="= msvc-160" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2019, the typical installation location on a 64-bit system is `\Program Files (x86)\Microsoft Visual Studio\2019\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`, or another nickname you supplied during installation. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2019, the typical installation location on a 64-bit system is `C:\Program Files (x86)\Microsoft Visual Studio\2019\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`. ::: moniker-end ::: moniker range="= msvc-150" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2017, the typical installation location on a 64-bit system is `\Program Files (x86)\Microsoft Visual Studio\2017\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`, or another nickname you supplied during installation. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2017, the typical installation location on a 64-bit system is `C:\Program Files (x86)\Microsoft Visual Studio\2017\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`. ::: moniker-end ::: moniker range="< msvc-150" -The command file location depends on the Visual Studio version, and the installation directory. For Visual Studio 2015, the typical installation location on a 64-bit system is `\Program Files (x86)\Microsoft Visual Studio 14.0`. +The command file location depends on the Visual Studio version, and the installation directory. For Visual Studio 2015, the typical installation location on a 64-bit system is `C:\Program Files (x86)\Microsoft Visual Studio 14.0`. ::: moniker-end From af457e79b1fb8e3a3489c73305b2b1b51f6ea9ce Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 1 Jun 2026 10:54:13 -0700 Subject: [PATCH 521/619] update ms.date --- docs/error-messages/compiler-errors-1/compiler-error-c2001.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2002.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2017.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2018.md | 2 +- docs/error-messages/compiler-errors-1/compiler-error-c2043.md | 2 +- .../compiler-errors-1/compiler-errors-c2001-through-c2099.md | 2 +- docs/error-messages/compiler-errors-1/fatal-error-c1853.md | 2 +- .../compiler-errors-2/compiler-errors-c2900-through-c3499.md | 2 +- .../compiler-errors-2/compiler-errors-c3500-through-c3999.md | 2 +- .../compiler-errors-2/compiler-errors-c7500-through-c7999.md | 2 +- .../compiler-warnings/compiler-warning-level-1-c4630.md | 2 +- .../compiler-warnings/compiler-warning-level-4-c4709.md | 2 +- .../compiler-warnings/compiler-warnings-by-compiler-version.md | 2 +- .../compiler-warnings/compiler-warnings-c4600-through-c4799.md | 2 +- .../compiler-warnings/compiler-warnings-c4800-through-c4999.md | 2 +- .../compiler-warnings/compiler-warnings-c5200-through-c5399.md | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2001.md b/docs/error-messages/compiler-errors-1/compiler-error-c2001.md index 1170e085548..cdbee1f1bde 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2001.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2001.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2001" description: "Learn more about: Compiler Error C2001" -ms.date: 11/04/2016 +ms.date: 06/01/2026 f1_keywords: ["C2001"] helpviewer_keywords: ["C2001"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2002.md b/docs/error-messages/compiler-errors-1/compiler-error-c2002.md index ed534e6c58e..c4f33d4d9f3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2002.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2002.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2002" description: "Learn more about: Compiler Error C2002" -ms.date: 11/04/2016 +ms.date: 06/01/2026 f1_keywords: ["C2002"] helpviewer_keywords: ["C2002"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2017.md b/docs/error-messages/compiler-errors-1/compiler-error-c2017.md index ad33821d233..243e763f9af 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2017.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2017.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2017" description: "Learn more about: Compiler Error C2017" -ms.date: 11/04/2016 +ms.date: 06/01/2026 f1_keywords: ["C2017"] helpviewer_keywords: ["C2017"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2018.md b/docs/error-messages/compiler-errors-1/compiler-error-c2018.md index be116891238..710b354414b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2018.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2018.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2018" description: "Learn more about: Compiler Error C2018" -ms.date: 06/21/2025 +ms.date: 06/01/2026 f1_keywords: ["C2018"] helpviewer_keywords: ["C2018"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2043.md b/docs/error-messages/compiler-errors-1/compiler-error-c2043.md index ec2ed0e8263..2b457e6fd6b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2043.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2043.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2043" description: "Learn more about: Compiler Error C2043" -ms.date: 11/04/2016 +ms.date: 06/01/2026 f1_keywords: ["C2043"] helpviewer_keywords: ["C2043"] --- diff --git a/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md b/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md index 91dc3d25e32..e79ce476750 100644 --- a/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md +++ b/docs/error-messages/compiler-errors-1/compiler-errors-c2001-through-c2099.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Compiler errors C2001 through C2099" title: "Compiler errors C2001 through C2099" -ms.date: 08/24/2022 +ms.date: 06/01/2026 f1_keywords: ["C2029"] helpviewer_keywords: ["C2029"] --- diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1853.md b/docs/error-messages/compiler-errors-1/fatal-error-c1853.md index 3953a1c76c3..8f6338a544d 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1853.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1853.md @@ -1,7 +1,7 @@ --- title: "Fatal Error C1853" description: "Learn more about: Fatal Error C1853" -ms.date: 11/04/2016 +ms.date: 06/01/2026 f1_keywords: ["C1853"] helpviewer_keywords: ["C1853"] --- diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md index a6803dbf5dd..2f76058d57c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2900-through-c3499.md @@ -1,7 +1,7 @@ --- description: "Learn more about: Compiler errors C2900 Through C2999" title: "Compiler errors C2900 Through C2999" -ms.date: 06/01/2022 +ms.date: 06/01/2026 f1_keywords: ["C2900", "C2901", "C2905", "C2907", "C2915", "C2916", "C2922", "C2924", "C2925", "C2926", "C2938", "C2949", "C2950", "C2954", "C2960", "C2961", "C2963", "C2964", "C2965", "C2966", "C2967", "C2968", "C2972", "C2980", "C2981", "C2982", "C2983", "C2984", "C2985", "C2986", "C2987", "C2997"] helpviewer_keywords: ["C2900", "C2901", "C2905", "C2907", "C2915", "C2916", "C2922", "C2924", "C2925", "C2926", "C2938", "C2949", "C2950", "C2954", "C2960", "C2961", "C2963", "C2964", "C2965", "C2966", "C2967", "C2968", "C2972", "C2980", "C2981", "C2982", "C2983", "C2984", "C2985", "C2986", "C2987", "C2997"] --- diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md index 666fdb6fb1b..22cfa875782 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c3500-through-c3999.md @@ -1,7 +1,7 @@ --- title: "Compiler errors C3500 through C3999" description: "Learn more about: Compiler errors C3500 through C3999" -ms.date: 05/25/2022 +ms.date: 06/01/2026 f1_keywords: ["C3502", "C3503", "C3504", "C3511", "C3512", "C3513", "C3514", "C3515", "C3516", "C3517", "C3518", "C3520", "C3521", "C3522", "C3523", "C3524", "C3525", "C3526", "C3527", "C3528", "C3529", "C3534", "C3542", "C3543", "C3544", "C3545", "C3546", "C3547", "C3548", "C3549", "C3557", "C3558", "C3559", "C3560", "C3561", "C3562", "C3563", "C3564", "C3565", "C3566", "C3567", "C3568", "C3569", "C3570", "C3571", "C3572", "C3573", "C3574", "C3575", "C3576", "C3577", "C3578", "C3579", "C3580", "C3581", "C3582", "C3583", "C3584", "C3585", "C3586", "C3587", "C3588", "C3589", "C3590", "C3591", "C3592", "C3593", "C3594", "C3595", "C3596", "C3597", "C3598", "C3599", "C3600", "C3601", "C3602", "C3604", "C3605", "C3606", "C3613", "C3614", "C3616", "C3617", "C3620", "C3621", "C3629", "C3635", "C3636", "C3639", "C3643", "C3647", "C3649", "C3658", "C3659", "C3660", "C3663", "C3664", "C3667", "C3674", "C3676", "C3677", "C3678", "C3679", "C3680", "C3681", "C3682", "C3683", "C3684", "C3685", "C3686", "C3687", "C3688", "C3689", "C3690", "C3691", "C3692", "C3693", "C3694", "C3695", "C3696", "C3700", "C3716", "C3720", "C3725", "C3726", "C3729", "C3730", "C3735", "C3742", "C3746", "C3750", "C3751", "C3756", "C3757", "C3758", "C3759", "C3760", "C3770", "C3773", "C3774", "C3775", "C3776", "C3777", "C3778", "C3780", "C3781", "C3782", "C3783", "C3784", "C3785", "C3786", "C3787", "C3788", "C3789", "C3790", "C3791", "C3792", "C3793", "C3794", "C3795", "C3796", "C3801", "C3802", "C3806", "C3810", "C3811", "C3814", "C3819", "C3822", "C3823", "C3826", "C3827", "C3829", "C3835", "C3837", "C3840", "C3841", "C3843", "C3844", "C3845", "C3847", "C3863", "C3864", "C3870", "C3871", "C3875", "C3876", "C3877", "C3878", "C3879", "C3881", "C3882", "C3884", "C3885", "C3897", "C3905", "C3906", "C3907", "C3916", "C3921", "C3924", "C3925", "C3926", "C3927", "C3928", "C3930", "C3931", "C3932", "C3933", "C3934", "C3935", "C3936", "C3937", "C3938", "C3939", "C3940", "C3941", "C3945", "C3946", "C3947", "C3948", "C3949", "C3950", "C3951", "C3952", "C3953", "C3954", "C3955", "C3956", "C3957", "C3958", "C3959", "C3960", "C3961", "C3962", "C3963", "C3964", "C3965", "C3966", "C3967", "C3968", "C3969", "C3970", "C3971", "C3972", "C3973", "C3974", "C3975", "C3976", "C3977", "C3978", "C3979", "C3980", "C3981", "C3982", "C3983", "C3984", "C3985", "C3986", "C3987", "C3988", "C3989", "C3990", "C3991", "C3992", "C3993", "C3994", "C3995", "C3996", "C3997", "C3998"] helpviewer_keywords: ["C3502", "C3503", "C3504", "C3511", "C3512", "C3513", "C3514", "C3515", "C3516", "C3517", "C3518", "C3520", "C3521", "C3522", "C3523", "C3524", "C3525", "C3526", "C3527", "C3528", "C3529", "C3534", "C3542", "C3543", "C3544", "C3545", "C3546", "C3547", "C3548", "C3549", "C3557", "C3558", "C3559", "C3560", "C3561", "C3562", "C3563", "C3564", "C3565", "C3566", "C3567", "C3568", "C3569", "C3570", "C3571", "C3572", "C3573", "C3574", "C3575", "C3576", "C3577", "C3578", "C3579", "C3580", "C3581", "C3582", "C3583", "C3584", "C3585", "C3586", "C3587", "C3588", "C3589", "C3590", "C3591", "C3592", "C3593", "C3594", "C3595", "C3596", "C3597", "C3598", "C3599", "C3600", "C3601", "C3602", "C3604", "C3605", "C3606", "C3613", "C3614", "C3616", "C3617", "C3620", "C3621", "C3629", "C3635", "C3636", "C3639", "C3643", "C3647", "C3649", "C3658", "C3659", "C3660", "C3663", "C3664", "C3667", "C3674", "C3676", "C3677", "C3678", "C3679", "C3680", "C3681", "C3682", "C3683", "C3684", "C3685", "C3686", "C3687", "C3688", "C3689", "C3690", "C3691", "C3692", "C3693", "C3694", "C3695", "C3696", "C3700", "C3716", "C3720", "C3725", "C3726", "C3729", "C3730", "C3735", "C3742", "C3746", "C3750", "C3751", "C3756", "C3757", "C3758", "C3759", "C3760", "C3770", "C3773", "C3774", "C3775", "C3776", "C3777", "C3778", "C3780", "C3781", "C3782", "C3783", "C3784", "C3785", "C3786", "C3787", "C3788", "C3789", "C3790", "C3791", "C3792", "C3793", "C3794", "C3795", "C3796", "C3801", "C3802", "C3806", "C3810", "C3811", "C3814", "C3819", "C3822", "C3823", "C3826", "C3827", "C3829", "C3835", "C3837", "C3840", "C3841", "C3843", "C3844", "C3845", "C3847", "C3863", "C3864", "C3870", "C3871", "C3875", "C3876", "C3877", "C3878", "C3879", "C3881", "C3882", "C3884", "C3885", "C3897", "C3905", "C3906", "C3907", "C3916", "C3921", "C3924", "C3925", "C3926", "C3927", "C3928", "C3930", "C3931", "C3932", "C3933", "C3934", "C3935", "C3936", "C3937", "C3938", "C3939", "C3940", "C3941", "C3945", "C3946", "C3947", "C3948", "C3949", "C3950", "C3951", "C3952", "C3953", "C3954", "C3955", "C3956", "C3957", "C3958", "C3959", "C3960", "C3961", "C3962", "C3963", "C3964", "C3965", "C3966", "C3967", "C3968", "C3969", "C3970", "C3971", "C3972", "C3973", "C3974", "C3975", "C3976", "C3977", "C3978", "C3979", "C3980", "C3981", "C3982", "C3983", "C3984", "C3985", "C3986", "C3987", "C3988", "C3989", "C3990", "C3991", "C3992", "C3993", "C3994", "C3995", "C3996", "C3997", "C3998"] --- diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md index 6990d3bfac8..670e726bd3c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md @@ -1,7 +1,7 @@ --- title: "Compiler errors C7500 through C7999" description: "Learn more about: Compiler errors C7500 through C7999" -ms.date: 10/13/2023 +ms.date: 06/01/2026 f1_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7598", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7665", "C7666", "C7667", "C7668", "C7669", "C7670", "C7671", "C7672", "C7673", "C7674", "C7675", "C7676", "C7677", "C7678", "C7679", "C7680", "C7682", "C7683", "C7684", "C7685", "C7686", "C7687", "C7689", "C7690", "C7691", "C7692", "C7693", "C7694", "C7695", "C7696", "C7697", "C7698", "C7699", "C7700", "C7701", "C7702", "C7703", "C7704", "C7705", "C7706", "C7707", "C7708", "C7709", "C7710", "C7711", "C7712", "C7713", "C7714", "C7720", "C7730", "C7731", "C7732", "C7733", "C7734", "C7735", "C7736", "C7737", "C7738", "C7739", "C7740", "C7741", "C7800", "C7801", "C7802", "C7803", "C7804", "C7806", "C7807"] helpviewer_keywords: ["C7500", "C7501", "C7502", "C7503", "C7504", "C7505", "C7506", "C7507", "C7508", "C7509", "C7511", "C7512", "C7513", "C7514", "C7515", "C7516", "C7517", "C7518", "C7519", "C7520", "C7521", "C7522", "C7523", "C7524", "C7525", "C7526", "C7527", "C7528", "C7529", "C7530", "C7531", "C7532", "C7533", "C7534", "C7535", "C7537", "C7538", "C7539", "C7540", "C7541", "C7542", "C7543", "C7544", "C7545", "C7546", "C7547", "C7548", "C7549", "C7550", "C7551", "C7552", "C7554", "C7555", "C7556", "C7557", "C7558", "C7559", "C7560", "C7561", "C7562", "C7563", "C7564", "C7565", "C7566", "C7567", "C7568", "C7569", "C7570", "C7571", "C7572", "C7573", "C7574", "C7575", "C7576", "C7577", "C7578", "C7579", "C7580", "C7581", "C7582", "C7583", "C7584", "C7585", "C7586", "C7587", "C7588", "C7589", "C7590", "C7591", "C7592", "C7593", "C7594", "C7595", "C7596", "C7597", "C7598", "C7599", "C7600", "C7601", "C7602", "C7603", "C7604", "C7605", "C7606", "C7607", "C7608", "C7609", "C7610", "C7611", "C7612", "C7613", "C7614", "C7615", "C7616", "C7617", "C7618", "C7619", "C7620", "C7621", "C7622", "C7623", "C7624", "C7625", "C7627", "C7628", "C7629", "C7630", "C7631", "C7632", "C7633", "C7634", "C7635", "C7636", "C7637", "C7638", "C7639", "C7640", "C7641", "C7642", "C7643", "C7644", "C7645", "C7646", "C7647", "C7648", "C7649", "C7650", "C7651", "C7652", "C7653", "C7654", "C7655", "C7656", "C7657", "C7658", "C7659", "C7660", "C7661", "C7662", "C7665", "C7666", "C7667", "C7668", "C7669", "C7670", "C7671", "C7672", "C7673", "C7674", "C7675", "C7676", "C7677", "C7678", "C7679", "C7680", "C7682", "C7683", "C7684", "C7685", "C7686", "C7687", "C7689", "C7690", "C7691", "C7692", "C7693", "C7694", "C7695", "C7696", "C7697", "C7698", "C7699", "C7700", "C7701", "C7702", "C7703", "C7704", "C7705", "C7706", "C7707", "C7708", "C7709", "C7710", "C7711", "C7712", "C7713", "C7714", "C7720", "C7730", "C7731", "C7732", "C7733", "C7734", "C7735", "C7736", "C7737", "C7738", "C7739", "C7740", "C7741", "C7800", "C7801", "C7802", "C7803", "C7804", "C7806", "C7807"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md index 978501c3ec4..ecb2bb48b85 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-1-c4630.md @@ -1,7 +1,7 @@ --- title: "Compiler Warning (level 1) C4630" description: "Learn more about: Compiler Warning (level 1) C4630" -ms.date: 11/04/2016 +ms.date: 06/01/2026 f1_keywords: ["C4630"] helpviewer_keywords: ["C4630"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md index 2cb7838596e..640cc04d437 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4709.md @@ -1,7 +1,7 @@ --- title: "Compiler Warning (level 4) C4709" description: "Learn more about: Compiler Warning (level 4) C4709" -ms.date: 11/04/2016 +ms.date: 06/01/2026 f1_keywords: ["C4709"] helpviewer_keywords: ["C4709"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md index aa9ebc0c628..647a6c116cf 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md @@ -1,7 +1,7 @@ --- title: "Compiler Warnings by compiler version" description: "Table of Microsoft C/C++ compiler warnings by compiler version." -ms.date: 01/18/2024 +ms.date: 06/01/2026 helpviewer_keywords: ["warnings, by compiler version", "cl.exe compiler, setting warning options"] --- # Compiler Warnings by compiler version diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md index d6e4a4b094a..b57fb7793da 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md @@ -1,7 +1,7 @@ --- title: "Microsoft C/C++ compiler (MSVC) warnings C4600 through C4799" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C4600 through C4799" -ms.date: 05/03/2021 +ms.date: 06/01/2026 f1_keywords: ["C4604", "C4605", "C4609", "C4631", "C4642", "C4643", "C4644", "C4647", "C4648", "C4649", "C4654", "C4658", "C4671", "C4676", "C4689", "C4695", "C4696", "C4719", "C4720", "C4721", "C4725", "C4726", "C4728", "C4729", "C4732", "C4734", "C4735", "C4736", "C4745", "C4749", "C4751", "C4752", "C4753", "C4755", "C4757", "C4761", "C4767", "C4771", "C4774", "C4775", "C4776", "C4777", "C4778", "C4792", "C4798"] helpviewer_keywords: ["C4604", "C4605", "C4609", "C4631", "C4642", "C4643", "C4644", "C4647", "C4648", "C4649", "C4654", "C4658", "C4671", "C4676", "C4689", "C4695", "C4696", "C4719", "C4720", "C4721", "C4725", "C4726", "C4728", "C4729", "C4732", "C4734", "C4735", "C4736", "C4745", "C4749", "C4751", "C4752", "C4753", "C4755", "C4757", "C4761", "C4767", "C4771", "C4774", "C4775", "C4776", "C4777", "C4778", "C4792", "C4798"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md index 851b649ded3..0f1ccf793d7 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4800-through-c4999.md @@ -1,7 +1,7 @@ --- title: "Microsoft C/C++ compiler (MSVC) warnings C4800 through C4999" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C4800 through C4999." -ms.date: 04/17/2024 +ms.date: 06/01/2026 f1_keywords: ["C4801", "C4808", "C4809", "C4815", "C4826", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4862", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"] helpviewer_keywords: ["C4801", "C4808", "C4809", "C4815", "C4826", "C4827", "C4828", "C4837", "C4842", "C4844", "C4845", "C4846", "C4847", "C4848", "C4849", "C4854", "C4855", "C4856", "C4857", "C4858", "C4859", "C4860", "C4861", "C4862", "C4869", "C4872", "C4880", "C4881", "C4882", "C4883", "C4907", "C4916", "C4921", "C4934", "C4954", "C4955", "C4963", "C4966", "C4970", "C4971", "C4973", "C4974", "C4975", "C4976", "C4981", "C4983", "C4987", "C4988", "C4989", "C4990", "C4991", "C4992", "C4998"] --- diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md index 31eb3a880a5..bac0dc66260 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c5200-through-c5399.md @@ -1,7 +1,7 @@ --- title: "Microsoft C/C++ compiler (MSVC) compiler warnings C5200 through C5399" description: "Table of Microsoft C/C++ compiler (MSVC) warnings C5200 through C5399." -ms.date: 04/19/2024 +ms.date: 06/01/2026 f1_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5276", "C5277", "C5278", "C5279", "C5280", "C5281", "C5282", "C5283", "C5284", "C5285", "C5286", "C5287", "C5300", "C5303", "C5304", "C5305", "C5306", "C5307", "C5308", "C5309"] helpviewer_keywords: ["C5200", "C5201", "C5202", "C5203", "C5204", "C5205", "C5206", "C5207", "C5209", "C5210", "C5212", "C5213", "C5214", "C5215", "C5216", "C5217", "C5218", "C5219", "C5220", "C5221", "C5222", "C5223", "C5224", "C5225", "C5226", "C5227", "C5228", "C5229", "C5230", "C5231", "C5232", "C5233", "C5234", "C5235", "C5236", "C5237", "C5238", "C5239", "C5241", "C5242", "C5244", "C5245", "C5246", "C5249", "C5250", "C5251", "C5252", "C5253", "C5254", "C5255", "C5256", "C5257", "C5258", "C5259", "C5260", "C5261", "C5263", "C5264", "C5265", "C5268", "C5269", "C5270", "C5271", "C5272", "C5273", "C5274", "C5275", "C5276", "C5277", "C5278", "C5279", "C5280", "C5281", "C5282", "C5283", "C5284", "C5285", "C5286", "C5287", "C5300", "C5303", "C5304", "C5305", "C5306", "C5307", "C5308", "C5309"] --- From 44b707f738473cf0a1f26e641006336308144cee Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 1 Jun 2026 11:59:14 -0700 Subject: [PATCH 522/619] minor updates, addressing PR comments. --- docs/build/reference/zc-conformance.md | 1 + docs/build/reference/zc-u8escapeencoding.md | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/build/reference/zc-conformance.md b/docs/build/reference/zc-conformance.md index 77534192bb9..7f3e01fe5ad 100644 --- a/docs/build/reference/zc-conformance.md +++ b/docs/build/reference/zc-conformance.md @@ -52,6 +52,7 @@ Here are the **`/Zc`** compiler options: | [`/Zc:tlsGuards[-]`](zc-tlsguards.md) | Generate runtime checks for TLS variable initialization. On by default. | | [`/Zc:trigraphs[-]`](zc-trigraphs-trigraphs-substitution.md) | Enable trigraphs (obsolete, off by default). | | [`/Zc:twoPhase-`](zc-twophase.md) | Use nonconforming template parsing behavior (only applicable when **`/permissive-`** is specified, which defaults to conforming). | +| [`/Zc:u8EscapeEncoding[-]`](zc-u8escapeencoding.md) | Encode integer escape sequences in u8 string literals as-is instead of as utf-8 characters. Off by default. | | [`/Zc:wchar_t[-]`](zc-wchar-t-wchar-t-is-native-type.md) | **`wchar_t`** is a native type, not a typedef. On by default. | | [`/Zc:zeroSizeArrayNew[-]`](zc-zerosizearraynew.md) | Call member `new`/`delete` for 0-size arrays of objects. On by default. | diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md index dcbe81575be..1badbd05ea8 100644 --- a/docs/build/reference/zc-u8escapeencoding.md +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -5,13 +5,15 @@ author: Rastaban ms.author: philc ms.service: visual-cpp ms.topic: article -ms.date: 02/10/2026 +ms.date: 06/01/2026 ms.subservice: cpp-lang --- # /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) Keep the value of numeric escape sequences in `u8` string literals without encoding them them as utf-8. +Use this switch to increase cross compatability or when a non-utf-8 character is embedded in a utf-8 string literal. + ## Syntax > **/Zc:u8EscapeEncoding**[**-**] @@ -34,6 +36,8 @@ int main() } ``` +This is subtle, but notice that the example string contains both a hex escape sequence '\\__x__' and a universal escape sequence '\\__u__'. `/Zc:u8EscapeEncoding[-]` will affect the encoding of the hex escape sequence, but the universal escape sequence will always be encoded the same way. The example string also includes the space character, which is encoded as `0x20`. + Under `/Zc:u8EscapeEncoding` the escape sequence `\x00ff` is encoded as `0xFF` and the universal-character sequence `\u00ff` is encoded as the utf-8 sequence `0xC3 0xBF`. This gives the following output when run: ```output From 2f43ee92792cd693efcdea194eb99ef3fd54912d Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 1 Jun 2026 12:08:54 -0700 Subject: [PATCH 523/619] Acrolynx --- docs/build/reference/zc-u8escapeencoding.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md index 1badbd05ea8..79161dc88f7 100644 --- a/docs/build/reference/zc-u8escapeencoding.md +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -8,11 +8,11 @@ ms.topic: article ms.date: 06/01/2026 ms.subservice: cpp-lang --- -# /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) +# `/Zc:u8EscapeEncoding` (numeric escape sequence encoding in u8 strings) Keep the value of numeric escape sequences in `u8` string literals without encoding them them as utf-8. -Use this switch to increase cross compatability or when a non-utf-8 character is embedded in a utf-8 string literal. +Use this switch to increase cross compatibility or when a non-utf-8 character is embedded in a utf-8 string literal. ## Syntax @@ -20,7 +20,7 @@ Use this switch to increase cross compatability or when a non-utf-8 character is ## Remarks -In C++ `u8` string literals are utf-8 encoded sequences of `char8_t`. This flag changes the way numeric escape sequences are interpreted in `u8` string literals. The behavior under `/Zc:u8EscapeEncoding` is to keep their value as-is. The behavior under `/Zc:u8EscapeEncoding-` is to re-encode the value in utf-8 as if it is a universal-character. The behavior of universal-character sequences is always to encode them as utf-8. +In C++, `u8` string literals are utf-8 encoded sequences of `char8_t`. This flag changes the way numeric escape sequences are interpreted in `u8` string literals. The behavior under `/Zc:u8EscapeEncoding` is to keep their value as-is. The behavior under `/Zc:u8EscapeEncoding-` is to re-encode the value in utf-8 as if it's a universal-character. The behavior of universal-character sequences is always to encode them as utf-8. The following example shows the behavior: @@ -36,15 +36,15 @@ int main() } ``` -This is subtle, but notice that the example string contains both a hex escape sequence '\\__x__' and a universal escape sequence '\\__u__'. `/Zc:u8EscapeEncoding[-]` will affect the encoding of the hex escape sequence, but the universal escape sequence will always be encoded the same way. The example string also includes the space character, which is encoded as `0x20`. +The differences in the example string escape sequences are subtle. Notice the example string contains both a hex escape sequence '\\__x__' and a universal escape sequence '\\__u__'. `/Zc:u8EscapeEncoding[-]` affects the encoding of the hex escape sequence, but the universal escape sequence is always encoded as utf-8. The example string also includes the space character, which is encoded as `0x20`. -Under `/Zc:u8EscapeEncoding` the escape sequence `\x00ff` is encoded as `0xFF` and the universal-character sequence `\u00ff` is encoded as the utf-8 sequence `0xC3 0xBF`. This gives the following output when run: +Under `/Zc:u8EscapeEncoding`, the escape sequence `\x00ff` is encoded as `0xFF` and the universal-character sequence `\u00ff` is encoded as the utf-8 sequence `0xC3 0xBF`. The result is the following output when run: ```output 0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0 ``` -Under `/Zc:u8EscapeEncoding-` the value of both `\x00ff` and `\u00ff` are re-encoded as the utf-8 sequence `0xC3 0xBF`. This gives the following output when run: +Under `/Zc:u8EscapeEncoding-` the value of both `\x00ff` and `\u00ff` are re-encoded as the utf-8 sequence `0xC3 0xBF`. The result is the following output when run: ```output 0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0 From d7d8ad564007df1652b7dfda62b36e926f945eca Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 1 Jun 2026 12:11:36 -0700 Subject: [PATCH 524/619] Acrolynx --- docs/build/reference/zc-u8escapeencoding.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md index 79161dc88f7..2c1f01d9d34 100644 --- a/docs/build/reference/zc-u8escapeencoding.md +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -10,7 +10,7 @@ ms.subservice: cpp-lang --- # `/Zc:u8EscapeEncoding` (numeric escape sequence encoding in u8 strings) -Keep the value of numeric escape sequences in `u8` string literals without encoding them them as utf-8. +Keep the value of numeric escape sequences in `u8` string literals without encoding them as utf-8. Use this switch to increase cross compatibility or when a non-utf-8 character is embedded in a utf-8 string literal. @@ -44,7 +44,7 @@ Under `/Zc:u8EscapeEncoding`, the escape sequence `\x00ff` is encoded as `0xFF` 0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0 ``` -Under `/Zc:u8EscapeEncoding-` the value of both `\x00ff` and `\u00ff` are re-encoded as the utf-8 sequence `0xC3 0xBF`. The result is the following output when run: +Under `/Zc:u8EscapeEncoding-`, the value of both `\x00ff` and `\u00ff` are re-encoded as the utf-8 sequence `0xC3 0xBF`. The result is the following output when run: ```output 0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0 From 139f91ceb475e3b08c28ce1977a7e19c24a8a105 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 1 Jun 2026 13:12:55 -0700 Subject: [PATCH 525/619] Acrolynx --- docs/build/reference/zc-u8escapeencoding.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md index 2c1f01d9d34..7e487418ede 100644 --- a/docs/build/reference/zc-u8escapeencoding.md +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -44,7 +44,7 @@ Under `/Zc:u8EscapeEncoding`, the escape sequence `\x00ff` is encoded as `0xFF` 0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0 ``` -Under `/Zc:u8EscapeEncoding-`, the value of both `\x00ff` and `\u00ff` are re-encoded as the utf-8 sequence `0xC3 0xBF`. The result is the following output when run: +Under `/Zc:u8EscapeEncoding-`, the values of both `\x00ff` and `\u00ff` are re-encoded as the utf-8 sequence `0xC3 0xBF`. The result is the following output when run: ```output 0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0 From 3aadc9021130700223eb1f6b012cb25f19700ea6 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 1 Jun 2026 14:51:11 -0700 Subject: [PATCH 526/619] Acrolynx --- docs/build/reference/zc-conformance.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/reference/zc-conformance.md b/docs/build/reference/zc-conformance.md index 7f3e01fe5ad..195673e65c3 100644 --- a/docs/build/reference/zc-conformance.md +++ b/docs/build/reference/zc-conformance.md @@ -16,7 +16,7 @@ You may set multiple **`/Zc`** options separated by commas in a single **`/Zc`** ## Remarks -When Visual Studio has implemented an extension to C or C++ that is incompatible with the standard, you can use a **`/Zc`** conformance option to specify standard-conforming or Microsoft-specific behavior. For some options, the Microsoft-specific behavior is the default, to prevent large-scale breaking changes to existing code. In other cases, the default is the standard behavior, where improvements in security, performance, or compatibility outweigh the costs of breaking changes. The default setting of each conformance option may change in newer versions of Visual Studio. For more information about each conformance option, see the article for the specific option. The [`/permissive-`](permissive-standards-conformance.md) compiler option implicitly sets the conformance options that aren't set by default to their conforming settings. +When Visual Studio implements an extension to C or C++ that is incompatible with the standard, you can use a **`/Zc`** conformance option to specify standard-conforming or Microsoft-specific behavior. For some options, the Microsoft-specific behavior is the default, to prevent large-scale breaking changes to existing code. In other cases, the default is the standard behavior, where improvements in security, performance, or compatibility outweigh the costs of breaking changes. The default setting of each conformance option may change in newer versions of Visual Studio. For more information about each conformance option, see the article for the specific option. The [`/permissive-`](permissive-standards-conformance.md) compiler option implicitly sets the conformance options that aren't set by default to their conforming settings. Here are the **`/Zc`** compiler options: @@ -27,7 +27,7 @@ Here are the **`/Zc`** compiler options: | [`/Zc:alignedNew[-]`](zc-alignednew.md) | Enable C++17 over-aligned dynamic allocation. Off by default unless **`/std:c++17`** or later is specified. | | [`/Zc:auto[-]`](zc-auto-deduce-variable-type.md) | Enforce the new Standard C++ meaning for **`auto`**. On by default. | | [`/Zc:char8_t[-]`](zc-char8-t.md) | Enable or disable C++20 native `u8` literal support as `const char8_t`. Off by default unless **`/std:c++20`** or later is specified. | -| [`/Zc:checkGwOdr[-]`](zc-check-gwodr.md) | Enforce Standard C++ ODR violations under `/Gw`. | +| [`/Zc:checkGwOdr[-]`](zc-check-gwodr.md) | Enforce Standard C++ One-Definition-Rule (ODR) violations under `/Gw`. | | [`/Zc:enumTypes[-]`](zc-enumtypes.md) | Enable Standard C++ rules for `enum` type deduction. Off by default. | | [`/Zc:externC[-]`](zc-externc.md) | Enforce Standard C++ rules for `extern "C"` functions. Off by default unless **`/permissive-`** is specified. | | [`/Zc:externConstexpr[-]`](zc-externconstexpr.md) | Enable external linkage for **`constexpr`** variables. Off by default unless **`/permissive-`** is specified. | @@ -40,7 +40,7 @@ Here are the **`/Zc`** compiler options: | [`/Zc:noexceptTypes[-]`](zc-noexcepttypes.md) | Enforce C++17 **`noexcept`** rules. Off by default unless **`/std:c++17`** or later is specified. | | [`/Zc:nrvo[-]`](zc-nrvo.md) | Enable optional copy and move elisions. Off by default unless **`/O2`**, **`/permissive-`**, or **`/std:c++20`** or later is specified. | | [`/Zc:preprocessor[-]`](zc-preprocessor.md) | Use the new conforming preprocessor. Off by default unless **`/std:c11`** or later is specified. | -| [`/Zc:referenceBinding[-]`](zc-referencebinding-enforce-reference-binding-rules.md) | A UDT temporary won't bind to a nonconst lvalue reference. Off by default unless **`/permissive-`** is specified. | +| [`/Zc:referenceBinding[-]`](zc-referencebinding-enforce-reference-binding-rules.md) | A temporary value of a user-defined type dosen't bind to a nonconst lvalue reference. Off by default unless **`/permissive-`** is specified. | | [`/Zc:rvalueCast[-]`](zc-rvaluecast-enforce-type-conversion-rules.md) | Enforce Standard C++ explicit type conversion rules. Off by default unless **`/permissive-`** is specified. | | [`/Zc:sizedDealloc[-]`](zc-sizeddealloc-enable-global-sized-dealloc-functions.md) | Enable C++14 global sized deallocation functions. On by default. | | [`/Zc:strictStrings[-]`](zc-strictstrings-disable-string-literal-type-conversion.md) | Disable string-literal to `char*` or `wchar_t*` conversion. Off by default unless **`/permissive-`** is specified. | @@ -54,7 +54,7 @@ Here are the **`/Zc`** compiler options: | [`/Zc:twoPhase-`](zc-twophase.md) | Use nonconforming template parsing behavior (only applicable when **`/permissive-`** is specified, which defaults to conforming). | | [`/Zc:u8EscapeEncoding[-]`](zc-u8escapeencoding.md) | Encode integer escape sequences in u8 string literals as-is instead of as utf-8 characters. Off by default. | | [`/Zc:wchar_t[-]`](zc-wchar-t-wchar-t-is-native-type.md) | **`wchar_t`** is a native type, not a typedef. On by default. | -| [`/Zc:zeroSizeArrayNew[-]`](zc-zerosizearraynew.md) | Call member `new`/`delete` for 0-size arrays of objects. On by default. | +| [`/Zc:zeroSizeArrayNew[-]`](zc-zerosizearraynew.md) | Call member `new`/`delete` for `0`-size arrays of objects. On by default. | For more information about conformance issues in MSVC, see [Nonstandard behavior](../../cpp/nonstandard-behavior.md). From 0e4085b8401952c00c94b0129143299bf802960d Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 1 Jun 2026 14:53:41 -0700 Subject: [PATCH 527/619] Acrolynx --- docs/build/reference/zc-conformance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zc-conformance.md b/docs/build/reference/zc-conformance.md index 195673e65c3..b2d72372b20 100644 --- a/docs/build/reference/zc-conformance.md +++ b/docs/build/reference/zc-conformance.md @@ -16,7 +16,7 @@ You may set multiple **`/Zc`** options separated by commas in a single **`/Zc`** ## Remarks -When Visual Studio implements an extension to C or C++ that is incompatible with the standard, you can use a **`/Zc`** conformance option to specify standard-conforming or Microsoft-specific behavior. For some options, the Microsoft-specific behavior is the default, to prevent large-scale breaking changes to existing code. In other cases, the default is the standard behavior, where improvements in security, performance, or compatibility outweigh the costs of breaking changes. The default setting of each conformance option may change in newer versions of Visual Studio. For more information about each conformance option, see the article for the specific option. The [`/permissive-`](permissive-standards-conformance.md) compiler option implicitly sets the conformance options that aren't set by default to their conforming settings. +When Visual Studio implements an extension to C or C++ that's incompatible with the standard, you can use a **`/Zc`** conformance option to specify standard-conforming or Microsoft-specific behavior. For some options, the Microsoft-specific behavior is the default, to prevent large-scale breaking changes to existing code. In other cases, the default is the standard behavior, where improvements in security, performance, or compatibility outweigh the costs of breaking changes. The default setting of each conformance option may change in newer versions of Visual Studio. For more information about each conformance option, see the article for the specific option. The [`/permissive-`](permissive-standards-conformance.md) compiler option implicitly sets the conformance options that aren't set by default to their conforming settings. Here are the **`/Zc`** compiler options: From 0793a15b015d3530506476d87f7394c5e2c99bbf Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 1 Jun 2026 15:09:45 -0700 Subject: [PATCH 528/619] tech review --- docs/build/building-on-the-command-line.md | 28 ++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index ff7ba0ce736..8ce85197db8 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -2,7 +2,7 @@ title: "Use the Microsoft C++ Build Tools from the command line" description: "Learn how to install and use the Microsoft C++ Build Tools from the command line outside of the Visual Studio IDE." ms.custom: "conceptual" -ms.date: 05/29/2026 +ms.date: 06/01/2026 ms.topic: how-to helpviewer_keywords: ["command-line builds [C++]", "compiling source code [C++], command line", "builds [C++], command-line", "command line [C++], building from", "command line [C++], compilers"] #custom intent: As a C++ developer, I want to understand all the options for using the command line to compile and build my software projects as part of my workflow. @@ -41,7 +41,7 @@ When you choose one of the C++ workloads in the Visual Studio Installer, it inst The tools include the C/C++ compilers, linkers, assemblers, and other build tools. It includes matching libraries and header files. You can use all of these tools at the command line. The Visual Studio IDE uses them internally. There are separate x86-hosted and x64-hosted compilers and tools that build code for x86, x64, ARM, and ARM64 targets. Each set of tools for a particular host and target build architecture is stored in its own directory. -The tools require several environment variables be set. These variables add the tools to the path and set the locations of include files, library files, and SDKs. To make it easy to set these environment variables, the installer creates customized *command files*, or batch files, during installation. You can run one of these command files to set a specific host and target build architecture, Windows SDK version, and platform toolset. +The tools require several environment variables to be set. These variables add the tools to the path and set the locations of include files, library files, and SDKs. To make it easy to set these environment variables, the installer creates customized *command files*, or batch files, during installation. You can run one of these command files to set a specific host and target build architecture, Windows SDK version, and platform toolset. For convenience, the installer also creates shortcuts in your **Start** menu. The shortcuts open developer Command Prompt windows by using these command files for specific combinations of host and target. These shortcuts ensure all the required environment variables are set and ready to use. @@ -59,11 +59,11 @@ To see which environment variables a developer command prompt shortcut sets, use The command prompt shortcuts are installed in a version-specific Visual Studio folder in your Windows **Start** menu. Here's a list of the base command prompt shortcuts and the build architectures they support: -- **Developer Command Prompt**. Sets the environment to use 32-bit, x86-native tools to build 32-bit, x86-native code. -- **x86 Native Tools Command Prompt**. Sets the environment to use 32-bit, x86-native tools to build 32-bit, x86-native code. -- **x64 Native Tools Command Prompt**. Sets the environment to use 64-bit, x64-native tools to build 64-bit, x64-native code. -- **x86_x64 Cross Tools Command Prompt**. Sets the environment to use 32-bit, x86-native tools to build 64-bit, x64-native code. -- **x64_x86 Cross Tools Command Prompt**. Sets the environment to use 64-bit, x64-native tools to build 32-bit, x86-native code. +- **Developer Command Prompt**. Sets the environment to use 32-bit x86 tools to build 32-bit x86 code. +- **x86 Native Tools Command Prompt**. Sets the environment to use 32-bit x86 tools to build 32-bit x86 code. +- **x64 Native Tools Command Prompt**. Sets the environment to use 64-bit x64 tools to build 64-bit x64 code. +- **x86_x64 Cross Tools Command Prompt**. Sets the environment to use 32-bit x86 tools to build 64-bit x64 code. +- **x64_x86 Cross Tools Command Prompt**. Sets the environment to use 64-bit x64 tools to build 32-bit x86 code. ::: moniker range=">=msvc-180" The **Start** menu folder and shortcut names vary depending on the installed version of Visual Studio. For example, suppose you installed the Visual Studio 2026 Insiders version. The developer command prompt shortcut is named **Developer Command Prompt for VS Insiders** in **Start** > **Programs** > **Visual Studio** > **Visual Studio Tools**. @@ -87,7 +87,7 @@ The **Start** menu folder and shortcut names vary depending on the installed ver ### To open a developer Command Prompt window 1. On the desktop, open the Windows **Start** menu. In Windows 11, choose **All apps** to open the list of installed apps. In Windows 10, the list is open to the left. Scroll down the list to find and open the folder (not the app) for your version of Visual Studio, such as **Visual Studio 2022** or **Visual Studio** for version 2026 and later. -1. In the folder, choose the **Developer Command Prompt** for your version of Visual Studio. This shortcut starts a developer Command Prompt window that uses the default build architecture of 32-bit, x86-native tools to build 32-bit, x86-native code. If you prefer a nondefault build architecture, choose one of the native or cross tools command prompts to specify the host and target architecture. +1. In the folder, choose the **Developer Command Prompt** for your version of Visual Studio. This shortcut starts a developer Command Prompt window that sets the environment to use 32-bit x86 tools to build 32-bit x86 code. If you prefer a nondefault build architecture, choose one of the native or cross tools command prompts to specify the host and target architecture. For an even faster way to open a developer command prompt, enter *developer command prompt* in the desktop search box. Then choose the result you want. @@ -105,7 +105,7 @@ The command file location depends on the version of Visual Studio you installed, ::: moniker-end ::: moniker range="= msvc-170" -The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2022, the typical installation location on a 64-bit system is `C:\Program Files\Microsoft Visual Studio\2022\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`. +The command file location depends on the version of Visual Studio you installed, and on choices you made during installation. For Visual Studio 2022, the typical installation location is `C:\Program Files\Microsoft Visual Studio\2022\`. The `` can be `Community`, `Professional`, `Enterprise`, `BuildTools`. ::: moniker-end ::: moniker range="= msvc-160" @@ -206,7 +206,7 @@ When you use `vcvarsall.bat` with no arguments, it configures the environment va #### To set up the build environment in an existing Command Prompt window -1. At the command prompt, use the `CD` command to change to the Visual Studio installation directory. Then, use `CD` again to change to the subdirectory that contains the configuration-specific command files. For Visual Studio 2019 and Visual Studio 2017, use the `VC\Auxiliary\Build` subdirectory. For Visual Studio 2015, use the `VC` subdirectory. +1. At the command prompt, use the `CD` command to change to the Visual Studio installation directory. For example, `C:\Program Files\Microsoft Visual Studio\18\Professional` if you are using Visual studio 2026. Then, use `CD` again to change to the subdirectory that contains the configuration-specific command files. For Visual Studio 2017 and beyond, use the `VC\Auxiliary\Build` subdirectory. For Visual Studio 2015, use the `VC` subdirectory. 1. Enter the command for your preferred developer environment. For example, to build ARM code for UWP on a 64-bit platform, using the latest Windows SDK and Visual Studio compiler toolset, use this command: ```cmd @@ -261,12 +261,16 @@ Open the **Properties** dialog for a developer command prompt shortcut to see th ::: moniker-end -The architecture-specific batch files set the `architecture` parameter and call `vcvarsall.bat`. You can pass the same options to these batch files as you pass to `vcvarsall.bat`, or you can just call `vcvarsall.bat` directly. To specify parameters for your own command shortcut, add them to the end of the command in double quotes. For example, here's a shortcut to build ARM code for UWP on a 64-bit platform, using the latest Windows SDK. To use an earlier compiler toolset, specify the version number. Use a command like this command target in your shortcut: +The architecture-specific batch files set the `architecture` parameter and call `vcvarsall.bat`. You can pass the same options to these batch files as you pass to `vcvarsall.bat`, or you can just call `vcvarsall.bat` directly. To specify parameters for your own command shortcut, add them to the end of the command in double quotes. To use an earlier compiler toolset, specify the version number. + +You can only target ARM64 starting with Visual Studio 2026 because ARM32 targeting was removed then. + +Here's a shortcut to build ARM64 code for UWP on a 64-bit platform, using the latest Windows SDK. Targeting ARM64 is shown for Visual Studio 2026 and later. Targeting ARM32 is shown for earlier versions. ::: moniker range=">= msvc-180" ```cmd -%comspec% /k "C:\Program Files\Microsoft Visual Studio\18\Professional\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.5 +%comspec% /k "C:\Program Files\Microsoft Visual Studio\18\Professional\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm64 uwp -vcvars_ver=14.50 ``` ::: moniker-end From c845a24e7ed1c9b9994fae93669afe990472ad7d Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 1 Jun 2026 16:41:29 -0700 Subject: [PATCH 529/619] PR feedback --- docs/build/reference/zc-u8escapeencoding.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md index 7e487418ede..bf246331f34 100644 --- a/docs/build/reference/zc-u8escapeencoding.md +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -12,7 +12,7 @@ ms.subservice: cpp-lang Keep the value of numeric escape sequences in `u8` string literals without encoding them as utf-8. -Use this switch to increase cross compatibility or when a non-utf-8 character is embedded in a utf-8 string literal. +Use this switch to increase cross compatibility or when a non-utf-8 character is embedded in an utf-8 string literal. ## Syntax @@ -20,9 +20,9 @@ Use this switch to increase cross compatibility or when a non-utf-8 character is ## Remarks -In C++, `u8` string literals are utf-8 encoded sequences of `char8_t`. This flag changes the way numeric escape sequences are interpreted in `u8` string literals. The behavior under `/Zc:u8EscapeEncoding` is to keep their value as-is. The behavior under `/Zc:u8EscapeEncoding-` is to re-encode the value in utf-8 as if it's a universal-character. The behavior of universal-character sequences is always to encode them as utf-8. +In C++, `u8` string literals are utf-8 encoded sequences of `char8_t`. This flag changes the way numeric escape sequences are interpreted in `u8` string literals. The behavior under `/Zc:u8EscapeEncoding` is to encode them in the string as a single 8-bit `char8_t` value. The behavior under `/Zc:u8EscapeEncoding-` is to interpret the value as a unicode code point. When the value is a higher code point in Unicode, this results in a multibyte character. The behavior of universal-character sequences is always to encode them as utf-8 independent of `/Zc:u8EscapeEncoding[-]`. -The following example shows the behavior: +The following example contains both a hex escape sequence '\\__x__' and a universal escape sequence '\\__u__'. `/Zc:u8EscapeEncoding[-]` affects the encoding of the hex escape sequence, but the universal escape sequence is always encoded as utf-8. The example string also includes the space character, which is encoded as `0x20` in utf-8. ```cpp #include @@ -36,8 +36,6 @@ int main() } ``` -The differences in the example string escape sequences are subtle. Notice the example string contains both a hex escape sequence '\\__x__' and a universal escape sequence '\\__u__'. `/Zc:u8EscapeEncoding[-]` affects the encoding of the hex escape sequence, but the universal escape sequence is always encoded as utf-8. The example string also includes the space character, which is encoded as `0x20`. - Under `/Zc:u8EscapeEncoding`, the escape sequence `\x00ff` is encoded as `0xFF` and the universal-character sequence `\u00ff` is encoded as the utf-8 sequence `0xC3 0xBF`. The result is the following output when run: ```output @@ -52,4 +50,4 @@ Under `/Zc:u8EscapeEncoding-`, the values of both `\x00ff` and `\u00ff` are re-e ## See also -[/Zc (Conformance)](zc-conformance.md)
      +[/Zc (Conformance)](zc-conformance.md) From d25e83731f0600bc021bd0b084ad5812b6cfe88f Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo Teixeira Date: Mon, 1 Jun 2026 20:19:36 -0700 Subject: [PATCH 530/619] Fix copy-paste typo: Volatile means caller-saved. --- docs/build/x64-software-conventions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/x64-software-conventions.md b/docs/build/x64-software-conventions.md index fdb9f859bd9..89bb5eb1397 100644 --- a/docs/build/x64-software-conventions.md +++ b/docs/build/x64-software-conventions.md @@ -202,7 +202,7 @@ The following table describes how each register is used across function calls: |`R9`|Volatile|Fourth integer argument| |`R10`:`R11`|Volatile|Must be preserved as needed by caller; used in syscall/sysret instructions| |`R12`:`R15`|Nonvolatile|Must be preserved by callee| -|`R16`:`R29`|Volatile|Must be preserved by callee (APX Register)| +|`R16`:`R29`|Volatile|Must be preserved as needed by caller (APX Register)| |`R30`:`R31`|Nonvolatile|Must be preserved by callee (APX Register)| |`RDI`|Nonvolatile|Must be preserved by callee| |`RSI`|Nonvolatile|Must be preserved by callee| From bee125b0139b93ce6afc7451064aace3990d3eea Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 2 Jun 2026 09:59:21 -0700 Subject: [PATCH 531/619] Acrolynx --- docs/build/reference/zc-u8escapeencoding.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md index bf246331f34..c3ed20d9b8e 100644 --- a/docs/build/reference/zc-u8escapeencoding.md +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -20,7 +20,7 @@ Use this switch to increase cross compatibility or when a non-utf-8 character is ## Remarks -In C++, `u8` string literals are utf-8 encoded sequences of `char8_t`. This flag changes the way numeric escape sequences are interpreted in `u8` string literals. The behavior under `/Zc:u8EscapeEncoding` is to encode them in the string as a single 8-bit `char8_t` value. The behavior under `/Zc:u8EscapeEncoding-` is to interpret the value as a unicode code point. When the value is a higher code point in Unicode, this results in a multibyte character. The behavior of universal-character sequences is always to encode them as utf-8 independent of `/Zc:u8EscapeEncoding[-]`. +In C++, `u8` string literals are utf-8 encoded sequences of `char8_t`. This flag changes the way numeric escape sequences are interpreted in `u8` string literals. The behavior under `/Zc:u8EscapeEncoding` is to encode them in the string as a single 8-bit `char8_t` value. The behavior under `/Zc:u8EscapeEncoding-` is to interpret the value as a unicode code point. When the value is a higher code point in Unicode, it will be encoded as a multibyte character. The behavior of universal-character sequences is always to encode them as utf-8 independent of `/Zc:u8EscapeEncoding[-]`. The following example contains both a hex escape sequence '\\__x__' and a universal escape sequence '\\__u__'. `/Zc:u8EscapeEncoding[-]` affects the encoding of the hex escape sequence, but the universal escape sequence is always encoded as utf-8. The example string also includes the space character, which is encoded as `0x20` in utf-8. From df5c88ebdbf8a53ed71f506501f004dec17e0b7e Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 2 Jun 2026 10:02:41 -0700 Subject: [PATCH 532/619] acrolynx --- docs/build/reference/zc-u8escapeencoding.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md index c3ed20d9b8e..9f2a714d609 100644 --- a/docs/build/reference/zc-u8escapeencoding.md +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -20,7 +20,7 @@ Use this switch to increase cross compatibility or when a non-utf-8 character is ## Remarks -In C++, `u8` string literals are utf-8 encoded sequences of `char8_t`. This flag changes the way numeric escape sequences are interpreted in `u8` string literals. The behavior under `/Zc:u8EscapeEncoding` is to encode them in the string as a single 8-bit `char8_t` value. The behavior under `/Zc:u8EscapeEncoding-` is to interpret the value as a unicode code point. When the value is a higher code point in Unicode, it will be encoded as a multibyte character. The behavior of universal-character sequences is always to encode them as utf-8 independent of `/Zc:u8EscapeEncoding[-]`. +In C++, `u8` string literals are utf-8 encoded sequences of `char8_t`. This flag changes the way numeric escape sequences are interpreted in `u8` string literals. The behavior under `/Zc:u8EscapeEncoding` is to encode them in the string as a single 8-bit `char8_t` value. The behavior under `/Zc:u8EscapeEncoding-` is to interpret the value as a unicode code point. When the value is a higher code point in Unicode, it is encoded as a multibyte character. The behavior of universal-character sequences is always to encode them as utf-8 independent of `/Zc:u8EscapeEncoding[-]`. The following example contains both a hex escape sequence '\\__x__' and a universal escape sequence '\\__u__'. `/Zc:u8EscapeEncoding[-]` affects the encoding of the hex escape sequence, but the universal escape sequence is always encoded as utf-8. The example string also includes the space character, which is encoded as `0x20` in utf-8. From f1cae35ada05de2a042fd15ba9acb89e585e4ed9 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 2 Jun 2026 10:08:42 -0700 Subject: [PATCH 533/619] Acrolynx --- docs/build/reference/zc-u8escapeencoding.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md index 9f2a714d609..b21bff3f82f 100644 --- a/docs/build/reference/zc-u8escapeencoding.md +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -1,6 +1,6 @@ --- -title: /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) -description: "Learn more about the compiler option /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings)" +title: `/Zc:u8EscapeEncoding` (numeric escape sequence encoding in u8 strings) +description: "Learn more about the compiler option `/Zc:u8EscapeEncoding` (numeric escape sequence encoding in u8 strings)" author: Rastaban ms.author: philc ms.service: visual-cpp @@ -20,9 +20,9 @@ Use this switch to increase cross compatibility or when a non-utf-8 character is ## Remarks -In C++, `u8` string literals are utf-8 encoded sequences of `char8_t`. This flag changes the way numeric escape sequences are interpreted in `u8` string literals. The behavior under `/Zc:u8EscapeEncoding` is to encode them in the string as a single 8-bit `char8_t` value. The behavior under `/Zc:u8EscapeEncoding-` is to interpret the value as a unicode code point. When the value is a higher code point in Unicode, it is encoded as a multibyte character. The behavior of universal-character sequences is always to encode them as utf-8 independent of `/Zc:u8EscapeEncoding[-]`. +In C++, `u8` string literals are utf-8 encoded sequences of `char8_t`. This flag changes the way numeric escape sequences are interpreted in `u8` string literals. The behavior under `/Zc:u8EscapeEncoding` is to encode them in the string as a single 8-bit `char8_t` value. The behavior under `/Zc:u8EscapeEncoding-` is to interpret the value as a unicode code point. When the value is a higher code point in Unicode, it's encoded as a multibyte character. The behavior of universal-character sequences is always to encode them as utf-8 independent of `/Zc:u8EscapeEncoding[-]`. -The following example contains both a hex escape sequence '\\__x__' and a universal escape sequence '\\__u__'. `/Zc:u8EscapeEncoding[-]` affects the encoding of the hex escape sequence, but the universal escape sequence is always encoded as utf-8. The example string also includes the space character, which is encoded as `0x20` in utf-8. +The following example contains both a hex escape sequence \\__x__ and a universal escape sequence \\__u__. `/Zc:u8EscapeEncoding[-]` affects the encoding of the hex escape sequence, but the universal escape sequence is always encoded as utf-8. The example string also includes the space character, which is encoded as `0x20` in utf-8. ```cpp #include From baca9c84d5bceba993cba0dfd8d40f687efc3a26 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 2 Jun 2026 15:49:02 -0700 Subject: [PATCH 534/619] Update docs/build/building-on-the-command-line.md Co-authored-by: David Justo --- docs/build/building-on-the-command-line.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 8ce85197db8..5f03b3880ed 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -37,7 +37,7 @@ To install only the tools you need for C++ development, select the **Desktop dev ## How to use the command-line tools -When you choose one of the C++ workloads in the Visual Studio Installer, it installs a specific version of the MSVC Build Tools package by default. For Visual Studio 2022 and earlier, the package is organized by a *platform toolset* (v### version format) that includes all the C and C++ tools for a specific version of Visual Studio. For later versions of Visual Studio, the package consists of the MSVC version (v##.## version format), which includes all the C and C++ tools for that particular MSVC package. The MSVC version is decoupled from the Visual Studio version starting with Visual Studio 2026. +When you choose one of the C++ workloads in the Visual Studio Installer, it installs a specific version of the MSVC Build Tools package by default. For Visual Studio 2022 and earlier, the package is organized by a *platform toolset* (v### version format) that includes all the C and C++ tools for a specific version of Visual Studio. Starting with Visual Studio 2026, the MSVC version is decoupled from the Visual Studio version. In other words, from Visual Studio 2026 onwards the package corresponds to the MSVC toolset version (v##.## version format), which includes all the C and C++ tools for that particular MSVC Build Tools package. The tools include the C/C++ compilers, linkers, assemblers, and other build tools. It includes matching libraries and header files. You can use all of these tools at the command line. The Visual Studio IDE uses them internally. There are separate x86-hosted and x64-hosted compilers and tools that build code for x86, x64, ARM, and ARM64 targets. Each set of tools for a particular host and target build architecture is stored in its own directory. From 07ed6a3a144f47635c32164100f56b1085e7ad0c Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 2 Jun 2026 15:49:21 -0700 Subject: [PATCH 535/619] Update docs/build/building-on-the-command-line.md Co-authored-by: David Justo --- docs/build/building-on-the-command-line.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 5f03b3880ed..bce55b81415 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -43,7 +43,7 @@ The tools include the C/C++ compilers, linkers, assemblers, and other build tool The tools require several environment variables to be set. These variables add the tools to the path and set the locations of include files, library files, and SDKs. To make it easy to set these environment variables, the installer creates customized *command files*, or batch files, during installation. You can run one of these command files to set a specific host and target build architecture, Windows SDK version, and platform toolset. -For convenience, the installer also creates shortcuts in your **Start** menu. The shortcuts open developer Command Prompt windows by using these command files for specific combinations of host and target. These shortcuts ensure all the required environment variables are set and ready to use. +For convenience, the installer also creates shortcuts in your **Start** menu. The shortcuts open developer Command Prompt windows by using these command files for specific combinations of host and target architectures. These shortcuts ensure all the required environment variables are set and ready to use. The required environment variables are specific to your installation and to the build architecture you choose. Product updates or upgrades might change the variables. This variability is one reason why we recommend you use an installed command prompt shortcut or command file, instead of setting the environment variables yourself. From 4d4d3d1b81158b3b0b592e0a7118ed21f3b0f97f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 2 Jun 2026 16:04:41 -0700 Subject: [PATCH 536/619] feedback --- docs/build/building-on-the-command-line.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index bce55b81415..ba6f8012556 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -1,11 +1,11 @@ --- title: "Use the Microsoft C++ Build Tools from the command line" -description: "Learn how to install and use the Microsoft C++ Build Tools from the command line outside of the Visual Studio IDE." +description: "Learn how to install and use the Microsoft C++ (MSVC) Build Tools from the command line." ms.custom: "conceptual" -ms.date: 06/01/2026 +ms.date: 06/02/2026 ms.topic: how-to helpviewer_keywords: ["command-line builds [C++]", "compiling source code [C++], command line", "builds [C++], command-line", "command line [C++], building from", "command line [C++], compilers"] -#custom intent: As a C++ developer, I want to understand all the options for using the command line to compile and build my software projects as part of my workflow. +#custom intent: As a C++ developer, I want to understand the options for using the command line to compile and build my software projects. --- # Use the Microsoft C++ Build Tools from the command line From b96d1f41826fa103c8278845c704bec3bb723145 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Wed, 3 Jun 2026 10:03:32 -0700 Subject: [PATCH 537/619] PR feedback --- docs/build/reference/zc-u8escapeencoding.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md index b21bff3f82f..5db4618098d 100644 --- a/docs/build/reference/zc-u8escapeencoding.md +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -36,13 +36,13 @@ int main() } ``` -Under `/Zc:u8EscapeEncoding`, the escape sequence `\x00ff` is encoded as `0xFF` and the universal-character sequence `\u00ff` is encoded as the utf-8 sequence `0xC3 0xBF`. The result is the following output when run: +Under `/Zc:u8EscapeEncoding`, the escape sequence `\x00ff` is encoded as `0xFF` and the universal-character sequence `\u00ff` is encoded as the utf-8 sequence `0xC3 0xBF`. The code example outputs: ```output 0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0 ``` -Under `/Zc:u8EscapeEncoding-`, the values of both `\x00ff` and `\u00ff` are re-encoded as the utf-8 sequence `0xC3 0xBF`. The result is the following output when run: +Under `/Zc:u8EscapeEncoding-`, the values of both `\x00ff` and `\u00ff` are re-encoded as the utf-8 sequence `0xC3 0xBF`. The code example outputs: ```output 0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0 From 1c127ab28239676a2a58c098281d90d6aa4150ab Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Wed, 3 Jun 2026 11:31:29 -0700 Subject: [PATCH 538/619] resove warning --- docs/build/reference/zc-u8escapeencoding.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md index 5db4618098d..361f7210eea 100644 --- a/docs/build/reference/zc-u8escapeencoding.md +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -1,6 +1,6 @@ --- -title: `/Zc:u8EscapeEncoding` (numeric escape sequence encoding in u8 strings) -description: "Learn more about the compiler option `/Zc:u8EscapeEncoding` (numeric escape sequence encoding in u8 strings)" +title: /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) +description: "Learn more about the compiler option /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings)" author: Rastaban ms.author: philc ms.service: visual-cpp From f006ff4e7d4af22182b714888c6692fd035a4816 Mon Sep 17 00:00:00 2001 From: "Andy (Steve) De George" <67293991+adegeo@users.noreply.github.com> Date: Wed, 3 Jun 2026 12:55:56 -0700 Subject: [PATCH 539/619] Correct markdown formatting in internal-partition.md Fix formatting issues in internal-partition.md --- docs/build/reference/internal-partition.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build/reference/internal-partition.md b/docs/build/reference/internal-partition.md index 393c44956ac..f428beb8012 100644 --- a/docs/build/reference/internal-partition.md +++ b/docs/build/reference/internal-partition.md @@ -30,7 +30,7 @@ void internalFunc() {} // cannot have `export` since this is an internal partiti Source file `m.ixx`: -```cpp +```ixx // m.ixx export module m; import :internals; // Cannot export this partition. @@ -52,7 +52,7 @@ This option can't be used with the [`/interface`](interface.md) compiler option. ### To set this compiler option in the Visual Studio development environment -You normally shouldn't set this option in the Visual Studio development environment unless you use a different extension for your partition files. By default, the build system applies this option to files that have a *`.ixx`** extension. +You normally shouldn't set this option in the Visual Studio development environment unless you use a different extension for your partition files. By default, the build system applies this option to files that have a *`.ixx`* extension. 1. To apply the **`/internalPartition`** option to a file explicitly in the IDE, select the file in **Solution Explorer**. Right-click to open the context menu and select **Properties** to open the Property Pages dialog. @@ -66,4 +66,4 @@ You normally shouldn't set this option in the Visual Studio development environm [Overview of modules in C++](../../cpp/modules-cpp.md)\ [Using C++ Modules in MSVC from the Command Line](https://devblogs.microsoft.com/cppblog/using-cpp-modules-in-msvc-from-the-command-line-part-1/)\ -[C++ Modules conformance improvements with MSVC in Visual Studio 2019 16.5](https://devblogs.microsoft.com/cppblog/c-modules-conformance-improvements-with-msvc-in-visual-studio-2019-16-5/#module-partitions) \ No newline at end of file +[C++ Modules conformance improvements with MSVC in Visual Studio 2019 16.5](https://devblogs.microsoft.com/cppblog/c-modules-conformance-improvements-with-msvc-in-visual-studio-2019-16-5/#module-partitions) From 89280a813b72e6cf277e3c87913faaa9d5c3233e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 3 Jun 2026 15:34:27 -0700 Subject: [PATCH 540/619] change lang tag --- docs/build/reference/internal-partition.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/internal-partition.md b/docs/build/reference/internal-partition.md index f428beb8012..9a91b9ebb7b 100644 --- a/docs/build/reference/internal-partition.md +++ b/docs/build/reference/internal-partition.md @@ -1,7 +1,7 @@ --- title: "/internalPartition" description: "Use the /internalPartition compiler option to treat the input file as an internal partition unit." -ms.date: 11/16/2022 +ms.date: 6/3/2026 author: "tylermsft" ms.author: "twhitney" f1_keywords: ["/internalPartition", "VC.Project.VCCLCompilerTool.Interface"] @@ -30,7 +30,7 @@ void internalFunc() {} // cannot have `export` since this is an internal partiti Source file `m.ixx`: -```ixx +```cpp // m.ixx export module m; import :internals; // Cannot export this partition. From 7712626749084a76531f7fe480ef19b432f46be3 Mon Sep 17 00:00:00 2001 From: Pedro Miguel Justo Teixeira Date: Thu, 4 Jun 2026 16:59:43 -0700 Subject: [PATCH 541/619] Clarify Unwind V3 short epilog descriptor inheritance rules. --- docs/build/x64-unwind-information-v3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/x64-unwind-information-v3.md b/docs/build/x64-unwind-information-v3.md index 246d81ca455..81fe1c65beb 100644 --- a/docs/build/x64-unwind-information-v3.md +++ b/docs/build/x64-unwind-information-v3.md @@ -174,7 +174,7 @@ Zero or more `EPILOG_INFO_V3` structures follow the prolog IP offsets. Each can | 0 | [7:3] | `NumberOfOps` (= 0) | 5 bits | | 1–2 | [15:0] | `EpilogOffset` | 16-bit signed | -The `Flags` bits 0 and 1, `FirstOp`, `IpOffsetOfLastInstruction`, and IP offset array are inherited from the immediately preceding `EPILOG_INFO_V3`. +An `EPILOG_INFO_V3` record with `NumberOfOps == 0` inherits the effective values for `NumberOfOps`, `FirstOp`, `IpOffsetOfLastInstruction` fields, and IP offset array from the first preceding `EPILOG_INFO_V3` with `NumberOfOps != 0`. The compiler must ensure `Flags` bits 0 and 1 on an epilog record with `NumberOfOps == 0` have the same value as those from the first preceding `EPILOG_INFO_V3` with `NumberOfOps != 0`. #### Epilog Field Semantics From f7f37ef623b4d66cd13b0414f0a6a6117c7763c2 Mon Sep 17 00:00:00 2001 From: Alex Guteniev Date: Tue, 9 Jun 2026 23:21:49 +0300 Subject: [PATCH 542/619] Update Vectorized STL algorithm documentation to reflect the current stae (#5937) Since the last update: * ARM64 and ARM64EC vectorization was added. Mention of x64 and x86 is removed, as vectorization is now supported on any target, except deprecated `/clr:pure` and `/clr:safe` modes. * `includes` is now manually vectorized too * `replace_copy` is now manually vectorized too Also moved `find_end` to `search` / `search_n` group, where it fits better. --- docs/standard-library/vectorized-stl-algorithms.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index 13cad087a01..1291e5ab6c1 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -24,7 +24,7 @@ Algorithms like `transform`, `reduce`, and `accumulate` benefit heavily from aut ## Manual vectorization in the MSVC STL -Certain algorithms for x64 and x86 include manual vectorization. This implementation is separately compiled and relies on runtime CPU dispatch, so it applies only to suitable CPUs. +Certain algorithms include manual vectorization. This implementation is separately compiled and relies on runtime CPU dispatch, so it applies only to suitable CPUs. Manually vectorized algorithms use template metaprogramming to detect if the element type is suitable for vectorization. As a result, they're only vectorized for simple types such as standard integer types. @@ -35,17 +35,18 @@ Assign the same value to `_USE_STD_VECTOR_ALGORITHMS` for all linked translation The `_USE_STD_VECTOR_ALGORITHMS` macro controls the behavior of these manually vectorized algorithms: - `contains`, `contains_subrange` - - `find`, `find_last`, `find_end`, `find_first_of`, `adjacent_find` + - `find`, `find_last`, `find_first_of`, `adjacent_find` - `count` - `mismatch` - - `search`, `search_n` + - `search`, `search_n`, `find_end` - `swap_ranges` - - `replace` + - `replace`, `replace_copy` - `remove`, `remove_copy` - `unique`, `unique_copy` - `reverse`, `reverse_copy` - `rotate` - `is_sorted`, `is_sorted_until` + - `includes` - `lexicographical_compare`, `lexicographical_compare_three_way` - `max`, `min`, `minmax` - `max_element`, `min_element`, `minmax_element` From 2412558c98bd79cf332bc0b42bb191563ae26e3e Mon Sep 17 00:00:00 2001 From: "Michael B. Price" Date: Fri, 12 Jun 2026 09:16:35 -0500 Subject: [PATCH 543/619] Significantly update C++ modernization agent docs for GA of MSVC upgrade scenario (#6737) * Copilot CLI's initial implementation of the expansion of GHCP modernization for C++ documentation * Rename directory from github-copilot-app-modernization-cpp to github-copilot-modernization-cpp and add redirects * Renaming link to the scenario documentation to match .NET's table of contents * Modifying some of the text generated by Copilot CLI - for accuracy - for closer-to-complete-ness - for wording choices * Remove working-with-agent page; add FAQ entry for interacting with the agent * Add explicit C++ convention and tools tips to FAQ * Remove upgrade-options references from C++ overview docs * Update C++ modernization docs minimum VS version to 18.7 * Expanding on tip to explain just how to create a git directory and how to clean up if you don't want it long-term. * Adding/fixing aka.ms VS download links * Updating required installer components to use correct names and be more inclusive. * Clarify explicitly that .uproject codebases are not yet supported * Improving the Provide feedback section with easy-to-use links * Expanding on tip to talk about workflow metadata files being in distinct commits to make removal later easier. * Modifying links to try to resolve automated validation issues * Simplifying intro paragraph based on feedback * Efforts to distinguish the General section from the Upgrade section. This change is to clarify that the modernization agent has a much broader scope than just the MSVC upgrade scenario that we have been working on. It does this by: - Expanding the explanation about what the agent does in the context of C++ users. - Renaming the Upgrade section to specifically address the MSVC upgrade scenario * Updating answer to what the agent actually changes to more clearly define what it means to fix conformance issues. Also fixes some terminology around headers and include directives and qualifies git commit behavior on actually having the project in a git repository. * Being clearer on the sequence of steps in the answer on how to correct mistakes made by the agent. * Simplified answer for needing a Copilot subscription * Slightly moving the exclusion of .uproject so that it's colocated with the mention of the Game development workload. * Fixing links * Remove potential commitment of future work that we haven't decided to do yet. * Fixing links * Removing unnecessary header * Rewording the sections describing what/how the MSVC upgrade scenarios complete the task * Adding example of an STL change that the agent can fix * Removing 'also' * Fixing links * Wording change about the MSVC scenario building your product * Providing more information on how to document known build issues for the agent * Wording change "may" -> "can" * Explaining to the user how to actually stop the agent and redirect it * Making it clearer that the text is suggesting prompts to use. * Updating a related page to link to the agent overview. * Making it clearer that the text shows 2 different ways to start the agent. * Removing 'Alternatively' * Collapse the note into the preceding paragraph as normal text. * Providing better instructions on how to switch between Automatic and Guided modes. * Removing additional "collaboration" rationale since "doing other work" covers it. * Adding top-level heading by moving all headings up 1 level. * Replacing text that potentially promises future changes with verbiage used elsewhere and fixing the Developer Community link * Fixing links * Moving question about supported projects that are specific to the MSVC upgrade scenario to that section of the FAQ * Changing language from "deals with" to "helps with" * Revert "Adding top-level heading by moving all headings up 1 level." This reverts commit 7a10ee7c5e9c7cf8f6a9b3bc61ee66a64065cab4. * Previous attempt at resolving top-level header issue failed because you can't have multiple top-level headers. Adding one that matches what the .NET docs did here. * Adding a walkthrough/tutorial on using the modernization agent to upgrade an old C++ sample to use a newer MSVC version * Removing incorrect (and incorrectly formatted) image of the enabling setting. * Rewriting proposed example prompts to avoid the impression that they will install the latest MSVC build tools. * Adding note about not supporting .uproject in the FAQ. * Removing trailing slash from directory name * Fixing typo 'commited' >> 'committed' * Removing duplicated line * Rephrasing prompt to get list of scenarios. * Removing 'If necessary' language. * Clarifying that "latest" means the "latest, installed" version. * Using "For example" language. * Fixing typo "build" >> "building" * Providing more context for the troubleshooting tip for the agent not showing up. * Turning "Cancel button" into "cancel button" since the button doesn't have "Cancel" on it's label. * Fixing misplaced comma * Fixing prompt quotation style * Removing image with malformed name. A replacement has already been added. * Removing link to image that I didn't add. * Fixing numerous Acrolinx suggestions for the Hilo walkthrough. * A few more Acrolinx suggestions that were missed or new based on new text. * Adding an introductory paragraph to the installation instructions page. * Moving the note on missing .uproject support back to the line talking about supported project types as just an additional sentence. The alternatives seemed less good: - Drop it entirely - Insert a `> [!NOTE]` in the middle of a bulleted list - Move the required components to the bottom, separating it from the VS version requirement (and nominally "out of order") * Fixing spelling mistake with 'environment' * Updating alt text for images to clearly indicate they are screenshots. * Adding intro paragraph at top of Hilo walkthrough doc. * Renaming image files with some additional '-' separators between parts of the filename. * Addressing remaining reviewer feedback. * Renaming Setup Assistant image file back to walkthrough-hilo-setup-assistant.png * Fixing 'an' -> 'a' * address PR review feedback * address PR feedback --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Tyler Whitney --- .openpublishing.redirection.json | 5 + docs/porting/copilot-app-modernization-cpp.md | 100 ----------- .../github-copilot-modernization-cpp/faq.md | 104 +++++++++++ .../install.md | 54 ++++++ .../overview.md | 103 +++++++++++ .../scenarios-and-skills.md | 84 +++++++++ .../troubleshooting.md | 129 ++++++++++++++ .../walkthrough-hilo.md | 167 ++++++++++++++++++ .../walkthrough-hilo-analyze-with-copilot.png | Bin 0 -> 65721 bytes .../media/walkthrough-hilo-assessment.png | Bin 0 -> 483973 bytes .../media/walkthrough-hilo-clone-window.png | Bin 0 -> 65475 bytes .../media/walkthrough-hilo-exception.png | Bin 0 -> 350792 bytes .../media/walkthrough-hilo-execution.png | Bin 0 -> 80063 bytes .../media/walkthrough-hilo-infobar.png | Bin 0 -> 10505 bytes docs/porting/media/walkthrough-hilo-plan.png | Bin 0 -> 674897 bytes ...walkthrough-hilo-scenario-instructions.png | Bin 0 -> 255858 bytes .../walkthrough-hilo-setup-assistant.png | Bin 0 -> 111630 bytes .../walkthrough-hilo-vs-start-window.png | Bin 0 -> 77012 bytes .../porting/media/walkthrough-hilo-window.png | Bin 0 -> 205520 bytes docs/porting/toc.yml | 16 +- ...cts-from-earlier-versions-of-visual-cpp.md | 2 + .../visual-cpp-porting-and-upgrading-guide.md | 2 +- 22 files changed, 663 insertions(+), 103 deletions(-) delete mode 100644 docs/porting/copilot-app-modernization-cpp.md create mode 100644 docs/porting/github-copilot-modernization-cpp/faq.md create mode 100644 docs/porting/github-copilot-modernization-cpp/install.md create mode 100644 docs/porting/github-copilot-modernization-cpp/overview.md create mode 100644 docs/porting/github-copilot-modernization-cpp/scenarios-and-skills.md create mode 100644 docs/porting/github-copilot-modernization-cpp/troubleshooting.md create mode 100644 docs/porting/github-copilot-modernization-cpp/walkthrough-hilo.md create mode 100644 docs/porting/media/walkthrough-hilo-analyze-with-copilot.png create mode 100644 docs/porting/media/walkthrough-hilo-assessment.png create mode 100644 docs/porting/media/walkthrough-hilo-clone-window.png create mode 100644 docs/porting/media/walkthrough-hilo-exception.png create mode 100644 docs/porting/media/walkthrough-hilo-execution.png create mode 100644 docs/porting/media/walkthrough-hilo-infobar.png create mode 100644 docs/porting/media/walkthrough-hilo-plan.png create mode 100644 docs/porting/media/walkthrough-hilo-scenario-instructions.png create mode 100644 docs/porting/media/walkthrough-hilo-setup-assistant.png create mode 100644 docs/porting/media/walkthrough-hilo-vs-start-window.png create mode 100644 docs/porting/media/walkthrough-hilo-window.png diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 717a62c31c1..e437970bff5 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -1,5 +1,10 @@ { "redirections": [ + { + "source_path": "docs/porting/copilot-app-modernization-cpp.md", + "redirect_url": "/cpp/porting/github-copilot-modernization-cpp/overview", + "redirect_document_id": true + }, { "source_path": "docs/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism.md", "redirect_url": "/previous-versions/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism", diff --git a/docs/porting/copilot-app-modernization-cpp.md b/docs/porting/copilot-app-modernization-cpp.md deleted file mode 100644 index d6e23461baf..00000000000 --- a/docs/porting/copilot-app-modernization-cpp.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: "Modernize your C++ project with GitHub Copilot modernization" -description: "Instructions on effectively using GitHub Copilot modernization in your C++ projects" -ms.date: 03/12/2026 -ms.topic: upgrade-and-migration-article -author: michaelbprice -ms.author: miprice ---- - -# Using GitHub Copilot modernization for C++ - -GitHub Copilot modernization for C++ helps you upgrade C++ projects to newer MSVC Build Tools versions. If necessary, Copilot will upgrade your project's settings to use the latest MSVC, and then conduct a thorough assessment of the impact of those changes after executing a build. It develops a plan on how to address each identified problem. Once you approve the plan, the agent completes a sequence of tasks and validates that any changes resolved the identified problems. If there remains work to be done, the agent continues iterating until the problems are resolved or you discontinue the conversation. - -> [!NOTE] -> GitHub Copilot modernization for C++ is currently in preview. - -## Requirements - -- Visual Studio 2026 version 18.3 or later -- A GitHub Copilot account -- A MSBuild-based codebase (`.sln`, `.vcxproj`) OR a CMake-based codebase - -## Enable GitHub Copilot modernization for C++ - -GitHub Copilot modernization for C++ is enabled by default. To disable or explicitly enable the feature, follow these steps. - -1. From Visual Studio, select **Tools > Options...** to open the **Options** window. -1. Navigate to **All Settings > GitHub > Copilot > C/C++**. -1. Select (to enable) or clear (to disable) the checkbox for **Enable GitHub Copilot modernization for C++ (preview)**. -1. Restart Visual Studio for the setting change to take effect. - -:::image type="content" source="media/enable-copilot-app-modernization-cpp.png" alt-text="Screenshot of Visual Studio Options dialog. GitHub > Copilot > C/C++ settings are visible. The modernization for C++ checkbox is enabled." lightbox="media/enable-copilot-app-modernization-cpp.png"::: - -## Upgrade your codebase by using GitHub Copilot modernization for C++ - -This section describes how to start the Modernize agent and the stages it goes through to upgrade your codebase. - -### Start the Modernize agent - -GitHub Copilot modernization is an agent that operates inside the GitHub Copilot Chat window. You can start the agent in any of the following ways: - -- **From the Solution Explorer context menu**: Right-click on the solution or a loaded project in the Solution Explorer, and choose **Modernize** from the context menu. This automatically launches a GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. - -:::image type="content" source="media/copilot-app-modernization-context-menu.png" alt-text="Screenshot of Visual Studio Solution Explorer showing a right-click context menu with Modernize selected to start the Copilot agent."::: - -- **From GitHub Copilot Chat**: Open the GitHub Copilot Chat Window by selecting **View > GitHub Copilot Chat**. After the GitHub Copilot Chat window opens, mention `@Modernize` in a prompt to activate the Modernize agent. For example, type this prompt: - - `Use @Modernize to update MSVC Build Tools.` - -#### For MSBuild-based codebases targeting an earlier version of MSVC Build Tools - -The first time that you load a `.vcxproj` project that targets an earlier version of the MSVC Build Tools, you see an option to [upgrade project settings to use a newer version of the MSVC Build Tools](/visualstudio/install/setup-assistant). If you retarget any of your projects to a new version of MSVC Build Tools and GitHub Copilot modernization for C++ is enabled, you receive an infobar in Visual Studio prompting you to use GitHub Copilot modernization for C++ to resolve any newly introduced build problems. Selecting **Run GitHub Copilot modernization for C++** launches the GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. - -### Start the upgrade - -Once the Modernize agent is active, you can instruct it via a prompt to upgrade your MSVC Build Tools, or select the already constructed prompt from the list shown in the window. If you launched the agent directly in the GitHub Copilot Chat window by mentioning `@Modernize` in your prompt, you probably don't need to provide more prompting. - -:::row::: -:::column::: - -**MSBuild Projects** - -:::column-end::: -:::column::: - -**CMake Projects** - -:::column-end::: -:::row-end::: -:::row::: -:::column::: - -:::image type="content" source="media/app-modernization-msbuild-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to Modernize experience and Upgrade MSVC Build Tools to the latest version is highlighted."::: - -:::column-end::: -:::column::: - -:::image type="content" source="media/app-modernization-cmake-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to Modernize experience and Resolve build issues by migrating to modern alternatives is highlighted."::: - -:::column-end::: -:::row-end::: - - -### Assessment stage - -The agent first assesses what kinds of problems show up after upgrading. If you didn't already upgrade the project, the agent guides you through that process before creating its assessment. After ensuring that your project is upgraded, the agent builds your codebase, analyzes the reported warnings and errors, and generates an `assessment.md` file that describes the problems that it found, their severity, and other useful information. This is your opportunity to tell the agent any other context that could help it make a plan. - -One of the things you might choose to do here is to tell the agent not to fix certain discovered problems, because you know that resolving them involves some strategic decisions or because they were preexisting warnings that you decided are acceptable for your project. You should carefully read through the plan, making sure to provide that extra context where it is needed. Once you approve the assessment, the agent moves on to creating a concrete plan on addressing the problems. - -### Planning stage - -Based on the approved assessment and any other context or instructions you provide, the agent creates a `plan.md` file that proposes a detailed plan for resolving each of the identified problems. If the agent produces a plan that doesn't match your organization's coding style or practices, you can provide that guidance to the agent and have it solve the problem differently. After you agree on the plan, the agent moves to the execution stage. - -### Execution stage - -Now that the agent has a plan, it breaks down the necessary tasks to execute the plan. You can define these tasks as finely as you want. The tasks can even include steps to work on a branch or to commit specific changes together in the same commit. After making any changes, the agent builds the project again to confirm that the problems are resolved. If the problems aren't resolved, the agent iterates with you until they're resolved to your satisfaction. - -### Post-upgrade validation - -When the agent finishes, run the changes through any testing infrastructure you have. Have a colleague review the changes in a pull request. Since this feature is currently in preview, you might receive an infobar to complete a product survey to let the product team know how the agent performed on your codebase. The product team looks forward to hearing how they can improve the agent to solve your problems and accelerate your upgrade and modernization efforts. \ No newline at end of file diff --git a/docs/porting/github-copilot-modernization-cpp/faq.md b/docs/porting/github-copilot-modernization-cpp/faq.md new file mode 100644 index 00000000000..8a797d09537 --- /dev/null +++ b/docs/porting/github-copilot-modernization-cpp/faq.md @@ -0,0 +1,104 @@ +--- +title: "GitHub Copilot modernization for C++ FAQ" +description: "Frequently asked questions about GitHub Copilot modernization for C++." +author: michaelbprice +ms.author: miprice +ms.date: 05/27/2026 +ms.topic: faq +ai-usage: ai-assisted +--- + +# GitHub Copilot modernization for C++ FAQ + +This FAQ answers common questions C++ users might have about GitHub Copilot modernization. + +## General + +### What is GitHub Copilot modernization for C++? + +GitHub Copilot modernization for C++ is a GitHub Copilot agent for Visual Studio that helps you modernize and upgrade C++ projects to newer tools, libraries, and patterns. It recognizes specific tasks such as upgrading MSVC Build Tools to newer versions and provides additional tools and instructions to accomplish those tasks. It automates assessment, planning, and execution to accomplish the modernization task, and you can run it in a fully automated mode or a guided mode that allows you to approve each step and provide additional guidance. + +### What development environments are supported? + +GitHub Copilot modernization for C++ is available in Visual Studio 2026 version 18.7 and later. + +### Do I need a GitHub Copilot subscription? + +Yes. You need an active GitHub Copilot subscription to use the modernization agent. + +### Is my code sent to external services? + +GitHub Copilot processes code snippets according to [GitHub's Copilot privacy policy](https://docs.github.com/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-your-ide). Code isn't retained beyond the immediate session. Workflow files such as `scenario-instructions.md` and `tasks.md` stay in your repository and aren't transmitted to external services. + +## MSVC upgrade scenarios + +### What project types are supported? + +The agent supports these project types: + +- MSBuild-based projects (`.sln` and `.vcxproj`). +- CMake-based projects. + +The agent does not currently support Unreal Engine projects (`.uproject`). + +### What does the agent actually change in my code? + +The agent modifies source code to resolve build errors and warnings introduced by upgrading to a newer version of MSVC Build Tools. Common changes include replacing deprecated APIs, fixing issues caused by using a more conformant compiler, updating include directives for removed or relocated headers, and resolving linker errors caused by library changes. When your project is in a git repository, all changes are committed so you can review and revert individual modifications. + +### Can I control what the agent changes? + +Yes. You can review and approve the plan before execution starts, tell the agent to skip specific issues or tasks, and provide preferences in `scenario-instructions.md`. You can also pause execution, redirect the agent, or revert any commit it makes. + +### Does the agent run tests? + +The agent validates changes by building the project after each task. If your project runs tests as part of the build, those tests run too. You can also tell the agent to skip test validation for specific tasks. + +### What if the agent makes a mistake? + +Stop the agent and tell it right away. It will adapt and apply corrections when you tell the agent to resume. You can also run `git revert HEAD`, ask the agent to try a different approach, or make a manual fix. + +For more information, see [Troubleshoot GitHub Copilot modernization for C++](./troubleshooting.md). + +### Can I upgrade only part of my solution? + +Yes. Tell the agent which projects to upgrade, for example, `Upgrade only the CoreLib project to the latest MSVC Build Tools.` The agent scopes its work to the projects you specify. + +## State and sessions + +### Where does the agent store its state? + +All state lives in `.github/upgrades/{SCENARIO ID}` inside your repository. This includes the assessment, plan, task progress, your preferences, and execution logs. + +### Can I resume an interrupted upgrade? + +Yes. You can close Visual Studio or end the chat session at any time. When you start a new conversation, the agent detects the existing state and picks up where it left off. + +### Should I commit the `.github/upgrades` folder? + +Yes. Committing the folder to your branch backs up upgrade progress, lets team members view the upgrade state, and helps the agent resume from the correct state. You can remove the folder after the upgrade is complete. + +### Can multiple people work on the same upgrade? + +The state files in `.github/upgrades` are shareable through Git. However, only one person should actively interact with the agent at a time to avoid conflicting changes. + +## Compatibility + +### Which MSVC Build Tools versions can I upgrade from? + +The agent supports upgrading from any earlier version of the MSVC Build Tools to the latest version supported by your Visual Studio installation. + +### Does the agent handle third-party library compatibility? + +The agent identifies third-party library compatibility issues during assessment. It suggests alternatives or workarounds when they're available. If a library isn't compatible with the target toolset, the agent documents the issue so you can decide how to proceed. + +### Can I use the agent with precompiled headers? + +Yes. The agent understands precompiled header configurations and accounts for them during the upgrade process. + +## Related content + +- [GitHub Copilot modernization for C++ overview](./overview.md) +- [Install GitHub Copilot modernization for C++](./install.md) +- [Scenarios and skills reference](./scenarios-and-skills.md) +- [Walkthrough - Hilo](./walkthrough-hilo.md) +- [Troubleshoot GitHub Copilot modernization for C++](./troubleshooting.md) diff --git a/docs/porting/github-copilot-modernization-cpp/install.md b/docs/porting/github-copilot-modernization-cpp/install.md new file mode 100644 index 00000000000..7aece28c21b --- /dev/null +++ b/docs/porting/github-copilot-modernization-cpp/install.md @@ -0,0 +1,54 @@ +--- +title: "Install GitHub Copilot modernization for C++" +description: "Set up GitHub Copilot modernization for C++ in Visual Studio to start upgrading your C++ projects." +ms.date: 6/11/2026 +ms.topic: how-to +author: michaelbprice +ms.author: miprice +ai-usage: ai-assisted +--- + +# Install GitHub Copilot modernization for C++ + +GitHub Copilot modernization helps you modernize your C++ codebase. Follow these steps to install the feature in Visual Studio. + +## Prerequisites + +- Windows operating system. +- [Visual Studio 2026 version 18.7 or later](https://aka.ms/vs/download). +- One or more of the following C++ development workloads: + - **Desktop development with C++** + - **Game development with C++** + - **Linux, Mac, and embedded development with C++** +- These optional components must be enabled: **GitHub Copilot**, **GitHub Copilot modernization** +- GitHub Copilot subscription (paid or free). +- [Sign in to Visual Studio with a GitHub account](/visualstudio/ide/work-with-github-accounts) that has [Copilot access](https://docs.github.com/copilot/get-started/plans#ready-to-choose-a-plan). +- Code written in C or C++ and in either a MSBuild-based codebase that uses `.sln` or `.vcxproj`, or a CMake-based codebase. Unreal Engine projects (`.uproject`) are not currently supported. + +## Verify your Visual Studio version + +If you need to update Visual Studio, select **Help** > **Check for Updates**, or download the latest version from [Visual Studio downloads](https://aka.ms/vs/download). + +## Enable or disable the feature + +GitHub Copilot modernization for C++ is enabled by default. To disable or explicitly enable the feature: + +1. In Visual Studio, select **Tools** > **Options** to open the **Options** dialog. +1. Navigate to **GitHub** > **Copilot** > **C/C++**. +1. Select the **Enable GitHub Copilot modernization for C++** checkbox to enable the feature, or clear it to disable the feature. +1. Restart Visual Studio for the setting change to take effect. + +## Verify the agent is available + +After setup, verify that the modernization agent is accessible: + +1. Open a C++ solution or project in Visual Studio. +1. Open **GitHub Copilot Chat** by selecting **View** > **GitHub Copilot Chat**. +1. Type `@Modernize` in the chat input. If the agent responds, setup is complete. + +Alternatively, right-click your solution or project in **Solution Explorer**. If **Modernize** appears in the context menu, the agent is ready. + +## Related content + +- [GitHub Copilot modernization for C++ overview](./overview.md) +- [Troubleshoot GitHub Copilot modernization for C++](./troubleshooting.md) diff --git a/docs/porting/github-copilot-modernization-cpp/overview.md b/docs/porting/github-copilot-modernization-cpp/overview.md new file mode 100644 index 00000000000..198394da51f --- /dev/null +++ b/docs/porting/github-copilot-modernization-cpp/overview.md @@ -0,0 +1,103 @@ +--- +title: "GitHub Copilot modernization for C++ overview" +description: "Learn how GitHub Copilot modernization helps you upgrade C++ projects to newer MSVC Build Tools versions through automated assessment, planning, and execution." +author: michaelbprice +ms.author: miprice +ms.date: 05/27/2026 +ms.topic: overview +ai-usage: ai-assisted +--- + +# What is GitHub Copilot modernization? + +GitHub Copilot modernization is a GitHub Copilot agent that helps you upgrade and modernize your C++ projects. It guides you through assessment, solution recommendations, code fixes, and validation within Visual Studio. + +## Scenarios + +The agent provides end-to-end modernization workflows called _scenarios_. Each scenario guides you through a specific type of modernization task. + +| Scenario | Description | Example prompt | +| --- | --- | --- | +| **MSVC Build Tools upgrade (MSBuild)** | Upgrades MSBuild-based projects (`.sln`, `.vcxproj`) to a newer version of MSVC Build Tools and resolves upgrade-related build issues. | _"Upgrade my projects to use the latest, installed version of the MSVC Build Tools"_ | +| **MSVC Build Tools upgrade (CMake)** | Resolves upgrade-related build issues in your CMake-based projects after configuring the project with a newer version of MSVC Build Tools. | _"Resolve any build issues caused by upgrading my project to use the newer MSVC Build Tools"_ | + +> [!NOTE] +> If you'd like to propose or upvote other modernization scenarios, visit [Developer Community](https://developercommunity.microsoft.com/cpp). + +For a full reference of all scenarios, see [Scenarios and skills reference](./scenarios-and-skills.md). + +## Prerequisites + +Before you start, make sure you have: + +- Visual Studio 2026 version 18.7 or later. +- A GitHub Copilot subscription. +- An MSBuild-based codebase (`.sln`, `.vcxproj`) or a CMake-based codebase. + +For detailed setup steps, see [Install GitHub Copilot modernization for C++](./install.md). + +## How it works + +To start the modernization workflow: + +1. Open your C++ project or solution in Visual Studio. +1. Start the agent: In **Solution Explorer**, right-click your solution or project and select **Modernize**. Or, in **GitHub Copilot Chat**, type `@Modernize`. +1. Tell the agent what to upgrade. + +If your Visual Studio installation is missing the MSVC Build Tools that your project currently uses, the Setup Assistant should appear when you load your project. You can use the Setup Assistant to either install the missing MSVC version or to retarget to the installed MSVC version. If you retarget any projects, you will get an infobar message that can launch you directly into the Modernize agent workflow. + +When you ask the agent to upgrade your project, it prompts you to create a new branch if you're in a Git repository. Then it runs a three-stage workflow. Each stage produces Markdown files under `.github/upgrades/{scenarioId}` in your repository so you can review what comes next before you continue. If `.github/upgrades/{scenarioId}` already exists from an earlier attempt, the agent asks whether you want to continue or start fresh. + +### Stage 1: Assessment + +The agent examines your project structure, dependencies, and code patterns and saves a comprehensive assessment to `assessment.md`. The agent also presents strategy decisions for your review, such as upgrade strategy and compatibility handling. + +### Stage 2: Planning + +The agent converts the assessment into a detailed specification. The `plan.md` file documents upgrade strategies, refactoring approaches, and risk mitigations. + +### Stage 3: Execution + +The agent breaks the plan into sequential tasks with validation criteria in `tasks.md`. Each task describes a single change and how the agent confirms it succeeded. + +## Flow modes + +The agent supports two flow modes: + +- **Automatic**: Works through all stages without pausing, stopping only at genuine blockers. This mode is best for straightforward upgrades. +- **Guided**: Pauses at each stage boundary for your review. This mode is best for larger or more complex upgrades. + +You can switch modes at any time by modifying `scenario-instructions.md` or by instructing the agent to switch modes. If running in **Automatic** mode, you may have to stop the agent with the Cancel button in the Copilot Chat prompt window and instruct the agent to resume in **Guided** mode. + +## State management + +The agent stores all state in `.github/upgrades/{scenarioId}`. + +| File | Purpose | +| --- | --- | +| `assessment.md` | Analysis of your solution. | +| `plan.md` | Ordered task plan. | +| `tasks.md` | Live progress dashboard. | +| `scenario-instructions.md` | Agent's persistent memory. | +| `execution-log.md` | Audit trail of all changes. | + +You can close Visual Studio and resume later. The agent picks up where it left off by reading the state files. + +> [!TIP] +> If you want to work on your upgrade over a longer period of time while doing other work, consider committing the `.github/upgrades` folder to your branch in distinct commits. The committed state serves as a backup and lets team members view upgrade progress. Distinct commits allow you to easily remove them from your local git history before merging your branch if you do not want them permanently committed to your repository. + +## Provide feedback + +Microsoft values your feedback and uses it to improve the agent. Leave feedback using either of these options: + +- In Visual Studio, use the [Suggest a feature](/visualstudio/ide/suggest-a-feature) and [Report a problem](/visualstudio/ide/report-a-problem) options. + +- File an issue on [Developer Community](https://developercommunity.visualstudio.com/cpp). + +## Related content + +- [Install GitHub Copilot modernization for C++](./install.md) +- [Scenarios and skills reference](./scenarios-and-skills.md) +- [Walkthrough - Hilo](./walkthrough-hilo.md) +- [Troubleshoot GitHub Copilot modernization for C++](./troubleshooting.md) +- [FAQ](./faq.md) diff --git a/docs/porting/github-copilot-modernization-cpp/scenarios-and-skills.md b/docs/porting/github-copilot-modernization-cpp/scenarios-and-skills.md new file mode 100644 index 00000000000..5e0959d12cf --- /dev/null +++ b/docs/porting/github-copilot-modernization-cpp/scenarios-and-skills.md @@ -0,0 +1,84 @@ +--- +title: "GitHub Copilot modernization for C++ scenarios and skills" +description: "Reference of available upgrade scenarios and skills for GitHub Copilot modernization for C++." +ms.date: 05/27/2026 +ms.topic: reference +author: michaelbprice +ms.author: miprice +ai-usage: ai-assisted +--- + +# Scenarios and skills reference + +GitHub Copilot modernization agent provides managed, end-to-end modernization workflows called _scenarios_. Each scenario guides you through a specific type of activity in practical C++ modernization work. This page documents the available scenarios and skills so you can understand what the agent can do for your project. + +## Scenarios + +A _scenario_ is a managed workflow that guides you through a specific type of modernization activity. + +### How scenarios are discovered + +You don't need to memorize scenario names. The agent detects your project type and suggests the relevant scenario automatically. + +To list the scenarios the agent supports, ask _"What scenarios are available for my project?"_ in the GitHub Copilot chat window. + +### Available scenarios + +| Scenario | Project type | Description | Example prompt | +|---|---|---|---| +| **MSVC Build Tools upgrade (MSBuild)** | `.sln`, `.vcxproj` | Upgrades MSBuild-based projects (`.sln`, `.vcxproj`) to a newer version of MSVC Build Tools and resolves upgrade-related build issues. | _"Upgrade my projects to use the latest, installed version of the MSVC Build Tools"_ | +| **MSVC Build Tools upgrade (CMake)** | CMake | Resolves upgrade-related build issues in your CMake-based projects after configuring the project with a newer version of MSVC Build Tools. | _"Resolve any build issues caused by upgrading my project to use the newer MSVC Build Tools"_ | + +> [!NOTE] +> If you'd like to propose or upvote other modernization scenarios, visit [Developer Community](https://developercommunity.microsoft.com/cpp). + +#### MSVC Build Tools upgrade (MSBuild) + +This scenario handles the complete upgrade workflow for MSBuild-based C++ projects: + +1. **Retargeting**: Updates project settings to target the latest, installed MSVC Build Tools and Platform Toolset. +1. **Build analysis**: Builds the solution and catalogs all errors and warnings introduced by the upgrade. +1. **Updating code**: Replaces deprecated APIs, addresses conformance issues, and helps with breaking changes. +1. **Validation**: Rebuilds to confirm all issues are resolved. + +For example, this scenario addresses issues like: + +- Deprecated CRT functions, for example, `sprintf` to `sprintf_s`. +- C++ conformance changes, for example, stricter template parsing. +- Standard library changes between MSVC versions, such as removed, experimental namespaces (e.g. `std::tr1`). +- Warning-as-error promotions in newer toolsets. +- Linker errors for APIs removed from the Windows SDK. + +#### MSVC Build Tools upgrade (CMake) + +This scenario handles upgrade workflows for CMake-based C++ projects: + +1. **Build analysis**: Builds the project and catalogs all errors and warnings introduced by the upgrade. +1. **Updating code**: Replaces deprecated APIs, addresses conformance issues, and helps with breaking changes. +1. **Validation**: Rebuilds to confirm all issues are resolved. + +For example, this scenario addresses issues like: + +- Deprecated CRT functions, for example, `sprintf` to `sprintf_s`. +- C++ conformance changes, for example, stricter template parsing. +- Standard library changes between MSVC versions, such as removed, experimental namespaces (e.g. `std::tr1`). +- Warning-as-error promotions in newer toolsets. +- Linker errors for APIs removed from the Windows SDK. + +### Scenario persistence + +Each active scenario gets its own folder at `.github/upgrades/{scenarioId}`. The scenario folder contains the plan, task progress, your preferences, and execution logs. The folder becomes part of your Git repository. + +## Skills + +_Skills_ are smaller, targeted modernization capabilities that the agent uses within a scenario. When the agent encounters a specific pattern during an upgrade, it loads the relevant skill with detailed instructions. + +Skills load automatically based on what the agent detects in your codebase. You don't need to manage skill loading. + +> [!NOTE] +> There are currently no additional skills specific to C++ modernization scenarios. + +## Related content + +- [GitHub Copilot modernization for C++ overview](./overview.md) +- [Troubleshoot GitHub Copilot modernization for C++](./troubleshooting.md) \ No newline at end of file diff --git a/docs/porting/github-copilot-modernization-cpp/troubleshooting.md b/docs/porting/github-copilot-modernization-cpp/troubleshooting.md new file mode 100644 index 00000000000..60278df9659 --- /dev/null +++ b/docs/porting/github-copilot-modernization-cpp/troubleshooting.md @@ -0,0 +1,129 @@ +--- +title: "Troubleshoot GitHub Copilot modernization for C++" +description: "Solutions to common problems when using GitHub Copilot modernization to upgrade C++ projects." +ms.date: 05/27/2026 +ms.topic: troubleshooting +author: michaelbprice +ms.author: miprice +ai-usage: ai-assisted +--- + +# Troubleshoot GitHub Copilot modernization for C++ + +This article helps you resolve common issues when you use GitHub Copilot modernization to upgrade your C++ projects. If you run into a problem that isn't covered here, use **Help** > **Send Feedback** > **Report a problem** in Visual Studio. + +## Before you start + +### Verify that your solution or project builds + +For MSVC upgrade scenarios, the agent validates changes by building your solution or project. If your solution or project is already broken before you start, the agent will have greater difficulty distinguishing pre-existing issues from problems introduced by the upgrade. + +If you have known build issues, document them in [custom instructions](https://docs.github.com/copilot/concepts/prompting/response-customization?tool=visualstudio), provide them in your response when the agent asks for context during the assessment stage, or add them to `scenario-instructions.md` so the agent knows to ignore them. + +### Commit or stash uncommitted work + +Start with a clean working directory. The agent makes commits as it works, and mixing uncommitted changes with the agent's modifications makes it harder to review or revert changes. + +```git +git stash +git status +``` + +### Back up non-Git repositories + +The agent can also work with folders that aren't under source control. If your project isn't in a Git repository, the agent skips branching and commit operations. Back up your project folder before you start so you can restore it if needed. + +> [!TIP] +> Consider initializing a local Git repository before you start, even if you don't push to a remote. This gives you a way to roll back individual changes and track progress step by step. +> +> Example: +> ```git +> git init +> git add +> git commit -m "Initial Commit" +> ``` +> +> When you and the agent are done, if you don't want to continue using git, just make sure the code currently in your working tree is what you want, and delete the `.git` directory in the directory where you ran `git init`. + +## Common problems + +### Agent doesn't appear in Copilot Chat + +**Symptoms**: Typing @Modernize in the GitHub Copilot chat window doesn't activate the agent, or **Modernize** doesn't appear in the **Solution Explorer** context menu. + +**Solutions**: + +1. Verify that Visual Studio is version 18.7 or later in **Help** > **About Microsoft Visual Studio**. +1. Verify that GitHub Copilot is active by checking for the Copilot icon in the status bar. +1. Check that the feature is enabled in **Tools** > **Options** > **GitHub** > **Copilot** > **C/C++**. Then select **Enable GitHub Copilot modernization for C++**. +1. Restart Visual Studio after you change settings. + + +### Agent gets stuck in a loop + +**Symptoms**: The agent repeatedly tries the same fix without making progress. + +**Solutions**: + +- Stop the agent with the cancel button in the Copilot Chat prompt window, describe what you're observing in the prompt, and send the prompt to resume the agent. +- Provide a manual fix, and tell the agent what you changed. The agent learns from your correction. +- Ask the agent to try a different approach. For example, type in the GitHub Copilot chat window: _"That fix isn't working. Try a different strategy."_ +- If needed, revert or undo the last changes, and restart the task. + +### Large solutions take too long + +**Symptoms**: The upgrade of a large solution with many projects takes a very long time or seems to stall. + +**Solutions**: + +- Start with one representative project as a pilot. This surfaces systemic issues early. +- Monitor progress by reviewing `tasks.md` in `.github/upgrades/{SCENARIO ID}`. +- If a session times out, start a new session. The agent picks up where it left off. + +## Recovery strategies + +### Undo all changes + +If you used a Git branch for the upgrade, undo everything: + +```git +git checkout your-original-branch +git branch -D upgrade-branch +``` + +Your original code is untouched. + +### Undo the last change + +Revert the most recent commit: + +```git +git revert HEAD +``` + +Or tell the agent, `Revert the last change.` + +### Restart from a specific stage + +If the agent's plan isn't working, restart from an earlier stage by sending a prompt similar to: + +- `Let's redo the plan. I want a different approach to the conformance issues.` +- `Go back to the assessment and reconsider the upgrade strategy.` + +### Start fresh + +Delete the `.github/upgrades/{SCENARIO ID}` folder, and start a new conversation with the agent. It begins from scratch. + +## Get help + +If you can't resolve an issue: + +1. Use **Help** > **Send Feedback** > **Report a problem** in Visual Studio. +1. Include the contents of `execution-log.md` from `.github/upgrades/{SCENARIO ID}` if possible. + +## Related content + +- [Install GitHub Copilot modernization for C++](./install.md) +- [GitHub Copilot modernization for C++ overview](./overview.md) +- [Walkthrough - Hilo](./walkthrough-hilo.md) +- [FAQ](./faq.md) diff --git a/docs/porting/github-copilot-modernization-cpp/walkthrough-hilo.md b/docs/porting/github-copilot-modernization-cpp/walkthrough-hilo.md new file mode 100644 index 00000000000..f27161c2f88 --- /dev/null +++ b/docs/porting/github-copilot-modernization-cpp/walkthrough-hilo.md @@ -0,0 +1,167 @@ +--- +title: "Walkthrough: Using GitHub Copilot modernization for C++ to upgrade MSVC for the sample Hilo project" +description: "Demonstrates how to use GitHub Copilot to upgrade the Hilo sample project to use the most recent version of the MSVC Build Tools." +author: michaelbprice +ms.author: miprice +ms.date: 06/04/2026 +ms.topic: overview +ai-usage: ai-assisted +--- + +# Walkthrough: Upgrading Microsoft C++ (MSVC) Build Tools for the Hilo sample project + +This walkthrough shows how to use GitHub Copilot to modernize the Hilo sample project by upgrading it to the latest MSVC Build Tools. You'll use the modernization agent to identify and resolve issues, then use the Debugger agent to fix a runtime problem. + +## About Hilo + +Hilo was a sample project developed by Microsoft in 2012 to demonstrate creating applications targeting Windows 8 using "modern" C++, XAML, and the Windows Runtime. The Hilo application is a photo browsing application that also includes annotation and sharing features. We stopped updating the sample in 2015 and archived the source code for this sample and other previously shipped C++ samples in the [VCSamples GitHub repository](https://github.com/microsoft/VCSamples). + +![Screenshot of the main Hilo application window showing the contents of the user's Pictures folder.](../media/walkthrough-hilo-window.png) + +## Modernization challenges + +There are several issues that the agent discovers and resolves after upgrading Hilo to use a newer MSVC Build Tools version. Here are the issues when building with Microsoft C++ (MSVC) Build Tools version 14.51. + +- The `std::tr1::is_base_of` class template is used in several places, but is no longer available in MSVC's C++ standard library since `is_base_of` class template was promoted to be a part of the full standard. This is a blocking error. +- The `ID2D1Factory::GetDesktopDpi` function is deprecated. +- The`[uuid(_string_)]`syntax for ATL attributes on types is deprecated. +- There's a project that the Setup Assistant fails to upgrade. If you don't have the v120 MSVC Build Tools installed (which is likely), then this is a blocking error. +- There's a pointer truncation in window handling code that causes a runtime memory access exception. + +There are a few other warnings that may not be strictly related to the upgrade, but that the agent can optionally fix. These warnings include: + +- Narrowing warnings around multi-byte character strings and wide character strings. +- A typo in the name of an output file in a custom build step. + +## Setup + +### Install development tools + +In order to complete this walkthrough, you need to follow the [installation directions for the GitHub Copilot modernization agent for C++](./install.md). + +### Clone the repository + +Open Visual Studio and from the Start Window select **Clone a repository**. If the Start Window didn't appear, you can open it via **File** > **Start Window**. + +![Screenshot of the Visual Studio Start Window with the Clone a repository link highlighted.](../media/walkthrough-hilo-vs-start-window.png) + +For repository location, enter: **https://github.com/microsoft/VCSamples.git**. Choose an appropriate path on your system to clone the repository to and click the **Clone** button + +![Screenshot of the Visual Studio Clone a repository window with necessary fields completed and the Clone button highlighted.](../media/walkthrough-hilo-clone-window.png) + +## Start the upgrade + +### Load Hilo.sln in Visual Studio + +After you clone the repository, load the solution file at the `/VC2013Samples/Hilo/C++/Hilo.sln`. We're using the version that shipped with Visual Studio 2013 for this walkthrough. + +### Use the Setup Assistant to upgrade project files + +If you don't have the v120 tools installed, Visual Studio should launch the Setup assistant window to guide you through dealing with the missing components. When you see this window, you should choose to **Retarget all** and click **Apply**. If the window doesn't appear, you can open it from the file menu by clicking **Project** > **Retarget solution**. + +![Screenshot of the Setup assistant window showing the Hilo projects. All are selected for retargeting and the Apply button is highlighted.](../media/walkthrough-hilo-setup-assistant.png) + +### Launch the Copilot modernization agent + +After the Setup assistant has retargets the project, you should receive an infobar message with a link to start the modernization agent. Clicking the `Run GitHub Copilot modernization for C++` link starts the upgrade process. + +![Screenshot of the infobar message in Visual Studio for launching the modernization agent.](../media/walkthrough-hilo-infobar.png) + +If the infobar doesn't appear, you can launch the agent by right clicking the solution in the **Solution Explorer** and clicking **Modernize**. If you go that route, you can start the upgrade by sending the prompt `I just updated MSVC Build Tools. Resolve any upgrade issues.` to Copilot Chat. + +## Working with the agent + +### How to interact with the agent to get the best results + +The .NET modernization agent shares the same underlying interaction model as the C++ agent. The [Work with the modernization agent](/dotnet/core/porting/github-copilot-app-modernization/working-with-agent) documentation for .NET covers the general patterns in detail. Keep in mind that the examples and scenarios in that article are .NET-specific and don't apply directly to C++. + +For C++ upgrades, a few more tips can help the agent perform well: + +- **Be specific about scope.** Rather than asking the agent to upgrade everything at once, tell it which projects, libraries, or diagnostics to focus on. For example: _"Fix the C4996 deprecation warnings in the `NetworkClient` project."_ +- **Describe the diagnostics you expect the agent to fix.** If you know the specific warning or error codes introduced by the toolset upgrade, tell the agent upfront. These additional instructions help the agent prioritize and avoids time being spent on unrelated issues. +- **Make sure C/C++ code editing tools are enabled.** Verify the required tools are available in your setup before starting. For details, see [C/C++ code editing tools](/visualstudio/ide/copilot-agent-mode#c-code-editing-tools). +- **Encode coding conventions using custom instructions.** Encode guidelines such as naming conventions, preferred APIs, or patterns to avoid, in [custom instructions](https://docs.github.com/copilot/customizing-copilot/adding-custom-instructions-for-github-copilot). The agent reads and follows these instructions throughout the upgrade. Useful C++ examples include conventions like _"Prefer `auto` where the type is obvious"_ and _"Follow Rule of Zero (or Rule of Three/Five where resource ownership requires it)."_ + +## Expected behaviors + +> [!NOTE] +> Due to the nature of LLM-based AI agents, the steps that the agent takes and the output it produces may differ from what is shown here. + +### Pre-assessment + +The agent first determines the environment that it's running in, such as your source control system, and to understand its goal. In our case, it detects that you're trying to upgrade your project to use the latest MSVC and initializes the appropriate scenario. It creates a `scenario.md` file and a `scenario-instructions.md` file to contain metadata about the scenario. + +These files contain information such as whether the agent should operate in **Automatic** or **Guided** mode, what the strategy for making commits is, and other information that affects _how_ the agent should proceed. If you express any preferences later on during the operation of the agent, the agent may add those preferences to the `scenario-instructions.md` file. + +![Screenshot of the contents of a scenario-instructions.md file.](../media/walkthrough-hilo-scenario-instructions.png) + +### Assessment + +After initialization, the agent does an assessment of the project by doing a clean rebuild of the project and inspecting the build output for errors and warnings. Using that information, and context the agent collects from the repository, it produces an `assessment.md` file that describes the issues that it found and whether or not it considers them to be in-scope or out-of-scope for the upgrade task. + +![Screenshot of the rendered contents of an assessment.md file.](../media/walkthrough-hilo-assessment.png) + +If the agent is operating in **Guided** mode, the agent stops here and requests your review of the assessment. Make any desired changes by prompting the agent or by editing the Markdown file directly, and then to continue on to the _Planning_ stage. If the agent is operating in **Automatic** mode, the agent continues on to the next stage automatically. If you want to change something, you need to stop the agent by pressing the cancel button, make the changes, and resume the agent by typing the prompt _"Resume"_ in the Copilot chat window. + +The assessment identifies several of the issues mentioned earlier in the walkthrough. Some issues don't appear until later since they're hidden by existing errors. Don't worry, they're discovered later on. If you'd like for the agent to pause to get your approval for any late-discovered issues, you can specify those instructions in your `scenario-instructions.md` file. + +### Planning + +Once the agent starts the Planning stage, it does a deeper analysis of the in-scope issues and proposes possible solutions in a generated `plan.md` file. It also generates a `tasks.md` file that provides more structured steps and instructions for executing the plan. + +![Screenshot of the rendered contents of a plan.md file.](../media/walkthrough-hilo-plan.png) + +Like with Assessment, what the agent does depends on if it's operating in **Guided** or **Automatic** mode. If running in **Guided** mode, the agent gives you the opportunity to direct it to fix issues in certain ways or even to ask it to come up with alternative options with more detailed descriptions of trade-offs. You can also specify other constraints such as coding conventions or special validation steps for some issues. + +### Execution + +After you approve the plan (or once Planning is completed in **Automatic** mode), the agent moves to the Execution stage. Here, it begins handling the tasks that it has in front of it, adapting to new information discovered while executing. With careful observation, you'll see that the agent discovers the previously hidden issues and adjusts its plan accordingly. + +![Screenshot of the agent in the middle of the Execution stage, reacting to newly discovered issues.](../media/walkthrough-hilo-execution.png) + +The end result of the Execution stage is a series of commits to your repository that resolve the in-scope issues, and a project that can now build successfully. However, a clean compilation is just one of the steps towards upgrading your project. It also needs to run correctly. + +## Use the Debugger agent to resolve runtime issues + +### Launch the Browser + +In the **Solution Explorer**, right-click the **Browser** project and click **Set as startup project**. Then launch a debugger session of the Hilo Browser by pressing **F5** or selecting **Debug** > **Start Debugging** from the file menu. + +The debugging session should almost immediately break on an unhandled memory access exception. + +:::image type="content" source="../media/walkthrough-hilo-exception.png" alt-text="Screenshot of the memory read access exception when first launching the Hilo browser." lightbox="../media/walkthrough-hilo-exception.png"::: + +### Examine memory read access exception + +We're going to use the Debugger agent to analyze this exception and implement a fix. Click on the **Analyze with Copilot** button on the exception information window to launch the Debugger agent. + +![Screenshot of the exception window for the Hilo browser with the Analyze with Copilot button highlighted.](../media/walkthrough-hilo-analyze-with-copilot.png) + +The Debugger agent uses debug and program state information to determine the root cause of runtime errors and then analyzes the source code to implement a solution. In this case, the agent identifies that the invalid memory access is due to an improper cast operation that truncated a 64-bit pointer to only 32 bits. That pointer is now invalid and points at an invalid memory location, which causes the exception. It proposes a different method of getting the correct type and avoids the truncation. + +### Apply changes + +Accept the changes it suggests, stop the debugging session by pressing *Shift + F5**, and then start a new session by pressing **F5**. The project is recompiled with the change and Visual Studio launches the updated application. You should now see the Hilo Browser window appear. + +![Screenshot of the main Hilo application window showing the contents of the user's Pictures folder.](../media/walkthrough-hilo-window.png) + +If you spend time exploring the application, you may discover more runtime issues. We leave any other issues as exercises for the reader. Just remember to use your new agentic tools to get to your end goal faster. + +## Summary + +This walkthrough demonstrated how GitHub Copilot agents can significantly accelerate the modernization of older C++ projects. The modernization agent and debugger agent can work together to streamline the upgrade process from initial assessment through runtime validation. + +### Key benefits + +- **Automated problem detection**: The agents systematically identify breaking changes, deprecations, and compatibility issues that arise from upgrades. +- **Intelligent solutions**: Rather than requiring manual fixes, the agents analyze code context and propose appropriate solutions tailored to your codebase. +- **Efficiency**: What might take days or weeks of manual work is completed in hours, with the agent handling both build errors and runtime issues. +- **Guided or automatic modes**: Choose between hands-on guidance or fully automated execution based on your comfort level and project requirements. +- **Learning and adaptation**: The agents discover hidden issues as they progress and adjust their approach accordingly, ensuring comprehensive coverage. + +## Related content + +- [GitHub Copilot modernization for C++ overview](./overview.md) +- [Install GitHub Copilot modernization for C++](./install.md) +- [Troubleshoot GitHub Copilot modernization for C++](./troubleshooting.md) +- [FAQ](./faq.md) diff --git a/docs/porting/media/walkthrough-hilo-analyze-with-copilot.png b/docs/porting/media/walkthrough-hilo-analyze-with-copilot.png new file mode 100644 index 0000000000000000000000000000000000000000..7e410c894540602362450e53c5a7f6ae1fa777f4 GIT binary patch literal 65721 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

      b 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∓x$Y9g5Bkc#tr<;2Gm9Bb} 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 z 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�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�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

      Prjg@e_0qRdL)h6!b4stld!)Gi9Zl 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

      U`ogM&c%pLXAQN7eKK;vl=Ww`D5VhVS1Ahz3 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 MlvR_dmiiL>UnTf9c>n+a literal 0 HcmV?d00001 diff --git a/docs/porting/media/walkthrough-hilo-execution.png b/docs/porting/media/walkthrough-hilo-execution.png new file mode 100644 index 0000000000000000000000000000000000000000..645956927e1b60b493f8ba5e2bf4a5caceb3db94 GIT binary patch literal 80063 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 literal 0 HcmV?d00001 diff --git a/docs/porting/media/walkthrough-hilo-infobar.png b/docs/porting/media/walkthrough-hilo-infobar.png new file mode 100644 index 0000000000000000000000000000000000000000..30161f70184e68d2a1929bbc7e844dcd67441c49 GIT binary patch literal 10505 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

      u|vR^j~F-VKb%Dkmf91cR2FC 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%0A-bIz+xXXY(;Rcu5*A709oH+-Jm!}(mPCkzJ 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⪙5{-Li7uYL|N7{O1w9>O4k4E2AHy>P>^KOdWp z*ET};34pGZDpbGbaqWY@#eD-6R@6ZFvDpe3L+O!6*2|Q9c#J_c_^c8AoiH>uq5AG7 z@SF?WtG>3q_?_w$Updg_FXGZ0IR{O%Qm+VV})}2a*@M;OU`3H_` ztLQWc<&__s1TCfh1fkcoB$H&tZg*PZKLEtK9{Jhb2VL#27t7&b_U`t~ct`th57ZOU zPvPb8ol^uV`8_F_Ai{246I_MLGeVEFrG_rm~iRy_QW zkFGTHOuTk{i&Xftj_~Eh(T@3iy`k1n?9ssiFe7#L<)O?NsQ=`51r%-KStF2alRHjw zw_F|a$sETG^K zR|D++6RMU}DO~3E| zDmUVoe*cT1n7!DAw+yv^5oTKersvjJs1)YK=Ra2~Yd+ACrgLe~f;$8m(0xm&iDTI9qwd1B?LA(Z+7 z_tzhq$fB?JEIE*~1>Z~ZwsIHA_En;vl`*4ts6~IB^G1)$uZdB0K$W2o2(MGhgsX2eex7kn@yH=-bacw@ zAr=K)U4`3xlm}}lpF%#){mfQ*_GOAHRUlM860oOHJ)Wgw0Ty#Wd`CpI4TnSC=R_->^M4isL21YR4G*Fzuji>$h^;sbfNY8=-kKOXx5S9EbmZ31(y28vgqk?dkbiB zg|}rDkqoP%+=M@Gg%p{P-=u1wmCe^PT#SMH$Dc@V_%^ADagzJBW(| zDg52kdhWEHx7k(oWli1c8jmu0$Z=p0TC2skDYW=Gqek4fe}Fj8IHO*HBnJ<(z_1`o zHuk{z7Bx2AL4844H&h#&EVcbTasr)_{iT~oc47@U z1kWNU5{xjPqno6rs4QO^tOG10@)SwTKJ-P8O=^Z#HM zSC8}P$h_?JoI=95P!J1 z(p6>H0M;ma)dByS_2+mA;%`V`+2&e(tBQnxs3-?ho*wZFQR;^jk~4@28}CRjoyYJf zqi1%xj>3rWy?BGb>~ur05Wvgi8AcWFbNJ@X;yf}XnVpcf_4)KQer{P7VezxHuoy!h zArT(p6nFL@~N zs9()-mz|_wN1o@Zzc1hB1sM6nKRT1{4>`cVej|vJtZ9L7JthFv=HJ6Oz81dbDDhNn zp1JmlyFWB^zI0)&fd1*o+EF~(NajQ)kv=mISVKFfP5;4s_`eYp_dFGntPMd?;%xEb zx{b7L{k^y4H@PqL(U#K%Y2_~Em!SF!f@J(|N7r;K&`aj|ypsRUs zC2#;1TOlYc%e`Y$pk-<*@YjU!TDY9SF%ulf-Mi0C`uejo0P9TK7r{70%h#P#O21hHiiQ8bj(WVCmH@bLB*z^HLafMo#tKO>5p zQg`OqgS(bws2{Rpi!^1tOidg&BQo58{TE_;ZtTb5x93fbS~o@52_x+{rO}6Ww)>PJ zJepvnQAe5qE8E`0&p)e?%Kn6TFA!(SX5ppw#uo$^jL~Mt9Nu11+AHZGopJVw4Ke(bz0=ru#a zOVIz}Tu1~@D3R|~ovsD~3!AIB6>;(FdxN9{^Mz_F_dAB&O!8a1v&F8C?B%iFeb1;F z<9%A5JaZyFz;e35$rWLR4}bI2;i33Hx#w9UAW(hcG9o(z0R;YYsxVswP}Vai#5IRnvxR!0opZwVMpHU1Pv^sBFD&K8ECLl6#GHDFw$L1#dhq$1cC{~U7}1v`kiO#1`0Q=5TtM8|ERX`}$H6;)Nx%Vvd(K zrPv?%CVuZtXBj!PO`?CxN<|`LC08ralVL zq}%-7fOV}Ip>77aSbOUv#o&G51|HNpqz*htBqdHW^7z++Z#6)?NV7aq1eYO>QEOeYCD=pzbl`SULaJz=f0>$i$*EIY6UtIM~G#tp) zcm;$8yZ$$C3O#)EuT?{o=H9f6*JAdSD}yyT$=Y8Bd?!K~7Ye#NOE#p`YgG$%aK*hm zvAh$plTYfSyHtYLmQkBk|8GE1_ndxpH|SEps&z8It_4M@ae=xbeZt)+wsoZb-5|jt z&eu$wc*&YMiXUs0AW5o=%8eg!S8vR-A<2=2{WP0UFP0eFNjpY4gRsqj&*m4&6~!K9 zZNB|FBt0=?HKE_ai@KfCJ;h*GglNG>m`(<$76=yGGx4-m+T1vd(dL!HT_OVLk4{;2s zuTs;%Ad+|}0*!pZO92C6#}o7LCeLqr3Ed$dybb)4HEBUz5(Na8FAdlRPwr-j+pe(x zD?8ogDza876|+u?4WVkrk6}9MH}cNaOw7+|7%Jq5Ct=qW&S;RS7D zN|pb@tn$ap&1{n{mza|wy(|CfeS+i_6*of?54w~>jSB6pqzDC$Ks z^$E?z#dP1gM-NWgtw(Btoeo+4bfvLk^4XHpBf6-cMhzbK%Hah*Pqu|x%q147E~#=V zKD0~WJGHq8sysemSHL{!{S6}9UbZavTTwzc-OP9ON2hw3$*yXF{N0L%(LG2cVx0@7 zrVT7t_=MOKeTQ~--!|@1ZUvUUz87?a^!HsSu`opZ z74dECkePVbquLoOl0YrCPcN9>2U`S-TmF}4&q)w{bf;O+MVwICkwVFM#;w3Nv`|nr zoO!XINZc@@Rp`HdC%3yK_M5ciJyo$lM0vY$f1+{)n6DCBec<7_Em z_Cm@m=M*PY6Wr(+MFna$`P%-De-L9bl}P_ zk7H$2UJ(AVakKf0GCKdqv)%hk(Cl$wc@;ZXRvJt@DIXXEmSZ~3;3^k2K??oo&<0Iw z9Pl|g2FSP;T`ihJM=U2(1p6{xrDDh@g9dB6*Inq$_jmbnK#Wu$)NrIb zPi|~`+>guxEK;DaR+y`~f4RPO)}J!~bqeiwwXg>9gEozX;aM?wx`4zTmmL|IO=^@7~{oK7xH~EQ`ckIl)K! z_}(H1mkOc-dP;l&z@mEXfd5!Zek(YqGws^;1j2m|j3KOyk!vXqHt>f9jcOeTsK|3b z&@Cs;$+ap$JDDmZ0zvic&G3Ac=rn`hF>uQ4-ep!4qBxK@M`Y8`C&K8Si2T`DHpT`y zIsqW3_SmBD9eZbgM|}Ehivo_0jBCn_tv{V&luS+|cd}*>iL2{oY&8@6NDRP?@59n{ zszD6lPzrdPKP@<5mr*N_68e2FtQOBG(BqWZc<8vP3e_M{StJXCh)~BaPaU8~rZW*K zBEhj^983g#@_m+)RMS+MOrhstJd}))JBs?angT&LrdAz38Fr9lMc6u9)a0TimiXS4 zrC-2P1-<-z=K+ zKuQE#Wd-g|mjTVVm8z==E?HdA=Y_tnPTuq7G*wWdq)HLMJ7G`aZ;Re_7S}}@Tc=cKZ8u%_XPK%~#^h+#n0>d2Lj(k{>WmdZK83 zNo=x<{0oI}$`U&t!MT6zn))-Pv#N-Ek96Sw5I&rh)?{c>d?7;MX6AQ*Vnod)Uf$)b zS6)(POnO(Be)vu$=lB(OWK&=@i1OE0D!QsgAUi~pR#$i}rnvJh2d^{n6@E%3nbKT# zrWsg63dt^Kz8IhyTD(_S8>j^?bwwVON>&2C-KdK--#v|Ca3?t&GRc?>pU~Zb!~P% zh>kJRi4Kmr=*c9Et=sCd-pV0K*OOe zamKZ62qv;xAA&2&O!T8jLjd$LakH6T2RIrQ<7@G1Pe+&UH~}!|>)u`U6W@~W zzs34?GndXO!Dexl@PuciBZ2%MvDQLK5RUy$Z$Zy66LVH7+dW>zyvkj>0z5nI3iKdF zqg9|HaphQY&Kf-OVRXZ0%jOufg%jo;DXJ2g?mlsHJ>-h*Q8(`#b2E(v9-o9Tf4CRm zsLv+f)05L7r3YuQU!cv(wjLu6m=tTrovVCL3|h z`&V2B6h>_Avy4%l4cceWgp&KLAElb7^NT6O#^t}S^2V_HSebnCMPDHJrhGOkQOYy^ zK`K6LvVZU8cV7r)z&>^F?61JvK;cJsLk;@Nd($ocOjlM$!FCl~|OmjehOxr|g^o)uGT=wi}IR12*7H(v`yj0-i_QMJIXts614>#etDFEF8P_|v)6VAZN%iQf}V`u9C zTs!7_^3(fAVRUI1pD{C?2_nu56WBb=JV{Tp%}K*IC9MMvoTQ)d%WsmG{|KRUj1?6f z*HNVm4?6gaGsmwWNR;-q4Y>4%7?1Q#yH)fd5+_l{<&o^Uk`n!KE(uN!Qj^gC=I?^` zSbB>?0ZG7BV)uMDwM#GJJ-NitcLIMf%;_k@8-6?0^`p-;2L{QST0RaCxmfkV3xfqY zLj?5-b{fQluWGx)obJJZx&l;(CqL4YJ9(YE`rcf`rBmZULv1SA$jkA|Pn~wMyKT3C zF{2(DW271|dC9ifWoZtE@(cna4h8+@KK9`=lO8IkB_oRMnbSzERUiNz-&d*{AFh`n zkOk-JUOhuz`gN`9fiT;$-^gAtJt*XO726;C1=72=zY)Kw3()|~@8*FFrRfRk@X@}Q zGyc^#*FMUe5`2J;+bH+`<_>_8Y358;k#c6BYlLFyP|T&2ZLx z?dVhAvz48`4Fp>xH`2X3vM4KeO_K?3vpWIB1|_cjNnnD-FERU?{c6=yxhS_uKf&3W zO@*kS%oB87@k!@OYH9v1e=-HYbiNaCYhXsu4{{vS+qkk$x1}VgHHWKB7eSA7ezN7C z2`RzjxEFFMPz1FPU99XTu-dtOB*oR}*v6)YXvA6K z$-(KpQudcM{Y{yovWx3ttIdU5r=YeqJ}^xsss*TKj7Qa?Ny%U0K2GZ_URzwZsev9; z8?61fR3+B%7BzOV>AoXLJgwT;U=tmhdQ<}XU*%lT1h2;q69$FSgMZQ_lxZ&h7iaTTgH0?!mA>dhEX$q*n6 z2+g2-Gn)MIG6#Y@>0}k@@d#9}$eb5JxjWIzc%d@`ltERr8kOZD86F1|u!x^c_BTst zBGS{X_r*_--V-cTZ?H)R3E>++W#WajfLwqwLGne#WW>m)@ZmV;OI2f2d{D($Z>)-R zVfRC~YcR?sibuYKX%CoOzM>ic=1ppgy&z>ZabO*ZTd~tv)BGk<)%7V0(Infd{$_jU_oTgy zE@)I83gUfxpn*)_r{H9^#ha}Lx%*!KGc$4YdL$>k9kKIJjT)FfIVUG*mET;w&iwvu ziqh*1rHtpne-^wu2+$@>L5TiU0sX?4ddo)y3fC6Ew zcc=vgEkG!g7bZ+}y5ymGfE_rYbVN5uK{c;6tU-c$4mepc zgJz6fz8YW=iANsR=2K0FhlrS%qaRxolj^x$AAWB2qjX-{ki3eK zvljjJ*kQ^bmVpYI`FNeNE(o_QiaVfL>>p954JhkY^l64Hp_J?~XNB80Qn*#WRp9)K zw1UU#u}`m_H!TD}=V4sl6fE>nZTM)48`uP3&hLq3jrjH@Ta3`&^gnq{$ZDsp1>8|L z3p{NAspPK3r)f)yb@w2LP|7qXT#>d6_?C(jIyVisw3^Yc2c_}D3iq^11(FlG4$+2k zmrAVDq>M~;=@GMDQ{zS&!6vaWId{k(_D5EuzDOg#z~erizR2nGo@;G04(jec|AWA) z2`LGEgp&34?u-?lWlq;cb#)X+NX-}Q)}8kR&;SV32)woWQ@qg-%Aai9!0+;R<;_Dy zJ^LD;!;u7_J@cHWyXY}ojj)Q5J{To!2 zzGT}a6TVNgINI)#->&55&A~tny`Nfx<6oP|>pxpsndP@C4e^9vXWaU0`hQp`$K-^a{jLsF z$N5Po2iW~quW&Q?k#cuE(^9&x%4Uk^>Tud$R*k;tm3fo0P<)Pab&mO}4>@suGUFFs z!oIAf^RGL!MHdTp5mR69`kD8=aAOmU_yqwK zNuP>|oz1VGKKJ7!NCP(WlnNq)TS(jg?IFjkr?X4IwZ#VuI}K_a%+yn1sYC1i8)#c_=0SQ-y&r-k!863=_?9-~f{Dv!<$i9~}`pH{S|pbyk`6na?ZBRvGJ# z+|n41NRpDm54|hl62xzMCBP+Lz98uu50U8Oq^x=h+Kp*OMTJ9|PYLjfBWwzEvt9NE z`@yV+J{-G{E=1)Lg`jRbdxWU~aavkbcL_DP8}8D54C30_BHYp%Z*wAYRb)n>EhROvdFOr@j;WujW%?brW{wm+b# z^J3$3s1g3W+<`+c-#Bm!$jaLGdgxMXpHX&Hy&!nf#1zg`P0%MgtpTE7W=_F&{6s@2 zzb$8XETZ#e41@#R;(U?}`tRH<=VK}zkFI&2ClhKo&&mAvX8NXSFYS-d$Jnd&tf4j= z9S;6!6M<>q$Eb&$aH~!)lZ2X`1$(A<#J489LJciBvrE_m6bI?B;Dkn+q1a6Z`{}1P5fDD!vo(w zu6MVEvC8!@w`w8T&H;W&;IBqn`EtjEapSMYT4vs+fsgLExqx0p+B@lS;*TN4+{jOr z@T`eGO5WM0YX2aNccli#B{e1=G*=-=_u!pPsMvIA!<~i83K_bVu6(3G#lyh|2xqBe z5n$h}?rc2sWJijnM;IhGQWX~$h#vg)HN9Wov?eu!~;e zhdB3WQ2xHUSi5wCgCzv0=FWng0W#`eHhxhWB*yTE%jD}PsOfuP!Y&zxp{vIA|NbYI zwOKlxR^>8D0n3O@hp22Y_h=lR9#%%72t-h-x1xzxZzbqtasuB5nY)$`sJYB##|-bv ztv1K6M^}pLZ}Mg)o6R#IpiplT$*5A@yAp{TLJ_Z$CI9}R5%sz?;W1!B=Uy1@ z98&*GPXF5fJJlx(m|DPF2~Trp{)Yqlc2(-LaA7>dj^c$vbo8PSfGs}t?H-c*ay9@x%hT$mmCP9JI;bx*!GM8R`pG?(6y>3bZ zMkj5o8B5%g=TOs5%Q%O-%!Xny!ZEC;R=+)x5DGPdE z>r34`xNc;oSi_W~gF4F(QbIu!64aTmHqqP^G_A7?t6Q>i6)X^aid0undCY4rt7(%KA6zmXRe5TeB4O?cXI#p zW>u(^&3{@xCLeGs;*XNj(!!l(Q;-!pzoh6Y>HF!DSuDE?ZK?zV){jS2-a5*GNAEtA zc7387m!u(O(M{HTPV)PlkCe)n?ukz~$nS60p;66-a6*n;y75aiw1vPqgoev zXsJ>3D2{SO+Pzip%PmohL2MAv+4b%lQSttiT9C(uGl&J@e(amKxwB035O{*)+XZ&t zTV)vzZDTUTk7p;$dKJ~!(&l7hNpc-RdZ*w|^sn+5>*2WpdN=AarVDvt!jaANPUXl| zL@)IGOF{X~=a8tLkLNC!+XYFF{qc9htdlJ9%U{6k%8LNfzq;LVVcQA13E89`wWLhF zyyD!olxK>UCMb>`3yh`YJ#KA=tW8dHEwZO>&pndjun?mIL_n?1HEE*2CsTuQ{sPQx=_Tcigw-bKz^;S#{kT{sDA<>o^0SEB`alg&wU$R?KGnS?tzjddU|m zr|2w@U`ewbaEbeg{O>80(e{nv?B=AT!<5g0Mo2=L^DiNpNT-vfqP9!9mnM&O#V~?^ z8Dnm-xcP3t^MZBloTe>@zEw&;Q$4sZ8hLW^SVkvhV(J@UU!5v*@#DXMm`i{V+iPe6 z2PSDk!%-dQ_G>|~@GaKsN#50bFuI&k%J+aA05cxwn!>4=>!bm)>WRJZ@C+?>u{mm4 z{Yd8b=kI>O**h3vm-f4f95=g!|E4h9HzTz#rS{F5-nad29=kM^S^puHx%$f?Jw1ZB z41aCPEp0WitJpnz$1p6U!n}JaRdoV!!xHTC+ZBlpNt|C@^o`Fe;=@$y;Y6V#hH`=^Ehg!`ZG4&8FX6P1VJ^%rNLE*jQnCe@V&QX#7pb%NQ*jy;C8 zr^li=b75{}q+KTc(~>y8s$CwZ)5{lIYjlmWGo>xxD+RnkFB?j@sh))+;80vgY38QQ z-~jBGTX`_YIPNVguph4FnR-L7w}@yrZ>nq!B#ovWGhv~^tS7cIgxeP+Eqw%yU@zOegER9E^HL)$@Kng83^5Lu7yD1Q36 zqR?3%>Zr2fch&=&btS{*b2eeM)^O+MouEX`ke%q3u(1*svYbz|29GPgEPi0UZfjql ziYyOV(?H2{vK{qHz2FW6i|CbM@dAmuQh%PE@1C8Iqo85|A9sE&0t-H~jt~A>jXy4H zD2*K2UC$N3RmGW-@75UiwT0w$_R^Z_Y-%n{-b10wW}KTwc=4@7GVpt10<|;m(;JVQ zT5B>Au()NXlJ5+|fkS-|BNfdSj^oWh;JGQ({2HsI09o$`HyeTQ?yZ-6#1z@kbQ6 zdffn<*!jih=E8gTLfQFpBQR*H?kOLhT(lbvc@fKhKz@w&I=xPi-jJHGy~ttM@P~Kc z{EAAbB*5!SbwGrq^a~}8$$cnTFti>`PaLmtMK~F+u2IxAl2>xaj2{)2W$WEYEaY)} z9mJ;dZEgYk4tLukD$xUw`GT@-Pg0t&qx_}gc0pc4L+GPcM;*$mY2i!54vn@LWaB-6 z{t(8XiVyd^OzcVC$|)Y^$7Lfva?}+sG&J8jy;vQzR&L^~ID>GN0z2A>dL*&-yzH*N z<(&_SQ7buJ|9NtSn?+Y?xuT6xv|hSkRkYuL%=zC_{&Wq)?q|l?^s(Xj%lqmvw{)zh zMRdVF>gXu>C4wQnKiyePz8-gp#%68#gwpEs?P;+DKBpV+QcjBN{NeZC+39# z?ixWi8JK#XSVguuvg0AQ)fQI6V|7s=&&4lLrq=0ctFtYJOro6Kyz0ftVP6Yiaroz! z%wERzMdMIbnbhF|PS8aVp(J`{;_FvN%5?yr3@ZG2YqQ; z^3A$xKZ|Oqn|a?>OPkei$*cpbxPOxU zE_Y~VU9jAFn15d@JK!MSWKyg5j(CK40d4 zK3YBteDF|G>zFp8Upg&BiN9KQ-k@yhq2jH;=P`FskrFM(WZwglJfB~|LLb3TPp)46 zHNHMR4~Ha2#}!gNHcu0xqGY*~)KKx`5x!GPCOm{rf_~iojOh&d&Jf_m*{m4Ed6v@@ z#&1};a@4bS;dCe5yeu4X&(Ie7fV@>ot^`6UUh`|x@0S(qaXi-xS9xmw^DjNAWoaIV zHx}QSt`)wG|I#c9WB);7k@JsXxkFq)x)ZNdk_z_kZ2_J+6)%PJL&me-;pIe+y}*q@ zwJ!@T_-hLO4`xUiF7PEhWc!=j0M7eLlHa>eCBy2i!=Z?wW`;F|OV)3U2SvF%n`(75s^{D^=Uh!+J;TiHvoqAZs#0i3ga- zA8OJ2EQX*)Upx{bOGhq~AJ_S8bv|{zw-Ppa`S&_~)P$(E^@4FybQGXUVU8!-R}AUQ zxddrbPkHJ_E(!0~z;mDV^Z!a-mXdBo4_D3k8QSN;p7n=cJ>TVx{O}#= z#6B|~NE46;RP=kyD%Q2GXw(W{$%nfxyR08IdT!v1?qA@AFMaD|z9VS6<-9_<@XRc8 zIQQ!`ho>_8KabMF#vYYN*>DsWYfFWmkl&2ohw@mRsSdnzX)GxKA|+$KrTDpU&Jzb7 zh}D-at~x!Tn7^33?3$G+<<2IXU}tL}YrTr|E>qg&8LVl>Glw1RM2EqJJFr_J&2Xte zCeyD1QC&K*>%Zt(<_0EakE*=Bi(S1`yGE6HC_UyMP_G+fjyuohPq6-~^zqia7!rAt z6g!>H@mPC@@`#^{-|^hIy*Ts|Ji2d`K#4W{u*C4bc%gMjjpP{uPCzCn>nbe>(4QwGIL^K>L|6)XWe(0ax&j1$8zh}Wnro! zEaI(|#;7I7NHD;N#hFb@S%5bxHI;qusz9ASjS4b4Ser5Cf ztzEXiLzR^H@f)kLm{G9m!Hvex!|0VY-evi+-drs4%b-B3$Aq}2r^ksi`;1TK6%}UReE3O*pCUBa z{FGH=gSHi!cd?h^cyRhuMJP?O#qH!nBhs5{4Y+d$q{QoFY8VFLh%4}*LD7T?-2e9t zZX1#e){MG1Q1i>|bSc%@tW);>&lga-+ToI+j|P!q)d&Ox400+35%L=2;LALoqJMo< zyMhPo?Xn@Oaqp7bo-x*>BAxxfw<@1dUEj+!6!cKS|6$E;f10S z2yGshYUFlo!3(4vG@MI|_sfULc$5!Yd-Ss`Pc_k`SAN^a_^ZV!eh>C3D8_Uz~;i zG|9`aBqs@2sw)hRxOqQU*~(Fk&+J&aoBL1VTWM=`UCB(>ic{ph_Wm9XT_|x`)5ov@ zrAye-6eGr|JnYl$eEzl~6y))@IE+04%lgXNV9L+=tdFV%y;3(#Fnf&p{Zelo9GetE zHllny*($uf;jG^^mtSegcGWNoRvR&nJU==NRQOHg=VcLsu4*7s14N*HlX=!%Sa-d5 zq8W63siJ2=Ti-I^ZxCXFfV^`j6Ua9D*^I4Th)QI|33PeaOvPM_;|AL)g?PK0qbq!s zH?<1Fsm7Tyo>eX%Q4O4mzVnP+@OsB6(!RM9{r)Qa z$Kh9}R%#ko|LdE*0sAx6*T<+?-rC|>Mx!~{K(>zX^~;{j;3d_WP=IqiJT{ZvAYzJh z_+q(s|BRY7`atbyZ-dJdrM7vM_3-C-^GCbDYFuiKwvp9lDoUD09Be=hH%HJdfBwu3 z&b)y$$=M_guXp;KUv;efAAVT(p|6Ag8z=+wy2TP_UWrm*n_I&3v)YIY=8CLfjN$4_ zlI0COZ^KWxPz%d;^U8d2{MGQ0BOAtz7VPz>&I@SWlNr&iA>6hVbrwQCfPfxB)@9e4bN#-Zqsx?|X5iG}sbHmzPTR)@AIZNPNMs zcG4=zoP;wnPujI&(znz>RT^OWaJ%3*!DGjLb0=ZPGt+3|MFKJrph~ss&&uz;xxAYH zM}e=1n|6hp3BmGdIg3?{y5MDLk>{-L%X}4C{v(M4ck~COklglr1vA&}ZGQhBdvEy_ zSMY6%CJ@}+Av7J_-Q6L0aJS&@8r&TM!8Jf|cL?t8?m>by?(lYg_uO;ehjYjK2VQ;H z^ytCvs=aH~s#R5M&MAO=KWnL|>v{00`t1`BDQFUbw@2)gwi@^ffRR== zr>hN5RVR68;ZLPCQ*jsF#UuVR$+5Qi*+>dTL-QT+6;&3Qs4T8jbx0g?Dc1u<;X<*d zvz)ep*>DaRH21Kh?V}X4u=t!EST?zT;M*Bc1i3`MgQvuvKYL!;@DO#g+5KyaN*{v8 zf0CzUu*#D!*c2vq`e#LvgIOzOh)_Ja6-X?A5d~GGjFFcJ-PVuQf$x&QPKa29ki{tL z@otNntymYNmT&j&GN3gacuRN4->*Fz4Re(iieeQZ6NZ5X(md@i&PK;iOo`(3BBTIQ zL88UC;Xza*QPuR>=2)`ZhenP<`i*RNoF9p%+i&7n+um};X&82vvfefNaN5h~BH4gxt?D&1ly3lJ}{Lx%Y0!(DsJT`EbR+0h?(64|Pw9)Yhl{HIGFuhkjt@uL(Nj`LOKSu4$MnSx|LuNXp} zgU;Y!H>8bO{r;NlcP49e38J}6Y)kJhxP&g-1W43(W9N9FZY~t?hMyrR$PbhvxEeKT zN)TxchYRr_xb~TS!Hj}YPyI}$0k9Ptlv5$mn`IA_b#(Q5eIi*MrJ!lk0CKP!^vp)6 zDdu4Hl0gz+$=$g}nL`O)B)9JZC6}`v4U?wjLZ@C8p_)4slSZe(XjAzLW*;I}O2&3$ zro5H_@x#jJ%5n#dW%fUyff70&#u_TCzb|Q5M%Mfq4YeiZ8>y*DOKnSR?jN=1Xin!; zg$d?-i?}-9c3a`RWhK`_aPHe5R7Ld|s+l+$l1tQ~X zBhPcxg^vDcz7L+A6~DG&oJr~r+!~qOY7k7S=@#qY5s1;4nuTaBIf*{#X>C{5k_(jP zd7dB*f58#QBDRK`e@9sJh`oL>ze0ZDno(g+yCF5mVM;hKHGnYZlJ5F6K zz|7Z=%YdsnqQdw2Vo3q~Ul=4_cDKfqeih;`>76lobP6Dq33uf#JuX5L8LlrUFC!aG zBTnb2T1wnqQW&C~Gg$-m5pw`qwn#&nJ9y=Vee*1ttKsEuK0GPuCj!UCJEPmJ1&fc2 zLW@$_-PXRvhCwB9O89$7WpD*lM?bC1)Ua3cI~3grVm-a9==259$(-RYs;p*TA>x8c=%Ig%?Z0Iqb`Cpq1QF}l9F z@A^cqf6fI%hjS7Tu6>|^B8pa9Oq&AcZOrFBYF>pO)9}avGd|+_y;V{iYt*kM;VfL< zKn65~jNecqIax^?^hV^taY+FE7B+e?>?XqEucg06D8fou-faMlkc)AM|CDnY{Zdj8 zSTsz^*c+sS>IwCECAQD!lQ$@Fi1qF^5$EkA_S{N(b1t*^y!@NbvBu3wneDBRF(6rs*epeYRoT`Iu3a9@t;U9 zi6E(RVZJ(?0P+|TWvN52G_$O+YS|MhdFee!0BV!}wHb5M0PDFx)(Au?;_l>$5srW{(>Qaf}GlH~cwPxQ~S{_MQUDzW+gu zscnADE63Fg9NCS)TQR<06Iy?4{3;{d#~?CDiL{Y$nAT?XXUz)PdK0RlOik2sg$Z+I z(D+8I#cCX~ahT&M9O@y=E67~SIp)_*{UC(!BM=J&Mbb?@t# zhJ@4R;%d+Y1(+))!yM^AP){^3zcH!THP#kn!V&q#ivGT4+=*(y>n-yjLF>#*NhAoU zZ2nU8wVpT9{Q?nC#%na5(@_M)dk><$Ptg~yTK0CJVtl{tp1SSJmf)FgoSya@EUl}H zA6rfwbw{MWvw5&E_UU3T>Xg~(hDLmNe7V_k-KYnpe2*okx&#k9 zXi8Ua)Ra+8!@P^kftK7srHX03`<<{&M@EIm?@dFJvTNEdwVGQ7`I)QTA&WPT{9i?s z{_%yJ1?R+XI@|T35;>_*I2gX-c@#-98@SUwgr!@&9{HTKA8nTe!_(Z>rh03&oKzpM zysMfkjW(?G9Y(v)+e_krsH8?{x@^UsZ-PKz8enoNvRw5_1 zT?f0;Iw8#$XyrT^IC?kJ?;(3>9EZ}rt)`yrIaQ`wqRYEXhP_Q>(km?QaICwc8Iv@2 zeCoaFcoRbQ4(CPnarh5XQlbxWNO;!2mroHRt!WvN8jX&N_LQQe%{}4FRe+bE9s+i7 zl&|I))9N4j^YSo(BZ)}lRJY@3*V}YReTGN=Wx9NwyVIbsfBSxkcg@dgc_gRhChFO*srP$Q zK((*XR@5KY;LDj#Z<;xa71G_t#0vD5ZSH|2+dUnBw14RMKgi#G7oc1}_EAGAfQW><^sTsI?@tnetFv{o9 zg~Ox)lQWv7hV?J;z|cNOQD=*$O%eWAIAzxNt@f86W8&iU1`kx1oPy)m8arJ$cJ!N+8IJV4 zm!)~q(PPOI^ciiwMs&*}$=xCR+C22+sz(?%88W4Jn;U;GPT?4oiu0GKzKB*Vwi;cg zUqKE9i~3@TJckre`!~o0#hj--$TW*k^9*SECibvaWE^ z_AU-Gp?|V&>?v8Fo{@TZb+tzO<3nqy_@+{#-o(?YpcNRDy|P6%K%t1~nF}_?*x2q_ z#-IK|yd5Z$Aotu&ULs3=J`V^5M88yS_^Se2R;l5ibN2QCh^u>FuWK_)6oMCs4I_cYzTrO*6o{g&g+|VD_7V!~ahq6$EmV3(>IO*?}>R zpwXa#LmvqhaBtAJf5?;M#N$R`kF@>6_+L{~cqdiku9D4$D%XklK{=a0pUUP-AP*vU z-ofW>%!$$oa>kgbXq8YXAw^zd07P>b`V;o&ovDxdiYr`X9|Q#Q!5C*qZ4UG{1wpa} zVny%6NZ)ncF(Xn$3?cfmv>ni?EtKT3)ep4u4WCUi8|?ttWe^>9gxO+hN%^#}y;sz- zsvstjFOjp(-`s^Ckb8}=H)s9wG(IhH zM@I=seICIE*-_s!W6M}b-VTC6h5a9S84)h>Z>)Vp>Fo@31MIr{b8irO%IfTg+D8jZ zKJm;y37Ce$5l4f2egg#pADAExHUuYxA)*1w4;&2ZwgC{O(INtife?3}_p?mH&l82= zV1f%BAxU(1f!|b1`S^raeh3s1*d0?1jGF}nc#OB7eEhW@`I6wo5;45}TE!IEUR?zQ zT7hi%^r0#;@}U#BH=y!h^LIC%@~ZlomJ?(5d8R8-Biy|1gug3>)o!@ zmf7n*nPG$iFB$b?ESn!uFQ}%5DUkj>JT2F|t~a;=&a?C^v>+o?c*&N@rnZ-fy>9eY z{jcM2g~jM<_kl-8%E?P54&|>O;lKYz=fCaGvFl>|J-4@bj zgwgDL$H;i{0s~E?r6g}Fy0x2Q>>NEJ;kGo?rwlO8GQ?o5bLuDKUJl zLHG^@=!ReTk;?3bc1%*x72VOfwf4p<)0#ire_%I&DT_a{(do2)8G}>EqR!<%jL+k9(hF*f-$<_iUY01wk-I2$SuvbGn+3RvO)Zm1zZK*%Sh zZX|z~s$9k{0ma!1#9a|oZ()rl3%lG=ADuSAEIcWzc;+7BzokLQ|4Q6Pd>L^lNlecY z$ZudH=!oEl9TE)i(Et6T|E~|176=j;d51H|ap=HH3INJB#s`WBY2dfea7YmorL)IF z_x9A9V4(lKw*S|S|J6QbPZu!Hrl9G}r)(OoG|GQ9&^0R|6MAg+f@$8gZJq-VMTmSb< z{jbMBt3nqE7Q{CF@B0kzzg{RMh{M+_<;DliNPPIeJ#uq!zSOKAQ`E=*4AOrC^|ymR zWD2;`h007)l5&tSm67&;dRagNhJ%>uyD}1f^q=0bGXHm3BjX1^QG7PyxWi+j+Fr1U zsG>f(H6^gH5DflQ^pQ^S@o!Kx zziE+5OHzDtdPonBUb3WD?De1&F^}}Y^=rw(x>i?mSec2?mWR?R2bva5oRj~5hQPfd zh)*xAxLEMrl?%}&Yly3ulX8kwraAAc4uuCPYe`2q6P6a1KRSkNn1Jv%{mUtvvQ-J2XBa{OjfUBMkw~(XvE*B^~j; z!uK2Y?BXiH!OhxDfQVXJ`E%LCar2DqbPc5(#~?b|Lk@`nAwE24B7%lp(w2Lq#m z&ue2Yg+<(4J|t0z$?T@4`yUr6eWL)Em=H$gpP3O-&ta=vo<_*4s^{ZBesl1IqT|Lp z5#t+37q@ZE-r2?Io4@7ovovJ7iSIRD5HbWpTedu4uH+rpLxxyF1W1#$aG-mG;6Q3w z14~x@O7bSbMceXgiGr78!usX_iNzn^>S+}+wy585LXSgY=9e_ld7TA!A^zv5q<&l! zxpCKbPbk2mY}diFSF^s-cK`M$vNXC{4L@*whRS&c-Q5pspi_@TouRAP?7He3Io~HV z*5;2)6c|*Jg0aT^?2rp@)Vd{gjIPO~AGGo6Y|H7_MzAFEGhy*AkTe=O1`|WbH+rxH zL+@&Tq=+@D=&n{%5gIe|9#ZT_Ww0MLUg>lg^K+>&_0I;-UI^f{1!lfSMc)%G@s&|! zml96#a!&ZuuNQeRE-uxXG4)-ub~kAxlei%EfK^&%|$tJuucuy_gf> zDI$PNP!kZ{NI^C7n}$?~4x;1Ct<-w>zNUb_em;n5rw^_;49BG9U^mkrT$8)&_;82P z*ltr;3sApdhm5YlL{C{S_F);1_&@28~6!PfCJp@{XjxMiq1o_GCXUcE)8 zJf-2U-qgRGpLn$Kea5QO#^I?+12?*&$V}sbP+%<~i8M-2ENA<Ww z&(~uQiJxEsW9bd~6$M}fYh0r@{aNG%-#s7=f(c;YBGRB*3{a4`tqMA70c}_`?URQ^ zr6uG!*uD$7Yl|$MJj~sZ2I%abd=tKJ1-#cgz;(R->QX*jH)mNsZE?el|C#y62bROU z`I6?%`p3t#TMJGYXy_nh8yj9}QM<$$hXi7qo`vL%gK# z4T6@$BnNPjLj|T(Xczzu9106j+wYNzIC^+X9zuUTc&WpRx+Q)G%FOqoPVu-8bgh~X z4Vgu1bkQ4*1lxIBj&8lFX%9_uzustVJX?nHJLW(L7zXV3cQT;6#m>t`5l)qzh5R6q z-UJY& zC^nOhyYHU4q(N>vvZ}S8LVGCKFcL;r5d4OMb1!r9A+w19DahW>{;k9NgL?t3P4u}Z z3yg^k)c)}(J{JFHtF@F)2Ss3#41FVg#R4ZJXLz$*mEo4m7siVR!w~}UJK*2&0FcLz z@B-_BT)DcL!<({e4L+dja=HQPh9#Tf=1vn>*mixq&p+w*2Z8PqBXu%q%(cg%dxrj% zw_cmSX5K_j^#@)(<|Gi0^a(wZtag7NWbSOB*6>KNRqCes2%m0Y=LMP=_lEw&?G#SP zTR^aoi)gX(Y7(v0Opw84Gw}0pgNdg%xq7N^As3_nbRGA$&EUAcK)3&2ru`rum-QmvDGHOWK_3skhCY*T>V2bb=V(3L$~`H^$trs zI=nxGVRL&{eR8*f?6oYchI6k_-1t0^{P5BW#i#M}V;f1FpiHn}dQ=Mpj?(v)GQBZf z)nev-5GG)P9b~&1S{RzOQ2IYSnEXlr8u1qC2*Gc8ad=`ZSva3`=&6lW!U5jh9>`{| ze;~NFs16;s)0{j49*rFcg#f=s35-F{RLX6dfWoPW1o1Pr|KOINfnFDR&(O@M=#jYE zzHrGW)gTg2Gt?2<62=h$?xG4@*&GF}kG z79hWlJ@HCFvJ3tC0S%y$#G{Gqz0ZTVz zCpMt7@|6Dhf55?V17AS{l`-dq|KlGE7i1>>a!y1O^dHv?{7)D#R{(<xh-GN~xN5ti zSW5-lrKL4S$+_uInd5}O`e>WI6+oh5+ckl98YYEm)x>kpHRsQiZ*AaNQFU=r_y?oe zNNMQvD$FKD%o!3(ngsDn>=PQik%l3$?;Y*8$d|PV*~d0fYHb~|38_K!Ba=nz;=Uq0 zs;Q06du74x^o7k00Z=wAK0nqTLptoeMl=HIjp*dtyaGGMu@cam5?6t($zL%7yECz< zLZ#A}j!pY}P^+xV#@n{bd{Y9Y1a_T_5|CM^p;4DuWy|G}3Y$?G4UdV^ul=v1rJQhD zM~SaJDGVq-b{wULs8|GX2c@Qd5+#VQm}Hf#CnnBp&lC`w$%W`*WV+UONqJ2;)d(E7 zu~T}uh=GRws;c2Bd$+jyGZ~JK_svHYQW=nU#P3_x_bNMpaZ~}AcAL(FCwQ~7Bzn~1A8!8#S4quY264JSum4bw>HJ=84X6xMJd{cyU%E1h(J zKH|r+EFDhdX>BrdxU;mgm3|xUG`LGMf2(x5Br|NnlB8tBRO0D@4gR=z3Rs@iNfXnEzn*^JInUi{+`w=$}(ca$Jn3 zkk3L%1X+ub8;S~l1}_8o>B4$$KY4emp|u%|47*eYB})ALn4zaQj4CkvfUUpz5DmT2 z^BsUTA`^6Fq*rZ%+8TuZt~ENGL(fU-yS@)h>@bDgI-P?t2+cj{Rqhfv`k?hOHh&$gAV+*~1c!;F~{5K|5rQtR|PY*kp};xAvf6wt)yyC8Jy z%B0;*6=-mL1t;VKB9h^(ypP)SAiKAo5YdB?Ws`!!bz9W7sF>y$gN;8jpw8FzYUSj( zUVrJW4XzFXA@G(@sEcB_;@}ZmW+MiXACizN4?tEcz(sJ-x1ZcVM|!8PKIxXMlMGJa z_p|ReJEI!I>2r1~_LbP4s3gzyJz@wr?9{)`4)k57MhkIMoJ_XHszJ5eDQ^0ZC@rSQ z8-HgR3Hil@4MjRw^t@<)+1fPOp?mkNXIS70pJN~Jm!h4nN#j?2YH#=Vzno{Yg0&`o z-!r4@%XNzxd+oSgmn|Y|8O>(CgqCy^`f_(&V(nczMZ;8{9?oxUbsUNyN-Z0sd%Z~2 z??{8*TQEOlvf1(?siY%^kL)a@BJx%``iZhKD&^pwEN+t}c1&r#f6AaZy_a5FVS!JH z$Teq(B_--J!+0WvNrZRj+}92>HS#^Tm7{*RMMmpfH(x9$v0Xb6pRSh3b;Giu`E&M# z-bSntnk_J0zTZ=skFwa4Frzl)V!gxP$raK_ehKaVonrA0`}yNMLoZL)c=GxQM)&uy za(3@!w*9-%AudzA4KD8MKQUyrPsqy;{u2U#F#3Kt+Te{)*Pq9(12%Ro9i$sWmz9*$rRRn5P@4>8Ew@~bDA(YdOGyJY_s3MpwK zyz8H2>P#&@T)k|6C_n9hdyyRt%m#g;@SKUCe57405mX8u*p{XkI;b;P`3|P1nm*6k z49R<)U|jLPVN}`Yfy4f5%Gtq&NWAcqLL5i1Zw<3C9cd5Bs{G`#qvsbt?>(jo#ETC+ z&elw+OPyRf^Y_?nS?o>;`U=19Y6E%Z>1usfH^)pGRX?-;n$^7wEXoy$Hpp-Rdj-J3 zM4ZH^tfU}H3IdtT!j8+-cS2V}Ye{#>*}<302Lic#w>C#jXI9vw<;6&VW}P>>E9Nw5 zL#zT*^da0*r{+y zYf$Pbs(86DovlpU$*VZ6HY+B7cqAQru5FPMhShB~{xb^=oadZ-GQl5pcXEC(ILxIpnQhV+5^Tlaf3C*vvQZ>DLq9)X@R}BD` zMW&}hZ*#YRGOi$4M6Jomb=vNPH}l4HbORJO;)&E|?iYMe_WfJ8zLefO*+uKHi@y^f z?b--QxSRvZ`4ExurrxMJyOG6DOh_!Fo7*#LMD!LN+%vDxPPLqQB#W`UbLoK4v6+~H z7b_^XqUVqiv_8Yf>z`bCN7$+FgS%EDBc6D3y5_P+n>YlDbyu4@v@%NH+nN;sAv`Qd zXXMJ-+$V5xym{|u=sZWya7;&gyf_cpp>nQ1w_;ae!=dc- zTprRLY-&+AAeyaQj?W^Dz$%m6&T0*eQz_k2eI#(n@kY*b>#`da(LOyWIDr$|(zIxu^4rtEbg;ep(5^RFs?k7>Kk4#{`&V(0 z=I~46W_<>~7TXT@cQpUiW&1ByCD3KNMf$TfyXJ`Qzjsl8)a&})CW3ozra$Oz@}T$< zX}F$p;bcpMA^de@r2L#G2xWnqi5YQq#4ra5=bE(O0s*cT#!6})Z{ag`zU8%SXnG+J1QZmfUUOO|PvFdsuaWChrNu9JSpY4Pn~oywt%FpJUVSD{GDTxah71 zveB@+ZaG&`Vz1o=zHW}G=U##(PdOu-g3gXhf$S2)$}oaO%L(f10Lfdy-%m5z<8a3N zNBD)_Ms*Q+QZ+W3-gw^AX`=;xi!w_dl!Oro#b*)V9f5ABAsM+ot4Aeia;C4^z*_QV z=j7W!QklPkh`kgM#7(Kvhz?oH50xeRoslaidR0f`+)~{Ms9}>*GmvZPj=)$=FEF{O;FQ9Ihyb4zc@4o=Z$sx9w-i~~f{*RzvZHKFP z`&R9N8=I%^{C6#YttEA*1mv|9QSe!U#84CE&e^gM%YGfF1=!Nv`2p5~&6s0iu(cBD zat5n?Hh`Ki}hkS=?=zd7*Lr5ElF9>dJ~cZ5$*Ru(~Yx!rBOHP3-hvcb36NgyVZ z)w#F}QHHz6_7(eI#=eK^dqbo5CL>|_jUNqkh~qepB8M|3>Fxo(4=Un8>J=_#O^h{n zzDrgtN9%Ll`ilN1r3#*R4CYywg1-}{^Yns;K+hN^j5E7&7e|CIO6@stpJy~N+=;?U zI)*m-OhRh7X*rJ~X)+W)QnHZL>U?MQoZfKU$r96KZ*J(NRI_3zkK+)%Bk-q~>sE0c7tMq?$=JWRL?1U&-z zl~tz$JLF_rA=>>Ce)34Z5xgER1w2ciE`oSySeEX-d@6}5-6qn+Dv0yo{oO<^@JiTe zuVDEIsvcn`j^|e}%}!p@;coVz-mups=-2ZRgQpePL{Wv={AjSQTR1@c=f)gSc=%N% zFqlLfRa#=LA_(XU210erl@y;wgHP;d95@-1lH{B_hU79JP=2V|BIruee-n|h8#DA2*L1e#miIO$K5W&f^gfW+udS-!(Y4Fmw2YTYUb*Y z$C|6>@=60aWI#+5vxc1SM8oHq+kQ$r2%*y)i5?e|%|~AHu%17lJ62~l2gk4JcOe#U z>B>8UZTn32wC&bv1cRVEIY^e4HFMA4;>l3&VquWBgJ^>!nb=R8IP3&*N`1-a?i!2S z*&f5okY#=K0ydH^H*554hR?mRz_Ekv;P1!hI`(fwzJ2>FqQ%O2ro|lh&h#X~z$Tr| z#vBlBpR!!u0E9t4-WUf|oLihdU8v-l8Zs7?ef8|Jm@IFFjC8|-qAXZcdEBvFAr;%JTI&s+q_3?S9AoFp9 z(%C^BifclgJHOHiIgE5#TRe??$s2p7t&^sk zyanae#50EKbl<6Y=+XeVqAR{uzDo{nn{S*hr?(b2S6H^%GMCvd2&G|zxt)mu(;^ej zyN;ms&oq_b1V$o^rk`xGRxuEa$Ex|AC|>dJ4&NTTCFsvU^nd1f@g+_N{t83ma4Dro zX5>@>smlO|t7sS$9$q`mF`i(eUtRzQi`G-8Tr?=mG`oKjD8WP6%)^~2xWw*Rc}8Vl*5D+w(ig>g5x5C+ z7*>?($(eSEJ1e9bg^}jnG|8wcqEMD2R;Q9st-kPT>SKn10VNq@F}p`wo5S8aqlSg8 zov1NEO8jeB{OlhCWEL3PCeB>lQW@I?8c0}tB=T;)TF>a{_jzo@P65)OtQwjNO1~o| z(LyA)u}(_-dRp?Bugu%xKYL8$D!;XSYY7z8vrRlU3Dz$YfsC>_IIxg-VJCt`qu+?? zF8KHJrn?Vmu5P7V)IaE#%`u)cjcGH}rnbjJw zFZ*EW0)Ny_ilMbE-PRI2sd!G@M*L9PFeP-ypfI#Q7_f2-+lY*}B3lvAO?}z5(>QaC zvpSLjo`K20tlT}g{nY#rULc?UT0Fnl+Z6f2L?#_hqB=>ny|%`sBs!z$OJZ9Y(CMRC zj+Uym7CxKLDdY)-m0i^9Q^&0T(7jm|HtI_1sRbN??6b`kIO?AskDl)GkCW567z8jE zxfP>ykB&|?{n{#P*x{i%pOmL0yI;sTbAwlS*j(bpWJ2(Z&$xp^Yt zYC~s;E@8W%uVgy=mblj@{wk{YsA6eIy^QdeqBcIu3)EpivabUq->Bh6)_&>2~D>f!A?OSbqO zXWCjXIa=Ri%KW6kK&Zbi`>}rE+o0Fb%@Mz8@pt>Qb>^gsWeoMaEi?#c z!Km@XRJSQrWTwh9ry{Id^Zh#RTV#R@^HBt_+!V2zqZzv`F+jQgZl1RH(*OX>*x$Lr z>qs_kXAVBXz~*(|)$)w?0R4s1MQPCcb25AXDcZO4_YFa3MWiKg9LYLJX*x}PQXZ%9MHh?yEN3=Vsk6 z?vy&wAddyNj*miFrO2)2QOS1#YlNQ=G`J8>$Ht%5PWum4G1hTycer$L!igTXb3hUI z_cy<*WHf4&jp5Ak_?Ua1d)zPGgoj2&XXa7v_XrZu+++sdb#%kww9$9}G-^ltUICr3 zS4H2m+P`iaDJNA;6Eht+kfdu%%it)$D|afsZ$%aGX+%~Kl3S&*>*%>V=rLeNCCKWQ zekT2}zgttZK&&}nyUw7J?@D?U-^l#!8< z3}M_>8GGy{XBEh0?9SB@CCZ>YEf3Wb9H>YdGf!GY24096rD~`lp`+`_2V=^Z zP=RvkfKW?1RzD^-P(Q^-(cwqr{g`7YFb~M{1wn-1wh6K(SUUL@$>vbaKXkC7d}UqZ zg@=nY746F_t>W=*TjKl-%P>bvGS+X_ zbt&s(2Pv7(U_wWyEwSw(-ZOakDHiDxKI&&!Oe1w$rA?e?Bn zf-uA1Ih*TSW8+=2#80}{r}*kugzy}~$O}}|uDZ+FPDc8V+|?f3@0_fvEoV1?O?|HmB>SHs=Z%9KqB zLjG!<{~}pwkH19(0ejKw#)ybRQ6tNM|4~6ee`TZs$Q{9M7Li!U13?=6^!VF)}9h9)`4-=1uM|o4q@T0VYw6Nwg{XgQ)Zu&RxvA5LZ}`TU@vN!7w>%T$}{M znI{VJpTTLLDW4NTruv5p)g|^0s$-aY;o@K45Q+2hfm7CV)c&bs-un-8Vs9aBj>FUH z1rP-@ESDZb%&D)bHuwE&a|QUSllpda$NnH%_dSVcmI}D+o8sY8MA{p=dlr@SNZ^qD zp|KHmVbFV5clB{^Ck|3RwLt4C;qz&Bp}rYa=YsLMx%PMqOOvdl6Yu8ExsCZeBUO3c z=G#vn7&Y``Fd$fGM&V=j^(^;u(N)0y#U1m&G#-V+)e;l_v+S4qnSg59m`G?;X;dL` zag-E9#p}Zmb1yb4-+F>nnY%`p;B(R_EhlF~F4K<*qg=#BPjI`yi9h5_B|$(^0>m== z+73RC3)|8&D6l30G47l{yolTW>PD)wZ~F|%0%PE)onMPqeZ(5+;6Q3Cpk^bQVPYCs zDpIHwwHv|6BZD*^XjI{uN3JkDpKJ!A%0HVYP@xe9l9~LgVkQEsI-0ot}GZeHkv(Sj+B08)89R2|f~=5H0MZG1Lb1>Ph=Ez7ldxndm@1)fm2w!&~xBZLI85H=l_ zj>Woa{D$Yi%kiA89?QJ=wJ@n28i5Ba23mj5DIlM4^=(LLzSQ;RpM>G>pC8)JtvwY8>NH^no!*+tO8o@Yz&DKVqA&q$G%y z76TQF;hl_lfhV4U&n^D7xj+BivZx5&cC(|YfMh-WC>Bp?46T3AtexF-X#4f5=CpeF za{*Ux*J~I6FsRyYuD*i1_8ovS2!h=oO?9{F!}<4`gRW8Zh|jwolLVYbJHAn!lv_-a zq0YcIza>=}FDZHlcVY%WGN`KkWZn69&!M3ikQ==C`Cgm(5|sX_$7lcMJGJgL^h7+R zw8694Mq|j$%h9OKe?=j)3g}D+vj>Oe#TU?MfIlYwGDL_bjY4H zKBHY3(O`|AELUpdFRs^M9i0dnkoGCx{qyW#bNm#FkU_Y>+#9IJ@dd&gZJ{N3=&yZP zhT21LC%TV@Q6pC7jhGX62JasP6EJx*aPs+UupeQl^Bk<=)fFe`0-sQ!kA~*GV&?Z- znd`%OWXiYVi{+nmLt{1MOrNmZ2F3$?BV_${77|gPxvRMTB`D!jja;qdkzKf6(Gp)o zq0Z;rKcd$bCQY={gUK=@DRuYIIgtOnQ}cG__FMDTs(x_@&RUMZnH3yZUH5a*nv1$R z7@&N!@~}OO^C5D64SpO_b1Crp%fa7WHZ7j%pfeW{j!Vdp?NJ47Mf9T7vF`Cad=zzD zi`%fU@OCrxpkeM2d=OEVMfYIX- zC{gYtUS1Ls!<;_a=;jK_`4+%=*@b@GePoXk+E98@&1F*hxS(!Nxbw&OYYuAp z0_iS^FE6$R8e^Zvtso#qRcc@8o1V{HDdpY4^bA$Ddoy`pnAO1)w%Px~AT00mr;V?c zF`X7|^!>ghl5jXrp#`vuRSgh?l31?L7w{pN*l01%=(MoXV`UT1%hfZPDlixXAc^bn zdRu}_X6%^>{f!jqpp5dqUeKj}&owY8_3H;?khs{pO2zG{tJyt4-_G!JGQkbwrS7bz zI1#B{0`BAb(Vf}H^s|L8v{J`B{Ilsfn~{d2>Aq5Z=?UGvHkPdWD*Rn#YRH`GuJXEt zh;W3Y#oKAzy=t0$aF|~Ab_m&yC7tbIY2ICFXdYD-!jcVv^wzZ(9G9C<2o-l$+O$!N z?}mtTKQ-74_e4wTahayMvqYe&rfNY4U9AI}(gydY2pS2pKbq3gDgOVE^i=_Ec1^cm z3&kzCO9*bo9SQ^pZY>n|V#VEyC%8*#p-7S9F2&v5o#0a3_2fPOZF2G0-m_=c%v!4_ z&Nc)`=^+sc%AMXEEMJ|RVZytXT#sZc<{MY&T3sdJ_GA)gV}$MJ1RfFiX|AEQC#sy? zbNM!LM=xESMdozthdAdLKApx{^^fYg&s;+i2>me0R@PxZdo7cKIMS zT5&q#bEi!aSu>>!1_4@M6s}(G81_ekiWW`Z2GBpthHjn=+NV#Ji1=YYh1U;WNTf10 z>SD_CM6dHISCUZqA=z$>Zc3V-zRMAtk2SmQ;S6p~mJt@A)Sz|PjtGndnenxSn9|#R z*rR}wm&wBm{XIk*gS*+nf4MVs;|WWB_MV;hP!V{0rrP z;pv~ts@!P|T#v+*P&Ua18MIN3Yi;ED<4{K`4;PZO+wuMne}9sW6bWxvK5e$ipJ}MB z6?z*wVYhH^pq6^pj@tiN0^5(!{O{23X(FI$hHFm^e-I+#9fwd$ezP$AnZQwT$jfER zq_&(nd2*iSpAK}$dRWHiZQZHiN@L6aI0lKWu@0M;>Q;HJRgyZMUr$sX-oqX+WvdTD zXS-Z$Y49y|;yFlc5(3Sc|DpfkJ3~j4nhuf_wLcnT`TA5}^F9D?@xY$l`RIrDfMRnn z(dy8-t6dq_TP4Z30M~jniICH5`M{qr4MU^;_ZXk7^6m@N$0$g++xZt0(B~e^ofb64 zn8Cd;QB543Il7x_l++J3Tnv^!C&=8N@2Vdj+P93f73s~G!sDqX-xLXx@-IhsjeCfP z8g*{&5KK13F2rIe;180`;crs1z6`?+9XXoF<6QarkUB11Z!k&7+ZnHnu;WG$()(Et8!XjXQa|jk9RQS z_g8BcUWP$e{ztkk^o+=OFjhAt5q${Q=7Rvv~`AcJG(!z3`2d#%~c- zTC3~(tVvD%JKD<9{Z**?ibVaJb&oPk-hVss0c*yQ)@eLZ3P3qheNU-*{2;IDEx+Tq zvF#gk_&8Vp_G|-HbBpV<*sgQ)RZx2_XDcmiJD=9J-{izZTlR9MBhmV1Q0!}69Fb{* z^F!Rh9lUqQ;QkXUQYn$ISq%k}T5?(^s)W6S^y>wqyuQKa@d-W-`#nlU^6nlddG`Ni zsQky=Po$Bn5QcaAn@sybYkSvD$eCZTrI(4-HYtj!#X3^cBHSF*&T-1KvZDl>o}MS2 zMoe`w38=VsEPFPep6bQ!mF&Oq=i}(bJ-mAqGA0bF{EOH`2gq)v^nRqW9%oa0i%9)q zBLB-?kGv(YC3rg|AoEI74`**^m-4s3EC^6fdt_GCsiz!DIMtzroq@hfd3`@}Y(rzc zecM*spwVMEMx(s1DZlSXjNG8lcqN!{ivBk!N?&r%FRqh3y1WG3#-w-biy(u>43f-B zQhu8wW|Ka2>-B8^*~>9C_>bVuUQcbN>cY3pN9q026X9Xop53sN%YOD<0q6R>Ux?CH zSOp3CKeE`r4XP%qjj=`D_a5Sn9A)M#H(g9O=3Zk<7k{BKr=G_N=8~v?H!Wcw zKGY^>{fU+InKfs=k2$0J_$eWiJcOS9Pv<^Kw5E!v`4pVWFA#>+{SVXkeT@!P+q#V( z;A+JBhbP}B>M8h`$&@QOq1HWZ<+508D6ixZYg|WF*F9@DJkxjbJyG}9j1JL zm5$W0r@s#K!w_eGK)AAGC^*c`$q$r88%`2-dDzhJ|39JxaAWu27hWd?&a&Yob$OEz zk`hTO&lQwxN`q|yjse*B39liBf#bZl!srWEQY`ynVnhnSc@p!1+o9`fs+xJFchmAG z*Z4_bYg*R(P61|Hy2rOPa;f^;f}NgwmP$DKBaBz;mud(jFX!Un7 z`(Jk2O+FSco7P-)&~jn!_0PH_`;Gvb$d^o_UfwxQejy8MIjvKf+WA^(s2`oPPNQvY zM{yAwyRoeIJJrUH!o_?JZg>(&fgNqRb0}R&_k0ZE)rw5##4UZR{yF#I zhH@n}Hbf?Co3c#tnX+J&Fb(3O60I09MdP3|*Q!%VcRB?^Rp{|{jueoR{8KvVCz*cI zbky1k;g*HHFm6+VWDa&+iXP@=gr@!&u3Nf4N?ucMIQ1?`|7PV^fhOqvZ*0%9Xgxc* z?0@)i37H}O#>v51=@UyN+@|u*W5gF6a$7hC&!yQXHkIl>$6Ad z8JIw?hye31Ynw2g_kVwt4 zIRB~6b%bBnQRUl*uSvUUM_JjOktAOfE{A1Q52@t?d?YiTTzK*7j_upZYTLX@k3_=i zhh$W*sQ>G3lmt?Sfb4fburtf~2MIb^)r=r%8q6HPiJV!M_)ng{p zuN?@E3iq_-k8v4~E;_&Nu(N!X1oAt-DCq!A^_LvBGl8(-k2a>|3sgrI5_%iYzJwmQ z{;}<5N>)8dGUE_pch%f?^Wh(}<6aW)I5Fa=f*9X}+R_%0y7=A&GDnZi_Id?s1!ES0w}eXv~G=m{$Lz%%XKU(ZTv=j3ST(M|iUhyUoU zO{*I3NDG5DgtNM)-gL=I-)XrO&?v^!MZBc~ESX5Ns(1p0CN_lN%*0}v+Vh{G`;bj@ z4S;$MEQp$u2_N#_BIe-P0R3`v8`BtG=UYFN-8GeUILP(kSZm32pqVaa-{6Wm%dI3LA@L6`$+2SBs2HBa8THEY6ANX4Ju+ z*0$|48lz|>_xnYZHczUp>=*>-EWFeC7e_S}(InA^PsPDUe7LFgq;))yD7N)(e+_XW z%bA{-+MtN-kKH^Q>+A@=_(yKlv?gkM#)FUjY0)?W8sQIE^DD(d67`JjbXI&@y}CJ5 zOz{~`gx%KW73nB#og8P+vbR}1hE^WF3?gay?nyk(^pa1!Ab@F>31=)ZZ^h8E6r5Wb z|M3tgiCaZfp0@b`wN#KK?`O(x_{M<}W1{(3w@xuEN2G^1tjL~? zUS&1q-U3v#&vjn5wQ%-`_^NZaU)UBjrtH~|Y#Z{r5R|$BMV#Ih;wQ1GhZ!fz zgo9hk?U$^~pwPU$`w+c`BTIvXpIMRi(`{X+f~$62X!!Pe%L|(q-m5pyqH?hIl-&sa#wWCyszv^^4KL z_@7w_u23JYkanI(f&rArTzTC0sctPTgKM}tz{*Rs$c4WEjo;2PJva95U~)ABO?@%L`)FSArY6cm+877W5kWHX#$B&>KLdr4)q8kWAeX0Vob zB}oAUSfXq=POkJKsB6oTEdvLg{q2l$K4qwm31RvBJ1g#L7xTkt1H<5_o$QIBjwF%b zlH2YAv;!IBX5vfYm%BgI4FbRGrl&RGN=7JfuE02*Mt^03$oV_0z@8|Y4bx%O-ZFdR zyexlQ?NpF7;N7h$-u(KL`kz_Cf#!i|utDbNtzc51uHSh>&zqeBx|0dW*lnW`7k$_f z5r4APfp(3vitQTv^T9iMG)9uUyCqJ#T4?%~7* zF2)B$GF3hD4sraY*9>igtZf#AP6nQqpfpN4Kw#gLU09zm9$tMUPG1C=+E2 zP=cT7Us!Qh8W(GZ4+7$3jk~U<^Zi-5na{IP#!sz;vwSjcvN^>8OoT4sW}hZV&~~Io zB*}zwG0*&de^)siSK0g8<$o=OH83A=esSEK@H z#c}Fc&XSkLuXwP%>)x{og2uM^8-1P62g6=<#4!b{&P}TM2ripHxUrJt*ZjT?)q(KD*>Bj_+#Y?@MxNyh-x1OR^)dEtUY@Z!n&m z45*VY9DQfj`AUx{Td6x0!{v2aD9MAXr45I$0qZf4h{!!JcupkL)!66CvT0F=``Sit zVHHUMOiN6Nt0tf#X2hUvk2(jU>=+X9TNm6RUISrq!wdez;1cWBx-7%{8j#u(?BXg<02uPNvYGx zpq=|7tey6&2_uAxnQn9gth9hP_l0i~_R#?)m!ze0r;z(0XVpjTQb0%OVh^bEv11OJt!Z8v=Q-C{dEY}Eu~@m)CYXa!50I8 zsasrWvYA>Ne?idDB5xn{Q?c-Os#_?I=GTPYVx3>-8WKK6LB?l2UxPZ*4jB zW!-M?zdtq^tcU)<0l|;>ve)FJ6)+cDnfUMpC+EWwgVR-lSZq!D5!0G#(7^deh zzc+g}6s0qI9uU1O=2|xvzt-{V)!;6Kbzpv;D)j@Fp}(^?N*0r`k`B|=f?mh-GeRaK zs~cIb1i(_5vHeHq1i%HOLFUT-9g+}YtZqEj-2fLH@`phv0PPzbhe{~Md{0Kl>OCL; zc630+CQ}BI7_}L~;xKu5BlCI6%F78kmdmC_?Oli?(Rc()n5+@8rfS^YoId!(nn!8s z5V4~A&|c>QIS0QzyspJ7pMTyx!OV=aub}p&*2Lip$JXlWFFKCmjtEYvlAX&%$@km1Sq}n z^qrK=bvI4!y_C-iwVy%iDO=Dr%PGW{H1w`2_PZA~5W&uS03sGvReSnjQkYz|yDs<`X}iEz1%Hr4 zmj!A#nYw&bP}`$3yP&}bN-)UpJ(deB=enb9?DRzNX>Z>&9Y7@o!j~^|_bs`eX#Xf^ z^O&W!_cw&_lZppkI*e!IWUEHQ>E$0#_&TnJ*H{t4=qMB^v$~_0px0X)_(Y; zjOx0b8_eL_aJEg)Z{FY@M(>-3iMN_j-bUdvp_?O7}+ zF$q7$Fnc1aom`@GmV3oATOH%iqjPkLibkNy8P}1bUk)1($K|N}X&PQGMW#hXeqoG| zWLLGSfmr!`R%(g+ME#&|d;A8=D|+4^66hSb#lwoM0LE2<34CVHEW{>5Z{R-V4>-QY zw27-@foJo^J6STyCr|1lra2DKG}V)XpOM&HP#0eqBsx7Ng%DD3c-*->;Vf5G!5wUg z(4r?+ghx(;J_qn)V+j3E4oB3eKcsG{CM^PjBW#i%X}1f2yA#Y~xQFb$=NASVgT*cL zdwF%`r1JGFuf6LhcAU)t+h-6l6${Z^XnfmGkP|30ENW241Ld+8ieV4h#haJz!_Im zY{`Wk5@L9zA&7t5{Z^n6H4&ofg6t8X?3-K>-rVHRZ~T5? zYRhSMZS2j?h2tJ_B(ciB(gt2(Xtr$8sK@`F{gW@RF%SvNpJS&VsV@$wVT_NhB!T|n ziZQY95U)&Z;iLPrlNElRO$CUeW_%AARO*#BuJ#OSOA27;K$)Lg9PqF?LN47EK>nyc z@4*0DxG3My=fsG@So-2hgd6U)U=sBing-!QtVel0R(?h7g(D-}1P~)eCTp^4p|LE1 z#(4^tt+n3M54DUIDZ2ksn1kgK3tT4Qg$pPDL*ABE8(Wje9u&m06V1%2?0u63+Kwa3452z6&Z<`2=g}RLgq9JLnxn&4$Gr@4`AzmBO$tU z=SX{@!u_WhnpCWI`LCcjsMvw-qV>N^&ZNf0^pG9Ud*BssG-UnYDB%}zBc|Ej+X1?A z9K=I0Yco#Q)_>Mh#w}Q$o{ig+ef*`=;G&@oT}};A>#Ua94}$37Ou~` z{a^!1trDnHAlIC42>z{zOTG#d&4z$z48dVbG731?{&ciC7`RFpZ;gT2*tAMcg6Is zn+r|b_2!hM;}S(z(w~(6nd|Ep?QixIk>Zm7L|+w*3Lv28qELu3cC8J8*9qrdSsbwe zVb)g?`{mmet~K$EkO4KT4m;`#*8(fI(KwvpafGO;qE*+hQSB!O4`3>q{qNgH(ns0< za4Wnw1sHO^`+AGFAO-GT`I0f@AO>;gJMOz6lC_^RV=9ObSQXvQw;p z_%YLCtrq)_cRtyfr_PE%cy62th{Fj{i#Iz0`n-V-2E8MFZ@CM1KYN{`{JbZ~=-u0S zcOR|dw+bg|@4R;q@q2ZPJAzM0ElrS{oaD?jxh9Z3^LpZS&hA{xV%#?u>`iMmhj2X@ zmW{VR0jJOxrH@kJ=2Hkr5n+R1Ni@oGFgBZdw>X_nL=yv*1sl=2$WtlTjJvz=CbT3@ zsY_Y02XS4};o$+ytt68Wfq|Mw%i@AW!R61<>Z&T@m?ov}Czb8OHhfp}X0-{)ir&u` zcAXe;e1(``K|oL7UdNliJ4eaj9yxRhon+OxvJ>Me%*x59>|OYx?f^thUeA^%5e{^= zX7<0X2%B8#4nu_TgwWZQ^sXO5((kz}fU89OpzL|8&e)SeIvX_wng^Sh#W ziTY)n-K_eIa5Vi`fRD7<<;sPO*a1^I=zb|`*@Fsko#T$0gtFp(tTCavK20~oW&TC2 zT8RmGRN=j+XZG8VE6=ouAiYBZP1ZJV*4&aU{RsZ^PCkeq5LRwsFKGQP{ zS7qqG%`5^r@Eg=ww9&Xbz^+C@8u=u*nS6=b!{w_FDa2~irbS&$$V>>8d_0p7 zY8S!V{>mzGffL}ZPYdI7smSz1@YpRFe|9ie6ErV*oxLG@bXrnyTL{2n5T#4(Lk(np zFmU|fp7^lSlm7mgMwteVr;tD2u8N<)WzKwqZkf#BLCAp6ks+#5DmI?v=W#TxDmmK~@x9O2kJYZ0Ub6Uuic%x^90up60qSGDQ+CZogyfs3VIam7inyJ)Wavpy)>qEx$z zw}q8%GqeBphOI?+)GLXd?DT}McBnaOJicbPKE^uc`gQzIbt+%MN(9lZ_?Da7h>FI! zLZFdMharTQkiC(myts_cOp6gbWW;GugoUbTwUDr<8*kjiM&afFDFxptiW8C9YoTp?zc!MZ?c*P`du7MMdKr;&Qc``< z9?sNwC~9v+KtF}q7bI5<+ckdSE>D55^f#9C5rV@tBB1=)e$1CBbTdP?GdV3wL;jQK zYR+?-lOy>pJ?CRw0KPM^#TJ3{7;#OL7->^G)xsqgBTPOaBQaso%x~i~GBOm*UOeDq z;jv)X2HdD_ZckU34^2KCJukocd^pnIHV8yxr>37Ko~{lVJ_`J|9#cjGo%leRSYjM= z{<8k}dpy)DdWft7Zf%igjsd$H=K8XWM)QqzEBv|RcHdAx<9A-)s#f>Edv~D5l;uk&WD36vYtf( zqCRs9yMJ5xZA-Oa3vc_zH=7U&2A^%}v@m{If;Qybh-=ZKBqIY_7G9+6?!A&fK4Z09 zm7IEQOTV#q52DNg0b8rrfk znRM@t+wd0rdp*^O^tl!cOw7%Rr#@H8wU|L$aUDleeepf^`)s{&U8(D1Tv*TVUwsVS zUD*+o5mlbH6!&7u@fxUVsQ%ss^q+*Kfdl;`sEMZhuwvbk9KD}^C-$OJ7E<)T<>Kqi zye4w0LBLOiMjBFYTwe8~vfIyUysMG(} z39XOQMK}Zj4e*L3dU|VwaR(pqxIw^RPC;3;W(alZKcZejO1At^OCasK7~0&B9%RU&C5T1C(qK;FNgNpp5b4{F%76GIz1k=_iNYT{qK` zi{)w52k9$+5?&`|Tms}`F9;YpT)VwkjIltB>%1tna0W93F1q(eFu5ay;edMtb9tV~ zGALG^4uJlf;fQ^+u7y{bmIJh$LiGQJ~R3|QmlNTzm>1XWxQac7)2 zp#K}Z%WwO50lL1Yf^hkM*gA;C-Rk?IJMhOwL$U%F=C#Rc1e+hz9wLz_-OfXI3PpoK z7p1g^><=!6M-g^7_Rw+xmSgD|hTMO0M2Gz zkW?KHMa!J=qtg_VC&1@sqUG0I2h{jI@qbv1pht&6oqS=2ZBi}Ir!?pH@=4tJYN)mC z4Z`Ge<*<*}G+%)c;OI(_G4Xje^$NqG_Y4UpJI7lb9nzpuTjh|85C~rWH4RwU$_Cc^GgD|S>c4iy z@fL1unU3ekMEFiVeH~2~$&H7wMBb|1sL9h@vaK95aG%knHN4W(q%pNG%0 zNsp4ZZC${yVFQ-z12XjneJtrus{1_QSRRzUh({%Oe)xlyA8H+f#--#UlBIE~=0o-F zPA2P(j@VGX;Xc_?E|dWT{DP`$lu%t@ac4EgtS>K?$V=THY`ry*P=NwuMZEp~jwj2C zjTK}7Avf(h+0-M2oRCqD@UA+C$Lr z+xI%Vp-$}I64Dh%)}dfA2Jg?;;S~WiU1>Y5lr(JDEy;nj6tB6#QXjSvhXk3 zfN=|hXJm;dZ?+qn`aGd+$w9=53g}caE11W7=6M>9oH-n~J^b|F2dCd!Q=>;kk5z<# zLrDVqqH>Q@KhF5M08>Id7Knapx z`lOvddl)OrZLmZ@S9*XO`N0XuL*DYa%B1a1UhrP15qJ6J=?yQVN@85dzmql;Y`fVr z8dMp?BHm!N8r!<~$~afc?uIEu)~u2KOqErxj~(7~XnptnX14^b@#!1M7-3L2-^>a1 za2zJnMU7zd9()6s;>vt9Dm)Dxm5PMe8p=uwllwg)ZH^QFc zSUb%ZB@2+=k~t9WJ{$@oxto{nb^A)nQZ!|iY(?uJ9WBz}D-3-233(p0mp?%W`@RRc zeEpb+aJFpBJTuLdgQ%!}XyIbl9E~ja7jFKNYOp}HS(qQi0Rk3?tjE=9iR2W2V&`%o z%tUy1CB(;n>&Yj~&(8-+iOI7ZH}laYlE1zp{Qw9i^lqGgkKQeeqGl(ooA~h<0!1Tpm>22CP z64AZ?QBi(P2e7|)_)hu{-)TD@>S%b8hHK~Iv?$Z2nLzFYP$8Ki)y^TFDmH)CyTi{N|1)o$r++ET&))8x>pc95UJ(2Je;;Zq!{zehp*P}r=w(c@rz8mt z6n54!>^`~Dh?%&Mp)vpq2+q>Ga7R$< zb&ID1hI@4l@j$>Ali{%L@ZA^M5ayE>JeT)gxMrNGC zm6#M7vCvBn%XWV_hc+nkK~+`CrTSrc&npbfH=JC;waDY{|Cb#Eq?UCpmaqnVpukrE zA8r9`uMr`;g_H2uCfQ7mgKmr7p zQ|M&p2PcJ=Lg~miEwEw8;Sycw4K0D9;a;G5ABjWku%bs=?@iW)u=RDjh|AoVV#JAS zoyxK0Bg5j=5x@#mt{mT-e>bX(jFNF-+)LZD^$#I_xfu#Y&ggPH-amlVL<>iTES2*y|#VP`q*Ql)5DHFaSScMOLWtgssKLRi!Qf zZW7th!TRvgEYYu2Rkiw#Mv%bPP@WzHH;(AU&~M$p)(0fc!=9+x;m;m>@3PbU9>16V zNDD?p>vz;bIHf&BqT|wvns4D-J^X>^6kJF;;sQ8I^;91cc>nw1bM0$ehwG?j{159O z-4Si3Hdm(XF#X4op6o@BWMsa4%rMk~5-H8|alR^};X&}vX#HVq@i*J$^(&kWn+#BhjM&cdC=*#XEvzy!bWYJg%- zpV-?~>P#a?s;_P5Q#7gU3uOPI5wU=Bz10jF;+on&$*=PIm}Y!YA;N@N->@a4(E$SS zWU`#aZ_ItKeXMeIisGUC*t!q>sUOwZ=>V@heIN?~f6*tbK=Q2I5ZjLR$lB6E^|dKQ zYE&G@NAy#%1+X|yUziw9WPf)A7HmK&;&h_095Bl+VB!8mDccreWJ7l|dK61Os|*>l zjRm}U)uMk(GrcV!$Y|Mz_Z1)bP72tnQ_mq|#yIB1u|%oZ&j!*YUV$40HiR^fD^ zApU1Ugc0i@TZNJ^oEmdsYT==|wC`c5r?zu@Bi(CiOI;wza@moEf~Uolb_!#U+K$8m z2_p#3_p9C}xqmLX96F|FM6)KUWnmN&D~9z(?yHXy{z7-(<91Wr_2{o|vY#l0TIO}e z`6t->d~nc$#V!q_PY)1VI>Vg|Ul@fIQTy#Ih~ZYOt)UgOus{^m+edUt!u!<5yBvJ? ztxc5a0G>E))>c{$MxPVo6E$ekR@dH%qxeC+YxXw#u@?s<_B+x5^X|zqz?cV9{|$XQ zFgmQUhFhuK*fVswV!|}WB?63v@`IPwXHe}ABJ{u7iN%BoFAl^Wq=fj5RvEFbMr7dH z9yJG*m%GOM|3Wst3r2g0A4sjf5Wljl<(dG3;F&x0V2H)A(|x;pZ*w`#qcOBP!e@te z@7K-tr`TU|BdRCy&?(&L_gT}D;Z;l$+nohLL&x;ayQ<$Quz{3S|HGx|3ghQ9!-n-_ zoSm)gKj;350PhZN4Wntz@qQ+p>6dADaY5>Lu>j8enyZ=&9VsMvSH^Y4hAP~2Z(87! ztgcu2wxTG`AKyJ?@rBJILeY63Hv&wE-|~*)Y!P7ilclYWDaO9TBnaEs;XMn%9Ad0WTUNXmKA*+g->>R&hkrjbf=s4H`El(lD3#4l&CdV|vC z%gGe~XgVmZtRARM5(UL$p7OAZpY1Hn*v8 zaK0wtizv}8bPCy7TlSEFgiZ$pn zav>vm7{2?f*QeeYn@5GO(Irm|%08z|-Cw2~VPg`U4}3YRkhw}yije!4nbSj#e;%PR zc5K*LP2Gi6r?$*VL0ngg2=hRKc_NILZny@O^QRa>h99)!7N&A=-CNVAp>F2cSA^^o z2+rB}Vp#zfyBC3yp%)(%O>c{cU9Dt#?One6e7CB1JhBG+DJgF>uYn00xXy&u4(H7~ zHhCKkEMIY-++?Rs#e465YTP@2HJ!-6|19)M@^x@EMqHGsMDRf-6#Nl>d$}oDxYdME zHnLUZNh}@We-*OB;Pf@+yde&IaOV7CJk(#`n>V@nha7VLniLJ#&6l(0JyF}fr_c-q ze_`fj(bIB%a8(L<__D8q<8n)4UB2@pJsz?dz_0;4JR3@=s?ARqw)}lTN?d}??=BeJ z?Wn}02LbQeMQH3hS(=FUF!6Uizxk(5%^eQbzWVfnxvotRHy*dsV6zxacX3RA`sZ9; zg;d4}AvJjvNsO;C#QDWVxW-fVQQxE~7EzJVqGk`$MS=7AeW;Z}hDaY$Y69DLJx9>7 zV0S|_Y0)Dka96(`A_OK-*;nB>WX@05Dv)J>_m31P6yIPK`2-OF;M-hhF^3#w63PpsBuL=|!F7^j__MD%EDr`Ni>CP( zv+gABl>DOU0Jl>Pl|wl(UIy25rvtdcy*Z)p+Fmtro67SD@O4)hRQ*rij9^|<34IH7 zzX%Ke|2U4)%rnntr%&te9~r#4jo1D=Toz=2QIjeTnCJUx-co`zA&{f9)YEf5x_XMF zJUo2BWBb!0$dalL6)-K?bEtrC5cT)r=;5%9O?s{l)B}zc6`1dggJXovW^q29LVFI-kpmITUne zGG|sAg;Hy85uIm4;NgCSVVlbzk^{S!FG!&AbO{{Yvr(AN);u7e_A?Zo|FgCqk-p31u?LnDx%Pm-MO;oR`fS zJW4Bm71j`NvLzGas)cqi*6w$&Lw&0-D*_E_W7m+U0UE8Rcl+%U7Un2;Bz*z{agqeQ zwksreq~ElJ5m2aUL`69}iAhH|>EY179-n)FDSX%0#PDZhJVYxR`aZ9Owu$QVyxNL2 zzTm-W$H#w?OudwdT)$}x$$)Det>M?f@=Y2k`|h|8?>T6^#i-dw(}XoedRbw6ijVY2F~RxO1UIOSLFhZAx|+ z)tTkHFp7$6_qcC@Ee#rd25C~p7-j@e&h(@yzYkog;zly1o@X#28SZ-E; zwo}d}ov(%FVN16Q5nyVmTDx@zd1?s~65U=b`#Pg$hHXALw^t&%x_YGGNji>ME>WPfmqgVgHDRM zlRDz+!7|3;z&Ms9ek4I0BPti=!AHh*K8fIX=ytIGuvcy3BLst!>Ot*YzXG8V6UH1? zVudp)T+7KL?O=fj{(0Y>xQOlt0b*zI(msi+bLMeN5MlovLo<|$YzYjeUr`g(mW>BT*>S^*&cf+l>ia@ySEkNq* z{|abH^u+$yAD?Q@hYYRgggdc9ya+!nQKdJ^csfB5C4Jb|**d9HmCH#DzYisEeMAvy zRXLI4<}uol2st88oup&;mbRhSXm^z++<_!7xpLQp2ytb^e{SUuufTFQ!haJnzD=Qo z0Nw-O-^X)a&xRijC)qg^+IAf)mz?BIvt^7fZvpfA{}uz`B|4{Fx@NohGW_XDJWhL| ztA~z0=XY_v`;1?l>hga*n7iiw_}e86pi9tPz-5;cbf!`iqb^WlxAYv8LOWkT;(mnQ zjUuK^>fOvRV99`g>gms@ZGN)TID=%3cDWT)L-gSYJU^%f+k9f`7rW~$lyuA{%Z&2r z+WiN^4GVwCar-lWTnOmvuVj9wyXI)Qx+`~CkQyyzVCc4s>~6H)h}-KBB9)>L)nlN@4Xqn@Z$V& z2iKW&1XAoyAyM)GQ2-GGRxPmfpx7G;n~@J>`h1~tkHOT|!3 zLam+mH}illv>d)bOZ{e=KQ&Zs_RzwDqx-qe&(Kz=DMO)4x zIzSBn4K&+0B~E_sO2iBFt6Py-xR&a4oxBj4B})$@uH=8dy(2u$@&n1lyBo_!?z0`e z^JhXh=JWZY8XTPO__?TX{!wd3W8Oc`_z=fkdyCckNVF)G?In{pT0l(1c|k50MJ;py zntn#C*1r63R)@}7>F2jqVPIm3Kb%Q-SgB!m+?+`so2|qNbM9`^K+!&cD6`XHD>?%fgqlhFs6+ zYg2D|5p6G*kJ3Q=8x`9aq5D>3u@`%rE2PF)F$$Q$JPK)|Z+MyAU=7k~k$V{~46@ei zWgsT07b@Y98Qlf7(&I9ayp~E`;tWE>!puWKvCLeD!kxbhfafAAY2jdUZc%SU*)HD8 zdy-ffz)MPS-ZN$W{2_S0iL%v>H3-XYS@(^CW5u2^mffGP^D~Ds$2bi<&RfU4JAEGN z5HOA!yR=}FF{x>@IR-{|nLOUK+slIfKax*eAfWWyzf3EjILka1GPMAbGHkZKqqP_X z!9P+_+f3&&`D{d!(5TvViHPYQl7i5O{mUq-b}=1_FO$Z+%bO*~c+-EhX+dy$&TnND zE=?=rvhnb-1BT{Xb1YBFh*Q2Qu`+WDSu857G6dM(JW)_AHW3I8S&8BK<_fmA}N)_Ej6lKoGcL4Do?=|c2 z>pt8{UcIn)lVy3m3ofPIm<{IdjLLLk$9*UV?l({@*YPRLO*(j2bCEfoa>FG3aybgU zCC7q$R4;+Xi0DYWtm9!vkHxIENRMa+ORm1W#9RmuTPXBTugjl^=0LyoNp^DvX>cx+ zd0jU^u;~h()+26ZUqu%YO+a7!b6hXItNunWQ2on$pX{lGVeUI=2Dc&b(szYx? zxwRtOlmQ^c2kb0=qf3jj(#TA3>MQw7RE(v`66w(zL9u=Mr;`q#k!63nO50E&Oh+J| zn$qqcXAkLt-t~MTZDW~I_1PGBq#lnvZ7x907k~Qw`nP;pqi7_Sxr?6vaicK4-5-=p zjG(dW(DcVcDR1tnS9jVhWT!?6D%qwu!`=TMdv6&PSJZ5a#;_2iaVIqH5Tg`OY}!j{EL-Ki>bhe$q`Z+qjC=RwF4jdk#U;4K${4&J367w(XfY3)9^4YI=}l!~Hx#+RLxM~~7wld$stW=Ik2(m* zs%!Z1H1ROhRMAw$dUmgt{*YJ}ak#=g3Rp7F}W92yLXE{nD$ZqU}o+ z1~Blsk_X3A&03yD4aY3q9td7q>2?t{3=XIfK%dcZ{ z$^=V}Vc#(O@BnM~8aeLQ{LZIKQ2}a?-z!on@d9S$o)BoZHsi_*EN4&y?GX^R;D016i^C08fgjP>UK);g5#y1vejKziJ%m)9e$jQxG!Um`%a9bd0L_-G- z^-s?GKnclKk=YtOHghlR4J%cK(%6wNDu~6ci%StC4gb(6> zwAACypC<`pV*}{!Z-dwxcIgcI*A*)+H$@VU%Jn^`Sm7Ru*cQt>+Gh}2nhr59B*9+m zN8W!9P3Wxpyfo@@BMJjY>(`CsqwJ z{YxDP(JG8XZ)Xy#C+e-_VUEr8ym6VM^qgaNxF9c=`*}^bg|e)kwEBB79LGW9PR}cF zWg-@f1GaA4cR=7eA@te$Gx|1_FBZKrl(zkCBQyQBiw2L z^}|87Z+n*TLz^^~A#YC@F7ebOP5e2kg>7o*Pa`YE-Yn5=(~0kLhmL+4tEiw-=a7BEg7rnB(ZgI>lC14(^AwN2&oci_jANf=i@l=sxmmm~0|G7TQSK;*;_(w{5G4|9IfDzd0jD;w+zt_8Ro4^rS>yq=z66AXH zyOr(e$qd3adEpnFC?b7xKn0@19Z%>)`;HUrpj_o5z;F{_{GJA6DLQ#f_=X%fHBXa} z=9x58wsAE?H+#4`he-Vz4{`>`SMUzX;~y46*u`(fSgv(r!qE$&9Lrurz?GUW*E_=6 zNpTEg{^A~P1)rbbeW_t4hV5V9kg2E@w@dG2S|!~3?Lfz*Fagp56Gnq*59W1G?B>_( zn}cB5=i=lfM;;`Yzpy6OL3qG89!QVy#*GB}dVDUK>|BCZSZ{rrU0yEy9(NQ6!gWXf zcmw=RqzB0I2jmz!mvH>`?MU$>9b~fOg{3sX)1aKwavMc8M4id6Gr4d05Rheq^QrU$ z@k6lVezA&Bk|a34B1=54#88K!PasNLM}?qVog;x{WbnPKE09Dx6F$n0@?FDbp+YpxhuKWJ>6w-dlcII9X|(|t~*^kgAH>v=Dl zejYS~#qQVZ7RHmM(DlPGYyFvs$)c>U&r_Ar<256ue}wC?YxUCSPvBR(Qw#NTGKHYE?&Q_=2- zkl8yRCS4{DMJ}&0_pF&1C*H#biSg8^y6U73C$08{Jc=@X^_fFSu7^e_X{@#4mzajK zgU8NVB&hM!tVnOq8$uMSd(*?I6n~}kXgH&bcd#LTihPli%APPE)@|@*muq!bxLv#k z0@y^^GhWYI0YQ;GcXek%^Zi2aq%z0r?MSgf9$RA$8C&AOIldmrOW_Z!9D*}Ar!Cw?Akl$>S(>8_Eda|}xPH*_!x6{Myqyy{rLv@;vw|Z&@Co=xzh1vinNXz& zT*p@{fZ_>C5Gk~D`>sNXAE2voG$79zN>=qM3PLZXaB|n5_pEiX13*Hbv1o0A%Vewn zibyOT9E-1bhT`!^EW2~38BE0(Klsl&`2PJhQV)J6@j~2f98b!E2?@hR)!CX^5Mm)Db-GG(wtXQk z?C=No9MN8{`CD=z(r77{m$SW>za8FVevhc)99;ixD*wJBTd_BWcF-s+)6#ciUVw!H zFTUMLC=*?DW0^_lLDXwd;H5^~Y2wj93j-ZqPC__GUUujYgRPo43)KKte;l#z)~jLM zbk3I~55%=20PzoQXjtu+xIml`j{xptCtedySt6Do6ruxICU?Gu=46#54eT3UqSE&@ zd!vepuy26HkVhO69i?||uyt2nSL!%ym6#N?#IyJ8J9m?|(yVa^hdFxBB<|BS+;#D!}Mh&wsF4?=Tj-rgYc;Es3do$Cbq;Grk-nU;f8PX|YK{sS*a3g3(Zq{Krj zbZ*t&HcGhVo=@D5HnX<;cG|Z3pFOmzr1ol9g26R@4BHcxb%m2w2Ht1b1a?DLzZekI z2kq?yN%f6B_WI-WPQ&LotSUWsG(O6*d4yTqbK`{572GwfOT^Njl7D;@Tr%Zn+H|~T zuBD~8Zl_19zU_T$1~O}ny7S<%X^fHMjWv}oi?JOD62?|IAvo%FtTJJ{PCB6hnRIVD zq;ANLiF_SgME1{RNIfYMChH`+EB=XoSx)KO;bVtuanUmlrX+7?5~{|)KL$ZjS$W7r ziZHYP@j9r(X`cyV{khL@f>F~qpSf8Ky1+qVP+>ao-YV|Q&3>-ch45S#2L2I|Yuwin zRae!uICNG0xWM2KEYO0&5ygq?SvhEd`o^(w2yy>+BBioYmqWSHQ@Ks%fp6lWs|p36 z!RhhdVNCzN;pma->DH(C&-~B@7T!Rb@z!TyVBvE`elg6y8EFsA>%Vv zTbZ)U%;aFVN!nSLQ$)1orH{V*$n5kRNibvV5C~82g5t=_n%()3-YKbdEs0JJzIoYw z$TqM?tfImBWjTO(fizc3QTX19>{GOS3rBMY{2b1ZvFHysT2M|i?$mE!t6QhJ;$cOHe?pFQWeI@H;zmN}pSy<0ecTG_-BJIq}u`t{S|Art8G!10ZM zA-&r{CJd`2jV(+d1m>XhkD+w1ZsxNx!{QIYfBG$QML+ma8oT-7vM703@6~-?)=jHF zr_$6^L+N;bXDiXu*xXjP+?_u!FJ`A2#OS~&r=dt1BcE{4vB@2(HYHO)!PI({cvT5O zO#ZWS5*PNr>_n;4ZWu4a!(1!&A{pSJxuqFjCWwNWAgyZ?7qlPBFzKa(f8V;0QSFkO zQ`VsJnKSgXS-u$4*>6$F*>p-|x!iEI^^Z!nSd?X_%lDx{HnpC0w%a_*GR6*m@r8Tk z!CpLqVqv}hZ%J0a+s5NPAL?Z~fycRAd4CIaj=0@-P67jUs&3-Fa|UUc5Z5|Y3-wTJ zR$7_=ff7KPA*Q;1cF}?~DqrM`=_-1*C{@lzY-$MY7C-b$U7k zX@=8)fWQWUvSTRllmSElvM4((xH&j}WU41F=-Ulwn_}-$P*hxVPRyOlj%_#UTKmpH zd6Ml`{N(g^8b%XXEy~1Xm99#z^LOPVhsGY81fntc#sokrEX`-ubyxRs#7Y47-154m z*F?u^s+rTrXw%*xcPgnTs89dHi|J_$AXgQOG4xCMxICm|4x_0!r&Su5?pI@CX5xm5 zM(>l|6{r0OD!h1WliN$IOj(r%Lu~(>Q6HJ zHy_pQb6#)MvI6U8Y-I{4Jy z*-jFyK$#gy73n@~0T2<4A?57M-3al4^+rudc|*6`)v#{SZ6&J&xbAJFOJ!%il}?h|w;wC_o^O|qyK zs^Jj!tt@BEHKGU>tcIWp=NP-a!Y0JKRiMTTV(X*$|+0+2c@ZhR=k7Sf%z<#tB3V>ACHa&+cG@EE6ST4hlX;DG8;r=XSw;?&wAJP zJqa|N7N5H}DJMcQxPAmnJA~eBpzescdvjai<1MJGPJOutu?Y{$%|2Nd?3$KMl4aotTN?50=4~faO>U{toiZZf^ z&e=q_*x&xFU}9K3In*Kp(XROgx2?+;WjihLTpdWFXaxn_a;~q*lRM=y zoh)SBw6C8~`P?h{S~A3!qj5`S>A*D1q2kA1pyaTlcz^d6pY3O^CNEtCEb2uht)KCX z`CuWE6Em3}9Py6gsth7YgY-@R3_X8pUl`>JiDt)XAx}1)8_wB@X&^)opTk*oF)^@O zqAq4HKoRIGAWzQqw&&JPtnIoD6xObPoI8{_&Fj$RzOyQffT5K&KziHm$Z;kbi$F90 z1(LZh#65c;0~YKM8nC2HLO-6L_I0Gr7)rfxIUptSW5-40bttz+-0fgi|`Bl@(bvVZ^&L{sokk?NG+Uac><-pR3jqh;{Ud@NT7Pc-BJMIwGC)9p{0y ziZ6!cDZ=vJ?+TWR2yzxt7!pPs_oduZlg<}m{d4VeYCsDj7MmkdR$~6$Y8Awxs?I+t z>!XgR|Hbc>@(+4&-TMy@s+D4t;g~4iLwiC(=dCA~KBmOUv8ww*9byjHYU6}2!%rY@ zpi-OY;Wy6+qZiD((avj}hl%V!Rj%R|3z!vZiay^2=yQ)W6xaUvYfEv6bxPmHu6~|2 zZF6|CRfV5p68=fj>elh^TO!fomCUM;&yBVdK*iAze`9(7xW-+sE0D)cGdlTg52dAh zW_qq`_?@Im%&nM=tcm=qURU^;-M|(*EB8+m1780Ap7bSD#}22;b|oNDkvY|HpEQFv z{`0=UbC~RbS8txvcFSVVFBsc4k&zDE*aErWlhX`jomPrIeTUThoMAt(Wnyjiu5Dl_ zxB_iOg4(2;whzd|{DX0PKV5%ZGOJ?|K#>NY{Zb*R>7K=rn%_2?I~M>r(o5xb5o!z6 zYY9OK!F$m@La!$kDr_f=^DDjA85%0zmbp>_j`0_ZV(WD9bYW%5Ow!Kn(YP*a)4Wyr ztsjM#p_XFjAD^C#Dpr~Z;8b11!|CU}Yv*r3GSUErJhEz zu>T_%m}hn6rzm6Lk&buMYG||EH=5##T~Lb;)f^T8*gxH@ILRcBy#4d%QPI@h-OLK) zzb_ko0BpX?(6=zM+4L{o`g0_`K7Egilkkxu!Fat^qrVIklv)+Dt~|VLYEvTPY+!t@ z>n(JF%R>h~?xkVd(=RDkYN+~q5vhE0-&W&s_k-;g?Dn`aUit{;_?STjiwn~orSe(Q zFMA%y{d^WHHMYSV>HkO|X?54=e<1-LvIA4ExxsY#N#f_q-^j4(0(|R?n%Srnp(^Y zTOi`odi1HB(4(G@M&WJgYljEK4Vzu3>4$=`n~SE=x%N+3TR53dkhr2M0KDOk&DK}o zns`MZP_Wo9ajUd-0rJ=bGs0EcVRW!SoE*3Z*} z9TeTo{a9PS?hS#(+<1}aF&G%1tl{DGcNsh8(j{(kQhIbcIy$qtDTX@m%m&g7gmK8A z8OYRL1(S z@>D1`F#v|vX7`8joTBV)tgyNns4u5~go)4gt+Kz_d|{`@O*)$=GNBCxnSf`(XRTsA zrL4-KPQIQ1frK{kSt7AauzX*pO!M@5&F^$WKfUnLezCQ;mY!WO6eDzY1^eZTmGnqN zoI-YWL)61gL~pZ3{2vl~OYJq54DFtwC;gu8x>=?BTjRS8;?1SjTk40q>DMA`R64I` zXgO|{9;h03p65*rQ2{JEcWpsr*4IU!ZMFgo<`l6IHB8^_a^;)t?JBMte}Pq>NYJT# zidiOtHJ-%49|x+ncZ>>3c-ysZ>a%;_SpyLg^L-TK<<*NzaHBSU%xUKK!UO6tDw`Ef zB&n5iRBXQTSNRn0PdYODE_{^!ab=Zl%{5L7mvJea49f&#UVnomKp^ z_P(M04xs#J(cjqaXniJ);-WYHdgbU}MpY*O&!HCYC%+a*bbKg;Azx+_-sAJo<=0nP z?1wgMO?H;0xc1l>-FH?rR?*)&FOOCN*#K@ZM9qSj@_za5ImY8uv!(|d!p9uFWTQ(4p8?kJBIHPm`{1@JsZk7?H4W> zJ9BOrs9IYYex%{YT@@m>eh&hsW7_XY-P@mQdKx01m+xM7o;58trOxf6e$@M}R@d9x ze5(sMpk?M?)RL7KvBWOw8ecr_SuNY`R>H8vm3sH>$%bNSem5g6F9-zAdS3{b(^!S; zA_w zQe;Yw)<6yb2`pG5i768^)Xia^VNp8PKP^75fA%>?ylL*VdZzx_ty>Zv&$lK4-YfXn zTEem}HBvmO9Q9p!|8)D;+KorBmAvfJPTxwq%+&8HvWv6DDbe4fffdJa%*`TUJeB`_ zP}wC%6^vf~Ao_xM2xq3XSkz>1E%$?ZqXIt!HgD8v$QF)Oga)AO$f4vpcZ2 z_26-FZhR|P!Wf>bBL=}Vvvj|}m9!+v)tU2T9Z>c}XsMt;r7_Rbsug#BxCT#v#7px` zJF=<~{nu96KfLc%*$kU7kajneZw5x#_r1@`>5tc}{Po!7x_Fw)pL?@dDihSb-x=P6 zf#aVF*1WesQO>09nMk>z1fTO^Hq9%MhtEq!b_#m|9*^u!$U4 z{Yl;LzQR67*W@lP;*m^pek%9VmsM;kMMGo;{%6*MMN4Q)FJT;tpA&J~fbGvg@on(z z25<3(Jdl&9Yct8^x975$>Hu&RsO6hK$9W-Kj3sLcp;TcvJ7l+N-0ME}abd0QuX@1~ zsQb?sUjtOl3lwM`A<4lprj_n^E2-}Qr~2KmV*hHd(@>AgmAcJZ5l}u`UO054L~xON8t@4+ZS?SOM}Ln_74jxtGOA=H?Jz+bGg>xt4Ti@yPDBnJCAYxaq@!R-P@ZQ*eUZ`Ek zQZR79wHI>BUP$JCA<(D9*VPrxipL)IMpH7A9%ED(r}veK_)4?N5!8qizs{Y+RH-!P z&izC8OfGp4x7{$Kx?JH6u6Cpw7vpLa`JHKbBV}h!Ow*KG^~Wj9&!KZ+r}a_~pXu8y%j*A8geVJqNG^n#0yJEPh* zxE;REYojT9b4s418HrFGiH{uUlFtZQw$o*LKF`jnrr4iy>5V{<+z{rU=W!aCT;5O( z!3#p~9AqAUa_+ESi?AB)oBnV&v}s%S)Z;FMp*n1yyVBoe78ayFcg;EQ{j7!&duFQG zIL*GID%GG8F68PD;4AgBOhN^7V$URHuEIUJcf)zM`wd@MVMBQtf)p==#e(E5b7WE zv?Nz)e`6G=v%Yo48ngM&0)!XU_4+n0?qApNKYazcZe}u}yhYjY?|)V+1-S0rAy~Gw zGgXFB?l}&Ch6C@E-_Fw|5&-r?HM4S8mf-`jeDWb0i}@gZ=q>&&Jsxw^C`z&myKi%^ zrst#bKz}SYbX&YqtFp-6Fp}E(LOMm!mI)ftmoE6YB2V*-TMbB;6=R!uB8R7Kix_k# zIo@xZ)z#>C%CtST?R+HRTz27qC7)L6X+kYRKjS(g2_AArOR?R1O@opm!cUQdtXHA5 zRiG3pt_ZyUHP!P^OQ6bW%VNI-CxtQ=Z~PaQ@4$VmEV)2=UxK@FUzRlhO5fCbHQ(G) zOHjlT6a@?2T=~12@sgRzD@z+HC>!$I1^RI#3qC2KK4&9}Tnf3&N!5vgGWNe4iMbj6 z`ukGkv7**XW#|{Fy~OPQz|B)AgW=k#$}*c)KaVYOk-K*9CDdQ;!9-Cq0yvg_L?q|S zcF^gLLej^{aos26MwRb;*nHc?67b<>JU{YY!kn#G6V%f!=1^tlEk4D#0(8?I=t}cz zdJK$H29oKx$XXb@*Z{1~qi?a~h1Q6LL5v5IEfQhdB{J($H!z*^`uA@VL3~3%-mdYs z_ni1OJ@eDkR(^b-wkanyU@Bw4?7JlX33|ayw^a|*!cpp@4T%yNNVFU(V=gnZJ*iK*e8CXTy_b!k)bI6 zbn-lITOU`54lEa1b5NuhpO9I4;cqXFw~sHdQ4ubuqAaSPV9q`l9;Up zc~uC$NBOA^`oWONw>~kV`=K&GC6T4GeK*uS_=p%DqAKA`Hg?F36H2LoE;VKFIQwP% zkLXh%R%J-+Usn5|;}AHQ-;(A=APL^%$@Ui;@Ku94v-}-DB;`%Ephvv*?k&9k!$psw z{Rq*ou=p-bVLdrfnBtKb6-ykm{N~Sq0RHGDP4+3V zFKo;?XEH^;z6c{Zh@dbFf>RvaEL(9AUqRw(U+a8y>aQ)5@ZRP8xH(wL$MqECP?ZuT z6{&~7)1OH;f5ecJcMP!JrkqOL)^W497pc3)vfo(!pCq)^ zelSU=8d)q%Q;{vx&>$jNWqv5fZ5j+=mIQ|JL67t=tJ zmXCG$w?#%&qzB;!sbi-P-gXHcvxU+%rHrv`KGw7Wn)rFsLEYZX6s2R*dM-)9Gz1!# zMDq+Rk(e87@?S-h^^0}z{5;!}>(c#A7eAj&vX|%A0&mI(cS|An-g9`Z6W|n4z<1%k zk8i+-9P4%Z75tQ(aPJdh6~f|67YlWi%&hBE5)m>HXKl*k6XP&lVzQ5miV}8TUFP#d zeC-ATviNa~N(#0^{EiPLR#s~&Mma=1WnH00(TTXQBq_>bZO16aZ7Yk0s&*O)umWjq zP2sF3LM-p`k%>Am;Z2+?v~A8w7t1LKGaMZb!m<_X6IELjpyUf&xYiAklJa)_wdCt^ z(x=z6ty2V}16K@4?{qLtZL(MvCkn;RBy~-q9i+^a+|U(THw=V{<0OhEGf4e@hikdO z1!r*;wY0>I9oi{=%LeT%Pc5^iPQHlATfNMvgbV>%0J$=8J9xhvZr795`~hXy&OF3&h8&yZQpQ$ zt`cZg`3tPv-+ygg#-#yq7b{$ux^16Wu+&|#lbp)Noav@l14nItw{mhn%RhpkSVr{r zTh@V7DmI@Z^FlhtASy=4kYLSpd8D`4%T9a3Xr|%49-Uwz4g-KU`(k!sei+`ulz!3 znr5YINebW#Ay$+_*BY314P>h*j|U)tpm*&P?%>+z?mRljPft@&1n>c&825YEPS zL!U2_`0!mhJZV1a(YtfIu^)iUD2np8K3&5fyPT)rNufxBQEa(x)M3Z&%kIW4U5vDK zV|*Tuvwtj%mrfqNZBB0RCKtsw-#$djDpgWMv2McNwA$uF;2}U=7R-g;4N)wT%wQ-d zRsVh>oAVE!6nWTcKou5Hzn0j!I(N>F3ftPpyxZSbATOF0#^T(&m!MN;K6u;tE|hD# z=w^eg)PGj)p~brO?l-QlTwhFJj{7_H0FNlc$1&k+GBFiUQqUlA^A?gEnR8w zXZ{7lkMt`MiF>XS4;7msw}xEQQ*ce`Eh2nR)Ce9B3PJG#PK zTh9o6{WWH3_PkCA&-hdhYoO`I1}?o9Od(P)AZ!NQRPNbn6sL39aq7=6t2{`Dzr-d8 z5&@VWx9eLm*%V>;eTNlWnugkW$o2DaWw=PA3p47nzRqnnON@8xet156e@ofQ<}x>@ z!Tp+ZoORSK#o>O0w+Bs3AhRA2Ua0AI^j_M?G8RZ;p|T3xWlQp}KXlSOyfaKrDtPJy-Mb zwf?Nuo!yOaX)LR^41g`Z3P%T1G@I>N*np1?Wdx~;X2mG&Ws#(79)(xo^y7Jz5A%YB zQ_TduvwOsN($}KtGV>vP9mYz&CGG7+(sNW6q9)TWesf+{avK}}p_`%c`-&2YI&{5? z{#*>^)AF5m4BEoE>P-}{l^lDGx4L?Kb8@;>nv>_pUm%u_bYy-Oi^M)iePlUmuJ@bg z|I9CO4i)b^MoXek7OO;vZb&B-?EocsJLXX<`5b%vV3X9I9=_DGGs@<2zj?n|I}g$$ zA5SW`-*4H??stY0ukG$IvBa?Lkb6nFkDu2TId5xthhX+J9Qks8@m#y?nth@W%O_`u z>;N5yuJZCR4cq*QB6s-o{M*Elq_rk;e59~lwRG!iMu$Q>%0R{bM!QctWV>Q< zZ*lxT_@cNQ{>A0yj46G6(KLO*My5}lt2=;=c&a`aM7jBWSrA_n}C%VJ6erCgVUx$wmc8`gv zW+^Va3f8}@J@rI6X(b-K{H&-5O;X#NW}p3u^=Wsr<0hZh6LPbCeX6SnYp$j_ywLVo zBZnQ3?v0S9P(jr zR@dZYHR2C9Ic0e--cu#rD=}2Q^eC=Um+dDfw)lc$l*U88nz>Ki*ZpA@%m|N(bn5H6 z*$ZBTbS_xiH!j$?jZ58h1xCdEZkOHkl^bt=dAxHM`Y@LcN&)lnVUbSfp!?=2Fi3z6 zxD_1kUun*YU(bICX!0N@iuNIxy}2GlUHqi8dSr}W1CLW@0A!l1%F)9Ob!$k?B|sJ) zu$)xU+P0;Xp|MZ-#!_!hzO}Vs_0@~JfUg-RI1Gr)E+)Snnh%R$Z7-d?M)e~qGU{8G zo)R7}^>bCty1z|Pl-9S3K0#s>8yv|$GHV9OZMkVTmG~m+V*Fb)3$15f8OMGoAI1P1 zHd=yYP^OZUD}TB;+7LHX_F^pjUYJL zlwD73`$@v(0tEa;iDEonHW>lgz5%P@gxLw(ho(8w#+@N<$=mWR4_n3FPuoorZ9S9K z`~nA|o7AC|37$J_DJ@n(m<*P~Ma8pWPI=4=&OJTYr|9+1e=@A~8;t7=I|f$V?bhh^E2w@?4wJ%tE(ES~Q(+Hw&3M(|G? z(U5Srp%IDYY!HXjVC)EKh@!eie3}-qDA;EcYaG)Z!7#GtV%x1-<+2j(;q{k=pm~{z zIWth@^SnVv32R&1i(nJCgxKeNpPT+Z&RV}d)y>mg_~3IqY{dPPb19#avteRm?|#A& z!6CT$I$B@$6QA1l0FJ~%id{J!P>)e#{`dUpBS**BZF9}`$0Aq~foY@R(VxYaKnApx zWj)vQ%@)=n0T=dXffm&3EWO#}rscM0_+GGx$mcT?6!tLvAS0ED2e)!+=NiLn zzJ0?`9EqupCSGdt67g7r^iNk6M<~r@+aJq`?zP#d6lupC`P8n9SAEabW+u^^ZlLn0 zWQNPw-)HwzGza8+#9g=#CVoDHh6~~tFQblkw4v`?lm&9pHDS)fq9sd+($}4%>;AwI ze!BI`%uUeNo_u2-wKl{Xbc*-Jf`|KDnp7qYYDm4u8}$`x@Jf|2IhNOMb{ZZnh->9~ zdG0Gu@vI0Y`@$8}yd?@nmo=qE__KfqYL5Z4G-O3*he?dQhyq@t>P#MDl#=}70|eVI z=SIZAzF5>h?EL<=Id9Tb3858L^SeD;;=oYsY1Ohj;nqnJ5}G;;I>r)0TU!e zRHTN6TF2O~2mcbYaUGRE`IH!OQ>XR}spD-QCi(vA% zvOAdZa>mWrj@_@6+rsyiFVk0|vcKyTbZfl4@8SIO{sFsu`iX#FuBdakg_js2`|Yb( zm=EM#8qZk!JLbvsrBy%L&TAq&s3X2fzv$?=_P)%#10`h1cTJM*USLP#+Xmv1RSb7i zO!2&py@G$NV@Ku-2|voPdysx8aZGy`*G;Wv;Y?}do9sw#E!w6{caldrJp-$M1Mg^5 zvRC9(I79qeJoDOL8wuM_TICoTsKPhyU%q=3|8Rf|V!G!H;NW%`)(GhR2}{2J91X~k zq%>CjI8;4#?vr70H65QVn8<4pwz4NJo!{VZzm+_Rm&>LUIHn#UeGqh*pop~lL@Icm zpK{MYyRO9df30e+aD!}qn? zlGh)%9p1k&^0#%Kh~5$OVe!M7hxtf7xx<}N_Qn>tj}hHX6I@@wPTk8z@V(x zM&Wh5u!%l*D3N^*G>94z{ANS>z!`VDD$w>+uPS3=#Ghj1-D9MKbQQCIZuh#B-`KWI zPI^R?ur)jxqwUi6k5jLosgSXVPI(FHUd|)$R=*FcR{g9P8}fv3Y59R|GR@4LR{pqC#$ZiOcsNqejY@O@4qsu(OJh(6X6+}?L za??rl#i4^hAWES@2s$#xo?aY5!(2cba%T-?0E2&skl@jPg?C%lnB013cafEw!EcV; z+gY-qhNI|;mtwkkCPAe<&Tmx@&R&~eUkj?9EV7=tIQO4#+jjn5`2fZEzxoMg43`BZ zNwuJ|w!}4^+ltKUJ`|{fKlA!L_uomO0eXD#pB~HPPrQh7uSWw zjDUWDodX_)HQ*t=XI?1nA{=jT!5J9Si*bdM9c=kmBcOUD*ME&{z$Srw-Ko0Iv5wNh z{6&F|fnj6+*RcESFe3km(vya3V=6&VNjAvgmYjjy*bI?`^30zEuP5|=o4pHCAvDG@ zjLeo$a0ZtX;lp2reC;$DHT}vx_9BuGkRee%`JIyaJ~ZY{h!hJ=h*as`zm=o`fx+OH z(BNN>ZziNWQOT*{WaUp~EGR~jUle|v>E9IH0;fC$zVoB+-(LTCQJ8?NKIrYVnXIKD zn*r3!ejIDzN2eP`qM@pE$0CI;scC;a&|&l&bV2VQ7gp0<$nrzFj!VFNKe@+R5Kmv- z>@XgfUYFqa0M`a)j>#!E(A3GewBP6WJr%z7SY=5I9V;uVww#fQba&e$el2V%U(|nN zy+bdjJo;{QVfi%6?`b|u_kOL#V_al>dV0A2rI!;0uuN*CgMoh^lyyZAgiDhTcA1A= zsJ4>&`u4mnfU}_xBkVc@6M#Tj&;HHf|7<`0|G$C%KdpgyRUPi_?d|Vz&JY76gPIbZ zhax2t3&EqDCm})0>NKa@(D|=VI{UeWXVDCUhY~d%-LQ~blo%ElrP7;Dog;qn1s3Dj zBzfit-+L%OwfApC0uC*f{pLnm9e24)=5Q0T>8f24ga$1|#9;5HpA8LqIV;Pi1 z8Qep{)a0`9$`Ab0c=!QjEu7msK24&3X6ApI+GbyzoED8eG<6tmhAU7XWyMS0AldZ< z@IsITa%8l9-U^9|)cP2HwUssh)#1(4b(6;zmL1A3m<*i=7S%RH5CYY)hHRTvg*2c+ zOz2;Z>Om+vrn-JtOqIY#T5p)lh_}^?&g4Mc$ccHf64Y-Ae>Q`biDQc>hu)v%_H`X= z7p{~a+>3d_WZ~q%i+vm0O;$3(ftRy{VuDt=N{1dUcarGP|64I>y}c*%>+rzA6z3N^ z&t)d#v(zpsdx5UJsr8lU)L9q0&TqsHvl1fkeaU2kFGl$$@|HdS@u2@b(|=w;lN9fa z=<*$H2G%EllegEndQFO#7m*;6aq5P@dCIdjJn&h9Mp&Ju(N}<|!?6Q>HtI*vd1Rj^ zVhAWx72z21lM8zNDooLvz=U`=1y=|Uhd-(fqp|+WN5flT?I7JPkGR5T5BG;87oCUZ z^&}leNVgVwDn_d&4QkHs2$D{W1x^g(ZLg@#iIDmWB|x_4rQqdp&PiO@Z*~tSQ$Kg! z+9KM5LCI92%1A0&z%l-JD|H6U zyXLEKRcZN?WS9f~Gcgqs@YHksTl^VpQSMt9hR6sTJqu|3h2Y#5=m z+9wta4H50~)vLwVoX)Rn=f{5`a&=bHOr@9uggsI%|P(K3YmcE2I9zd0<1ipig zp6Ec%Ssup!%OrqutT38*i%6RI@A&@}S^bNy{$8`jl?!Hma^f)k=Q&+35y?S=CX5We*f~A=to?jNHn6YX&y3PRk$ym&odfRZ>!!2h*69IiXKZ|pc@5(-#Cerwo=cmEQzj)sB z{E>!v*MqPWUVHuQ&J9PLwgoCYkuh_EyL;Jibt)|RdS7|9cO9&*>MvybVyL5=2M>b^ z=3<^bwgL*~&Y=sWCZgMGCwqQ2bTA5j_!7dFH;4GXSnuf1t0ijZ7N5Dmw?#vq&DlA z;UXfermzUUO9EcwXNisn%sx<;WkHtug3`Y5S_Tf=P)W4nVN1e)wa(>OH-lT1bJNh}wwk@{zgMqV|yA-;?h_~+JNDE1)RzTZF@tF~_uZ_fuy!)RcVvftZEAg6Y zsRpAHdf%R2#x>fcTTUl7F)v(Yg!7?gtvQ~c+I?sdYDA8w?I2AxKI#n*IoeL)Wrg@f zXN4-_p81K<$+;xClD<;jaNUK)0$Ra&_03P-`cXtuv6G=B=N$#xEIJa+Y%Hu@?1<~A ztf&)EFMOkhUUxS{*A6WVeUz+-Tr}?{wvDsJ(Qy3B|EldBo8#A-NpQ=UGcq+IrjwtC z1TxyT$A+6gjKl`r+kfquqlyGX`?e9$Wm)Mze21T`H>`sMt%Lriyli|7s~Lv{6}#4& zP5`B1A7WGP)zz9i>EutweC5g<*F8yUrZKHou-SIK8CB|-7WwEzqK}8fp18}?I3rTS z5wV7mGL5x|gRahlqaJ=|`ayfQYJ;v>frNE;1yFY7c*5!<-pt7}P?T=_o1Lw;4Xr@j zbl=&oD9EAy|+E*Wm6NT!Op%5ZoCwxO)=Z-66QU zTOhdmz}-COJ*UodKffREri!5`YM8ydd-YnYe)M;6zaUW$EZgn?(!HjnmcPi_jM5D6 ztR(kl|K*fVI@V5{b0mIRVz=92QdhWnTE_cGOVKQ++;pZS@2{pixSgs4uTXIm z;sIL6t&eSI;lFHP?mbxNhKv4UDv7PPai#zKY)Ba?`>*Ucf4D>y@QR1iJ8l| zbNUWTLt8>YtKmmW+e75g0|>)q^rPPD-?tb7v!2`aO(c>g*^lL|Ncj|fh+58Ma8KmZ z13_+}t7HEPAse+dB&L&FYDvKUz($yKv$#Cgx30>n=d+);k~U`)t@PPBvho*VIQI|k zDHgJC8nt{%*U zit~+k=Y1hn8Tl%qYRzcNMQmFp)8y!R5cfNCHSHkPERd7oU75)jUB(0!!ZLu@5;v*{ ztPkv({2SUJD6I~HV%B%T;^{^QEp7zfX_yxghwf@>@tKoD{@CkBt1-=M#AV!iAEZ$Z z@67x3c|`HeBSK)U&g2D@)yixV?d56T_c7U7bL4+{opZEoDcfBOW!HLK?%yUCmW--& zDDL_0{%*j2jyWX(!DZ6fBxlC4f01-K5Q+>QY2H7af3_y%7#@x~S_=(j3LRREY9Dp| zTYV5~7`qTALm6;3TTHW!$@z>S(*+7;^4H<3xK1%7|DGDQP5Nn)lBvR$T(xcx31<7y zbs&Y;I2P)>%jtmJ*Rk>A>2}@D_{Ihbn@&Yf?#3|pY2PSER14ghE@y4&`@J(Dt#MU5 z^G{)-nYQ9W8$HJ0xwRd#*>jIyP>H}| zqxYHr>n5Y0Fp^j>R{p7vHyoKE6)Pz%EY^u%$Zn14)Aqh&Gfx6~)=V zeBrO!F$>ZHIaN3wkZI8`UEsEGs}CeCC1|@VCLFCIMfC?F``O{Z0HoT*{>Io~wwu(l zdDHv2@KQ0bsUVyoT`a9+sw!EJ7W|FdW(bo5A{n*_mzaR6y(heLsB~*^>5jx}ubDGx z#>k=eaY^Y8PY?;+kBtYlV??z<0}H76PXAWt=t?~JS`9U&?L|}e-b_c%$5*Z|XO zudggxjl<`zAZi%+iS6G4^C?a^b^`X{OLiAIA*E=62kVL zOLQebZqDtbD}4##WC0ORoh3Fae_zqngg1v_p&&AIs#a}YQu&KKU#j+N-_L-And~Rh zJg$;8gB%gkc)T2h6*GNy`&**p-$Rn_id%uEG?D9*Pka`Iw6eXFko=Zg;Wj?ZEj!HdPUFqk!g<>HJphIbh-Dv$I`4F{FFZQ5 zaoMksU%f2m&9_>P#Cjt&RB>38i#v^SccJPW_3omXCgNAB317=*b z|1n|9j=+CGSj8L^sa_R2)_-9fPaZ7B+;4x(czht)-Tl+Mb^9SD#_y?kt0Q->CO$DE z=$UFPvVZJY12PLTl92s_3k5OSXrU#TQ8)n>>9&1NaOO8qE@A`$isiGmRvi$ed&sV; zfz*<*yCVnA=$U(YB3P^A(xw+nl3=ARP-`Me%K3(AYNiwYb*qx~DSvFqnx~r}Y_tS~ zaB+`^c-n(|P!h{;BTH0q%vo)_YUa?ltpeVvab-V6VN18~FYJm8AC9kV*jiU|tZZ{| zVyn*}YjQAQ``t@B4=A~uu^gnQg~Q#&3@Vu%%V5cJ`3DB%L>e%5tKD<9{H~oRh>vrk z^#)z5E%7YB;N$r(;@j!Y_t#oCeLlZy6qNmfDv8bF`9Y6ge1F5k&F^x@T=dkZ4nw-` zF4<-ARB2_T8wP0gS?vpi2e|kSUijTR>E5{WcziTS2Aw#f_yOPEcP?3w}9kQ!Rixb`z zb#{i(T~Pft9$1=q#Z!h?wZhbFW9)H;>no}2;crpT+;uWa0r)wIaUgqsl+4z7!@(6z z-{2HqHxdiUUVP|<%3lSr{6fu2kP2fF*_fZ_eE?RUX<-H!>nGB6pDjra`RX3^PADR_ ze;RjhRmR(uEMJ5ek@RvyL^NWIh>b;j+tn8INZWHk^?KDXyd#TpQMv*uJ~gkAd^tPV znEo*y?nw0b3#~d=xQ^0(aX~Vr|KXAL+jCkIw}HN7N5I#9PE)SGDbTB(JN}#!RRu&p zzT|W%<=G=xH(J!?u47-tk>_j2T~=LR@P((`&3yX~2uzt{^Y#Fml0BgT3VU}75o1&S zX5kRLDALrxC+1;!azy>_!A*Zj({`7?z2N^mS^Xib8N3=D+@^FIBr%$8BK^6ssHNNz zK(j~|*6(@RqG@6H17w-?RA1Bqhbh*=gjF7a9nfApfh5zRTPkh?tBhA?-bTHw;YWgr zuB*q6LVyh8MpnT(B%v3Q(r1ed2NUh#8$2l&@lyCI#!Mrc7qYUg8|^2YG=t$0iLd-*iewq zwI96X`wGUf4Z|v1Q~Pv43fiJ4L5MfxgU`99-(k-}vHXbHt6--}0*?V68aG{?fC`H4o$QiO>shJYU#c-Y%9uR0Ek(`uGhAbxGKLrBd6vRqfKVuj&6)_;6yUXX;cd5hAOKpP9oc|jY zH;6W5I(Vry9`L1N<0ref&$(q3Juo9-*+5<*Xv*P(ovVVh>V~Qz^t!GFP5Ndx1mtua znCvw99j|g{eBs>TeoatkFF)}lFLOP6>FY2~>}5oL-d&5}vFa^-0$}2OwA*!3J+sxV z7{Z;*huXHCyaTYa)%fGbgiT5U<3mQ0mxM|t-IQZ1LJ9C8{-^_U^E@{s6aTKg$&vwq zDBSHG{@INC?@w%>dfLk=*6Tg<0xp-DbSAd$Ft}r&ZHc3zMu#uwS>ysO?k0n|M$t!; zEHV)G!YmRXBWWyz*zTcWoRxE0DK^oR88>He_N*07hQA_|L1owQ*EMCe5t-bux-fLu zyfty*uAU!H0V+?r)6p);TB{BgSG!w7OZIrGVTDg77E;M-neV(WQ}O9sXC8Q=m|7}dXKt0#U|7iT*yLgnUw;V45h^{o6h%2uU7Pms)pQ){qmmIJ3 zQ(sR+MNk2Ar;WR$okS0tGCs`whZ010b zqfp$M?l;*af9d^qdM{h(94vm@2DX{YXpeaeO^v5cP!O9Xl#Xt?T|4LgGQz{YW5A9b zn!2{b@cgSY>JPdd!IW|AsUYh9^$KJwmY7a_v4Rfv@>~Ftv3!Txben~66fbkHi<(7% z(rBV%yy=4r$ZejFf|UI#Iq6Qvq(Go1EwW2MOqXSaKuqkNVNbk3>QfcbbCVmDbI^Rb z*WRA-pP<84}HQZrQs(~bni;P=AK?PuL$amL{+#ugepWBl}OI|9tV(YZymwymP zD}@gIjTm zSm0%4BURM3zXi65rBWX1z_POl+yZS%-AG>avX#~k&ceU>e=)4Q>*auaerh75-q!Ia zp$k?ct4T9FwQ?{n2Vs&AA>Z{>3`c)*qI1ox^qYWLNI|EE47wuINf3E>g*lzi za1GZuDX{$#*im$^6Qh#sTk@tnhNVovFS;UEu?S$#8#-c&w_yz!!Imqjum#jd*CkP` z^V_s4Cnma2_Wk#^&bx&twE%9{A4O!*(N$~_Kw>0S=Ie~K9(|wZn=e?V>$A$Q5m$L`FCSBk-`s` z1;P0%WxN}t-(QPqFZ#iZEjQ}Lz?x>7@7fN>L{P;5PAsMC@==Tmj=jk8$JwXv5yDa?{ygZB>}fUEe{-ZVztEzpU-S-#u+y7Nz7 zq$Z*9QK6E^h2Fp!MZq!azZ$0M5$XUO&)?cJPp6(3!?-6TZdk~NUx;bClQ@(P0qg&= zIbv4Dpqcg=elixLN(g>O>c>5|9iNmQm;`uHm6h!wMMzIW3;dc7p%h}U^vg3WldgB` zp8kdl7^`OG<4{o0OdEL2=u#Us^P3#WL5aj&v5D&L$FCzxFm?~zok|tVex=b#stTu< z>j^X{OZ&><#m!)SUrI-pJ zz?ff1(>9O29pe@o@2!jCw2F=us0@ixnKY!vi0yLWJz2;i*w;>0a(v|=C%;uOqXg_c ze(y2sfbULif@gQdwSg}oINH1~Pw}apwD|5}t%0ASNY((+-400YxnsTqN*`s1SE^KF z#23Mrvd^R|)A3&Aj|W8TE)${MmwbIYp7s#>vlI?c_sX;f=t8WRM}fKyr7|;hH=Nr+GPB4X*RWy&Vx zfx0rE=miry0~Rv`wc^@a0HI~JDy};``V{vBzS{O@n~A;!Zx0qg=DGrQV@xMbpFW{e z=MnBxocB~T`3bUB9!pQ2zq}L*twohXn_8OO?qx}w|576-v(tRUQJB44=Q-`nlL-c#J>r$q?}!cX z!2ayvI~9m?EB+D3%2qs>SWBfOLD5csBIl}s(z7AAS1S)%R_FijEHj8w@nSou2Vuor z%(q~0hg1Ddb4}zs5&Oh=csNWB|VfUxV?d@6`!~h8OY)MBbK9Ud=G*pg|fMD&r0DB38oa{alB)sAh8Y zd5R2-Zc2G7T7bsF8BB)dZ4*fY6nWJwAc#}B7SQL78(O~o5X zyRA3K5o?a7r@e!pXlnHS!khS@kNz?e4mbN}QH)@I4+r8}%Y~d0`>8lZ0jW7zfl~=j zz?&vKZP;sfKFDs8o)gnNNcH^!cq8u!CK<5&>cRG*+k~rc+eg*b>Q3V`!LX6;QwmgX z!uOXyjg|Y9V2oSaOrTIYkTk>TrR!#|(i9j0K9rPjx72N??n%q!eF>}XlBS%0APE1{OZmzuAq_j?L#ctP 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�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

      |JO5_zz*$a#3cj?#DNk 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 *$ufL2 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%0Dr{fV-oRN>{<=z?GQPVlA=!ItwT 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 literal 0 HcmV?d00001 diff --git a/docs/porting/media/walkthrough-hilo-setup-assistant.png b/docs/porting/media/walkthrough-hilo-setup-assistant.png new file mode 100644 index 0000000000000000000000000000000000000000..4dabcdcb7f50f9bd33a1248eb362d07df703bb20 GIT binary patch literal 111630 zcmd?RXIN897d9L#mV+ECN2*dpK|rJ_5D*nGAiYUfq(cDdEd=B!0s8qc=R6NSf8O`|@%{Stb>&JjduH~`nl)?IeXo^-X=$i1pJF=& z0)dzzj~?oPKqrkrprdb390y7gDBL-~+aY%ymHVKQ9*!m8%TZfJbwv=UH2U=Zvtz*b zldg}9+(Do-O^nx}R+oG$ph2j;-V=`}>W^ifyFf*rS-DtRi}*lYf!ZLDoPv+*v*(W1 z9#<@_ZS9@G0>pZZz!iHduz;bY`YmkNn)Mb^SE-p8GjIziTC+AkTbC&PN95 z0c!2>?1~T6$=O}T2h8)cV;SHxqga$jUe3+RMn>nM@;^0zZ(trf4-Z!vQBiMiZxL^C z5f?XGQL(#s?~2~KEqeR5Fi=C--PhUUnUAouJMTXoJhXOy?q=`mVejI6h0)}~%0 zd}sH6!~h6HlyOH?Oym}0$c)c2nr`;iz$h4xloylxdHpPJ=+SbC8FMdOqeWdk-dDmwpw5(*3+*k~Dgl%n`keWOF>lym; z-|LgUgUElsF+OGgZuM&wkrQQyf2qRCui4O0jWQauMxL~@ATC(5qsxt~AK$u}mB<&}Zn9udyFg9YBvo`kki4fhy6 z{1xOOs;cMIHb(zJQ$Gcl2A+2S-4S^!w|rCm50e~CIO+Vn;K6S4JeH^GTQ`TAR6HxP zI!zNVTj4Mk1%YG&97(IE=k}Cnr0#x!e`8fpfGk9p421Rw8e+9n9w4*ke~ACw`wyh7;XX5kvFZ^<{XS2Q?6i6yWq z&VV})M;DfbEQ`u0da_$?=NBX{jpTavMjuRK|vZq_rP78zxLnmKpD|@ z`+5tGz`-d}nfe8uAxALu;z968M(~m2i<5DaYC#u+W=6l#ceIQ5yizCp`?R1FRc7?{ znD}n>1HIhi7XM_CI3ezHZ?w$nojyGu&!^4M%TqvR;4*;I8Fqr>bK{NO1x09C+pQjiZ9BdEzye`7qcAz3q|K0s}7yoVd z^S$QE|I{%3KkWgnfeFg0%VsCtPYEv#&RR`Q>lLLhUu-1fCliuiy}ly!OaDsC3!?N; z=Nf{JaLwv9@TWybzo)%J6;oBo9!>i3gs;Nb#ncu zyN89Jk%;8vF!G6rfiSx|M zqM(_3Dk`D#tH;?6mE!8FK(FdX#FAp4M>&qsRSFYUlYs^NeZNrM}Ledr^3G+BP=d{gI4$4thEvOw!XIq6GJ_#w7w)T_+kB|b=> zH&>m-YVqC$*lN6=)rh4!b^nf;taavKv2T~#>-`UM>!b;1NZs?En-HB1HEa?d1QG4w zF1XCR4u3fB&`()nb9M@uegWvlxYzRI#?9#nim7KMmyhc!RW&tSUzsM0{Er|h`R$a~ zXE+N@T8dae9I(-%qi`?;gFUNsJ?K;mvr$|oep0TdMEhv6-iex=Xrii49 z6FA0Y9IIL)xm}#&%EKc>V)%+pHfm}QZknCVK^J(I(U5sgQ|OsQBtl+x_f&U&qY!kY zPBMCFk_&bRny7Dtxh?GX$^5LEt3iqJHus0WINJ;LClhb$ygwC+{eW{2_f~x2m=b^L z6C!)@9B#1M_)^BO-1dsN-_loBNuM82&HP3d^o`jZNxaG_IgDxG;>`;~m{p zOcqFc6SZerqKAs`&O`aVSryA z;qzteX2JR^){5ybOq&!(l;dV?mLxCKtnCu`D zm=q>HS|c$ifxwCf;toU|xZ0IiTzpAA#4&BW1gGiThXL1{b#l``iqwK2Xy5c6%+z5{IUlV_(~7o!JMC8=PE^QjH@K5W zk*K9FbDf)(&u#vkkBE%)bKSk&xJ7Ve-1J;78mY5ddEzd9V3%neavYKW@MV%R6kG(77b4x1SuCxXi>(D(R#~_?9w|q3{ zpq=*%E9-l*)5q?gOl~XtTBW<^>E*R3%QA^tGJM?ExM8!L>0(%rYL+J5hDoY9Dlja|aR15KdC#q-y|B?N?;o;Uq=s^4gV zA2}XHh^no0uph}|nE2kt(`16E1@7I|2OdM?7Wz2;_=Nfc?#?$`4q3kev6|~w^Pzuv zZ5Uo!jM1OrgJ7liwbU>#;%mdu+ifAn^kz0sFAoP`r?3Uwck)24D)?!1vchmK3JAl>HD1qA7g$I#N8Rq3dB-IiwU77eO~ z@Fl^@6-NmBd%&Cj_XVi90-&`#Xi@j|^GX!KDpDS`43k z>sB`x!+YK2=wtZ#!)yR|q3#hS-d0fsSq?2R>^7hs7q9D8~b# zSmEvnn`@^_MP^tWQr7vf+@<MtGslWLyn=F0znCsV&436zchkh?d-`P5tlp;4)Fg>7sz(8SS>q#&FdGRB~ z;ZJ}Ao3@)?GFW8d+^b33P~ZoSS+7E8$`BlR4S&w#~yuhz|*8uY)Nksm?mL* zF7#bZhAoyVhU-9u{U40ve#@PtTuk-#dd0V7D~kDGiY6NN&Ym!!lTg)5*)f`o-M>g! zcJA|^`J&r96!?CO2KPc20d_f+g2oJ`9E%u$e-4_h3po0R6~CDry2Uhm5fQeQ^_x)z zPIEAu-)2}Xmn=QUR&ycucy~>~7gM{l`s2;bc7}(-MSA(3UnpT+z#sLiZS&l7dMTeK zDz%HaTK7=glwjo1zQR*zu|^>;=VA8eR%bCTsA8OEV4bc-?Tkk1ixxTrKj`t49ynh9 zgFWe%SCLdvbgb!Y${Q~F8k@WBzghykYw^|9)j8281@ob&px>sxAhJt(^!%bY!Gd2^ z8rc4@5QSJz&dM)aK=eFWR) zyM9mEH(lc?GUn6ez9oHS)z2dMeUREFkxx(+5|YH;+}goL_i_1Tj_8H*F*htL)BD=d z55o#s4Vey*3-MTwOMPRq^Y(x*fyizF3=&B*(9#((kF%iZoW`uvH*2vP12beY!`o6~ zwJ6HzjI(blXZIx7=Oxx(hy_f~@`OM7qs9I-E8A_WHyYqoJ?b;51pC+v&~+IJotrG_Ne0d(?_O&T z3EQ_q``E*psw(qG>N;9}*t6@jcK_5H^W*8emO`1M*8QEnKa2F(x*aY$Q8Q4y+dZyuSgCQ=YM1d3PMk*4UK0r&igEd01fv` zV~#&fkrsO62i0%oiwguHztyhk*fkv1?wLn#qW2DC%>^M8nm1SPrjUFdJKCopE^tQV z2A7^Sb4THwg|XQ!&0?78c29C~Qz#4n(B4JYcluplBUY4YrQwCnnUdcM^+lZ?r=x|% zNU>ybUTAia=8cq({Ywb{+cW%vGuxE45+3;@FL`2&Id;uFn%QB)D z1VaN#&le2x+w*G10=8`#<9;$+=nTUF+>0AnYU1Agi56rX90AmlGcORE4fanW)6q12 z&SChy*!Qa4jT;)!(FP-F>hf>Q9CvO(@s-BE$q zv;e?`BZZBys-F(mLD9+24D{2?8A1_b%{%Fk{HZwbhY915gY>nw>J@A)PfAGlMpk3{ z1&}Qe#F_ndmiDtn%JA94-BkGYWfL`V;(ijtEr#?7$+GEhlV!Wr-7cxV(|;Vh7OB~4 z6Ggc2Jdvacb$~>d68tkKLW)KS0<9sT*9v>w(RxdMp-WW6A;*p4UX5DkboFnoowK4A zQQWMC`u1y_8+`3v50PO1t;OQW#+*PZW$C+%LMFQl#V|FH!gN#Rx;ex7Wr`Q=M`8l> z7t*{-oKq!DSPgStN7vUBs#fw&S9>TZORW9VQ z0G{jvENw!v-H)mB9t(fT;EIj27*23W{hXJuaj9{HLD3*YAl=frq^vA3N!vf3p;2lG zfCh3&PM*Eld}&{E}L6Wc>20P3Vb}e84Q2N}ZJQGFjGfmB%PI31fiKS=Xut-UgQp(_? zuBKvgse8qfG-Z0@h5#a)kR+O0ypeT9(EySCyF z;)|3=cy{%99u_uog5_pUI9uX-LXJ}}+uZrtdp88)x^6Og__>j*M~ zkx*lu$Pp3=E7lAU*kFo+6!i=86$PNEoP+EzZtf1!I2&{c99H3B!% zTdF%)$ z8@uAw{a$QrFnkWarBwwwWYT|Dk&1uLl32f_!k#v8Bm$kQK%)sm`X(oQRZuH-0}P)X za4~K|lGbDEaq!Qe=h!hoGW?Qu%3mKTK;~-3-Z%h7bf$`_Uu;GwA^<4Eb+!W@JvFVh-4<@d1vwI1_(R3 z0D#KVh^i_a<-U@i45F@>{>JX1FCet$YV5U7Gb8aPNv0%z39ddP5WdP8=Q$K;#9&P* zW4*@c>8q)5MW;IrXL)=2rd>pO0sM==TlkMlke7$BZhuZ!cy?X_*90Vb5l4#|+=hv5 z_u%l0nXYaQfDh34X&-=622HSgWZQ8$PI%ttfR1IHNFjfGgAV8~n#HIv3|_;ABL%Kz zNQlud^$BLyEP^DT`&3^3z|m0QCL}y%?-|2PxTF1049kElvPk4xa+fq*nt5J`*qhCo z4U6CQQtRV%w>$|ATrzTJ$C{@o=!m=hp>5Z}>+j)0k})Qy-mq~+#IO}tB#QLx?w`du zYdjVm&aW4AJKX_Mvjq^tv*~lbsy6q#1(jHRZ+tQ(UAdMhg<1;l!sU|tCFO=z`I8&U zXOXCxuU4YfawMfv5T;E%?z|5qL_N{kDaNYU;+5ypf;@6@&Ccy8@?lV{KHz?+H_oRI z^!9$VO&ibOP7kcBg=jOdVK(;hBlg73wYmm706qb{RV;(QVxR(ri3WWlc-P8Z94jbN z_ZU&(+&%LP)%h-OejK&*VVl|rxH`m`PTE$Fg(SJGRK{;Jf30D`q`iQ?MHMU@=|{!! zfzg5Pqw-AjZBf7SM)iveZ*`1}0z-N$))cNEQ$WOeFC8)n*A%tY5ROlda7jR})Eh2M zsJzuKFLIclPk8-?#~H6O?+}v*68cJ-GN`U7?o*A&jo|EZ001O1v|3)OV7}#cTGpbW zJ+0?28GvjV1Zt{O_}RB=R(Se9?`3)d>9b(r((^a*A6zC`HoqzF%T*89sK!YCLKG`y z0>-reWe%TxTNqJ$*NB(@#$DkIzD8On9l@vnP}zD#e3Pi5Gdsqz!1>hrqTM^(*NCm_ zgiD_AXX z5IS_}@By52y@A0K=1kUfn%;!e(FReAWkU3JQ;r0#bdlc=Y%LI|tk&nRg^C}+DiQ!8 zwZynV#?_Owz)Fl$VBY5A z)&C13oAj~S^p_qpusm&ohD~|P?epO9YYGvbrM1ilD+I}h{12h+st7RXJ|5=T_Yni5 zgU-J)_J1fEfTnswPacdKP1QX7*}_?_jQ}_I$C)0av?#ZLDSpmce=ahx$JkbTD0(lP zj<|P_T!~@@xZNO?BTT=2Tb14~fBhR*Q7D(M9){k;-KBnDu=ltb51O6YIA6G#)1Hn4 zLLGhMlQk+RViXXW`tKDa&migBdW(n5is4D5yPW&Wvc^7>)fM?`fz%ZYU4@BGiK@Nv z-v*$?BdTdWzAn{#<6^dPd zas+SO&^9tkq-+yWfFqcg{0PCYJssA3NPwu~l<{~(Y}km3;<%gH)1z_tSIya!F*7qG ztN?MhEERG!hN>QVhEoT?{k2BNhu#-OamwZbK0dO(-o)D4n(fZhppK3XJ!6Byvc95q zARK+*(vkpx?7#>v2LRukcm4E$fdj+p%}@-HcnUypuQZi18MoOtz;Ln=h;ym8d_GOM zPlvHd*ku62Rtfqg_!4BES5cuy-6QvBC>|lFo!1;V8N!6j&VCrm!aew&SEZ{v#wjbO zuD(7-mig}Yqs(j)S~)rVzno7X&^MvjxH!9S8No8^%~uiG-jgsxV5;*r2(x$kK-AeS z{PX$aECzHM^%q?Mfig4~4GnUEdkhM5e0+TVTB4!>(2}tX!0aVlpE{%garOh(V#IM~ zwtR*QK3w`7z`3^!ZI2sqg8lRm60V;?u^(Id5_4oeB1i~qX+^8eU3d4=IFzwQKcb$?L_bmSm)s#q6PQBbNVhj zcyBb2(`O-}R;D}bh??g}EwR5c{mui{RI2$eAx98sb{6YGR{~;8pxFo~C zyx!CB%slwIihHcB=qfcrp3-etv8V!^w+F=rx*`g`^ivA;>Ep;HM{i^n-gFr|ly^VBw5wA*ALIi9Xa4Bfiz3#6cmrAc7Q7&V7{3fGaUw!vzSU3v4 zJFz@(`Ab{yQ$TImHVQNey6HQA8gH$N8!k8jMU<{TPf}W=E%L$L-SY&k%||~cz^WRg z|5qKI7IMkiL5%g61-Sm{ehp!TZI9=>b)O%4x;Bk@GS~qxTJFQVaj^trEP3GVqyc|0wO4!s^JYYfznp z3|GYyu-oAtnI~#DLk5r@&QwKLUtIn!FV^5|8x|=)`G7NTtm9;(dM3D8VZ+kmNrje}{xJq7!aCd+A&ci&9Q?kMdfbD4y$F!`}GjfUklYqgMh~M;lETgDY8<)a4LA3M*WKwO)oE@_^g|P9IF8ODo5x`X|+n;^1^jMj8x?sl5{r z#*|UTZGPqOJ(_VP?71G|f?1hrt78}6OD~QAZE8uBjmCK~FbKJANtyRAt z!Pb7TA(2QfN!99cd6k*gXld!w`idb%TzlBbgov^v(s#^I*pW_&e0V{L9GyB(C_+

      T9pdg|Ws<+o0JXVGiwC4Qz*koGi1v#+H8Et~Gs*^vRtwtL5|BlEe}Ay_+Qj{3`Rk=*;N9qsR9&FH1Y8 z*mR@K7NWR{hs@z-Eb^Zoi#GgtS!>jHTC^d9iTg<|qnL3U@0_0XVx}cA`BlkNMFUQ= zakO$Qr8*U(zn6Yyd7CME=Tx7cJr*zXqet8Q#T45@WJN>GTf4RSortqD8;{h(N(Dey z9xOX_n{Y=E+L2mo|ck{;CcTh zJ74OY^;~)=n&UH#Ry_Bp)#0 z3ub$obN{%}Ds5GEo(D@I3u$9?=)Cuo;6(bEk>o_;7Rjx5o#uQF2yZi?vt~_ z*kl%Vv=++n-0(}6!)BiNx9gx3Q@3{hI{3&Dnbm>*%}zrL+}NmbJ3;wxg|rM#=va>^0E@^a&s^Zv9}jO>q#|361X2XGzLg~ zijRjP6;R>tZB6981@ZNbExv=RGwJO}PGxgDed_G6)W!^xvk7=)27Rd*=~?UB?GjeCC065J!y*fgkPjbC{9@*uxCFFC!fsc8h{3NvK893r-skQY z#>S8>r(xmh=6xB-H}U+0X!4zrQ6zqM<(P$qdX>E!5ceUsz(=w>yO`?h;)UtY-5|R2 zzSKEP_gzlPA)y7oi&}L~q;G!2&4835V||R=4)MA{k8f;G6}rAk@d1y8T--Bxw(4e5 zkm=-oQ1aH&7PxDiiNC+T>YZ`7v!jDs`wLuR+3r;D<T|}R=*a?V)feDZ8zp0;L z;XTjt=sd4}cGyH-*kzVr^)UA}4GWG&&GVc+1*);1gR3K&Z=!E2DL%d&9J!C=fkcm7e1i5P?~&YTRmW z+AR`2Y^<;FH8;(+Rzw%a?0uaF!klbYQlO7dkH+;4pLUP%x$-n{2obH^T`iP%^OSz{ z*p9qS9AzUTFJAL*o146g^~yI<+j;}0z`f`T+kP|kPI5o`Ed+@YyPfb>_v5`Rs_6c? z;lLwm@k+~H(6@r0iPz<=>_gH<0|0|xBjy#7Sz6%_R%K=?*Ln#>U>qYQ5V0pV9CPF z8}HyW&9BFm6gQd6-}`3Xc>*~PUdI;hG>=IQqRuHC^ zsm!+J;C}P0(MAt#)EZ+EwX_|p5}qosd#*zYwq`xkLCQ3FFIzFg`?#&jsvbtLyd?Y*zNmX z!XPD!4Qx5o&$PJ8TRR0hs*S@xAkyRz&U1(_F zvy^kc-H0g(Ag0!yqR6WD$W{3o79%CUo_ksu=-0+-nJRdzw5zkRrNh<)(%}sk61CSn zK681yU2bk5o@u}W-%-hR{6m~6<-~SF+0i=RDX-{9cE*9paczFkFxr!F5u+RmuG$_l zu#@)walN`$l3^7!t!!|~lyv(>(cZnN$tHwTe@2%hs!q)Ok_c3)S5s;2on)ZYFvU4HwiLW{x%6TELlHx-UmwR6jV6~8e=K3M zxoA>yPd7Tp#x~@tH}^Vu3$!=JmG|0=rJQwI4Z5?cM1=}3<(Xf37++LYfE248x+^e} z_rf7SLTc35YAv#Wb^eff1YBEELXU7Z*}eY8W3b!Ic7k#maW^+d&hoV;{92YUh1K*j zlcB|VH==^h7$I`9Y`w(-o(NBJ!_sfpR72J9&NC>{&LYMQ_H=5AZ{PY5ve-=bX;%dyY)E6Vw8 z12dVsf%iT-^m>0|@XTM+C>EB?o_XV;29ja5o6Emz)CB+zPptHT$g3<_;%DU5aK1~s z6Ahc62WJBA7E!iz;bqYTJ!A#0^R6C75iK4#Q{V`#=vx!HDE~S`H&zdfn)@aUrNZ7iO>9BlDCX?<(Vs6?AKAlhv~Y5m!tM8E+PZArFZHyFX;qPD{n0L{qfY;ZH@Qvv`_S>Pm{T- zGczy#(4Y?dI2&6^e^IM4(oRRmKR3UWi6N7~T?>^0sLm?P3%l||V=n4wN)!mMCBL%l z6TGw3bR@q#kdP#>J186t{fE@jlKV{fpJR|Z6{;{`pO=sx{12%g!f^;?Fg&01q${NeN!WAczUS2$BSV}L| z$a&7Y%hU3$W^QSiUh}r-{n)l)L1lwAp#2e&bxuVFouByR&KtQ#*KKs&kxo`W1 zX&+HK8nL%~lU>?88VZAKBQNc>?$i$6HJt1Bbd2N!r|u$hUzDfC-OlYeMKUIRPhb(b zk5u8Z2;x)LY$GRxo%K9L?h{Jv;pnJo|M-@(vt1Kb*?WiRr2qCU{G1}cNJ`&KwNnGB z-{ScDYkA9_9dML2F^{{VL(;6^EazY9hNW$&?&`uo5_4&M-K$fd$}~`RCdy%G9)H)E z^eW3(BJDC_8kj4}qu zt;V9&eL~cJ9AVI5#SU>v~CjH)NxG~fpX~H%jTwoJ-*X)s)soFy> zjr1EuezQyQtHpl2TmlHZnC_mnqq|~f&Ra0k&Dri1g)Xvl%1<*UVlraA75_c2Ju<#b zG~4Qvie@%)YEqkIzo9Lhct=qUz(n45?!kwPvJIfo%+Kfk_`y{_WR)%`jF+^niuKrC za}jv&Rlk?*M2va0kOQ3^wAe$1e#y(xN?AJ#7Ea$wgPV7V+0ONoJuC^8i|1gumf7-p zVn&lM8iFMq0;fa&xX4RJt?zhy7rYP7#O7^Fhk+=YQuspYX-sf$zjSWk&a*)0@N~J* zJ!mG;M<$E-Nlhg@zJUeBOm>oO8=R~me>W#}C#KiMsdIS>EmZxD>4RoQwpQ_#0V7n( z91=xnaL3|`Myip8f@E}VVWBDm%5U_54N>T=q&U%f3w*VUrmXVSi#G}OT67&VueH6d zuSUQR60Ai!+67cnvf+2^-__pv9dL~FGRL?K@PcBjJ^;sXalMy|4H<_-W zZngN$&p6SkYu8pdd@_Ylj<$fV;bpg zNbK>O=R{jKXi+*^XK@3~Cc&$EMpx}kFP>gO47g^g-+F3%Zwlr&z=6vd)>nV4-fcZ0 zz<%K~?3`==_L@I`JMmc<_mh=DnAc>}xuLZEt1WXBukva~O^v*2{3wf*gX4p0ShD(l zOA{%JrCzgV8m8i{Jo)|Ina$tnp2A2uLfrO$1Z~9gnSdKIFK7Ow`ssAVXcaWM)=2Tf z%{Em8ZFh$LRHTCdfOUuVIH_XaId2Dge?5SAOQ@}5*rkyl<JZlYjFc17Ol}#vYzn7 zd6V>g&lOnG9nnzfG?5`|YiZIWJb`Jt|M{H-->N1<;V6rAC`Gsb(M~t7sCA5Rq(&L1 z$!?U_ywEd!Hh67cp1A!OhaRtePC@m>-bNAr~eM`2Lw^ELclg@*HG^}=SZoNO#Suqy1^r$^%z-#$U(Q^D& z$wQuNi@kN^s*$=`gj!cOLZo)~+_)d!DOJ|5!rY%q<~m&=2t@9N!(%*qM+6ch%Io$< z8k5jcmsZ|IoXuk%#Bs}xn{uR(mg*$slOB7tLy!5MwTlgSWC9-aDm-4fs%ws7aXMVz zq0-!H-*KC&g=~t5Xr_&D@%ZbI)g@8k(bwX(PCL4cSs<<{`#ehDy86P**_Vs^H(uG$ z&Asld+0FC7*{<&P@I%qAQ@RTR2J4uzW@p!zZdU$X?Ss7=+xcYsbOi6W-Nrc5+4U(^ zTPR*yX6Q)z&|+ID*PJ+W1dNBu*?)UgJN=HPgFeCdSMca&4ZM!&`D)N8U6 zdy1I5tD4c-$bdR$bu{+otoMg~d;o5`IY0Wi4X!z8bP%ETdY)7uqGffNw4FZlDkup(%x*-K$pZ;XsG_?k0Z`J{Cqq z)=N7ZCL8P1pN7<3>>XpjjdvorgnGq(_+UkyGOWg8RGF4stFt69qjS^KBab>mbADvA3 zbJ;p>^8noKT)V}pZNm}L3uA0YE5ZGJvs$V$6jq0qXAU>(oYUbNx@}sz&8)E}P3UzQ z!5lpq2?f_l3|GaqipA_H5&NC+a;Fm(C`oMAe^r%S_z+EN;u)d2-(<&{MlBCmyiU8u z4y>^Ivl>4^GyMqe$m&;e=&YTmjpi6A+F|`tcO>USwQCcXCpw3l-)NXq4yjEdIB;KQ zbtY3sRg(g?y>;XbaD#hRA+3&QOx{pEd&sw%E3!{+>}jD8b1oNKFJ6+u^I=qMS6!f9 zTS9m1N@MZs<)-yFCk?Z(_Wmaw;*Mds?<8S*F52PGuZ6`@2j^S9dx{f?Yn`xB}>9pb- zEe{r}aOs9$BbnL{Q$U5gT{yZZE3PJ1JyLh1rm&B>w0b;TB=M<9D`QMy zYL;J=B+GO0bO#0YdYJ`?Wpns(Xew*6;I|jEK@F&{w`E>K!8MA^v1b=pPoPm^+kUfo z#b596^%2E{smdPhe|E{=GFRx2is#V&yks5Ejv05ee?B{|FnCot|`5`{|?XCo1 zKdF+1nLATSy(%V<7$QvrFy;%6J-UNvxn`OSfF&%AqjWz`Y^ThQPs+IOab41Hi~xZ>z7qiQ#MAsS}p z?;V{X%}Aj|xCH9fdl3f#Hg%Ki62O}WLINjJi~VkhkOzZu^Oh*ApYQHZr|;VW`}u+# zu%GAQTaV4Cz1ztVN8AD1z4TGk27Z(+fwW|d5fC%}GkXy@F-cDP!vXu$!?=kbOV#|? z5!WoToOHgTq#xg|B~BnTxUBG!0vmUu5Dhf$20I`BFegc+((Yxgp{j#Nco$U&2+xFv zt%suQRo^;R%-cS6k56P-GHdQPFBgnEvr!XvJG^T=Q>n$|G2J)Kgo3=}(mS@}Brvhj z=09@hLNW4te|qn{)fel*^?`_x#>>0c?hfT;@F}Y~*x9|ipj|nxNu41z#(nR1QJXJ^ zf}eO5)T*hP?@ncL&5aF??SgF_D54N%X{(iZpYJv!yfim4s+^ao)5@$#%d;Poa32N; zVX$tq5_chy6CZpvM7Q%l&Bm0>=5vQT%xrN?-rM@-{b3B>kjmf~9{HaLHYmndifvU5 zk<*^Vvb~tSJ96>WWEJ8ak>>1Ht9e|&--62q&WQ{SWB1zf`@_cge(aEU#E(B=lkNyj zcyi>3lrEWv>i^_-0C&une^dl``P8*Bo2G`zYZS03W5usKqHAHTJ-WXyY~e!}bZr4W zuPm`9W>E))#aVQA-%S{hC{ce$>VnJ{roMzYIJ)#Rmb_8Y(c{Z8Zb|8NCkDO7q_F={ z1HkPJ7=od$CeL5{xcL5x5X5hm;O;TE3wIIe!7JIO0~!C+$!~clyYzCD{I?26C_Mej z07E7zTIE|tP>a2^3IT6E4j=p2?Z5xl?WyY@UCM=hne&YWOpBK!kz0N>Xh1HX47-sW zZiPTRhkXfU+|VI!;mD=Gk!CB=y=w%|o%Q_M_deicie8q=)(XxK&w80glH1;lcO0dR zk*>FxjNG{dz0{PakY!W9Y{;X&CHgp9PJ<9@UBQPNvx&)DBGtwD$lDI2-X!1a5akZQ zWpUt*y=c)!mBY2sZ@b13z4Lu9B?8(|Z=0r2^dCL&5vzqfj9#0)+qrsf+hwNHSa_X| zsMffJv+Qyh@p^5wum50g4V#B<5U*JU6fPp4`I>scwCbF$?OpV5TX=(Wr143msO|O) zpQX;G6%_IkvAuxnbziHlfdg3|`cJW3brIc?L*Sgq76FT=@ChX%oa+g18!Dv)q=hj_@G)YpPD(<~uE2 zY4<%>y6Y?2bUTb?@uR4+-<8j&aseBxNh1tWKi>NNg8@!6Na>jd>P_Zm@9L#&z9nG)LH7oEHGnC)Y6xyZL& zZVrbMl2fyN2zh{+dyv;K{XvkvwjFM3;d#vQhsr)_%`9!2GlDQ7L4bC~b~1w+HIP-U z^CdGAVXhJ-edpFaq5U@}*)!qH4O4upp*Eh~d@fBRKZ- zE}xb!_<1r#a`jdDRmH8uWwVVF?(iS}y{JW)nGkm&(f|3Ny%;ECxS|*>yn8O$U*NBA zH93mY@+YsTZ2p_5{Z8kCqQS{{_$-Xl+jV+#`77(vdr>71M;wzUumw;NJ@UXPUd`~wekGbDfyG1St$RkE$ES<9`NYAv^)2PU?grmL*0*+Lutt3a`{5W zi~F&xCX1<2!DUt|H?;{8(lxGi4~RGDiIJRU#IMSq3e5(rXd2V{3Ei30_PY2J8u>U~f&xNZY*g3lu6mAmF%03@|9060bG#pM2q zXKN}^jt1y)B|TY?QkcJhAKNwr6!^{ipTdFW_hA(x0BBrnU zm(-CU`IY}kqBzHE^zV}X>?%n1f0EBW9|MxR4qj8h&z28<2mN0pnOGe)0-WDR2q1~5 z>tM=KUDx2UqCrkhsZuJC^mVZJI~sid+*bqAbNC>soTc`w6|*$%9i5Lv;(z&FF$mOBJ?$@3`jc41`@(JWdfcM_g7tH+&1%NWMpyU>Ysm2rkcnBGK3g;WI%;8obuTZ zfP^k2Qtb%Sna5{Tt@HkqduszhBw6@LK|>fxV?g#&YZRxN$-kQZ_mmoqfGiWqr=LMU z4zVcI_p4GoNV{aGyXn_fo`Tpm5kH1a|IhA;jYrm?|owT$6$G@TYALR%-{r`os{-6E{ z0K`a4JUFBOzYXL5y8n`MB%7paR*8=(biU3!V|86f!eQXL*}9L*WAH)IoG3f>i054k zxnC{h&v(&MlFkkYK1pG-;`lDy!D`q2jv8Im>DSSZW&^VROMVYw;}m_3bkND+D{$-a zFthq4OZQ$cZ=0Z94EJD(S-q1yyQIJ+N8SR68ZuFS%|~p1RG`vvNCfP=>gxW>M)3>I zJXPkmw_084O*D5ewOw6ZrBI204<&N0$#XSk>5GB78q!mGqxF}iRVvPZS%lu76Lsv% zhEUeLF^(l2gjNMwsr*JFcCoBeMBMOV;`h3(cD)ST>rgJ%nO`;ID-vklBe(Gw($}~> zk*u46i-zw%?@j}o0Dtfh{*Y&$z$0NgG;#ax7DhdJVDS%YGGYzL=gBHc7fN|qHoCcU zu@s8PdR_@G5qe8)RM$?J^u=>w{+dA>NG){PCx|9fIkD_|NjdRrQayJaJ}5`lnGAjq zsCt3jGwtKH)kSA1n_V61KPc%dwn`VR^i52VouU|1M1{|~C3ycw)BLr|TmS*vog}FS z46JUS)ai)@Zzm*Q$ctzZx@3dPR+rK?D9uPuuKZ%!TcL;JI&446g}I+q7+=`_WTK)% zhWA99AZDZGWqe^gn{9U)YUZx=*hlq9$Dh>tLXg6W(wgS7V`a`YC9vCP1IiUm zpwn12D#(8;hY=NsWmwjEZ78Lx1T@)2N8)|Kn zC{outQ+rU|r}TS|8MU9NU_jCEi$a@iywQ9^3Zyn(<5Ei{AfE6nas6#t;CJ&?t=y`)yU$u5Z(X07FUxX}$RJ2DOx zsK1a7M>BGkbAYsi`bla@;QkD^<1T5Ak-OWYKo5YCkru15hYSz{6X(*eVW)G7*R>IX zJs-@5Bl(yW%6YaF&L~R7^1e=txcOSBwB9r6uPZ$!FLImGny`8SSc(6Ku&)kiviknR%cZfT`qgwi!i5kb1UVQe%EkQR|{222_x#|Vjm^zR-%&-;GA??1o& z0b|?EuKPOI>2p4($3>Moi;E&&XRql~ro2mTKg*i3he|c6A0q2M4#)tu!Af1%%<&&2 z#<>Zx`A`BhMnpe_m6s!r*RnVj8jj|C_&Jjl4~XP}D}MLHxZq#rOBA!uqJBSd;fpR;YTC|yM-H^~fmIYflulj2lH|B8wWYb9#JJ#m68@F))R(-BfR42Z1re zQT;LRqDU{ze%l*3G~ONHKBf7-c}cN?q7NlR_;6TpF=8djltZD1`8s-I!~1HIXjp_7DHY@vXhP+R-6>bmz}WXY-63-BF7@par>wqO<|1mxX zm3Sn+CJt#t6qJMF@)E=Iitl

      ^D|feREf!HW~ykEQS3b|<(tByfnR!A=^iC$y~k zg%8h0lUnit$-6a5l)^WOU+BiT?y4JV?-~EEYk+-?}J#qWO%eKVEUaTt`zg z78BRH2umdrv3AwU1En_Kp+67BV7CrmEpe=L`+?z#?p37VAbY}lTw7J~oZ`V9>2VA! z;>V?buOd5)d*TKY2YgcUw>O2P%{qjz)~w9DBb^^-y;$_H`61!WJNo5!t2TH{8Vs?* zS^*GfB|hPcp`Y|r0Oji7DIawj@$3EMQ9+|qEx8nH_Wml9*I;3R!4?tm!RTy*5H*q2 z28!4J`B2>L%!{{lW?k6DsOMAg`Dni+O zSEJeH&=)S1=9s#cB%0KN`#~l53bx)Ga{-F&`Lj@}s;I|gm(0&+brij+jRC948wX(aBBPNcfoGkGkNcjVPvJT0)oP0vkGQL#(b z&8$^P-Lti`v5TH&kjxr2C{OJrPjn9o%DW#VZIb)*U_^Mb*n|x;!Y#=uEp{`YC5P;E z-%R;2!S$e$pxQ+%z+Ph6k0WbV)Wj+#%yNyQ%0$w3t`EPRs;_)*VZnG=R~66k;?E08 zN7Z>w;`tgb^PB9q-kC^nG_1XS{<5gwMVHedEaH%F?q^S~^=Ok4KI02k#G?+jyK!9F@Z(G~|m$I>Gj;a5hILoGov z)_O6XN(f)(Quce@=uS?jQ4qS7Rex$Bw&{K0JB03%X|P6eI4HlO&{y{JOmd%;`A~og zb|9T>$ASj;N*I2SK$o8>4CBm&+*%>DNMd-76tHalGkcBB36G~%JBy6Y+Zdn z;O`X^SP(}qBE_M`jb>8Xhcq;8oTRhnE>xU>a$J>?wCFDL3Juk@2;93{QJYA+-vZ$=7s4onItDdYI1-*J|cTu-~>D3hS_{{R?-9{gcJ( z*GltjtZP@ger$fBgIelzww?`QNl%-Vzdh6N_f=C?HY0ojX`^ZE+xtzvl%G#otG-@? znqp1QuG8BEN-v|`2$e!qWtM1o=nM`cV)K~|CW*2}D{4&m;x^(_H-}$4SvHpPT3W`D zSlVwE0>U>gzPpU59QiAduhe#B(bX{oq-s8kOr4M&C{NF^*tKB3r0wN)6X!%FZn-4^ z9&wn>;J%udAS7p(Luc^wc;S65T^O^*)0tWx!SOtJt>wEZMr#gKzu&_(?-)Cm$qgB+ z;~$=-k2#FW29`ZbIlA7>Ffs?6yD5>_;%tme-imd+Vn*Pn`!jDbp z0KLeSMeWW>G@Q@$$xau^1gK_+G=x8EpZ|7e1d ztq}7=BG)aIx0MTgBMTrh(C37bil>*+5rAqYB=EtU_>lFsI$)IomM!WQn`SF*T^NIx zWSv6+hKB_!$~YlW#!<7mru zta4q8UjzD!Hn!(73^N7h3VM4Ly8p@!3c)K~0&!;k!Tif$s&conL{=d>)2JTVLN6>NNK;Ypv~b0iwl! zcW&oXT!=}q2foYWLB0@8r(X_jTt4?`!@2M6C1-k9;B1rT#5?g{%bzZ$?W32r!Tj7h zwf3CXsm6muDZE3U=DEcMm4}FX9h(@VxE_1wpDXBZsNj!R`kn;)9%9-`%e;r8-c4)i z?uxoRpj9}XX3+9HFE-4;YxTQ5-`U=sm%Z^;@LXNpcE98sSd!y=$qkcR`j9VL_(u@% zeJNeALTLRJ>#OtjLZD^*#(NFQ~PtejdltDAt`sJ=YW9sLJkGuW zDJq70dLdfyQ9-A;mE6Xx7NHPaP(%ZIb@T1B9+1B<$xkAC{f75L`!>9G%sZQ2bAqj! zgnbxUI{|X!aDHK7LY4MY=*HZbFbG`9dHTRvEQzEW@p z{aXC|rTFQ|0n@Yh(DTk(Z z5v{{`7na!fiYDg6e6;ZW>`iHpiAxdTKOfuiO+F|$sp;OUs4$%LD@`BX`zh_+AhO?v z>Qz8ZujnR1&kl4G2dh@R6cj>X+Y#Qq`x7S=1Ft#VJXnw4jQV+=v9K%peBD?hH7|wv zcb^3O*0h4~PJS*od57#^*`#)+QjLL^TrKuq^fLa4Sm7Xc!QA$DqD zEesgvr$wNL#dDq@yv4hD;ok)dMVyZCbY?+@j`u2kXT4O8o=qPtKilNKTTV@S(P-!X z^r$%S;QUrJ;>b<`ZQX5~{WH_n|89qF7a%P6CIuKEPMd*afTv83rOLqMmz-6L6#U&NG zZOAvMcKN*E_|2fUo6|`-YqKa}s`HnD_R?e+df-59L=nQPZR~VBzUb{xBT|DUPrs+S zy^eS(hg*{*wP2@ZUl(BYRNOAMd?G6W!=UrR#>BIB7vOfOD}jj`i9_?~*xMb{zxCw~ z8YWSt+WZk7UVZzqu>gk|lus?kjQ|`zDVls=6OA_&FFH$a{7YS};8B8w|F3nJoklGP zI_lY{6uv6Z-_P}Yqk~}w^S#vfyZvM81EUMkL~k-0s7{8Kb;0Xt6-t?51eXbt)uM5mgV;}3%uk^ zz0_9PA9n7eNZ>#Hajy07-Fd&eiY#T_`E)(4SG<$h{Yn~Vk<29c%Ci7*TB6{h8zz<_ ztx3YO(p85;Vv|{iZ*S^j$g#ntD{E`kC8qu=-m0z*NWwNMcO%7HhV|lXRTuX(0E*Nl zY1`r(Ae{#Gid#S1m3#PnvjDF%$^g&2ejAnXuxegb;Z@npr21B^`kC|ynrO2-pg`w) z@liTUYqNkshKQ&+mJd-W+k79=|_l@m8`W=PW!5} z-loCbxBg7I?DvZ9{n51yeHNCQV$L}IVc?nVW2w91{@l|M(-X1U;#(w1P$M&My-aH* z^Lma-*U^+?YE^3QxYPQCeX)Mk?KO<^K+Z&3iNjO2`n80rL=Cd8{+Os!nW7bRLX@kI zRyOzDQfh1FxPaDTt0W&kZZ`_u9a<#-SbIxH^j8t z+H|OD*;vD0?d~t9v>8Ns`YDpli^}=@z*VKpq3O;Z6Hr54P1Eb%v}wCvN(&Ak1$KST zOSl!3!J%8f<`R8wYbyH>)T>y5T}*0fiF98VAozL}A&W!PW3iqa#mp2thxUUkTT-Cv znXC-m^?rLb6E>DAdwcL=98?2poiyjCV=I=K6!LA-Yd{WNBsxi*t{9_`WZ@M+{7V0V zMM;0kR-2`hWnR>291oh+VHcb9VTE<;;@8E5ODDeY9x{4G9yf|R?(^l`Gf5RTm0 z3GKFM&a}y3(9wl)_gQN?m+YIZF6Q{EC0L>fw!Krr+GHi`Y3>8*N?9CBX2=1$XDAM}p}3{g~$A zD}VuWb)dTGvSJ?mll3AB-LrjQH)TP7VT8s+A1@S_J{JN9vJCdyy5j7#mat{l3TPq` zTF#z7iEOA3we<~#(78ZD2HRQw>z8^BlX=5{&20Xk8;)rUKSTjvgA9Mz+6FA@|8lX? zH!RrrLiCB%Y){^-;D)7FX5EXu;bPIjC$C$Rmb{)|#=Ya@OoXspb~#-`Gk)F~7n{8Z)49_4BnD1SYF_#Cl`2GW+0&kts~V>0kg!sGrb1zYR{(E# zE%VI$lU|YJV$LeO-Pc}jGix5~zc8*Stq4cKC;L??zw+>$atVLGtGXSyxL+fM8iX9 zWoUoo`?4CDbNBua$UCpdT$yHONBwQm1U}%0m`=-aAtjTu15_wHy;bi>`;=Ap_yF&C z6YtLgG~(zsxPT@XzuPbiis+{Nmjr1rbb|NxI9nG@H(zTELb@W?mzMXef2`YB$V4sb zj_tclqjItGDk|~sTA6@TmHZ`4)2v|tu<06Rs+xR`G*$M_v%dn)StVgH{eGMGhr)!A zWC`lNE+PYO`;NUe)DMY)GokAIZ>XNQAyItI-}Ni*uj<_1R;P<}H4Tz1Z}{nKgTTx| z-j5?+^fHB;cP?vIsUG3Upt*NQWwcv_3Z|z_{7FE(dHKHeD-Af^3wE)p9fd$b`Xce1;7LDSWzv^0z#{HEf?E;^)R5mR~ccl?wu~loPubo}- zRN2g$#VTK5;SXMFYkO^EGwydG@uK+kfAMk?OJ(BHw4$6}nYNWWR5cC#9`fE!-)qou zI%C-d0BJJ&h(lZkWYnEr63POc)h~#2_OO`aG~*;eY?I39w@{C6>4;m#4tYek^sY7c z)I_05MUjk24chTr<*#*YV|K9mQhF?Ii}`ay(xJc{r4UtnfeO*%q2pi9VqzGNcN{@Q zcrxX=vGUPMf#`GUqkzn$NlY+idB%4X7#fAsEM>IYTj~&c zF%_%e1aA7G-I#e#Cq+DM9|RH{BcVf)RpLxNy=@My1(kEI)RUsTzPh>*c&#V2HVwAU z=goPp?KI5v0jKwN`?235=RokUbjR{DW7DU-`5yQ30D?NVUi3FCm-|ug{53;8#U?Yu zTOEAI#r!dKM+fEgNeZhNGOy)br|$2oF|E#|Mbnj+mIx1n`(iwe4b`Gqr6msvN_GpZnX8l_K(w^{L}| z=Msdi@^#%1{d9*Vd$x5hW-N~P-T#Fk%0ctU)46}uwvAOpCnSoR(of2;pl2Xz9;UCN*>}?+b z{`dOc4~aeYEF(|051E5mFf_ZCfv0UF^`p17p+mDP&ch!&kDX`w%}ox8K-BIM;Oc$1 z<>(L-jCQNuXYV+S!SX2XC-x9w@+)pB*=sVrY0_fSM?2)|GfrnY8WKFx_3=AMtY1zQ z>2%pF{QD3&y@CMbffGJzISk8tMUV@gIOHr%!!-9_7x7iIxlYFVr|Vk49cJ zMS}y7yeV$qlrBC^s$MTbtgaj33$1$Pt>RAE*5egOIF#zCoE;ZV@1Ah~qp+DOY-Z_o zI%(wd{TT{m0l00zJ$rNXTXrRNqJkUq&FTEUj_w50KDjEJO))q56J8ls%0kPV4wxnu z_Nn-bg{}*4GkiT()>0%;s@J@dHQ*LUHTaZouv}S;EPQOkTOwG8Py9U4JL0%+N_N&w z^%c*AQj9z|=?y@3i6*Ho$IZ8l^zLwZOI_O8F2#g1fz$Xe&YB-O%%sZA z>hCi-yQqmGm=68Aef&+nihuJ-4J*vJ={~PWbC=UVfO#J`5lEIm({nJXxy(?Nc4ANe zDcH%>n2jFVy5EDQra0=^UofVCXGGB1{6d+-C`U6GyvSB-Bgr4Y&Wu$W*3H*VOHHS~ zO&o}Is>Hv+o2fyx3a{usF$xSK=*RgwXtqnU7Slt*irlq6*e}iPjY?ahgofhOjDTI~ z0=;{4(aT-GlP_G8@3iqQ@&Nb8ki^Q-V)3q|SSm#*$6-niq_Ke*3O0FA_mQXOW$4=8 z-C7mF1gT{gC3ee&Oo^E8f!(u7B7=)~H6O(^HvBJ7rX7J5QIsL?pa)fZAt>mwn_J^@ zeG>m-W|C9B(-a-x1g{@w?+;h^i<_g?o*k~~y*oEKhC_l{t%e-N4V&-AX=T87%z65l z_8Xkpu|{n0tk>ucXvqdQm__X0pV!Kz$9Qe;*YR0N$4i@xswYz_jW7 zn=ITpY@ms~Dbqo1^0ZTa*+u`N7CPEIvSu7LB65ndoYWz7+U+m z)!6966y;q)o!S9U_RCUBNd%_c6 zX7lZ1wdn(U|0#ig4Wad3zS0~86(G8AfVyz0VP-X-o{V~9sYr!9QST*yju#d(@ZI`d z!RESx7#kkTFNB9A7XlGr;8`IXex0*!fegpWW7eeXAzNbBKAWizp3-EN}&#x^S;p@q|sSb)IUf*I_^<|8t5I=Y1g->vN`@oIqQipj@NcP% zHdYkoXDc}#D6p(Y-N4s3fk!^igt_7w#mfNFnplsnLY1kM1{ap@$#eJKak+f8w%%=S+NRl5zMF`3$l%E>+t)*I(KH z$Y?`X{PeH_Ak#M39DrDwXmwCj9CQ`?G-h~;{4qZmH$bde=3umvdZ^6{q86ixI5eWh z$V*u4H~)+@KizKIA&y*gY3TY|#|I_YqW^lTJKn5fr+CvLrLaW#NtZOC&(9wS{(Eo< zb|kz(+c3F`dp)~uF6Y1Mmukgq9skzN4%fjaimfz#Kko=Rs0CDdSN_z4favZoy>4p1K&q;D<$O8QOFOB}_ayM~ z;yCO3_>Aiv@fSRa{aWu)N!**yj4VEFUYZ}2@}Gaz(ln;TISmv9{@=JV&Txo~Z1-VT zF7@vPzSqrS5-tk<57QV{oX=)zpwERme$X2~+Ec2t|K2?DF?)#6kD7$R)Hw;%;5i{Jl0GwDni8hcW{Z5sK4I&d{Z*Kz)mL80k#s&tkHUKrOq=d~uB%28njN1|6f#R4g z_KDjeq;S()xi9wQ5*eSM^6SZslYAg`s%!u&YRH&&S~7;E$Jji0wmwX>b0bYrF~6Hi z>@wb%dQi`Due6|B8t2{8O5^i$mW2mf(664%_&DqBC%)0+04y06QND+vA`HNH10J-3 z0MOf`NB%Ak$X-Z(xcxxU5SJ*U<#)Cq-Dmpe*z^d(dzSdx-0SIbQY~E;@12e_97Jz- zdu(hh{2S_i`2A}*+rBet>w4F4;gDaWq!;eD14NUhbWv(QeCn}aW^$2K3b*xudP1OZ zkoEYgNaJSLnGfr(2QV2$4zu03lbUve=_592#YgxixTVxLH8V_h91hhbbjgs(caKX= zO&x<5h2gMj9rN<>@-d(Ivf*c3FDU`e&O5>#J(qfcYwskn=ciJfClPD|gsHTGKI z5g?wUc2ggig#aL+#l3CCEaqDj>;nLU!+zG)mHtv<_lqs| zCCQ=ci{`&TLckwR4!dkD|$`@mp>Wg^Nuvq4_A#sV;`9Cmx zzf06^={x*9p*ca8bBy@!oFvShEM04!g6p}Eh!s6BylkH#!hYfZJVa4iQo4rjo4lk7 zu@jDeD(mn3&s*3hS8oqE!PCCbE3|r{@mHVy*W17Ifv;h4345sxuob}lSJ0XNG%00&POm__ zx)3gG3>Ve)%Yao^zOvFQ9I+d7aK-*tfgR3Qx^7s}*6?>c&avR0A?;EJfjZ`la-b@-+&T?Uj1T6t@-Sd}4CGnHPq)s$zzSoL_*zKAhr zHgWe=L(qC;;UHIgkd(ZHp4+UdrAUIg7%Um;1}ck5%B_%)t=Vwri1s=;5N9sgb3{%- z^;qZ>_L46}NH$(hM=@2^;rajGYa>sAVR6Yz1B*x<3mZt|Bnastyj84)9% zw;}!XI;QFRQL%J4>TdxMv2%yt_I=GAUTob0&+hurM9ped9X!s2gSM_K1?UWhU*w;h ze7kOL298GXb#C7!<>;Tdft#Y2a?efekgjOwiIj_?Uex^1zg1>}s)QCguTu4lQV59% z%f_^2CVyQYYmqh#Ck610MQU8EH`{G)belfJjC^^5hmiAnz3#F6z&i9B#i=CZjIaEw zX6??8ff#M7pIZ`E8_GKQ{KG*(heDK?+*u60X0 z1=_4)oh&5l#JW#@m+7;X871?5W@j`fv6=0+aEO7S*U>)JOMBwfpsc_dEnsR#>dYzC zm&2N<0t}=3wKP9Z>PZLl(!Qhqfc;+W03YY=>lbr`WKO7!$y1?!*|rOiB=?HURvVW4 z`ZGj43R{~ZK_-<9Ka-ZFj@>}sl5!o&Di2m?-<0!irt;ZZ*1N2!ZW&p7O+N2{tZ~(% zsyVB^3_N6qx1`*E2aitviKni{S!0|Gerfe2mVfHi^R3tBH(%=@pGU<|Og^(RFD3Nk z*`#2HABY8SyKI&*GSg-E=$}sAN@;tT=qnGNU~Vpck{8}qV&I?A^6iQug&qXmps(82QN?n#lIkKas&HTRhEAw!$%l)(|K2 zp|9o3CB`Bp8jgW0mk&$1I7YplxLQHNnB%t91m;bjz4x$?owa|rfhr2f8A`R6>BsHv zDNPl-`+a`6{2UCAzBh1xRmJ_?U?$Yfy^XrPY=nY`pex<199&AR{WM_k-qLIyYA~Id`f%%| z%fY8r;s$On>QiQzJ6pfsnbzFb3?3eb zL!|nh6x&L*>NMKOMW#IEM_I3*R9b7@CN=2gaM0Spj8MA3qwiA0`O?|PafFB}PJrv+ z#V>h~Tdrg}-3p0GV>E0-chW2E<|{kMI(mhxV(sPZdhaxmyGNAO*+1T1C$$EB{|IL) z4$tOPAlFLCV6RsW`B`=dFAAcvR3=}KXQ1Fr#$3f)ZrlVRpVu2_ z@O(BG+#AP*5MjVGp(@~>^i_`P3xg<7 zh-XBUa1eJK#{P~i}8Ubx*6{;>=^D-P6Y8<}q) zK6Js{b~|i~AGBLgY1*0O+{#3ISB+aDATRpSYg3y;akw;O*h7sex-(+9F^Ie>1% z(9U;Z5j=9V@Y`LhKBeuQOk$DaO%QU#U8|cyw^H=@jdpsDSvHT}_|H3icj^jm%KGb6 z;o!V$0(5wYWlItM;&ZS4d&Vip6O2S#AjpQ|be&oXAhuDcTU%d1=_bl4fQH$Pc=zj8 zvXF3qPPJ|cO6-{E2iMG>6p9{DD*wbM(&5CpLKfaOD(?0^CfQDZMJViZ;TxPnRHhO`R#fSK+I#c~cV}=`Mk(BdXJ3%}cn+q{*1bO^ z3{&I9b+XAf6Uo04)E<1pza@U6{KB2h^^Ux}jpO0ZR@^?2>GLG)8T`77z{PzUj^6X5 zQL9Wl;pHPXNIY@6O`9pE+-@&N+w0D02dLCU=ilT37IR7c0sT#7I)FrYi5|% z^evZZ2|z~~Ju zxn5PoV_W&Mq`KuD&-FW>jPv+Jwh9H6l);Gj__wquCmb>JK2=w>&FPpq|!xnig2X z%~!`_PNHcJt6xoDV;<;u5y4e>U-=dR6J5~&MgOu*IN?{z%1V9`q6Lbx7()9xJ=^hb z48t4=CH-#%8krk{62F%H?7EZwx=ssE)WT3|Qn@nGy_I`MD>!yU?|5C}1F%3EaK(o? z4;nR~u%)x-5uIpFIhalCT|om!=|vso1Nci$JJ{BpSCzIu(@(+<#3zL{bvddc=nH_| z51W^ZID}VDP)U^;xbYv2X7BYX9Qrt4d_SXRo2639aL+N%(Ah6+`UnE@= z^VP3Ug)fkr!eJUvxun|lBDKQ#8x zohlZJahOs#{i4$97zgSa<-on8kgXKD#-FY7ymIiK`|r4P`i+u=>^`vb2%0BzTdDBK zrS+U>a@$BPYY}vHe`hd#l(+t~)o38yfE_&cq)`}k8Eie*uMwVF$3#r`CQ|h6L~%e( zdCe2Pe6v;IOHPvkoTrAerxlc2Eb@S8Divnf7d?VrFYRQjpv1Jp00Rw<4|m3^<+<_k zJ3hQmjV;^$?VZ3cev=1U?p`*v9mA9PtZP_4w}^28_U3n4-zj(|p8Wo7lbMY7a4d2G z0w=8JJ`InEDpfIVj|@fy{&vrk^DlCoGjMJl?aO;S)fIk$c#+oky)h zF83Ss>3@gP7E_a^&21;>ZP$X|C#r0AOa(U#Gsx#v^v4*dL%1jt36GZxUq0qu8{aLp zmP^x+#0uFe@;oScdq4-hDMw-RQ(nZFR#RcSB@vzZSd7sJKj)DacNj<0D47t0I6II@ zNZ>LEMkaLzMp6F?Ax|b8a*@!wWd-o)ZUD|{U`z=@KtK7Kc+a+H#fJGv}-vEWAy-eP{TRW!mjJ;QXfi9jyuo|=b4r#ze+t&J`X4{ zcCJx=r>7FBX-{vqo}bgyfYiQZPQi_l1LvO{Tdh+}j&HT;9zW}b1pvOKlD|}o3&g!s zt{ecn=Mor#fw#1gq@Y!i$~lz%0~at|Xa&|%R3QlI=$v}yE0j!r_Unf&QQiSzI14Yr z>t{@pMeY2bzO9T--dE!AwDyr?x~~`lz!LCy4SDPQWThhwaMA46gk31qAt>f2L0jRH zjbSNT5t1Tl8hiFpG*w)9@Il|e`Nt?pCU0vRd&VE9Uy-&Wn{()k*+V9|3pYYc5(MH~y%z?k0&U*M!>(C6*Q^9jE#Ll&2vf+*E zE1Ey2h=V**(+PId^TZ2qdsM$l%niWmD}7>M4zASZ(n9a0I=(Pn{ldFO=pM$0lm8;9 z8v=;Uk>p#uNeO6+PG|X8esL0isC{9N)mTQj+C|$duO70FBAr%#xfihHY~R~&-p6z8 z$&21`iI^QT(oJa-bLZ^ycevm9Rw5{ki|_SQ*~Z>v?g|}FgV9vCc+zrvxet|DncQ?g z%P>fCDLnVQ-^r)IET3fZw;DJpboVArt%qE;A@}+=i_;M+Gyb>V-;WYKYLjAGa9ha* zmy#r3gWerrg@0qX!96Xb_F|jSL{_H%*nkJ(3AenhpnttKjIR8QY3%4tweg=neviFH zwgdmMHN-Z7jmHKewSgvPEU^2|#r6)i=@>il2bq0)eHv&|#=ZxPJGNUN&Y=)?EdpAm zU4b4V^&6$w`4HGy5Bd4@B$(;F=ktLNrQpuio zclcD^@{BGD7sLpKjmS2C3U*)I*z3ZovA}$hM$)8wnlDBcFBAFXw-tDE_ zW=-q=cC%4D2fSsD%DWys2r^xn0EiTBWQqRpVfZmJL8WnmLq1EhreW$%xKSl7k7S2^ z7WsL8zG+=y)NA5*Zxp>}54l-#hd?Sz>NNeJntOcZ&h?CIMQ`RmG}q#B-W&PLS?j0R zK$-d`emyz$qtTaMQLr(3ZBjFr`{*jakGzsoZEXw3En~Un_g_wP(R7 zu5Gu=NxBKsl^0Zo4Id4R$)&Kwd)8%=pT(sVCObqBizXD!C?2rfvg+uF!_bFlflm`>L>UU46SwJOOdY9nc zz@w&cAHa~eDa0zhh|7zBHUEBTEa>L2N@T!K7c7K(E4j^mz^-<4gUTjJ=vETFLy4Pw zoEgg5XiY8=-A|U&Np_bpuk2>;{h}|JyQa17Ebb`Ifd4R*hRa#ywm_s72T59_$^&=Q zdz$pZN5D$8g4#~3|{1%xNoT!=l$ zJZh3VKf&+_ToYwxXCDt`%w+12lf~oi&IfA3uoeQK)>K7zUjfWFKXY^aeJF~R*y+aA z7?PHAj8h2wU58!sd8_}p+)(M*8f(pwraeh({X9N`odP)Aguc!t1EN}NXc$D zFAE+wlM+9C1Rv7+Fwm-BN%p+DwvQDd7p~c%EaaBZLe>U%JdcW>udyo1^Jt-|W&V$C7d0Xwdd2T5whYAkCnur6j2x`w19*^E?}iY$ z;Ja+>6b#_iCnE0sMq7q}lEY5p!OoAO;O#bgKos%gAOYx!23lfY=$#(Qo~E6QeBngH z#N0|CScL8bDo5((Dd%@?N#d=7*UzJ^o93*D1{snMG6 zdT(1nD<=hALRXxxgn!8Wp=c_BA1`BxN&Uj&HlO8Pt6r^%6Q{@F^pnkh2C)Igsd|n8 zZ_0pvH2iLNH7qkl&u73foFv)H{OnP#*{bqs6TbdcJfS;k5*Igbtz4-x=5si7e>BLa zldbztWOd~P1MN7KTdykMHsJ}<%%19LwIDZkg$rJ1OxltXt?iQe?Xf_7oH_0tiwR!t z2n=pcSJt_9EbGo+Mab4?A4%Z=f{b79S_^$pcF_G73d)ZKZH8$J@4OmOx><62@^Mpy3F#;m}*8O+*qY zNa(Xl&C(e+4DchiX2>VLOwQ3=Nv+yVS)NMl#%9z4A#PwR`4P4&F6K; ziaSETLQAB&Nh)ewixV?%H5P4D=JS)!pxOoE;GaHt0d#a2P1m=Ba~m8XN2jmEv5s3U zSR2StOhfqw6L?*v4zd7`GI2*-kSxbINiId}k*>|^_k-Fv@{h6NZg%}Z5D7J=_hVyW zFnikK)IiJ%Wy)%$>c$RvQ^x0)!S5i(;8$Aa#!%AKyOo*#IOKvoeWy*lWquhEDF$Jk z{>NEqDFDDs!qi-D-OMQ|Q4UkvB_-Nm_KtfcrZP57+e9%-ry%@j;m-RzCb_9|#XnH>OuiUp8Xa*U>+GR3K5*XH^=l36vPdEj`wO0m7JhXKza$AKm-i&e`aJY zFK2knX<+4_&jj^_nvxRv&drWeKuqF3q*4cZJm&T@kJdjL zL(F%ECk+g`_oOB;X68yVpJ>T*JHe; z!RX!C`(97}3cJJ%Kp6qYaXEK(cES0JVtBlp0n3q`zrbwudp~Jat7DC_G4Vu^i6Hgv zLVN4q``C$|YlWSh^j~1U{ty$QqTc=+-#*|1l8b;Ju&7TQW?-hxcD-bnlKuoiE9Y{$ zZ+f8@d#8fMIV6fIh7H)|6YU+pm%ejGIArbvFZ;Ch1`I0SlzKu~w_e+jtK^#%l1w$l zIMfZ=c8^KpEGV2#b!na#=i5Egj{C}pJJk2Tk>;DlKqfFlXp^R2CN}>lW6#8eFhCp_ z5TLIG+4v!mrnlZ3EHWw}Gzcj296POjKB(gWUzN{u5kLrduO#TffjmQ@>vfzcY&>Ja zsZ+u=OLr#j!!qWtM8tAykj~zZKA*gQA_)BOeh(3t?EgVYoVhTW+1w80sqfKP9gl z*X3`3=UA@_Y2DFg77xXV89UtDlZ=4?_l>m+lJonCIV1R|00_N5gF%(J`Hyz!rM-TEV19*^=#fYDcE}! zAwqX?Y3-|=q(gxYj6MMFwW^96sI~{NioX0^&-zFnYo%Cv;06f3zJ=@&xwIorv7&|q0mXVKdGvisfApI8m?*UU5 zP?t<2%)Kk*4(ov)r>C&XxiSSp2z%6?bvZ zCqmA#w;ZrQf3d15`V~854H#yF{1$j)K;`O$uV)zOf%dv%C~VLBzeJIY3349p^b|*Y zOVlmRq?+chv<02VADCNgnwP)Ne7_w-$LG8(DiozRR^&w|XSdwlvkP5%bm=Y(v1~@W z&rKEz4VizR{Y^;d64PcVR9BWsWhn4I)GTh5Z(X)eJoLmq!O&~%wFJ0EqWE{&w2Grw zkdcwwuH18l2u{ZsxZKdi+77*f4yoFUS~vx8LNfJE`-aesp>Ilh(LlverDf=lQk}4h zNb=6bVVMENya&{9s$ky{+>da-V|v9TK&cG+<6~8IfT;nuBsL2;`oMA6T?9Nr8gXBs zoCA206(GJkZw$z7EP4|!;34|0U-8@eV~REX4;*Y1j{T3;Er{{Hp7h7gqQ2xQ@p6&d zn9)&7I-7r}e+k8jE{UOuNEO(V1z>;4Uz=5n8%|NtU)QlmPyvTDbN_z59Viqz+DphH zFmcOx@a}O^ozHoH-FdLvtmEF$(+a+y-VKF8}Av(uiLJmq^%P?LPpX<2zB{)o~EVvZHqPt1C8O#7v6n5dsvNmJf4P z>9YnY@aC4E{j9o#{g`poVD}nhSk8T)Da#P~B&B#@!ewVNZ+ZKHfL)bRzIfdOOuAUe-pf2a&dkhQL zsZVe@K6oITGH#Plz(xw85%0A2vM$a#hPMV8)lp9KvVt;c@zC0Vp_ZY*25EpN`r-pg z{f&qGc5m37w%I>8{jnCC)#pb*NvL#El=wA*41n3!H5oPWis{VAfdhM#9?NJlH_fi# z(Vy~M!EWj>|33$R9wY;18w{w@xsv28oDuuK=my71Ml<0|VPkhhV(Qas-ZlvFtNT(^ z|6l_CoU*@55E@~^r%_23g`Ma^yH5b6jixA_sum;>q%DZrj*BTHQaiOS>6_`iIMGCv z>#vA?%Xhvyp(^y_0@|S_F zS#e91&YR;VwJf6Y2(D+6q^o%|%dH|IZD({QbpGY}!g`Y-4WiogEZ|`Ewz2z)x%YTO zT6}GJe7*l@fvMhUQ6 zm=`b6P4hxKgvkv}oo7=?Y>EB0o8?jd_rT6mH3X5+? zBHA3{)jaNS#N;p1nIS11LRF%IXZU7{fXGmx|F3Jh0F@lBSA1t)`{>&z0y;mKzIfT< zC~&-b*XV2b`oYErwNBaRB1`5CCEQ@+Pgxvw_|dWXYc1vDPKu+rypCt`E)L2qr<5}g z5#|5K-djLL`9*ufcA)4Vq*DZ>L1IK&rKD?y7)rVXBnD|v32CLfbLj4n?jAanW+>^L z;eDukz4yL%t^2KY-|t)ByY4KP1H&`Vv(G-e&TsFtk7U3BkLfs(qbsiE)lQA`0Vx-i zGSr7H?|!$a*9d*azc&ncAkqzYD>{pT0tD!3s%0FD1m{( zP`UhGt9ySte4mm~Wm+L!x0bLuia(a?0Nau_g;ZBHjzo1`z9~{`D}N9bVH0`RZaNqv z(p5-8X>spXvVO?k>S)kO7W_x@oyk|01&Rhj815>7*$TcSat0tWi00!<`7kHs&A{Yl zeD<`#pk(rz11quqKQijc+nphJ+1cxqZ&7g6r-ek0^8*z2;660TOtr|F0P#Sg(=Ia% zp`Ba*rliZxc(CdRXLFjJf~8xEu59l@`Q|bfRxrHD>vd*&Xr~4#@|$D??S|x>m?3jD zbfD)O${aX74uLM{GSFarDrO)#^ubCfU3-6`BY*kP0FdF6#0}@-duIRWsz~%~0^c_{ zyQK%u73ov7+L#@ZZKkPtMf5+j;!N}N)jd^N<4ZR_EGV7u+>|Nb{Y`mC z2v{etj2otDqCzqhf1gv#h&}KpBclms9WV4<;XC~KU?VzBOX7p>6H&i0Y;v|VOQG`e z{*YsiuV|{9HSm`9mmpIn4F1xmkY$hZ%`G)H9@DY97wudWom<_22eF$ptM3e&Rn-=v z$*|a5{JzA*Dp)}*${*p+8%3VWe+^CZlML?WHtxpcdK4B^RpT*l^oHxV5dt}{ zrHen!g)?8UALEmy0CN$J^tg5ldVF)Wh z^3>KHuThkTUA@>^(Q$`0jP3~NSt~XmF}A1w>@_1<*8F^=ob2DVeXfv0>n`z!w6NKC zQZJu@p-M7Ct;ED&g(uUrvO_<-o*U22AqbNWIl75~Be1k}W(GSW%><17qvm#ni*>aZ zcEtkE0~$LOkpXcrf3hOo#D$c#vv7rmK32^wQEecs%kM7UWO)0jV|%%yo3;hj-cRR* z&`&jMJ@%7v8LcClTP~AkZ@YqKhu$$AERKAWHa$HI)Bq_Nj3nv_9K=v%Ameh+f>trW zid3WRoQCh!R{#+)G?0XKWrbN`2ROyNgcMryeX{Sds$E}{_6t!3gOE;7TEC2XmpXoorA&sdJeifer{B%=A^>Ch@J z{v)}CT|W{oc}g1QHY4Lgz={SQB7ip6%AD{wAZRfc*)6w^$+w@UeDOR9vkJjxSAy|6hDq@4|Hv>D5n@t(#9IP9^g z#oRhbbbf%-uqPJmDj69G87pjYafL{hr<#u>@nw>T+=Q#7@HybMq}6OCiu(Vd%nucg^uP#>ku)EnWH6p zUPhRZQl(A~Tv+w&WIm|v{36GG+QL?x$vO>xnh#kg-bnBUnmLkepuN$;1NXcuwnamP(o<_ti6Uw& zOFS8d_YbAS0BgMV#&tC&sSV^eoL9ZkhvwB z`U)+3dlwZ2+(azS#DwcsmaL=Od2RB!cf1xKE+591!*xFpCtFn1Eu7{itssd@y7wKM za!8={&goP?bXy3F@%K0Cq~M{u4BRPkoL#U zj`jTfe1>8+bU}>Ta(#kpesM8VI))pr=x0xpKC!jEy}R8b(9zQ)12P!``*@+oJ2Ev& zw+aE}DQ`q(b_L0LO$-)!%@x%Cs_d`SzL?0f|6dd4-PKx6xb{nX^rk}!;fs7_Mr;&L z*gXe<;{EadUT$7+ptbO8S37KatYdWk2Fro}Uz6i1&Q!Pe`V|k)I6%jbX_r&=z`2bL z^H{LtKxWIvV+0NX z0f6CrT94LA=Zr7g+S&?^h@caznDJ&H5tIwP12FpbojdKoEY_m-h#T%C%C~oPC@6*& z2lnAAsmZ|w^@kq96KF&pD)xpb(W7Mx>d^$+W?wL@QLtfT@28BdQe}>vsY(cYx<~na zZ&`b#hyTiXT1q@0VML~qlCyJ-Giq1qY{0;iI5}_f0&l|`wWm3nE+~kHR=WKzGKCu) zuMW@)uC|AX$%}}1bjJzE2neTq4+~2J7_!nC!46P1a6#1VF;JFEHW?W<6CfIU3KeFi zxH;U#U%R?w{d3BX=qCZbL`00XbH`=3cwow}{E@X{KXCnfS|#4Te;B#Eod5QiY8D4rZ@rm;8iN9<*z2C%ynx26{rF$k|H5K6v8o&F);^H*p18&{96DoF_ zLB`U`3iiAHwg;wA%I}R0O+(yLqG=5SbgPu24|x|kE>OSx7`fI3bdPDMUJ#=-sIIW? zclz{6sYMkUNrMY#JZemN4p?8Y{xi$^w@fn&A08h1Uz5<#AjAFg>qlH%96-Rry)dxQ zKP)sfqFh{DY!AOWds`X^+yS^vBB)|7ulPAqt)aJMG7gD)EPzn*YCAd%)9jLx6*0a$ z3@%LNO#c)%jwn5jsi^Nj?5UXf!|&6|F-kM2Xzl>K@PPYVaYUcw&1|vGOL)s z7vR^f!PC!Kd+!f@W>dgI06aQx{U()I;UY_L`oDYj6xRRqXaCK7fS6ym|5kY5gFpX) z1;0!6H$EK(?#w*_mMqwxa@b4H@iE}q^OtLfi1PmRz~s?wd~xuC!L)z}x@=lK~hexMFrBVDGx5&Z(f~To6~hVl@40%=gs; z#-(-!804c=sm*H$Y;VGxJ1k<}b~i)3uI#dRTaqaRPm~peSBkQXJ;07e0W%1 z-ICGRXoOA8RH)j(6-MJd36Xa1* z(v7$!{Baa;gu^Vg`n0Uz!UqVTajm`k_G<@yB>PAkfS`jov;RUmGv z>Ta}Kk6&a9L}1yb42a6qM-*6UiYF&0;Iuu6@i4qRHNfFrCVox)UTINpN9NFS%4rUW z^V6*?z;Ar{@@2Qg}Ly|z`(0V6~ z28b7o5pb@z7so^dbE5SwBqyFEIYwG3>CP@7YzDxSZ#vAw0X_lN-%sc6`M|)m|Cz0j zEl*}vvQ`eSudm0!t5(ZcI6JWZ>?PZMDH*bFW>QDK2)S3MHb&H5Jn-7J^lO(2N~@Fs zB{Rj8^YaJEuzRUz%?DdtUgL@(dbxjoE3iVXPpcZl@{{+<+{i{;YG1rsqmlTAon@Dj zd%$#JW1~<{F4HXTdVh(f&p>eA3wL1_eE0Jfr~pY|;j4$<&FH}I;NpHC97^?^Uf=ec zDlsQT18xujrMVQn`{2CyBjU9Jv-4p91KGXgaXbl$l*Le)gTIMsJ$YaYV<#0Y-(Ydjn~C^7Ai;Jh-%|?P_p;l9E#{H7WCtaTsb39sX%pS;5A< z|6BWPF=0~1uGO9C%`PL-*U~-bJz=~maQ=0A;!CavXWmL70lC}>&UfSTeuxP%G!&4- zS+vATG;^w_7W@4~RGu%FN?YXY`M5#F7;>fjT`A&ur&(G>ZMUk=ZxzOOb*u7!U~8tB zJn!UJXXaBhAhc%Uz})dxCl*hnMWh(p6{T%78hNj52(u^|Pv9&bPi@Z;++)>>wU1g5 zNCC&SS28E9n20AlKAkM_$$cuY!U*IfhbieN#=DJp<8`lq9aLnB@AvfP%k2xhACY1)S zT+6z14t*@Aylf6?caJc~ZZ-yyg~L;!`;+Fb353R=j9zWFl!~6UZ?{;uTLs#nNM`xY z{o6oreV{59d-V3m47N4~c`lRLw#=Zfd@C&}K-$zcHkGiE*YZAagccWZvp+LI5ympT z0am{98m%R2cCJ%-S8*7F@u|YmTMq57?1s37A5}7xz&GKc_xy^;UwF}xu$&X7ws56L z(r-Ol41G*`k+MB>rYyf0I1Y=l(c*k$%3oX$V76PGaJ% zl!SehYG}Tj9T6YP&k_=L@Y6zE)&{;MT%Iu;st0|4SeaKe!R_>Bo=KKUwi`M0d15Sf z6hxcp#V-S}Um7VTpqQnD1O;)CM@S`QS_VkRk;?chxK0YQg22GO6LI37nT4o|thj(_ z*t}M36aDu5?_>Aw(xOlm@2C%v28QWx1!*ctr}th?l>+t5Kz~p)CT4ax#cn(F-N1_# za%_3)!OaY(sL|n3Jz~6qHOEm+eZ7*?4^>P-Ntzp{LXHGo7uNuEOVQR_T|erzh_Hn`*y~$8a%^X z{-meF9unpd3_l&6nP0#D^&6RGPE9GrO@(5|e5>@jDM+Soh=Pzz%Rh!uyvbQvzrE$W zS!LdZC%q$o`vg$$@>}fD*b74Tm?3Htj@iFcTDelo@ir&lE)uf0uM~{o9-*Esm_Q2j z6eo1uJv@xTpCiQOeev*)n!bn^oLB^@f91^K-A{wFNC)wm3RXVb8&2YWFE~w3 z49j@s^ls<;=z}`Fs~B~jNw-Y9Q*ctOJ1=DTpJ0=J-gy(vsxHyZkmn#`t8V*!sBbaR z_}QZ|fi0@{z;m%#LbS*!3Wb zD681E+!00j`;pslPxEG#Fi0Q{%6ok4xp`Fj$0ozzMI3MN=MEC2a;jnVOhu>Jc)1}p z6kXQl|6Y2BVSU?%*#UuFI$2WxTMG8oE-^V+37`JCV`9l@X@dt=_jbq%+R{|Vf$OD8 zXZkZZ1Q(o$qM1IHZT*Hh)Kel=q|P%j-d(h)!P3BgZvV?1uZ(}9P^YZ6cB0X}H!I&i zX=%A*u6zR1`CC%RA%CaT1x0<&L9T^&X_3;+*g4M=()SFXv#B+hRNl=>J3;VHs&ihG zoELR_X@nxHg*}40C|}FXugfUq&ZZo)>>5{9jZqcNcJ#JIMZIZHi^ckODj`G3i9N??)?$L{_ zJ9UnuF$g!)O%J54p0@j7uh+`23F?OlUJh*UYG7h+4+G?8@WQlEIGIfyQUTcksjuKn z%c;ZZB=EyblSN*ud`(4qR*>Nr5RuW9EBFNE#B| zK}4ng9Tf_nd0d>o2#z zf9_7Wk@+4s_lCS4`R@)wZ%gL|){okcVyTi_6W-tutc9dv$pv`)Lo8Q@O zhga<9V}sQ}&i0mgwSoV6r=0GY%{`9raLJ+vv{tpCMGGBW4*}zEr38!yJQ)6?^;^8+ zR2)$8vaF-?vWZ`oS5a1bGt7{ORPl47q>X0)PNwlYIf`U@7TvPuk!=$*!8;WXaS5hW zA^bWiNd=$W&ZVU(9FS z&CBRRP29{7Ng|!6jB62rFr3a5!p+P7kppdQ$4mld$#brPrmiHdKSNGl=BF zn1YL&rHbsin;%*|n#Tv!%d^hw5L77C;K${`V6_^*6=AOB4JQdk(h|u;r@w!&+lP03mM9EZ8CIID9^n$CkS%b$g#=Yd2K40Tm;xs4x6cfw%7RL#jX5cs z^tdTyc)4OPz26~Tn9fLjBTjCJjap`HIsK{LBOn+nu`?T+hebHa!OsXIgnNy4|4Ds` z#pg8nJT~Bgxp>K`csVui4P;i|Vc1u2k7NfkPqeDm6s zhuC7jt1C6$A|kOlHi{F;`&z1B_O$H!d@l?~JZhqo&K>2n0SDZ`)r1F^wPE;0>r6`b zwl^u0d1iP8FEmMKZ6lE*_1mrw5a5kBoGPy=I|~iT-Dv=!$@!m? zFoQBW23a`3344vQ2STRoG+9)1x^85Cp%-E)AVc9hsE5So9+l7|TKUvP>DDCm2zD#9 z6BxC@*{IWS*x|o;6~cBEmeL7?MaPLEAb;3sI=#R^K5RU6e6}Dw{ww9Pv2X@weeLSK1QE36v2y9;N&x9K1n z!?2?Io>)YsU$*gh%V|cQP&}V#Ez(0=J!hVbtOj4gwyd7I$se#|pOZtlg7I=TRrPVy z{o3_fn?~$PFqCi8d#HaoUm6ts>d*krn>c7R6`zu|4X4yzcsXiGG4zi|*z^|F5$?*q zj!3ynPsGNUV*Hm-ajhC^EY@vY)s%!U+rH63@3Z$113T3CxP_f<1p)O7MlRzwd1`2v zx1#n<({)ZgOlExC_p>|X05>jV(D)6E#`7F56xvJDLE)Dd>C|toey4z*< z>cULX)r)jZ)kgPshN^^A<2!dtyH?UZ`b}d~21FFynDA5sQ{Xnh{Xa@ggl5gn>6#MA z4MIH(8$EQXdE^P6_vO-Zje@<}{dSLU*OFx`Rdt_gFREf=MMgxgKKxns&6!%IO*mD9 zUOOV2B4SS0;B_YiV3Ixvm}l z2L&Ld8y2UdxTTNFZx>2lszry_e*(A$hnCSXhooS5Lj!4ZN9hCPi+RVuw>y{}t4a>Q zz&3JD?82%ueX0FD8GgR@r(^S=jZe-+FT&3QxRg%ElD01iqU+rgvTWHEpL62!1$^UNY( zzGw}kW+N{!qK&C6=8b$~fBiLeP=!PkHWeL|k4yLhGNQY}EW#pQRWA_Oyb#yTx&|&9 z)a$@mw8c+r`(YLQl+JOcm5sdpqL0pj$E8^*t7=@6%~}iiJ$w4b6}WYtSkha;^EG&{ zocE99KVJ40Lf^_M&c~4c^wN&j=}|#C@W&|?<%rm$uibPNKl4%M1Qgw}=huPB{^h!7 zfR%FS;Fo_t7)Uq|Z9+z7=JsE}N#?QEUJrn!zN@(BCC%v-@?i|zjFMVfS{M(k?qmUC-sfxC{bKM)@OweG0Rw6n zNJ3qEE)aJJnNA@a@be?)eya#f$AW&DFTpwF3CV0001jXRUi5cdC@&iEg#Dmp5|ac= z-hTLGgm*`T(9VwAnXQZWzH6I#gbEvwD&Q##r34GMBDb2+=MWB<@tE1H=ukE#K@({PpDDmVf*HF2wKRlT*XZ^u0s z`BvKBLugmN;b{0Q$#nfX05t)uOGh2RhzEDmte@v}U;VjU2K+KU>HCEa3&ftpE~++8Z~o`1t!q zi!?5v;JHB3Z3)P5vON?8NO*{Q-pwgp_ELg8ejO{2+4v& zW={hZadQ&507e1`XAH)9-q95UYskr!%4qMz9s3fgarF+eLst!%kER6dH8If5r+4c{ z1Dl=TMUihnIQBYECi`-V@9eLn0KaxhVF1}khV$fWOYdjMHz2zM;L(6w{UPKS*Yo%PGntr6{kVG4e<2(4e?7U0?fWAfhU)xsxNw%6Z8HX5uR^?Al)cZeZPII=4H! zelT$@4&>|e?6~5#zulUFsd}nJ7Ax=tZ4_}=83fjxCgXaGhY)V5XZhIVt zT?gMb8ecT&XSi$4Ey`9NrYsJqwz^e=H0*qE#R9Z$}z=u9!Ce))p5v+`Gm z=^WMZQ!N%H=u$fFC8=o+eQXTN7?A-OPd2=n7|TUn>AIKsxoQV=%Nhq|2V!-KU)fZ?tVJiUn<+}$9t3@r@b$|oIicvzPzP~v_}bLPx(K-NsNQk+hmA>r$&E29mxA}2PE3VM)=A$<$4SB5HMCJu zNr==cGf*NRDs`!E#kzg3#wPBzy@44Eg0q-G-mK!03sIWsMw9XQXB<+Q4q1OH72|X> zRI{;-lBV#kA2=)&6PBVAUf=)20ZF_za+0IX>71ObW5gY!_b%|pmz7Mp0UPgC0ogv6 z8evQcqvrBu&t0R5m(}={Qg`M38JH+V19daxly-?Z2h^RC2006Spf9WBQ`kirW>4-r z9Xk6C<*>Y(Ztmh<>Pab&ZMKVfb&ybE>WgR&2()HgE6R#OBoe`hGe^5V(X$~nCY=_g z;IrnZ^4^M%Rw*4mnSzXhh8~$BPoy+)xi_xe9yU)-U3-SR8}?3kVu5?3|9j?6g9C8n z7|5IH#dNAM0wn%*y;Akl6j(F`q-vr$mO(oH30b(|430#V{SXErhm=qvzbledS$65a zqQS4ZO!p^t8pa9_Nt?`$mG7z_0E$`@^%b6=Sw8-$s_;J2Y zOGP#3zZMBz3dekAmY`xgT7=~>NqSRT$$s&%;ZGhbL?DM89y?;!UMB&Dir ztC1luo@z%+^&d-U_O2rCf_LCUvOxkegC|BPL{%t@2~tm!c=>3iD-C3UW{zRht_l4$ zbad={XrE=$fPLq)CCvDg*xqc*XACmfNp+iJDV1h{HJf?=h~KvFeJecB+S zRUKLyHIH-QlpuKK<^h-WF(zY_^r3{p-puaF3 z>JTF9uXYzH`qzhLBj0fwZlC`q8*IXcIj*y)ri#PNAWR%bmVVrPI_wFY z4NTa6G<%&T=ZZLSA%uWpHoAZ3Kq?eVIc)_ zGLNfdW=~fH>%;?n8J%hm2{Efac~41{e*<-i_c(W7L)gvHggjBdZ)Yhu90vlbKR>i*poxict$pEXp1x*HN6Zs_DhoGVk3HE8t}$}pmF(DEu_ zKh?K?Ro#f+ox8K(QTE^xg^bCfQ3I3}-f^!>xm-A|(Pic3^kbbc!+Jig?!$K3X0$sI zsxgWi?0ZXoC?SN1?_;92Kes2yq<=dOnr9!iM_$y$!YVi2?2^dD5H}D%^wXbSz1eG@ zLvQfI8ok_88mUVCfd1fp>DKSUKehG^>jRaYmMUWJ?wdpz#RA2OZ9eQp3-2uy*@QPx zCh5&N2Z|AUJvWf>$zMkHApJ1U-RK0Y7-HJjL#T4+34-b^NXfX&QRlmXoaLLK55Jv7 zuhGPt@nFX8!L5>5XoV$%n!bfZa z(6y}XZ-mft)7nSe3y0Y=0=}Rwg?6r^&{P(Gg?t;6_4{kKTJd-I3K4|ig|`@1V_S;f z7iXM4cg{SJDKXsr(t?YC=fHTvN-W3LMaG!B$UwpyF?n5$*jYngW7$m&Olrr-w&AhF zeZo@4!ByfHouyyvT`u%o=~MMl|9~*8YXm|pC6{wBJAFCUB2noJ>xE4gj4*`L7_`Y$ zBfYPBEZssX>`f!15)%1+4=G?;T#_4;x(+k_eSg+%DwbPR)rD4CT)4lyXJ@Oid@PI( zQ0o+fp=P7)ei|GEzmSsVGInR4T84esGmZ~K+@_iW3NA)V(V>8gi?v5(K5L*TxGO|f z+$|Hx2&*(18+&D{@d{c!#u0i9*U0|9hXR@I+GNKJsdq!1R23FKKsFUYGA*3E*)-Gq z6b=2dE)nG#JEKZF<&+8YnT(|NR)H`+ zYOy!QtgCvas9%_Tpe1Qg=BJd7yg)R3^r;%wsdAR7s^(B0-d=InU`@Hq@@}r$HM>c&eKG58)-r%xny(KYJ!+vSxo6fQI7MV!LSdKny~8yj;f z8uBfU#|1?9sthliJtXxjc6Xs_>z760XZ87fjm!)ko?*vB81ug?43n0<>mV}QX~U$x zUGC_c@vePvkwM>N9!u~IlZVMBvYcq7DpZ1?@rjQyXeA9_ky+M7^mVgrf59O%Oj&52 zdNy4<&RO1k{Km6T4^;8{E*~QBATLw#pkwa`rkLKJSoYk7P8mZ7M6ExPk#^HHq1?s-mLAVxHjP=qhiydFak7ov;_U~k5Wdo_Z|v_8T7il=(eXK$ z>Xa{H4>G4rlZvg&VR1xaJVgvm6U~*rJsLxe<;Ncog>MfbbhatjUW3^gJehx+@ z>xCN%lw!FoyCASW%y3lFL=*W!j3Lag4>&=lr$}U=*06nB5SElgOe*)GQzIo}3|Du_ zGuw&-fn`{bu626bTZO-()ed@?DZO1o#CKwYV3nayupD1Ea=?9JvZ4AJ$$L!=PflS^q4sI zc$ncDRb})!x{^8MMKI}VExr5TyN4GepD)&zLn_8*yx-5x!k^Q<>*H(u>VR`KRrL98 z5T!(@)9XymMh8sWlnsr9rph(yEVIGh#gahjv@Ln* zqYc|Tx}`_Lp7K;}mS2y22@^hw-lKh^`iZ8)q?4XUj#$H4LUffP!oDvOWb!R?_(kz{ zqR2KyB#2?G+|)@g@{{bMn7zKC$%Ymie&~_8fl80TVgSRGSIf3Mo^dKv>#@X>HB}c83mxg zI1v-V;r(4MrQ)U6{!#Y(#;cm8x$C< zR(8s$Fy*{|DeT|2>TY7uqv24T{){j)SQe7g z`?Pxz1X*%LS7evXHr$?ye@Pmnlch&41BqOO1P7;9=M%#w&?R!3yS3X#*yiKRs7js& zQDN}`G!u{d+Ygk3xq6##p@GT2LXksBUbCj{Y16HXB&vVZiALBvvA%3WPz$7k6Pqat z;{5tDvUcCGa-}w?UU}Sq=<@5Qwnv4y>TR?A)xy}G%e5Q?=W?k9uc(W}fSaLZ+oh+n zv+wU&%tyja(gbjM;-7%h5+#>Jj|@cnFO8F4Db$ix(c0 zyd&gvRL=es$G&IM*a~aB1l{#1qdIr`bkntDEx(6Hd2OSj{1(MaF?fcERu{=nu361Ao^D;RIdrJk zv%USaETWz$deJG=mU>l9TVD13 z4;eh-!8Qd)4aJzS5LDOl>2jmW{<6D~qg8qi$YseV5@ww(5zaW9W^KoeXCqB_caH}y za=ThS)Z1MD!#DW=D8ghF_xGGu#NDwvpUAI{en+D)MHSjw3neuwf=&E&F*w_w*~+f%4B@ zg(ErY(_hL8pa&+_SU+=~BFeiXS`QCf?;jSyKNs^VK4Bpo&RJzF7UI&s;$rh-j|V z4H8_xs+)PD@$*dv={8pV>2@BY=K%5wh zSUo0cmuq0yR;^~`7yq@Kd)?56bbgYCMD9Y@J=!1?#%;ft&HNe@TSsUA6SScKVo2`5-oi6R4;Y3}>5 zK5Q%L^`U+X6imreVCA>4D(qX)CC{|4c$PxI9YU}{@>1Fb+!Bg83B5-9nOBg@Uta5H zMTvBI2u7wOBWw_zfIC*>97|?Mx|(H7-PU@fLC#E?hQ?BdovwC?Ym>Y=r(ah1s)&KU zO}e*x{}H#R--ES8)u=L&r@WcNE?)f7l3?wOsv%=Tg>4evZH}iZqwuur68w94oz#xm zr1a!U#nB3S+bfUpl#ke>JgO(qp^tl ziv(sEH97vqWm2_j>L;P@Vj!OzBz8>-;#{HY{3uJka(T@0-C+guMx*KOVbFZ+i&Cvy ze!jWIjvtE1ps;r;Inx(_Qd#5Gu;DM9dt-Oc3^;$@*E>QU9ahcoP$G1G&g^85s5EVZ zsr_NulD)*D^h!%yOv4X##2+Z?XZGi0DCWExA`Uiprtpw2ag1o@)6SsHp#Gk6X_n7` z#)g`rdxJ6u9ev!pQtD}Y3qlQ@^F^yv5wPNrysW|U269rg`H-7+S$wr ziTnt3(|_?r#DhPAU5>>?5zBz^e3D$x()4FPxzhiXg-*C|n6D7F(Ci*Pk_-4=?}3q( zVM07;Q^hV#*7taxthY7j$I8QZA#N7*a+?Ap)3-BKlqnI`=FbpSiro;9^;WAz$T2*$ zJQK0he5YHsBSV+e%EmpA%Sv)OhRtQkOSl*b0_UODWZJkDaSJ(=K;PL1g0q9&l5i&i z=r?TkbB8q=G^UafPq=AY(Fqnp=1kKGI_np`b*?cJUWL~;ENiEeRR*-@S{rY{hQhUC zAT8AqKCjh3DLmj}qZDvX_$qJ!E=k8h$;6TJYN7L#r5$&@0!fl6J(fcCha;iyFsh_E zi$5x!9B$Te((gl=(C^xm4$7}2^sGc^biXjz`x&q+MGY0YVC>9gMPD6t_q*|w zMUPX7agq?9FN1ddy26vP%D4=f6~IBD&s&tgw2jr!sLV$ZwhjFZsFm|##}|R`nV}}~ zJ42(^<)c>kvaQtJr!0f4MjAJ43}q}2bByfLN7ExBx!Q?h`n#EqLl&lz3D~SZ4nJ}- zN0HKMzF_eHsAKvm`?v3?alxvbT+h)R`oc|>>KwXF=T z4EQiOgFg_GXCw9+18>K&@dxw~AFobhf{(BB;jXKZa{7&n0wF*fv=prnvJDTdUKyj? zk~ToZv-1qEG*D6#`}ZAa1q_+If>v+ZFHc8#lY`s1(|1|2Ln#Hpm6dm_%k%%d zSDC$s%Ffl1f+1tOMS%`m{4w`@D5rq_WPCh6yTzQOJ79HYJxk%`-wQA0I zz2Hyok8{rd!fp~UIsfTnTPvbm=NOmgRBMv7Pg5rA2ukSBA@m*kP&GM(popAdEpF~gA3Dm$z%7(yb40LQ! zO<FlL8MX%z8ZjZj2Vr>^DVzkl+R?cfmgfnnf^>1Z$Ugrv zzBBMX45^!@9Xnhl)ifHX!o9Nqpw)Z#35x}BW*B`T$#r@BL<`uu9l+xhG$wPcHTN@P z&hSval-iyX<=V(JNZD)mT?ZkT%09A1o}}y^$-&Iy0Utt1U>ob9 z*GA=-e{xA2*ejJXSIAtMxWL7(snK7#Cb_NdmDS}SZo7g!CGQ!53Amq$#?VgwSKQHj zzcJBAh+sW(qmYn9KN*4amTCUq z_tI}o?u9?!Ghaw&28Y+>U60&R1{N~Ad{Ts4d7+N>;x*Ywx-}Ok-)9aF2PBSraM@qZ z8=&Jq-10E0Yh*Q^9U(|7I@ElOYy)|EKgyqv?Y(Q|380fs?O}Vb ztPtb?g0NyJmjlb^Z~9#|GXB0EKN3(ZmLI`WY)3(S#u6OdOHBLHJNBbo4Vhl6E*2pS}5OTpq7cm5Sw`T<{ zAZn!DDK}awREOy@5KZ`XuruwK2quV}O`>qaWQjnrw{;{p%wtz}_&9Dja`Ha6T{j=M zcJ!%m#-?iVO!@C4D^D{bZiBGZOsERNkn5cSS*`j{{}A5nn1Q?SMOQH>mVri#S`1G_ zd>O6+N1h1_U%`y3UVEa)e%DZ;+%P`>i8ck}Zsl^DJM(p_`6a{7ASAg(DVcf!WHX}{ z=m)jl!hOoOf^Sq`cW)94q>)+EO&fwCqnA;~8e|1#mDy8joP2EJyy~2So*8q=MlIRa zlV!)9=B@jeiRz#WH4S{i`nTaHB@VG{H5y47f)yDJapXfMyRkiw(*pMlyLNse_m{@G zwT}DZ9|agqXukEHOglFf*XaMVZNaqEbPRXlJz3_RQV zddVE=)$jx?nXJA(Z1-=B7-oFRGPQrw?d=G2U+|elCW__;6_-dcNR1UK3g+@8Lv%b% zx@l_Mcvpc-1w?%CP6XFhaM(+JIK1W2_w9XR60Mc3oqsEH_gC6(eNuJRqpqcr+!f5; z!0=`7bR9DYN5FViMtO)zXyBByJZ0L(pwToZJo(z>3&WaFspSL@G#!*HFJLvZ*SPqM9+*7}(ur*J&vZm3$tt9L78~Uez7O6Hpkb9Am2o4bT z!7HyO=dsBecPRY#yQN?2>C5?5U;{2`vg zyF38{Q5!kE!4CC~nlh>a_BMv9>Uyy@a_!EQngcf9?;MWAQHfoLA=Wn@6xqz%-ndvG z{t6VOzKEUQYcHL6eLea(F46?__!4XBx909pBy5ovgslwA#Srtr9fS-fZ5-|v8>=bQ z=v#Wj+k^i##Taic->*wb(FY{|Rx&LLD+f8@xz8$#zzqx%ba`6Q!(Ly>jmMjnO;2cn z8%uYT!(otGY0}A&{K{wC)2ZV;Me?(eH91Dq@=M%zXv>@_L8kZ_>9s=iGbK@AcsXAb zkk&imFpHYa`l&ZOwhSK=hcyXvyHC$ipSrnx?*c(pIvUt9gP%lsX3&)Br^RU8Qx8|!=#R@ zB9bfO|IBC$Dk3BYE^mJMG4o{vbamDL#pPuGJ$*_3Keb|4v-CeIdBusd_y10A)KSv{ z0bzxkI~^mVUz6P{ zcvPL>$z3Y%U&bGGyx@uk#5A3!ce64DmoTrrOk5%FD=N6MUU;LBB z2mIpIJGyjwvjao~yWba@ol}BTN?`46yVX;RNw=G^{pIb+yFd4 z-nt|_t!zR;lhy`JAS`SRW@yR4=AZxzuQTQY5gm3>Om`Lgsy8|3IWAM|vK z!_OC~^4?Ar<}2G%`M>D;&TzKd_x&!k6i=U46-8TAOYu;nMbK&yd(Wb3?;4?Eb<&!( zYsB8Mi4hW2wYNwRBSo!5q)LoLta^NARaD%$C|BTGN%UGT9?DqIUHt?Z{o>7g3iceB-Q@sY9YVVg2vua@ zv=JAm`S(3N8__`jW4jD@zu!x;wjVDNA+sooP0Ph;dfEi=h61f_*<5$x$07uc30m}J zJS!#bSC+)=HWSBpkBRqP_=Q=4ea3c*ZN|?7w1x6)%4#7QImXZLcu%A7i??(gh$l5^ zKHT9MyNJYTy;Q>wi=n4a8LIpbvjTrQ6>n-C-gS|*dZEwZ}>p;H0B&Jgu?SECzK zn<8=;;C~|3xji*C{U%jv&FQ+yacPFE&yNM(hUYD;$2ld)TfMprfG;sPuV8W6{zSKg zqTFKH0P|gt7fIdvgiyDh7pvC(r`ByLt`Ue;-mQhN)I{(C0@8xM3;NB8GIUH3%%>F~ zw$Z14@p##_Z$16<9CtB6XRv?KV z4#jEd*>>oMCMR%PF6P9^@~i$`%kO#B6W{NS-9ya%oJ>n8XetJPJ=feA*4EGg`wTyx zeu{Q&VqVoX!bry3ZZKiVJ)r6N+Bq5#La%~&;t5)e$qQp zZ}RKfDyZ+ALK=RN?bPdr|1sMBS6`{SKIP;sezb29$O&t!Pr|dXJm6csZZ`b=4X^ED zny0p2mWnmP8W<&vHm|iJzK#tll@07=8sI#ijG{JFiE?;a>uMeu>9^z+gxSs#^4a%=GuF*=A^#f%^LXW zhI1{Lx@aLY{85aIF)a&&CoEaZGA6vR$86tQFM+}+jCHlUv^;4R<}O%`@nCE=kAtid zGGWbgD<6qR`+g}M<%f=DP)9Ntq^rxtseD(jX)dO6AE*GYtV`C~J$;h$>^raNlRa`TkKWKt`jbk# z_Q~Y*O=-O?+;9-_@zZkM1G`hFQknigac!-Zcg5xE#_oj+RV=<1iOCdLy6Kb(-BY(A z;{&AJV8pKX_Y^#48d_uv9P4a`_FCOz1Q7aV!mz9+pl7r^DBBKx5u!?laBR)i9K2AO zFe^&mu(xHEL}a6s$h8}hcnB&v>mq6pba@I{+IC4&AHH1r)N>DRl5FihSqc+F`51Bx zw%FTOG03j{c$LLAtNMCP(0XSE;l%javz2JQte3cR-T+6VMrmIUvXDZC0~eI>uUBim zp>~snEu0%op-VS_WZCDyxKhn4e)Dr<0jJrgh&!2C;K)$)Zm@51=!^DTenowP!L{U$ zS{qE)Dy8r2?v*?VD}2y&XF4*Unl*{liGlr0S{H6EO)gs2Rm+{w;R<+!$h+}mepAndQsQAt72W}O<&ff zCM8Lr`SL}iQD)DlTdNv{t?-K_ktzz0-fg>8S~I;>!~`6>X49b%InB)vr*Dqlt)Q1B z9jHJNv&m@1~_P6!-d@f8oOLa>pf7=RC60_Khmf!5zL3yRU5gv-~ zZrZB8AY+>@u4VO%i|s~dl1p8%iqe1f-U5ad9sMgba&=0EK619>P8sB;Sn4$#pnL4rR}N670u>mYplS!^Q> z&=cmLrXg{Z5krBRts2IK;#k`b&Yb$H5PMa^KU6hn%d+Lb#bJR(E7@ht{*KYWe+|aL z@Ajaq1N2X>A-RHg)nV`ap43Z+rn&f7*F>OQrBsWPOfo!B7G-;($PhS-tHDNOS#{(^ zuPcQVRIJxgTF=~QQWoh0l z;E2~_dtU55y(K;R+RTt`q4S10sdFcl(sFQ}K_?ESk*BssPrxtSfoIK;zbznZw7sq5 zyLhL$i@iy<*nq>Fwws0*au`kSk&MT!NB${0vqO|=W6!T*<=y8H_4`(|k}GG;2O0G& z*3KgNCYs}dk@xQ2i$VRFiUSVbTL*CH-=K+_(C@Tg*qcV(X1ss{|UwiUi< zy8q!=xrH|&IN|$o-v05%VsF=j%9-_CzxT})sgD!CC!G1~l2douF!vTD2@)tv8rfLu z_c0~YF2b$2RC1xXR-Yzmf8t^G@XE?!OCgDoM0Q90f4yEW583J0^#@8~N;$I!^+*`t ze)|Uxe z7k9SopNzvbh6G|7Sc3J#tKVN{QrFbLM_c>y3jtxFDy0s=SDP=LL06H^KUHWzDmCu% zhldT%Yp{CF8VG^W>46$^_PFBrZyWEagFrg#%@~&LS(YZSdPj`X%LKo`X!Bl6mIY`y z!4_VU(4v_Zr7tjFOY$Z?X5ln(N=a5(^{LuVB5FTydY*+m{&9KkSJWGiX=sXjtCG5= zV;&~OH?NMVO404x?^SSv1xkjUEB(FAjBZ(K*zoitzBjCYhe7Z!cUMy(bO*v6`zk3!rR}5-M*BtX1wwYF5yw*St9J zcTFcpYxN;lx1o#J{=e5Nli|p_|FI^k1-h}lJ8!5U#k7A?|B<7mWFAK==V&*XWvHJK^azSqkuBhG1 z0N1z@?3P!17uqC6?h@ViuwDR>`1iwooR90wVy|wcgGkdRdsSAv)=$)Gm(NvBWWAj0inx%s6gP6U_I&yE}M@{Y-Ce$d$RDn)>QlE^`2z&#WHi z9>&i*RMk#E^X@%yxw-NiJzL?*c)nV%_6HYo%ZB@FQ%9@{w0JY_Oq`)BgXL0$+JtkE$4z|?@FZRT~7 z&J4Efxi@g?C9`Jak)3;IW?B27`I_%OR7>v2=2#b1vi08Ex<$%HY@Ibn1Mh=qAG?|> zZYXgn?a_Y#QR9CAkq4qPZBX(%FPt5s>ZevOWq|50KM(TaDy?Gx@((b>xlx+z?=~~a zoz<#nmbJ~8Y)lVkpCjHbcyRydZZ%(cG%;Y#^M`hcmhqrAds8IFH62+W>A2vwu!Kbp z$@YXCbMJpkm(#6Q)VSmEGr*cF*mARNjg(p3=Wfl7YT$8AYYJ(O3i5EYg<7hcF|zc3dMZ?k84Qevh0I~BI`CU zob;|Exu>G=YHJSTg}kg*WtS^&Y;>0vlw0P@V+#>ERIJ0v-R%o#d{Mm34UO3-X!!2Jeu-RtAu|vg*p~ zXz7eg4UvG+Y}|r8!?~FYW~c~UEtNzqYwz6{(4svd3CdP+UKE-eLhL7|HiO`nHe9Xo;5 zV&hI(@R^8!AKC^IF#|!{VLnc&w-lTGbIXKSJijF$q&Xp5&2IG`T~_>y+ECgi5&Gqu zHOTbIlop^xOg}od+jqm493mL|V`IDPa?>4`yog^r9Y0L_8J#M{cw{#j z{#`Ywg5P|zg}0h`H8X@K$yMLO0$KxnO@e3nq0n0IQn9e zTvAZjw@_=t#uq$hF?#{qJj&bL{2m8Y@qQNZ4^3T<W9HUH4ztsW0ZQKMd020d=LWizIV$2KT`QU$=uue%IWdLb zY<|q6P5T*c<(rAU+kiMqsEE4~)X{`5@Bj1s`)nZ{9|8gEIBDzAPV3A>GtxTsUv_Qc z9Q*cymA8%MT#MVB6#_9b_njeWNHiarvYZb6QFqm2uC2XLL#2#MDfwBHoaE2zD+Gk^ ze}`TEe~0}7kE)zU{8RPM9~q1# zI}hESsG2FFo}2{IaFu#>ZTm^G)5g{`9bKMFBOgxMDu!Vx{5)2Q;jc2%RTk|J^g|5p zT49V^e zyCcYs;?M502MvdMzE!(~ico>93NxkUG!L9=a$FTkkum+v zcf__dTs0fH@th&#g7I?Cs;igYLzfzGMRxn z6*zgS2P&sU;fLV4YGuEF5WlIPro8avMq z3bKF%K!EN*^T3;F49X0tT#cx#_i2cCNu_y4jfQTybWu>%E!N_8;q-bH1Bsxlr9#Wc z@bbuD!su?u%=L_d&r{{K6kG_x0G(UYP81+FC2j|bX{4OAsR`!%S{m@YiEklQZ#U!a zb0BLCVzjMjhaZ9>Tx>cuk|+Uu2MxD-5Aq1zPIK9}0aMkhJ*9sS8k)z*OMs1(WSrQI z;p zrcI)~IOk%C2yw#Zz9!WENpWvA!1Ts>TSKekQiZ6=PRk1EB!KMq?qh$M$w1+Vlyqd1 z6)scLK*D5yHO8=Wf~mHmX8Jo-NJ#e8B8%9l`}aQrKxR%<&H>%Ey==&+SL$grZ0k(+ z0#x*5_R*sT^9dV+_XzjlMC)%%te+&5Ei!b8WEiOBMo zjVyndbS3>HK$P3yq+W~xKw_Opa4*5GEfkSVux>P+7?$P$`?1iy@nJLU5}5Ozx>cFM z9rrPttah(FRz$pH^MBW!d;h!cOb$$TNqEA>_I<};z6d=Bk!wLK)4q#nLc6~8S*g=q zlobd~Htd_Ogk_!DebHk*e!g>-e7t3_0E!dhB#ofj&$4N7po@OX#Mbn@i;WjOaZ)a3 z$*+lcPMzQ9MLn9Dx}(XI`y-)f@2w}b;$Xu-@`GpG9?e?uMSgEJLxC41 ztivwX+7>NPCqa0dd3jGQF&mv9MIJC59jFGoY`jFY&dt#mgDK?h5OCnO$`NH=hT2X? zId;1eQmVlC!4sW{TcguJu{?@9izu**ZQhZQ5cc2vGJ; zxH_C!Dt%UQ5E+uzW)L8XycfEd|Kgf9V<5+94j=N=sm9;HCyz{pm=jQywfCzyi#=q= zM*srj?=vwpnSgI+@qPhktrPYRNnlEv^B}W$mgV5jBLRaR3ssx1l&WDtBP7m1Y zp}g@?i-p-|L^i)5wND0=+v3m`-_LU1nZE_>gGmR~#)yff*OTZ?FKWHdmxfaNVfmjd zK#HDwQ&ca`<&t4vi;X0^B;H+$tK!nbH*2;K^O%h-EvrqMLB~P6V_pX|af=7~v3+X3 zX17>P{Bs~d>+&s^Iy+zyJ#`iDN zqOKAA&TBHZ<9U~^-mCm*A0NYRxPiaE2jRZD+;Pu>*q)5Z)lRGTRqDR@PezSR1gC`J zQ)utih{XHK@Mx?oNArT?6^onGB|j2)$!`fD_sVTQ#F25j@nUx28+GE42-7*bQ834~ zBKLqC+VZF>Hhrjne0r$QV|>L|yrS+n3d)9aA4wG@?|=H+M;6G?7zzG*FW}<{Xmj1R ztKw>Bn;J-pE5h!PG6HYdB(G|)Lllh@=FEYrB9S7V0!O?HGj-|0>aHd#lQDN|(mq<3 zd#^9@Dmy>D$z=!VS1eY@18dlfX;pGpm-Rj=KY5yWUFJ&Xk*&y(Vv_@1@@DC7{8Mtf zautwPweGmmZvzfdFO0s)V3cQLLcr^(!b}yr#RD-i8EjRkrz_n0hS4{GW%6!edw-40 zzcMTv1XAyd@`6lSjUag^Qg1!}QS*xPs4QS!Nw+J(bK74ptI0Af_&Ct+gRyQmn8P0tD$bj5#!R;b*P_^sl zoFeHgWsl|{t_Kc0+H-O?MYm@#UB>EqitOWG+ylH0zB=xybuz?vwsUP`1)l?SrMJVy z|Haai{|i;s7SXv&0zh|ks_A_8=`Os=hmr>l=`r05!!hTu$yQ&U+Y0o)T!f`68IS(A zJwcdj#y_1?=j8!fBPc={EGKW^NN$ zuVmrKLN=>KzT4~Hn}&H49+O){uEz=0$IRN8<`iySWAtL#5+#yB_gN}>XuC}+KJA!$ zSyc|SDryO?Zos<9rF|JQX1>RcVUf$kNlrKQ_z4K!%joe1XH>su*SQk#jq(z@iL;;B z9~qLPB|XB=K{G(@2Dud$3R@Ut;+puRdIf8XGlxfkgOo1{d63~*SzT*&u*-t2U%s^P zH-q;rXvwp=wSIr$xm-JHF+*wNw&sU6XrKv8hRPx|0}ewV&vmalZG0gvnLIE03w>}+ z`GWb74`Av^a%%MF6W%A2}a2;_q47(;g~U;6~F z2J2S->7=Ee4U?;AlDwHXH@gWN_3~Iw3RZ6Y(Nm3!3@($?RsF`Z>jgZP=&8_ab}US(>bmzi%Js(JFSt!$$oPck#jiDVj z9a)IIE)Z-+=Jzr789R^#Hcs2ci2G1^C9=E_@&|adLHBK`$t*W=yTCh(jnwq^S!?02f+ugcE^R`LXLb%H)X zq@U|&SY~7-79n>B3i+b-(OT2*(;CQxiaf9NBCrScP@CUcP8&c9(F$<16~DwYs0gV% zoM{7ZtJw@$b?v)YVB#arse3{P;@bP>E|_wnc(Y8t)M)^a;4 zAa~Sb2L}nXihp_O39e<(^tI2&+zNE8fMI}v=vQ3Cov-`xefa#X#C|#>k z+nO}@0GZVECY_z9*d20Y*>_Gsx;CH59x3gJNqBYYKv|0jK8Ya$S)Pn z;=XkZ!k(->n3Z{>*hm9;`}1=@_yvX$U6ce!9un*J)x&)rQVX-gFwXY8mbcayQA2b4 zo3vFE$ojAP0NDOJe(Rln2}WT>RDy2}x=U^d6fdHBETB5+= zCB59EO8KqDvcxq_xM`U9&+8^RjP3*S4@K6*MTqz>s3(=lrY88@+zW#r2!>ioa3-1`^HuisM^6o${PQDrEbZAS9S=cL%|_-t z*j~$a7&O|0je`}St2>WAmzdwDtcDqKuUjLq4&e2mC|ocS8WZ9LsadEUZ8W$3{FI%PU7eA8uh^i!(0b&g(A7TM zA@r3f1Y2jy_e}6_pz~h#(<5MXXPwGFsac+C^f|LW)RyqkbekP{MCm&yQ-U3Y+scrw z@l?+|X!uzRZUIzr_Xam?x0~>h*EmRKq1q!-eW0JkAbl90EmZYO+1!*D*_GUwu5KK3 z%t72`&{XDESWTlt6~&7`dz(u(aBPk+rVVH|M(0WXKE4{}4VesoY28>;)7}fe6rruM zcAk>Tr}GiMN0KBo?u1*nRR0S2l0+%MkeYG@J%dTLl0AzdCmu7Px0nuUgGN)M#d1nq z+!KV-%AZ<=8IF%m-FAGM^kXgf?l&BCxGZ< z8X$L9Jn=g1cV{@ZK~h7BqhzRW#LT^zWaq$^ul2@TVA@khlh6!i8VhTfGTwdE2n&1* z(0$hRELyP<(wNuLo~dl_;!!bcpNsaq54K8_fJ{b}@R|Pj_ZpTO(6>i?MDVKuFQ7X^ zyQoa!jFgEvHIVY{E812;g_sfhQsF+tnz6(+j9o7L13Bw~wGMr^PGW;m?^mIFNz?O( zW0aRfj@5-0L*Gti-4?l;yOF>XP!?e^Dbna;TgWAk`Q!ZDh}O(|$#KQgu)rasb-9Nt z0f?PtW{7c@!h420sGqDSHxsFcn(c#J? zx_?n?41XM$Cri;OZc$fk`}FGG(2fwJN}$b)JlWbE#q_S)q5=|LC`e-75eXr!kxk{8 zk%P@7>K6B4H|3BZI1(Q-w%XxLYoB}olK2&Tg%RKoIM*%p;3U`IV{KfM2o3-&5X*ii5<@sHP)n^ZnFb6pTntG?z9z3aim znS<4QDqs`-`UaEu2V)L#n%NbYz+b_WfS5;GSd5J)Bjko?8N#rn&dn)P6i+uleG}9QDDhW$&Q!Xde0b>7gp#k0`;rd58*iB~tAx zZiYWg=e$yG?@qGJYu+p)bcPlT30tZ$(X`QX&t4ta2jTBiZyo)b5C<=Dx~QrD@?QYd zE4x3;{`%>ine@a(8P;j{O_Jx8>5(=|S8a|BL8@`im&T@}R$p8ppR(wavtk>n&uDWx zlc&AGpp@Un^TNlzw4t~k8#A!j(4ai|r@V&{6%8t<*Em~b;Ds}63T`yk`$eA}XA6!m zMD8b?1TQ}TbaeI0Pp&GN$a!yVx+nT>Drwll`J7*Uqf;_Yh%D=*x`nH(ap)FbrGlI--M5n&RKf|m^FErpAsbeQB9^X{aL}JjyQQPI6Sq_ z1E;zAF7CR=w#eCTaAdcbqrd%WE_S3=*_x1>u!%Q(v+$Ayeo)*o(Sdt^5(tSmc3+|i z;)%}pL33Q(ghBTKnR!_e3}Fk%3qo=Ew|DShD-Y^Op6_{tUfv1c8)S>Ib=k&zFLvfV ztLXRg!|klo%uDbR3WCUdlbfJB@Mf%ugxgnL!@ZI4B=g<>t6{{73my>oJ9MPE%)V%@ zR-QA?z=EI=4gjJd;oS?6;A!GDuc(hht}?U#Qk*%%gjen8 zyyW)kd5Yb_PyYk(4?%6RyyE@nlRuqCuUr3TO};IX-)!4it(1ENSu;T1QA&}wJJWY( zrYGn7g~)U zy!~UW^a6alIf$cuPE)Q*WN!P-(KBML8!|j*>))`4bLfOwvv2H?Q*0Wk3HtEB)=?b= zZBZeI@MiY{AHfq_z}|1W4elHY;I*t@#{5 zhAMs#fjuO6u5|3V5h2-w1|NUIl94k=%isjw>I%=4w8u);BHZ?s zCL#wblE+B-DlqE&7Texb{;q+aB>&V@ld6rQ55nSLkuOyF*Z03^H}@(R!2z(f1tZC# zq5X=WZEwm%V|H@7j_2R|9Z<&bt&5mOm-&vE0 zqs6-nhgvxF$-I#~vj8GG-e+iUIWj+<=_{YE6C_O7jL`TOOGRR*ZM5C9d3eMlUpV!6 zO&hdW#G56*k3$l}12Q8_xaDOG5;`n_P%1OreWSW%V?HREqocxp*t&)&NLK~WW(4=# zlV#paMtFmRl6!4*#;Yx%A2*&ND{0^h3EInQxb5)}If0X$SR)V80xa=!!s@g|^#`nP<_g2iQz7<=; zmu>f5hy6tJZWVu_t^XT`-rp#{ zAUSznr}^TFw0?`~FE&Pk6PNcPZAH@g&LsEAIWo)c+v%KxH=YJ$f3A z7?R#sg;T%>lD`pqZ^k$uF~`=OG&{yVynr@x%{BVbzGwY|u)sxFtBwH$NMbfM`MB8m zYAo?)fzij4$y#AD_^Kw zALzr;tqe}0r+7gs%hFhr`x22iV%4B& zxm&7OO_PxTh`f3-rF8iT^y{SwDG9z7B zq{dVAKKz`gZUERoV_ z6Oqru*HO#jt&cFo$rn~#PgL@JZl6CEEITf(eIr6}i}uQZ*^1~d_0owOa(~|sa8SQG27K@7rTq1L=O9b9OUY*#%WLQI`i=K- ze~)7LX4MIuc9!fZ3UnYI6K&yzdw(xH2>-M=b2KLWCcf>LLU^5oam{YFVwnN=9AO)q z_bLXSRTj9icCacSdTIPqS- z9GUxJw=H2I^f# z7jBK(ZZ`-Hk8DK(e%*pZqVL`RD9u*2f?>R%5W`Cm==}$dfm^!=^4rq;^>O#gyL%Hq z+Vw4Fg+rLr;xVaZ>e#IopO@IIZwT&Fr)C2_(qaD^_SA+@CtK2Rbh1SED_snzo4K4c zpy?{zir0}t?tALBH9W&9Qp3_X5Y`HdLDAdUWbqOE4sBl_s#^O#Z_fqJ51o;%LKL<= zA>_W9eF`wD2wjkpS0M}JZx@r|dXiPuN$BREu)|Cv@tqlTz7&$uvhS)B&)U`i{Y?q-8~9{m>zE4*}uPK!|5+~F zb|C>Cal@2mQZYxwiYQ0Y*H7Gd)*_euZ=lYJ1}%>VJsEM6zzmO9lE$Bz5{znfwkI27 zT{qw_8Us<>HnIm@uH&>L6${Gm*tV25Ef{U9lv$0Sh(lCc+26tDlVRu?er z+8!LXaj9;)>Ah;GMQ5J$ql{dX1r8rsukp;HU~U_18L&P!JxM>PQJHD8p*Ds{+VoY& zF-^4{3jpprK9l`QiCvJh{{8C}I{{}v2dxB390fQg3raBDFqi(bxqWpI>(KEeb(+4b zfmDk4M!H2T2^!8N*ajLOAbDk%wZnbCAt*;eoSSP6sogvc+fdDBqpDY2{wq+$2EFFc zhl~{udXgcd7a>`kwp;4<3aGi;dcl*Pkg+$F>M6Uid;z>R7OLEEE70_)nsYNrQ(%YQ zx-J8G(OdAdPZaAij0fYx7GLuCDLSC54~v>D3#(LWj}Yml#zA*tzlGYNq-q4Km9F|u zb9+=@W~M*c%}}nIKqT%c++2{CPa;7idX^g@SQicaxzOBu2gO$-QKMTUmM-}S3J2oZ z)6+nTnv~?HwBnewIM(uw-vxuM#`)1g@YKy_&B($o7fkxE_Sn5_cDoQTb|ZC{rK0ST zbIAzQ&RjMV{YJ6+gs8DH?}@T_M}cg?JC(?aLcFiJ7OzZ3F(2G--aL$A9oz6Yp`Z4y zo~!AcO?Mki*na87S`v``xmKW}%HGAlUf#+TDHA<#RAWtDlPE|eg*+< zJ7zGY+rN2SdZ(gr8*idVh7GV~?3{K5_xT&nKNVCLG}UurkL@MA?Z;`V7FAD-eX4Vk z(iPqPIjvaf`DT^>jU$@)Jwc$vT6Iz>Qs!-4$z_l}&PQMIeIcx2Me zuKJ$n=7LU}IMq;vx2&-d^l#N9znTx2y&I#dlwg?AFaVZpGTtq{XaUp=xN(s*osf|` znd-^BxqM-4V=S~GT+c`BkK)~l<(Abq1m0XLCH zZ?%p*TnNZA0@ZHAH??gQ55ve?FWry=ZqqlfL7pi7I#M~REk0=554%1<`OU?D$;~;G zUz#{|^BU1PJXag>ZS3F#_04VOj=A_F2akA_U)9kyk1`b}`idQT3%i~=gkL&Iq@kY>L!prsnbt3c1o!BL zM&_X~zY#H_p@(yH!_AI$Ie?M0-Tg%@w*+VFPewdCpOxZ7rZmZ=#2HcI-i&iY=|f&f~lewuG!>C#$Ui+bm1s z<`&629yR>&Jpi=%)$#&ngcNEJ+;W$;Egv#)t>jDjh(FyO1PIE;Ffn^;sbjP!q^ zRe3on)-|OaWvsuMXLduBmsD3Y2QZ->$NiqCMu6^iI8ENWh%F+hKw>Ya}PzbZp^N z#+x~X_)vC`u#$+T^h-2Lo5dC3cWaFJ8E+t z>|eByqbB4LRuK+&$L-2&LppP9W!T+KT<+tip&f`(=zipU*+TxOa8wKtNCp}u}9Pj#3D#zUoQlP@`f zawIzr?}ZSVV0R~bghoJjs^DcV?z8(|d1pJ0?P66NYyiCH2 z)9n+kM;Zr1o(nwA>o`EF=uO@R8XuY<=!-Wcf6S~|GC3-ouiTA%mv4Z>y-3&cDiV0Q zaHTzP^*O{{=`lapu3Y>!Ez!INY^?xscyj%{>PfW#l^o@!X5n+aMBnyS+ey$yHMj-t z`$+|d&gUHVQQB!TA%m!A9yUj=gz1HQz1zQ=zdb!ViBeUxAPN&hSEXskN5QtFr;54Y zC~$L9F#_Cja#nEKoB%3JdE3{Vgaw&xrdi;%I};1acpTe{{{XL#{WzV=XJ5XUWkU>A zDPAD4x?^a6_!_M3-eth<%pK4LttAM$GK-dceWeP^f)?TZ)L|h=0xk+ocEU)FTAYHl zHIT#@#FYn+!jaA{N1=3Y@1qC%$$Xwamg{X52O8vYNbL5tUEbwjzR4C(+6xJ3U$M~n ze>4qnp&yW|#>)$EZ=P7b7Cel2S@qp3)<5-e^BtMS!oA5krkYO*l#Z;c+lkye^yO=K zRXhLwU+j41|FGkO`7pRTXjTcL*9!32DZE9 z*SVcPa(CVHbLJ(tzDhZ4s|6Mo@yYI3EmeZgRG`?d1oj zGv{~k;Y&<1@E6hM)w3G_hqmA%OcnMfkah2R@vgzn7lhKUV7UmdtuRu<+oOr2j!V3Y zfam9UtIxZmE4iDNUJFBtb)xgij=%R2C#W_;6Dp@+2`=J(m&XTa%oVkloSjoI&bL2} zd}idT+b^KjLV1K5?w{A;=A&cp?X#$IZ4h-2V@MT^NYdtx8BI0xP-)F z$D`*(i@O(P&l6}Z81aVYoFhtwBJs&eWH(M6^H2v6+~yV2s1@*Vo15Qjgoog^@uac`)WSv_4rX)aZ>Y1i&texT7MnWXft z6OUGCX=g5fN(9>w>|z7w{S*sQKqQ-linG3MJrt*|hb&FB5eu>faMBNN66SB+XB?dp z`lW9N2itX24c6UM%uj6bPP%k*-4vHxBaqqh&7&$3HQ(&DQJm`%UtEWx=dMsQT? z+v6=&+D6WAnG^}v1ltW=k*yD9_{n9`w(N)h_~cLJw;e6N-lq*6M~->%Qel3ZCSYmz z+wtbC*DoEhE~&D*LT_v4tF2l@&K;M~S-{(inoTYlo{sEGwyYzx5{%&I;vmJyC-l^a z9o*kctb-uNh{-TkLFKYgL93#l3)d&-?Q0Zn`(q)smuM@ZG{!IXbKi4JAmhT+M@Iug zi=x|xXFUHgZr#4CXWt40V$#1`Tyf){eM{faIk+sr)K@;F5YIj{SEt@i8!ooGezG7w>kVI~xs0L~;d;KM(hke)JB*g&B@ngarG`(_GZJouxe^x2mx<+;`C z3UFdI4coMLLE=QM_sh%G$brVm$v&ICea5&2=FpriBlCX@uzA(uNYCv~34@JXD?YCD zskIJ*Y^gnb$uANG?F4Ik21mF@b{QSk)^7Bmlh__{LTr{Z-)SdbdC-=}%wuHEU}nlJ z?7+atnHL>buRnN#)4u8`0{oY!QiHWrfFN0vI_ixirE(|MMZ zDx7mKdQy|AatmQl#k=I|Ctl?pdD|&{2DH4&;O7vjFW>F6LqIzp)@Z?& zAVyXmdhzVLMZ4qov!bI1SL+?|uQ7E0n#ULNcrGs@bsKYK-uWBAO}lBnfgO(U{#Iu! zG>X4H;6ZLg!C7h%z3%sMu;D8UExHnkD7+F=Y<{}u#GPyZPVkIIS&ph!FVWKyWS|$! zd0W?oE+EnwzwMEZ2~1f-_?omcy5~34&sqIz>Ur7vaN7yOTXAek^`wz1A=+OU!E>d0 zyQC?-L}by+y&->vK0@)f=$F&d?d0D&Bw_aQ9nt*DL%o|Uv|*WtN>Gq%k2+){iX~Qxm)|~PNKh@6@BM!tWqzM-%O`kyn&kRwv7I64J zN8kH0Lgf&OneNnQpJuz!9>o-j*3fOc$_u-8CXU}uOE5UF5Ku+>6yF#&$GA`cW0fNx zF57VH@9}yAJ^`dr3xL=x3AEpySQ}4)2lom>hKS_|eHB>B5j}DOtBMZM#Zu5l09FI} zgw5*O@?HzBve&Gmd{vEDtw|1=`>Hl=b1ZMo)qlq0;3@((`(=6S)&8ua$iiX%$9-4N zpEJAh4caV=Q$;N&rkx8Oq$MfXE+^;4TC{>&Ua?wjJzRR=%dZw92n$wAhU2Tg^`A7( zAgqJ!P0PQ1dkhH}k~zXM@mwf>{*{aORgUlnau2u0UtM3tnVtSp0~^whhZ^CV%WQ#1 ziMiu33b^TY{l1XHJnRu(c_ECLy74olJr)Vo0aG8ioncb+{bl7c@D*aco2}aaMHK+# zrd!zKE|>E&>ta@db87e3nzy0h)(Y%M%gebJ-FF4bH2A*Jy{6jfq!7K%9r+R8y3Q=y zrO53mr~$6nsO6r#PA}7x=hgwJKJ%tnY3%4dl4p9YVm=uaQR%t}?8yCa@c-C*@2Do5 zu6-0Mq5?|qs5I$PrK2LfN$;T2TPOkPAc7)YN`TM;(hNP6&_M<15PE>nJA@)72@uLJ zKCjRFopshaXPv*#`u>5Hd);Mb&z@bbea%dBAs3)YZ@j7XYkul{Os!EHZ=2h7bCpxC zUsSWdmuW%nJYeKxfqaVzdD}j<_x8dvT{rA|q%8w3EVz^I-W+sGn)hgEZw_>5yC%|t zN3l9@yROMOA+@O~Bf5jZJ%pj2#=-5(gKAma@k~3&Cg;@0H7MT+Oz8{B7>%iMc)XGZ z-QuDDaRGxBIFHfoNwvz2Mu!g9`SB@m+&=f@;mC4vpk2n##Ayq!3{Em}^=s-*A%ouO zE`^mdb#Dq;ELW(W&Z}l2LMgFq{0oE<~!7Beeo&m!j3!COG0hY985 ze9~Otk6N_3@LV^Q)!k>~KQ}|KboK9ZK?Cwr(7UOa5$WA45ZBWf{a@b%I;98(to`X+ zVUd-y##vp~W}j>Zwf}+Tz;WKrE+)@5-FNf)05HJKH{Q~s@nxs07h{(0Nc*B`_FRkG z$RC%P4mLbQw)wnD+|Bf=CL9Hdd4w1K$Ado5GlL9oAJ5l@wZltEk-+EV#9aG zKkrA6J%+9*_tpHKW=Sz3cUTszm;l9Rv{4v2XSokPvAEc&9zQqU+(TI+w`fC(NTn|d z2J?c8S;OtO=6=N{svYIo-l4AJ84ZnX8yh#0D{pkS31aic*xEyv<>yD$Yv+f;A+h?Q z7*cK*H(w;ftk1weaa^**-I{Tdph4vK=eAPkj8;h(n1ngYCbbf)xo_mS470Hv9$9g> zs9q^)4eM=^&AI!_wcQ&`{ARvoOyb;w6ZT5Z8)0IJ9~dOY2+)_EYPac#}%SL4ZbjATd-fe|N=moYyvZBT+a=p?uG z0y=v)Z3zuz=yDbT2xhD$9!(&NAH9+_raZ~KXk3^P89Se3J6fHu+r*3uZuv02qk~Xx zl%umxAXn@7Mbx^lPnY~&DiQVk&MoDMWAr~^J;&rl61*&;FEo9MLDoM7{;fqI*f)}e zFs&VgrNFay2VCi~b27q=m5!kd* zg0(fT)!SQ~M}C%re|WxVVG5iVYi#f@5=yDv{g!y;n)h&n{kJ}O=h}Cxw_Eh9QIn}V zr<=-%{^8n|mIHg{R|DI_46@GAV;65_n^%OUnsA3mmWgg>$OKvK@C{sB4p&8`E$;z8 z=nz;jA^${oIoQ@Fa#(eKbVkuHF*J%2e0Q>_^a-aPM$Ny|9z+l(QQ|iP444@BgGBj0p<8W@uJD)yX($}mHfWeiuG*oq;xk|q? zTu+MfQbJUqOD->7X3YB=#X|Om%V+TeXtSzT3ZEB z-sSK+`F3qq0OWq)mS@=k3+3vegmjJ%gt@{w7#oEJhmh3l6bH8}ZH`p8=2iqbx~7hC z?6!XIYJe2$mk(owo?WSx&5a*ql~A!Q3Q@2cZ95u9IoCR2`lgR_{WNNJ3rkosinwjF zvaT_ER%#&vZuMc|fJ@CRy=klUBQ$f9QfI6+?dHY$`bJbTTf-y1uA1e^*R@s|+4L38 ztfC+EIjV!^F9bo^vld+}`vn)RJKi6IFNs@DQ(KhqS9iQGn1N!;0fXS%viOIZ9=Ojt zgX6P^!C|qMCAPqyAr^%wXn*rNST}#A<%*zJjQym5e{|NWv}%d1_OQ(8sB2sh zYF8(D%dfPHRv!0*SbQth$O_tp{^e~QrAoZ{M2QN6s# zm-82-@|#7o2rSOrt}#Fcr*4dd+L!dnKXq>JE5Sr`2c=)#65jHV4RC8XYz$Nl){Ivb zo|E3nk8ZtGAl=||MBbhaK5;e0LSyc>?F2Y}w^b1PedM;`e0i$kR$&39794lL8R0jT zahTBqRgq>~%lW)hnf8z*Tg8N}z4w^>e1K~0d|D19Hs-vKr`frzFs?=MlD0(!ZrGK0 zg~4~YK`IXqlX`JEqMR`|gbE4%)x7>rf;g`$Uvdr8_PrS=Ht4-P|EV*Lb|W||`?L*Z z+ZJnRife^#a}g08Sa-(Idmy;9GU;$L z&^pe0err~sEhbKbDixhaoTNFVHp0^4HSeIA#tKfZaZhL0^ayAVxG1#`35+PLIC;Ww zwp3cHMHg6SceZjHBiCtb$O*WL)8aQfp5LXcFVyF}nPLA0#Qw2%9f8>D^3g!1leYwz z5cbd+NDl(DKwYj1g4`1#typ$kz9++mm3q2gfD;_ba*XYIMd$ZE^cx$v+l z&LPY7nN#%vI-f?DMfp$H_O_<>ksJ0EFAKj}C$caC$i^J78^gkDgdi`m>r*enJh^s{ zeKUV=VEk*-;9(Xuo6hNTL+GLLC7}rBv2}g6MS_OT9(fx6qcNaU+e>lJIuqv?9^dNf zi)FAlt(NDVS-U!W`7=pPx|8SEp$JVk!>i$eL(B|0KFvggiJjR<4v7MCZAHYlrk~NJ z#(2~QCI(-OI(yj>BUoxqRQdq)gQRjAsE^@+Toj-Cx=qryuXV zX4@0e;byYOV|EWgjhn61o~*?v=y4+i4KvdoO~LC*;PgOhUqCTJcm(3Y*hj-^dH7w} z9_&FM`lvag5>OHGr{>pEUE=l8`Y789dflYwmb>|W{qDsk(4VX4^?iqs^oxKkuUXv* zMLHhfX*i23cYqjUZb*e4Zt18%UOhfX_LL?QIwd%}cgJz3vj9t{Aj}E&4 z6N*~IppkkU#^Vpt+iJ^TquB85pKyju*)_m%%)0OBr=T11cPm#(kn`bQ84A79s$j6c zacGK7Q|Ba8W)@x8o!>Z7cGEw3it01AAh;2%zMr2qv$K_qVknvY*0c#PwW*Y{kA-)x zzjs{Vr+xL~I1B&HpC!8^nFSBa0&Qvn-Wz-{#LCyazTz!$XgXj@KQbcevsrv6017<% z{^hExbg_EH9q(}qV2x;vZhVZEa02J5Ll(e)Bb_UC6N+~m8*06=H7O4NIA25HG zWjRS$t+n|x8sV9?f>+6yJB}s<=tulWu*G)8x>m;5Xt63QMyRHIY;%3L?DyW(Jnz$b zztd4(Ud#+zo%2lPopE&jAPoKND3d;aZ}#HzTE$$Be1D_(FG43yKMgh>zsQqGX5ZAe z@b`$s6Xs-&wZFwz=@90TPvdP9V9$vjg!50z=R3Ev40Y71YJn%S*i8 z2%=#wF;gu9&1yaaCdFS6um@aduhCq6oPhZ^Wq|gDB>0AL0pYcGTh$RC4Y!bbNmgcD z0oRRft&E#qRC~37skw*H{lw-+QD7)j5yJ2=7dMOUHd(#<{#L*zhCa%%xleyH&E+8J(kBe zHF~G%s1297EZn!~74`c8saczXHhMT%dDqQ_)B!36p>qT>gQ9H`WPFbXF}%}`-&&cJ ze>T<%6a-nh#S~~?J~{lOR=_Pq26L(}HAWTX7eF%gn>WW!zV@VFN?YIEnG*6u*q@ng z5T?SoNLxllk0lQBj``-s?z~KevKt@rDcd=fLrI)$pTV5SzLjAp+58AOgv@cZA~wk2 zo@>}itHA8I&qi$HWn_UVuE=lyieci|GJ|ZxHuo&VeGg^2Bh9#%b&3Yvmi5U9cn{KT z!)XTpndFBGoPSTa${`_n$~S})yo64$I^-P&pE1e`6@I_WXEyIp<7rH(!JmoA${d)= zwy@=lhScaIEb*GB%tT+jVdy{tK@4v5MvU*cRp4^dpVC7n?Vx@0E0Z5@r5o1-&#ohvth*p|{>_p`Y~7UbyF3 zq8@S&DPMZag}M^GHz$C@q$Njd1XkxG3%MG>D~67D{$K^d0PqBQ^9ExFzuxHL`X6@W z+UE!V_DOZKbOaroLjW*Nb4=TeO)IWp6~BCt^|!r{Y4Lb=+pA6ODJicPUl(pafDsd# z{|s@l74YbxA<=s#iC0CSXz`8r`QqnFTT73McqszW=Edk>_mmj3LMsPHSsx9}u(p44 zK(@cN0;2bvg_?^hnvJcgSEX{EUaYH@T{us+-U^(?Z;hs7Gn7=HlQvMOY6aIegLFbQE#wKaQ+Gwuechtdyjtv&&()S)Sz-$Mj(OX%50C zAGZDTNxlF1qz+21(X*F-3#sK~e#UmbF{L@}W_5G-4<9N)O}3i9^jQU?*v_D*_q&W$ z0*SI-5mQ_d^86|2-dlpg0Y~5nP`anOe63y{&E(i0E@Z7Va~Mg<)hS!Y%Os(jcr#qnR|`p=E;pZ+@{ ze;@pQ?QaqO-xn=}{;MK?ul#=Y_n5PP@9=%_ABye2zlmh-{fA%j-wP~%gUbJ2Apft3 z{&VR)@&7jCzrrE<;7|6bT3;qytOq`GZrNka1#KIln8mNtA}u4vu# z%)S7lLkbl8IXxGilk&L(op#73=fD=M(QEKbIczPivaUVwcr!WN8L+bGy@NUK|9Kp& zL6>TQm*8BKwL~pW2ea= z^ZHAXG+$%ki!a)bIrd6!4loN@s&9wf^n7r#zoG3AwVKACUb?EMzD(Oq!M4CQdYJbd z$fd0(punnDG~qn>ySrLSGb6Ld#*ZPTR84A_)fA*AsKmJz(Jf+^4@l1zm9O`DRdcN$ znc`e#&lPUtHuC#}y0{Zv3}5YyG2TTs27gl1WdTItvBq-J|g)2{~Ez_Z9Jn!605 zJ}((Ui3-A~SnUjoRxNc5a}D4*$%|3(FyX5$Ri1Zk^0h`k<)@c%Mvg#DPkh4LgdBQ&_&8t@;$SyrB11cQjrruAN$vLwG{3&$3+yf zXG8Yaby|d!j$*7jO*ofp*u@;m#CrLi&sj&3;ITDxZqs{Wvz=!{vs2r=P3BffX5SP7 zWr>L%{MY|K;JC3&!=(|dno%3e`t=%pB!Wgazh?^EGYGD)`V`!8L;Xk}N5xfgr}vZb z2b~lLL#=8nDrmPC%z2!tIh1$(VIJZ!B zir8U{UQX)$nJ42EpKW!d3^38vpq2uCJ<1PJ`2*(9h!o7%*cHQeDIy}T#%83SHEZ}~ z!mDk6@G$765XgNndvU_jcgK`lg&#bk`EB2>214l5-}a>?n^;YW)j4|t6X(&A1fsLz zUpvEZ&~6_4L|uw5UZo-17#gu*-C@pgz9lWnaUn}EW|Sw(vZ54;GY5J z6FZ%?WzZ+RN$jOva}zdSQEwsFOGaxRCSc;epk@>tq7)cMrnAR7wBuBCvt$yBCDgs; z3x|vnJRLq_w@JN6McGd!2RVvIwnoEU_a)+HQ@o`LT_E5|@paekh@n|5T%vADU3_AZ zCl|s-jyvq}V5MrzL~=95UrbhiysKm4r8JpqArM3*i*1=^8F;jsY|vd4{_MTXW4a=e zl$-0~ctveedJ0PXnpyJaT3t%p4NR@w`*Z8# ztaS8kOy-uQb~_h+Rr!FazGtRLXT*!AfpO};^H@#jik49#=9G`D6=~pNT8Lee=dWh{ zC)OLY#gPf=JP_l(9^29qVg_S*bvpawNsC8HET>xXa}5s*cS;DdHVI7 zDpmI9Pi1*qYv$d4qC3deiqV7GNVM$AdM&>(Vds05&`uM3w$+qh-QwJtmD#$QWfeXG zU8#x36l(43$9E>2DwXJ{F|VGYqvd|t13gKEdlPqOmlZ-Y)ozNHS^y*mKRFNO)Tg@M zwlOQvf2x@j#JV2IaV@D%)uZ4lrKL30lnF&Iujz;H2kd?g-?wK3S6+yh8%!BTG#zy= zxO96pk+IY;(?iX>Y;A(7jgT6*SYWoF5iRxwY-?30CI2mCqS{CgGap+hDP7Q0+ z)#hmIdz50G)5|hnzxbjjj_(a6tfAFAX(89zyWqsFd&pI+6Zol=e?#N%H7}Pf>#iI;K99*3=T5I_bW7%-|hnt_DhuW_gngDl48RF!Nkl_lL-(Yx2pMZIP*jSo}xx z-_nLX)@S{lQqB1yH|-S!;C+|gGKF5nvS~f0xA}Ya-N>J9Pg&fEqyL;}5uMrPI8Q&L zfkh|EKB)HEVzOYtr5?Mspq$MNay&*$3lvfv0&SS?&bs1@B{#BmlNV-NL7|cWN!DVLOA8) zmPwJB-Ro2G{Z#0R)%{RbPl-9;L&kr`q{a)(K7){k% zb$<+p@x<B%s)Gigvp3wkrDC&Q{|S7Xi0D}Is8k1#^0tu%Rqm!_a)9_amH!vG?J&xVs+ z3kX?#@SDR1QT$5Oq|de5ut0C;xda$=^x4KFQikGcsi--S!fvoRzlwD}mi$3?s5usj zkth$ClcnPjXbRK2r!;J%8I4Vq#fMSE;mo_0{@AB%1~>=*B4Lm{W?)FFL3H>6ZK|$6 zmQTsM57`N#sIuoipgv0a@Tq}q>4UcJz%v^+2xEX!tnchtyMLg|Tnflj4RE{nQ%9Eb zgq-$c>WvbSn0*A=(>kUB5cHZHUY*5?s`I}-?V1`yONDWl8ad$j2$YVm@@V^VXNpd~ z8b+q=81rN5o4*;3l& z;vWyCZeWFq0S#}3u44NsvCBLPx!n6#QnXA|6CYoEwJeNkjNiH-lK)Ti1|-QgQNPoK@xU+V6mrgQi4k* zCH42mj!fzyswy|#oZDya!?)jQ>2|*asac89H#CwDE?jWBt$SquW7SFiTJ;BF!-C&; z=!K$IGVirxc~|qJMA>01s>wnR^}fC6N_+q~gO5iCF-Lr8A>Bpke7RSUP>7vsd8;c`>e0^ld+ z$XOh|!#_SIIU$x$(P1rbR3(VR{Q$eP=Ssw1A##xW3+Loasbn%~s>0PQY@B7w{fnFW zG_(l9&ZZQ``f=GP53j6}fbB;}%XOot;&;0|fYccP*J(nq|L)dOrLnLaIw`DNwKwok zzBQFB3L+Y3^OmFxu7sp=tO}S;kO-az2ukKRIxf%gES6Cq9->|5<6cw5FY1}hEkX>#N&QD z92LmYGXdlXQ2mfS9NM}n` zl2TE7yy_Sclt+yXsLNw{(rA_$&m(z>T=5c(z%R6~%iJV-fd9WrWOiGpy7-4BWvAo8 zkBD$gy(h1ILXRM{?1le`)I%MDX&WUw@^CIm?I1}F-)16-|J7?_$&>I$s}d^bM`kXk zQU}h{NFx*=YYO70+yo;J^(yuw6G)X!QAn(@Ns)xQxFzBJER2lS{VmtUh|0Wj_@jpn zU5!*qmexuly4|j(G{a?iT?&49vK;e9B!-&R_IkdFMjRwQkC(Cw^AOMmzY=ywzcYhA zTj!I(;#Ac|`&iy25J%E~%&ZeJYR2lGIqxnfBc-Yka)u3ceL;T$g1`e=!t8tMjX=ID z`1+=tv#H>5aYkVe8S@ukOQzco%S_)&HlEukYWSH^s>?`K5ht5mh2L((Rke=9gdgcw z;a{`f&+MUvLH2fWPs=X>s>?E3a{|0(B%^`mh$}?h|8mG3lp3d6`71K8`RZ%LW)Gq( zbd}VTkFV|DEUTSRh|18=Iy;!#r(MHR7;ZXE7S=;y;gLcCV0PXRSJyP@zPz%?=Kw8q zH-DR}`=lG77I?s)cb;}9;yGkZ@gGU57=#kEFa1G`#!tL!(pa&9lU@WAR@+{kpCB7O zOi`B37-Gr6zcY57!{&{nZc-UGF;u;VT}n%mSfqhO6TIX(`))Z=v&&N0y@zigO8!>n zwVmy~qK`2H6FZGnO@-xJZB!h3@BQj>GT}!4JAWk{o`XSS+O(AnZX}@N}|QRkG%xN1Ltj7DuY?bUYvv-z(S_ zB-PSz$x=HmjIqh;kE z^}kXyEGJ4W6D}c?A+9_GEQiEI=tU#ScAh;&EAf*y-8$3biAqBc4+=QR7QsdHt-@|s z)5z#Q0eo1xBbH9_0i1Y!xt3rC3F#-3&{J5r;l^%wusiwfN@CPFbnw6s_pC`*Gb^c{ zL%p-9MpcQBrK?AbVkWAxNa&qh!0s=6xZ1SXr|z&+*sljaq^%PA<7l!+=)$UVk4~A~ zjG`FUwBjyHzxFh~*&-#m!V`&%(w)6mH$)LzmmTm2ID2QsOwW6Vpi|u%HbKYqMX}Fn zjAKASf$GU~aL#OdY)BX#ihCtGV5Vp$GmqzmJ zszUC&84wIPrJ;T?w9j?wnoAU?HeB;7JAS;HF@l7#WD&SB%fDGOUjA&E2BmImqy6F& z2`vE(lGgqrP1xk*kYn`R;Wx@CSZq&j0OE3_Cq9u7XZ-4y`+$i{mc-y$^I-43123gP zU0|8=T22SwgZl$-5)T%h$KOj`1nTd>Mio3TFL$2nlSY-iSWmyfBOCc#Q}qK_IQi(f zE|n%)CGA*?Fh^ipN#>M?93IkHS9|$CX%B7$Y6>vo?ldI)lR9+A1l=8sQ)sgg7QR2F zw*Kn|E?G;nzRN^-F8d)&UvI~xD3but9q{4uaK}!mn{Wn{V|%)>7rrI21 zpoU!0x7n1N%x)RbS;IZu%|uv->6F$WJW zxDx!Ge!gAzCWGiz_(uqiaH!r`uBo5fymR(Q)6%ly*K#AuO2ukZze{!TYfqmn*J@tX z$OIvM*naiySFuA?inP{E4xJ}j(Jd3sZ<0THOw%Y3VvXX83M4`o@RG%*kriZWb+THg zeJ;N54vG!#?UZ7Yv=xCp=~OHNinJd}@pk2v9qG(^`f&_Ce$1HYPA0aa+RGlwn=oRK zEiIdWO!xjd{2XR6@zOBTq)^y~-09$czm1Vpt(;>{%_X`{fu>d;-bBc4kVxscuKi4| zQIS=@>?U)rPY9^d`Is=u3iyEczk+s8#?oanOQHlI6zUW-jt4czKrW%jK9QZMQ4^@X z9vW@1_i9?i^KRo@YEj9Xayyew8`ONPMEjZFaPu4I_w>U56}0 z!sG1>u<2(g8;2^nW{CNtr2ia$++91A1lN6Zrb|CS_2%w?nNld9pLJg*%qC^cju)sz znK;*aYg1KyI{9nQCK!l2HvOCLZElMK_L)fIWy&%NAL_l>kFI%= z%RTXab}_x$H#1X!fC*&I|>KLIw;5E+OZ? z_024xH^g)+n_o~D@E@s^l^GTclSE9NFh~~`P{cwR3TQlyS%pS%t92>}BPLI;_*E`M5Ta>43`F*hNBs?J$HYzpsg|{Y zejtR4a+XVA1{cEFT+v4lS?8WZJfZP-mzp5khug=F!V3cX@$|e|it$aQNA{)6LXqn! zMWsi|GDSl2jk9tHM0=JV>lKFvyZ*HMxWJ{3NDsu$ZQ{6Oc3IJLk4VqZe}u(k$AEOO zvn{auq?`F&<*SgW9tbpET-)ZJ*5}nE5+v^#5tMZ2IW;w-p2UxXiwmv{&j%3vQwRi9 zm42hRv{c`lg)y~Ro`L!{I4PPSCj$dpnY7;@G!LwMBBr-8HH#T`4#_fA3x%kvG$-tp z_rLMPatn37H_yI|b)G1w58+#HBiyHEVAx5V^6P3TJ5;A>02zf(EgAh0rfXfcbvAb) zJ^_X6B!1u#@Vq7at<2EYw!r$qOAW#rS#?)*%NXA`{nh?2XMhj#n(K{s1tZYjFvD?{ zbsf#D%R{bnSe1@WSS8=OK9{??`4^jN3-F$zOXPozylKO%x zoxmZ>eGTPFKN5TREpBt*@gs=o)a6j%OA$zNGUxRN1w}f!;FNv?f|h{Z<;Utb0W_UV zqCYSbPB?g~{cFpLC0Rf3RmwFVc5XURsanpJr+8gHGwqcY5(b4Rjw6pdcX=kh)#p?h z!#T&tPSPYQ#-)H1a>nLVw3Dw%fAi4m+1{*>gk1l{wudk!dL`N(mESq7DTk+wfV8hS z8k@P^q`J{(uz2r!F`s@2omKKeAeLf(0ry&$$KA!*=9-L<8;*ctZdRN z%@I4=yD&qVl2ZI~GZ}N3TR(Yg>By{5FtLowxLmic9K}2}K~X?Kd7p2~^``nscd3Dy zy12QAzi%HyJE(tQP~S@rqGG+W53Qn^O$qP!}!yDmrjivrxZNtw}}t z!)oug@I7AbEt*mTrW0b{Wxx)+jSk6b3&tpCGFh&ZSxdGETy+rozuCy>zt;RcCthL->cMfkZIOmEY*Kr?Ge=3+)8Sw_DCP-#?DxRtQ-X)b*F@y^mw>$e%#I?yHVDUT?yFlN^AjDNp{gF#PBjfHhRpeYczwZ0)2 zh0o)zMZ`0){jq-a6Fcsv_F$es4GjsFFgy8o8XNPzgLv^-xJ0wyqA#X8`*X+gFGs5z zeZ1zvA^E` z-8nkCTfC`UUNNDSB*n-fxu3#RZrV<^P|XJ+dNCg?c#pZFIgZ0V7*}@a3G;Y3g&$o# zYY>{S-o4QI1$$Mp0o(S7QABig98ROn<67(2PR|DtXZ+#fr)v&N9qppw$dwAk=b(bk# zBm(2h+738heNreRl3Bq`#|({%g%_g@RK@P-gS}=OP`legYWFyTCC&40 zu03LoVmd{oC4S_fR8_tP&6nB z*k_s;sWSEL^~twzqA2svEu`N%|>>>!IPUxHc}~sjDZ#!_mRG*SNym^z?3Rp_am5e z6nfXPRDYIE{fWT})1Bh_?qze_!)lnYr`A+wCSm9ZWMEgO*ksC@)CaNX_&IL3@S;iY z!3*$aALbl_PFo_ZIF3H#OGPRY@hdDuc~FKtQZ2ds9iTcAz8701c-G1kYU308RP+1S&7CBDT`8pr#nQIlcT7XHtIN?Nj;+9H2n6Ld*f8CR$kh!n(It-_VezZr7nnt@B&)+n5GRbO56PAyhNV zke?{5t#umHkvjeUZhV8uU`9-9o|{+Cr0puRt-v^4I<&}Y)?UWL{IX>Fb$^VivbT|Z zUjV@>kH3@Nzq|;VzL<7)n&fiCk-56asI5}_IL`R=yP}UGCnm(zri(sZ!?vmiH6<38 zO~iCxpHJg4h!H})fv?t{&yH0*n5fd|I(4EV)t#A`fpyy#xJ9~scBo6b%M-dR3k(Y zb@i=xQ@T=wShM7Wun-34TByNZc+eyjVeLLp@R#*$fo+zTQkSe!2^97Y%s4RG7 zi74)^>PpB1JuYbzw$9(LT*{~yFzaF~qKVQWq>SPnvU|u1D*|>f)h1kgg{;xH^5tL7 zJsDf=ILyi~B?eZ|8h`#m4(6rss(_kWIC#t~? zkjP-5M>$57)bQlDj>HEkR;FBbw%r%+#FT_{IGCjE%$DTX z@DRv_l(PXd*q4Vsk0-*D`^U&JrdBPT?a?7T->3OhPfyQULv%8Df|alAmBC6NaDZni zsPz}7pk4S^Uh&s1+vRj`?z41Rf^Ig2B&qHgBlHFEV-XHmI%vM=e)X)aaH0Jpv-4H& z%q~&!=~R;9nzu1v)gmS5M;ybYv#;qh7@g6cL&Uu=rB}!7Fm^3-{xTfl#hGV724J> z{$nI+@?4u;0im%TL|tJFvoRFlkK9HbTzDWUD)=f*jH;i3K%kVatJO^D?P&qs67vW` z!mn0lTATQxAbp`}1{OlR6Y^UmCAN9qn(uJ`qB-UxxO+nUxJiKXc5%&EGmmL!ze)-; zQ3#H&nq6yoUYWO&=q;95>)`tH&V6tkDE9Wpew?&jp}I##{;_k)4wHDgY5DDlfHD2k z_LJ7xSfsZArGT|gCoW`jmV9Mfrf=W-{`bZBzohf@yl|5A-VMP_<}hg|bc|Iuai3W4 zeqZ;B?Y-vf>ax8OUK$r1g+W!kJR^VrC~?VasFEVrvWsW)tcjlP)?~=Au#A&vo66Hw z&!)3LkL+lKHZW_riiKyG4(|ae7eyuR?{B4!zEpVW5duv7*%JNT7*FKQ8K+i?&Z(ylCPijzljM#5+V}UL|C0cOYreojRkOr1@n!&z~t70>QtFLX8L}-I@ z_>L3`_i*iqlcY62i1VX7FS%MAQa zM05-~Vl5I58+DxRr9jzzuS;V-Ctu#B>BH!2+h;f-dtxZn#_E;Ecf%?xE{vBaSx-RK z_%@9_;;P{6)#Jun3zf=$Ne24w{Y7v1VbfzOFk^Y+@Y=+qdv^`4@Ul6?w>9b))7pQtSou zE)_@>7V&1BufEGPYv3OhI`FA`_mYzV$UYj}eROWAD;Y8(yC*_pVpN&Oq}=E5>Wjh? zC$C47)}C^twc{eOJtv7maX3duZWe0!=WT;;-bx8(R{x}9FtC3qU2l`TuUo2PU{G9T z_rBC5r&lfhS-3-vN9+su`-sk0DvY4>pp2?Sp~x%11lJ=E%hj+pp?naUE}j2k`XTb4 zaoKE{S9jqv&ln9#abz{Nt!g7=kJg%+kMoBb#hkn(iE zWjPL$o7!zCcKU+drQo5Jd%vga?F#LtyRz=$+YPGF<|#Jl3&B}@sQ#`b(F4eTarP?B zA-egU35QT?=#@S}(JaoT9m<2vGbw}GVt6TU6;H?q&uIF{o5uD03*4-zpvNl?O-sGc z(&*U^-pLd+4Nl^P!4gra0JFCv(w67y@Umf|`^vlPX5kR5vRpg=7vAgu$Q%$M%Mz3x zeV)+^%a)zm)06K{6eOYa54IuLHi5$nwcyOB#9%C87Wk~-&phP!&f^LiDErdh2%gY^ zZ)u53LZUi{`i&*IkyPB9g#6I~Y+SUhDLhDQonjj71MGeDLo=cD$^C?WLGX3)8|tzB zg2Vk5Vx|iW4y$mt*w+1DJqHq}gqpaRz2fYZoMDpP2MX{6{((kG+ zxkHh7X2q_bVYXHRF}jgQhnalzL2aCq zv^*?O{J;S?)|vJf^EL2MSFTRUR>1DC?3(o(!`;hL+_gJ-Xf5BDa{d1D_n2}>^4M@p z&SL270561Wb(MSeDgjGdsQj169}&8wlkluWsSHZC>i6NB;W$Xigg7ighj$Tq;&9rZ z_!4&erDka$DVa1eIbkOOZux_t(sh54Ea5zTgZk7!n3{tbCEY0HbaEqK=_9vvJu{Aq zLwi@iAcX02%0v`_bjHnP^r-H75_d`2ga%u$3Zbk*TTjiEZZc4|t+TQRzG>p?!Gjt5 z_Nx1?DdUp|hpvJwj`SfjBCQfBVKK?%K<*G)evvffYk6sP&ac{J7QA1s_8B|OAXa`` zeg&PAL;Jj_mA(%>XETQBJ?T09utnu%_2{9qj%%%5`BXvJ?czXvu*}>RRH(*KjJV+S z2@z%=MkbFMGd3!*Ahu1m+#OXbqo8prF#I75N>P!j@8c+W9d+)Zl7CC{qtaUyg>!fBxVMH%T2=X@UYmnBGb$ArG(#niAEp- zvj)4KNmUJ}c*P;Nd-$%I9}rkU2=~2F{9fC(TY?`tQCg-#KuGCgR)V++;#)cktU7Y$P@|{XCh>CCgn@T6G8BNvW2+uEs{He1F zfEQ=@w#L#7A|KXB)(WM`?g9eX85KOeUE%5zWE}K;RUVrAx-z}ZkeMF+kF5r&1 z-T2tc%_DEW)t5k-5WU@aDq9cp&$E{x=+Xt=`|_MEtE(^BWS6*?$LsPO$K@vx0@zpi zKka>ISW{W|FLoUj#)60ls05KNy_Zobp-S&X=_Mc~ARQ};6bVf_N>2izBQ@CQO&|$H zK&cX%v`|9eo`huPz4x8>w*QxVpJ&boG|Aa}uf6tazqR*SXBFyVkKoI2p!?25P4!Y)o;%Ex*@MQdC%&RFx}Bg#6x}8k1e{-Z!l$K zj7pER9kjb%Uuhc*_=Wbf;~?0}FQ)H4XE5O+9$FMd7 z&C8eNj+TO~Hbhz}aC29myjKF{>$oFd^+6r7eh_mxPECzBLipt|m-0sLM$Su<#vG_& zjAN)}ajZw6S?@(odr4vTk|U`i>?Uoo1j5%N6_`~LL~k-yVfT*x`*@C-RSC?lYH))( zH(%o80g{#b5wi-lI+gD4yMq1-zgpcYgmDY&56%Pcy`7Ym$$tXwJ}I$PBXCgC{Lc!{ zAY*AY>G{A4jGuSa<3*RS0l!+ahwFhG}y2jD#12qO26g}4xx)KN3BOp6>Bp@ zb~LSJBS{rl?U49tLSoQj1-H7ROD^g43bE|LH>p$w?CNM1vsBO5R8dHOvtfMZLepbBy4<|R2&hX$zltKz}X|1YagSYtSjO&+V&90q_*k z`$p{VX`elJJr%aw`^7{cR%$qSjc4xit8s4=;gkJ*s;<7kwha$ce}497^A>@y;WT|9 z(uB48ROc5KX}r;YeZKR~nGH^FdU=HfXp>#Wn*z14NXJv15mr{EL9x#&v!Qj{_T}vj z1ptyN)#J43<*v8ud@j*fVru|_=GZG=f4rk{U&;2Zc3DM;o-{TVyka7?(094jQA2x( zz14Wzr7&Zc$7?|_QTDi|?tL?ng)sfGrM>s+vpXfJ8!mcMOYyTM=UX+t=4%#-jKhE; z#Ea54A2DK2hOhSJzy9=4kok{;@$n^%ra0?dRYJ_u%xqHwBSUy^!CoKZ;7nv~L^mI| zt~*gU-N&V~Lv6$>S}z6I9%5#G@|b5e98_{SpyDkk=U`U282n>hSX7*^x1{eiX9O=R z3hd-`%4u3-^|IPPVnT;`)Wpg`%$upM((CSIz4Si~xn^@uS$N@z1_nO#LRoh(zoq60 zj~K)2$XW9A3r&uS6Du#(MddvF>e2LMSSSU*3&FtS>6jXTV>NNk(C2)qdSG?>V7N#pxYaO;~>8M86aI|QimmQ+`4bUm1e zX%+`1))gkPNhH+)+4=`VXd$g(*uzmS&qbBIZci8Y$3xCGsnFrDGnL;jofpiDb0>e%hIO&-MEXJVN*dau7~fxa_97%C^- zL^uEOt>!TgBLB77WmDO?ivw-kICG8Pf@ZvBxjcsxXQSKQW<0;S5J=W__~oSO$~>ro z4HL`B5rWQjn^TD(k#YFf~W=;E}tFgf(g}x=zEyoEjAldC6r+P zxYQgmXFTm-URvxHOWJ{s<$`9OOnU52=PJM=e*{M{e;K(Q0Lj{rAJ zRrLWx!Z{=me_8PE#28siCe>p&s=T8?KOSrC#M#>}>dr$9a(191@mfEi~R z7~BoKy*BwHGJ`RuR=)FDN0YY#DMq8%`<4hE^{sX7ed`)YOIIP}Y&TI7 z+!at&#mUHB5|0$sDOR%RKsaDr#hR5~?RJg|i1pv>MN-?@jk~V5B z+tr#t%&+9Ovuri)&)&A$v78A6a>7>ljYEW0zP1Tj^-=l_veqk6Q&v6moSo7KMFU#P zmPC*22wzszi&3+W{S;3m=}ab%r^ZaamU##iiht^Tr_4C#YU~Ej$t7RdD`;+KZ?~g- za=%cVasa(_LTjfYC`&KnEBw+(^R9DOcFl+(cEi4x-F!xOCK%ZCgS~DAPG$gC`GZI} zLM*s}g$$psh1NOsFCuqfY;?j*eEbG4vzx@`Y_&^!h3}NsO4_ zSw3f;8bk2aje!NQNtL<%7dElkQEx?uVuyNLMS0E(m#(b0dYQh{uNrRK9$mwIgbF~} zfc&@W0cvQMY2tFqz(q3)6rUew_3L1mmThnP3JYEG)BBN^^zQSfee>)$6ucXmZSA-B zSrI-`i^Y^w2UFOafHvd`sV z0JKl3E#xxx{>-h`H#}m`KGh3}id>q!NX|bf6}+h-FTl#o_dnpF2SeFK>^oir$a{=` zem~>$?2w8Yj4gThJuQ*hQ+~w2ROhW{)r&~$>gBnq+}}M8mV0yBL}(l&pvl_@E!+o@ zbXOFphJf5L`2s*9t@_CR7j!LGY0ubFzxdxcNAgeQ1}d+}|NMVk$KpS2AYYhHtKl~- zS!ArYKr3bJEG!LG&)E>Knc#A~xLAEVzT($A-7X1#4@?`biViwM<%Mc{1hdF^x^}9h z&|qbZCM?0?8^X-}7&jcb{41Hzq zAg9uH_lLco>%RCk`vrTFn069UetYvA^p^{p#HN05`A(6TWS7vCr!6N~A zZm&SIR#t)cLJGhy%LRLZ@;H>Mh3n605Ozo+;NHA|$USj`5T{MW(sJNUSCngohG0yK z(WD?0XcomD06bH9buIO!r?X4ikF&{^pmQnx#s1_(+V(kX0K3 z8vlhyz$Zk%sElGNfiV=-X%8T_)OutI_Sq<;BVADM_49m|oI|R?CjNRQ;VNByK13RU zrl+WrRkVy`2})Y5-y*`Yr`{?!P1G(8GPRZ&HibOzG=xAP-)smsS1Yz>Yl7JB?Z1`= z7>p)^Ew8eMDh%wttbe6LRG+l!Nn_~f0r(&ERaVAv@3#IPJTh6XV{>nN>S`&im=phb z>aty#8LE)etuptGcYE*o-u9@mocM-R5Ft8lq|cQGTjuor z#+M<{Yl(kAl#SGIRI!ywHLm1u70>MhicOI(MLn7vwj}weuoal0fKpH9e%1YahmhFW zg4uOg_PrggsFQpc%`abgDwWirysYnTf#G9tRu9yh zO7}kd)sVy@&+yWrB1j5n!QIkjK_PKZ$qtos1zQT10MjRb?G8Y`-1S+i&8PVi0Oz$1bAi zIN)j^^~JbCc(-i5V9?Z565Q_WVqj*57*evaF+pJs;M$;?wwj2oH*y{3t-UGZB3jV7 zqV%Sdp5bqY*i6|@#+lae2(e%ZuM=?Uy4uiaQF{wJ(H@t9`AwhxE;f6=vU>nGFF7Ag zV$?FVHwjL<&V0r?S-xNDTp|b(w5OLza?YhUO#2O5S?2zjH|P2_5hFK135x5t@$wvRnMfv^MZDXOk%W!YCmmz{V6@(D7x^}vOjO^eo=FfYj zO~y(Inw4^;mGut3I1T-g8kQrcM;=#x+op-E8%<;zOrGREkF(6AkoB8Z0&sN9tl6TF z-O@|xV`-;hRf(y-%~nC}RGlRa14 z0^vjXHSx}>040Ut0;NGI;_X-8BZiInlOf7p7;Rk7_>infj0yMg~Umn&5_j1}X{d^>IJ)dk$@b{kVD^hp@lk4t%licw`nWcq579W;f zBp06j9u_!Pjz8i;XCMJx8ssVJ|4!)n4O4r>cO9h*ffQaVF$`9}MzvG?%rw!lBTEL6 zE#wx=o8VMmv6IAHvoXD-ZXas!rCtFC7{~>SP9sozoS8|T?apC`g#lA8sl&>E?Qo6T zG^d45!NZ*#1G}*JIr;b?SOMxB_t7BXqs#sj@r9&I#wSo3p~vGws0NxTUZN6 z6Hji40bfsBuhz`Uv;6@T+i4C@br=XP9EZ-Ku?-=+dg_MH>9fv0x-dNBl)y}9*DV|$ z$GijL#~}R{rHU)NQ*v@(`jTKASN2nUZtvA+FnooqX!r3Zwd0w1I2-UWkyq3`K0-;2 zbnGc~;ht@K=}$xH&mEa!>TH_S@Wu2n&5CNni zeD3tocZW4>ym9%*H2X#S$2-HFep z4JMv#FYJO1%dcgwFKH(Y8xP$6db8BcM(o}j5JlG`y~E3gE0jN@ z^NZW8jgD6ggX**IU7CDfWN7Li3t`EE-005^n|M;UZN#sKoV|T+lxdEApYPv)(KgLO z!#;xB^-};DyHi#2O5cp-q;a^2Yo)V`9B_6SOcHC!m-%^@r|0~M&tyM#d3YG@oM6(> zV?W@E!3yZ!e^=yosW#uRqKtLSu0gP@ff_d@Klu-jI()xrAo(Dhq^-#|20V00xl}R# z8bD9h_Weuv9GbAOX)~-2lMW(1B&ut+8JSfj@GVg7Mra`I<(u!)dk$>ATxso23hXr4SNRo|dWqR#AN~>?nhzHq(Xz z?(YIll`0nm7-v;TjuRv#AUZ!JPR_r&tjiUg6)Rqk%j7tCz#?FaQ@X~&j7Zf;y4PN` z)7u}Rv){lHmLj))JTR`6AI&OL5AXl+o>r}-B3_4W*s>XT!sdCwW-`++t? zb&xP%5Nj(@u3gd>rXj)yEs~#2y|~1D&-Vi}v#rOLuw*)-jvta7?Om5t zR&;PM?v7?H(f+jTp4s;Ha`O;VYr(`2d!ZMR@Rd|Wy36p*BbI#MpGd5w_CE+6m14U8 zx1X;G`w!G-KJx>hhaoaR$sOnZl`Di;3qZ$#230Is9-3Lb%Kd}NQl6iZw3;C-*jQ0s zsS8ZFR~V>I{(j~hmsUi8n-QRMpxL*x(dxGQ<;m#`Q4JM3RR(f!p>s=EkynYc0P^)a z0TeDytCcrgNGS9V-nwMr+ZKxwrS5%c!w4^y4QQsdYYo;1h zvY!-^1#;Kxmx4bjO}gHs)+D4;?>Zt{e)kTG1UgSb96M{Zw_DXEz}*X2149flPYh^E z_(IcXcN$`QM)Y2qNj8HV7Gg}@IbCn5mnWC8SRt5T6d*r>0A#K z3&s!Sc*S;}UAL1&YOzMeg6g*o3rTj=L0V`9;v7GW77SklZ{wJ(2CSTQuPwa#JH#m$ zvZn!Co3)%kYhtV}$-n+P3p(!}G6s}#o>O5T20Gf^LWO`62((p_r>zooe7gTaMbhuD zF9v%QEY>cB?Sm5fdI}u!@r&r+bE`sAm$C6j1l44{_MK3+%54soHNjbW6lg7sVs=;F zo;y)g<5WOmeC4kh;+#f`rqV@kLlw@@x=Rw_;2P@!(7TF~u^XkmoMi_V{98K!}Hwsc+ za0Jy6&k=)~A8kKi%+~AFxOyEGs#~F()UV};?k}83b_|WLbQwiD zJ~c2rh{PIPK)fH=&F_~cKGqo)bI&d@VL#2SNE85451-Pr~JI$={uquSh8mgpa; z;yj$T=s-28)igK%KVZ{Iz_~*hoc!v6;IMa{S=qP{q3_{=oVTvasVR7G{Dtr$_ptK! zm>>XN@nBp0hO{ZV2{e-bGT7ViHif*!ft3kG zoSgzyO+*` z@!9v1e`k7W`x9HAx2&*kR`F@~9rxT^7v4wVGP|`M-cb6E@*9jj#OoCsRcrz!XR~9y zJH>E6Yvzjjxbsr)he&bL+`S+fr8G~==XLLvXzz)AmmLvaL?P7)D$64gC zo6BAMAs2>#BCZXl9+f&QWb)-;vUu&CQ|t4KzdHdbHwKZc*kK3ng?mRis@n-Qt0g0N ztcCpxYPRfwD$U*mmL1hR&0Vip6;Z2}cRrOb>40HXRIRB(-E{a`Iab#XlT!tT7yKgRfglWv_6$cz>}3-Vku*<9~S@C zUgug*Q3%GB`NysGWO;8}{3Aosv81JquICj&qkR1F*&o3*4QLX^KL0NcfoL51R~S^d zWm_EHXJycSJ<0CSoLG<}ISUwTHqcYkcAwG6)JtL=w;tQ!tIdwz90ih!m!wB-BuTh_ zG-hSnN;Sp%>`PH5C#@h|CIGwPk+$V9eFcl#uU;9<|9aob7vz9}%wOXdITV#T%Hr2e zHmcGQrBW6B3;VnLitV(tMX0T9IlR!IP;8*>k004~aOjJRcyXT?XO~3ovtH*N$Vh}O z{gLut94akOM(@@?fqBnlr*MMT5ln;Bd~R3)@KpUmi1W(kBF(iGDK*Fh{mVnvj)PGO zmGz*4K3sGax<5Ox0_xKGcd1_K%K;G}?t#xwkp6_9Jb#nH^UVRrBgUcElTCPIJC8VAD0!~X``@N?k z(du2+a7D%6j7Afmh!^Od@`W_xaGjZ8*@W!kVJ$^wB$m(V`C<{hT+y-zK-|9QJVp z1|cYUjgMIczJ;*Q_X8)LT)aNflaX3_;4ilkfR5Q0ij57DR5B+|(^4<^RFUnUGrpSr z<+bkE##M9#5Uf7=kE{q$$5h4#gNA*P~r@jov%zZ(+Z%WmsnFyOJnbnD91v!iG3 zwEm{{?ct*X5x)&x*U3Mdg%sotkJ3674k^wwdt1m|n0!GA7k*uYRXtgl_4!LlpQI+G zV|n)qBlXY6Ax#b*Y|nfb=c{r2#8uM7V*NK+SFN)xZWjovN!78FQZupvgx#dAE}#^Q z;)nMLqp=b(u)t#76>#s~6Bjs8kAW^!Xqw5zy&GDu(A7@vJ2OHa2+{MR@Ear32 zcmJVB=ytKhBuJHw#_4IxH%L=ZzxAE+40%EDN={MxxfpWj(SvU?!%muwk^U&Ey$6Ll zeom8`E8m%w(duT=K5Ir>%%51G-8FV0dnB}^*Ehs-y( zP}j|x?V3*Xt*&A7y!r&O)6)&mt@Y#PjBh|2BYTQiWG#n+MVYv^+fW=cmqxezx$Cye zu#nDDMx0?DMPVZ@QYI4N!Jx4HFd+!RCRD%jlf$d8&}H@er)a~x$oymM!J-l)HR39l zgH@ZN*)!bDw+g=nEx9B5$n?-DKc%E4nu?oo?k!9W9!hM%Ys(#yZ{;L53K3d^S=%8{ zU#;K;4?oYo+`x%8M!!JPbNqR7%g}pVWIPxuG+z`DoHplXoc4)c{zlb^pEmTN{`;xK zs+pgOtTE*8*>@+W@i)nB8jH`7r{8#yu&_ijg4yDAR3e7--lY$fa)z;c-i1vznQg;A zk?*AYq(wQ7V>2L#9Zd)Md9F_5d-8h+tZeqP<{V(^&rhOd6F`2OU$--|FsQ`_38z6y zjMS(~VKgvO4@dNMaB$EV3G-HG>Lpi(hADv(w%>%^q3$gKqaC@%OBogT6MB%sQp!ig zN7T9|z^6<_%82u4mV$@p19$r}S|-7<@Y?|ciV59_979BoxVzucec~J6a8RJK^0&uj z-EFwtMZwjWje3!0R*?$nI)~FpHSN9cW5j?`yppBKX}*j^Q;3c~;!y2}2MsLbVU=N& zQ7`J8?2_kAH2<{>0(ZmN?K&a8`g!v@hYe^9*wcy$$5(TwfZ9)xp+&c)o+& zIG*>LFC{H%le|y0VJw$sTi%5_x`PN%Jywmmq^2dAr|fzFwO;-X}c}OIds@4B>hV({i;QXN_u(F?Z z{95j)F?2E_X`KsFHfMA+m$-dvz7Ni(*|`9pQPLz?Bn?MAs?4h+j8#@u`sz4Wm|nmV zi^D%OItAGEX*u4}yWN0B^Lo9y+OIXhPh9GJH}r9v+m^z%QxrjJq+gH=4m9N3y5F$% zMJY+vNf-LCc66^u!Re@>93nU_#Jtos?x+!+(; z(sH|z@oA=>cQ&))OTqRK-wTy@?$)j?&b;4)%b<*5i`aEshqf8?ESXSQhJD_I<<2We zp=3P#M+wb&(`~3=x4c`3BMuqy>H?b&$;-V0YhUS4;Kw*+eO62mbgJhmemm9H$SKqC zxCpHMP?rrL$P+$e5*+FonIMhYBif}>2;>VysO?zlZ`~cA-m&OH{wA_{;omp zB;V9$mls%|VNuY+*z1U7@J5Pa9c>T-uA;Y(k7Ps=B55nFJ)c zn(IA>dz{A`h?5_q(_>fVH%A=`nLCdfu4j)LSC}&nh>AG$^CH&fGfR_wI((e7D{X`e zw~_aaa0JUS$s^ABa#har3MN(cA6=N%1mHP_EISjd;D2@^7>Qe+G3Y%ha580=ej{bPwYGuur^k(- zMiFen89yz?5aVekkpx~R?hXJ1++v^#A*+|@xV(pjuH5G+^hywuUw(6F}7 zKl%X^TTAVsH@2t2nlp<(U*sk^WTzj2I_O`v$CPGpwjYCMX%^<`Ed28Q z#(Bu3!4{`=V7Q5GOo2@8ye!4Z{HinGTG;DYt7;Hr3SQ(D%shuI)dZD~#3ok?iOl#^ z0v0ooubWVo8MD$6yj?q;E50-sfVa?Z|5mhZqQ^SZ9YRTnwm9y3bRLxU1ZIoZ^+vb#`hB zwhwo?0ZV9x$ic3d40tk*k6+b(l$_L57(}x0N}0R#hr#g9>M`vUwHl_%hJbrDeK9$J z9U5zX-L}-_Hb|LS#3{7vRwa~KeH!5W@_jU>?XQT5NeSwNjX5(RQZHK_6pc@^X)OCFy;85 z>l&*6z3;#IoYnJt9H>=Y#m`o3VW0rq9!wsO=75`u&*iZvf(CtmW#@l|m!O;ehhNFj zC1`8p5Q8{sk|mOD@6&To>r0d$6ndQ8iS+;dho-b$>>BN?EOKrm(*Jo#g5iq+R) zX?X&ODC#(f+M_6HY)c(2LI(fh)2aizzk8+YAZ%=8&)Poqrd-%%Z$;?P3+c(sL&6hJ zXHC$-HsZ1+LQKJHhon5VJupt>;psSTQH-$dhe3y_cdPQLr&%PXbIow}ZR*z@fFM<5 z;Z4Dy`}k-4+P#wQrzfPQ8C9m@CWgI!J~~FeZF+fqP9$Vh1|Y1nP>T{0Toj@>oGV~q z^7q|)zl@~3uuj#)(J@NDBNiLBpPC{u1)uKsO?Ot$jgCz^xNMg#E(Ul`Bl}hat#(`m zq?bMo2JCF&y~zZIp4pG9l1Cr*E?3W^_O4lN%^#5>X`;H{9%DC76GqZYTkoa%uPkqU z%u|R_7c_k%k?tJ`rJQ4He8J+oj+d#t-ufkt2?X8_d7ufUC-+Le8sB^k-mU|+Ce{dO zr&72;`TFj4>Xrxa>BjH0<3x0H=U@C)RqeO`t1xoE`+eU+`TsxN18kti*#9tx!U5pV z-vE$*nDY;F{;@fL4E$p;0Ve!oF##t0FH$xXdvW(4U;B?cp-962L9*}PCFh}!t(cqn z`icFXfWUF!<{br01Tt462?iQmS;Jy!XPkh{XjY82m_NK+*|3>4z!f&Re3~WY39TWW zO{>jZhN>y$_dY8bIj|?L9u1+V?k&;LMR20)_a0^E7QB7#*0F3sGUvh z@JiZJutHwLk9Dc}92N1fWKPU9zuD^U23q0VM%tTIfo*fPkzckjkIt8WQY&bvEngv) z77}98v?M0a%E~&p+27Y$0*ONS`=d@I?Zq(I^-XI^5xW&)S#ZeqzFU9hQ@<3v*h#;%ciQ{KgG7hF__$GeW!Nx5%j>3RKl%rM0$ zC8DfDhkX3S zO4VRNgi&4=wgAa7;wW@$X>ZE|dXYAv?@ANVqu$P=y9AN4vA8Ft1yjk5&#!VIp1(ZT zH1mPD)ZXo0&ACVH%b4CkqtW{qi`@46k(uJ#46WQ;X>qaIQk*K6*TZE?oYbLedP09e lg^P0pxIAqny6?<;4AXB)GbTAaDNnC}m9*{@-LiiC-vD=O-C+O# literal 0 HcmV?d00001 diff --git a/docs/porting/media/walkthrough-hilo-vs-start-window.png b/docs/porting/media/walkthrough-hilo-vs-start-window.png new file mode 100644 index 0000000000000000000000000000000000000000..f791838f476b66cccd20c25cfd897dc7273a3a0d GIT binary patch literal 77012 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 literal 0 HcmV?d00001 diff --git a/docs/porting/media/walkthrough-hilo-window.png b/docs/porting/media/walkthrough-hilo-window.png new file mode 100644 index 0000000000000000000000000000000000000000..b44068806404c1a766ef33395c50424750762e4c GIT binary patch literal 205520 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 )nk62|)-zh>XHkUgXo<_B4ly~sa4mq3-7 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%0A_c>S^5TtS0 z%pi@*L~UCiZJfK}7DatHT}R+m6#NoX72VAQEgrOnHmotv^~TYg@;wp7(Z~7%$Zxj_ z4PA!C`HWLSTpF<7X58Ul+lGXmmBHF`_8kF)e}SBPcNXV~L~RA5Ct^p67?r1e`lYUkc#({wCnfejb3=me$r5wh za1@Uk-8i;ME>pz&F4EcEwyv3J7fbf3U>fO1M9`6}o8LQq`B>|CoQn%|C<<++K6_qW z?<3A8FJFeX*=*EDr#9_4XVAJYybAVzOz)k^yl9Z$1b?qc;7bzKi5%_BO|9OilS5{* z&TBN`1XnZXM@|-FP<-T$!D22Kvca-{5lt87X+BBBC3yA=(3+2_Zd_LOpGbyjc0@oF zF3|f9&Z_!2IjJGUd?~S5UnGDoi(OgL;n3V^StIfVi5-SURCo3g=vfOlBavCBI^`~w z{=BTQDU$E(k^*K>u>Qj&*{F$9eTNbu#WL&est@Iv`zK2XB#8d&ms)Z|gYk6@lN z_P@2-TP0r%i@yX*%CD7ZJPnn;5{8xgFGP4OQ9hz75Z=GeG|lJ`!he2A6Lh;K+%fOF z0*8>OWLF^@?Gsy?C%gurQ(oKVwS9>y?<=X}l`O4`;DanIZ;X17E}HqoIEm^^edpG+2Oa0{5r;q)!+WIqP5W#X z-eSFjzf(B59vJ0lM28e8r|@8)w|F7^+r9Ic!5n!;luz(-+}pI1=$iencQ^j0GT^=^ zh=W3A^8luqj1z`8Wmo(+pF(DJfUb6D-;2CDaBD^9c!EXhFjl$t@ zNq0{yZ`4hhTq&8~k5{$B&2B?(_)V0)`qkjX)OHWAp{m#aJ`mF6{`j@i85bwb_7koB zC$5&~sI;aYx3l|C8K$}6{0sXV6TjPhgY5YV@^g|q9=3rlZ&+k%r}1-b`SqTLrYzZl zw+A_vRR5hdnb|dLwT_X7q zzZ14cM`PBvZ4j``_ebDRmqU=2vM)q9tx3a+5zxSx3S-N8TP|CC09uNu6x)K(R zF*zA;P~>WSqf^wS zw`kvkOJ!R${I5_7x_p!PT|>u|Hip0p3>|L>bbdRxYZ`<;f9 zfam+8OV`ggDuU3g-nm?lOnrlA5-@6^rNN{$i&96_ho?G=*8=6(B@gU`J5xD}Vcu#X zZ^9!r@qzCN_+lY%Gfyq-qB5bCAs@9+xpZ9JHXJ_OngqwO(z}>Hbd#|dfZ}(VZOy=k z-2#o}%t~BOn`@)kzCiQ$Ol;}{-)0Pcu;eH0?|BTNl63>c?aCjUjB zGSJwnqhJuA5EQT&L6`~AM3|1E7j?xX{ZL$P2HOV3^s=t?AK*d7ZGT%fcms$2+HqEx zLZRU(D>jdd7E@J-kai8dmwQ+tC1ctwes0O>yq2U2I^uwD8jgRhlvy{O({7i0EzgYE ze`~_bx(2s=x_`x~?_bI69qqYBBY#8%P?i_#+@M}8n9E||k+mNeaH{}w8{i;EKblL# z^}?k>)&ylj)}SH}zZq!`jvRj@R_GiA4qyvSU2JL!C_x?o5(g`qF_ZEUTDJ@>)zgrt_oY3XKRfCm>mCdl0qGzARcfES4$%wHs()vaWC}7e{nfI|>l>cI zsVf{;FVku4v^fg;Bl=1ve?>vfy)QP?c)ImvkJU-kjT}f?XLjG1K!g{9!p&!@7Y_a) z3^NN5>pw4}C+g1g|4Bsl2G?a-S31x%YsW)_de*WYHzjl;QTIwB*68;_Jyz@%=o7I2LR zb7vmO>dGM!w9LT)uqpjbA%B|Ov^zE4!58bl*di40d&F1EulYJDPXj>$RX((Qb^lJr zNPFHOC-8(x|0%ex;pN!UiJ>()Gv*Sj#f3GC zWx4AO)amC@Nm51x+y zng6ahJQt~Os%W z`|qxu(Xs)jX0OQsM87V@5Qo-BdaW@z{z&w+b{ufNF}-HHe-y_g=-XuroVO-KoB$6s zX!%@R>d-#FRD1yCDox>L<5Sczum50L+t86M-`YJ=0`vr7cFekS+IV-uA`;MzDSTTn zG@U2>hdD5Io4$~_uUx>zUyQ1c)7Y(z?~DMN$2M|^bFc69imsbiDWiD-+w&|sTr$Al z;JZ#sL*5ywy0lP#^)|H@;KrY3y#M$0-QBOcY5_^X$G_be?itRbS*)XJtfQCcx4&tP z(ww7UQ=`eE#TB;g6|V$paVkr6Fh=9I&0yz z(zB~^wT^~&sIB3-1=h!AT| zlM}|($^2pV)*1D3^1mbPSSRsU&kWNCQY}DkHtfMemg)zE%VZR*v)R8_+NFAey5cFy zQ<48F^Q6W>L%BzLmZW7&L6Opct(fl-<$jN+X#QEp!VzhrEcsE@wZS({(DPVt_(v3t zVG~YIWue$9*;af^nO!!r5FNXimd9`^TUxm5Pe^JaY8Wf2f|V3s!}mcelWEOA_bOR< z*Dvg!4)$F(i=Sw*+e5%Yo^N^Yt_2#fAluf4kZn&KJF>6DJQUc)4XR3zd&Q_>qov5< zxEyTx#+iFQX}eBQ!jk*~9(Dx<0x13bt_Tmk67fm56_rkuIDgtKieRA=9{UNyyjK>} zYPkgl)2H;33k4cw9lK;_3yYFi<>+}%;!KbV+B`q{ww$c^t%==;$1=dzsS5Qh&tWLb z(O5sEfsp;|tPgkD|9lbZ!srwPF08rPMgkk1pV;C7AN0gK;%)i0ONXJPdVsO0U6!-X zxq--XDpq{pXc=v3O%nO9EK#HW$go zG1i<1`f@4ATIAfuM5AWA4e~DD*}i+p|Vu@RmS`*;H~nO8!gJe#PS38hgF_ zu7|JJ&^O=RlX?AyVE*Q_o^a&_mR6(b*f?2lgs!wD3* zcqZ|R8XVLH?a)YKDln3shMqs++STF^=H6l1tz~5Ev&mgGl|e+lq_NY5o0?9@`iYHo z|M}@%L|e(Elw|4SWnAh&QA3!|b5_9YnWTlAE=5JhUeP*dY4Kx8C|Y=a zK)|gMb;{XedwN2x(}U^H&~AHzs4vizpJI6?N}dnw=PNB7-1s-UEDZK{BfE$ z@MeGEd}Wwq?mGipTa)(4kW%?>#(Pj!IyX^ao}>{yHYgwgSotS9AT$5Vpml5gkaejB zfWm=zzyA_$KrA5$N_=de+naod?bJP=G(r3Bxbv{LL6g*F?s3C`RARrEK?>gT{7%Nq zl~gAG7pb+Evj7mBuv%_%+&&*2;RP>XLq3GEfT!kX3;Y}NqgMnR{D_z8H_4xb3pGDx zzq35r4bbm+gVU`IB3_2RAjrnNkvGFiu8KVnkwqGH+EuUn6hT#Y{W7?@3pXeiy9UUf3Fy_KiY&;ihWF{k`t~R(cki2H@v8 zd}7>xk0KcvOWQOKx$}vPvuAP^-n47FW{!doHgCp`7P&!&`Aqhx^WgF<0v{)jV1b?i z10!DSP~;AzUzQGHp(LdFmB4*Z2VtfkD)L9%5TcA~sGT8^kgp*bO=XnCC~>Qw6z9~M*vMc+pN5M~JU{VnP|@o(bI!07AEWW|Y`opn=>AaPr)$N!QP0izB&b?y*)Dr~fb@ z8Bx9xVC139ix4UIbNFfHZWMG%ZVcOO%ncP%x-l-N+221(`{|f|=!jsrDp5ttVVB=G zNMl;x_PvyYbFfuUJU&7%;QZN}onqPIxHZr|1e0R@Z^THm-Stm~{gAeXhy-v*Pz`a& zos}RVDCFe}cEP%KRV#uZ?pBx{7W!88j#PaEGM$epm8{k>tbS#>r0+eKy$ zcC_obVmVZMLDTborT4CR_@Gr8s&{PVWT=4^xDcW z&`n|+4yugH44?P2vLftb877+8B{o`+sTOGP1oYc^V-9RlgbuA@CUmIx&7&q5z3&jg z_gru_`SJ)kwz)1H6^*5v;vf+<=kb@DJ|LDZwH2`>agSRbw4x|pHYF%7{5BNch?$S- zS(x`e?d4HQIwhbjl45o?W*GOP7&rzf24-N{TE8Q~{2tADS_ZV|gF2LRUIU7NU08P& z$P?TW58}iT8YJ**dKg?1{Ddt!1duIpW#^~H3I?a|TsxRh*0J@* z)>bMVq0I0qdxi5%9vBNbEI@Ra{;?!|)G}1(%#i2v+N7^~xd&NK+(U6y00f(LAsUHRsQT z)&g6FMm7(Lq<=eN(Yv%*T*>l73p~tcc`3bD4tu-XKa(}9ZDczlj)?ve*vub7nPN#6 zrU#b!AwMxKI-i<9WS!{0PX1bKK9z3`-g)cOcy>Lg3_`HHCFI;Ti6-9XQZWRXw_e~k zt@>ej*-{L*slG*@xV|B~_T2E87<7@;oeG4vsILtk{=(M}xE5+AXB`?<_G;Bz9qI^m zo@BIM&gf)Ico)$+=L0zGd9g@?_Z05&-{)~Lq6apZlRZ^YEqb~lxUQ4+JC;ZIK0Lyi zm}Mwzgpej;c8T?uj0Oe~4#%@h#9CJfOA%rS}*g4R|1IHdb-@?*jgDo>!k% zPy{bo6R-N-YVsF!%q0=ld0H<0rsy=DNkHdEs=r&~m|T!?`{hUGb<21m%5RWH1kHxD z0$$D#na4q8%YqiUzpow}sk`M$>9t2z^VvX(|F#M7ZY*4(s7ETkzBkG5R#9*`I| zaevY|cr>^F%(ymML{98cE@(|R6M?61f2Ue&4^W`V*GJdL{z4?1Zi_sj!X~tA?saeG z)oSJ?VD2HXW%0WLuA?A&H7qM?cr$WnQ}P#gD4iY>iE)sf8)k7Ixn!3u+D*Yl;*a!A zK2C#v$W+9R$1nY&a6azqr`@@tCohcEw<+rDR*)mwh?oDkItq#2pZ`5p+5kI179tOY zNTm!#uaQ>N!`o(Cvj!K z$iuE%+~ygW*d{o!T>kaB5Q;QIXCnVYC0f(d3p?46-TVgEM1E62<_AR_-n`FOxuG8v zOp2-m_&Tb%0){IoAny<7gM93|`St_NB@|AbD=F47j~CaI!6I#zaO$T-J0j%~UdFFh zUT|-n)x_(8&lIr4a^=Qp0wYg^sMtzpH1R?4O>;@HI`RXDBLi~fyJd8&mRpzcY5%KAq2=x^YX;i7BeFF(?jrxWTQL~e4GaIO4@_T*wD?vew5IBZ=he> zW-g`h>5ZAGG(wD%mcU_NpT-?pa{G5+kv;OVOMAoNqF41|Gj7#_XpAvwa3uKY?E|!g zvbg2(bE0A4aMO|Xc)RI9Mi6oIk%?5%HOgGxz2KzFBQ~__GN|*iU)nc#XxSGC{@fW{ zhIeM-G8mxut>NNY^jIti$+nKSxUrT{cfahifOC}I&zJz-O8dBwaqBYVC8sTYg0mXj zI4zi@w2W8Fm$WV6g;3>!xqVR*9QY=M+3nQ`Zz}jVnVsBagp%^(CZ^7-!qn#NPMLeq ztIw_0^D-ru=i7R(BnlFdGvaG#V-J2veG0a=**@?6?$~ zE^~lAk?e10991W}N2;|j7DOux4Xi{Sfh20u((NzWzD1;8idGXlOH&i8QiB6DZ)+5I zWA`1+Jj>+1AgX>u=K1#}TQTwLaT%iO_nAI02aWqIFpf6y-?rKZMJaHRV&fleK;FMk zGx;6#GPivhzr#y8`ggPtDm*a{(uIz;^Rr{C(y%kyYhrE@0kPR=tf)KypHdL9+5d zNrb64?QM%+)XO@vn?Y@#c^gK@E}s+Bp=puDuDJuUgH|%V6o;tCez+R(!y`uH$i~uN zPUDDzo0Bs~UF4(J`w}!(tHGD6_f&$XNY*CBtYu$$viZP>dlA*qM^lp+J1u zIe7~5P@@Gv!@a~3+iut-BNd-y?YqBH@rWya$VHVcZqvfCGqH)>^N_O>BZ}Hf!Lg&r z#o&44Edl4y`g#3?0K{~Bog<)_2s3zvO~b`fN1rb^RtQf-lDLcGk|)Z^iw)6ZB^_n{ z-mkP$@#Nr@AEo7v3+qha3g~i$>fIt-%wbTjiQ@L(Zc#Y3&!j9Qqirp%O8fc~T4rA* zVnDqfW_cx_uc`>1S#d$)Z2b$t2H~LQ;lc7?mgiUh-1Rrvc^}^Q zECcDRz|-tTke@Frvc9yFGT?|>V38{>q8a7b74{aw@2Z7>@a(l~kqaR4BvI1f*fi-k zw4>jYMHPG4iAIG(8QULJgiZR(Zmbh|Iuo0}sh2(;sJq#`VAh}Ro^6kgyyA)n9DWdK zcc(X5)Qa4-J!)tkOj2FQU-U0Ve45nT=)WP*=D!`-GkjLnDrtQ-{TOZ0tq3(^Z(rq( zK-}k1%FV=3h8jOC{uX;adTDCQ&P{*QN#~+mUK|Bu~i(q_eJRbfjoGn$2jU`5@nDrVQYJ(C8>TM+*bIqQt~`$-XnjpLH$ki z{tulGnssT-qHkpTW$!o}xd|Cl^4@2KD2fo?Sue@IBhU_AKK!r$|YyW{(3 zI{H_$4kXjnqk%U;l0o(M75Nf*Y3P}Rh`R1k}o~y0z3U(sa+zHDvxIWIjg!5iF|VQ zmvRi%If3it8YZb3JJ=|aMG2E6*KO=)nsIxH^z$-^tI)`aQ=SS+gF-4*8qffZ33E1# zz%EgRCMJ;{cOhpC&2VGvBcl&>GQBK|h)tp0rq%&q6kV#Af1e>OmGF3V$pY`DmV*QU zZ|C0B@8BFdtNGD&76pOCyQs#6Rq8i0MB_?G=qISS^l_eum+28)Qh&tMH1av~s7cRS zO~KtDaRKkAsl3t6$0psL1hbQX^M$j}mQAdcr2P#$HtB@l7^>dvB!JZ)9_S@dSTO?5 z0Ko{0CHWO`_D_cmbdS3Po4y%F2N!&{3Knqy3CoguSkb1Y$C$LRhn&Q?|31khNMa`y1Bd}CZ8#JFR6UY`STjKNQe9+ z?();c?C+ZU3O&~Q;q6^m|BPXHfwC*2a;DZy$l|)PD1U;Jpf2Ljw3#IpbbVI2>9BExZ!{MNFXPX~;R@Vg?wChG1u=Z3}Z}Rfa z|7UPK=h197uq%;xM470iGqmr}7MmsDJuf|F|G&H7*qgd%(t@C8`uhv^!U40%QhJe{t$Na&9F^=Hia>8|yrLcAJ#c1_2^exoCN{Og)%DZ1Z%2wr}OibeaGUbTa8F!ULk>yMB(Wbe;Gu&>?Jg^AS!&E{-%$PjuR#&6Q=`r%GiLMP&;=ZR97Xv_>%dKL`jnv`ZYJ_d}NXVC+^p}uXxgTukSX6Lz4cS z)R|pFP0g-v3oTWq$jMvY^4>(f$-Q3?RvuAhJnca83_JdnI5sQKsFALL1`n0{P!PUL zFflcMclai0NL2B+kceWVkc6=1b;C;^wlUtTf&f<)>c5| zWtz(wT@-u}yQ&HSspq#TVnlQ0?c`$#%kt{aac7P1lB9PbzFDzQmQh`j!V1(0>_{@H z&^=1Qv`U^rrS}s{IO*hmN>?+UMGtPbWsDQ+xX4bc=l$IpjOr(3gHzC$b9J!c`3*hO`N*3=qN|8MIlHT?M3*!!=$FQ#f7T-} zD|){sJDZNVpcv2llkrYO(W3xEPBiNb*c@ltcy-+`CEVDz>NW@9V+J%cF4_&Z56rD#*1jh z>y9($vL!39=Mkv*vLX_8f^ROOF_%(Tc+h(Wv|oxx@=3V->Z5c>Yh7DLi=V-zuU8Ir zCdLPi`4v}j^4RN`haQCh8LX-L`+#ppU-&O~F@ zLM?gE8*ccXCkY6Pf03Egbe-s^BnwL{R~8iX{`1A9rG(_)}@M7iyI!s{bUa|aY93vRM&uKNa*vrxZ+fwQIoMw)t1mjMfbp-dQsO;JQVAy|4HPlM zVgIDJr#*{+95KT%P_TVHr$8lcFP4gs`>PCoBC`b2sq|?TyIs!Cg&}GWgpgZEM;~`x zCg^Fn4cwN#dSNINlQ=>eRh0HUbf9RWOT%cwpq8f>vag}XXmX*E)e9-{s=OaOJ57wK zj{cqq&K!W^C)H3o;Fb6@{&Z!FttD21qLh0LN|g?Cg=tww_->n#7Odm;{=Fh!H29m~ zOdFx^XM<2jnPj$JBh6|5WY zDy9*w=gk3JV#fy|+6z*rXZ@OHQ>J67Y}(o4no9uZwgS4zjqV7ymEsuK@(cbaeO7N@ z4*q5$>oiPp)^pMiiK~(S*E`HTvFI}&Uy`dk=ZCm)NG4nFijyxrdqAEe8RAO-pK5R| zZ-aH5FOw92r{@^s_RM$GempqI?7SHKIkd+1Wzqd_j4FMXzR!4^4~D_{UNIeu_*!_& zl<>vyrn^X&1z|zZt97;Ci8)~H1}m3cEc(j>n8+a*b-Q^t+s==;6n(0==aAS}nPQ-8 z;4R9s>Xj1Od0yxHcoB0^n9>~`65vl7+;q$md=K?{Hj^a|ZrWoDZtK7Xv)wneGlZ&w zNE+TWS=rXjw%ora*gP7t@HJD0aK$sSc_5Qo+XL0Nv%KC5Gxz&m8;ZZ4Y7+)KhLDQ= zuE_K;_{at9{xqY>1Y_1JDRG%ov!dC+Z3@a%Y=kl}7?K7C&;M-Qx#Xf_6|et0Hk|-Y z;qYsNMzcHBZ<7Xe`rfMud#_LoI)eqyn)AW>vuzec2|wkJ%;ri#NskScA{;q7c1hR} z$RKrQ3NXC1)lx?|eO9TMT5r3kI=~F=V`W~Mqz%{ezaqr81}~~XvmB~FBX}1Fse#)X z5w%stpXf+PYONH~h!Is2HHT7>M_aUR2B8YrxRUX#Iy7;Wh^lT{#k6d=R6N8LvY|Z1 z>pu%nJ)J*)Xt*z)&Ss?qZ})@9aL&q}K<6`P>7o7A2s z%?{ldc3t%S3y3-<>J3%jv9N@^J@bX>{4j#1JRx^}K&qvR92UichEA;FDMn^HPRf|! zh#czUggs=!Jf4C{IFjWANGEJ>&))k9#~I1LFN#-e7!y-?c48p3T<(vMKyD14kj(V0 z$0D9OsN~g!cJV_9o+0}uh<^mOVFlI^v4#SABvf8A3TnA?0DUgwErj{1Yf@QhYROaw z3`NaN+vT&e$$ZsRbO5kx$J9!OVOLR)2}|A_(EgC~{78yjaz!iWXh`RFI1Edtc>Pxa z@cIG8@Eu_PhW%kUK4aqkzgGjkcgGyM1r+`9TGIN#7RYs!r2SR$(dYeP!6FT%@Z!e% z!{R;A&^j@9-1Xo`x~vnsovk!4wXt^AZ6$D}!GQ1LkEXde@HqqS2@LZZ%*I9UN$OXd zFB(TNvpIfya@%tFfMN2pKkJv5e#rMYA43Y3#_cUp@v#$8I~3WClYE(?kdMWE_MYfd zMf@TI<*-(7$Vc>7&J4b!jq5Hkvevb*e2`JYOCX%l)O~$U99T=NT6}Z(C$%n%I3(2i z$>DsaAix*6E!f%WgufR2U{7Xpg>X388GqZs%=x8-uon)8bm~OE=^KQF80kcXm>NYCx;PKc#vJ>; zMB+QD!?w*tIk2%g=Cod`pwtan3^1_u+|jbJ5m$S}n=H|IkgXACEYkx!UGUg5FgDKA zy*7O?qVE;-C21zQyv{)3am%!wBV=cifGvto&^k=7^bDaf9XNG}S7)4&hvJ zO>?8lIjwVL*4ifBjzdU9RfgwbnXLEcKM9@@(?J1UzOS0}$$AY94Y+~%TJ1q!4#N0T zop=(}=E?t{uX~nkX*_vnG@FzL=S2pui5az|)~)`4K>NPD&-@bau0dVpu0bo2ir`1W z^F<|Al4WKCmUKPSCE*=%^vnAE*dnQ5b!ikG-+LZLE(Muf{n27YLx9~3C`_U(&Q1!b zu=Dwa&rOKO_PyewJ*NZVwK)9BQ98jBWm&Kf)}wN|e1$jOkh0+M3y|o$7d*c#?)BAFPkhWDGxUrNzm| z{U{qu%}O7-8#3EUGyXmbwunNZ<46!szSvSXuim+e&3L7Vb`8c4@(Jl(*uLf?kC@O+ zq0^%$S>Wd!OF*y+8PKPw|sv`p}1<9zuHUNtSn!L2W1z6tk-Cm_e9a!}UqCQ@;L? z7qjn>JZfCKHR?2pl9@c_4|XmfjL|6jK%kPxk`+WmkX&P|$ge$*rZEGG+W1My-kF*( zT$@Sp*C%;0}(ewl3R5VRXxKGWkMB!@eA4GmH=f&j)w7H5EHZ{Qw9CiD=8U~)oc@7@EdaPRW=z)pCE2-xsbSYs^w#+Irn@!ssX@Rr z5m8u|2ifTwqwmxA4a#geJ3A6%YVHG_A?v4JJeHd6R%i5WDQj_zhGejE&0;Vc9UFh% zt@(>0CX~#_Y^V>hv+;$X01!kl#kL*>TLpmrq$e8l?a5U7e9t@b8^-6EKsahu;c3&J zcjTGOW*xUIN_Wrn7~NOw`Zv#*=Yyq~+dUM<(Qkn+!ml1n#Lqi5T+g1?w88D|@5D_O z5-GcE`$AkChS{6>HkR_|efN8fkHxgYlmP$?yyK@#jOAo(;KRb(kB!@jTr2Djis#p2??88TX43)9uW?sV)nHh04lq%YDG$fI<3yX`YBr%2t|QEh_F}0l z(%y8`ckyIAD5o{<(PU!D=fv^SKa|;xndfEspg1aPT|KLrni1cW7_Z#bG-pLy@qrRx zz4JP+`+Q4>^!iT$>n!7XOUf9*TTIQ1fFdNY^Ihf!OCVG9q}<7}(qRkenp!*4RkSj^ z!Gqwl+z6VK@h=qnQe?@fSe%S;8X5)c@FD>mE^H|?zI-gxTwiON^yIwC*4FgYa!?*u zr0-e2znh4ekxEM`ho6AAgmk7NtLFNAN1pIV$DSy*cX1Bg+y2NCq8|B)-+uKI46J^p z4?8dO!a`{(NJEo!pYg{CgGMAmgwh!JqWm+;Tr!ajanq$`=xaJ?L!nnCUmq!JFi8|O z+|vwcYpj)~4~yE_G|CyJPcU>w)(?dx4Qevy0YPZLF-U7B5G`*03LPP+!J2QRF;c$% z6_l=I&fCTy(mKzrF6DgvfNtC>HCUX-d3X9%lY=p0&S%1~3YKQ0M|==2{^(Lt{N3p9 zsext0OUlBY2!3z=(mui7p>lI$Wj0oW7;6=PyZz|!fZW1wymISoA44_s$N^~Z$xwMC zQ)fvW7=EbLe>M5%Up5}YXoy8h?`FYHN$g{yRA?M{8|1S6XDDDXq#F^bPT%dc8Pmtm zfBFD(fP^Hb)DdU0fUz~Z^SDszXoE*6x?&o)K+@C~kvu}ntx3IT48QO9Ur937lm62L z=fz2Ai^$0cohqQ<((D8UX>H9k0kqZ;FK@aUwr}cBy1ef9VW=akFZiD*8uY)m3= zE$50a+{qnZufG?u3zY#S3>?ePt+WhG35GX5e2wfl0#9aI>ZQ;NY%a zPV4hpVK|D4zij%r+k?&K`DDo&ZxZV+_5EnM$@6XlMxYC2dKL=wrxjPKNmin#3#?E8 z03MUJ(vX$S@v8qC*kgfka1@oT$*P%Hy|y&5vJ6tQFxXhc$7#!1qv;sEw#{!G^$&-v zMeHj*4Gk@R?2ETeM%Nu*ZxnN%EC#v4dA~JrDDeuh>5%3qVa_oMk7cI2#gSr6c9x~y361D`+J`Q;}6c+&e?tLbMGtem6IYws72j( zpey7vOopOBJV6{}9Aj2fKUp;4b8kVjHEf`>KMMGGAc0*M2cY5lTp%$M+1U8NC&~&x z^&R}>8r!}j-Q`lE@^i`ffCOh$aKGOe?6Gz{nvY*xr^tL^@n zN^X(PrK~~wiWi)%6NVI~5Z#|Ufn$!O;5$Wv^+%#E9%jWx8>xd!I^j2xGrRcHosCYm zz>|R`k=Y?U#Sg)xTPYYSYcK?TaT?kazJGrdc zE+tlYonm#|P{e|pzlXw?Z4+|=}mlx#9J|;^6N1-^F*>t8++Tu z*?p@A!;19M*A1=Ud(Ujf4Xc^R@Ze8RH$oAKX^9S7-Z$%1!d*&UHEK|YSG6jrIlauB z?YSb|)`^S&SSr`7w|M#Ip`BsnS74WdV9$ds!lEu%1iqLX=Lh#eH>j*LAi2OEwQ(zq z{uD}(_!?7a0sw1`!sb^WsqMh`@;GN>F+ALk~mrQuoRe> z0OeaK_O-dtrC(pRh@jq(i5M-lh*-1=VX6}A!oscl6+>O%Z+9Z1lFc)> zR^@w%s^@Vrv+Yij?68owOiWw}EaG3Vjo9N^YYT8zkb!VN4yLdM+%(tb?es}^>7L;v zE7!|S>cXDDz)XB?H}|1^DRY{g&T zxEzX?Phg;1jepN)JM^rkrXoIq*5b1T**V8stmJ22qaU>@qiOE*;OsE}Phg<{+wlZ)bv%2{> z@&8)*mKJPj?K?azx#Ed8W}z852XRr(7pErlzbmX>BO46b8l zf4cz6u&EA07pP^i4+s&V{u@NJGCr%rA4~X_3txj&LpjKcamy|Q5hb9S?lIjxe^iO% z3%9Wvx&72U zDVad`Zu)6gpUppRTGEqY?tYs!yjs$|W2teArpI%Jgx8y=&eCo5Oj1)pKX3@nwAAHc zdqc>!N@Q~hpsh8n0)BlvX;gv<_SAjqFexxMZ+3WIv&f0zO#jC7T!D6q!mzwzHtNm7 z>-j)cU1l0p{e5;A?4^xMVdSS!ys3J~Yr%yEe~UI^&G$ZVEX1Qzpk(DW9lD@nwJLE! zv+91yb3E=!t4W~AzbCYeslnq@s`2`Il5t5mExlDZRy$E|6nfHvrln{ktDQ!_cOPek zue{Dy_JdXf(4onWcJtk1m%O=ky5Gvrz8*_@b22B!w}milKRI4@zV`+!Lu>Yz+zCbHuBP-JP80P`z65C#NUM`tfsz&S3HC^G^Q%UpxzT+SV&xm|(C- zAU^6R7U)m^NaTWKm1k?vvo!PlQD#QGP4e!@>uRM}>dNe&q?z=-*W9h4ZEE5th5*e) zHpX^Aw&ee+>|HTNzjnYbSH zqyHQ4wVi)s*L;NcB27`vQ&lWDP|HKt_|hm9h23kS>HhDl7_mos)|u%(qdk zVCQ`Q)Ixf;S4t=mwC#k+hwwJ|ZC?Q#xw-(r$fFw3lbW~Bil z!Sn;pa6-kd3I!x%%%E&+KSY6fVm5**O)m^C7` ze$popwBOFrESQQC_BC_1$Skj=7)Ek(=qr=t7{EYsB-#0DP{Q?~nlBRoouH`t4Z63q z#BH)#3_ne&iEroz3cUn~GkUuYQc^xrFI=KYNGHX|2=5gxMUQ3(`q1R_xQcNpT;bQq z`Gm4HEkF54?KyjJS>cyx5Raz`W6rk=cv-jM2`^TCR!2<>Xq$FZ*UXGmYz>zr zt0)L)rhsp?0F_+tG^R4dy$?&>t=Q4YOPDCB?g;r+_jf6*kw)3Ue|{kV(dmFAs)_-g zX1Dr1_t9!xV@u*ReYw(|K?WF(Fr3XL?O{;uXAaSdJrO0|e$I^AQO(?M=Tr_j@P8^fymPG z4V6dzQgVt%Z@dt_W%SMf7QsBzFlwKy^3x(olZBGm4a>acQhdvb)o6i(wx`q0gro7M zBj3^BbdJ@)pv&P_Q%Xu;NDF0}hu_wT8)u~`^Mzf>#Y3UU z6~WHDpNmQ3U!E}YeN4{FUNz$5?JPSV1(DO>`3lc?blmc z&X(NrH+HvXvo#FLSA+FdrACS1Oo-3wZCG?_nRN>;m^$s&|Ag-wXLvP6*1AF1mvB8s?vUYkwFVzZ~SL$jl&jot}D>hD{4R`5Sn>E%XiOxRV zcs``@1O?K+$Zq>IDd>E(YTspwX1LX(5v5X@F{4|I(SuIPjW;iXol6w1*W3C1&cxUU zP6t&WTtMjbROISQ&6<4P=1=? zFc&$3{vP-1DF{#4<15E`cvUhtG{y~#x$DTsvD+kt31?JX*mRQ9#n4&TD&rGkGrGe-2; zQLJC$NF#7o-Pn%X<7U2zjdXM5H~yUUcE-wNP&QE+9Rx0&Fiq&XlLTF6j;*m00rD@+&pnjwIJ)#ERXq3df1g9qga&6{#4J%y^E-kVqaQi#W89{S1l}L$I04ZNjEB42Y zFzPDNp2QD>9;|_O)UkzHcB^5eY&k7B+006l-!H`5A2eNICxRv6hm_Li^HSH}q1`9w z)3ZSP3r*?H8mej6_N{zIE$NoIl&XN><9Q;!lI6qU%#~2Qm5@O1BMgy~;8&nFhEN8xG%lR2S^Gob&ML1-!PH5h5vn>{yPkY-EBDmE*zXbk^5rL+ z4dJ4li_sofw1%W=OnS=%)QfEns63-&Q2p1ibYb8W4z-n z&AXSN%*f(*a_mZfTsPmluqQaPMi0SB6-v*xqN(IE=7vbxI5N%UWw$~2+DQQ>Ggty7q`_&b>!;gThQMKG6)4)Up6RD+lI)P!sm75bB1mSzX zrI(dO!OH8GOdU#KH*ED;?Rzdd;OY+E@P_)ei$D?hrR(}@)HU0Hz|7E){Ubv8SEO9? zhN!7DT6~N>PVMyVeA&&&R@ASQB*NPeeb&Jm+H;{2k})rCO1Oneze(TBo}|JjfE)|U z!l?ss%zr2!A}xlX7tztT1sJfZB+`$6X!k-KiSoO&a}6Oo z5SIFgNRCaZcX4``Bcz^-6lF3JWA*n9QF+N*1ymN2ynu*WZFnc~?~)ISM(l9Orpdqm z4{anLiM-1l`?8cHdPZcz$x&9yai+dMN5aJzuJ1%xgPLSrs>GSDzGk--q7>fD2Wyx! zNf<{0;KHV_)AOk{{~rS~#8Vq*zzZLE<7`vClX-DGl=H(eqGL90KRYbT5YzL$WIVly zJcTiq=VL0dDs*khXDp)b<*Oyn4%~er5!;LY;96;&B+5JPljQ|g>Fy9>OUp}eTV3$; z_NzY3qn*~>&UWgD)={)+5Ju|0l-Jb|tZ4O~P81x@)X;m(8g?`9eZMF~e~fO93iRE< zl)kW}wOoQlTNoh&33%pw(=?!S3?@O=m(1?_G zJ}q_5<)F?A1KOhmR7Ip9H}@DUr|aSsrfE$|B9hJKVnDAg2WihxYYFq_qV*82b*DIp z1MV@`zv^qZ*&0T4UA$v-Il4{|)qZs)2Xm*I1a&PT>KwXKn9FcG@%6F4De;t8YFWP+ zg5emWvLbLBA!Rb>A;=M#8W}GZEOM#&aV%P#T>csJ?O%RcUsUWsbo_B$+t2v-3hdPp z$dkf=ZM|1ctQ6{cZv(_Y4#|p(|7pb9yxL=pd_6s&dT-<+IOI0OPQLql#-7RM?ki^W zVc&0sBo7j>v5>-~6u-`ePxAT=y`g#HtN>&AzKL_WVAM?G32*^B<(rrTP2lGJbFAuj z8u>27w)e}U0!H^v$*b3R!8}X~W`m-EZtd1rD8#TVYtP~Tyk{{4GT=#`^E_8U546cV zyAM1pi=iNj^0lzGB?0<(9-jIqrBxMs^t3%U`XN9NZUK>>y@9wGdX@P#C@Jl{tZVRs zGiuc?>cS_rt8vNTGBawC?%J?E4JT9`Y1Dbeg&`#@Ed?>}7WB~SM|Sv`hGCt*_K?M- z=y~JP9r{40y2W?Pzm?k9T^Lb2fT!JvzxgH505xnMH`kffsi6WF=+XU}K&w@5LG0thFY@*fMUMBgwiPM*k%)%1?`JUL@)rH<*03 zuAIDBZ@yLjh7O?-=3hOl&nBEyhLu_R;mNlynbt$CJ+pH_q;l;la9PSdl4{4XS?q7(8`bJpQ%tG0^Rdqo;Wj7=P4>&DV2|wI24ziNWHE6*kqNI9<#L93Aq< zS>9^N3$T`JFfILh2%bmJF?&hSEv@wFPiWw7{?7Gq(*E%^z0~o+cvPU%1EifFN32)?h0nURYud@}C2LP_9gc_VC*aLX`eQ?Ly|(m3KG1bbMeA(Y5! zRBxaNiR1=v_*AP6AvItsi;c;CI(wr7dgpdF?`Ja-)IW7(si{wm(|Fs|s6&f8?k^}c zuZIe#LhRD8`7HhpH7&Ee2Iqu9)v#o~;Hh;pzT9TT!i*M{VsiRi&d>59OiF`@usVbF zhN@76pGlbjBXjUMWK8VP9&If`Dy@?m_MTq^-dIdPhyG1|-b4iwZb~8kCtA&pD@ckc zrOcF&OG=e^3t9u!*z9aI<02~m(p2BlsvJG~X_)`V$%mX3OzlWsbOUm3WCz6#a=|pe zxntf>4@923y+{F~IX~Ll+19Y63Z+Qj?~CdO^i%;m`f!(3!uI!A{@OUay(}mUl^8pq z3mUtZzX}I|YUH+4isZIInaO2MJ&+K1Y92#DI29EN>zy`wv;YtFI+NmG-f<8FqmFM_ z*}GN~Gt@14VKUGWI3pYp3rAb>`w@63cg_WBu2>>%Sa+7(eyIREV=1bQJ7U4{LIh@M z&xOM62K2ErOA3x%+pabbz5#O`1F_$v=GvS^*!Hylrdz0~-OwKj z^6(%P<-eq~*#=xAtHzNjca)<1{hfUn`&Zf459?&L8}FOjF^b#*H~q?5Ty3~`R+C@L=noKk@;+soQI z!<`Z);G@Vy{`MtywhtEi;(B6?KlkwE_ zd<9Gv3(dYi2KOnm(i<~o8UcCdK5AYu#zDcUCT@IOLLE9XYTW+gWA|F%t)3K-A#wSv z42Xe(>)cG~Syz+?cX9f;nU)@VzY@^PHwykutk|G{swBmtNxA%$XQRbQ|FE|Rvp}Y3 z=!AA-&0TRK9*RguM{sbChVNM@pc-2WvS}b%vad3{AX=L<;(@=;3R2X$vLf+NLT(T_ zsWD7_2+7KE^gBLxVi*Zxx*!vhJk3rV58PE98X?b6(rB(%-|W(LqP45N7Q(Um$BN|< zioIqy&0-Dg_G+Q^_rR`wBsGcJ22wme#@fI9Jocy&I*Eu84G^v3c3|c;`rgwL5!6Ic zU^Pux@Q+Vop37w5P5KjjUhfgY4&$ z!5M{PD>5?|OgPYzZYZOVYaaU;=KWsE)>ta(%?XoQC>00aJ68c| zqy}X$?BJ^j1r%s&IU`z7Oi?-`T4Lz1gV@x^t7xvn*lvHt{Q`g-Z38WK#0X$j|d#qK1-s(d%g|%p+@bV(v!bUVs0?2WJUy9<-_y zu{2JID|0U{T@-k>soezqg0+19Uj83LpGnf1>O|vz6JE9EtxxGUf&soHh#^-@Hfhg} zM>qUZX7zO!6ZKX7;AY)^)5E8frABx9g-`9&`|S+FmBo(0ENaRF8KYP>$DWmVyriz*$|9?d(-AIAk+fWOjHnazYa3N>u#kHxx{^Xuc?SVxU{C z5lDEx_U|ic*M`uTHk|Y|{nA6!arKsW<82j<{xHXWn}(rzvmbYgT7|Z$ToM5qvi@h!FrVawzXezF2G72>n2l%l5OtyrA0{ni@xk?J#IIT zm~e<1+`u-oHV7ov03JNb;37fbEmy@H;pWb)F~1~$Ps5i=JlTSe4cq2a+VxS#X)v3C z84g|pL6`4jTFk+E#iBWd8u$mUU=LYa@GIzO&%|MzSfZV89z zE^-!iEtxvTOwZf6&0``j(v_`)xZ(7?{}MxAsAsx8(LAV9cd(!bQ+~6#JJerl^k=)Q z4Ptz`AR7lQw30hH-05g`q||b?ihI7&w)Oc?Q9SG?t5zv^u=DK7^F*DnK1X=-RukJj z`%cGlE_N>#JTG!pzCN24n-hV8Hxu>mC4c@~NLDm&t3>|4!a7WwG}rudJ|`T1Vvj06 z1-o#xmRD4RwOn$<_g?8Ch0fpvAx-Wr`R7&FYLV?2=(5IlWz!se zh_N(=Tep5B!2`i7Cw5$25c(kv;$Ak2kvUH?v{Rhdk<6N&eKL&H(i$Pn!SaIqtk@Lv z?gW9W5}9=p5}?YWi5VH?5a^Uh>vjg-1O{Vvuor~S*gEp;Jq_<8LoD>)vxk82=+tFH z9FvCros<4e=4f7VJo=5$Rp`oF8ntyyML!m8@N4agn%vHJV-^qxRd$QPHK~OTt zAu}@!`o#lYT&Ytw%|=_h0P1P*Dl3f$L_cV=?g~UO4F>fn?B{xwUFguxkhYg1K6Kc|V@8%kGN6BD*C#dBf%;*@Y z3Xr!J;*D3FT16eP<>hp%z58+w*~G1WEW)Az?}tU7bo*eqABp!oa$P^0JH~dzXs8I# zi7bUh#xv%A=&(;h>`7r$ONE>mQ;IU@PpJAKOxobJqKc-bYW}g)c1FJhr{n3n)g7;1 z6-4QaJJAj&iD4g43Rzr-RJxdZ2RUT{yfB`f4acl^A)lgCP4e4sLk_5qdVKsMPFy$> z1{KIzW#C}mhtwkhVHGGH_;2+J4(i;o3IG=Ab?GgS?6g{Zf9kp;&68Eg+rHipQ z*ZAVZ{|<-Fekcly_e8BKDjmx-=1C~g4WTAg@+${~TKf^lQ(kF%oVB>T3amBl!mpUY z1m@z^7-jrkfBZxcQHf9x2gjBkdDh5;5?4NVWZAsR=MQZ5?|0cbD02nAS6g*wBu8fh zQOFe!jrhoI4*Nh6%3wEKs@n1MY9{>m9gc`=%%~xDRUiK40>5kBw(Y$=!03jnT^1%$ z2H%^Q?0S7;Cx_QMW=IP6eW58hdi4};+0FiLUhpS6SnW|^U*m=-^d5K2j+RaaJQo-( z=h7-j;1cxV8LD3-dJB*5viMURTkg27$C;0pgvfif2`)nuZ;)fQ2ybU&(J%ObcNYEx zm)1SdPxTDyv2pXpfyB+tb2zt7|FpN+tZce;_ws6_0V(B>i-}RfP*()8EMsaTpiRQ&x2WqdE;rn?CZ+@ei zvEWr*M4V<~27X$;jM{Y)sh!-Py2~wHnwqndpbo_oRyTWBz0nN-g#9^;YB|Z8B<(}U z&u4nsY36c!JMY~ij3w#wXAp=eesFIKIUa2Rl9%fC+Zi#M z1U6pB_xq-avwFaVW1V%(A_Tmra9X-JxF|##Uge7m$Ta2-6;#dJI7`eFu zw)?@sBJ8&M+~V6m7TMybxG*YcVqTgh38^nf`p~%vcF}luI(eP{I2blFxg6;ZJa2M5 znN4c2o7_uTYWa;bRl+0h1)+3bcOO_&m-?_D0*B-F?;S);Na1+!C(FSZ+=}&a{4{+? zxw|UzT*wygvc!1^KdlI=X&2*fhiUjZ#BjcDXAC7+NtH?cE9lkvPHEUK@=#SKL8+oq zpnB~c>Ozd^*54-e=VKNj6m<&N!QiPsfaco4SE&}nr=Oi8V3W`51aJxTet--T@&}d! z4Dq1b5;SzWL5PTk1f~!Y*SBoX(KBAx)oF!zRpEzsji&G&UHss=>$yICP5c;=h8>QY zOWF9oH}qR{`J~BDG$a}_<*GhW-Qj95w8O1w-ezO0%hVLP4?5asLU7z@1FriWB3=(C%uh<#S${`fojHgsK#aXLAaESW%Az&a@ z1VP}V2@`WX#%yO}2Uag9iaav*|CKx(-hxjJVBA}$^3Tf~lLh?$+R=1hdPPHfB6Vk*5d1TAd=7#LY6w@4oa8d|0?9tbPV(7r{>{yen zvys07lV}Rs`Tm2;{P&0usrg!V(KH-=T`-35)8oqcE5n3JYD0p_0=LV0$q;Mh&<64n%-8 z4lG;SKa8Yjp21hIK_w>u$t*;h^%cj~Y1FcQUUdDGNZPJOiccSMMT@%p6GDCF!NHDGH`(5`RaRQzb*R70K3kR(ndn%)TL zB9&o+ue(0bTCHyaM%h+d#~?m;$pHn=q30D9@%?JjyAd*_h%^~s=K(WbC^0p?u#TAl zdPqna-rQ|~z)VMC@=7{T!>-Lp;1TooTH6FMqp_2jd2B)w{min1*J zQv&g(oa*s$WU5byZwWd$)zn$!%fYzWsdEk7Q>j9UHuuBJzDyJ>l6bC0kM3`7rx*1< z6^~K`1r0Zj<1p0Oh{IGj;q=C&!^i}PDB=#DDIGHcG`}fx&BQ4}xmd#OCgXr8p9AjR z9bYDrFpN{jlYm|}c$C`@y1@%wJwf;xOPtGOAwplf6h(EY5AVp)Wa>^ii_HQ!x&Wb{SCU`ecod^8CxOGD~&h3sWouY?V)W zD)XgYrK02)F1o*|s#^567Iy%c^sNTIvC-8gq0TQ1YHp{(G~qDm%oE56g+%-%z2+r zDsf8szNdMV{LwHqSJ`2YsdoUrqV)y{^i#)tgTt6IGIbYVfelP+{A0M%MuE&N&!93GaaWnHGvFI-pw<=XLjQO$Qo@DLM zY!2LZM}0W{Uat!<16FNvW(&LFxYkzQ4W|+8bt4@mWC{B~hT6mxug6dnPvHsm3S;24 zE06!`zH)x3l6NBoG3o{@wCCnI;i(c_uF0fKK1^OQvxx$cu%Y)B^q52rn;#=W(PaC; zNvG_m(9e8XegK2#svM+Z4ZI|3$a5nb4Hi2p7_$;M9Hi}M1(hMRX&MzsOLM&P41e>H zE^tj_7SKMlYTKf&@oBgo$gmC{NQw#fXPjlQ`&yn^rV&~;@Nh^wZCmQBM%#y%k~2j< z3by||^5Q%D{P$vD2iUudKd^IT@YCA`BXvPQ-?AX@E897ZO9m$Vl{hgvP)rKF6yl|D zR*QTxS*0KQ>j;ye?&B*eIHLwpT@|l1>M}14J^G46d}JfedGtyB>Y4R4t)Y3_^~^`0 zF6AA4?*dC?vjqe!(KfrNqM%pWB*s6hu3?rERjjWIeEJ275g)O;u;;jF{OJNtQRw!ry;R_Wx2#0cm!AY!BbB5yMM{dJG>I~7OBNe( zzZ=@OrBqF>kk6UT<^~*gu-Dzy*DY$uvvhT9#?@o6rhxF&Bg_3hl98*XBD7of)PaR9 zHJww3eN2lRUEwJ(ph^Ok9I{md(NNV)i)4IWX2;SN)S#jOfgeghzNB7G@3LTy$ojzy z+|fUrT!|C#mq?s!0MgF#)u;Qh_(raM-JyUzE2q3ngPVsigu>2PHg=|b+OFb&ho<9- z?R>sB!hb>@_!VF!%4@y!%rfPDu-M+ubDgx8 z?}ncHyF6;|pU(#bd~oq|=6?xU=txe0eu_X6%lYT0({dHlWxNE_S+k93LE7?a(sjs| zISo|k@&rk;5G%*KBQ;eEvJq^WHqwO}=6j0`fc-9;Xd(}l1wd^_^~tF*7oM-1zw?f( z=cAIxC$48R{Pe<<_CEj_f}49=4GQAv?D*+oT#0t*TuvkwSTH%MN%6n`Zb=*#f}q4M zz|x_mQ}%?DMY&c@6XDIZGD+(=lc-2NZ#a`Yi$@ptUYB|>8}n)*vz8-{F%WaA>=(~O5~$fjai z6zB#&h3_{Zoi?8yJWN;&zHVfK?vZFfT*L!Lx>4J>g_d80u)abzR4=E(ekMM4-3kb> zlXq)x3_rHCd$o*X#kDim{r!X!9sI-XFYrFN#%0g7!llf6{lyKJE)KXwwbl9=BMnuP zq%e|rqW?3dFDPc!OcfRWu==6R?x==Ly2X~h#Jm@?kl3<6hJLbRZYh@g4e{RUbNFe@ z3>gFYYcs6*>6dHmI<`>RFH+)vymYWqT+Ta0mbu2dL^*6**j~TpBJ0fe9{rD@6H=Us zccDLTMQaZ_v7ArRtv1%z`BXSG@du%m_Wmqv9vc9GEBjgYx@2m0?Q@}$;C}=MFaN2A zwmd5)knA#4RXx%$hfi>GWX12kvObx#MuAw=W?GM(eUd3FG42JwU_pL!xftAydUZHq zOt0?_Zj6uv=3F3pfv~~b()-`Y1+MsU``KB3s+@WoCk9Lx^TGc~P$;uS4b4BCW{j&B zqwE_`8n5bFH?;$+9B@|lZ*>+05)Z#n_+aDH;LrelfTRi-N z+Dc-=*=9UmxmS8{5|<1!xa~U;cvDEiCa!?j_oAGRWQ8gG4870dbVdhxS!&Q(d9KXt ze5>-#Cr|#JLzLtVmX9Le{nR_{A3F6;oz(+@DQ#|aS@}#CcSZ$Z=d?MGVb7lz_3aRRfd8IDT5aEo&4d>}%+^%rFr0x+u=E7Cy9{5vZm|u*k8t`(Z6Ey<WT1c9`ndYn5mIN}6-m4Sg@~7WcZL zO0|47n2wJWnBrjoAQ(k5BIhFB;Rv9E`H@`ozHM%gEd;Du8D)2hnFK}yea>@4? zZ)yWRQWtAvu-v7)Pbc@D?<=!ds3up)8^nrKL|B-s8@cXv7;hGXjaA*C=U3+{bccqP zaOFXK+DjteSG-koI2Vc(d)d_iCU>0ft`MTARI{+w;@^&yZ+ z=UUesi?;tzRYUtiS|Y0c3&qrT>=Rcn9IK6^k*bBZW3MIy^WM^g@g2hQj%0PHp?PnO zZW^|+=u}ik1@?dXuwR%N&x2TpqCz$m$nypwK`DO}GZ$-Faeq*;q2Ad7(VNcif-e6> z#ts4pSXcjYtVx27Ih0oefoo_!GSbJrZIRNf2L{_^2>P4JE8+2bapmS>nFbjuvw}vy z2j?hhfpT&RIso4&7))s!ZWp2vW68ue(4ldYhbP0#R{J|6@t_&XJo*Khc2-JvaQ{V_ zGWhkn1GQ|b&D2W@F#qfNGK2Up4lirn|crbxDx%gj>fWqyksG)Ly;6HRB_O(29Gb8 zp64(K6MZ2Qb_d3P3WKcX(b7Cg=zD%4cnORKy)1`N+!uu){1DIHE^OeD!muqkgG{#> zKDPqMWXY$v$+*PE2RNxeLw77MHlOX^dVQ0o9UM!uK4!j#^+DARZ=;X0hL#!w_#bJc zGEWayR*skU=}*pb7k=co2Uzc?vzm7}ZEiIWETqsaKA{7g0(i-I(~56Djo_9Y#Sv__ zuttPE5^QC%q!-tyX{YR-q^fBX3bZB3Z|ibP&ry}mOF()kVuI`DE2>yu*XYkBY42@v z&hOw32&JA^9O}gWc=5(jZImN3hx_DkzJsQE$(fsRf=*j2gKBXJAJjIQ$cJkBWE424 zN1EAnxxR$O)`m4l`1S4bf3I9o+?4AA3~-wMIRFBh9deM1PzPG0WPbzoXe5ZYJ=jb3 zs8&N4re~TjXY$`G0E{&-t;)sx5EvgY^C6Ex8$KYy$Pw5LjBZ)QHTO!$UUNFsDX#6QOpV=PJ(V}qq3h=4+FH&|Q0B@_K1*vV#&dmZ$KS)&n^iJai52i#uj-e5eO1Pe` zlM){n`OLI9eN@s{pHhX5PVM*qRvl-;H^pWGZqjD-&jWUQE`)$eLcVN=ETn`gFly~M zS|w&W8&I+{1T%bbyqfgQ^lJYUxxo5mnP$BMlD+ye4{rgzi zN(R#{ZHD|6^=)Wzqil{`nleRLQI$Y6ShTz;zhrk8wwGV-t*`RcO1YTI&w}hFXpp}x z=T2{u`hUl3if^VJW$DVZ>PoX%x0uUq@+fDO9Co+_Trq7x^Z!!-ZfUyMRIJjxzt`q zF@o=ZxRRK;+@fb?M!H`KdFI5Dn^CtQ>?n@11Gb@3MI9a-^wfnNEg4V^fbX`*0Wg(> z2|kaO?OeyGCDZjNvs6->(QY)(*~A&;*i$ajt^N<5`~YTPJQU4kxT~<{qe7-ZA$Xo= z%SvXkVO@{jezVSo)%X4Fh%D%PRKkQ2kXR+b+X)kQ0-+C2H3ZZR>Sf>l*(dhC-qB?m zG8l`>(}=Of{pmqYpsC|b5l*qKELk5)L9Xn*v>^;id>!jGB63mn*pu31Z~pCCT!mIc z)Y8y8H^t%(_F$adV?RFz$y}y@5XjhE{VJ;|h{T3<;19Qu!Jhmj8P=opo z?j2_W9`ScOPk-Izz$ul!-0B~bm2CB}Tia1S zv)2lmbjKX531t-v%X0!YN=s_V@t3POYvRR-6V9ui_e&f6$yMXG$9^F2mGhP!E#}?Z zuvf0W(ym3MjlK`#yiD?XDh^23R|lY`k9uIEN!U{fQ`gN z)uDDZ4zdHMf*Z5a!DBXAj<4@Lusf{t%4 zfJqHfO(MKCC}Dr2y^0hIlUd_H@u|PSi62! z>HY|+bbrv+*mz_Fek>?2yT|J`h7CTfW|cjoA5JpTj;c%Fy} zcs}}IMSLF(52FjE4yTq;-cVZnYsG5N$M{rRCIs<1P-AMeNXpZOptahHdf zKmv9O?(bBvC9=siLh+1%T!49!PB?tZ2Oi2Q19xNZEAvBQ#x1O|qi@%2-!7Q8C`0#Y z3hr&@JF#?}_WRd<`LBK;F0UN{WXtXpxl+0Yho4*D{P7V1Uq+jEJE}rr@Wq@TI#%Xm z)m^Baiyz?UL_RalxT&Y3#ay+S-o0i2%wk!^w$URb?btHDce&q?e|{H~2PpaeQ@OgM z2(FzUG|!pwNbtf*u@Na}&Ab(1oS(q8&FuPAu~tCV1bHZ*lI7O%x>?Hun%faGnUnyM ztaJ^HJ?j?#PzpqyVMu@UP&)g&^GU!oEF<#cJ-v!#ze4l#ZHsBn%LU@iu~|znShib? zCOhZq=y)@N@%7_eN2P-+L#;V%Pi5d&9SWdt;(+ctsw271f(s9-3ln5Au^X0UII}Sh zm8Fv$K}$($GTN)WTxk7HTQZ`MVqq9cO|MJ=1u9w<%ZGFtEzsIWl z*qdE6?qS2t6<)>Kt)Uu|c-TCa$euNtr<3sTaD)l6&zhipIn-U`!v`$L?xx#F^-A-+ zTA}&$-nxTH3dogH0p*J+{opyP`l2+?-lQ*XBLRX+-Jizmj$U{}dtNc@baM%K?|0Mm zUN91D7|?8nh$%ll9h8i956OMsm%QQeT};5>)R?B{vWlkXTowq-GiU6|`n%J6YIMM# zq+PB@Dc>B~IHOU&Ycs`TKcyf0G}PY8W=hw~|lyK>e>#~y&z~ITo2A|UZ zfe!JlQP?Nfh0EAkB3g^S0&%JEcH!t3C9M7HGt@|dW=9V}>Ht}M*^E>)%vkowz1H=Q zQjpJ^kyWS~C)dGiV7x@Nt&5rD9r_2YLW?W`R4zRy@(1)eH_;iRrX?t{w*hNclsh6U z_M8Z^)Bq{FQv!<90nb;-H+&~~jDsW%=sca6kv_bk4br~ckWkH->Ms>xx~ziRiO}FG ziih%2hFJkxZ8`O*2jOQuO3wtp_ZRoxoR{UQ$;}c@KUwqiTlG@)-D+kmwcFBr$;qtN znBx%QL~CWPjs(%x(vjffU=kFSV#<) zVEoMSn}0dBiX^`XK_s}X|8G}V{nKFJfj1AJ93y9b(=O43`k9fTJ`oIlC33#y9S}r( zC_XqKFT_{262P$QSV2-2Vf!fed~?3c4ogs_x$kQL+_s%!bE8q68iKIiBu%^cqp*#W zIiSMe#41l_^-Jn8)dq!GFykVU2=G|;Y*wbZ9Q)O^*E|}F59I$9ghkR$u;n$qPM}?x zD{_i8jQdMFMKE|vP)R7AQbR?Vba<8H$j@Oe=6C%UDgDuU24MlR5hSI0_RxJ8Or8J- z_2EnB(rQlINROXM+UGjuj!vbCd@56D$mQnS4P@F*A=q}XOUa_nAaf5Sin`E7G+cTS z%*#ad1B-FZ{}BvaOxvI~V=9#BEaf^Lg9wa(E@}LwfX)R)taHguyJN2EUa4ZmC2sV` zu+;SKjZvLHVu3GzeIDLWkUi?1|A}lqbl5=3DqT%7v)D@{luakd!Jj;)3XHYC&871F zXKO3yxa$R!e&0Yb#3@xmQ6m@l1e2k_m{e0JK)X|8pz70EP*WLnz{pcsw4@1(+F7%V$pBn`=Y2uOB!$e&cgf zQS840ugw#V^8}MRh$sL*ec{z2oO#1m!{}N%%&Lcv`IzETqp*Xqp+=HXHuvC z;%+^a*BhC_Z`PBg%Q+_fR9(@m$I4~btY^`kQLa8tEFh6TPM0GI8C$3ou64-Qi*q1| zLd^qn8suxfK$Em!%^SRdo+*^F($qu6))}HThfW+^2{cP?Adsb57xmJ%URScZb77 znj!j;O#i3|g3YxUgG0o|nBh%L?;JL46-aUe9_ccXR-X+{{*R^ej;H#6|9`#hP4{WQk)2Is#|ejIhO)CqiiqE{&-eFNa&x0@ucznhx~|9L zalgWI`FdDQ%ZrD9E(8HFOkbXVd_59O!U36l* ztJ3>nS?qejHUnnc=6XRep!A1SMe&hEJq>q{tunr zoMun_B#48QqM!e#FsaZSLWcVMoat}hyX(`0)O&hCqJv8!^P7|hT=C7e>TQ3iB1z(= zR>Fw?*7?U{*E`CaC65LTo9i{d?rV3YWha?*+L-9Iue_)i_W98UUIY8CnBbG&7}GzK z@cPw+M;2WF^^spQbErhPIf|}g!n?Iul-G+nCHOL9Vz%ghDEk-SL~e!fs+^4tk=8P9 zJZy$!-fdRMVrV99ImU$8^r-HkOyD*Wn)A7=_NUW|k&jn}X>(IvD~osHtxdnum5+iS zlcGjPh6hrQPZ~bi8O^2N%LwG6g+`cMwi{taTwV}O4%W*or#=WMKsa18?d{G4*l8lK zydIv0yz$cm#p1)NnKF3Icz2mH?B+{wZ*;H8X8B{Cs)t{W>2l-m(^*qkuw$FbvkawU zJMgI43wEDiB=es(JAV{3Wb&=5bD(D?dK+j7{%?H1lR4I*g-)q^5LuJVAxL86z#Cw( z*a7T-TDn~r8+r@qZZsEl_Mg?&UZCbG%F+%l+hY$D!QqEMo>i z#>;#F+;3S=_gCJp+v#JrpbKhU=6>O|ewlppuJai4SIZ4k6u5}_YsI4SdnAeaL@6Kp zudl}nYGh^xHS##~s|prBmJRp9U@tyF05J!Zheo|VCE__HCBj3^W5L_L^AD@A=W~kB zo|+nsLH16NeUlUDyqK{B87Dk8`B=B`kf0&F|R_uLzMG9K8c2T}twKzm&bEjiyX~ zSM~QDPcuvb|S)RB^|5(K!_(ZGxAgsPBh2UOOGN6>vs8?wYA|wmC#t`+S3|IW>#B zIW=3h*{jtD6XMvT;@)h+d8157YohmPoOQ<2sGT!YI^!}rh;Nvj^(ai~{e+4#D}v?b zM#ol{#9`@kU-=tn>p7?E?u-zb<>DX6E2oE!2Vb7*m5;clw6A5bY)s31n<}b)8!k_{ zY-L=@Y_Pp_?Y;|t zJ1BOX*QO(FmkfyKt_$PQcp}fvf<=sP?dbfyhu|anYPezX(Q(4E48uEc>~t+`4h{!m zGBPJ0pH~ABY00UM0UpFoPEK^&$xa>~OzZ3GxrK!v=I0;a;^AQy7G4@Xh;E%Fmz9;B znv?o)l)3EX0gDT<+gE5_9T^$9xTRxu=}mJA31N8mZXv1blj%)ir)HPYlyNG@uYq~j z<*1?@X6a4Ymtzw;(fyuuxpW^kK5@RMUu6N2go~gbzpso9+MQ*{{=|ZF?X+#m`kFc5QEybxl}q!V1N>$({QikS z=ljU3O91gOqa3$( zPmrm3B`*!X-!yhGP(a))ag(v+7-o5?{obe!d5chaZ%H*8Di9SSqyKbzl12UK4#^e$ zsDe4!!yI@#ph4Xvs~)j^DQYq0m`F{I@F{0?93>h?GFCXKlB8^MwS7rN^VI+T=FX#X zvF~NmR&M)GV6h$mN2K&0bqn@Hd$3$X_Md~tG%Lr$MmMTPPZjESFJ4z4+H+g*bXx zHTYv6^wIoW400&jx~~i~_bJn3rGlx?KQs-4c|t-%rS<*<1O%~DxoKLv z^Diz!r>3S}zFx8Y`TMui3lZTDKUnDo$r1S!;9#NNl`=yrump2x#3dz5%ZEsdg~Iq*$!<3F)=axxBwP;rm3~nRPXO3mjG^Cb&NCVM$iDKYcllaV#l_K-)qAFcRw6i&CB;6S(yQ<{dU`Z; zoyAhxv=!v0%+T)9DJFd1peL=IMhaF zP%RT-L+Qi`JfnEn9r>ijm5Q@|L6xo&8!kJ?70L{H21f01qp??pU*q8kRhLItshHY9;8*;GXL4?u?5n z2Rplm-!sy+0ndW1MsU2cwrc2oXm({yjk3Q#QSa*PEZgFeYGG@uBzBZC_J4OHdciJ; zWpCm6M5PAmBAaD80!?A3M6`Oa?&hY&uWqFfd!Z(|zir@DtZWwMO&hh4F8t(pH zJnEC%P{yQzIU?LuF$FaHx1=^-!2aPN8k7#_g7f992n|;AY?c(}4=f+^$KDZs;Ol@4oDYlo zL(6*))%?ncC(GN&SIXj<3~gmxzTu7&h5dxV@l(Q|5?=<|usTzAkxT7c_ZK4W*R^l3 z;*JjI?8frQcc_GLG{qakTG2yXh@61GI_v+!%~gS>3}xkf0`z9k>f<`}??NVZ+v-p1 z(7Gv9pjBP#nyQ{EcD8g^4c+fnZ$dGjn=dYiP)XeLIF?M<#F@+p6(4UpM%?_{1#E zrbSF5IUR{BOGHe9PsGg7%oELxEfd8pGm0X}PQcfnN0i8y4HXWN32wRI3X0~J5eSyJ z5^zK0a@(6n1~;SmAUsK|YGwOrQ?@7f3Ik~|^G0!+6$L zSHCs3F^^fy=M$fqE2*lY$k}>qkTeuY^Ohtij_9R5<53S21JedG!V7_wLXuMX09g5& zs;hBRQc@bAwLV=oFusL@AWH#orHLc!T4~M$1L1BS(L>Y!B@HD$P9kCPei0mCF!?EW z%`d&Ey`AawTl~84>+VasqtJ*P~50#p7`1#T_> z20oNW`%Y~ym29&@>o?3F2L?>1iyz!3;D#bbFG6W3ohktjs#O_0Mys~)M8}Z+XW(bm zRriOH?bo{IwtN+=hW@mS$(XE@B-$ zQdpLrkDfM>Vwq(VB1=FZbuKY6G_&L@%BtxS1%~xND-%HW%MlbQty4O{e1DCH;ldsu=X>q z(u4>+Ptn#%aY@d9K-O)ZCgk0?*64qC-*l+F%SoPKtxuLBfF?jkE3zOa7B?*>R>-Dv z3rnO!3tN9)j|!~j_3O>Whd>7%A5}N!55A%*r{(vwVw;hOoS3Eg`F73Ej2e*%gGEqr zls`}YwoHpLdq$I;o!uU~4e?s-jOhyYT0dNtE0ha9T049n`k*(MHkU# zzN@D`$?hHlX2v6Cj#laU?HxP3clB*}eMr`z0+N=N^U9h^4HtE4S|ka{c>~m1S}(Hc zs=B5!{>JW?rJMVnk@eDx{6&paH~zOxO(x`YGPLr;cW%=KWgvR5&ah=ftcD3&-HLGf10HB7tMLwI+WH1cw^ zBx(a8ek*Q_JWu==Jt0K~7GY!Zjqj`M1rd?fdcMK0E#;1#g>SR+sh-{CQz^&iP^Bf^ zbvwmPa5X_H@clMAlC;B&pyFh-quQ_0M}vdqHq<#_LVGvdz9Ytqcyx0e*1qku=4V8W zxF7ZyvHCzTaPJ=!MDHK%TpQ@#c}O6b`iUEN*s2RbIx3x)vxX%E%0Up)uBz4=h?|n7 zHCeR|^xn%lQSBbH1iA;^+=2zid;IywFTtToXc4@4FBo+FQ-z!dihBV?aDZ;l;9a7m z7?Gadr2W${hPJ;Pmi`r#w?~z<#nw)JR|qN2!=?=|KocmP7Jb=Xvkz*kr{wzdAsAaF zxRR+B=7lIkTx*;_eBOYVWDCJ3zF?iKlFoe`LnPQxhAX%$;09N&zk?dGpp1FCmJtlg z2_r6*>WNb`REOpKl-$C7FKyLp>A6tRw72i7Tf)o@uNc{r{XN#}oL@Bq^F z)>gCPTwu}Mm)^0MH#0K&kWoK}RNVG~7W`{#JnH1B8)m*&7}YUf@?r~}(H#N?ssg~w zU&y4iXAB~5wJMRb)U;GkZ+!~m0B)76j58eSw96N4vb^{1b{HAWWzuS0&xYw5?*48f zxnec(9YtCg;QYb%!wWYJxR=qBPLw?DD-&N)2MX*F)r%T4n9giHctt64KN8|IP0tba ztr|t2lZHvl5dRIvxK?bF$DUyZKv2*4sOkc(v*^cr~AEnFkj1 zMP=*icC?56tYL@n%Tt`#%cNnDs8`57fYm-mn8S}{dolKMcBs)Q$Mi(;4nZck?|sm| zH9kP9SIWoI{MDl&g@zd-g4iMF?l1$I=fsq4xBpRGF%Sn!+S~iQ(nW&GIUu0i`#>V1c%i;BY9y)~{Y?VEj2Somq8b8UU$p$HoeveJ~YVuw=XB2w2)pTXlBF4ZWSa(_o5|fdkw+O1>fXMwP2tV4@1g{Lv zC9Pl9+(cLpZ*m2g#35*FcukiU@)-cfT~`PrFCQzboJDAdv)Q4}b1q|M^P7lkGlyQz zE)(KF_h7>R*fnZ>dHBXU6L@B_5b?;3toszNi0+=N5s{q3FCp?^@?E>`cORoMGe%+e z6Q&~79>5Ep-|GalSC|bq#2mx{6Hc93X6Q!xbH` zz(sRnP$QP9JyCZ|#UQ8QJ0TgbDTH$}V(oEpoQQkeeh{42QCQ&f3$w$WKp!uR!lE5M1b zmc}LME?EU&Q~NGVD4235{ilqC;O>Zgh*ovN&HRM&^{`c5zr}gErTjzHzi|kAyp#wR z+V*NjijWrSpGa2gB#7VqnidbrDu4}V4q8e7sL!!(Qt9zYsxk})$DYzomwtU2D_i|l zl^I67d$^SZ<}V5#zAD+V;W#*1Dec4-K{j_Q=XvtlvaNY#uTo)>JMb|ov{VA3MzlM z!7n5-ExIT##nV5*U@@@y;E_;g=JF#-L{xSA{=-_8L6^1zfzC+5oqZN1yeqvt0mAtk zUt^UtEN&(Ssa$8=6sI#nhFjVP;~+7&TL1?x$gj{WnWGMWC`8(< zV2O{B-S6f|uc~6h$FwI4;UCHmWD_T>Tj5t$fI6^OSN-V(H9O>%%FY;Np+_A4K~`1Z zSqTwN_}O-p+CLOCpPpHSb7@lPsP>KA-s>!UT~DfgP0@^;Mp6*$2SC~&%YPljVt$Sq z)X$gR5Xt~p77rAW{m%{O|K-JTeV;@JI;^xc5ft0aMfNW2^>ZL1=S}C5x?WO<2dDNg zNu_@HhRw>cBrE;$!w2lI;p>$|>OOsv@n72HPNLRruZN*TEKj>ASnbyxVh+bPrcZl? z-VQ&v*mMD-I2KT*GI(gAUg|zV-9<1ld=PvD_kmy^R5PHyd!uc8B)EX)^<>605cF09So06Ab7~K$^7$a&qw4*E`a2&3Ox`%;w6W_&ZEm8 z*y3qsF(MZ*zOS?A0fI(d0xEkc*wA;Mg0bm4$h9^ev;XfB)Z1d}SFm0arjN zcqpe!4+J=GZ*h?Mw=(_Z`qA#pZ60@=W{MJ%!e>-tQI^^we2$HG!GKu4SUiyodt4zT zc`qoF@wa*x|H3nM=&(lLm>hphAb(X2@Gi3Rm-d_R@C5>}5&^obeA?;>*K)R+5ySAn zFe|~;jd=iZ4NG3-%>DGN-W!@y<8N5r5^Fud`NtiBf*0?YgRbibSgzN?$m_GB8@3F1 zTFrmk2YU(yefeeYZZ7rc>&}PI7SNM{OocG_ddl9mzR0T;w+~mVl>=AU|KLE%j~KcH zBz#9VH~A$lzF1V3!q-kuK*3(WtDG%FZ1-F35e4Z@N15iNvkrF79hKt(qL6on?#ja1 z_f-CKcPyLK`pB7R^h!*d5gMSMa8s`AdW0XMQnsD}HcqpziLSk|9g)wgP!G?4yf$4P zk5&N8?h&plKz4my;$2$tM?YX`67}}W*pQ3sZNSQB2NPucm3O8zW*tliKiOx{i$~au zVY)RwhUyUm2f2bc*`yF$ki#9*shfjpDFu^itYJ+H)3WnnCY8O)%j95)QF@+}Jg=C- zQTsMy0;`Ty2t;_M&jn|f$W-Yp-FK+`*szH>+<_*#?gF3DCf3JyK{~!d2SCiF?twc# z(8g5s4y5``wM7xu}+}-jGyPzor!apmga5LrUt#!)9@lwjgPBnMf z;}o3UcYTSyi<=*QlXjl`rBt}yX(m&Y-yG;=`Mu`-TlR#vEz8mK z_oPRZ(O|!UX!^f=pxbqDkS&iOC|KUn*sV-wbhPhlCmVCV!6IQv#;`ey+#}(B@-2S^ z^X;J`k|2#KUuly|oZvMNT(rjwiIW$Je11bt7{kriJYTq~HdG!?s{xLk-GJH;@Ax&* zLTld+Dmm%W$zXzq+bXg{gPV$cHaYptGfC)bsj2crblvN_0i=2boT}`m`f58pAx~7& z>bZ#-(l)6WTxsrzzqTX9eDz#Gb^!S1+06w;w!dF>Pw?6JJqlE_ByZfTlxftgDG3JZ z@sd6M)1?Nx6y<%wiKp?7q6nkOcjQK{TuR|{@~TC4k|Ocw`mig*lWgx>0#@pR3B@;L z(#6Qfa*58WA91p8@JYd2gtVhwk57;?9-UlX9`SxmVqd;Pj}mdjH>l=PnBLIo+u$LH zzG%vb2V?;kd4~?z$%1Br1&_%kep<`RnHr)~7TjT4cp%kz;!UQKJirL0cm7@@~` zU&h;?t79pAoNd}*&S|M`PELvX(kVb01l1UFk%&mqMZ0YVLj>NI`1p2MQ6TWDLyZoI zh*qx?k~WkIl9hDg`;>cBds}iO;KI2$aADYkW|!#Pb}E5R&UEg#Nz~AI%WBNTi*~I< zYwoj@#vL7^sY@*j@A-LOdJ7nX=FphIA~Z5fP1K}od}fBqHAMF0{N1zZ`sca3>*E`0 zw{b!A*8aXBZiHf=KjZqkKb6w7RI(f zo0p4ms^k?q!)EXvemPvPOPxO{ph0MC`-ZfZhcj+g5L9qHV}#AGv$^1ZYlV@3xz_wB z|6Vh90mr|Z0GmD!a!)yrc^IeC=M!Ef#~ANS=;pIHp1`D&S4n8^+XSDu1fSW)jcGvbqYSXr@a6kh23(}tWiB4?b(Xa(nW1r;c&nbq z=^sHN;hHTZ>?Dp{n!Um>-TjgVam)? zDoPLYsCJjO2zCK`UG`cyZWK@$&_~z2M_^}w99rh5I-2A1Ba+dsnr_I2U*X-rTYO!8 zgWsnQ-(pUrTWFOTaB$%pQq?bY@OHd^uYuuAE&!;)zv^UAPrB!h2>7 zT>w44uu>#_^t)u3HJyo*wm6_HshLRGghd(aQ%nr*ss^0ASPC=96Nf4D5>ci+>wZBa z-h?msQ2+veDfk?vJ`O&SNR)fnBm4(+w^k#w?c#~(1Ub9mcK3(FSG9DktlP;cBHtww zwK)5yB3S9^L7znqq%xU-fdQaQTp#UAG6jV$|7}aDxjoA z94^y!qd-WN0`V}lp9aBwNw92Du!9`gkbgNW1R_%ev}EErld|GuR`&3^)?B1a&;;r{ zO8&(x6wG(V`<3@BpW#&9PW`dJue#TIl8*nWgN@?#n+v^2H4o6Q7o3p4H>^Y2y4^=c zc-?n)h57#Y!8FM-zC=m5c5&}+5fI?tyo0O=KfMRq29`kzY0v>1C% z68Nj^`sgjNkYFqSR|mT`l#nFf2*NF!d7qb!O4PjTcV<(BK#N?pgL_vFD_yji2L`>`wxN!)=${Tk4tM?s1H#8 z1X45Esf8~ohp%l7EG(oJmzF4wufF?9ODohPR)a%B@fPJ|0XOO3K(_hH2@yw5*i!QD z9oFB!f9VL)?4Rb2e!lzjyyf*PaoIg~X{7b+>;C!UhVA9q+0?p27Gh%3`=YXAIJGi5l2SYa42VDH zf?p*5-6@-Er(tHWUk#I4VBrt)$}RIcZdf>m&H4ofIYrTaBwa{UPPL5f?!-ZYo`l4jWmZh&E=`@i$Wm?hOVJa?<6+~%&f0r zx{UqPA*1@&fsk&nT$1k>di93#WP%IBgiSv;ZVGJOJ~+JK7uv?yl{nsd(q@X{o~=y2MTJ~N9+-&v9r}I+(ix5aZTF$h3NUIct5B6o8Mj&j$i6*=25nKLhtl+1u5lsNw|G8>WSD{x+xQPV6Fd z#K(ILBOXt@G*nfw7#JC+J{^vD#VxHXyIV7cgoKJniw|;fQcd%H}KCiEfZ@WVH@qki!r7cT?tA(uvW zNGS96)Y4;h@5wtMK%y8_i#hbxr{NK|O;=fe%|)D&aE6sHwLu_02i?fX*_w{QuXV*g zPgTdQwE%O%dN3rq*}|^Xe0&!wC#V+PVoNACdTqD4T$p`(Q0=y?H32hG`J zVvQF4a?an;5cVFD3TA(?fYZ1jo6|Ja@UNYr!nOj4pvVT`QaJybq#I&SLwW;bEe{%8 zhOY@2HeY4b-DjjoZ6%a4Wh0IQ+Z8@Rpt4dDB@vO}w+$w!Jiih=9m5$4+Jvdd`xUZ$ zzb58HZ2u?<8~?mBoTM0=KCP%;xn?fSScfVfB78d@o0CHWS@U%f?b**m=~)f<>g=8ly#GE z#>dAi>+3av3=dQWV;j?`*jSC5-rVk=Pv_SgebW~QIUQB8ZbzLtuDX^E*4Sqkr~A1C zLtiKF=DW>EiTlw1I0>1WS{N;Nu?Ut5Q(%3bD!8v8A+s?5kyTS)U!t0i-^j|iZp8wp znh$MkYCej?O*wEa(FVQToAYQanR1L;{-Mk^pLqD1W#!A0MD*9fdr9b3W$%+2aBBeS~@a6!vt z4AVJ$K#QT}3&u#fTOJdvvd9dX-#4&?)+Dxj*fS@P=v0*QLBJH58KKA5bW-cVR4b{{YQEPV zAYF2BFbV?GRVMm;3^71olfKl^=j zkSmn9rKJTHDSCIbZe)XfFV*8{=UY)Rh(#v z^_cca;AIF26SI4{v$bc@vsfTqlQb&ZoYSm?>4Yi} z7~$6HLLMYlhMHy-igKQcnsPRYtq$=7%ANgpZa{!k(2bUD{HpxWt~Egj5;`o_FD0bM zsXl+_-c*5{8+1Kh*9KI!db?WEG•<0rAugepgyQUxS)R+yr5Gj1b{x>6tumT^= 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∨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 literal 0 HcmV?d00001 diff --git a/docs/porting/toc.yml b/docs/porting/toc.yml index 6f05b7a6724..2d7ce6cafb6 100644 --- a/docs/porting/toc.yml +++ b/docs/porting/toc.yml @@ -9,8 +9,20 @@ items: href: ../porting/overview-of-potential-upgrade-issues-visual-cpp.md - name: Upgrade your code to the Universal CRT href: ../porting/upgrade-your-code-to-the-universal-crt.md - - name: Modernize your C++ project with GitHub Copilot modernization - href: ../porting/copilot-app-modernization-cpp.md + - name: GitHub Copilot modernization for C++ + items: + - name: Overview + href: ../porting/github-copilot-modernization-cpp/overview.md + - name: Install + href: ../porting/github-copilot-modernization-cpp/install.md + - name: Scenarios and skills reference + href: ../porting/github-copilot-modernization-cpp/scenarios-and-skills.md + - name: Walkthrough - Hilo + href: ../porting/github-copilot-modernization-cpp/walkthrough-hilo.md + - name: Troubleshooting + href: ../porting/github-copilot-modernization-cpp/troubleshooting.md + - name: FAQ + href: ../porting/github-copilot-modernization-cpp/faq.md - name: Update WINVER and _WIN32_WINNT href: ../porting/modifying-winver-and-win32-winnt.md - name: Fix your dependencies on library internals diff --git a/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md b/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md index 471d6105610..5aabda3b232 100644 --- a/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md +++ b/docs/porting/upgrading-projects-from-earlier-versions-of-visual-cpp.md @@ -14,6 +14,8 @@ In Visual Studio 2026, this experience is enhanced with a setup assistant. The s With the setup assistant open, choose an action for each target or select **Retarget all** to set all projects at once. Then select **Apply** to complete the upgrade in place. Once your projects are retargeted, they can't be converted back to the earlier version. It's good practice to make a backup copy of the existing project and solution files before upgrading them. +The [GitHub Copilot modernization agent](./github-copilot-modernization-cpp/overview.md) can assist you with any changes that need to be made after your project files are upgraded. It will analyze your project for any new compilation warnings or errors and will iterate along with you to resolve them to complete your upgrade process. + > [!NOTE] > Visual Studio 2022 and later have deprecated support for the upgrade of project types that have *`.dsw`* or *`.dsp`* extensions. You can use an earlier version of Visual Studio, such as Visual Studio 2019, to upgrade these projects, then upgrade them again in Visual Studio 2022 or later to use the latest tools and features of Visual Studio. diff --git a/docs/porting/visual-cpp-porting-and-upgrading-guide.md b/docs/porting/visual-cpp-porting-and-upgrading-guide.md index 64aa8a53e5e..17b0491189f 100644 --- a/docs/porting/visual-cpp-porting-and-upgrading-guide.md +++ b/docs/porting/visual-cpp-porting-and-upgrading-guide.md @@ -61,7 +61,7 @@ ms.author: twhitney - [⬆️ Upgrading C++ Projects to Visual Studio 2026](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/) - [⬆️ Upgrade projects from earlier versions](upgrading-projects-from-earlier-versions-of-visual-cpp.md) -- [🤖 Upgrade with an AI agent (preview)](copilot-app-modernization-cpp.md) +- [🤖 Upgrade with an AI agent](github-copilot-modernization-cpp/overview.md) - [🛠️ IDE tools for upgrading C++ code](ide-tools-for-upgrading-code.md) - [🔄 Upgrade to Universal CRT](upgrade-your-code-to-the-universal-crt.md) - [🔧 Update WINVER and _WIN32_WINNT](modifying-winver-and-win32-winnt.md) From 7dc1ad36a325fe8579a8974a18f34c0fceac14cb Mon Sep 17 00:00:00 2001 From: veganaiZe <7102064+veganaiZe@users.noreply.github.com> Date: Mon, 15 Jun 2026 07:24:28 -0700 Subject: [PATCH 544/619] Update header-files-cpp.md (#5938) Clarify intent of section --- docs/cpp/header-files-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/header-files-cpp.md b/docs/cpp/header-files-cpp.md index b0460d00fd4..72fe57771e4 100644 --- a/docs/cpp/header-files-cpp.md +++ b/docs/cpp/header-files-cpp.md @@ -94,7 +94,7 @@ namespace N #endif /* MY_CLASS_H */ ``` -## What to put in a header file +## What to avoid in a header file Because a header file might potentially be included by multiple files, it cannot contain definitions that might produce multiple definitions of the same name. The following are not allowed, or are considered very bad practice: From d85c0d41054756db83cdefdbb3b4b58f69f57560 Mon Sep 17 00:00:00 2001 From: "learn-build-service-prod[bot]" <113403604+learn-build-service-prod[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:35:18 -0700 Subject: [PATCH 545/619] Confirm merge from FromPublicMasterBranch to main to sync with https://github.com/MicrosoftDocs/cpp-docs (branch main) (#6747) * Update Vectorized STL algorithm documentation to reflect the current stae (#5937) Since the last update: * ARM64 and ARM64EC vectorization was added. Mention of x64 and x86 is removed, as vectorization is now supported on any target, except deprecated `/clr:pure` and `/clr:safe` modes. * `includes` is now manually vectorized too * `replace_copy` is now manually vectorized too Also moved `find_end` to `search` / `search_n` group, where it fits better. * Update header-files-cpp.md (#5938) Clarify intent of section --------- Co-authored-by: learn-build-service-prod[bot] <113403604+learn-build-service-prod[bot]@users.noreply.github.com> Co-authored-by: Learn Build Service GitHub App Co-authored-by: Alex Guteniev Co-authored-by: veganaiZe <7102064+veganaiZe@users.noreply.github.com> --- docs/cpp/header-files-cpp.md | 2 +- docs/standard-library/vectorized-stl-algorithms.md | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/cpp/header-files-cpp.md b/docs/cpp/header-files-cpp.md index b0460d00fd4..72fe57771e4 100644 --- a/docs/cpp/header-files-cpp.md +++ b/docs/cpp/header-files-cpp.md @@ -94,7 +94,7 @@ namespace N #endif /* MY_CLASS_H */ ``` -## What to put in a header file +## What to avoid in a header file Because a header file might potentially be included by multiple files, it cannot contain definitions that might produce multiple definitions of the same name. The following are not allowed, or are considered very bad practice: diff --git a/docs/standard-library/vectorized-stl-algorithms.md b/docs/standard-library/vectorized-stl-algorithms.md index 13cad087a01..1291e5ab6c1 100644 --- a/docs/standard-library/vectorized-stl-algorithms.md +++ b/docs/standard-library/vectorized-stl-algorithms.md @@ -24,7 +24,7 @@ Algorithms like `transform`, `reduce`, and `accumulate` benefit heavily from aut ## Manual vectorization in the MSVC STL -Certain algorithms for x64 and x86 include manual vectorization. This implementation is separately compiled and relies on runtime CPU dispatch, so it applies only to suitable CPUs. +Certain algorithms include manual vectorization. This implementation is separately compiled and relies on runtime CPU dispatch, so it applies only to suitable CPUs. Manually vectorized algorithms use template metaprogramming to detect if the element type is suitable for vectorization. As a result, they're only vectorized for simple types such as standard integer types. @@ -35,17 +35,18 @@ Assign the same value to `_USE_STD_VECTOR_ALGORITHMS` for all linked translation The `_USE_STD_VECTOR_ALGORITHMS` macro controls the behavior of these manually vectorized algorithms: - `contains`, `contains_subrange` - - `find`, `find_last`, `find_end`, `find_first_of`, `adjacent_find` + - `find`, `find_last`, `find_first_of`, `adjacent_find` - `count` - `mismatch` - - `search`, `search_n` + - `search`, `search_n`, `find_end` - `swap_ranges` - - `replace` + - `replace`, `replace_copy` - `remove`, `remove_copy` - `unique`, `unique_copy` - `reverse`, `reverse_copy` - `rotate` - `is_sorted`, `is_sorted_until` + - `includes` - `lexicographical_compare`, `lexicographical_compare_three_way` - `max`, `min`, `minmax` - `max_element`, `min_element`, `minmax_element` From 872840c5293ab9c54f633f73130696fc5f00351f Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Mon, 29 Jun 2026 16:38:02 -0700 Subject: [PATCH 546/619] Add F1 help keywords to Linux debugger and AddressSanitizer property docs --- docs/linux/linux-asan-configuration.md | 1 + docs/linux/prop-pages/debugging-linux.md | 1 + 2 files changed, 2 insertions(+) diff --git a/docs/linux/linux-asan-configuration.md b/docs/linux/linux-asan-configuration.md index 11c959116f9..1926b8bcbc4 100644 --- a/docs/linux/linux-asan-configuration.md +++ b/docs/linux/linux-asan-configuration.md @@ -3,6 +3,7 @@ title: "Configure Linux projects to use Address Sanitizer" description: "Describes how to configure C++ Linux projects in Visual Studio to use Address Sanitizer." ms.date: "10/7/2020" ms.topic: how-to +f1_keywords: ["VC.Project.RaspberryDebugger.ASANRuntimeFlags"] --- # Configure Linux projects to use Address Sanitizer diff --git a/docs/linux/prop-pages/debugging-linux.md b/docs/linux/prop-pages/debugging-linux.md index e6ca60889fd..926bd14e4fb 100644 --- a/docs/linux/prop-pages/debugging-linux.md +++ b/docs/linux/prop-pages/debugging-linux.md @@ -3,6 +3,7 @@ title: Debugger Properties (Linux C++) description: "Describes the Microsoft Visual Studio Linux C++ debugger properties" ms.date: "06/07/2019" ms.assetid: 0c1c0fcc-a49b-451c-a5cb-ce9711fac064 +f1_keywords: ["VC.Project.RaspberryDebugger.LaunchActivity", "VC.Project.RaspberryDebugger.LaunchActivity", "VC.Project.RaspberryDebugger.DebuggerType", "VC.Project.AndroidDebugger.LaunchActivity", "VC.Project.LinuxDebugger.DebugChildProcesses", "VC.Project.RaspberryDebugger.EnablePrettyPrinting", "VC.Project.RaspberryDebugger.LinuxNatvisFile", "VC.Project.RaspberryDebugger.SourceMap"] --- # C++ Debugging Properties (Linux C++) From b07fbcfa67bb81cacfe94bae4558c710cfa16af5 Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Wed, 1 Jul 2026 09:04:25 -0700 Subject: [PATCH 547/619] Add debuginfod and options to launch vs schema --- docs/build/launch-vs-schema-reference-cpp.md | 21 +++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/build/launch-vs-schema-reference-cpp.md b/docs/build/launch-vs-schema-reference-cpp.md index e7d4f24ef18..68068b8dc3e 100644 --- a/docs/build/launch-vs-schema-reference-cpp.md +++ b/docs/build/launch-vs-schema-reference-cpp.md @@ -1,7 +1,7 @@ --- title: "launch.vs.json schema reference (C++)" description: "Describes the schema elements for the `launch.vs.json` file" -ms.date: 07/15/2021 +ms.date: 06/30/2026 helpviewer_keywords: ["launch.vs.json file [C++]"] --- # `launch.vs.json` schema reference (C++) @@ -40,6 +40,7 @@ To create the file, right-click on an executable file in **Solution Explorer** a | `sourceFileMap` | object | Optional source file mappings passed to the debug engine. Format: `{ "\": "\" }` or `{ "\": { "editorPath": "\", "useForBreakpoints": true } }`. Example: `{ "/home/user/foo": "C:\\foo" }` or `{ "/home/user/foo": { "editorPath": "c:\\foo", "useForBreakpoints": true } }`. For more information, see [Source file map options](#source_file_map_options). | | `additionalProperties` | string | One of the sourceFileMapOptions. (See below.) | | `MIMode` | string | Indicates the type of MI-enabled console debugger that the MIDebugEngine will connect to. Allowed values are `"gdb"`, `"lldb"`. | +| `debuginfod` | object | Controls how `gdb` uses [debuginfod](https://sourceware.org/elfutils/Debuginfod.html) to download missing debug symbols and source files from debuginfod servers. Visual Studio applies this option only when `MIMode` is `gdb`. For more information, see [debuginfod options](#debuginfod_options). | | `args` | array | Command-line arguments passed to the program. | | `environment` | array | Environment variables to add to the environment for the program. Example: `[ { "name": "squid", "value": "clam" } ]`. | | `targetArchitecture` | string | The architecture of the debuggee. The architecture is detected automatically unless this parameter is set. Allowed values are `x86`, `arm`, `arm64`, `mips`, `x64`, `amd64`, `x86_64`. | @@ -147,3 +148,21 @@ Use with the `sourceFileMap` property: |--|--|--| | `editorPath` | string | The location of the source code for the editor to locate. | | `useForBreakpoints` | boolean | When setting breakpoints, this source mapping should be used. If **`false`**, only the filename and line number is used for setting breakpoints. If **`true`**, breakpoints will be set with the full path to the file and line number only when this source mapping is used. Otherwise just filename and line number will be used when setting breakpoints. Default is **`true`**. | + +## debuginfod options + +Use with the `debuginfod` property to control how `gdb` downloads debug symbols from debuginfod servers. This option helps on Linux systems that configure debuginfod, such as Ubuntu, Fedora, or Arch Linux. Visual Studio applies this option only when `MIMode` is `gdb`. + +| Property | Type | Description | +|--|--|--| +| `enabled` | boolean | When `true`, `gdb` queries debuginfod servers for missing debug info and source files. The default value is **`false`**, which keeps `gdb` from contacting servers that might be unreachable and cause `gdb` to hang on launch. | +| `timeout` | integer | The timeout in seconds for debuginfod server requests. The default value is **`30`**. Set it to `0` to apply the `gdb` defaults with no override. | + +The following example shows a `debuginfod` override: + +```json +"debuginfod": { + "enabled": true, + "timeout": 10 +} +``` From fbd0d29b812a5cfabbb508a77d663b7238126fe6 Mon Sep 17 00:00:00 2001 From: Aaron R Robinson Date: Tue, 7 Jul 2026 07:15:33 -0700 Subject: [PATCH 548/619] Update documentation on accessing System.String characters (#5940) * Update documentation on accessing System.String characters Added important note about treating interior pointers as const and linked to unsafe code best practices. * Update docs/dotnet/how-to-access-characters-in-a-system-string.md Co-authored-by: Jan Kotas * Apply suggestions from code review Co-authored-by: Aaron R Robinson * Apply suggestions from code review Co-authored-by: Aaron R Robinson --------- Co-authored-by: Jan Kotas --- docs/dotnet/how-to-access-characters-in-a-system-string.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/dotnet/how-to-access-characters-in-a-system-string.md b/docs/dotnet/how-to-access-characters-in-a-system-string.md index c16e9e87202..5f84ef0092e 100644 --- a/docs/dotnet/how-to-access-characters-in-a-system-string.md +++ b/docs/dotnet/how-to-access-characters-in-a-system-string.md @@ -9,6 +9,10 @@ helpviewer_keywords: ["characters [C++], accessing in System::String", "examples You can access characters of a object for high-performance calls to unmanaged functions that take `wchar_t*` strings. The method yields an interior pointer to the first character of the object. This pointer can be manipulated directly or pinned and passed to a function expecting an ordinary **`wchar_t`** string. +> [!IMPORTANT] +> Interior pointers into objects must be treated as `const`. A object is considered immutable and changing its content can destabilize the runtime. +> For more information see [Unsafe code best practices - 17. String mutations](/dotnet/standard/unsafe-code/best-practices). + ## Examples `PtrToStringChars` returns a , which is an interior pointer (also known as a `byref`). As such, it is subject to garbage collection. You don't have to pin this pointer unless you're going to pass it to a native function. From d2841514c9da2faa203e07758d18f2ba6c679c22 Mon Sep 17 00:00:00 2001 From: "learn-build-service-prod[bot]" <113403604+learn-build-service-prod[bot]@users.noreply.github.com> Date: Tue, 7 Jul 2026 10:33:22 -0700 Subject: [PATCH 549/619] Confirm merge from FromPublicMasterBranch to main to sync with https://github.com/MicrosoftDocs/cpp-docs (branch main) (#6756) * Update Vectorized STL algorithm documentation to reflect the current stae (#5937) Since the last update: * ARM64 and ARM64EC vectorization was added. Mention of x64 and x86 is removed, as vectorization is now supported on any target, except deprecated `/clr:pure` and `/clr:safe` modes. * `includes` is now manually vectorized too * `replace_copy` is now manually vectorized too Also moved `find_end` to `search` / `search_n` group, where it fits better. * Update header-files-cpp.md (#5938) Clarify intent of section * Update documentation on accessing System.String characters (#5940) * Update documentation on accessing System.String characters Added important note about treating interior pointers as const and linked to unsafe code best practices. * Update docs/dotnet/how-to-access-characters-in-a-system-string.md Co-authored-by: Jan Kotas * Apply suggestions from code review Co-authored-by: Aaron R Robinson * Apply suggestions from code review Co-authored-by: Aaron R Robinson --------- Co-authored-by: Jan Kotas --------- Co-authored-by: learn-build-service-prod[bot] <113403604+learn-build-service-prod[bot]@users.noreply.github.com> Co-authored-by: Learn Build Service GitHub App Co-authored-by: Alex Guteniev Co-authored-by: veganaiZe <7102064+veganaiZe@users.noreply.github.com> Co-authored-by: Aaron R Robinson Co-authored-by: Jan Kotas --- docs/dotnet/how-to-access-characters-in-a-system-string.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/dotnet/how-to-access-characters-in-a-system-string.md b/docs/dotnet/how-to-access-characters-in-a-system-string.md index c16e9e87202..5f84ef0092e 100644 --- a/docs/dotnet/how-to-access-characters-in-a-system-string.md +++ b/docs/dotnet/how-to-access-characters-in-a-system-string.md @@ -9,6 +9,10 @@ helpviewer_keywords: ["characters [C++], accessing in System::String", "examples You can access characters of a object for high-performance calls to unmanaged functions that take `wchar_t*` strings. The method yields an interior pointer to the first character of the object. This pointer can be manipulated directly or pinned and passed to a function expecting an ordinary **`wchar_t`** string. +> [!IMPORTANT] +> Interior pointers into objects must be treated as `const`. A object is considered immutable and changing its content can destabilize the runtime. +> For more information see [Unsafe code best practices - 17. String mutations](/dotnet/standard/unsafe-code/best-practices). + ## Examples `PtrToStringChars` returns a , which is an interior pointer (also known as a `byref`). As such, it is subject to garbage collection. You don't have to pin this pointer unless you're going to pass it to a native function. From f48d64f0b560d6eda5f5b3451d9e5bb1042c2d86 Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Tue, 7 Jul 2026 19:45:37 -0700 Subject: [PATCH 550/619] docs: fix integrity issues in AddressSanitizer article --- docs/sanitizers/asan.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/sanitizers/asan.md b/docs/sanitizers/asan.md index 1972e7e502e..94fd293f01c 100644 --- a/docs/sanitizers/asan.md +++ b/docs/sanitizers/asan.md @@ -29,14 +29,14 @@ The C and C++ languages are powerful, but can suffer from a class of bugs that a Use AddressSanitizer to reduce your time spent on: - Basic correctness -- Cross platform portability +- Cross-platform portability - Security - Stress testing - Integrating new code AddressSanitizer, originally [introduced by Google](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany), provides runtime bug-finding technologies that use your existing build systems and existing test assets directly. -AddressSanitizer is integrated with the Visual Studio project system, the CMake build system, and the IDE. Projects can enable AddressSanitizer by setting a project property, or by using one extra compiler option: `/fsanitize=address`. The new option is compatible with all levels of optimization and configurations of x86 and x64. However, it isn't compatible with [edit-and-continue](/visualstudio/debugger/edit-and-continue-visual-cpp), [incremental linking](../build/reference/incremental-link-incrementally.md), and [`/RTC`](../build/reference/rtc-run-time-error-checks.md). +AddressSanitizer is integrated with the Visual Studio project system, the CMake build system, and the IDE. Projects can enable AddressSanitizer by setting a project property, or by using one extra compiler option: `/fsanitize=address`. This option is compatible with all levels of optimization and configurations of x86 and x64. However, it isn't compatible with [edit-and-continue](/visualstudio/debugger/edit-and-continue-visual-cpp), [incremental linking](../build/reference/incremental-link-incrementally.md), and [`/RTC`](../build/reference/rtc-run-time-error-checks.md). Starting in Visual Studio 2019 version 16.9, Microsoft's AddressSanitizer technology enables integration with the Visual Studio IDE. The functionality can optionally create a crash dump file when the sanitizer finds a bug at runtime. If you set the `ASAN_SAVE_DUMPS=MyFileName.dmp` environment variable before you run your program, a crash dump file is created with extra metadata for efficient [post-mortem debugging](#crash-dumps) of precisely diagnosed bugs. These dump files make extended use of AddressSanitizer easier for: @@ -63,7 +63,7 @@ Start building your executables with the `/fsanitize=address` compiler option us - Visual Studio project system - Visual Studio CMake integration -Recompile, then run your program normally. This code generation exposes [many types of precisely diagnosed bugs](#error-types). These errors get reported in three ways: in the debugger IDE, on the command line, or stored in a [new type of dump file](#crash-dumps) for precise off-line processing. +Recompile, then run your program normally. This code generation exposes [many types of precisely diagnosed bugs](#error-types). These errors get reported in three ways: in the debugger IDE, on the command line, or stored in a [dump file](#crash-dumps) for precise offline processing. Microsoft recommends you use AddressSanitizer in these three standard workflows: @@ -72,8 +72,8 @@ Microsoft recommends you use AddressSanitizer in these three standard workflows: - Visual Studio - [Project system](#ide-msbuild) - Visual Studio - [CMake](#ide-cmake) -- **CI/CD** - continuous integration / continuous development - - Error reporting - [New AddressSanitizer dump files](#crash-dumps) +- **CI/CD** - continuous integration / continuous delivery + - Error reporting - [AddressSanitizer dump files](#crash-dumps) - **Fuzzing** - building with the [libFuzzer](https://llvm.org/docs/LibFuzzer.html) wrapper - [Azure OneFuzz](https://www.microsoft.com/security/blog/2020/09/15/microsoft-onefuzz-framework-open-source-developer-tool-fix-bugs/) @@ -227,11 +227,11 @@ To enable AddressSanitizer for a [CMake project created to target Windows](../bu ## AddressSanitizer crash dumps -We introduced new functionality in AddressSanitizer for use with cloud and distributed workflows. This functionality allows offline viewing of an AddressSanitizer error in the IDE. The error gets overlaid on top of your source, just as you would experience in a live debug session. +AddressSanitizer includes functionality for use with cloud and distributed workflows. This functionality allows offline viewing of an AddressSanitizer error in the IDE. The error gets overlaid on top of your source, just as you would experience in a live debug session. -These new dump files can lead to efficiencies when you analyze a bug. You don't need to rerun, or find remote data or look for a machine that went off-line. +These dump files can lead to efficiencies when you analyze a bug. You don't need to rerun, or find remote data or look for a machine that went offline. -To produce a new type of dump file that can be viewed in Visual Studio on another machine at a later date: +To produce a dump file that can be viewed in Visual Studio on another machine at a later date: ```cmd set ASAN_SAVE_DUMPS=MyFileName.dmp @@ -239,7 +239,7 @@ set ASAN_SAVE_DUMPS=MyFileName.dmp Starting with Visual Studio 16.9, you can display *a precisely diagnosed error*, stored in your `*.dmp` file, on top of your source code. -[This new crash dump functionality](./asan-offline-crash-dumps.md) enables cloud-based workflows, or distributed testing. It can also be used to file a detailed, actionable bug in any scenario. +[This crash dump functionality](./asan-offline-crash-dumps.md) enables cloud-based workflows, or distributed testing. It can also be used to file a detailed, actionable bug in any scenario. ## Example errors From 0be5ca286987ad4f93514962674ef1c9d52881c4 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 7 Jul 2026 19:57:43 -0700 Subject: [PATCH 551/619] Update instructions for AddressSanitizer usage Clarify instructions for recompiling code and error reporting. --- docs/sanitizers/asan.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/sanitizers/asan.md b/docs/sanitizers/asan.md index 94fd293f01c..7b2a9eebf47 100644 --- a/docs/sanitizers/asan.md +++ b/docs/sanitizers/asan.md @@ -65,6 +65,8 @@ Start building your executables with the `/fsanitize=address` compiler option us Recompile, then run your program normally. This code generation exposes [many types of precisely diagnosed bugs](#error-types). These errors get reported in three ways: in the debugger IDE, on the command line, or stored in a [dump file](#crash-dumps) for precise offline processing. +Recompile your code, and then run your program normally. This code generation exposes [many types of precisely diagnosed bugs](#error-types). Errors are reported in three ways: the debugger IDE, on the command line, or stored in a [dump file](#crash-dumps) that you can review later. + Microsoft recommends you use AddressSanitizer in these three standard workflows: - **Developer inner loop** From d8526b4fa1fa23c08b106f9abe274b20acc9dbc2 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 7 Jul 2026 19:58:07 -0700 Subject: [PATCH 552/619] Apply suggestions from code review Co-authored-by: learn-build-service-prod-09[bot] <274431102+learn-build-service-prod-09[bot]@users.noreply.github.com> --- docs/sanitizers/asan.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/sanitizers/asan.md b/docs/sanitizers/asan.md index 7b2a9eebf47..490195e02e1 100644 --- a/docs/sanitizers/asan.md +++ b/docs/sanitizers/asan.md @@ -36,7 +36,7 @@ Use AddressSanitizer to reduce your time spent on: AddressSanitizer, originally [introduced by Google](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany), provides runtime bug-finding technologies that use your existing build systems and existing test assets directly. -AddressSanitizer is integrated with the Visual Studio project system, the CMake build system, and the IDE. Projects can enable AddressSanitizer by setting a project property, or by using one extra compiler option: `/fsanitize=address`. This option is compatible with all levels of optimization and configurations of x86 and x64. However, it isn't compatible with [edit-and-continue](/visualstudio/debugger/edit-and-continue-visual-cpp), [incremental linking](../build/reference/incremental-link-incrementally.md), and [`/RTC`](../build/reference/rtc-run-time-error-checks.md). +AddressSanitizer is integrated with the Visual Studio project system, the CMake build system, and the IDE. Projects can enable AddressSanitizer by setting a project property or by using one extra compiler option: `/fsanitize=address`. This option is compatible with all levels of optimization and configurations of x86 and x64. However, it isn't compatible with [edit-and-continue](/visualstudio/debugger/edit-and-continue-visual-cpp), [incremental linking](../build/reference/incremental-link-incrementally.md), and [`/RTC`](../build/reference/rtc-run-time-error-checks.md). Starting in Visual Studio 2019 version 16.9, Microsoft's AddressSanitizer technology enables integration with the Visual Studio IDE. The functionality can optionally create a crash dump file when the sanitizer finds a bug at runtime. If you set the `ASAN_SAVE_DUMPS=MyFileName.dmp` environment variable before you run your program, a crash dump file is created with extra metadata for efficient [post-mortem debugging](#crash-dumps) of precisely diagnosed bugs. These dump files make extended use of AddressSanitizer easier for: @@ -233,7 +233,7 @@ AddressSanitizer includes functionality for use with cloud and distributed workf These dump files can lead to efficiencies when you analyze a bug. You don't need to rerun, or find remote data or look for a machine that went offline. -To produce a dump file that can be viewed in Visual Studio on another machine at a later date: +To produce a dump file that you can view in Visual Studio on another machine at a later date: ```cmd set ASAN_SAVE_DUMPS=MyFileName.dmp @@ -241,7 +241,7 @@ set ASAN_SAVE_DUMPS=MyFileName.dmp Starting with Visual Studio 16.9, you can display *a precisely diagnosed error*, stored in your `*.dmp` file, on top of your source code. -[This crash dump functionality](./asan-offline-crash-dumps.md) enables cloud-based workflows, or distributed testing. It can also be used to file a detailed, actionable bug in any scenario. +[This crash dump functionality](./asan-offline-crash-dumps.md) enables cloud-based workflows or distributed testing. It can also be used to file a detailed, actionable bug in any scenario. ## Example errors From ba4628b3bc1cc8dea7f257ff08e16632b3af101f Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Wed, 8 Jul 2026 10:40:07 -0700 Subject: [PATCH 553/619] Addressed concerns and feedback. Replace "helps" with more concrete explanation. Reword the "unreachable servers" part Apply suggested lines --- docs/build/launch-vs-schema-reference-cpp.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/launch-vs-schema-reference-cpp.md b/docs/build/launch-vs-schema-reference-cpp.md index 68068b8dc3e..6313e0435a3 100644 --- a/docs/build/launch-vs-schema-reference-cpp.md +++ b/docs/build/launch-vs-schema-reference-cpp.md @@ -151,14 +151,14 @@ Use with the `sourceFileMap` property: ## debuginfod options -Use with the `debuginfod` property to control how `gdb` downloads debug symbols from debuginfod servers. This option helps on Linux systems that configure debuginfod, such as Ubuntu, Fedora, or Arch Linux. Visual Studio applies this option only when `MIMode` is `gdb`. +Use with the `debuginfod` property to control how `gdb` downloads debug symbols from debuginfod servers. On Linux systems that configure debuginfod, such as Ubuntu, Fedora, or Arch Linux, this option lets `gdb` automatically retrieve debug symbols and source files from the distribution's debuginfod servers so you don't have to install debug symbol packages manually. Visual Studio applies this option only when `MIMode` is `gdb`. | Property | Type | Description | |--|--|--| -| `enabled` | boolean | When `true`, `gdb` queries debuginfod servers for missing debug info and source files. The default value is **`false`**, which keeps `gdb` from contacting servers that might be unreachable and cause `gdb` to hang on launch. | -| `timeout` | integer | The timeout in seconds for debuginfod server requests. The default value is **`30`**. Set it to `0` to apply the `gdb` defaults with no override. | +| `enabled` | boolean | When `true`, `gdb` queries debuginfod servers for missing debug info and source files. The default value is **`false`**, which avoids delays caused by network requests. | +| `timeout` | integer | The timeout in seconds for debuginfod server requests. The default value is **`30`**. Set it to `0` to use `gdb`'s default timeout. | -The following example shows a `debuginfod` override: +The following example enables debuginfod server support and sets the timeout to 10 seconds: ```json "debuginfod": { From eeda16f630ed3307cb0ab856c8b06bd887562413 Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Wed, 8 Jul 2026 11:08:24 -0700 Subject: [PATCH 554/619] clarify link --- docs/dotnet/how-to-access-characters-in-a-system-string.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dotnet/how-to-access-characters-in-a-system-string.md b/docs/dotnet/how-to-access-characters-in-a-system-string.md index 5f84ef0092e..c4f7d6320a5 100644 --- a/docs/dotnet/how-to-access-characters-in-a-system-string.md +++ b/docs/dotnet/how-to-access-characters-in-a-system-string.md @@ -11,7 +11,7 @@ You can access characters of a object for high-performance > [!IMPORTANT] > Interior pointers into objects must be treated as `const`. A object is considered immutable and changing its content can destabilize the runtime. -> For more information see [Unsafe code best practices - 17. String mutations](/dotnet/standard/unsafe-code/best-practices). +> For more information see [Unsafe code best practices - 17. String mutations](/dotnet/standard/unsafe-code/best-practices#17-string-mutations). ## Examples From 7deebfecc0a66cb2e19e8a5ed46043348e347096 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 8 Jul 2026 11:33:22 -0700 Subject: [PATCH 555/619] Apply suggestions from code review Co-authored-by: learn-build-service-prod-01[bot] <274427437+learn-build-service-prod-01[bot]@users.noreply.github.com> --- docs/dotnet/how-to-access-characters-in-a-system-string.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/dotnet/how-to-access-characters-in-a-system-string.md b/docs/dotnet/how-to-access-characters-in-a-system-string.md index c4f7d6320a5..9191503a10d 100644 --- a/docs/dotnet/how-to-access-characters-in-a-system-string.md +++ b/docs/dotnet/how-to-access-characters-in-a-system-string.md @@ -11,7 +11,7 @@ You can access characters of a object for high-performance > [!IMPORTANT] > Interior pointers into objects must be treated as `const`. A object is considered immutable and changing its content can destabilize the runtime. -> For more information see [Unsafe code best practices - 17. String mutations](/dotnet/standard/unsafe-code/best-practices#17-string-mutations). +> For more information, see [Unsafe code best practices - 17. String mutations](/dotnet/standard/unsafe-code/best-practices#17-string-mutations). ## Examples From be4038ff8eb0f2ebf0d192d4d66bc5b581983262 Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Wed, 8 Jul 2026 15:40:15 -0700 Subject: [PATCH 556/619] docs: remove duplicate paragraph and fix comma in asan article --- docs/sanitizers/asan.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/sanitizers/asan.md b/docs/sanitizers/asan.md index 490195e02e1..442b930cb4e 100644 --- a/docs/sanitizers/asan.md +++ b/docs/sanitizers/asan.md @@ -63,9 +63,7 @@ Start building your executables with the `/fsanitize=address` compiler option us - Visual Studio project system - Visual Studio CMake integration -Recompile, then run your program normally. This code generation exposes [many types of precisely diagnosed bugs](#error-types). These errors get reported in three ways: in the debugger IDE, on the command line, or stored in a [dump file](#crash-dumps) for precise offline processing. - -Recompile your code, and then run your program normally. This code generation exposes [many types of precisely diagnosed bugs](#error-types). Errors are reported in three ways: the debugger IDE, on the command line, or stored in a [dump file](#crash-dumps) that you can review later. +Recompile, then run your program normally. This code generation exposes [many types of precisely diagnosed bugs](#error-types). Errors are reported in three ways: the debugger IDE, on the command line, or stored in a [dump file](#crash-dumps) that you can review later. Microsoft recommends you use AddressSanitizer in these three standard workflows: @@ -231,7 +229,7 @@ To enable AddressSanitizer for a [CMake project created to target Windows](../bu AddressSanitizer includes functionality for use with cloud and distributed workflows. This functionality allows offline viewing of an AddressSanitizer error in the IDE. The error gets overlaid on top of your source, just as you would experience in a live debug session. -These dump files can lead to efficiencies when you analyze a bug. You don't need to rerun, or find remote data or look for a machine that went offline. +These dump files can lead to efficiencies when you analyze a bug. You don't need to rerun, find remote data, or look for a machine that went offline. To produce a dump file that you can view in Visual Studio on another machine at a later date: From 92b36c2b2f89107c8837ce7e84ee7be213da87e7 Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Wed, 8 Jul 2026 15:48:05 -0700 Subject: [PATCH 557/619] docs: split Overview into focused subsections for retrievability --- docs/sanitizers/asan.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/sanitizers/asan.md b/docs/sanitizers/asan.md index 442b930cb4e..5137b8beb5f 100644 --- a/docs/sanitizers/asan.md +++ b/docs/sanitizers/asan.md @@ -26,6 +26,8 @@ The C and C++ languages are powerful, but can suffer from a class of bugs that a - [Stack use after `return`](error-stack-use-after-return.md) and [use after scope](error-stack-use-after-scope.md) - [Memory use after it's poisoned](error-use-after-poison.md) +### Why use AddressSanitizer + Use AddressSanitizer to reduce your time spent on: - Basic correctness @@ -36,8 +38,12 @@ Use AddressSanitizer to reduce your time spent on: AddressSanitizer, originally [introduced by Google](https://www.usenix.org/conference/atc12/technical-sessions/presentation/serebryany), provides runtime bug-finding technologies that use your existing build systems and existing test assets directly. +### Build integration and compatibility + AddressSanitizer is integrated with the Visual Studio project system, the CMake build system, and the IDE. Projects can enable AddressSanitizer by setting a project property or by using one extra compiler option: `/fsanitize=address`. This option is compatible with all levels of optimization and configurations of x86 and x64. However, it isn't compatible with [edit-and-continue](/visualstudio/debugger/edit-and-continue-visual-cpp), [incremental linking](../build/reference/incremental-link-incrementally.md), and [`/RTC`](../build/reference/rtc-run-time-error-checks.md). +### Crash dump support + Starting in Visual Studio 2019 version 16.9, Microsoft's AddressSanitizer technology enables integration with the Visual Studio IDE. The functionality can optionally create a crash dump file when the sanitizer finds a bug at runtime. If you set the `ASAN_SAVE_DUMPS=MyFileName.dmp` environment variable before you run your program, a crash dump file is created with extra metadata for efficient [post-mortem debugging](#crash-dumps) of precisely diagnosed bugs. These dump files make extended use of AddressSanitizer easier for: - Local machine testing @@ -79,7 +85,7 @@ Microsoft recommends you use AddressSanitizer in these three standard workflows: - [Azure OneFuzz](https://www.microsoft.com/security/blog/2020/09/15/microsoft-onefuzz-framework-open-source-developer-tool-fix-bugs/) - Local Machine -This article covers the information you require to enable the three workflows listed previously. The information is specific to the *platform-dependent* Windows 10 (and later) implementation of AddressSanitizer. This documentation supplements the excellent documentation from [Google, Apple, and GCC](#external-docs) already published. +This article covers the information you require to enable the three workflows listed previously. The information is specific to the *platform-dependent* Windows 10 (and later) implementation of AddressSanitizer. This documentation supplements the documentation from [Google, Apple, and GCC](#external-docs) already published. > [!NOTE] > Support is limited to x86 and x64 on Windows 10 and later. [Send us feedback](https://aka.ms/vsfeedback/browsecpp) on what you'd like to see in future releases. Your feedback helps us prioritize other sanitizers for the future, such as `/fsanitize=thread`, `/fsanitize=leak`, `/fsanitize=memory`, `/fsanitize=undefined`, or `/fsanitize=hwaddress`. You can [report bugs here](https://aka.ms/feedback/report?space=62) if you run into issues. @@ -283,9 +289,9 @@ Features that could lead to false positives in Visual Studio 2019 16.9 weren't i For more information, see [Building for AddressSanitizer with MSVC](./asan-building.md). -## Existing industry documentation +## Industry documentation -Extensive documentation already exists for these language and platform-dependent implementations of the AddressSanitizer technology. +Extensive documentation exists for these language and platform-dependent implementations of the AddressSanitizer technology. - [Google](https://github.com/google/sanitizers/wiki/AddressSanitizer) - [Apple](https://developer.apple.com/documentation/xcode/diagnosing_memory_thread_and_crash_issues_early) From a2d34c11df3a2e4b8df2d2486bfa41223d984487 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 8 Jul 2026 16:06:01 -0700 Subject: [PATCH 558/619] Apply suggestions from code review Co-authored-by: learn-build-service-prod-05[bot] <274429479+learn-build-service-prod-05[bot]@users.noreply.github.com> Co-authored-by: learn-build-service-prod-09[bot] <274431102+learn-build-service-prod-09[bot]@users.noreply.github.com> --- docs/sanitizers/asan.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sanitizers/asan.md b/docs/sanitizers/asan.md index 5137b8beb5f..d82e1396f5a 100644 --- a/docs/sanitizers/asan.md +++ b/docs/sanitizers/asan.md @@ -69,7 +69,7 @@ Start building your executables with the `/fsanitize=address` compiler option us - Visual Studio project system - Visual Studio CMake integration -Recompile, then run your program normally. This code generation exposes [many types of precisely diagnosed bugs](#error-types). Errors are reported in three ways: the debugger IDE, on the command line, or stored in a [dump file](#crash-dumps) that you can review later. +Recompile your code, and then run your program normally. This code generation exposes [many types of precisely diagnosed bugs](#error-types). The debugger IDE, the command line, or a [dump file](#crash-dumps) that you can review later reports errors. Microsoft recommends you use AddressSanitizer in these three standard workflows: @@ -78,7 +78,7 @@ Microsoft recommends you use AddressSanitizer in these three standard workflows: - Visual Studio - [Project system](#ide-msbuild) - Visual Studio - [CMake](#ide-cmake) -- **CI/CD** - continuous integration / continuous delivery +- **CI/CD** - continuous integration and continuous delivery - Error reporting - [AddressSanitizer dump files](#crash-dumps) - **Fuzzing** - building with the [libFuzzer](https://llvm.org/docs/LibFuzzer.html) wrapper From 8e464fae7371df8ee44a8e6e310c05e571255905 Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Wed, 8 Jul 2026 16:12:10 -0700 Subject: [PATCH 559/619] docs: tighten wording in asan article --- docs/sanitizers/asan.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sanitizers/asan.md b/docs/sanitizers/asan.md index d82e1396f5a..ba00ca39d31 100644 --- a/docs/sanitizers/asan.md +++ b/docs/sanitizers/asan.md @@ -69,7 +69,7 @@ Start building your executables with the `/fsanitize=address` compiler option us - Visual Studio project system - Visual Studio CMake integration -Recompile your code, and then run your program normally. This code generation exposes [many types of precisely diagnosed bugs](#error-types). The debugger IDE, the command line, or a [dump file](#crash-dumps) that you can review later reports errors. +Recompile your code, and then run your program normally to expose [many types of precisely diagnosed bugs](#error-types). You can review the issues in the debugger IDE, the command line, or the [dump file](#crash-dumps). Microsoft recommends you use AddressSanitizer in these three standard workflows: @@ -85,7 +85,7 @@ Microsoft recommends you use AddressSanitizer in these three standard workflows: - [Azure OneFuzz](https://www.microsoft.com/security/blog/2020/09/15/microsoft-onefuzz-framework-open-source-developer-tool-fix-bugs/) - Local Machine -This article covers the information you require to enable the three workflows listed previously. The information is specific to the *platform-dependent* Windows 10 (and later) implementation of AddressSanitizer. This documentation supplements the documentation from [Google, Apple, and GCC](#external-docs) already published. +This article covers the information you require to enable the three workflows listed previously. The information is specific to the *platform-dependent* Windows 10 (and later) implementation of AddressSanitizer. This documentation supplements the documentation from [Google, Apple, and GCC](#external-docs). > [!NOTE] > Support is limited to x86 and x64 on Windows 10 and later. [Send us feedback](https://aka.ms/vsfeedback/browsecpp) on what you'd like to see in future releases. Your feedback helps us prioritize other sanitizers for the future, such as `/fsanitize=thread`, `/fsanitize=leak`, `/fsanitize=memory`, `/fsanitize=undefined`, or `/fsanitize=hwaddress`. You can [report bugs here](https://aka.ms/feedback/report?space=62) if you run into issues. From 578411129da32bec59783974002155e7226bdcad Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Thu, 9 Jul 2026 09:56:42 -0700 Subject: [PATCH 560/619] Update string-and-character-literals-cpp.md (#6755) * Learn Editor: Update string-and-character-literals-cpp.md * update Metadata * Apply suggestions from code review Co-authored-by: learn-build-service-prod-10[bot] <274431553+learn-build-service-prod-10[bot]@users.noreply.github.com> Co-authored-by: learn-build-service-prod-09[bot] <274431102+learn-build-service-prod-09[bot]@users.noreply.github.com> * Revise C++ string and character literals documentation Updated references to character sets and string types in the documentation for clarity and accuracy. * Update docs/cpp/string-and-character-literals-cpp.md Co-authored-by: learn-build-service-prod-02[bot] <274428175+learn-build-service-prod-02[bot]@users.noreply.github.com> * Revise string and character literals documentation Resolving PR feedback. Updated various sections for clarity and accuracy regarding string and character literals in C++. Adjusted explanations of character literal encoding, escape sequences, and string literal concatenation rules. * Apply suggestions from code review Co-authored-by: learn-build-service-prod-01[bot] <274427437+learn-build-service-prod-01[bot]@users.noreply.github.com> * Fix link to execution charset documentation * Update encoding details for character literals Clarified the encoding of character literals in C++11 and later, including details on universal characters and their representation in different string literal types. --------- Co-authored-by: learn-build-service-prod-10[bot] <274431553+learn-build-service-prod-10[bot]@users.noreply.github.com> Co-authored-by: learn-build-service-prod-09[bot] <274431102+learn-build-service-prod-09[bot]@users.noreply.github.com> Co-authored-by: learn-build-service-prod-02[bot] <274428175+learn-build-service-prod-02[bot]@users.noreply.github.com> Co-authored-by: learn-build-service-prod-01[bot] <274427437+learn-build-service-prod-01[bot]@users.noreply.github.com> --- docs/cpp/string-and-character-literals-cpp.md | 262 ++++++++++-------- 1 file changed, 151 insertions(+), 111 deletions(-) diff --git a/docs/cpp/string-and-character-literals-cpp.md b/docs/cpp/string-and-character-literals-cpp.md index 643fd31daea..9917d28c495 100644 --- a/docs/cpp/string-and-character-literals-cpp.md +++ b/docs/cpp/string-and-character-literals-cpp.md @@ -1,10 +1,9 @@ --- title: "String and character literals (C++)" description: "How to declare and define string and character literals in C++." -ms.date: 08/27/2021 +ms.date: 07/01/2026 f1_keywords: ["R", "L", "u", "u8", "LR", "uR", "u8R"] helpviewer_keywords: ["literal strings [C++]", "string literals [C++]"] -ms.assetid: 61de8f6f-2714-4e7b-86b6-a3f885d3b9df --- # String and character literals (C++) @@ -59,64 +58,57 @@ int main() } ``` -String literals can have no prefix, or `u8`, `L`, `u`, and `U` prefixes to denote narrow character (single-byte or multi-byte), UTF-8, wide character (UCS-2 or UTF-16), UTF-16 and UTF-32 encodings, respectively. A raw string literal can have `R`, `u8R`, `LR`, `uR`, and `UR` prefixes for the raw version equivalents of these encodings. To create temporary or static `std::string` values, you can use string literals or raw string literals with an `s` suffix. For more information, see the [String literals](#string-literals) section below. For more information on the basic source character set, universal character names, and using characters from extended codepages in your source code, see [Character sets](../cpp/character-sets.md). +String literals can have no prefix, or `u8`, `L`, `u`, and `U` prefixes to denote narrow character (single-byte or multibyte), UTF-8, wide character (UCS-2 or UTF-16), UTF-16, and UTF-32 encodings, respectively. A raw string literal can have `R`, `u8R`, `LR`, `uR`, and `UR` prefixes for the raw version equivalents of these encodings. To create temporary or static `std::string` values, you can use string literals or raw string literals with an `s` suffix. For more information on the basic source character set, universal character names, and using characters from extended codepages in your source code, see [Character sets](../cpp/character-sets.md). ## Character literals A *character literal* is composed of a constant character. It's represented by the character surrounded by single quotation marks. There are five kinds of character literals: - Ordinary character literals of type **`char`**, for example `'a'` - - UTF-8 character literals of type **`char`** (**`char8_t`** in C++20), for example `u8'a'` - - Wide-character literals of type **`wchar_t`**, for example `L'a'` - - UTF-16 character literals of type **`char16_t`**, for example `u'a'` - - UTF-32 character literals of type **`char32_t`**, for example `U'a'` The character used for a character literal may be any character, except for the reserved characters backslash (**`\`**), single quotation mark (**`'`**), or newline. Reserved characters can be specified by using an escape sequence. Characters may be specified by using universal character names, as long as the type is large enough to hold the character. ### Encoding -Character literals are encoded differently based their prefix. - -- A character literal without a prefix is an ordinary character literal. The value of an ordinary character literal containing a single character, escape sequence, or universal character name that can be represented in the execution character set has a value equal to the numerical value of its encoding in the execution character set. An ordinary character literal that contains more than one character, escape sequence, or universal character name is a *multicharacter literal*. A multicharacter literal or an ordinary character literal that can't be represented in the execution character set has type **`int`**, and its value is implementation-defined. For MSVC, see the **Microsoft-specific** section below. - -- A character literal that begins with the `L` prefix is a wide-character literal. The value of a wide-character literal containing a single character, escape sequence, or universal character name has a value equal to the numerical value of its encoding in the execution wide-character set unless the character literal has no representation in the execution wide-character set, in which case the value is implementation-defined. The value of a wide-character literal containing multiple characters, escape sequences, or universal character names is implementation-defined. For MSVC, see the **Microsoft-specific** section below. +Character literals are encoded differently based on their prefix. +- A character literal without a prefix is an ordinary character literal. The value of an ordinary character literal containing a single character, escape sequence, or universal character name that the execution character set can represent has a value equal to the numerical value of its encoding in the execution character set. An ordinary character literal that contains more than one character, escape sequence, or universal character name is a *multicharacter literal*. If the character can't be represented in the execution character set, it's a *non-encodable character literal*. A multicharacter literal and a non-encodable character literal have type **`int`**, and their value is implementation-defined. For MSVC, see the **Microsoft-specific** section below. The execution character set is defined at compile time and defaults to the codepage of the host machine. You can set the execution charset by using the [`/execution-charset`](../build/reference/execution-charset-set-execution-character-set.md) switch. +- A character literal that begins with the `L` prefix is a wide-character literal. The value of a wide-character literal containing a single character, escape sequence, or universal character name has a value equal to the numerical value of its encoding in what the standard calls the *execution wide-character set*, which on Windows is defined as UTF-16. If the character has no representation in the execution wide-character set, it's an error. - A character literal that begins with the `u8` prefix is a UTF-8 character literal. The value of a UTF-8 character literal containing a single character, escape sequence, or universal character name has a value equal to its ISO 10646 code point value if it can be represented by a single UTF-8 code unit (corresponding to the C0 Controls and Basic Latin Unicode block). If the value can't be represented by a single UTF-8 code unit, the program is ill-formed. A UTF-8 character literal containing more than one character, escape sequence, or universal character name is ill-formed. - - A character literal that begins with the `u` prefix is a UTF-16 character literal. The value of a UTF-16 character literal containing a single character, escape sequence, or universal character name has a value equal to its ISO 10646 code point value if it can be represented by a single UTF-16 code unit (corresponding to the basic multi-lingual plane). If the value can't be represented by a single UTF-16 code unit, the program is ill-formed. A UTF-16 character literal containing more than one character, escape sequence, or universal character name is ill-formed. - - A character literal that begins with the `U` prefix is a UTF-32 character literal. The value of a UTF-32 character literal containing a single character, escape sequence, or universal character name has a value equal to its ISO 10646 code point value. A UTF-32 character literal containing more than one character, escape sequence, or universal character name is ill-formed. -### Escape sequences - -There are three kinds of escape sequences: simple, octal, and hexadecimal. Escape sequences may be any of the following values: - -|Value|Escape sequence| -|-----------|---------------------| -| newline | \\n | -| backslash | \\\\ | -| horizontal tab | \\t | -| question mark | ? or \\? | -| vertical tab | \\v | -| single quote | \\' | -| backspace | \\b | -| double quote | \\" | -| carriage return | \\r | -| the null character | \\0 | -| form feed | \\f | -| octal | \\ooo | -| alert (bell) | \\a | -| hexadecimal | \\xhhh | - -An octal escape sequence is a backslash followed by a sequence of one to three octal digits. An octal escape sequence terminates at the first character that's not an octal digit, if encountered sooner than the third digit. The highest possible octal value is `\377`. - -A hexadecimal escape sequence is a backslash followed by the character `x`, followed by a sequence of one or more hexadecimal digits. Leading zeroes are ignored. In an ordinary or u8-prefixed character literal, the highest hexadecimal value is 0xFF. In an L-prefixed or u-prefixed wide character literal, the highest hexadecimal value is 0xFFFF. In a U-prefixed wide character literal, the highest hexadecimal value is 0xFFFFFFFF. - -This sample code shows some examples of escaped characters using ordinary character literals. The same escape sequence syntax is valid for the other character literal types. +### Escape sequences + +There are three kinds of escape sequences: simple, numeric, and universal. Escape sequences can be any of the following values: + +| Value | Escape sequence | +| --- | --- | +| newline | `\n` | +| backslash | `\\` | +| horizontal tab | `\t` | +| question mark | `?` or `\?` | +| vertical tab | `\v` | +| single quote | `\'` | +| backspace | `\b` | +| double quote | `\"` | +| carriage return | `\r` | +| form feed | `\f` | +| alert (bell) | `\a` | +| the null character | `\0` | +| octal | `\ooo` | +| delimited octal (C++23) | `\o{OOO}` | +| hexadecimal | `\xhhh` | +| delimited hexadecimal (C++23) | `\x{hhhh}` | +| universal character | `\uHHHH` or `\UHHHHHHHH` | +| delimited universal (C++23) | `\u{HHHH}` | +| named universal (C++23) | `\N{UNIVERSAL CHARACTER NAME}` | + +This sample code shows examples of simple escape sequences using ordinary character literals. The same escape sequence syntax is valid for the other character literal types. ```cpp #include @@ -141,129 +133,164 @@ ending Tab character: ending Backspace character:ending Backslash character: \ending -Null character: ending +Null character: ending */ ``` The backslash character (**`\`**) is a line-continuation character when it's placed at the end of a line. If you want a backslash character to appear as a character literal, you must type two backslashes in a row (**`\\`**). For more information about the line continuation character, see [Phases of Translation](../preprocessor/phases-of-translation.md). -#### Microsoft-specific +Numeric escape sequences include octal and hexadecimal escape sequences. These sequences result in a numeric value when the compiler evaluates them. + +An octal escape sequence is a backslash followed by a sequence of one to three octal digits. An octal escape sequence terminates at the first character that's not an octal digit, if encountered sooner than the third digit. The highest possible octal value is `\377`. C++23 added delimited octal sequences which consist of a backslash followed by the characters `o{`, followed by a sequence of octal characters, and then a matching `}`. The highest possible value in a delimited octal sequence is determined by the type of the character literal it is part of. -To create a value from a narrow multicharacter literal, the compiler converts the character or character sequence between single quotes into 8-bit values within a 32-bit integer. Multiple characters in the literal fill corresponding bytes as needed from high-order to low-order. The compiler then converts the integer to the destination type following the usual rules. For example, to create a **`char`** value, the compiler takes the low-order byte. To create a **`wchar_t`** or **`char16_t`** value, the compiler takes the low-order word. The compiler warns that the result is truncated if any bits are set above the assigned byte or word. +A common mistake when using octal escape sequences is expecting the sequence to allow more than three octal digits, or to terminate the sequence early with a non-octal digit. When you make this mistake in what would otherwise be an ordinary character literal, it turns the literal into a multicharacter literal. ```cpp -char c0 = 'abcd'; // C4305, C4309, truncates to 'd' -wchar_t w0 = 'abcd'; // C4305, C4309, truncates to '\x6364' -int i0 = 'abcd'; // 0x61626364 +char c1 = '\100'; // Okay, '@' +char c2 = '\1000'; // multicharacter literal, truncates to '0' +char c3 = '\009'; // multicharacter literal, truncates to '9' ``` - -An octal escape sequence that appears to contain more than three digits is treated as a 3-digit octal sequence, followed by the subsequent digits as characters in a multicharacter literal, which can give surprising results. For example: - +You can avoid this mistake by using delimited octal sequences. ```cpp -char c1 = '\100'; // '@' -char c2 = '\1000'; // C4305, C4309, truncates to '0' +char c1 = '\o{100}'; // Okay, '@' +char c2 = '\o{1000}'; // error, value is out of range for char +char c3 = '\o{009}'; // error, non-octal value inside octal sequence. ``` -Escape sequences that appear to contain non-octal characters are evaluated as an octal sequence up to the last octal character, followed by the remaining characters as the subsequent characters in a multicharacter literal. Warning C4125 is generated if the first non-octal character is a decimal digit. For example: +A hexadecimal escape sequence is a backslash followed by the character `x`, followed by a sequence of one or more hexadecimal digits. Leading zeroes are ignored. C++23 added delimited hexadecimal sequences, which consist of a backslash, followed by the characters `x{`, followed by a sequence of hexadecimal characters, and then a matching `}`. In an ordinary or `u8`-prefixed character literal, the highest hexadecimal value is `0xFF`. In an `L`-prefixed or `u`-prefixed character literal, the highest hexadecimal value is `0xFFFF`. In a `U`-prefixed character literal, the highest hexadecimal value is `0xFFFFFFFF`. + +### Universal character names + +In character literals and native (non-raw) string literals, use a universal character name to represent any character. Universal character names use the prefix `\U` followed by an eight-digit Unicode code point, or the prefix `\u` followed by a four-digit Unicode code point. You must include all eight or four digits to create a well-formed universal character name. +C++23 introduced delimited universal characters and named universal characters. A delimited universal character consists of the prefix `\u{`, followed by a series of hexadecimal characters, followed by `}`. A named universal character consists of the prefix `\N{`, followed by a universal character name, followed by `}`. The case-sensitive universal character name must match a name from the Unicode character database from the Unicode Consortium. The compiler uses the version of Unicode installed on your system to determine the value of the character. ```cpp -char c3 = '\009'; // '9' -char c4 = '\089'; // C4305, C4309, truncates to '9' -char c5 = '\qrs'; // C4129, C4305, C4309, truncates to 's' +char u1 = 'A'; // 'A' +char u2 = '\101'; // octal, 'A' +char u3 = '\x41'; // hexadecimal, 'A' +char u4 = '\u0041'; // UCN 'A' +char u5 = '\U00000041'; // UCN 'A' +char u6 = '\u{41}'; // UCN 'A' +char u7 = '\N{LATIN CAPITAL LETTER A}'; // UCN 'A' ``` -An octal escape sequence that has a higher value than `\377` causes error C2022: '*value-in-decimal*': too big for character. +### Multicharacter and non-encodable character literals + +A *multicharacter literal* is an ordinary character literal with multiple characters and no prefix. `'AB'` is an example of a multicharacter literal. + +A *non-encodable character literal* is a character literal with no prefix that contains a character that isn't encodable as a single `char` value. An example is the Unicode character U+1F609 `'😉'`, because it takes four bytes to represent in UTF-8 so it can't be encoded in a single 8-bit `char` value. + +The compiler treats multicharacter and non-encodable character literals similarly. Their type is `int` and their value at runtime is implementation defined. See the Microsoft-specific section below for details. You can avoid implementation defined behavior by using a character prefix such as `U'😉'`. + +#### Microsoft-specific -An escape sequence that appears to have hexadecimal and non-hexadecimal characters is evaluated as a multicharacter literal that contains a hexadecimal escape sequence up to the last hexadecimal character, followed by the non-hexadecimal characters. A hexadecimal escape sequence that contains no hexadecimal digits causes compiler error C2153: "hex literals must have at least one hex digit". +The maximum sequence of characters in a multicharacter literal is four because the value maps to a 32-bit integer value. When there are fewer than four characters, the compiler pads the high-order bits with 0. ```cpp -char c6 = '\x0050'; // 'P' -char c7 = '\x0pqr'; // C4305, C4309, truncates to 'r' +int c1 = 'a'; // 0x00000061 (not a multicharacter literal) +int c2 = 'ab'; // 0x00006162 +int c3 = 'abc'; // 0x00616263 +int c4 = 'abcd';// 0x61626364 ``` -If a wide character literal prefixed with `L` contains a multicharacter sequence, the value is taken from the first character, and the compiler raises warning C4066. Subsequent characters are ignored, unlike the behavior of the equivalent ordinary multicharacter literal. +The mapping of ordinary characters into an integer guarantees the value of the resulting integer is independent of the endianness of the target machine. As a result, on little endian machines, the order of the individual character values in memory is flipped and doesn't match the equivalent string value. ```cpp -wchar_t w1 = L'\100'; // L'@' -wchar_t w2 = L'\1000'; // C4066 L'@', 0 ignored -wchar_t w3 = L'\009'; // C4066 L'\0', 9 ignored -wchar_t w4 = L'\089'; // C4066 L'\0', 89 ignored -wchar_t w5 = L'\qrs'; // C4129, C4066 L'q' escape, rs ignored -wchar_t w6 = L'\x0050'; // L'P' -wchar_t w7 = L'\x0pqr'; // C4066 L'\0', pqr ignored +int ch = 'abcd'; // 'd' is first in memory on little endian machines +const char* str = "abcd"; +// compare the first byte of str with the last byte of ch +if(str[0] == reinterpret_cast(&ch)[3]) +{ + printf("little-endian\n"); +} ``` +Integer escape sequences used in multicharacter literals must fit into an 8-bit `char` value. Unlike ordinary character sequences, the escaped values inside a multicharacter literal are encoded according to the endianness of the target machine. This means the resulting value of the sequence is flipped in little endian machines. The compiler pads the high-order bits with 0. +```cpp +int ch1 = '\x61'; // 0x00000061 (not a multicharacter literal) +int ch2 = '\x61\x62'; // 0x00006261 +int ch3 = '\x61\x62\x63'; // 0x00636261 +int ch4 = '\x61\x62\x63\x64';// 0x64636261 +``` +Don't mix ordinary and integer escape sequences in a single multicharacter literal. Their encoding rules are different based on the endianness of the machine so the result is not defined. -The **Microsoft-specific** section ends here. +The range of values that qualify as a non-encodable character literal depend on the current execution character set. The Japanese half width kanji `ツ` (U+FF82) is a non-encodable character under `/execution-charset:utf-8` because it takes three bytes to represent. The same character is considered an ordinary character literal under `/execution-charset:shift_jis` because it can be represented in a single byte. -### Universal character names +The compiler computes the integer value by first converting the character into the multibyte execution character set representation, then maps the sequence of bytes to the integer. The compiler pads the high-order bytes with 0. -In character literals and native (non-raw) string literals, any character may be represented by a universal character name. Universal character names are formed by a prefix `\U` followed by an eight-digit Unicode code point, or by a prefix `\u` followed by a four-digit Unicode code point. All eight or four digits, respectively, must be present to make a well-formed universal character name. +Use the Japanese full width kanji `ツ` (U+30C4) as an example. `ツ` is represented in UTF-8 as the three-byte sequence `0xe3 0x83 0x84` and in shift_jis as the two-byte sequence `0x83 0x63`. ```cpp -char u1 = 'A'; // 'A' -char u2 = '\101'; // octal, 'A' -char u3 = '\x41'; // hexadecimal, 'A' -char u4 = '\u0041'; // \u UCN 'A' -char u5 = '\U00000041'; // \U UCN 'A' +int tsu = 'ツ'; // non-encodable character literal +if (tsu == 0xe38384) +{ + printf("detected /execution-charset:utf-8"); +} +else if (tsu == 0x8363) +{ + printf("detected /execution-charset:shift_jis"); +} ``` +To avoid implementation defined behavior and get the Unicode value of a character that isn't affected by the execution character set, use a character prefix such as `U'ツ'`. -#### Surrogate Pairs - -Universal character names can't encode values in the surrogate code point range D800-DFFF. For Unicode surrogate pairs, specify the universal character name by using `\UNNNNNNNN`, where NNNNNNNN is the eight-digit code point for the character. The compiler generates a surrogate pair if necessary. - -In C++03, the language only allowed a subset of characters to be represented by their universal character names, and allowed some universal character names that didn't actually represent any valid Unicode characters. This mistake was fixed in the C++11 standard. In C++11, both character and string literals and identifiers can use universal character names. For more information on universal character names, see [Character Sets](../cpp/character-sets.md). For more information about Unicode, see [Unicode](/windows/win32/intl/unicode). For more information about surrogate pairs, see [Surrogate Pairs and Supplementary Characters](/windows/win32/Intl/surrogates-and-supplementary-characters). +The **Microsoft-specific** section ends here. -## String literals +## String literals A string literal represents a sequence of characters that together form a null-terminated string. The characters must be enclosed between double quotation marks. There are the following kinds of string literals: -### Narrow string literals +### Ordinary string literals -A narrow string literal is a non-prefixed, double-quote delimited, null-terminated array of type `const char[n]`, where n is the length of the array in bytes. A narrow string literal may contain any graphic character except the double quotation mark (`"`), backslash (`\`), or newline character. A narrow string literal may also contain the escape sequences listed above, and universal character names that fit in a byte. +An ordinary string literal is a non-prefixed, double-quote delimited, null-terminated array of type `const char[n]`, where *n* is the length of the array in bytes. An ordinary string literal can contain any graphic character except the double quotation mark (`"`), backslash (`\`), or newline character. An ordinary string literal can also contain escape sequences. The encoding of universal character names in ordinary string literals depends on the execution character set. ```cpp -const char *narrow = "abcd"; +const char *ordinary = "abcd"; // represents the string: yes\no const char *escaped = "yes\\no"; ``` -#### UTF-8 encoded strings +### UTF-8 string literal -A UTF-8 encoded string is a u8-prefixed, double-quote delimited, null-terminated array of type `const char[n]`, where *n* is the length of the encoded array in bytes. A u8-prefixed string literal may contain any graphic character except the double quotation mark (`"`), backslash (`\`), or newline character. A u8-prefixed string literal may also contain the escape sequences listed above, and any universal character name. +A UTF-8 encoded string is a `u8`-prefixed, double-quote delimited, null-terminated array of type `const char[n]`, where *n* is the length of the encoded array in bytes. A `u8`-prefixed string literal can contain any graphic character except the double quotation mark (`"`), backslash (`\`), or newline character. A `u8`-prefixed string literal can also contain escape sequences. C++20 introduces the portable **`char8_t`** (UTF-8 encoded 8-bit Unicode) character type. In C++20, `u8` literal prefixes specify characters or strings of **`char8_t`** instead of **`char`**. ```cpp // Before C++20 const char* str1 = u8"Hello World"; -const char* str2 = u8"\U0001F607 is O:-)"; +const char* str2 = u8"\U0001F607 is 😇"; // C++20 and later const char8_t* u8str1 = u8"Hello World"; -const char8_t* u8str2 = u8"\U0001F607 is O:-)"; +const char8_t* u8str2 = u8"\U0001F607 is 😇"; ``` ### Wide string literals -A wide string literal is a null-terminated array of constant **`wchar_t`** that is prefixed by '`L`' and contains any graphic character except the double quotation mark (**`"`**), backslash (**`\`**), or newline character. A wide string literal may contain the escape sequences listed above and any universal character name. +A wide string literal is a null-terminated array of constant **`wchar_t`** that's prefixed by '`L`' and contains any graphic character except the double quotation mark (**`"`**), backslash (**`\`**), or newline character. A wide string literal can also contain escape sequences. ```cpp const wchar_t* wide = L"zyxw"; const wchar_t* newline = L"hello\ngoodbye"; ``` -#### char16_t and char32_t (C++11) +### UTF-16 string literals + +A UTF-16 string literal is a null-terminated array of constant **`char16_t`** that's prefixed by '`u`' and contains any graphic character except the double quotation mark (**`"`**), backslash (**`\`**), or newline character. A UTF-16 string literal can also contain escape sequences. + +```cpp +const char16_t* utf_16 = u"hello 🌍"; +``` +### UTF-32 string literals -C++11 introduces the portable **`char16_t`** (16-bit Unicode) and **`char32_t`** (32-bit Unicode) character types: +A UTF-32 string literal is a null-terminated array of constant **`char32_t`** that's prefixed by '`U`' and contains any graphic character except the double quotation mark (**`"`**), backslash (**`\`**), or newline character. A UTF-32 string literal can also contain escape sequences. ```cpp -auto s3 = u"hello"; // const char16_t* -auto s4 = U"hello"; // const char32_t* +const char32_t* utf_32 = U"hello 🌏"; ``` ### Raw string literals (C++11) -A raw string literal is a null-terminated array—of any character type—that contains any graphic character, including the double quotation mark (**`"`**), backslash (**`\`**), or newline character. Raw string literals are often used in regular expressions that use character classes, and in HTML strings and XML strings. For examples, see the following article: [Bjarne Stroustrup's FAQ on C++11](https://www.stroustrup.com/C++11FAQ.html). +A raw string literal is a null-terminated array, of any character type, that contains any graphic character, including the double quotation mark (**`"`**), backslash (**`\`**), or newline character. Use raw string literals for regular expressions that use character classes, and in HTML strings and XML strings. ```cpp // represents the string: An unescaped \ character @@ -275,7 +302,7 @@ const char16_t* raw_utf16 = uR"(An unescaped \ character)"; const char32_t* raw_utf32 = UR"(An unescaped \ character)"; ``` -A delimiter is a user-defined sequence of up to 16 characters that immediately precedes the opening parenthesis of a raw string literal, and immediately follows its closing parenthesis. For example, in `R"abc(Hello"\()abc"` the delimiter sequence is `abc` and the string content is `Hello"\(`. You can use a delimiter to disambiguate raw strings that contain both double quotation marks and parentheses. This string literal causes a compiler error: +A delimiter is a user-defined sequence of up to 16 characters that immediately precedes the opening parenthesis of a raw string literal, and immediately follows its closing parenthesis. For example, in `R"abc(Hello"\()abc"` the delimiter sequence is `abc` and the string content is `Hello"\(`. Use a delimiter to disambiguate raw strings that contain both double quotation marks and parentheses. This string literal causes a compiler error: ```cpp // meant to represent the string: )" @@ -299,7 +326,7 @@ goodbye)"; ### std::string literals (C++14) -`std::string` literals are Standard Library implementations of user-defined literals (see below) that are represented as `"xyz"s` (with a `s` suffix). This kind of string literal produces a temporary object of type `std::string`, `std::wstring`, `std::u32string`, or `std::u16string`, depending on the prefix that is specified. When no prefix is used, as above, a `std::string` is produced. `L"xyz"s` produces a `std::wstring`. `u"xyz"s` produces a [std::u16string](../standard-library/string-typedefs.md#u16string), and `U"xyz"s` produces a [std::u32string](../standard-library/string-typedefs.md#u32string). +`std::string` literals are Standard Library implementations of user-defined literals (see below) that are represented as `"xyz"s` (with a `s` suffix). This kind of string literal produces a temporary object of type `std::string`, `std::wstring`, `std::u32string`, or `std::u16string`, depending on the prefix that you specify. When you don't use a prefix, as in the preceding example, the literal produces a `std::string`. `L"xyz"s` produces a `std::wstring`. `u"xyz"s` produces a [std::u16string](../standard-library/string-typedefs.md#u16string), and `U"xyz"s` produces a [std::u32string](../standard-library/string-typedefs.md#u32string). ```cpp //#include @@ -318,11 +345,11 @@ The `s` suffix may also be used on raw string literals: u32string str6{ UR"(She said "hello.")"s }; ``` -`std::string` literals are defined in the namespace `std::literals::string_literals` in the \ header file. Because `std::literals::string_literals`, and `std::literals` are both declared as [inline namespaces](../cpp/namespaces-cpp.md), `std::literals::string_literals` is automatically treated as if it belonged directly in namespace `std`. +`std::string` literals are defined in the namespace `std::literals::string_literals` in the `` header file. Because `std::literals::string_literals` and `std::literals` are both declared as [inline namespaces](../cpp/namespaces-cpp.md), the compiler automatically treats `std::literals::string_literals` as if it belonged directly in namespace `std`. ### Size of string literals -For ANSI `char*` strings and other single-byte encodings (but not UTF-8), the size (in bytes) of a string literal is the number of characters plus 1 for the terminating null character. For all other string types, the size isn't strictly related to the number of characters. UTF-8 uses up to four **`char`** elements to encode some *code units*, and **`char16_t`** or **`wchar_t`** encoded as UTF-16 may use two elements (for a total of four bytes) to encode a single *code unit*. This example shows the size of a wide string literal in bytes: +For ASCII `char*` strings and other single-byte encodings, the size (in bytes) of a string literal is the number of characters plus 1 for the terminating null character. For all other string literals, the size isn't strictly related to the number of characters. UTF-8 uses up to four **`char`** elements to encode some *code units*, and **`char16_t`** or **`wchar_t`** encoded as UTF-16 may use two elements (for a total of four bytes) to encode a single *code unit*. This example shows the size of a wide string literal in bytes: ```cpp const wchar_t* str = L"Hello!"; @@ -333,8 +360,9 @@ Notice that `strlen()` and `wcslen()` don't include the size of the terminating Maximum length of a string literal after concatenation: -* Visual Studio prior to 2022 version 17.0: the maximum length of a string literal after concatenation is 65,535 bytes. This applies to both narrow and wide string literals. -* From Visual Studio 2022 version 17.0 onwards: the maximum length of a string literal after concatenation is only limited by available memory. However, the size limit before concatenation is still 16,384 bytes +- Visual Studio before 2022 version 17.0: the maximum length of a string literal after concatenation is 65,535 bytes. This applies to both narrow and wide string literals. +- Before MSVC 14.51: the maximum length of a string literal after concatenation is only limited by available memory. However, the size limit before concatenation is still 16,384 bytes. +- From MSVC 14.51 onwards: the maximum length limitation for a string literal before concatenation is removed and is only limited by available memory. ### Modifying string literals @@ -353,7 +381,7 @@ You can cause the compiler to emit an error when a string literal is converted t ```cpp auto str = L"hello"; -str[2] = L'a'; // C3892: you cannot assign to a variable that is const. +str[2] = L'a'; // C3892: you cannot assign to a variable that's const. ``` In some cases, identical string literals may be pooled to save space in the executable file. In string-literal pooling, the compiler causes all references to a particular string literal to point to the same location in memory, instead of having each reference point to a separate instance of the string literal. To enable string pooling, use the [`/GF`](../build/reference/gf-eliminate-duplicate-strings.md) compiler option. @@ -374,7 +402,7 @@ is identical to this declaration: char atr[] = "1234"; ``` -and to this declaration: +and is identical to this declaration: ```cpp char atr[] = "12\ @@ -392,40 +420,52 @@ The actual result is a hexadecimal 5F, which is the ASCII code for an underscore ```cpp "\005five" // Use octal literal. "\x05" "five" // Use string splicing. +"\x{05}five" // (C++23) delimited escape sequence ``` - -`std::string` literals (and the related `std::u8string`, `std::u16string`, and `std::u32string`) can be concatenated with the **`+`** operator that's defined for [`basic_string`](../standard-library/basic-string-class.md) types. They can also be concatenated in the same way as adjacent string literals. In both cases, the string encoding and the suffix must match: +Concatenate `std::string` literals (and the related `std::u8string`, `std::u16string`, and `std::u32string`) at runtime using the **`+`** operator that's defined for [`basic_string`](../standard-library/basic-string-class.md) types. You can also concatenate them at compile time in the same way as adjacent string literals. In both cases, the string encoding and the suffix of each literal must not conflict: ```cpp -auto x1 = "hello" " " " world"; // OK +auto x1 = "hello" " " " world"s; // OK, results in std::string "hello world"s auto x2 = U"hello" " " L"world"; // C2308: disagree on prefix auto x3 = u8"hello" " "s u8"world"z; // C3688, disagree on suffixes ``` ### String literals with universal character names -Native (non-raw) string literals may use universal character names to represent any character, as long as the universal character name can be encoded as one or more characters in the string type. For example, a universal character name representing an extended character can't be encoded in a narrow string using the ANSI code page, but it can be encoded in narrow strings in some multi-byte code pages, or in UTF-8 strings, or in a wide string. In C++11, Unicode support is extended by the `char16_t*` and `char32_t*` string types, and C++20 extends it to the `char8_t` type: +Native (non-raw) string literals can use universal character names to represent any character, as long as the universal character name can be encoded as one or more characters in the string type. For example, a universal character name representing an extended character can't be encoded in an ordinary string when using the ANSI code page, but it can be encoded in narrow strings in some multibyte code pages, or in UTF-8 strings, or in a wide string. In C++11, Unicode support is extended by the `char16_t*` and `char32_t*` string types, and C++20 extends it to the `char8_t` type: ```cpp // ASCII smiling face const char* s1 = ":-)"; // UTF-16 (on Windows) encoded WINKING FACE (U+1F609) -const wchar_t* s2 = L"😉 = \U0001F609 is ;-)"; +const wchar_t* s2 = L"😉 = \U0001F609"; // UTF-8 encoded SMILING FACE WITH HALO (U+1F607) -const char* s3a = u8"😇 = \U0001F607 is O:-)"; // Before C++20 -const char8_t* s3b = u8"😇 = \U0001F607 is O:-)"; // C++20 +const char* s3a = u8"😇 = \U0001F607"; // Before C++20 +const char8_t* s3b = u8"😇 = \U0001F607"; // C++20 // UTF-16 encoded SMILING FACE WITH OPEN MOUTH (U+1F603) -const char16_t* s4 = u"😃 = \U0001F603 is :-D"; +const char16_t* s4 = u"😃 = \U0001F603"; // UTF-32 encoded SMILING FACE WITH SUNGLASSES (U+1F60E) -const char32_t* s5 = U"😎 = \U0001F60E is B-)"; +const char32_t* s5 = U"😎 = \U0001F60E"; ``` +In C++11 and later, Universal characters can be any *Unicode scalar value* when used in a string literal. Unicode scalar values include the full Unicode codespace from U+0000 to U+10FFFF other than the surrogate code point range (U+D800 through U+DFFF). Before C++11, Universal characters can be any value in the Unicode codespace, except those in the basic source character set and control characters (ranges U+0000 to U+0001F and U+007F to 0x9F). For more information on universal character names, see [Character Sets](../cpp/character-sets.md). For more information about Unicode, see [Unicode](/windows/win32/intl/unicode). + +When used inside an ordinary string literal `""`, the Unicode code point is encoded in the codepage of the execution character set. The codepage controls the value as well as the number of bytes used to represent the code point. If the Unicode code point can't be represented in the execution character set codepage, then a warning is emitted and the character is replaced by the default replacement character for the codepage. The default replacement character is defined by the codepage and is typically a character equivelent to U+FFFD (�) or '?'. The execution character set can be set by the compiler switch [`/execution-charset`](../build/reference/execution-charset-set-execution-character-set.md). + +When used in a utf-8 literal type `u8""`, the Unicode code point is encoded in a possibly multibyte utf-8 sequence. + +When used in a 16-bit string literal type `L""` or `u""`, the Unicode code point is encoded in UTF-16. A universal characters that does not fit in 16-bits is automatically encoded as a UTF-16 surrogate pair. For more information about surrogate pairs, see [Surrogate Pairs and Supplementary Characters](/windows/win32/Intl/surrogates-and-supplementary-characters) + +When used in a UTF-32 literal type `U""`, the Unicode code point is encoded in UTF-32. + ## See also [Character sets](../cpp/character-sets.md)\ [Numeric, Boolean, and pointer literals](../cpp/numeric-boolean-and-pointer-literals-cpp.md)\ +[Surrogate Pairs and Supplementary Characters](/windows/win32/Intl/surrogates-and-supplementary-characters)\ +[Unicode](/windows/win32/intl/unicode)\ [User-defined literals](../cpp/user-defined-literals-cpp.md) From be907282780ccf52fb4148dfa10d29236c025adb Mon Sep 17 00:00:00 2001 From: MacGyver Codilla Date: Thu, 9 Jul 2026 13:33:34 -0700 Subject: [PATCH 561/619] Add more properties to the list of linux debugger properties (#6751) * Add documentation for 6 properties, two new properties debuginfod * Add versions, add clarification for glob patterns and wildcards. Include explanation for natvis. Apply the suggested wording for gdb support * Alphabetize property list * Apply suggestions from code review Co-authored-by: learn-build-service-prod-01[bot] <274427437+learn-build-service-prod-01[bot]@users.noreply.github.com> --------- Co-authored-by: learn-build-service-prod-01[bot] <274427437+learn-build-service-prod-01[bot]@users.noreply.github.com> --- docs/linux/prop-pages/debugging-linux.md | 30 ++++++++++++++---------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/docs/linux/prop-pages/debugging-linux.md b/docs/linux/prop-pages/debugging-linux.md index 926bd14e4fb..2e309b8721f 100644 --- a/docs/linux/prop-pages/debugging-linux.md +++ b/docs/linux/prop-pages/debugging-linux.md @@ -1,9 +1,9 @@ --- title: Debugger Properties (Linux C++) description: "Describes the Microsoft Visual Studio Linux C++ debugger properties" -ms.date: "06/07/2019" +ms.date: "07/08/2026" ms.assetid: 0c1c0fcc-a49b-451c-a5cb-ce9711fac064 -f1_keywords: ["VC.Project.RaspberryDebugger.LaunchActivity", "VC.Project.RaspberryDebugger.LaunchActivity", "VC.Project.RaspberryDebugger.DebuggerType", "VC.Project.AndroidDebugger.LaunchActivity", "VC.Project.LinuxDebugger.DebugChildProcesses", "VC.Project.RaspberryDebugger.EnablePrettyPrinting", "VC.Project.RaspberryDebugger.LinuxNatvisFile", "VC.Project.RaspberryDebugger.SourceMap"] +f1_keywords: ["VC.Project.RaspberryDebugger.LaunchActivity", "VC.Project.RaspberryDebugger.LaunchActivity", "VC.Project.RaspberryDebugger.DebuggerType", "VC.Project.AndroidDebugger.LaunchActivity", "VC.Project.LinuxDebugger.DebugChildProcesses", "VC.Project.RaspberryDebugger.EnablePrettyPrinting", "VC.Project.RaspberryDebugger.LinuxNatvisFile", "VC.Project.RaspberryDebugger.SourceMap", "VC.Project.RaspberryDebugger.MIMode", "VC.Project.RaspberryDebugger.SymbolLoadList", "VC.Project.RaspberryDebugger.LoadAllSymbols", "VC.Project.RaspberryDebugger.ShowDisplayString", "VC.Project.RaspberryDebugger.EnableDebugInfoD", "VC.Project.RaspberryDebugger.DebugInfoDTimeout"] --- # C++ Debugging Properties (Linux C++) @@ -17,20 +17,26 @@ Linux support is available in Visual Studio 2017 and later. | Property | Description | Choices | |--|--|--| -| Remote debug machine | **Visual Studio 2019 version 16.1**: Specifies the machine to debug the program on. Can be different than the remote build machine that's specified on the [General](general-linux.md) page. You can add or edit a target machine connection by using **Tools** > **Options** > **Cross Platform** > **Connection Manager**. | -| Pre-Launch Command | A command that's run on the shell before the debugger starts, that can be used to affect the debugging environment. | -| Program | The full path on the remote system to the program to debug. If left empty or unchanged, it defaults to the current project output. | -| Program Arguments | The command-line arguments to pass to the program being debugged. | -| Working Directory | The remote application's working directory. By default, the user home directory. | | Additional Debugger Commands | Additional `gdb` commands for the debugger to run before starting debugging. | -| Debugger Port Number | The port number for debugger communication with the remote debugger. The port must not be in use locally. This value must be positive, and between 1 and 65535. If not supplied, a free port number is used. | -| Remote Debugger Port Number | The port number on which the remote debugger server `gdbserver` is listening on the remote system. The port must not be in use on the remote system. This value must be positive, and between 1 and 65535. If not supplied, a free port number starting from 4444 is used. | -| Debugging Mode | Specifies how the debugger interfaces with `gdb`. In *gdb mode*, the debugger drives `gdb` over the shell on the remote system. In *gdbserver mode*, `gdb` runs locally and connects to `gdbserver` running remotely. | **gdbserver**
      **gdb** | +| Additional Sources File Path Map | Additional path equivalences for the debugger to use to map Windows source file names to Linux source file names. The format is "\=\;...". A source file name found under the Windows path is referenced as if it's found in the same relative position under the Linux path. Files found in the local project don't require additional mapping. | | Additional Symbol Search Paths | Additional search path for debug symbols (solib-search-path). | | Debug Child Processes | Specifies whether to enable debugging of child processes. | +| Debugger Port Number | The port number for debugger communication with the remote debugger. The port must not be in use locally. This value must be positive, and between 1 and 65535. If you don't supply a value, a free port number is used. | +| Debugging Mode | Specifies how the debugger interfaces with `gdb`. In *gdb mode*, the debugger drives `gdb` over the shell on the remote system. In *gdbserver mode*, `gdb` runs locally and connects to `gdbserver` running remotely. | **gdbserver**
      **gdb** | +| Debuginfod timeout (seconds) | Set the timeout, in seconds, for debuginfod server requests when you enable debuginfod. Use `0` to keep the default `gdb` timeout. This property only supports `gdb`. | Integer value in seconds. Default: 30 | +| Enable debuginfod | Let `gdb` query debuginfod servers for missing debug information and source files. This property only supports `gdb`. | | Enable Python Pretty Printing | Enable pretty printing of expression values. Only supported in gdb debugging mode. | -| Visualization File | Default native visualization file (.natvis) containing visualization directives for SLT types. Other .natvis files that belong to the current solution are loaded automatically. | -| Additional Sources File Path Map | Additional path equivalences for the debugger to use to map Windows source file names to Linux source file names. The format is "\=\;...". A source file name found under the Windows path is referenced as if it's found in the same relative position under the Linux path. Files found in the local project don't require additional mapping. | | GDB Path | **Visual Studio 2019 version 16.9**: Specifies the path to the GDB executable to be used by Visual Studio. | +| Pre-Launch Command | A command that runs in the shell before the debugger starts. Use this command to affect the debugging environment. | +| Program | The full path on the remote system to the program to debug. If you leave this property empty or unchanged, it defaults to the current project output. | +| Program Arguments | The command-line arguments to pass to the program being debugged. | +| Remote debug machine | **Visual Studio 2019 version 16.1**: Specifies the machine to debug the program on. This machine can be different from the remote build machine that you specify on the [General](general-linux.md) page. To add or edit a target machine connection, use **Tools** > **Options** > **Cross Platform** > **Connection Manager**. | +| Remote Debugger Port Number | The port number on which the remote debugger server `gdbserver` is listening on the remote system. The port must not be in use on the remote system. This value must be positive, and between 1 and 65535. If you don't supply a value, a free port number starting from 4444 is used. | +| Remote Debugger Type | **Visual Studio 2022 version 17.3**: Select the debugger that Visual Studio uses to debug your Linux project. | `gdb`
      `lldb` | +| Show Natvis DisplayString | **Visual Studio 2019 version 16.0**: Show the `.natvis` `DisplayString` element by default in the **DataTips**, **Locals**, **Watch**, and similar debugger windows. Natvis is an XML-based format that customizes how native C++ types appear in the debugger. `DisplayString` defines a type's summary string. | +| Symbol List | **Visual Studio 2019 version 16.0**: Specify a semicolon-separated list of shared library (`solib`) names that the Symbol Loading Preference property uses to control symbol loading. The names can include the `*` and `?` wildcards. Full glob patterns aren't supported. | +| Symbol Loading Preference | **Visual Studio 2019 version 16.0**: Choose whether the debugger loads symbols for all shared libraries except the names in Symbol List, or only for the shared libraries named in Symbol List. | **Load all symbols except those in Symbol List**
      **Load only those symbols specified in Symbol List** | +| Visualization File | Default native visualization file (.natvis) containing visualization directives for SLT types. The debugger automatically loads other .natvis files that belong to the current solution. | +| Working Directory | The remote application's working directory. By default, the user home directory. | ::: moniker-end From e1708c80585b0c1aaa70e57190cd04b4779602ab Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 13 Jul 2026 09:20:42 -0700 Subject: [PATCH 562/619] Add article: Install the Microsoft C++ (MSVC) Build Tools (#6764) * docs: add article for installing MSVC Build Tools Add docs/overview/acquire-msvc.md covering MSVC toolset acquisition via the VS Installer UI, installer command line, winget, and .vsconfig, plus version selection from MSBuild, CMake, and the Visual Studio Command Prompt. Add TOC entry and cross-links from vscpp-step-0-installation and compiler-versions. * Apply suggestions from code review Co-authored-by: learn-build-service-prod-02[bot] <274428175+learn-build-service-prod-02[bot]@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: learn-build-service-prod-02[bot] <274428175+learn-build-service-prod-02[bot]@users.noreply.github.com> * docs: format filenames as code for localization safety * docs: tighten Visual Studio Command Prompt section * docs: copy edits to headings and intro paragraphs * make links easier to find * Apply suggestions from LAA review Co-authored-by: learn-build-service-prod-08[bot] <274430765+learn-build-service-prod-08[bot]@users.noreply.github.com> Co-authored-by: learn-build-service-prod-02[bot] <274428175+learn-build-service-prod-02[bot]@users.noreply.github.com> * address PR feedback --------- Co-authored-by: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Co-authored-by: learn-build-service-prod-02[bot] <274428175+learn-build-service-prod-02[bot]@users.noreply.github.com> Co-authored-by: learn-build-service-prod-08[bot] <274430765+learn-build-service-prod-08[bot]@users.noreply.github.com> --- docs/build/vscpp-step-0-installation.md | 3 + docs/overview/acquire-msvc.md | 218 ++++++++++++++++++ docs/overview/compiler-versions.md | 1 + ...er-individual-components-msvc-versions.png | Bin 0 -> 188383 bytes .../installer-more-menu-uninstall.png | Bin 0 -> 44629 bytes ...ller-workload-desktop-cpp-msvc-preview.png | Bin 0 -> 234195 bytes ...ct-properties-msvc-build-tools-version.png | Bin 0 -> 92400 bytes ...roperties-use-msvc-build-tools-preview.png | Bin 0 -> 54526 bytes docs/overview/toc.yml | 2 + 9 files changed, 224 insertions(+) create mode 100644 docs/overview/acquire-msvc.md create mode 100644 docs/overview/media/acquire-msvc/installer-individual-components-msvc-versions.png create mode 100644 docs/overview/media/acquire-msvc/installer-more-menu-uninstall.png create mode 100644 docs/overview/media/acquire-msvc/installer-workload-desktop-cpp-msvc-preview.png create mode 100644 docs/overview/media/acquire-msvc/project-properties-msvc-build-tools-version.png create mode 100644 docs/overview/media/acquire-msvc/project-properties-use-msvc-build-tools-preview.png diff --git a/docs/build/vscpp-step-0-installation.md b/docs/build/vscpp-step-0-installation.md index 903016883ab..63753c2b85a 100644 --- a/docs/build/vscpp-step-0-installation.md +++ b/docs/build/vscpp-step-0-installation.md @@ -73,6 +73,9 @@ You can use the installer to customize your installation by selecting the *workl The **Installation details** pane lists the included and optional components installed by each workload. You can select or deselect optional components in this list. For example, to support development by using the Visual Studio 2017 or 2015 compiler toolsets, choose the MSVC v141 or MSVC v140 optional components. You can add support for MFC, the experimental Modules language extension, IncrediBuild, and more. + > [!TIP] + > To install a specific MSVC Build Tools version (Preview, latest release, or an older in-support release), see [Install the Microsoft C++ (MSVC) Build Tools](../overview/acquire-msvc.md). + Other workloads support more kinds of development. For example, choose the **Universal Windows Platform development** workload to create apps that use the Windows Runtime for the Microsoft Store. Choose **Game development with C++** to create games that use DirectX, Unreal, or Cocos2d. Choose **Linux development with C++** to target Linux platforms, including IoT development. 1. After you choose the workloads and optional components you want, choose **Install**. diff --git a/docs/overview/acquire-msvc.md b/docs/overview/acquire-msvc.md new file mode 100644 index 00000000000..cbd86ef4549 --- /dev/null +++ b/docs/overview/acquire-msvc.md @@ -0,0 +1,218 @@ +--- +title: "Install the Microsoft C++ (MSVC) Build Tools" +description: "Install the MSVC Build Tools using the Visual Studio Installer UI, command line, winget, or a .vsconfig file. Choose Preview, latest release, or an older in-support toolset, and target it from MSBuild, CMake, or the Visual Studio Command Prompt." +ms.date: 07/13/2026 +ms.topic: how-to +ms.service: "visual-cpp" +ms.subservice: "tools" +ms.custom: intro-installation +#customer intent: As a C++ developer, I want to install a specific MSVC Build Tools version (Preview, latest release, or an older in-support release) and target it from my build system. +--- +# Install the Microsoft C++ (MSVC) Build Tools + +The Visual Studio Installer lets you install multiple Microsoft C++ (MSVC) Build Tools versions side by side: + +- A preview version of the next MSVC Build Tools release. +- The latest released, in-support MSVC Build Tools version. This version is the default toolset used for C++ projects. +- Earlier MSVC Build Tools releases that are still in support. + +Previews are updated regularly with new features and fixes. The latest release and in-support build tools receive servicing fixes, as needed, for the duration of their support lifecycle. + +For details about the versioning scheme, servicing policy, and how often the latest released MSVC toolset changes, see [Microsoft C++ (MSVC) compiler versioning](compiler-versions.md). For a summary of features added in each release, see [What's new for MSVC Build Tools](what-s-new-for-msvc.md). + +> [!NOTE] +> All MSVC Build Tools versions are available in both Visual Studio channels, but the Insiders channel receives updates sooner than the Stable channel. Changes applied in the MSVC development branches take one to two weeks to ship in the preview Build Tools on Visual Studio Insiders. + +You can acquire MSVC through the Visual Studio Installer UI, through the Visual Studio Installer command line, or through `winget`. + +## Install by using the Visual Studio Installer UI + +Download the Visual Studio Installer from [visualstudio.microsoft.com/downloads](https://visualstudio.microsoft.com/downloads/) (Stable channel) or [visualstudio.microsoft.com/insiders](https://visualstudio.microsoft.com/insiders/) (Insiders channel). + +In the installer, choose **Desktop development with C++** to install the latest released C++ toolset. + +In the **Installation details** panel, the **MSVC Build Tools for x64/x86 (Preview)** option installs the preview tools. Similar options exist for ARM64 installs. + +:::image type="content" source="media/acquire-msvc/installer-workload-desktop-cpp-msvc-preview.png" alt-text="Screenshot of the Visual Studio Installer with the Desktop development with C++ workload and the MSVC Build Tools for x64/x86 (Preview) component selected."::: + +To install an older in-support toolset, select the **Individual components** tab, search for `MSVC`, and scroll to find the version you want to install. For example, **MSVC Build Tools v14.50 for x64/x86**. Out-of-support toolsets are marked as such. + +:::image type="content" source="media/acquire-msvc/installer-individual-components-msvc-versions.png" alt-text="Screenshot of the Individual components tab in the Visual Studio Installer filtered to msvc, with MSVC Build Tools v14.50 for x64/x86 checked."::: + +## Install by using the Visual Studio Installer from the command line + +Use the Visual Studio Installer to perform a scripted, unattended install of MSVC. + +**To install the latest Insiders build:** + +1. Download [`vs_enterprise.exe`](https://aka.ms/vs/insiders/vs_enterprise.exe) (the same installer as above, sometimes named `VisualStudioSetup.exe`). +1. Create a `.vsconfig` file that lists the components to install. For more information, see [Create a .vsconfig file](#create-a-vsconfig-file). +1. Open an administrator Command Prompt. +1. Run the installer: + + ```cmd + .\vs_enterprise.exe --passive --config .\.vsconfig --installPath + ``` + +1. If an earlier **Visual Studio Build Tools** installation exists on the machine, uninstall it first. + +**Channel-specific installer links:** + +| Channel | Command-line build tools only | Full Visual Studio | +|---|---|---| +| Insiders | [`vs_buildtools.exe`](https://aka.ms/vs/insiders/vs_buildtools.exe) | [`vs_enterprise.exe`](https://aka.ms/vs/insiders/vs_enterprise.exe) | +| Stable | [`vs_buildtools.exe`](https://aka.ms/vs/stable/vs_buildtools.exe) | [`vs_enterprise.exe`](https://aka.ms/vs/stable/vs_enterprise.exe) | + +- Use the Visual Studio Installer to update or uninstall. +- For more information, see [Use command-line parameters to install, update, and manage Visual Studio](/visualstudio/install/use-command-line-parameters-to-install-visual-studio). + +## Install MSVC by using winget + +To install MSVC by using `winget`: + +1. Create a `.vsconfig` file that lists the components to install. For more information, see [Create a .vsconfig file](#create-a-vsconfig-file). +1. Open an administrator Command Prompt. +1. Run the following script: + + ```cmd + winget install -e --id Microsoft.VisualStudio.Enterprise.Insiders --override "--passive --config .\.vsconfig --installPath " + ``` + +**Winget install options:** + +- Use `--id Microsoft.VisualStudio.BuildTools` to install the Build Tools on the Stable channel. +- Use `--id Microsoft.VisualStudio.Enterprise` to install Visual Studio Enterprise on the Stable channel. +- Use `-v ` to specify an exact version, for example, `-v 18.6.2`. +- Use `winget search Microsoft.VisualStudio.BuildTools --versions` to list all available versions. + +## Create a .vsconfig file + +A `.vsconfig` file specifies the component IDs to install. You can find component IDs in the [Visual Studio Enterprise component directory](/visualstudio/install/workload-component-id-vs-enterprise) and the [Visual Studio Build Tools component directory](/visualstudio/install/workload-component-id-vs-build-tools). + +For example, in the Visual Studio Installer's **Individual components** tab, the **MSVC Build Tools v14.50 for x64/x86** component ID is `Microsoft.VisualStudio.Component.VC.14.50.18.0.x86.x64`. + +The Visual Studio Installer also supports [importing or exporting installation configurations](/visualstudio/install/import-export-installation-configurations) from an existing Visual Studio installation. + +The following `.vsconfig` file downloads the x86 and x64 tools for the preview toolset, the latest release, and the 14.50 release: + +```json +{ + "version": "1.0", + "components": [ + "Microsoft.VisualStudio.Component.VC.Preview.Tools.x86.x64", + "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", + "Microsoft.VisualStudio.Component.VC.14.50.18.0.x86.x64" + ] +} +``` + +This configuration installs very few dependencies. Just the compilers, runtimes, and command prompts. + +A more complete installation with ARM64 tools, MFC/ATL, C++/CLI support, and a Windows SDK is: + +```json +{ + "version": "1.0", + "components": [ + "Microsoft.VisualStudio.Component.VC.Preview.Tools.x86.x64", + "Microsoft.VisualStudio.Component.VC.Preview.ARM64", + "Microsoft.VisualStudio.Component.VC.Preview.CLI.Support", + "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", + "Microsoft.VisualStudio.Component.VC.Tools.ARM64", + "Microsoft.VisualStudio.Component.VC.ATLMFC", + "Microsoft.VisualStudio.Component.VC.CLI.Support", + "Microsoft.VisualStudio.Component.VC.14.50.18.0.x86.x64", + "Microsoft.VisualStudio.Component.VC.14.50.18.0.ARM64", + "Microsoft.VisualStudio.Component.VC.14.50.18.0.CLI.Support", + "Microsoft.VisualStudio.Component.Windows11SDK.26100" + ] +} +``` + +## Use an installed MSVC toolset + +Toolsets are installed under `\VC\Tools\MSVC\`. + +The following files under `\VC\Auxiliary\Build\` identify the default and preview toolsets: + +- `Microsoft.VCToolsVersion.default.txt` contains the `` folder of the latest in-support MSVC toolset. +- `Microsoft.VCToolsVersion.default.props` contains MSBuild properties for the in-support MSVC toolset. +- `Microsoft.VCToolsVersion.Preview.txt` contains the `` folder of the MSVC preview toolset. +- `Microsoft.VCToolsVersion.Preview.props` contains MSBuild properties for the MSVC preview toolset. + +After you install the toolsets, configure your projects to use the toolset you want. + +### Visual Studio (MSBuild) + +In the project properties, select **Configuration Properties** > **General** > **MSVC Build Tools Version** and choose a supported Build Tools version. The dropdown is populated from `\VC\Tools\MSVC\`. + +:::image type="content" source="media/acquire-msvc/project-properties-msvc-build-tools-version.png" alt-text="Screenshot of C++ project property pages > General with the MSVC Build Tools Version dropdown expanded to show Latest supported, 14.50.35717, and 14.51.36231."::: + +To use the MSVC Build Tools preview, set **Use MSVC Build Tools Preview** to **Yes**. + +:::image type="content" source="media/acquire-msvc/project-properties-use-msvc-build-tools-preview.png" alt-text="Screenshot of C++ project property pages > General with the Use MSVC Build Tools Preview property set to Yes."::: + +Save these property changes to your `.vcxproj` file. Later builds from the Visual Studio IDE or command line use the saved project settings. + +### MSBuild command line + +To build with a supported MSVC version from a Visual Studio Command Prompt, add `/p:VCToolsVersion=`. For example: + +```cmd +msbuild /p:Platform= /p:Configuration= /p:VCToolsVersion=14.50.35717 +``` + +`` matches the folder name under `\VC\Tools\MSVC\`. + +To build with the MSVC preview tools, add `/p:MSVCPreviewEnabled=true`: + +```cmd +msbuild /p:Platform= /p:Configuration= /p:MSVCPreviewEnabled=true +``` + +### CMake + +Configure CMake with the `-T "version="` toolset argument. For example: + +```cmd +cmake -G "Visual Studio 18 2026" -T "version=14.50" ..\ +cmake -G "Visual Studio 18 2026" -T "version=14.51" ..\ +cmake -G "Visual Studio 18 2026" -T "version=14.52" ..\ +``` + +### Visual Studio Command Prompt + +Some build systems need the command prompt to have the `PATH`, `LIB`, `INCLUDE`, and related environment variables set before you run them. + +To start a Visual Studio Command Prompt that targets a supported Build Tools version, add `-vcvars_ver=` where `` matches the folder name under `\VC\Tools\MSVC\`. + +```cmd +\VC\Auxiliary\Build\vcvars64.bat -vcvars_ver=14.50.35717 +``` + +To start a Visual Studio Command Prompt targeting the MSVC preview tools, use `-vcvars_ver=preview`: + +```cmd +\VC\Auxiliary\Build\vcvars64.bat -vcvars_ver=preview +``` + +## Uninstall MSVC + +To uninstall Visual Studio by using the Installer UI, select **More** > **Uninstall**. + +:::image type="content" source="media/acquire-msvc/installer-more-menu-uninstall.png" alt-text="Screenshot of the Visual Studio Installer Installed tab showing the More menu expanded with the Uninstall command highlighted."::: + +To uninstall Visual Studio from the command line, use any version of the Visual Studio installer: + +```cmd +.\vs_enterprise.exe uninstall --passive --installPath +``` + +## See also + +- [What's new for MSVC Build Tools](what-s-new-for-msvc.md) +- [Microsoft C++ (MSVC) compiler versioning](compiler-versions.md) +- [Install C and C++ support in Visual Studio](../build/vscpp-step-0-installation.md) +- [Visual Studio Enterprise component directory](/visualstudio/install/workload-component-id-vs-enterprise) +- [Visual Studio Build Tools component directory](/visualstudio/install/workload-component-id-vs-build-tools) +- [Use command-line parameters to install, update, and manage Visual Studio](/visualstudio/install/use-command-line-parameters-to-install-visual-studio) diff --git a/docs/overview/compiler-versions.md b/docs/overview/compiler-versions.md index e7b45349210..c33877fac8c 100644 --- a/docs/overview/compiler-versions.md +++ b/docs/overview/compiler-versions.md @@ -192,5 +192,6 @@ The minimum value of `_MSC_FULL_VER` for Visual Studio 2019 version 16.9 is 1928 ## See also +- [Install the Microsoft C++ (MSVC) Build Tools](acquire-msvc.md) - [`_MSC_VER`](../preprocessor/predefined-macros.md) - [Visual C++ compiler version blog post](https://devblogs.microsoft.com/cppblog/visual-c-compiler-version/) diff --git a/docs/overview/media/acquire-msvc/installer-individual-components-msvc-versions.png b/docs/overview/media/acquire-msvc/installer-individual-components-msvc-versions.png new file mode 100644 index 0000000000000000000000000000000000000000..8112225dd1b702002b599e9a36952c1a58741b2f GIT binary patch literal 188383 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

    1. g&Q&N^&pjwK*1$k@ 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

      #M5fa>{d8I4n1)% zf1jlnMt`MEYw@+hBj!KIl6qs1{2F!s+*-Qu?Q!{yFweY)@xjywcs=&#JUg3p@#70~ za6g8IVhl09;Bhnexv>vLyb%@bm&@&~pZ9PuqosqA)-nE1`yo3VQ&B`Jgu=w!(C)c^tML%;7Wz`Ycm1tB*nnDmEX+4rKVfO) zM&c8w5M9om4TAYoRUof|ZId`QByj6uV0w!c5)i!}rB3042ffV=3UBEfkEAT$S|ef%?U{qZ!jU;tp;1vHAju$E-WlY%gNBAA9zhP%9C}7Z zMQeLQ!%wi#1jqbhR{mK<#elmjOhO<=p^448w!Y|Paq&CBJONqT+fh6QY3l5V_6r43 z6sAwTTsmD@(Ot?d*ZlQ1m83Z~!f)+u1 z#ViWA9?48=^5_xzL71Ad_SDtgsq_uZH@F|(rec!c^iWwEjp5+e@=S0vK<)U{6c zSq5%Apq{iSnGj?ZQc?+JIS=@n^2{-w3Ns2Y3oVd|B?B1(7DqsEu=#d3Q_}-Rjy>h& zH@;m(?+Y7p+SU^dLXhRnA2S?Ry7o3`7tQY7^`=8aUI_ovf;t>os4@gD_KLa_+B_tP zOlObV-2pm(xfk*YRCkbtY9^`omU&5|Q%_~fXPZU??^=eN)@Xgg2I&Gy31WJSzx%%7 zI1su}^qgMhyFtPJwyLVdAnuAk8vz5fl$a~MAR8&DsuC05rK$eEZP28w z`L_nm2x9fy5H&@`nW-s0Q7YulQ9Qq&_6~~zG!Jb^)KmF3aD#a+7akzRxtkhPpF8R_%`?Zr^^38FLSGGDj0!@f*-i zlmiH|EmWEvp4V{Rwrja+s> z9G$Pl7>DU>IMh=~rF zA*Ni~+Nd5y(uI}G&meZ8E_h;CqQAnGFLTs=ZUl=Mk)ZB#liZ)UlwfMEUBIHC2(o>H zoNchudXVlp1+uhQAr$=Hm3xru<4f1+0Z>bX_wP?a%4phYNg&vLZeQbiwYua46xUlYOPzVrV6od%Pvw*TTOO|8JnoJ^1a*SyO>nYP&1z$u!e`Ep?lSp{ z4*vDRO2nyMSz7c7K&6`ZEIryMK(`OWjK7q7Z%VvKWb8FlSsDM^XW!iMFKwY?q~mG7{XPG>Ov9REbfKlD*<62^U-<5I z3W|T|6Z$jSxaO;*DzBlFCL{B2fB5^WeVVi!-0ptA7*0yv^uJx~QU&z$J%B%=NF z_s3t&sQ=AZc0j?vq2r))2u>|AdL@%|mqj6`v&g1>Y}G(H#Q!`K_&+;*KMm&a994R0 zAXIwj8qeNWyLH9($nBE+@5B%PqKWWHUwSlAHaa-#H8*mvd1iyJp&ft5ltYpsZ~G$+ z?-f3;7YQrd6_5QN^bbF(*QkkkvTfy(&Hu5xJae*|MPKGUaGIx`YOma^~+>Q|9#b zj-kEBwvA=$vRtXZOLKF!cH%(TEnu$HRO0b2=c$XHdj#Kal|<*P@Tww6n$Y^GGw)`gLj$q6H+L*3@jpS6o6fLBYzv zCs7tamjDpFI|(HMkhIFZ@tmh0hkv+z48)|y#wQ!3nF)>nA?rgaJwSGl_zJ{Yrk4vs zJ-|S=TrR%!xdQHAO@`eM4>;6p`2YZorO&1U0PD|hAK0X=P{086vIZ__DdlN5miQhS z+hH(Px*U8@1c6wGMo6_7vCAZ+=M=B`GY?>5`BX1^dhwv1X5QK8a62Pk8I4rM2xLFZ zV$P>}!MbGuPvHi283I1xl!7;CvfPIWH|xbNqCfz+cknx}0@!kynyIzWA|8isdz8(@ z2lWF4i~%oWzCv6#iSdfc=bePSR%$Uua}!L7oqJJ9G$cs=Ld;d0FndOT`AD_MCbL|D z2Nvpod~key>>!pvcgSAl4Q0 zTJdn#gL@is)M|ll1R3P_rp*tIBT)oN#;Mqy{Vc+W;rr) zYAAXmEJTvBxjA44kFmZJojJ_oZ9sr=E3`sW@ETCNf}b^*xO~W;%)!|iCNfgj?%%yT z1wq~P!Be5cH0oKkhFnaBM4n|>e5o9nmG0K)&`?uLOE#Y?%-80&tLTOT>{uf%{t~s~ zQhtapFt%rCz$Bql83@u3YMm&S(UF#9!nIb=V#^18V3a^d*e)*^07UFceFWzkEND_y z2r!%zx3(m4DHzb~*wKZTSA^8r5qAWrn~WIRG{fJ&H$HJYcI-8X`ghP#_-TSAyK~nr z64bWjVe#Tuo=8MrWyDX$upR*7tYY9r1*`kZ86K@PW!$m@N_VYYo`Qe|wr5{3_6?Xv z+S&T;T~`8NAM0>|SiMxf?g8c#H?Op(ucgN*~0$zTeYKu%)X6cJIDU z4#tAA;xpb<3Am+q5X>)i^?fk^cNxb?bai?_E|P|hmKM+)<;TtDwKBrz)YXZ$anUFD zzyx_Yxe^GEhf}nxpv)rX=|VgO(!B+DHL|^U3Aem$KVgF!JK2V5ywE^T^Uzx(=Y=aF zQmch(pn8zNpk=NY>I@rS5TOLsp2LuTsf|dF8XKYGP;xFM6zKd4sKOrWWY_8_7?rrU zfBYzU_;BOLkLUb~w(b^H&oPuNO~th)la_mMC54)TcMY`649>A&(9~(KPNg2s3e7jf4~eOGQv}}j#zxh5R+yU$&Gxalu6Ib)k6!A(E^&<&T`!r`9^409d&sgF z?_N8X1%Exf4GJ#5GMJNqI=d(apyrkUedINm2BFTlhC)^4t<%iu5_)Sy2gnMbgsKtQ z3$rTRV%jh8OU5-ob1Qh#n3dC8$tV&1c_3429jK1Zq$<+U`w_|Zv!)1WQF$yH_0!2e>v$B6_WN=Y-*PFNnEqm zitqy|+%RB|FP4OAVDk0)a3dBs`l#9J>}Wwy8Ge8wItjQRwvxa(4{x@^{W&2^`YlY+ z_V-Y1X@G~mrEv_I11KK-20^F=u7E}k(@jMC!E}p(ZNzfKMFl>y#n2FUn)u+8Uz%kK zI2~&qdgw#c<5ILXu$(|`ogzGkyEC-dC=Pe;c!dagCCBJ@OU7ZFhf=nJk&?Y^v>m$eE z1E*oKJ|biDc6f?GtDF%P4=rfI6;nOdtwT)lw8?3=0T!Z6bIHl+r3XoXr;T;uo1z+F z2mvixDY|r7zMQJ>q1prBfU4~47cdj*K`r^L=?0G$>?;C=-~Rgphvm6fuKa=i zzL&!C^o1Fj#e2HCrsl%|MUI15N_Y(2g2 j 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 literal 0 HcmV?d00001 diff --git a/docs/overview/media/acquire-msvc/installer-more-menu-uninstall.png b/docs/overview/media/acquire-msvc/installer-more-menu-uninstall.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8ffba9a7ca1a9d339432cad0423f4e6ec1d5ae GIT binary patch literal 44629 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 VOl@Q^mb3x+%+uA+Wt~$(69B334P5{L literal 0 HcmV?d00001 diff --git a/docs/overview/media/acquire-msvc/installer-workload-desktop-cpp-msvc-preview.png b/docs/overview/media/acquire-msvc/installer-workload-desktop-cpp-msvc-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..28da4760edd111fdb198e84a4bda8eaf441cae8a GIT binary patch literal 234195 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

      &@~ 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 R#QY&jE)MR9M!O5C{|BAAC5`|9 literal 0 HcmV?d00001 diff --git a/docs/overview/media/acquire-msvc/project-properties-msvc-build-tools-version.png b/docs/overview/media/acquire-msvc/project-properties-msvc-build-tools-version.png new file mode 100644 index 0000000000000000000000000000000000000000..3ad4fe497cac37db38c487c7964ec759a55467b8 GIT binary patch literal 92400 zcmb@u2UHZ_(l3gMASj4P4k8)JNKOhUAW;FyIVm}(AxTCuNDd<+S#pj;&N;^!kQ|3N z0}KPN@%+#CowwF^-@A9M+Y8rp_uk#TcUA4G`c>67OhrlN(L?fw7#J9jr1pM4_`Y0obQ8G-q4P4x}c%%3R1EV||_sZx2aE)UxtL21&@wnsm z-<=-2d{YdJn;bdmH)`(sdrKa=YRG1Z>k%Ofb4`Wu&Z^qlY8XWa-ZEZlvHDyDy}HGn zJI^K%&>C*+-V!!)hHV>ob0lNz+hBEm#f1enTfg?fd_^wSALi;QMk%zpkc|!0zRe{4 zH#S};AK!GdVWCQ{-*;QU_&0u);Eq2YM;A>JGVZyx#2g<+!OOpAd3s%jikHjaqn7`sE)fF_y39EI%AETsWDCFhvW`?g^y z6U!xO`!IZyW*?y4FfsMZ z&4YVf8M&tkc7?umi~6Gcp#(VlpubOJU~tXM#+FiDyn){P*A2gVoMY;L+6MVt1NUP7 zYnUbeO<4c5I6Ykx`{y({?K%9;zs_41UtOHQX%}X5V~{@L-{g}x^y(eo7Js@~#*!c? zNprPpKAV=p7yG5g8uStaym0Y)@$edDlp1k_A_HCk%yJQ!rM=hXcAk0V1wcjyIYL_c zqygYH?+F6!8;{6$U+yNCN$AQ%QF@rJv@?O-+fNdFJue*H+>n2EChwNI7zk9%u*$>LRbmD*YO1IvTA=aeL|3Q1CdCiE#jo0*1LJM2^1F#^-Fp!$TL<>JLBVRZix(M8{O7paBvy!3yQS9B zPRp2H#D+S@BZo7^M7X%Pw!NR{&E?1^U7^tcvrk8*@I59<_(C4x;jw8|NEd&?)o^bc z8L_jsSE+MWIy^gTcG`@xXZcH-abikv zgQ$drM9xP!^&hdx_=1g z$-XpDI2Ho&H87w-lGoL?7AI1k38~gKRvIw6!T_oMb9uIlOUzd1uo}Gl=9XtIEiH>h zXZF#A^tYkGfyR&-)wc7s7!E)p!#4rc$;|+f zMlwY5J{Ghfo8ggm=|Nw7?l@hnc0Y30Xl!64M2Ny3e^60*u6YWGW~xH&16*SFl4+~Y zpASz?P+gopM{DuQ;umZ2V6WpoU^xIka+dp3MH;0B5FZr6#xg*s);2|fQ9=R&_dzyJ zw%nX5-&8rQb~Ay!#sS8;yC(}LwHb1y4OvzLssWsfXs}=LpR&xEz8<-`8iCzhBU@Wr zQE&*@Qw!pMDe(q8UP~+E}wXL1q&8F|Q#m)zJpLw>O637i24m$7us3%b0>?(1-91ue78QKs8 z(CP8x$KRxXMp6iToIwC2rWSS%MO)rd6b`xZQC7yUcAea0J2(H)@@LY!93_6-O9zab zCuQ*B%~HM7=E;bJ1^Axi7Qh5DN=oM_b$?E>oaSbRbAUxPwY8N7 zd^?yVY?`n2RwQmtBp^sANR9LE4!3@T^L7Wm1Rg%VL9-{{S%4vbS^-usn%MiekBOZa z7r93iae8`kD=-Sr&Tp^=mDFZ+TD&f9E+lR&7WY9D=(`&`);9pD;<3phyE(5BwId~Z zI#r*?&fB5+wW|oSa?Vi>GCa&3bh4f#-&wjCC{eF{$*}9&v+L_?ug5Nh-`0u0~nYF`Z`>GP-jn1B`$Ea1Bc&0 zZcvaYv8C*W8ApoKbgPj?v3(p%Yis9&xdHTPdk`+5VK+HG6iwZ`cW=>O4u2%&@}03; zUP(I00AK7h#z~$kT-%I4ZI0nqd563j0F)cCxywG~55DNMH0=ikEH_b@o*;%<&fx8fkqJE|a=}mT4)|~C<2s7YK z9j_!uh)jU*A^vrn#5vYY?h5!&f*!;CUeVMgpn!b6_&~bD5>HewmEAo90dvBduyfQy z<0fRh`O7{QnJ?h8360j}=;%(q+dblY?X=T%*`M%IjY%%4$5|*HFM++jJn(JvuJ855 zCa~cA)h7?B+wVEliI7++2ub@j^mKMgyD9oo*F`92I`y8~C;b+cU_Nj{Ad&cZctl<~ z_lImVKb+X8=m|H&2m8(d73Bl)4v=Ru8DIGw_!G-&ZF^j6xQb;-)ZyVFV43{MsWJcZ zDkA#F)44qc(#VPR(2V#l7wE0pXl?Zi(dJ89w;$F+y{k6vdRRlUg=|5JZE_?Hqxo4f zA+sDXRDo^aVgpax6Tr;j9@O7Q%NFoU)$EOC0LDib;fYjWBWU5QgwItb5&(Az6BAdhICJ(ofqKUkhhQCkIl?5eU9Y< zxJnJ$EAPR?#H_O_7~^d6SU5O1*kJ4f+)Ih8!;VRjBVdUwEG*2GIV1M8EZd!XhVd*7 zqidm_;d+kS;|x1xYCp5bsYs>>Iv+8q$^H-*2O;*(c4r=J3OjA!p&US<#*lVVVm^X! zr96`)6{-s_Z}0l-Wcz4QOY0xx;dKJ?kFt4o0?8%}$9}$@DK*%1{WQ7l?2om+A_V9R z-7*oB*hbs{7DId=Fhn-uf%Cgu38HiHA2oUb|HIJDO~6eBe5;YvDEN@6bEQN`thJ)j z7V>K1Cx53uXv5J#ZT1bA^aWDWzhEVO^M{krZt79mH^)*j49KwC*jCGVE6>?V4-KiWV#AX z)h-qXW{P}LZnZQ75!kT~;Q;eDcAhLcvn7dCq$^9WC@J@#{U2_OW)nMtc^e<0SWxLp zdd16cKHwH$aR^rUHHMSu-cxV7?UXwM2$hg}NMG)!HUaj={*&}uTm<+w3gTCXQj|S3 zzE?+D^PQWtd*w}Y?^;i;K-p`}_5FH@hC)5;T#vKGH~anw8NnEgg%i_dRv+a^_xh9+L=C{ozftT^z7`g_4FbZ1A z^bD$fc^J*KQaKQC3gWN$HKzOD`DD<_Bo|H!27E9V4KKH{%;oy#u+hf z$bVtBR^~HMGS$hIa^1gg`ORVcH;`Ps?}7iX$1pY+d;bd`3jEK|Q1QQUq3!>S3$6Bg zXQHnD104Rx`>6?OMO=4xb=udxK8>^L-v8&jhL{9KFIHXz5=gqP1rW5i)E`CKKLS%# z;*tO$>+g|#$9~)etSA!vL*h0xaC;1D{r6A~%IQo){sW~V&LSz=&AjM?asK-aM?bv( zug>#7@$Y|3@jppuWB{w9)$NusPPYHo62fo_nzBUi6qN=C2jAi_Dh%FWFc=1?g)RWZ z2Fd(0qt@mD%j#P#h7afsz=hTGe;!zLCz))|6$LmC*RUIu@2&gGKp19U4H^YM{Y#I< zM%%@@BjsB!8u+_!ggFMWtm2H57C(6Ua zliP%a7P1HdngDer1$M+ZU=fTO0ZYJOFoU|g?st4_?%LzGJ6vUjP^SvmWdef*9JG4L ztX7B55AIY3jD6NEGyIB#mB%2>Lm=pVyJ+#t{L<1=`v(|?2jrBLR{-+#InAcQ(ZJxm z+PCx7sk6@lgTeo9ZgSn9#|ID@H{Ucc%*t>lXoo02vds;#XIQ&HyLZRF^yus?XrsU( zz#t7{F#u3}J(DAk{6Kg9=Xk{bf*=2;0LFhrJ9x(m_E2bVY=2oxa?%HRG*gUsr~ z5rZY_nz2)|Yw;H=uB+pv67yeB>Zg`Z-e7AeR;udIBqz@ZGBu18 z8rYFiQ$OLr%#37*pJ^0l@sOD)szdD4jgINjRS`HnSJlrUp5IWhE z=tL_vdtO~cO0}Fw(TBILDwfX-}Kpa#nDPOX?pAtm)-MaWn5|tg2AnM${CukofRPhd35zT+Ff4MpT-BS zat6#R=d_78?<;a8D-o-^D03(3eDdn6%r8)@RVyzdWod=kLuJ_I4Nd z&AX0|BpEB6D&n$kFyLcM$|~>yVkMeVm2FC%C|Nu*@wiFi-K~0S1-!Qx`<#?7HNvo? zm8&44{T5?74oO(S#gp)f6QQ;jd383-{qQmo4izmUwim7kyt8%i&lrAklLi--&1XsQ z&r{-2zp)s5F3-}WeOU{3$TpDMqIwOL=&-Fih8MBOJDBcZq>>FN#?oh@2cR!9LjiZ$ zOPqVaKW8xH&KD*-X!@WDs2FCw=Iw(l>3m7N54Y;b1g)-{s-ZxoX(MdS8XjQz%8@zi z&5F4^368(*?`tZ*jD!`=n_J1fs~+Rc%1|b6=Kg(vG#l;2I>5P8kkFW9;>$b_gS#|j z`H(ftdwz*=PV8yEK3+N-;Gb;%u0ZKt-86EbhkXEV{8p#T`TS&X^sqjC8HdjikpwT$ zL3j>-X3s&dhk5L$MYSYRt)(APUJf89=WLotvN04TH9M@HL7{XQhSry7GQ#`%&NZf( zx><+8dO``_kei7h4aIp2c=qlMWrDAo%oq|7A78J`=+OCSDD(rQN6giIWomUBIRt7r z+*!sBQ}LZDL|uI(w-Xue)^TJ-ef3aQ1)USD1Zlt{X2&eli&A!~)v z)*`~C3t742i}S|Xwn@xXr1}ha;$#P)GJ06lz}&#tX_Z|DHlnHnae_^NN}a!GEWtTx zvHhR7BceWC=0(iWUvAa4iMFGgT`xP|>~cDNTqnd4fOvgs-nesFcfXB&Po#Oj4V4K6 z)yp@2)1pCKu75Q`_<_|+FNQ^XqGTW|>i09Dh*7l9X+znJgw6Y#VYD*jdfUboIZ~Lg z2Q`X%mghv>aP!5|N#fwRaiFMa#-JMceBL=U>8usc@QX(t-Cq6Y0#lsmNNiqWwg*%C+ld+Y^gW4mxN`v=1UU^e@?cNw(u5D~w1G@ex$6IV#=jGO~)6<_E z*&M7D?oM}dc5s|&=N{ly%J}YP4V&Sxrm*_(x~_x{dm%IBe0Nu(Iy1;BKK#kdVuq{+ zWv^RC+xXq`6)_V<{O+*kVeevs^HFl!o;NQe2Jb)=m5BJwl~a;Lj$PByJ9+u=A%2@P zQ>9xb+ekc)Gd!#~TNXV`V&*OmA>IOo$!Xgh2VO6}pKw63sJ7 z4>cdvS?(6CfUj!ORXdSdQ@f8kZVGi7h>r^Cl#{3 zkh5Mx1h8!Q(`W}y4F)Qd7IVR4+vC~g88-t5?xz=|HY6Ft;zgf)m`WU%C~n}0m?1!E zUGMt-^zm4p_RF?Dth8Kz>QQT8330IKH0RY2J$&yz9H!%z{Ia=fw;)&j1_pyvyX?7p zQFEq2*`c}twHfRwcQlxrlw$L0#Lkyf3w@N(;B3aI9cIrbdW&a7jWo?-HyG)9^}DE| zX>4HWNZP%p@`HvLg!C>Q7wC~Z5w066U)+A*4N6m0dDz=27PyEh?nA3rs1F#TH$qg{ zQ|~6^x2`i{wQ)D^tvs0xT3mIgsj6z4c#?~~wzm-s$mfwTxIyT-1)pk}q_pMG)q2yB zZhF#|>YQGfY_S%Y^@X51=<7EwY%fD?o5ebZ&EbsU*wT`c0{|P3h@K1*)uf#vb)|c! z+(5q7-&A*d@Y)@Pkt-Jx(77+QG*@#SCp4aiZN-=ieUz4CLH^)T`Q&$W=J!diX=l~@ zzllo?-*&Kfc?-_iEBz!U3Kpkqep)T#TdiFd*dTh=aWbQJs;DpUp7FpanP*sWdH2== zn)`x&RaO0ZPv539qP6c*E>8I5&95p=n_sjYG8I36^_W{oEK}wHYF>u0Z*th-C0sDb z4P6`}l87bG9kE2;^`Xb2_b?$;RViXtR?11No=tFc6^S`@w~mf3nczB!ni+pz^k+yb zmU$6?CxHmpO{3GAi2ZWw`alxc=W@GIzdHxpi^%O})q@q}y%c|QvC_C8nf$GBYF-&v zL-#sznoG3ZJY&6d%9P{yi4k_z)Pg=P$&K3pOA(0>VzPy5Ul~2qvraA{j8!u2qg~Z* zr?CAeh%U#{fWN7jLoA^_w4hgq>g4W`QDvL;I+DVEeR4Xmp~u&4d&!1&Z#V}`R8n`j zz|#@4%AeG%9bexo6G0dF$qvM)aFu&789Fs#gULJ-^zHhW2%m9|@ubD2Nrp07Ty>jn z1wXjb64s|sFX0U<+A@Drlu*BCR(dd^x%RTH0Go`_Lwg#q3)YOK4x76*j2(uPL z-A*=SK#5sqlhEPfP_(+$7WCKmeKBPlQRc4IP89{MdR#hdevrDkbFDA`&?p?{(XXs?)x(3 zfbf6aN)!p_=V8VgGxKO>U}g#}=-%b6(BS#@`fc*+QzVu&Hmw>3yC*f(uU&Odc@^8T z87Wuos@R`f^S_8aEfxm4-;Px`>E(=3bO=XA-N$KF!^OoN=%FYv21h{-q zHg!U)_xW!J3L0K})+OG0voQB{2~MxKNe`)&t|mBJihl2{27<#m*=^L(Xqp+j%zo@& z6cyKpl_5H6zBfH*X##dWr3JP_u+ zKL}$n0lc%M(o-BLvDfKibnW@H8h2J9Dft0QB+-i8kW|N~v|`58h0q#Cew@a#Y}t|R zS937Wx&SXDjogUVa=_>GC^?&Y89)d0D^+W9k_(P1yt~Ki!U6k{_=hxD<+ZtvQ^nSD z(YkqBhIDVt6OG2x>Y@blCr4TaByy~G?2_l2 zru7qo{MNFAmg}(_*$&F|<%lK1=c?}3HbmMjy#)bnfQJD;i6^-KCcobf-;)n-qu?o4 zv4nn6Tv(m2gQr@x`1f^dWJe?Fw#?P(kW&xuWwNTk-RJ~#r)7kY-sY~dkF zb>aigy@kF+ab)yY*um{NL35rt5yc26@zQMhyox=FT=cLZHp(@0gq&60dZuodxw9WZw&-(fcLG2xB51Wd`fK8XM6%>k*lB;o2#b z_&1VTklm;<60)u~U-Klq;nhD=56!9)2)|AiVy-#twHL zHS-|eKM|tpV^_!mzgqaf$NU?ca%f6FeDmIToX)WMz*cn5+@=z}Ni~G?gz@J#a>F$+ z@l>rS8D?C#lNraAr$OsnO+tR&>P#rzvW)}UavoNG$Z@q({Aa38wWm$J>+%&#rE|iD z$6f$q08-s2&&k*Ikm<%{EN1w=P*vgi_`y02I`@i*2`ze4b2un(P_I@I?AeDcI|QOe zE#Esug?BYE3^Aeh=_T(JG?bQr2eF+W^Q@YDE@VowQyIu#ruZ>O`t9VM4L8xc3){ki zdJf|jFY8NIwZR@+=96#jhXF&FarNuh(;ZX;1|#Z(g74mzn<#ASz1}FHzrsk^xkNR{ z+Qt`E{A9Tp4`;wkTheXGvz^;@(fWEnDob3IN!!OI+CX)%_FjkDU9|n?pM;!dYu>Do zDw*A#%0s0Gt=2C>y?B}T9^4OJc6WnWWXtfj_`QA*?18!z%TTiMHq4CPi|!xZt(CFn zPZM{_EY+-wL{cZP9OA$>3T;Y*ea9W=MU5-#4hG~%wlDgjn%+@6<6n9kU?YtK;t7IIU zw-r8A;>Rb(ds$((~MUw_Vq>o~dZntBM~OMwLI)fszitA7-SvF%Ja!aj><6 z^>+3*BcpkQ&K*XC4#`q?dpk2yc-*45VDN`W-sM)5J-FXP zj7b`XPA??gN8V|TefK)7{#~UgR5N4AdymT31ul)F_iT_fv;U#VhfXX`;@$1U*KeU0 zn_|D3{aOj=t*0IsCK}NhI5-?B;DE4ct33B{JF$j@2S~9F_Tjv7zw*qB8&@j}XLe<- z_xJ6f16rai@oZk^{PRpcY0-t#K|ZIB^=-~qDx0d15w**QmyRDNj?lYl0IEwVqE={tWo}folUB{7mVtH`I7bnYw0Dy)>3pq~y zmG2jG7A6IzUrfe6?YuJk$}(Uw-_t$6*1h~dJa14|1MQ$B_{qEbac9A4+WDP3$u9Z5 z$g>#(Wv$uOkskXKwT3|#KcNiN;Z;bca0TMURL+V0&oYYxdNb1hgr}S&nsB={XvGZ!(zmAOR+9@xlY;V!4)9elmr^(#67292zQqdZ#T3ddz zcP1<|4^aGtwZn4(63qL-hRNlnVERX74leQr&DsSHNeGPOm-)SJKqUC)Jo+Y?%m{yM z%9ZBYT;5|O#^m%F2P?tOP!ssFFI7^H)ga2iax%>(-3cu0Gy0CCaV$dw(8NLwI+_Y3 z9`Rcq^yv;G%~RZI(lpdFCoj?B6Eyo(=#Q1}*-~e1#BX(VA6UMo$@`#uR-NZ4KZ9O^ zmqN^q&}EaiGHmHX!)LNS4kBSlw;1~Ihdih(Bv%HYG5V6%r#Nz0zr>G-N z9)B|JR@*zKVvBXXdc|-AvRVNrQ_4;*dG~`(xBo=(N0{b-ou89mP+e|tOE(p3^$|3ss=1j+cY_Y4&VOxMg5C4%HlKU<6 zn$b-sd&9rz=0{=%tsMjJr(2X820* za9bmul9OL9z^)N3sDq~^b>Vl%l?51mFX74nNY4-F{j*W9r*5_s@QJV(iqJlnfp{Fx zdGF1u&P8v6(HA->MsYKP*Yn|FKcn?MMJvx9^Q}q(px&i=aYaa@bV=Ild|X_N?^VQv zd?62^dlvJh4(xC{`Yt$qgVYY`_ZtI~$ z)u>4=aBmX9TZ_3(MWeWM?Y}nR>&v=(e@X5HKw`o33->zqh6@%9Vwx`O7PPUFX@!(G znFk_E^7PMtYhNrk_0CAti&?v&j=np2+L!zuh5|;nM6Fgzz5y=~8nq)t{^gJ-F92-0 za@yu>>sxiI>+Hot4nLXy4&6u=bPJLW{gRe_4_pS?BpnU#-nro2@eux@Y9KemHoxg4 z-2NW=gB(wcD&|FKOk$#&uv|lQ-mA~$hTh=vc(fu#K6aNd^vk;X8eyd>H>6^4KIgi>S{raHE&@~_BpPPzK_@Oh z@(P>TM8E_~iL|bx?bIc9K;ZMQir>6aSM+ll4U*FIe2*UMSQ&50h7m~8e*M^1fPoPo zl*-q3Q!7yq3$f|dP-nYJ^3CctelOu&R5W?xCZAGWi0=bB+TGDynS8ifp^e&~@*ZhA zJAtdL7F``9T6`(xGGy?X2DLQSr(Y>ZJu+(Ll>Pix^Q|o~W z994x7Xji)^*O|(vhmVT|0vGVr_B?#_LdS_0w*UE%Kk_DBaHR3FSsf(~MV+n~jEP*A z?JI{Ng?5mi_8T2MV1;y$OAhs)$WmC-wM59r`ZMn$#FAjm`s@h|63wxq>eIYF6Mb3d z+u)YwMnW9pdOVs7z!JyQ6u;~Ahk?ot)0y*#$&&DRp4(-DPz)6rH1nMz_vu^O*;4G~ zHva}J48SN0Jv;y+g_a}&l)@o0QDI9PYePNDj0a;jP72EdK0;(u?^Jm?o(B?)=Y6CR zv0%6}g@`MQa`PEcK)lYz?3`GZ#pv6Nz3a9QhJ81Oqz5`6iGRyr)5;HIMX5X}?Zo#3$@?jM zHL~N%am{l|BGz60^$i%L)VmXlD{uEtW-S$a0Wh}Jh#n7Nw=Zo$1}!Xx?Zhz! z9PqRJ2K|T5-&*Pi11I!XubY&$U&hzqk&$_(MM~fK8vew5ud>eOrRv7BAU)BVO%+td z*=cebHut@%PK&bbM`S!d`!9dH5@x;j*b1T(#?=u?22jGbX3Bf%{Nslm_`e5C5g#_5 z1ygC>L?lvY1r^RNaPL%kfB);u`RDL*c;Dm7yZ;N^;vJIO71^D^#`zq5%HA`Nxat~Q z#BWVNJ4~%eFu*5E}BlZl2149Zvt0nNS+bem`f; zuhZi?%v#lOx~l_^uIMyU-=3+3!mg7gHb7Y!l7&T>WMW3l!>WaLvX0YB1rZ>2OLs*TV{vn`px&hO;gd zaOBJu&G*_}E#Eyb>l!@_1DvUgF$TBPCqt}(CfF=5Q{y=gG})en=U*TLvEJP3R}v0= z*g91+2=7(` zvwnNWwAK50tOVP~!UQ>IJ%@L7fa#ZARJ3bwy>1XF|CQwWat6Xm^o?w>YRZ6`0Y2|g zq`PnCPEiTK_Y09Da7!8$TdD&NrC)&wPYO^X#+3_31BHCLS)>b#E^c~&d0%^CBcHmc z5pfGK_E4(`&WjOz*b=!U=bhCvt!f^#x_oZ+H?_?fK&ZR{9qu#X;kgj^;4y*eSfhu+P%Z7pE`j2CU#G<|T9=;w zki)ieul7$h@qTz(OMRf(qR;L$m5+mwynpvQMVUVh3_kGvQK9(xepl(p+J_9`wm{KB z-H;pe3n?E38s7CFz0GR}M&EQ^fkm@fuJ&MyHW#Eu@rrtL#yn!VJ0M+ds4e38kWcpg z_51Y)&xMzORH8n^4{>!OJqm5dnAB!HFnPK>G0mWV&FyH2V&+r=A$9apn}q>e(queD z9yJ;sPcQCZY!KQyWJapCVlhVPG+C??9S&(%W=U88`X2g&bpYY@N-Lgakes(gViV6~ z>>cK&vmo?G`+Lvf4@UTYa}O?^q81|HBfz8xk+Qx@_M8;*zDm1n+aqK#u5p=s$&MpI zVqE6qdrnP8{XjnVHe>Av8nga)sucsHyPJg8;GfH7XwYiik}V0x1H*R}bLS^ZpgYIV zJ-^lS<>enh39q3N1tn#mXWT!@V4%jfN3C8aR+j$eyhmbDmoy}tSL_l1Ol;taM%u19(5U$k&_da0A&SwgkjRG z3Bzdu%608@K%LcXSrZ%t18rr6NWX}+=fmI)7&1ozIsEIRXkRa&(lbexeo@`_M*Gcs z^S<-+zqxn}1v22tf67Hi%byNv-hU%{*m^Ho^f>f6Q1-#)=7CT9UvuXQ_ZSALko{BH zkMX}Mvj0CwYGVxk|JP~!Z`3dRXTF??d+Wc6fa2^>nn2LNd6ha= zP&fw01ha@u{J)DIuz`sK8y)@}vclKRm~fNsV&uLpui?l2XXAnWJ>aBrR`W#P#3cKl zXOeY(W@mR9bDwboiGK5PhqdNFF#2O1(O)VLK2wx|X;qq6Cwbrl9R3&O|0A{kzeR-& zYpB&rmELv7pr1b!>;6@qhJkT_GK>91lx6xX`r1yP1YoWgqczXpNv{FSO+zx5_QX(kv`Nd<^5_ICEy+;h;fS5myz8|i?YPkDEmK>!<$dDW6FE9 zlig=O-==8ywS76^CtsT4g2I9>9!_eCt7?xP{K>|c==g|G^*!?Td2s+?L;qHwKtFp) zbGW(G>kWLCN83V~e-ixpxg22@Zpdk(mebhn#F8Jzrz4xNL0j5V9(3PI*UZGYE{Mg8 zK0MF%2woH8;%&OvlxRNN@WoAXY(h^1buB00-g2}1OVb{IP$ZkWqzn3$ic)*`uD@K8 zrCyxsz~dLeW5(Gh)vSz9I=BK8?bPJB73#QezjW~E*ZtVIzCjQ)Pz)}j^YLDZ%6+jr z3lE9D1qNHqkP{M}@<&OQ)!ePuZLSU9n=eWnSfBJcMO@wEl2Q6x*RAJUO#8;3A4=#s zaocBj R9t5ZQb`}$6^9=!+K&_4+#Xr1|ivA&|79)I)V(p<{I#!^O^6yxUn{gCy{ zlD0INl?@f_tQvm;#9g8XHoV6+py@jItdm*@%dCOk3eVWov>F;A@PI^EB=Du^m`w)B z!t0zLqd%3g-q|jdf4t!!30|!fu?lSV^f+G-nbvV@Fu?EO4kRc9HUAu$if=4pGb`FC zwlVxkZC35Nm3C*hxTctAr~Out?MqXunl|-jvsbC}Ds$v*9z1;OX(z4|@rewUJdA(G zbVgrMob?sCB4d1krQVD_AJyBRu4xJl`?St16p$WfN#_z-yNJ?XQP!`_Q~9=gx{ons zT=%Eabpe~Wbr5R9SDgB3<9*Q|iirZ;$a$Mr+chDEvkk2AyDw9EZ9G>1kqIs~38+4- zXciLjVAG3@ei%843B0{$Trd`{E#;p}u&#V7ws&EU)6bHH51DXO zuu{{ygEB&wN)H}A!sX=fYBu-Hd43EK>)F1y&D`-Q(9qR1{003Cl%E;ETz-+}R_jO+ zf0qZ!sqX3hgG@2;+L-W6fx{I^`zqLgEjqqgQ9bTF%X+LUg{{Y%rsB1MJIEltk3b~1@&Vfzc2Y4ndwYVLfnQ%=-xXWi z?e}iZ&k1S2JO5G;)0U63-4#7TD+n!CnpsPw04vFXFDYm0^+oA zGe3OhJ&(RNwj?6nByajHw;TSY;EKijT{Fl2S704oeM~XgtsTz(^xp6B7)Q9t9Vo?Am z9`+v}VOEmj_$a05FFj3OijFP}Pa75E4mw$r2G+lwLidHAa#9{~EEH8brD1Ken<~it zaH`eq5e^K@JL%oek_{y8U(4tAUQNC%zdMpn2XpVBmLxt=Cyd3;QmG$wnyvhfo|LG` zjJM`Eh=GCU`jwx#P;B%W>>1W<4}wHhW#C3EsO_fetEFd1i-(vh1q)>*(`FLt{a;<; z_8cDf6u|l^FM>$vn6`L9+AV-s*BnurS{<7N%{jI?*gNG1g@r^W z95J%?NFG5=SKhV!>NFr}x!!Sar2%-kYwncgQSS$bP)Uv0K{q5yR^t5I)pSF~e)-7I77SSMAv~`hmB+Uaf0) zw_(p^Rp1_=qzcvRj20S%$CX|X^{b&XW+PTfC9$USD9*W^S(-_j?^w>Neqod|Em7!e zd>yxT{8QPMw>C_*cH0qY`7Ekv`%a6K>i_E zOr1FHm79Sieb^|jOh`VHYyF{vu_UDXFNFiJVYuC>^}jU`j_)X-Y_=~%CcxFOK%Sw^e3aqbi^ zmb0(ra9(_&{+}Y_VX}pNQK^-*E!|3S*e;Y)4o`K)!^wE?q+|=B1pO?NRa;RiQogPm zVsG}Td-h7;t8i-Oe7LEn3&;EzcN?OpOoJ2OS0`&F`gMF29bJsReZ>XF3%S6=W@wC3 zbnMUhOHa~ZBkZYa(tL9j&r*`@=GjNWph0XcXBiPW=@-tl@Gy@-n|ZlF;pnaUuhC0O zR#9}DyfRQbljuR+xvyv9_@b2~)=c+!Sd(=Q{fC6BZ~hX+c9x($nDIL@&~A&eT~X-g z$Kz++?OwI;eU5usPGHE97PG1#RntDbMHBHRqQ}ZSdo_N{9h{td$}h9NKKI~JdHSP3 zZwaQ>0V#F`QC+fVA-z|m0<6bqAEXt^3O|Br&%q^ikp5@)=L=UqOXXE*!WuGrFScBH zlVMBe4=|I9O{SQW*(0H1pqg$7?^O71Wb~Y~!?$4na%Y2M`!&9VkZsp@`~;3g*MCRb zsK^YDoM`XtNI231O(}I8On_Cts&r7m3{*d-e`i4vGn#kD>w&1~z z&ZXzlcA7M`F!>;LaVbC-?o;7z!L)SmB<*Xgj@$2^IP;-J0tGk49tg6+pOL|;L4-%l z{)pEfjlYf(8#?IM(ZCLVNKR>bZ`}$`cy-n*|_K zUCh_3gw<&~WU^FRx5hJJx6aQ0Lt{Z0)*8^ggx{jZ7XRq5@L6>uA6QJg{&#`_grvHW zCsX9<^AR8ro8KfT5?owloshsg@h3;1Tf=yQiR0UMhv!v)a>(i2CuAw1m#> zx6^v4REP#KDo*GBn32AVgd9&e3OG%$%(VE?;$?-45Wb{*0BR`K5}sMW{T*iJ3LC^p zxCAcUvMW!KF0|4wh!8vc&w`D5KO$JgtUAAIJw@GZ=L+OFU>27Hzc*;e4xpC{jQg2D znwR}$$!e0`C$Zu?)qd2Y@25{V_GN#+sx%syuzBc`BJq?%638r>?=uc|#nzhb?zvV# zjMqN}EGfOH%KfuD(3Pd2db_I`V*_(&~@R;js&vAOM^YsPQ(NDY|xt+NF zd5$yBtgI@>`EimOW@cxT4=W8GCMmHLxECLcK|U&M_fE-W+4q9PG_@{s*Po{5Jk?CvL|LKvPw-Qg#gf zZKiF)DV*EqOnD=?v4I_?2>WhjKiIxEEWsj)y*-f?+E8pI&SVkA6MB1qX6|W*G zM;R`B?MkU(iUvtv#7n<<8p|{;|Kg;iVpZoZ_Rdsv38SJVc9M)2{Ik5f)EwM#rP!ZJ#`E?mTl z6;l7PDLqM|U4JRpRfMzY)h=gG+#Igw%4`Y=iHIKbmyYVi(Eh453#BA>)~}9QnJUY+ zg80WYisrSRD_e(+YO~o<_Vvls*73wU+x%Y&$CbkqK`jy_Hf~v^wyKSmgYv>&R+>c! zj=w10u)A?{9tpsqwQNb5($<>09`off`@&mH%ozJ1-cB|ECF&b3Ak!(f%z6KX7;~wr z;2sr+T8~&K%NUF%o7M;rw^9KdP9tJT$WcIdyrUDb>pb6JfRL~$h*}4B|Fh@Zyb{Fu zUwh7*@7%&hg?n0;2Eh=jGH8QpaVl@u-|Y*@M@>|vU6Usg?awg$SQzoIX(MLtn!h3~ zz5R~^l3h*6OCJEw^3Fu`gHF6~R$kbToSfeb(EBB-^zXl+xWWK{xMB0fMp}^uC=K}^ z8xH> zIhwx;$P1!kL+$b8#fPmnD!&&Kg@2qiORPvBe6ooW^AaXZ&k=q9;u|x+;(Ju~?J4n9 zXD|ubMNiFlnTt@mKzSBt`llrow-wL_C`jZl zc+2@9;$EQ6chg;$p}CjUgE8BiPqk+GtQnq2CVsQREug6`KBj zFvF2Rm73_w#kr41ze@v`#ecPz(C*TU(wi2z^OtPEpcm$|@27h%(AAe(5^~ZjQ++}R zX-!t2oz17^$em^B(lyg*QP?w3sY*||+SMeCsouem)R8@zUKJf~=IHXh7^S$td*iY; z8wIu};aqZ{7l~*Dc;P)bFH1SI2lHyTWcuQr(@pw>y1aB`^%N}HpmrC=lS2DJnPzn2 zNr$|r_1@d~U$%0Yx`8Gv?3u{a=iaPutW)My{e(t7);NApIvf+}QSB;V3NCi7L~wJr zrKIZ{e4oj5|1C-Pg3DAkDKr2YfpU&P<4om+y;bD~H39{JP3z}}-}ycS5tD^bLCj^* z@eh>G!w!F$mk#Iu-eM(w_W98#3Z~5OGAxe%kC!Z!&g8_n1&w)=#Au&5P-kZeLcAwp zc_NdQjIx6C1|K93cs-;>E;)KdJaP=iGw37M&jtLTss)444}|BZO))G3rNrR|9K4#v zu7SVEMB+mQv>)*gOBrdhX5#eWc%jmAU%{$Y-GXg4j+wmO@$=|!u1-R#$itEw?4@$S z%J$~13qTF)Y^h2x*wnFQjO~(+s%Fz-W?&i$E+BvveqAH88@%cOu-P`&YP+QHEQ8s7wN)W~Rd_dg7 zZf-nT6cFhp%)C0g?Ri-)zr@ebTi15tAIgVls-$q!r)yZ?oC%=2m5)dZoWb<-j1Sgi#h!RPoU!;`__Y0T)2BHr z6YcdthsScfyz2Mcnn<i#rI_ zpsuDzgP zis@rngGQA(iJbs%a$y4l+3q0wWWDFhdxq}_Fkjx0-(5irahhWi3I?ly3pyrhDl;m6 z3ZzID{_Q>+IhFt1tNy_j0B_q5SM5b#QDk3wr}ji<7< zPzWvW`$xM!c!ir)vg?MiOdG_1OViIUEaL0`wMFo(Ijlh+5|SP6%^`PPNkrmD_i&>@ zR=uGe!S=|z+q?{)O$u}M+I7=Rx z7}n9}LlcjT#dqSQ1cpvj5s%46mO0;A^Ynvx~)CvEt&u=!jrwV1r**E-}=yH9} z4(ENj;xYKsSDS@!v3+$f2HiMo;Z@X7Y6D^Ww==~RHP8b->{IPIHZyib(V=k_mBvJ( zG$P4Br+rxjXY$HUvkwN>L0>C|!e-3$Jv+fn%#29tdf^^`MD!SpPk@Jv!@Jf)BJaE- zo+nM;)RQ{KXJ~;QKx8pBf8gW?d@L5xgqlB{NhU=|^g<2{PC++_8d&adGianl~V6UV!x=_39%SD=l9+L_Nf3*fR?|sNj8g;aDDL?>SF~$#%KH} zBT+k$LM%zMO^jX~rUws_(1wWo+uNX@KeI}8Q|s?>v~9)5btF-PlIDF&GJ0uS|Rrml_eCOHm*TkWZHg`b8)gU{T#W!ZPj8Wpi65e3c zb8cLU((yAVk1GO^GkNEzGV8dg{2Yhx*0*D3w<$LHkvEiS8IL=)wo^GwzN30%o(tGK zjBf5ic1Qy;wRkc%xB7q7Dsb;nidi+SZ~OMD+cEVoI}5E&ZnE%cGukUjbX5*G>R{I- z1M>)zdB#!JfHR!P?$qEJ+9(jxa#=kr_5N_(&t-QqQZAWs?*cPND~e~TWG^9Df$wCE zghIB%C>2Xk?!KWtB}&52@CFTsL>ZUb%#2ZO%-o~#qq+5cBq~4r!@EOc^AUG%lUv`V zXC1y?>1UNha+$Ob(_4nv%p?5;T-2@)qKSt(HG=T|{yblAhtmT&u-lrUJZAfEpTniV zrWh^W*9E<0a5eUTq*6`ty-5yX{FLdR_GvbB@aF$UUH(Y5cwdlQTf z5J*f?n`Xt8;dg6R>hk8yvg!7pJL--Cg`AJHeSJ@-0>w_v1SEt+ynZL#e#vrA&JQ_i zb4uXA!0r>)SqRD|r=pfDyVqOk7&nK`8^@;M3ACC|@AX@D;^QH)!4mVBdL-=|Z{G(v z1go6&7AFR7A1Qdw5l!8d%xsy-qr_nfkTx6AbP3v>jRb|0nNN%Rkw#)Od32^kUTGNZ z!e8uos~laO^IGNY^(d366C40qeqj>*0 zfjRre^vJc^k}uJ~o(;eadMml*CRRzO-~OTnmylbRR{bKp+5oW_mPDZks?~fM5!6qK zwTn$W{PeTe@+H9>ehTrZPUVSSug1dC#S)!N9hH^@K5t?Kgg*XUqCe>Qc4m@fB)@ff zA&xV7ZVD#aT6*Nu1@g(Louk(etKMD??tb-!e00Jkv6hv^$LpU8d;sPTyF2G8>SK#gP43KQqMJ zgAM%A6wbZ7(2^tO`jGmmg4DY_5}vF6Nc0{8;%Jo3dOY^F#7j&^#7n6fd1f>pf0VKB z%p4HYh)qH65c^-t7!96F2B-65;XWh{GvV-?+6+R5p;woO?PHq%GVFDS z$kWfu+OzK{!qpnSXkKN%_~SbQXl_2OgKPM7bOL-$PUlvxgg=;1l9&fPmBp&qMR)1& zr8MmNXG?s}CH!dbG$atTu0m?8Id_*!FOxMh$ZrIz16)fO&9!?tG9B*sr#|8f!1q>Y zi+Arjncs<`6MO1PyPMcLv*NKTPEML79tqq|Y|o8k9onnUQhx%DL$OZ(1rn>A^)%&p zZS;sqR(a&8pa^%}E?2WF>pY#(XrpwT9V*Y;6(2WuDM>e)+LvwhiCGnPE;-6~Ro8kg z{E{p8-#L(X%*_*HRt$oCPZ*PLsvXJ@yR}4srdKSJ(STeJYxz{#SYO*mB)g-SmXx$(Bpq#sWqjgOOJr zZbqrTJc2iqYnVhww3D`_*7n&y&kRgfC;PC87$Z<)j1DEyJ#Ah#d)22^`dzOiwM4q( zbn_yLc@}9j;_$u0uNF!o&!qTJdl%qI4ZmXl}YzZWr!{Y;E4h?igr3MS-4}a&AOFH!E#aQtY|g%Iif>=|{Dt zF7H&oy(6PNWhbD%y~nC*x4Ug#(@aSGD39o^kw91J|M;~tr8>A1kHHKv2|L(RMURNE zKeA)7dPV#3#rIY(Mz`ADE3H+@!9-d8lXJvW$Q=RS2(S|T;hxVOM`M3dccpPqEvfn_ z9;~dpz(6JMr%OP=jOUOyvi32#ICGCd=qH{f;9*D$Bwl1OY17@HK4CYC9~ovO9vruZ>5t=9e8tf*YO#!lJW@1HI(j>$awEQUm~FzKHlF988f!ycjqSC--b!R~sM*{sh<+9Vow<&c5%-S|HKy6`NzXGH11wR|HUbnC(=_MAEN87Qg#kS`Ep z_9Y#4to*$BXQpzK0XFx@(m9BW-w+IHqhP5Sel$jk@e-z4Sp9q-y1p;&o$NnYn&H=H zSf}GIk|=F>^TpZHpEB~pOhR{&;XZ>nysVT{ClPxzokKJA2;)f13R|uZLfDxC@v%=Y zQvgw5~K?Oa!T0=y$If)m}-T(aEYbE>n@Ov7ntF?L!U;M4zmzz;1kL?q3bZO zYae%*!5lw36Vd)V&0_;d<$^_CF1SV9TF*0$equNLL`*0xQ%%Muf8c$ar^fX1)^4dW zCMD2aJhP=rzp}=8f{n~{Dp|LfPRhgd&d4(It|a$U`)3xRwDD>7Bq@U5r#gwY)<|q0 zke$F#H8HNJfp`kMGUkQN3oKw32q+UIyE{sXETl`nbs+k5)nOY28(^c~_FEoQiB?&` z$k`nO`*i|&(+S86DmCSGA#pt2N6&xse}5;EUx6uwU3`x6GHKHnfwD%|0P zz4awDV!y}BE^VMZsQXZ`9>b_GUEuuiMnzNpJx&dy+9q+`z(=D4n(7?+uc_+23gm<$ zQs-n%iQ#PKU%_H}@?a`OOm131f}*R4;<^ISh}Cqe)Zl(?RLQA8R3uX9O`NOHYG;?# z^aBxE)}z*{*Mth=Rr1^#(_gDY(LBvzkogQsf6*d1|7A8d#1qlq(k}((X`Xdm5bSjDz-|O4rdB7eg5zHp9*_eNl!kh8^9XWlo zo}9#r!UZx!jj)qOuS*=RD2V7+)P_0pO)oPm&-|~F5%Rk50u|r7d@qdjA)Q=qDb@79 z(@@^?MoGp0cKtoEGghp~UvzCS;aU*SXX$UREKBV6L34+O^}EpL1~`0SYi4GyJd@Ae z5?l}`G(EJ`Fia1($^MjroYjM@d zeN8R*Cr$bl?MCX^(4XIvbNf14M4ZEE4WRc8v z*YhJhtaP0t+2@bw0!ME4xEZA=s5p zFVLzcwI)2L7#%`H6l(jb3rqIh{dnUuiqf@&*p0$Q^7D2@V{+Wg>_ooGZY26SZ_@laKTQRQ#kKh}dHO!vm~ zCC1e1vR!b;rl;l-4hI!qvrDsHYA&Fip7Yk+4@Z^u@Lb)4B6!BK-d8tx?SIg9E=mXb zNOSW#fi%%)JKWpU%kS(%N$3vYReL4FBcg}}qU|ql^f$~PWJ~&bRFS8uaXd|T<29CA zGCM=52EXJ8yYT*u1OJ`*!$pLoSvSwp1Tu8GV2|a-X5zOSwxdXof*sQ&(&QltVKTPv zgySMouOIF~$}{cJNOQkT4CIi{lt~iuuG3dV^{#mN$dC@uMW#CaDr}~8a}lp<9%fOp zETSRVucWPF%uANyH`}=oPh|{Skp&h5-r@toiWt%4$`5ODzw~AA!Uog?He(j9yj?|$ zqa~|qi&^xyj7H%a6LK=Ka{}rCHi=j39VBm8Yjj|AKURvq*b_83Y4*fa2R?#`Tl&pl z`hXkl5v?%=qUkrNL2m%H%mZ5ZPk!}B^2v{N0hKb-UU}1%_lZ+sw+MSoz6938Xhi07 z-oCqM@JQn?DLM=u4wIz$LTI=LODeeReozlF?&j$)NPj|JlBtjxuiRqvlW1B(dw)Hv zWrp6`-MSzC2hI7}8@y)>wY?R?vj-&-r@jPdkQXiKBl-Xv>n14mdl|qEfZ&x$-;5Y| zt29~VOwpYIWTU+PY^=PhbH9D8afsp(Kt3C^2V1@u6uDpePmgcd`zRwylA|ruz5!BN zapOah_VIi71CF%N?x)L3Iu&!n)@OA4#DatOBQbJBG5%77G{YlQB+_KI>pL-x(oAM*79s$l>i>7#bghAG=h@>w0lIQjgEULzvI9H((=E z=(2_W@}ctEEs(K(e_%wp|ZvN;+GDW8P!SslN5jUDhnw~|dN zwjh}O!$ka1XBtGGUb^HYAAyp4+j8zlboPz+{sHprP9MUyl4EQnPf3+%mwFYYGl5k| z{j2VgSNmy)!e2~$>Q(E-MS2SRElExV>OMb8nZ(bE`=QS=^~?P-x8viKdf0hI@Gig6 z@F8H0+{9%vW;a#Ddp{g$r3^vHSHezY-FVjRIedRpe^)U3;N>dfUdcEaDQ{n!w=X`5 zVAQ;yy)RMbirZo@HM^08>FsssMT8ch+v@qdolC5xNuNOCaeIUEp_AR)3>X&pp%5dZ z*~6a)$l3P1g4c1Q#PVUJeM;>wWC`bdO~N+IB?0Jy_AMjFTMD?J!0C%HeQa9%YSWN1 z)lK8d@;Qtof$K3!Xmz!!X{sO1g1Lo-fJsp|qJt-S&7YM8BAD>L*OQd93Cz@YJL!ij}^rcV8HY3@0 zcOO7moH#8&j*JlJpCRM4gr}7CPu!2Pz2A@xDZT;p-U4zvhq@|&yItK60`n^|Cw{}d z3Xp7_iLPy-)9w!z0M98V!{w0qh`~X~^)dF9v~vPB4WR(=fxP;2BRs3dM;|*SsZ)5p z6H}W_pEjU1Ai34Xp3F+`blqB(SaQL}?(6<5)w-qL?ZT{FMba~*{$@U|lNad^P)N4X z3Qb@C5`EtmtPqQ;^+%1P6&6Vaij0+9vG{XlDx{-2tyK3dF}@ODT30;>uXoWrv)yWi zbs@})l_;7+^|G-xJQ~1fKmC2;b~pAhp99N?E%ea@BD1E}fJs zDqDhPZd`;ze_HQa7=h`P>-4T@K&QO;7iBKa5pqi=Uc2R$e8O^Jn5|V;tkDEkFha(F z8P1wyrNBaXlmEovcux0I7x8 za@sfAR%Qpf%*5?(v6Pd;6$bS&=POY~yr1bZ?0vBDME6^8wL_ayLly|*MpCl}zbfa6 zM}4U50L=0Prj1B1w^Pin<=vE)i5iP2F_eXH#tAoB5Y5f^xa2O&fB3B*6he>-zY~UR~aB-Wq5BS zy=2eB{k9Gwbpf+_EEO1)f5HK1;Dy*G{LI+Cf5~2LE*#1WQipudH<3j8zsFsX@|(Ou zW<-J>0v=!fE2srx=6{ssmszn)Ix%yc@_M|4gC(P$V<~f-iaG!OCon67_VmA-Yo7X( zd|yqmISFG{FMa)m1MvQ+Xm@T0$D2rpFguV^`_je|*>EK`_=_}dLA+=QzXNI=5?HhT6~?-ou>-@Jb0lOYuO)6Xwk17ww3IQWOjppp{3UEzYGpK zvq9>*0kKGNrkxIgtbjE3tuzRP5Gz-2<^)gsZ8Bpv{6 zQIhLRa;RRaras))y!EJh**e&)X@YJorf6ANZS`w!S~%fS)^=cz<|L!uIl%+-i+ekJ zV2-LPb=m`6dE7yv=A&Cgip_;5>7d!W5L5z}>L1g*0Rz@M2PB&Jm?V;P9Sme+I2 zz;k~MI-tY!eezi&JP2s2d^ERbWa$#^`=9L)l(CY%+eY>aw5_E#ev_D=r_53EOoweO z7u}^3WQ322<}tk2(;_=WGI)((dI&tgACn~bRwIO|ob;PU487lqH!sxH#f ze*_cTER?4yCv7Q2ZM{(RU~1n@aUdhPQReqvXz+h)1BvEIkI*Jf8XK$dZ!mI~3JYpu zr0p6lkA2phsr~P$sP*4n^OGhdez=x2Et*08T zzExHcTA?5(xSBXIr*dkDkVwpm2M0Z{iRLw0wEUtxBDPswvHq1?5_IPhF zb&458mp8_h{6W+&J}ZdGvh3Kh695cWHBobOwpXP4{!fzi69sUT?DWrY!5+ECurl`C zQ3+`oEm!&4D$t78rmq$kBC|}W%_+f9Cvh1yX67X z8Oj!0y(iyJxKyre3;Hcvatx1OL0P|lwnKMp5u2a3g% z-#Cu%9XAP?a!QjS&QbGORm+o0wSu^n62}|2Ak?upgyP#ZV}?!*?=Q+Hs1zpI)U8d) zB68Dy&K{7dz7E&Nc9)}Zlq0d0#pUyL`;-SS(lglaCL(R4zaKOyTw{&cu9+DjZT26! z%GIyM0T8>z#XoA6#zgUDICQILcaEiAa1Q3XOYKYLv2})!UfGgrx*ukB&wNM2o6U%= z!zpJA+N0Km_)ttw#OfTKF*F27N;vHy$U}!%fx!!3#2x9VpFB@g37X?B%$FQ zN?gnu(0lyHjmxm%CF+0pE4Ls_uxuxA4awV9cNXrs)ZkduuArOBmpwa3M~fjFG^ANp z`7<}Hf z(KZ{-fWo87$i5(tMIKCh2>7kuzgcVr*PE~9ANqlUt)TDM@&#Y@cPo?5?)jeVq5CeW z-PGEE-iRjDmp(Y+5kKyJUov>+;{177pe`|;5vJ}xLb`|(x(SNKJ3^Wlt)LrHroEpt z2BXURTAK(tjNPf_Xh+Wqe}AEc-8N?}^$B2wZo_0iMnJYs9&=`S@*nimUd3H_JBnB?#O-W;R(hJ!}^)rDP?G0I~c>#vQ zSJO+DtkkFS1%ug6MAA8t`wMQs2Xx~=ox!9R_AiWq(pKfw5g!jAft=6?I% zp>iDaReh)Cg`<}kdy)BAV=tG{L7wG7FXfOGawmgd6zyFu#*a(PlH^5hkU}|F_6mW1 zXSOVFX~HHHpdcqdMe|gSY09=>QZfcU84BddaN0W2#D4-ukn2~MnfxP_hHggm zocR0{CV9xw4l6>6QaIojucyQ^+i@Jn)|+Cd4)UZqg_Z9H=$yrQWlMB3UV1iM?WB?S zdr`e8o7Xg=5c4}1sz3PNwK$2JC!bkVBz{nEyf%{GH9;9~i z(fbN(R9gu6VDH;yH8ZEZOBwzLBh~)le=$-Y6DBmiW1Z;9s6>~?9Li7)F2sjvH+{Ku zV&tLCO>T@ik$|WbV)3Xc6A@e&knpY+yoXA84#(oXJ=VXJP*7yYgF?cc7WJ_(5M59} zSmQwEQp3v|FIGCbBCDAFG&}vyA&pp!A8{|)jt}s;&riBvei#h(2w1y61EC>uID<%5 zML?dVMU3R1VQED>Ejn|YN9#@RjwX*+04S+e2g&8Ft{KUIf$KS<*3+G2ON6{M8C9=p zmoCVQT+ZV46aT}K{#RI`;5swqGw`1WVwoM|2b2%M_ zQ09V#IHfgLvXT*hUAV#KunwPTu$y5>%~RIOeH*qKX>92n+6Zz)Q)8_rYT#scn{@I@>z-u{5?113SMN`za9&bI9KE6|*9^W`a%! zij|Ibb{9)@c9I}b;q@hKLv6NI=<$X4w*=~~)HbofZYK;1 z=ii)>W`*M1zji>LE5t*MP<2EPWh>FJH7;!OgS?N-G9XJ1d|T3-CFIU*WOl|Aoh+s< z8?1X)2OuA7w)&FUxOoK{1SNZbhB0n8vQQ?~kK>{{MY~%Pkir0&@IPZn2d2>fK`aH% z!-_*iKuOV-wC8hi%M&h88INGapNN~N-Lb;q<9JCOrI&>kPiqSYX7NshWibH=+7`yJ zy1X&|A6KGY$ZwN|1BB`9nz~;*O0!NCqoXj+CEuISN{X3m8yuv49ozd^IT~!9!k}jL z->?_-wTOWz;%vn8Iyj>7(LoS5(wnnhW3S$v{+c+MdTTv{#f_Gd6=>PW1zrqB9+Jz) zyEKj0o7UqX+8-%KhQ|~EjNU4;CX&ois@ed(HX2Qm>%Y7aGXPda0!5Bg`<$j{wN3DO z8waKE@!z~5ct_d2^94!(MHwB6lh6^2m*d$GMlb;mD7vywLVB8kS*1_Aq>|VB_s|^& zaV*o~*DmgW`KqLFvfe#K#OxXv27Af-5}i5rt4I*o@>BomGJmrDwK*3RHk^OyfVufQ zYXga^G*^q7b@WRr0!xn5OU@@r>jo)X?Xo5FyDh=drfdQF)lzO_LMG8v?XygL0WIZI zT?s?nLvce=`v&VCli~SUAdsVhpvAl$`>MuTX)pHC9 zgvfW1>l28mIp&s4fQh@I6zREhhXE^ZeX{NFdm#AoS}llBHVLF{=s1YwqvUE8*);Kq zl(@EutM^|`T&Q{^cJ>*Wm*o*5jSYm-Ljwy&ssi@SgF}DAX;_?{Pvzq&mmqRb{bR1M zW@h>w2JLMJ!KKuw_!g&(Glq}c5dBkl510Y`rALfqPpdV;MIDjAe5hFuSR|Jil6Jy< z2?}g^)cccN3Eus+mSj{zttGBEG-kSbM%=En;mqCw>YqO0HKu(idB(Gr?>zmo4WIPK zW;U!z@G4Sop+q<>!SD(N-DeQ-k;A!JKAu0O?<}|8@LAs{Ca7pAwAA*Y<{cu!Czba+ z98bscVYkw@97f_^_`eNfu0UY@*grR+v=!^-gDX3(1h|;~Zb7pz3Du?%wu`#_u|Y9B9=aEbj;O~!Hx0ELvbJ(!Zh@LKEr)J4@Fpg{aOpIt z^eN@pLQF>UAyac~%}GLob#LCG?6GI*&)+tYBZG7CtXvYFL*ox{5IW?L9!+HliXc4v zlkk1ueMns$sez&ChswS-$qx)v3F6bDl(ZwjkFKkq`g0SOZD0Y4w{5GgtIY^Y-0m}zy?f>`r` zQw}i4-k*f_hpjzd$|7x3->@A~dX)ab6scU>c zHq(r&*U436rfx3o85UHSCqM7Z2&b$#?{+0L#T@T6JijNRR#W$=-(1v?PnPBNzIwx( zj)_2KGvF=YM(m82NX+QCxWq^lt4qjpc@yl%(g_a>cs?Ylw_H!b#!d=LRjrUK##b9k z2+%TPz~$8(48)CHsTfvQ=W$LIS~8lW1`y{IaYow_XSP6dC@c0WYcf0qTheYg3-}hz zD-QEF&1_`yW`Pw=Wkwjev)Pp5|IU=4k>&ajs~BI+{ISaV!GbB$Qa+?CsDph;R3Q^V zZvQ&GqJjei2!?h&9~$bXBpbBAI~)~vqC5HC8mmBbRL`wK!2Hti3vFfLGpd~SC(3o% zHKLO*yB!~Sp9d6D2Nvmj=nF61IQGKc%xTs5*Ri=UN{QZ9uaY`^lcw)D{lQny&ntY)Cr~U3IT$WD&`Clr>b&=RxG9`hi`~a~6DxbZ( z(^#+bs=y+YKYQ6eyDIsvcnb`voTBw{^G$)MVRKL0!h9B+T;;(|H|mZI^jxZc;n|RX zyo1Ez|KuH(Ut&Cdt?&7vS^iFBiDf_O?1^Ob{8zSVzAv{9V)Ew)cF4@CFkSy;7)&15 zW{2en$-TJ_$DJ!@sfe%xkTR>M1Zt`4R>z`N=L>EcBnM?g6HecCP2OAgu@d@@YXU2X zI@jsthYiLhijw3uxf6??c}Aj)KBeoCaSjHgm^$4y$_*Qz$~&l_+eS2*{%Ao zV`$+%Jo4>9Wf63fj4wETDF%!3;Y4*3IVpa}x6^&i$u5>k<=d}n!Ggyw#plbe9-h*3fw!y-rM>$xX_UWt z^YsHaOt(zR&C*EFAfvO9NQR!1AqY;{hXJrYL-t_Wi5e7ShiQ`>aX3$BH3wFsziy(r zfnN90KsZ2I@zkzEcj>I7bmijB*L?l}h4i5houU7+VM;i1IlQ;tOE^Q$f9 zCV=|?sciusAVCbq?*i~RK=1k-OUnSgMgbQ*jUEck5Bq0CN~<{obP2{;d8o%hmTElI z5B3hjt_5T@v=17Unj^nN==#y12gChY8K}Qw0MJwRPbxfNOs1Osi*a>Io*$f}y4r!2 z5sqQi7RGL`Y|RrLHYoBR_uAup=tRMGH(0lL@rS3Rq>b11xsdBYFoc?g#7!5#`+ko% zEaqKYiJ~=W*yXbX^D;C70g*2KC%VNe_XIaxZu6Rr?*ORL7gDMx>ocX(+?WV1NUXWi z24E=VET)s$i+mAS?dtL8_F?MYB)gY^rL%;zboZ{FoMY5=TN*JGO^(lPpKYyB`L8{s z?zSE8h?$Gu^gyn=0CJ1 z;cPP<68nLH%y7?NJ3G#pr)?o*AF{ooDdRCVpedFZk-m?ojSUO)CE28A3w*JVIZd3% zFn`vOZh-FTP6>nk3D_q+fIBI2W_r5e1;myXAiWPQg%ad52RoAy@e?QTkXx;ooJKoX zOCD=V^Q@Qn`9o`mFQn47(S0VHvo`Q!hJR@O%76h1?->Co3FjdZ+RPfS!}e_|rJ82O zeA8n1P@oJU5cd;ML0_J>nTvnnNeiI#K56B(2Ahtv!K-G+=vPe%n=u-t9@FAtM+qea8kssHIkt~ zX}0Nv@j(H5s0{cw1%94Laq+{I;e1MzKQ^q`ya2|J(R=IaGZ(rci8+KBQW|vJ(rQe2 znp1AewgO^X<=vgnFasJ5?apkM3|$^2>Huhrvx`v@k^ZcoHfcmTY>n8-U@#@T zHhT9V^XJ%n>q7Ipyab|5lCQPVLW@pZVlke%Doa@k>FH#OlWgwRrq3gCt7i6{ii}1M z5KCF^K8gt%A0p22CLY<`whO#m9C)z}MD3;THmp=$3$T;tXx<4ESRuR>autEe5jOSJiA#4W&hOf_J7WFb`JP|Z>nHM z$dck{WPLN{mMxl1_P4Y@MP$2>g(_>u_tuywivn(W45DvBq<~=!*hk{7t6b zA#$7&QiUJD%qQks`79C%X}+K%M?!En?oIU>+Xr62*a>t57@}Vbsu`cKLH{ z>0uw;(Q&xN29jE&+DMhpv(u@1`=w$(F}8e8xym!5!&O9>yoDt3S#3eluobca-AByK zFiw=}6oPsG#B+slQ@Ml(0L0A(hcp(uNNgVrLfb7$0^Ow3c`v}3Nkyj&AhI3llv8%oMIBb!w@_hNNS zE+NU;YP|fa;%nFQ04Pt$WV=#*$_w%g1J;_(`n8UVCW3YZ^M4e44i&~BkC65tr-QSS zRjL}L>5Dln$BE_?F$;rQH5_g2_y6BeIK^cy&roT)!#5C zrVHYGG^eRoO-~x1Tw^?e(ZM>oPjz;DEbY}0LbpPvno!~C+Ghc zv~s<-XjV+cLVc?4EW(JGL--ODC>@-Q zgJfd3K<^w3wYn|n3N*ikqL4&3|4yw4pK#R@4ZWuxIhh-yBf*B~t0ZBF<~HNJ*cfQg zbiIj%#cb$ORRfa_EA$)9fR(v-Q*H?nK_zGeN_<;qwT%mh_L#I~I#;MicO5qnK`SZ6#Zf z`B8Dj#Tfp?lap89WXR#Uj}MS3iX`%_5bto=39A{Kig`XP6~Abs5gY8_$(7NbD_5O2 zw;x@NX-|&y*{SBB7<*fbRuECtncY({^qGf3#N6=wqv~iH3Fmc+JWeJc9Y|sxTo3XU z5~V#G1i5{PCT`iamkhb2P(Wd}?|$y3Iz%=-Ae<9bzO$`@t9U^H_)LIymD)b$KZC*M zs=SQHWxDY@SYWG>*b)Tij87PP!Tot-+|VOU8v&~CH5jvc($;QaJL+ z?8$Kii@7qB*NF+u_(#^8X0-RsR_p5MiouXy^nG}6hE}qjLZ5Ilb3J5AJjX}BU)ld| zN`{4)+mC-+so2x=Ea=bpsPqC_Uin*Nj6=+kH}0o?Iw~qmrhd)VCWFyYOTH_0bFoKI z@FVteB$|Z8-l*ic(jgUFjzu=#<(WI+EF+d_IL@Q%9UkBw^%|svuc}y9T2+){eJM}X zu@?Lfeoa)SnX*$SHbUAol4O<0+R7EWvSgTpj*^RdMK?sH>Y2PLP0*z@5 zGu#@f@{uawUTEI@xYP(8VhRk7Hi(&%?_2~NIlsG0GSv}$tmmQLsWu|LJK;}$ile@~ zaj@tV!yM38fahY3j`E`IJmv*m_h-xOj9aV8Tv%)KtK)DQD3rg~gFKg|52+0U($gk0 zxo1^2#fRsG(E~P_Kn)D9dBDny=l)gP1B5}m_(Tj}Y?&pH!pq9O)ih7bjtfOO3QN+8 zHzF@ywsnHF<^LaG(Jh{=jO}GB(ldTHYuUbi^#nF~MiNJR#L zSe*SVP*fk65q0w%iO%PN%8CxDf(x`I6c-<+NyblpznnNKEV6u0by1#HyqLUUO2GotEnOtW(0vnP zizKfMUBB!75P=OapBj6>|JTo7!}-U9mgtZQ^GJh4SHxx3-qplAOfcyZG{dSK4kQ;S zdk;x!?2|THMRB;g2t*coIbG^7A3qZACP&XHw^kfDSQ<>#vM2@#LS34>55G z6U4Q#_%G;jBO$H|^8`W@A{Z|#9TgqChd^ThqVf8aR5|SNk<^t+|_O+|fMn(x{# zh>bT#_{yGYQ~CsPcFB$Xn{f0}e=~d}UKJ)g@2Zz18r_M@JDbRNQ&UE{mgsbjW##3J ztH!Mubm>UYOoyz(ED7?g-t{T7!JLWlCk%Uw|GNf|+!9EQLK|vO6a;0&b5o;;7b!PS zGx{wfUgB+{gO$hHL0u$NUdHqZ3@u#imYdDp$zo^@A=T!IwMQlO(I5y73vnO|3ggbU zT4@&J#z}tvfA6kZSVY7MsY-Ne9yD5;?kmgPEYwwNbl3%ezz2L76ApU_Z%F<-J z9<)OR?OSC>(&^H|ogq*2oHUyq9IPYT?tgA6eV_!l;2_NE(2_Da`BgIV68(!TKvs%1 zs@B9RaYIfBLdVq?UO6*a1!Ub{8kTJp2)*9E;MT_h3h0u?D`VKuG(sw%0MlX@j>-7* z@~SQn-1936Psf^tXQTC+X4~9jUEaYMF(q$u#J%26`YCOnTVTwzWe2m8K?aJSo}t7o zg%7m#^ONuLu&<(_1P#=$ReRTvUUyJ>Y@AimD){e~l4w1Yz9O*hcY6H`{;Ex}nm}&) z5Db=3!m);#>r%?jgg_d{90{biKPP#IcILnozaTU-{lN-8@g!cU^~nWDkA2Ua@AYqQ z&VlFu0#MFxdCZ<0fP~Be6K2YzdP2IVFbo$95!0ZrUdi~q;qqQ#>FeWvvNmBDrcudA zME_TurpW)ut%Nmx1fTf#k@WR{ZAuDy>{U|iSO5FYr(cq#p`CJoE|9Z)SVw*aLy`IS z2hfK~-e!zMdcYbP^dF!tu9mr#$s+#B=@M<)$+iOr2fA?_(66_VF_@Fu;;#pR@5eDa z0M+b^aq3pj_u?X3QH7En2YEKf+V2N506iQ~+${Ba9ZdrAyQ^>+Ce~Vtd7DPErASNZdTKMUxs;jJ6CCDOG_7U7N>*^kziKhZ% z>PdH?eC{wyweC}tmVEsF8Kdgun?@}V%=l^O`)4v1jrGz@3uv+$@%@kCS6EWBsv5GJSi-0zOoXa(g zY<*g=JoC-}oA1f(ok;b4rgS}ROaW7&Ai95p?)C0(QyNrZO_;oR)jM(IWREO0p7L5g zn6@NU042;>I$g4Rl{Yo}Qk$ z7GTG=(@3ym+maVAB{pPdRqedc_m;k!($xEiB2K85(|YyQX}fwBSRtCBJcVq7 zP!!CxU5-3GFp5w=flY^cQ?Q>xb~err)7)1RmrnW)w!?umC%G7zNPj2uY^RRZZz8;U z=2l#polrzPbkNj(^J#}fx04&gIy8qM)(PF8+@xYX)^>sF7z$49j4BDMjm>ZZxPa7Q zX$1+=zN|Cj_!jNeGXHmos_thV79iQ4$n)Jezxw=b99eb8Opw4DFKBlqG3s!p_8N~p-B!G=uY@GVM6tqU; zsybX!<2%~O=vEmHC)-G~9$o%ZI7#+N66xRHp277SqzcrF<82xt9tT<6*@j$RVT@k9 z!CX>Glh>|oM%hZvo3PfSvtoWx4Rc0E@59?j#ohLuVt$Omn+JgW8U9M|vzIiQYnQ23 zu962ydXoPYA<6MDU-$>2HzackE+*X0VCH%{p@U&wqb1Fn9xBcW0%%O=-Xzy?g#xSm z_aaitYu5_hP9sV&x!Mi>rL2kaun$EcGQ#Qg{+uzfTIwj(vAr);nQryW^aY1wFD730 zw2bxKRcdFt zg^hhSGd3w4gN0NM4M4_ zRUAF&#r%vuy9Se;dSg3s9swk^k;>cc!le6d0)#;%_*>Sul9G?a%0~wzz51r-=uRM7 zb|~TgF=J?JLksiN1-Yq%pI)v_1)uDKAufcDHIJgIE>M0jAL{N}idHXJZ;B5{#9t5( z#QKkXhpV}=;T!#cDa!l9*)k)oWuUgXBk7*1W&x&eSpDTkg-PRDSSGm7U6k2F0wqTD zbV8Z9Akurn(~3rYC?C2|tcz0b95mJ?hpXJlE^C*=hR3;r&dR)-c$0tAq{xJGAgzB)+nr zUDtamAeu5OO#eNh6yr5^(Y*YUab-y%HttR?*4wxVZZH9xPje!t>-7Ycl&c-U`(utl zrt$&S%zt6KQ=+7mfk?BDTQdjHAn{;$fga6_3b2g_*|P?jW?R63YL< zEXj#21gd%|-uPYlbBkTQ$Cn?~sd|`uSCbR|RRQ!Cl3K}N;gIffPmk;EfU0x;AHv=; zDvmDN79}AB4-UbDySoR1YjAgWhu|SJ?(Py?g1ftg27(Lqn~c9G)c8ulqg>^S9~(q5zH_+PbvCK9SFXJz0XfnxKNwwDe z0A5R`s$^&n> zGf93`3G#*DX^H`0Y!pCCI!wQI8&lZb&D0cr=T8D)bx7G?RkI*uKf6ZdNKaCNUS`#u zKOx9J$9h`?fv?W!!%6nC1I6FOh`HxyF3d?(Rcgj`wLZ}23FrV(w=584|13`MhAEPv zVmej)@fL(;_J04weTE9Nch<2bOV4_UiG4tw70m`x$hV>|a?;Y4`>7bab~w*%)tD|= zW(#u=8TO?k9)|0)&OItnW+j|=tcqb{D?b>BT|N9UX1e=avj z?sXI+nj)C6>*t-t$Jg^a+>3r2M}i+4**U-i*jpiNH%L&Jt~wBUUqAmqm-%TcZv$ar zFc5h#q`E8*93=9P^xzUu`v0eOzKPARsK)+_cPyUl-SZn$andR`RH|8-c@$DzacdN| zN_(3P;7^8Qwt;XYCe&km_O-EqHzwd}!sj}l;Rc~v_o5yi*1}b)e?J);J{(g1iku=F ztzgyr&=jH8a2&gmd^k3|qAp@8B9rZyzy=M~mC&@*`F$`9Ll3lJX81X#wUB-GpWELG zg(D$$kL=Gb{GXHQwry^s{6T_+fIM3cF!z4&Gwca)U_^pLXLK6B=E(WaNmrcqN#rk) zLCK{|51$iPVoMpcGcH^^;fymo1oLw&u8;O|@G&mmVgrU1Ac*Dhp#=C$XLP%54zq^8x&v=jGMC-al^LW<88Ob zCZR2IA+s8hTN3}5_g-E$i%ZMX38aOk@CSW^3yr^mZKt=7k1U`GY`wn%qr|56RQ&_~ z9mp{nkD!14p<=L$tG$9F0g-7EqZB>bTFFx`iiX*GmH?^2<{->3rv;!)$CwDqrK;a z088sUt_}I_&&q1-MIoZxBCd{C)vAfTWSjukOx0@sL!vP$u-gW=ySJ=ah+N@k1)!rI zJvv6lTR{mzBBm2n3nMqoU<}gb*t@1jB^d8zpV-?e014>IPxt9`-tSUh$Gk1R5HvP? zk(DC-$J7mb60uK%$>i1btd|}#-E=)IJP1mr0!;XuCi^YB+QZX0-i#pc%2pRGRKn#4 zog@IMapjB-&0+P)oGdpG>&KKX&bBh;W~E`G^ky~AMc3JEv_q-ia?ir*t(ek=o`2=e z`yXV;_E|q%b}+uV(iG^ry*<_@_Kxk9$X((8DrSxJuKp9uj$Lxf0+T2U!IzKr=Qvsy zp;<8k=xEoQ2=m8Z4qW;J0>LSVr_&l_((jq>p?Y67Ws*5s%#MXji%YsUj`LzG7(^bIH9nbmWPEfZ37Kbzt{ZW z<=)V!Yqqq=r*vD^{Q}|E!u=q$pQ`Rs3@Q5ck^Mw_nD2{)VTG2cw;EBw5D%YC{Z#f= z#y#$4u5_z}O@58hpE@S#rb=m1WPN}mP(NlC&;$$BgkM!@zl_SbMOW@i24QGi*#Q-W zoP{MZBa)?N==eX22-}u}@5&Yt&>xgR>A=eT+m!J`*Ul(sNJp+3vU@KCY!V^!+fQhC zE9S}64tiv1)yi_S(ZyQI8fdmUESy#4dA~vbxz$~wnLA?2BNca_u-6@7Y(#tW25+8? z_vCG%2GFd64rpgl;uRSg2`}_m;Ba7)vNz&!mezb#0t(`{D>vJ-NO1O(M=f$dg>4=+dwJR{i`tXe38!lLR>F7ziCaWc@d~A~s<&~AG1iLC zKg(e}#h{83ZJ=Ak{BMBLzWSs_c^o;`%fUUy7+eKw#t2xy;8G^T?`fobDa@xw{q6;V zu$`4ic~Jpce-8`B17=?D>SRyF?|sKcc_1Nb8XdS1fI21l)3N8TiQgQ`@4%T3ck4)Hc@-K8tW^Uvk-^;=8=v?UypLuG$%q_z-bX-E{tke?22C*eiw)@XECo~{ zbsJZtYRA4_@-!_02kO#+0=O6{6K3*$^8WxKW(;;hAM;T>`$uPyRltZaoyWuec;^e$ z_hFWb2Z-maGxqfV`prW9qrd#y%^CCmL(PDE`||(W_VwRKf%uaP0!D#J0pbNvc|UTT zHw5&VfTS{|tLoe+enzl@_!C5$1eZO827$@50r?`t%oRCmJ`m_=(gg#cTHhTf3pTm4 zCTYL@WdqIV}KB)YdpEPn`?gV6s4mjF} z%J6R$HtcvF(pcC4+(}e4^nBUi{giSwa&KI8^gO|uI9O@b$jtIv_3+}NhQ#6t;EXo2x1|1rU(08DbvYJAy#S^~q$DqIoDt9emG@@}ppoD@o zO+d%piomsJ#JY+U{w+vW2#|&cV!0t}nm=-3LOJ6@5HjwPEhT2amSwMl5p53296{jXc26pl!5o9_QCRpBSJzj3DOt18IGe9*{^e4 z%7!0Erf1Aa4$ipDEH!@cqN)#48FI_}v8MZ>1Ac|*vGf2+sXR~xSk?BaphV86z+5|a zlu#}A6<6EXKrV(gEf2oePr)&D*>BR0kPgt+gw-S<5yV#7JPOjeN|PXPf3tb;uMvbw zwSl`3UHh$AlBsbCb{@@GcWQuhw5y^&TyPT3rWHiFu@3dUgf&W^0ATU}z&v4c#Lo&n zM6Q@CT)v*(9$;Wc=x%};wwz42&!%a{kg`*n@AOnJoxd&w209O;r zEdX6CH#u?0jy`{0G*!w)*#0%rB#Oq5|6 zuk`fA2F5tlicadJ3-zO4oZ1$Ky0fI!>9+h;2|`<~4OR~GI~e%*GJ%&r6L`lwaOMfiZ!8Ji|Lq8>DAC|F-@3+}4P=JO={PDg48!w*%OZr2f@6Omgk60-?@vp*MlQH_ zlpLr23z858-$#++UeVj|20%tgwa`gj75*qo7($LF9j3Z5zw)%^8yAR$7j2KG>=D-c zM@M4O7S47x5myv7 zX8)5^-`ux))ymoGX|u2$A#z@Biby0V?qsiA?QvHZ*G|DrU5ZUlmQ+-9?*_en#z%${ zYW>vd7T+u_Lf`@*{Qo~~g~&h^KvJu+T_ie@?b!@m3>(0hF$Dk41z@B*>9}1vZ-ih# zUXbJ80ySUlP6@wdb-ZEB4j$E;)cV+W%9uDCDqBJOBsv79&NSt+Yf_#TIBt-c#oiw< zhVDw0<}D40;t3jgNmhCA6yw{S{E}Q9c`!6=&4}q#T?F`q1!C`&mEid5O?)bP_cfc6 zl=KD=if$ymKb#U>_NuE!yubEp8=XIyR|Vvn?FDoxay>GhI^I%U(@OmSTD9vZLnuFrRe2CE)3fH(jE4%5&8k%>F%4AX$XpN@mUtT?&BBr)Tpf8jxusB0&>@tPcyL?b)ozQ zwXx(<4R(M}%WAGOd5t8gMcHQ4jQn-%gIptjVbbjYVEpPZ3M{OJ7V?b{oKbVpnhH&+ z9}tBFYmHuwq(k@*QVq`7AD4!=H8_Ik7qLLQ(y^hZp#@7nTICH~WOSMR`A{l0V*%2{ z9oJe>8!Z+%VeQZjt5OANM^jfI`Xh!*r*G3)uiO%xO z0x9T%Efmp=Q!-(rh@o995eE}eMO_nz*M~+F;SC+*pt2}_F|Co1(Wv4L?!2oy?fSv<_9! zLvYCgJ72nHCE~MWw`Jq%Eah?V*h#pLQaY@}@mQHS6`*V2{@{=D9ru`VuboA#10W7W zQg_59FX~tWe3t=pCC9PH_F@ZeD<%c|hBxbaBvTG)7l3|#_&jog732uGZ9!JaVMn_` zD|jZJro`V&k^mzw>M$ipSofdzzW%JQ)T?7=ZB1&?&EJ$n*<>H7sP%ux2qZ< z;SgwEG&kd_7#+5xiYF*?QTWe3lFc7jmi{S2s0jVCPe0K9kK%8jPZJcUpaSH{q5vWM z`Sp0kO9%6|UFc=}*va~_TrrQ5$F@U=7O|-{%ie2I2Z}=p!_Zx|?|uA~wrou6cc<#m zd>#Q?GN}={H*cCb8j9q~3M;5bL?RYMVR9|g!duI#!ZYkW$G9eRLImWRPR7onn~%ZA zfjgw@51xYG?qX8Mz0J&omvOSkAK5G^?vIaT*{>^f83&FdBX5)Sd0WGo_NJ!wOSN1( znt&!D{R|BkT+55BX}Q0-HAfutuAW(z4ZPv?ozo`{j?D-D8YRXetjuyti?i^=$oXUR z3y2ue(HnoDvMuxdE=4qIoB3f;ikB{|mGDDaOkG2)BkalI_yJhT3Xj+w9bMbd(D#i2 z7#=gy_Tum7E}^d zJM$FY=)`G%{A?!jn9d2hj(U;gH>l7#!3(rrAi$>IQ`@_e{~1w0?M9%+Z81MNx#_?S zN5TSp$KG07RnyV7aS1G1bL9m`AiHf@C<=01Y|#R?9<89t$ms_&x#K4oKnD%9H zYMw2p!zBTUQn$fqL#0sd3ZC5)-oIDCrzhv>j$Sr9oV-MS7D9k3{EXHdM=Iw@CWn!} z;oz==z-Fu5%9Cj{@Jt!zmD?gHmTzqklL}KBju{m}ldIMu$a1)Xj~W=oKtyh{ZhV=k zxQ1CaEndETv+w{Wm&cWY6T>X!o~(0>+@nxkroI^G&KUFMy!Oa4IvoBj3FDV}K*e;X zJySEBt;~Ac`(99SnT_C}a4Md?f=dg*l>SmY`+!Xii)M9>zZ*VsFnvEI0a=IAgxW>h zn8q+ae5usAUqx(MT7=$*v-=G*{v80BH7+4Zv{+IRrspaTkuE5f?s6Kx?u6T@e7&o< zmR*X+p@>%`7fD8^yQBEL_ZPcpN=nj3>?fxrB^fzsWxY{i4hTGx6If;}L;p*IB3T*4 z-ssAksk3fvcjUs$x0seW_Bb`UX~J4MXq9*1YmFi|RSn#}qx?~+pWS72zl@`HI;^&K zMMWztO~Bnuy+B711~v1>M}qh|O)rbZ;RsR$vfG=B3sqrZRuRwe#yOp=PwWq&=`$rm zY;x>37FkV-btR5^CmPQKPXc1M#hhLg zJLNyBXA^tDmGIiVH##MH&i+vnqD7M$fp7`M^;|V*W#Qg05Vk4(2!4Jq!zDL0rC%mS zh`YhZ&eCNM_Tt#%5damriiNuo{4&KeMXJD zE5>(@m{77i%#P8yb;Ab&61+CRRrg*d z17(&Rr`ucSuWCO#EVU9)bNK_4k(2N?l^*_>50Og zzhx%&?-6XtkJoaNIi)Z3NoaANF-LebD+?RlIAx8MuB>cr{kTsCFU$I!Pw{vN^dH82 zqOHCOk99PZU>I%=QX~!?w=)i4fC8&uQlHTzN|(*huJCFSZLW&G*H%`c-6cU@7_@Ls zo$ZCjf3k#j2shfbOFBpwo#Mo5k=P8mZ+h8O$?og=^=!GH%pcKpjjNqaWz{9`y!^{B zh#a$}+%ciK^5Gj9#x0y;@up|g$3=#fYCHG{-1pYwG1o2Fu75|PCD`Xnv#Ggpw(fr- zF27~QK)R^*XOdZ?j)**-9iAIwxxE{ha61sN;w(~bpBx2-1Ci&WS$Cac3UQOc+*B{} z)-ZLqtb!RI-yxO2EHQ#9659_Al?9el7j&aa8e8m&!Pq7bpr;vGeo^t{klooYdfvf= zr)r)kWN%sONJUy|S|wZ=MNE8&1+$yQI|9lJa-xsTb$;dg@vtkR7RpAZPGNo_M4j)< z!#I^F^Cb78s$xEc8T~#bt)r=CO$A#Uqj}jrEj}mfTr%oLZ(VYJw5WV$yrp-ym#GOs z&z>{CqEYJ`qQ*U__e`a+JmZ>@Pm4*pcx&qr6XBt;)-+hJ2Ik~st2wfaTV1i7Nxl!> zb=}={i-_bof$eAwfOikA*VnkIh4Dh)^=&=+OAKyPEsD2UOW3zXR)k71zTC;)?K5QZ z_P`|ZfyT(E+mL4H8_(-ej@F_Ff5AI!{Cc=T2wr2r?tYu~Qun4wRjkxVN*SY;y~w(Z z)QMtdWqMlf(wU!1BKFng{Y>w#IVlX0kaExKAaO(1Nlf+rYi#k#)wMxeb~CXv-o|GW zfzI_Xkw%V+z5UqmCxa}=zeQC!ES!PEejrq1wWOnsZ>P?bJOlL2+$p%Voa_^~tyz)l z18VK!MD-(zjt5AMU7-nu8%{H{nwReayk+aGlOoV*FS6y6IqZMCl@}O+Z?tmE!PpI# zD#e40os-&aBFtCjU_C_##`@8zO-ANHooHPu5bl6+qq8#BFgum;Zel)*{aSjwNWeB` z!O$MgUla1#`T|&%quQ!yr9aHpu7&l4e`==KQiU6{vWU{6q$X%hSYec>2W=cjowr+a zFg+?GBN0jSUP+y9^M`+IgRZd4zWgvrYl&rn4W+Rkj{Xp*e6zThM)(2t6(rz0DyI-x zAmCg+pE@OLd<(mG4SYIPJd7WMO=@Z`ei|lp+?qrmbhDw+EGw?H*ur1oGkkK!pofb` zo=4q(7W~>z<7qzVC&Vl_8HEyEzE@~-0pnePC-`ECh$*IsaPtPqCNBJ|gYF5i2mMx| zhg+6~BQHUS7u4lK+g&4%<2*1q-GNMuSTb&KS3q?2%uhT(fFSnMi#+NpNHcA!UK5B6 zNHL`pZd%kv-qj&Tb@-HNan>lLEbZD5+K*$tM-h9`lvwjEwSc*W<2~`hN*+K#Aa=_6 zV;gyNK%(u6_T!zTqA1~xmS7;eV^Iz@@Cmibzp{U#a;Z;Rv1b1|SM<}vldJ?z{4k#r zd--d4)Rd<^Eg~KJnqI1k8LuTE!Eu@fkM$VB9c+a+u*9Yv|D##iicn$4sqsMk>tT^k z5!iEJN)@t_F`mWa&^5a^EV}=u--2ydKnvs{hjYs{K$;=S;_!^xZEE2$`52uPL?5e9wU2o1 z9{+Bz!IT>CP<$(V`}o~e1XzK*tm(T^-Xquu3G&aTU>yXT0?xNT5C+;h+^QIC-``!e85@#j2s+xF;$>#{ubl%3DFD0 z98c@IlRv+1D{EWDA!hzZ%3Z-FA*MuBwJas4K*$!#Oxn~{S?^|RvV8U6`XNEWk9>s} zqXT_cUl9%pT<3?xcaCzNG?V&RAcx#*9DUSTyw)f9)^K$n{H&zZd%oY+#`(SLW;2|r zLcddxn>*z`;X-qnW$=}o3hgFED$#X#m$f|KVoasS`?SEt{>Q)e%DXgX8Vvhf7=q$H z4b_Hct2N=UoZslLpuc+rStVmao8G<#>KDf}YQgfBp@dK=49@of#*>E8SXrJ4y1aqf>;>$rJ_Xn` z;}ZYT2;Y@9gT2@+tLoKSlo0=6yj={ojC0m+zQd1ZU;mQ^8VGW~?DfLKzf{Ztf2zP}<1_ZXnWSmQ^%M>{ zNf{Waj)}7@g9JX-?!X54+~OvLkqq4*3YmO8B0s3Za*O8?Mu6MUmpYgFxbx>zSQrCW zbi`DjuYs;cNJegP-Ijg?Pk}8w$qn>T2PSDz@%%+N*;ef%f@4u(!;uiNtK{w5WZUQjF^_f0H9;-ZW6Q9j8^U;PfIE5nFoYbY~ zT?7wFx0Bcl;6=V>wqz}xo;mr+y!K}D#m{*Gct!YuiliDVX~NOm{U@u2;MOa@)?$Qw z(K_qNvsqeFVP;=GyEG*g`Hi7%zAWd~95Vwjn*%$+lCbRT#yXlS#L|k&JAU!Cv?UXq ztZBb#HSAXOpwzcDQ$0IP{HbZ{TR7S$SK`#15t9;Jk8lt6Glu%U206D~Akv=4k>EHh zZ@7O=ibd6a6;l98Lb1-6x4SIb*{R<=tD(LPWW=l^UmIhHg2uvf?J5Hpfx~Ql*i|QB zU#X)JJ-r`&oBY98xh@PJz|@S5X~N>(33?4q*e#;<9y>|#Gqdu_PpycR;-m5u4Vs<& zw50l%nr8SU9@noSugo)d$LO1%{_bHT+maVC`ppy-QQPTUGt(FR-s{D48E)xXKZ4gH ztuPXJEVn_ZlTNu)B+ml==Arf3z~ktmP|eG3k*1#zLRhqLl*8xlO+y}nimrUKdj9b; z_X@KTSYn{wE*w7(rJz6}L7MV_$x$d~V@x3IlZ>uk8(ETsO2Mken#D*J7G8acKLamJ zZ#yV}ZUounrpVPwQnnmzg0u)_hWq@ZL%kY%#*@dEw+E_OAQv7-f2ltT9$kdgNnaob zF}1&MPCMG8gaeKBErWwrgLcl-I4gO8!WD#IoFw zUM(lNr1p5i>@{YI$Pbf>9WBvocg#fJ9#wzy%1CpBcT)-(Lr5Qz!f(T_QFBQ}DKjRA z2ii|igy_eJfC%)D0WkaI-p5vmDN%zM;Q ztv|b4c+ChZ8#M^=$ivHvhu}U$jj^$~uhj6+YcL96k$_x)2!fjs6m#O`CJH0RZMFcc z8-H@<5iZ}!bTf}qDuV`(_$M}9xZy%+=>EKi8HVe8L1-mFoa0m8*_(UI01jj9K1S5? zoj4IoNvLRJ3a<81#1ylg^CQvpFztCSqU)iL#u>%X$<2R1hh)%^vWfDL%DONF3w4=M z{z@u08P8!C08O|P+^A<3zG?BrY-E7r@zFBP0-s>4EQvtQW6Cw9HeURY8!*T`nO{U$}`({B)@P+~HUoFlG&Gxh~ z_A^{(?gfVQ+2gZpSqoOP;hh$Dx?ju7rBUFd{2bLsT|_(i`S0dsdSr9$gN?^S+f;oE zrE{WZPHH-M<`qhMb)-w{`Id44y%SW$R5r_9avuV;B}7-VTvBz!CC3#5BA;P|JL`j) zr)XVYB1Rl7D=F5r$&YE2VAwiC&Rb@~)ie1-0$g2l;pQ?h@iJ)STt}s(BDXMr-!3g3 zKfGPhHQ3)yo~g6@_#EEOxtdtVZ?({tiYr70inPJ+8`b6vhB0Rr2J7LU**+AUK^K9s zZsX7k34WW4$gsA`hwXNq?{5JS#yD2l7c-O7{O7KgDmh?aN3mt!oXRuuvK><3$mi4D zju_$tn3UloDJW)^LI1<(I+?Ee>N{l6G3>05rSZyM&j1uxBhM2q(0W6y%yluAiT}E| z--(?=r-cy8Ojknfs^YXR{#xtSJ$5mumXEBtF?VtFKxI7EEq&1cvqFR>KAtfxQ|1b8 zzw1xSrZ%RE#;V*eRV|{PUIA)4(-`Wm&B7yX&}!R4nex|HF{LBdJq+yy~Sdm%ci1{p+^RN zNc!aPpg<(peYtkdj)|8`@RXdqa2c!vYg=}o#9idjniemjKfJWeJ_gP-Nym2<3D^PE z*{m9V#CKo()y{rGZURJ_EU;4xjbDCHi}1QPeK4Ut7KQaCyPb(;fvyeIuP7*Xv^jQ? z<9D8ujRrueRs8^ue2RM+5?r=AZVU67Q|B#Xc@d@S?C7Yex^iIsQO+n>OiW*9=VWE1 zJ~#q`Itx^ia&0H%yu1&SiCn_aERO|T7K>7nht+-&5mOLE@htVQ{tXz>`SpYkBNhc} z_bUq9SzIo)^sQdM>7a0CV`D}IO=e3#JRTeKVfy}jd5h%41<-wltXgHtk!-YJKqK*o zB=$E=+yV#Nuf?0xjSTsNi)S8hOZoCTLi=oHXhdU`elFojaMZj00cAD$$B1A_q;Zxf zMKLV`z}~?XdAW6Ynv@>JJ6@^vtu4JcvmOp*Ugv~B^Faa@EQb4utXxB*73z3%i?jw+ zp)Pu#$tNA#?Cf#weH&{x-b_%RTHSVaJSqkvo!amYCJBHA_qcLS-E50LR9hH>I4Ppy z*!(LySJs;59P0)TT+nNtn=JPb+}=fVaEuvXeWwjjm4{;di)p;e} z*9nK{t&3WOV~)TYoOYqcoGNIjuBr32Dk5eUBlCmAU?_G`uR65lx^cbTz4ZPeB-k5q zpWYT92NzRzWu){7{YvE;9WtkNoH?uZBes!KEJ=_qP%61nTrj6q48?fg(c`_8R*Ed13`^v$x^_eGd)(nTawy%V)b(ekqV4Qox3e8T zvaV8Vbz?Gyl|H4VAP9(WkJYZyL2Y37!3tWxl5ed#7BX<@EBF4|Tu{zONHWj(h!MRh zwq39G3n5M!bfwXpn&;ewb!R0{B)F%(Y&?tXijK~vd^AQ*#GOTi2}TOO`IjtbNuQd< z8Hq(i#G#1*N$-;m@};;8J+(P0I?L^n<*V--W)@YGKCpMB*;kR#>Z_PPpMY7Yz4aAX zqk{ITdgaD$qrnSoqeE1p=_4-v`O8MtTII733_zaph{q%wHZoD>=B}|&k`qu))8eFL zQ>9g|W-Y-&GY9`6Z`8D<;$7KHSZE%UvSHckl4Mb~OU5-eY*F8=yJCwaqwHPCJ7VN{ z*k>TRT&a=L*hxP1+$6RhBYuLtgu}T@TZ(w^gK^>#Hy=h?Ui79Fm!)yU)yaSSVp3-1 zL+2)uBDFEKw7BFM7-psqx;Jm@$wsbc{3@X#od#_&*fXZnnEDHoIVL%m=`>^oo|^vG&A8 zMuma~En3)aM{JI*SK`b+3U3Ca&%P64GoO+b6AV+rNp>!w7c_26n{=0gUNf+kj?z=L zS)W=muy$;wXpVa1=jY%`-M7B4<_}v`QpY>vC4wsKAHle7n^1(^A|1QAsN|4#`t0Q1BQy@ zk9&-*O-n4NOXQnMSzvB2F5}8Waco z!WCUp0(^H=BcXHek-IyUBuObr>BNyAkT+(!E4rrY?YW%GOVZJIoK6Z)Seq-~Z;H(N zLm#;@Z!rGcCEoQ>W~6(UBD6bkTcuP|r&T^#uADPj?i|@2$P`VQZ~vJa-Wf>iwawfD z`9y}+Edv6{so>Ccn?%IuIbWC)-}ZV!DHnz4NX1gN$9m{b#bULWX`f?DKx#ZVkH>;< zqY9g7D;k-#s)&kM=seYLZ{n}xV6^P$cUjebxgq!A*5)FP*$OFE8Z#RAynj3Ji++xj z@yBl=Gyfzx&G&O-^uAb%VhL$qaUN|~^=X?ZME8|8sc~nfmX}XlCVdA4gi`Jkd1!!a z%J^TU4Z7u%pL&Qa|DPnZzF*@#f^ovVzh+Wr-M(w~`yn);35ta1J1TI$#(Av1aV8;} zn^4FcGA1vL@&;fpFTM ze6xaZbSFHgGXjqf2VZ(scc!K>?oj4wg-39L%OEBEB)_NZv5d!@7Ibr^SGbEZzSf#p z?H`T0dF%X<5*w|6GS_!3G=sZ`~r>VXv$+9Kk6 zt;x*xmV!&oNgMz2crq9~h$q05K{Lk>qdANlRnu!xM zWB@XbhzK`x^z36#f1n@x2T*a%tIc8uImxc@uvkbW}Xj8<{ys@jA@R=Bvm!89aAC3mBUQEN(GNAiOF)d4LZZS&JPB5Psa29e%}F5$?I=F z&RnHFF#!SCTl$`$Fl~`Z$t*70(4MkCnf0itX?77wzepMFmi1ph2dMAqa|CoR>Iqe3Zrs`(WZz=+w6(!6aN8B%$*aMJ6pz4m#ZedL~`L_$Ay>dZRgW@vfIXd zp-lC&_GnjGa!xG%82@l1J0oY!PFN@mk!K>P9EhqGM1Jkn0RTr}>r1MCY{o8cho|vi z40He(c-!+d?4|$QPmvui1RzTn2W%6Fo%9+~02pP*37p64+3U+0psYTKl8PJIabIy& zmynPU5qWz-^!XEnj0rIMzNfDg$Ru~XTvz(tkLV|zrsQvIY`i}Dy`BLbO-d##p1@wt zZF>Km$!7y+-b_P7!^!e^9Bk}e7v2JGpZ`C+>)%Peql6p@KL7RW3B6838fk(HigEX_ zlB=IlF?i$@-!NC^?RWfAX9c4oOk+v)NfFVNDu(Og%^cMW%MydW%0uf|MYv%*1f_-QXd3J9m9@1R} zjq<~l(;7g}xG*;|H9@`fZe^~1J`hsj%WCBt>6OCCST1vWvG8BE9o!C7!!FJY9GU&b zjR+fbJL6J0w*BkuN|aK+c&%K=pezfqU&~mV zxh<=H(E&_)Cxy)@fm3==jQpkR>46{OqRfo>T%=iYim472E>7sJIkevRrk0rw(#S~k z{GR=G`Wv~i?+#-sA7U1O?Rr2&KE&k(Vma%02zrB~j6D{W?nT zEarC?QMImDU=nto_md@b4mMA2^IF6$M242KaYKWBCub0;4_jVrcWYrz3f!$3&R`Qm zE|jLuPFe+1xCJ?$U!Fhk%HH~k0JdMeHY|Gd6|SaGNu>si{+wtg2hsv395~IqUH(0cdDwqU@qu z;@7{#CnqOcTU(Qa@&E3;Y16k%HKy_wWmda}^@BU+$NtXS)&`I`!!=8To31@&-9v*5 zsZH%CO}UW!T1pWMkezwzj6|JMrQ+p7yZHH_a+ni%N7{p28D1hl?*kr3xxZ8;O)cYJ#MVH_-yl!mU6Nkd-!#S+xr3*|^Bs!q zG1KIGCy8z&X5dX8gyixUoCdY{g{+q^iDjG@gU7h3Nj(n&inV*EV{xJGSd7}vb2TGg z3-6ype-c#^JegH$;uDbPX&l&u>O&qB6=3C!D$I}h#8bO6%!#s*HmIsKnEBNCYb@iB zL33HQVsI@RRl*T@!a?6w-Pjo6CiGw?Xx@73%MaF+PBu~PCIv?I!Qgk!IO9aW8$XO$ zU~oxVV_ZqVIRkaw(`l77hf>Pcrr*QA{s3j(hFnrIZf@SQ`iZ}VqlVp1!rET8{C@Y< zas3+JCjfCS?eVNrh>q@P!8{vFyyHvohxXf5FQMlH1sp~lY5@c3!W%|Yvwuk3nkiI>6l|D_`70?Tfy}J zo*o@f>pMxoO}xLiDjKBFTP}1dEW`Oq{QS(!rhYlLFF*sWVW`$Imi<=Q+|| zfrF9tRL8AZrTS>`QJ6xOVzoY`t(D{Smen7IN@fQ3tm)=^S%ZVHPf1mSL(luRKc#Q4 zyZI{0O|?7LPHn4B2@ev+t`ZT8qhEYMJ|4-sWBRmSqm)c6%3e0ASCeyo)Ns8rNm-ir znnP1&r5A^qymh&sea@qzX9Y(yCl3BbAj+Sr61Q#T-DO`ip3gv!iyvbQY*EPQzY0ou z4bU$c7ruOZ#<#|z>J%fnkjt#z-0$7pa0KW+>?^T8`(A4+ejdwGRI`y$*Q!FO^a}R) zgzkS_rV0(3Bj&AVX%Ppq{p_bV@-4Mp&y`;@rUXwNSZN%3`NrG%HXSC}_5-#l9Icy=1;A8abg}CS4P%2fO)yKH*l+4U{1aNUz}%xlh)WQ`T*#^EJ^`%?$)s%$IOq2$4Y!_^<}s z@!Y;U!2;{&3I(N15$erGbhFESCP#6B1_WMs0s}b!-=*DUN%kYZZB@)R=zu~%IrR1l zTi>dhmDjC|#!5!uaRE6j8H!8fw$-l@K6v-E&9--P!^(GkXy+ja{jyX&_@F>$+*4!z z@QtjS)^3eil>(tA_KQ4gYaM6lO8Z|O zvqHmyQ-0qXPxGu%RCEOfO=}C+mTvTsN4#Q2TQE3L;UaaUBP#Vy%(V5^?jDaS4Dn)* zyz~hRRV$L+YtxWYgpMddls^;K^zke`{KV!$;weE9m{}dCDh%aq@vjP-o(*M7e~Kyk z?hfni+;V0vai{$5Tu%n)X4P~BMhd!tgRR&ZHtj~MkFy}JHf#ALk{5TH0HQJehT)i!%0pv|Q2y zE(sdyMTs(bnG&4VDDBTB%aT0t3m7N_f8O6`-c2sb^5q4jl94&dQL+Bezf+a#>`k0& zAjaXa7=e2^skDB8q+w%(QgXL~x2M*v3CF&1-@0^~AIghvTq9cFlQa?wbGA zsmZftXn%T{HDi^jvYkg=uO)ZT%1>U@J@r0Zy1>ngj@@IUM1mnHuVmwg9Btrv?Jz#U ze!SgVIC^3o1~!aQ_vC&S$DQs1gpqm?ChKAs_XSh0yJ;#<@gLM&zDJzMxSVZV3*V_W zw6fzDU)|-ht|mUj*BR8N%`Zgs-5Y3p&D%#&$c%~Y#kptZG=%;c`(iD6DJhy5{8OkT z>-NQt3^6W+CUdP#?n@BzSrls8@LnIaPQhg_8a{k@TReXCv&D9<^_t|Ggy`ka1+6-s zOQS(;*k%v8{dS1Qd`SyKCNb=;1P(ljNuOsV;z3%foUB(~6hGc=&}IoN+I1c^et$W(Wm~ z;C^X$T-eP&7;C^Ts(THQc1xPB15pfoFb&j54A0YIK(x898}S=?(>mn=|q7aabx*~2P0=i4~3fV#lyTQCv;$X4n6 z-Q2xRflnk{Se2*+OzYX%cD#{*)YL{c96)jF1df;#Dv**!+GYBn0Pi?s(=izc~wjjf`k#kHOfZtQDkx4;nC@h|T-&6W|?k!azdV!L*S>dRumLkdz zXo_o4j}d=iI}n6SC#70GXf#~0K2aUcD&t^qLN#p&-u-&k(s&6#+C*y7YW$4jJiU21`U1*{zNI}Gzg%bIkPLYG#X32$W1Jej z6@0|d<+5O%W$h&RlUP8x>PPw{k3T!m-Qs)6F_~@R^jierDDSsJA4(HI(j2SYyPF{&<=8=w)}^zKM>^{{BiU4&6$fsRHW*SuEQ?N=jn zEB1XP8zjun|dV`Tzu1@I0!#Yv|d`{AinfqA36cobAY%+=~DB0{W*JMhcli^6hOI7)>$ zamT5~#Z0-o^zHdPO{P$roQz{UPyd#0{AKqHmY>l$wcyQzBVzmV33fwiuL(B)i=o>c zm=CQbK|}KhJ}>@;=LZ&mc!Wl*Bl?}5E5YomidGzmnwH^gVMZDY9cRPb`8%73ncHMV5fJ5#Ub>cE~w2=+@E!s)CWza)p!`Jt=l@FdWA z2%E6kd0|I_QWtgT-5eXth+1=&N6vgR_}Zcy08i+-X*49`Q{Q=QLrdYm5nR;8m>I)@ zEVe5?7uujBt8S_8h5kNsoqN^cwy)w-bi~(8nh&1cH8aa>A1D1jRy!|TX9#`MScWnC zESjH|3zYt4X<2ru5yzui-_McePJ?Q$mYV#mz;79bdEUcvY1guu+g|Sg;To^A6R(bT zbR+lKYZj-HxFSeYw7OgFVaCkmbbf+mtTJU`_PFiUODj-TJQko3Ea11&MaotJ4GvbwHzL+K7mUnf3fvrk=M@*a%R-2NtPSxFS=zoqolE zZ01_SK6;80b!ru+`O3=);VEewM;+p!aS`zt5mAEX`{3?fi-!YI>V=ja(WoppxuYSu zGcbD7@8Lyw9L4_ou$BBKai)Z#iq1~KUl8={?-?c=c;q-m%xlE{*1<`DEKWI_DJe8Q zz0ESdCi4qlAk|~v%TNbC+w2#&b~nA$jf#SAlG zYRN!1qKoY7eRUZW=^YTFGc{Cj7!zmD%B7%~)_BwL+}|zNL1|10lucfCvtBXK$&Ir+ zlfN0=Mt~6pdNW>G1yqOtl#NUiD2?z2j5)9;*8RiZQY_;N(N#YfzRJr|lpY(` zdAh^0{U7$eGOCVl+mbJe1PC621$VdLfk1Ewp5X2d!6g9_9D+L}xVr}rZYOwfcXx;0 zMZWv)y>Gl8{klj0eDw>CRMn~4wf0_f%{kW*Ij`!O<7q>i>pAOwN>swMM{`5Q3=Jcf$Zi$R}GU2pbm>t7kgz=ac$JL^)^u@-Sz=rx?sBm+JdL{2tQ&WYJ zkYz^ztTp4ZNgwOTtOMg0>o`Y>Md4%Y>1HHOTVh1fRG3(!*1CIHS#ao~3JQNTy-W3d zo)9A%G)t_}k#h~gwUGD0ij>c2*ucl=yFN^PUGRZeZoqXOrAxnbeqLvNv5~75X0j%btG(Pm+8N zW=wBe%qY1e(ZXsLKpwGQgMt>KD|Ymm^l#`84FR3(!6BTM2bu{uVC_R-CUr0aUcR}^ z^1R3bY5MMniR)%TRW!XCM@}ba%w`2#lg|na%o|{1BEr8tocHlL_V_1V?lg)ipAUuU zacOBOJ__#!_#x`Ly1E=zGh0S8q$%zfIlG}+yj8nIa7>~e=Ti;eyPW1f`s{Lb7?bXF)}p(8la9F z>Kt}VRMbehv9Dd><~DFg*31rY-x{Dt<=y*uyXbm$`-k~AN6{2?AYOIh0{~2Dv&MLL zb|{&GEL)h3_cs%8j^g7!Bv1$9;U*vO*T;k?W=RGuh&LqZSWGeDdH-3N_flRS18jvF z@D`hRf&ieG57lZO=3%8wR^*R^oIdya1f&;_8Rw5mUd%-OR)Nz z8Yb~Bz-jAhMSc$m((2IzJ9$WzsGQ*MY>mWKL&Dz>JxSB$IE9%<%q^)d$f4t?Hu+vv zo_}8LR_uIW@fhz@GA*SK&L_JlAL(A+NGhdJ&^@sF2B*!S?S=|>PsLHt`SCX4uwTK& zIK{pLU@&1HXZaQ^%Iu&S62!3tkoXvf4^a>1a}Ej*hRV$fua)d=u^+a7KOB)s!3@A;p5hPt}fR zD7dee;*!D&^V3YU1&-0rT5Vvlr3>n*07t-W6??7N?3ni$Jw&AiktcJ|A>Q@X6y zXvkrlx(vxLRVf#SS41kG!nEf=mf${RQ~1Kga&Sx9NN}=@=4VyTH@@AM z$v{f|$|r5-_AVQNUEuhsP1po3NH1sQ#z-mhu9CW;WcQOol9y`78`&E6%LZ8ynLs0> zsAI3}3p<^eSjerOX+ac3OM!+Kw|m(e-o0-o#;|WLh-vk7pBJ#9--uqO1PJ3T?e*^r z(#<^9mhLniF%GF7@oC7$To~+2a(xYyc`QK}Q_n9)nip!=?a@ z5SE@;Z*Z;~U?`e<{}eal$daoU!6NWVH|GShwW{5&z)1hw)l%^6^c?}3S3$F49>6q2PChEpJw4Tqw~jHXR__mlI{TJ2EJB`x)k$ z<_}jSO_lVPs%+~&$6;`NwQ}Jgd-=(3d~hVve#47T($wXBc~_e2#7oHF1LS(p60Hn@|b$$ zKcB6UBF|z|Q%cJ)z38a=T*}xfe^^Fy@{qb#uOM59rF`nciC=ut!}fG#xa#-Q`iriB zFH+m}Siv9EIiq5EEoDsz>??Ex_94ieCd!QntPW^U`9OvMaZ7Y(WYNz+szz4yg@}=4 zs`P@MkL-HgjY0}7)x!7}OHJ;@zQ*)AC2T7wol3}$DZ=PE@6QQV11RUmR$5$Z4`COv**Bl0)`KX@DuZSe+Ng?W<4;Bj05Ma7)D>EtF)+7b&m;UY4P z(F-@}#-X@(>bR6HMZ=z^8dDznN8F}C`&FM~Ufue?=i8z9Fs0%+IlhZn^!0@!Yw(aUe+N5q3f>6*z6 zHyl%fxe#jf;>bNs_BKy`W%Ugcs%6-9R-jqiXO%lmp#13~+g77# z8DF8Rb$<+uv~^JU6=7`0b{~7-+ef0{ud1YbfQG9b4QY;szOY}Cm(f~$0m?@<7Mz>_ za=uZI6fGW+8`&WZ5x4dOubuMnD=`?U4Ww(NoQ7rc55z_ReNhN37--Qjt4CMUFK>^@ z4Zf;h8T*PK*h>SN(<URY&Sff;~4w9B>NZ zb&XU^XQ|7A2rvsVo@XgO-HEIWA)P*Q82e2`jCeEo0y>WELw-GH9mn3EswP;ttZS6` znRf1^CQvwuiM66$++T^sn#hh)WF1PYpOw;$j0iqH9OLm+a0m`6(@NO1z%Es>{UUBxRyTNik;j>=PO&GMyTG|uhQem=natxssYG6~QQ3+Mv z&TZC)3TRgCZfv5Q@Ki3No?H`sF)UJh;W&MDOwdqBS$?Gz^G55YC`#jJ8i4V{O4cvV z0?3ygiZGbUu^xHFMm-^lj(qj1eAs7 zqUFbE`|F-9AlsQ(e?z@Rg_T;);!1~kj*cgft39KS5Dz$oH<@}tg&#QOEECVn`wLQ= z5wag)#HaME@AJ`%hIzKnZ*@i<19`(cV)>_M=>rmgI5FJjG3leS5Jhs!sg#$!B5(E3 z$4(NhVsLD8x#APaZLbp~ZOu^Uu-Q+ZbADp)C|EuhTt(T3_t4-|*tt<`D!=&L-4iYl zg|lw+w!~SXIPWpV8ir78)0l0`TDl2zp8?O`!j{{hWZZbd@a3SLX8?t5{9^H8pqYfx zkiZWLHi>DQ1PAI7gPNU-oh$9(H!UQ)WSF??w|-=n8k){H?9F3Rrs=oO#edhpYtOh$2^|XG6(=od`k18| zF1RCP@n9Rrgva!aX=I&gx61g^?7WEl=Bc83W!<`>CrAbN5zm}v(Unc){N^hm^AH8b zd5eNwgo)jI=7^F%*)J6?SXg$srO8cq7!+H!w-_4gof;^IZn2;*DrS^x#>F`n zS0R4hL0idjN{uO4biyF`@xfat-Wjm>CRz3QfKQIkiCenBZ>}U+e14pW)I*jSh3;!K zWT`o`oYeGDd@<>Ix8c%MvsehDmdQl73f+8t zh|Qx@dX5_X4V|@OH~vH0n6D$f>#LpFMrNV-TWtgeW`)Z_)wD+bIuzPnE^!nm`T9S z`djGPKDx~M)(pzhZC=J5ITh?$hlX7`_z}U-plQV@B@t|Vf?EvUpOM|pQAcOTi^Tj} z&pIu-n??v|H_#ly5o56?!K79IDrU2>d5%<^)P`|U!CnWvU}=sV+|TCmIXWaiALXW? z`UOI%C}Q-|R;Ma`!NH+aL?U3`+h+-E*Vuz}3dRCIdxHnK_k$%-ZK+RwK4{3K;8s>$ zcymYkbO}`U3%v1THtX~7WckKSTRVr}Xc!1RyV%iXfdLb_W9G)`lv~0;70f-N_N;H# zH>JbhB!Fho1xY2}VPp!oOa(J>az?p>AtseNH)xYylek)1{Qh5h4wYtTIE(uf+$TB& zRZcx@R0k4+InmNB4P`{xJBvnvrUA5zE?O=-)~DChmKm;344+!tReln9^ZT`rrJ4Hf zKpKu-^-ogZB{54yV_JJV-{kLVDHPSid)=e$cJ{u5om;R%+biLAFLz_lNUzG1eHlgK zqJD1DcT7=~AMeL?9F(9C518EY_>T|6GD-W2M?2czW(wZ(J7T2OVCiD zs^_r&3a0D> z#3Ac02Ar$jxP%XGq4SPQfiNm%K;5$~>?jw7M*s{ogpO&*yd#yR5qE@>N$j_-kWz_Y zvAvWVfZTbdgO{fM3v18Q2H>>mDW&5!D zEHkJoXvsQ^woc?X*Kid4&02$q91<4B`S8Wo%{&*mttF>5De9Ozq7k)LeEK3MoeBeU z^nEp{&uhzZ@(Pxvi}rVuGOmB>Ln@mSPlkY%jVuz!T$vD_&xb4t>Pjw<#3sc+Wr=L! zk*MpNo;Q{{s1mDmU58d9n9?>%_)%e7_4Y+!YV;AQQ~`qxDmEtS#qi{>AqjvSSwH;_ znvh>+^ZeQ*Bdsbi71J=GA`QuuYU$ZA7qx_|wd>>=mxr9x-3p&R!AqYdAeDrX-=IJj zJAO}kXs)`>irw+qacr4EKHpDzAL&1{+_ zugs-P-14!;K(eZIe5OYoUm3eUW780~M|hg`vs^pQszXe^o2Y38|sJ|@9 zljNaL4q;F&)VWbwIal+#GeE+e|pwB1sg!bP->uG+Mzq(0}} zZ?O9ztS8iff(eA2iK`9>$vK6c0-G;81@b;xG+X@g<2LB0>2mQY*6CO`Aeui#Vz=Cj z9R|6h&1-Rx0N~yPJm(bN=H0X=)K@cpj*qf~=;IkfI9g9Dkr}mh3XPC?%no)PMz(2< zIfpuu+n~9FHe|Nr#gMXx11teW(~Akt$gW$=$uZk|bqZ6QYIPm{5HK_!X+At08k|D! zw_>HJAi%LR=c*le`k*5PqdXYA-#d?4QPV}2?W(+&UEgAW+F58-c)fNIP!zhQGz7~@ zxo~g&&x0@ql^`5!z>$7X!JK}J}U2-k_V>;0jl z+l?;m%>^UQOBc7NuUgkM8JC?G?i1xUv@^t>_s=e9U3>Aw2)P^1H7Ru!PaYFgke&;u zgp|?tUAeEadYV1u>;GiIbdm_FG}Biw&)M_dSrqPS8UDJ=o1A)ED1GbV=PNod3?*_| zu|jsck6LKO?{e)~OT zYYY4aUin%CIPIBDXXjV)j-pDM?$hFHsD(5shJ^7(%JwLnSH9$aZaCK``=#tLCUD>?vG3*+e5!DC75C}SiYd3;Ak(kY}C%X!VG zD*H3OUS%q7XYq>{nMQPSZ&v033|_WvNHBZIvlZ4ny1>Gkq^|N@wnf36vSIH7cT`5* zfc^bdTNWfAiH;CqL+0fgCUz&Gn?Af_`k5h?mxNO1TgfO#N1LaR!B2fgGW~KweDf!d zb#QS3jC{VGi9dTNu*IzB3YG{Q0!$ywG%<*HvdVsI?-O)oN|e6J?s!QSn?+SXy;Osm zh&(~p@+e~dn2z=1`$rv7LlX{B4>s>c zlcKz?E<*%Ij7?rG;6E(kAM!`pkZiqw5U3k3kq+bAYvFT}@W~=9kmQIlA(st(`b0YG=_(Fh?JcjE~!6Dsl3TxOz?LD*_zGyqJ4u?sox9 z$-Ot(w@6a%$M~VT+}=Fk)Va;wCn~!ozRr5~%0&j*hj%+iJM=>YqTiU#T|Nb!w{@0#;RM3+do|sHP zz*F8CwUP1ej>G-${0pE94tK}rhW_}NfF&}-&kyzo*93vAZXZSrDCwt}$<3`$tYGS( zAo4NJ8`MEqo0RKSDbgM&Z*OK9Q4l!k=4sN$7(7qp+`~MKf(jOA@*Ufo3E!VR;=~2C z>&GWrgr_IVRe&;x5}uLr><~YHo89cSm+-COB27U{zYj9m4Wol#{uX=P zJYWGP`Oe|TivwmOTwIJK@^><55Yq_js`HykJO{8*FxUbBa?e8nK8S@$d!U7fhm*)d zGRDTe;$UvwuHY<}s`nS%$2)HK2mLNiHcJ7n9rIxuD=Y-!I~^_BxnXpHixoza!@^d- z*cfd=j=)bh)6E}FNGJ|7;eVVB8jA8o{pwe0D6&>R@d^BfJPl;mP}jTwnkgo%Y1WpD zB#^W5%u&J>Xj=at>rvv6^v3eL~ zzYF1q9Wm3|)0!mJF>s-qeuln*i{%FOmp9zk`rgW4kLxx%!;5AFn(1UcC#G^i6+~#S zdujt%<#A_D0cCrU$BWJ$?dW=nieKlOdRTe&>@Qkpj3}6CF(b2PyMH5#x+X#*Da=!B zV#vMCjBjB5oBQJ$KuZ&Of3eMWDf@fIDziRGB(vu{E>MX<1} zAkJff^4ZjVxV_#nSzx=LVh*rDGWW9fP)ED6HsBbvL$lRo9d!l<0;J*x_`%9aQMhsg z`2VUT@8lSlW!bhc7#gS1;|x^KBF)iaMhxK9BwRu;PPZJ&$Gmu@ZMnb4pDO=o(*aKb zuj%T0%IRumF^074Cx)t7N8x8R$?aP&&U14c8m`T%^8)h16Ni-hcGDJe86>}$nU9!x zsTY-|uZ}3iOqPLrK~uQF!gJ36_!V01P9Q3v0~*lpI4`WLUP;H3_~8~i*();638Oa$ z&4$|#N}y}KUDxLnPXCFA;Z0^zp)d59aG=Hu0do{h9!N0`C_ zGF2=U!US>kpJ_|ac#R=}JHgZp$BsUV$4a=ZLd0#^VC-S3hy+0#y?EgvNa{L21Q#aX z2Ct7FSB@*!Q@F&GdDU#)Tpy%jjVG(54zQJHDOh2?=`mQ4%FZEjJlekV;|SqN1h!{_ z3~7EPLQdlE3&c_VGy_`JI+E!17J;<~Pia3+Q74OaP9J3QR4+N+uB39Umg1ri@p@17 z8Er`VyPAOfko?i~ipz&FLmJf!XPLlRX7xW%o;Iaxij?UB>Oxf!_Nos|_pu>BI<~t9ncGt8HKbaPy7k5!JPg;| zsgr`mOu4Mo0x2^vrP_YrSPd#9_PI5~?oUIX{+$>#s*VDPGsc++flT<_geW|5Jdo1w z4mdPRqN$zVs{*t*T+xbh+&FQk_JEe1*aJyqZZ6m2%p3U;njH*7@ATE=m?vJF(gN>` zmOC7Sus*Nqb{8C{&L|_fddDppO^}k6SPobC1u$RsQK~#LNx3W>4u9iWkFhKayS|iR!ljN~ij8rAq)KN|nrP@z zBP!vqmz=oLk0=0v^2?-a^9{R%NE(vr^he;JC2E}TS^-g*HNTB0eV#%{0)tV%&%RUCld-)R5A7?OlycQNHmO{|z$gSfg|%0e&0PRM|5l&s;S#=X3F{`sb| z6!o|rN8)iUgeX^nR!LqaTNc`-&srlVJgt|&^Cl^0p(fE|6Hstdn$&@Xkk-l><&r)r zk%&c3Rp~}J{c`QcAOi0!WI&~3vIh&&6*qTJ`u5S27HWVJgxVA_f*(V$T3b-VYTnL86Pwf&vFSVpLBcJ@LnHi zs)Zp<^)xQK!gxF5mNz>7YNpG~Q3MLZLg{l(c$}WSH_&)KR=u2_O`ps?<=`HY34&co zLTYSbD*#_8kU^K ztpo5q48vXRjd1Su`yho*V0u$!6)!(U3YhOnwP-fr$7I#q;&LSchY>qTHFc~pg|jmc zL5<(Mx|^($oX!B%M6<~tV#SEKReX6KF~7JDU&+tf*kK0ST7~>)bNy*a6X_BvIwnQ@ z#xEEyhJtWE5idvx7%FF0eLk}QaJ9OZ5co0p?7w|Tzc#pdQv;4c@OuwmqdbonV#zZc z+&jh-OP9`%wn(4t7^NgWMa#%^(b`yZ3}&4K6XMQovSCZL=+^a?DkCA@1W$;=p^=Ub z3ng4rFbAWDm<;m)GRhIKuS_H`V)=s+LyTkUdkxBGZn2f~u%i}*J&G!7f`!$BVMwBXdHW6T43Fb+Ci=}mEU6C;-G*K-6MK+Mo|w8QUyZDjNSqm2Uu4Q*J3HT>*HWmTJ`V zz1TuF46Qe`5c@^rKp^8PEh9~I`+2ih4m-Jib*%4vpf`W^j>;!n*lTI@<>5Aaj>szE zZC40YToC%{P+VE%MQNUD(H&=#uW@B;ynJlusnoXqDaUHf=&n9!KR@8X_Z=o}q{iy5 zH9Q>h5U%=jZ(to~MkioHt6Pc}ViXzyeT%&Yf^uF|f`u`ST#oHU0FOGk=LJ4PPAjFK zp*Ko0N34lzb#wdZFCdSC=gE;>fpG%uD=lT)BLERsIABKDCe12Y{%0a}sc(CXY5~EI zk;pqL^>Vb?{s+=R6p>RI>^_$kTBMKa2k5v!_g4bucWru+a8TXw~v zEk-pTd{=!sJ!@I->IX+CC(zAHO<%;4q>qd1QzPO#!$k)=|iw6xO^a;Nis<_nJCs;rKd=&qsM+q1S zKJ3!R6cN#M>sH0;Ky~mtxz_!BEL{7|BXl!vT#|3a9M=r?boA8Zj|zIrBVdp_r5l4j zW`Ts}D6M=qTCD@Nt!rp*x*=;=Cs*#}dZVd(osp|VpAcK)-so59$I!(oeSNm|PF?j||7?GH%G}c0w=qro^LG~g+sKt7 zAiJV-(NC`N^L*y*TaOX^_`-0P6GIitA7mv=f0-H^i`7c!*WP?iy|P~)jr*oZ1BwB= z^dy<+1}DrntiYQAPu)NtFfBv)Yh=EP0j^~tzYYdNst9v|@TD|)E`x{-DDlRuH!G%g z6Mu*vbZVY$_0d3ESazecQB&}z5iLS5kF;mMQ%9@+;QK(w-FiJ!Lq+54?n8O}yC6%0 z-)dNaa%XI1(NO2!e?`Rv#{RX`O<-=pTdQOqi@-GO4c^4P_f}aM7#2KUI#AmtdI1OL z6rGZC+h^rrcev8m+}zxY-MyMfQ#Cu39HekJ}DEtz=-BwGORsH+IWy06BZirAh$T_$C z3&G0g>3TiuSxuo&J@+Yn>gETCw7jyJ@TLi7c6e*}*9tP^DnmtT)s%MMQXK|mth$Hf zyXP1u=`9L9fl9(!w9>l#z)NA_mN4aOZ#%j|jAn)!4)ix!7?2eq;mAYwreJagDh(Yx z?;KM-lb&Awvg2O#na(31Fp$WIP8odPXrQ|L+UR5g&hS%#OP{IEKq9kb!*}LPFHi2v zVdt&$o47SxaA<9zLy|itDNBVqu}k%u^IQR(;9(k)h%KoY*e2`>|Mv)5^I_@w7(3DAN@fWtN$nOqDb79b(Bu z0pN*u7G>t58ppqcpnQ=MeIexBKovi9EAaa@i)vetwAx_tu2Vd^Ac^@PT!QRLe00&!wvJAvqZ-3NkO zqT`g>aA#~q+}@OQ%NJtsB?wY#4zao=$rvy{yEwDQX^_b(jf^6|Xa%agz3=daE){#j zQ~E&NvgVIqspP@h5{eg>ytgdZ8l@pkUdvLZt(yz;`hn+R!DIz#@=@L9^iBlQZ!rN0 zlHzX#{VD!S2e~kW%oks>2rHfih}T5(kYpA8exZrO0v)&HsY)#p7*OId+ykq7tC$5M zpmbI+OH%hDd~?w>vl%+znf&XLfFFITp9R$$aX^WB>xTE$C~_l5EMo&YMaN_QJ?2ZI zLC*m2QzMvTV8DbAVcz)(T-8h7P;eeTmJ6%Q;4QE2JyO$Y1;L9LmDTG!fRX%&5?ET?zOODF(4l)2+b|YG+ zeA6*~hk7K@77lW+XuD$UW?OH+u;k0CaNdYxO3I)16t|}Wzz&2LJShg$QU4j9LSQ?o zW1$U*gK>02bI0|1aAitGVMto3)wqE=)<~t`@F6qj7uBa<_427U99(9lfw;uwa(}?) zao;+F;-fAfm?rs2dqv&4AlYwXha{f zx>~r29R-T-x-qXT$zsrD#qxD)$T7O}Z)l^Sj30U~obK23X!0M}HWkKNttv zW0j>w4vJ|MI5-Aipvfdn@ZR?Qu*^u8&B-;s^w1Y6iKB*nY$L#WO}jZO9yy+=B~|Ee z5CXhb-m>X+V*L9~y1=_Xn)blmfKO=ib*6GzsJ_dl`+Mlzwk~;5Qq5_osbX+{rE7SLzCuRv*o8A zQN5}p=qvMFgD;|=;5)HkK;77z4tGsrI5_A!+uQ#WmqGaQs2thI@eRoVvpF#PUIUI} zj&Eu;iKTzyt|$P{#<^{pGZ;WE^tuc5LT)x5drh%o68k)Ll{Wo;IMzX<>}vMPuO23) zt4u}3cq_5(4k0Bh5K_|gTKTbQ`YUyeOTlTHB#*<8tUtm)np(?YB1H(n)UE#oaD;DS!x*j zP=&jVVp#;!2+PFC<}(VkY}dNgbt z`0AGdd98BKhsRYZ_>L@(1?G!sbi{JenO^$z~WFtN3@Wqx?cL%VJ3yn zN5B&IpIOe=M%kTZWK<2Ke-h0AtYPdof?JGhq!MAE6ebF2lq@uh=|6!veLFHsfG(qd z!4ZZQ`l)<*5LY6bw4*+#CWaZz$tM8Bi`O)!)FP-p#q&o#x>j+?f>?J3bKxq$SRM=W z;k?<5c+-Iom`{;GB!G7-IPfE~L$qe*VmKil-_PwZF~ubGYiq6Cj@qZp;BhPd8kU!b z=`k6+?soKP=ZAh(0-gmQHG)6)MKa^0An`QJ?`j1N09m@-&B2lc%*+I6nXnRTR?qJR zPqEWbuQ{Jj-Z}-Vtv&>E!DB$A&onSld=Ph&z$Dk4;$X);VwXO>68`{KeBY*C^a+RRFFS9UUv>~0B4j=y zig}-hAvz}#^Q#mfQ-56mIKPopqyE%X(u!NXeva*m%-{C6V z|G-tk_q-4WhLK!n07Zh(0_P~vqg1m87R{=R>Ch3WMqY1|(sZQ{Jpp zSkC}RASUW_9p>C9|0;ghmRaJP2_u+~I*~ zxmk=M>ZD^F;m2P`G1VM>0_CN-7&YcyuquI&mUY7!;mg0~zF14I4-;TEZU#-~1}?qM zATcE;#kwC(Qn*bJ!onFE9?G*~|30gBdXa^z>7;`+tKF>lq2X=7kuy(=G(lfsff@^}Q$Q{fpSpZXn@1zN*iHrAkO6HugN7Lh|E8W}hS5^nmcVxC=g*2r zB^e?_Zm2&e4VrW&X4pW1g5eLCGN>z>={rbF6dzm51DV+o8rcOvZsLgmgTeb8s)9tJ zP|Fn4Dp2>GRH52yz8sQlly(Yuz`BFt?DciZ8NM>fYQI!TUy?YWf*ghKoH%O6d<$XK zeqt50)BgPX06$-A|FV0vv9N~QO!tW={X!G!xgf_AyeKlK9G1!=QMtG=ljilut%9I8xQ`|#U4g=gXVS`?DpcZ5`>^j%{ zjf@w+c1asp0TNN5NUi-1dng|ovow?OIN&OaRlol8z?Dl92-SEG+B_kc#Dp7=Y{KhP z=MqCJxG>LUjo#LKjR-(z#BuQwm`JUV+~_=sT-jcoCE(&Y@7NCelhS%si}%Gh0+WYg zV@pHf!me6IQ1L=R4!60)?zFyL6l~n`%Hq% z5^!c9B{St>H3pCcN!%IL#DX1iG+@DvEScRC;XP(#c#aPQ1U5!!<@%_YTg#6BM4D)$ zBr^6i)knNzHxcY){sBEagu#Xg6h&M#D$8uV=lmUkB5f)8A0Lk>9!icWvA(@@c$bs*f6QSFC#{dcc|tvU(m*RC#B1BhIgSM|ax;juEF z&FbMD4AUkX9iYe2bg92P&g~y661!$vPNQN)F1i2sWgu1013uRJiqh?z4*b3}O4g-_ zJS!hOla|LtqD%E095bD=%Xc=jSL(zV8zcvsi^=7J!2YGr(qZ*x?t`3w|A#5`cy$3w ze>#$}))a~A*@}zIcSD(9U&KxB?2w!$<2vne!!c2!0XOVaEAXF z$Tk36U|v53jCKln0qA~_V-Kv50FTl9W&Cr78=j%=@LnPSKrQ2^nE*dE*pPt8ES+X!qHi&Z%W*p1hPIvyO)}r?~=+Q?!M&K0G^y$9sdEWt4 zowm%sy1KIRI7~?3v_e5aF|2&czk07PZFb~>wYwwu0|@vQH6luh%+uL=rgT-=0my}& zm|CV(%9n1mqC+bz^a4%o!NqMxfIoS`FlIbCXL8^1lXpSea`X~61L>En6$%V@dVzLP zxs3%|27%gRQV!#?uS@Fu=Ix|ge~IB9OWWtm+uSE4&<0AXX9i2iciH@0d#tFl)xtjC z{zW3TcmKD9m4&EG20l4Jhicyd5Cww32U3lc2x)aF>0UrI&1|ER|u~1^Eu0HH1n^=%;<$HDvZMu0V?A;|J=+}?-( zD|7o_sS)r%WQuE-c$$fE;+G?=X1HRfG5P*U#iK&|P_)0PD7_7AQDC(Z^qBwN%Igb8(8*Ps z1+o_6*g_axRb+wDTk}05ZYT$4sFMX1%g-J1u47%Xw7R8&^idSBB5Wn6qr389;1WMX zql174js%em*WULVRq%{SV$Yqh0ItxR7+Ns8$e@&?=;FrohgJcn$B+Wq`^C2$o>p2+ zQUFQ^Cq1tx9*f?yg7CmcgmFV$4T(6-2?PU zRqFNKm!JOn$9n4)aC@j8S~k4Zqlw!%My<@0$~=DndFr>&#+8Hs+yv4A#`ZuEH_(yi z*e}Z+E63F8o1}?D)d_Nn^-;Wl)XKf8w=w3_V|^~eETH_L>fJx*La)UFoFDk87lPTz@#n~+%;50bUQApZ>^#Qs zZ{rWls>~bZ2%x?|2kHx;XhBO@bm)VeF(ru(o?kj#Li=qpGTvk3YwYfxJpi|WtvB2` z^7L=xiX`TFM67+Q&c44v<4Fl0qJN8J$?alrJQrki_@sLw$z@h;g(FrqTo|1UeGz(NxqXR9!BT~ z;BH^*^LWiz2|&Q~=)+ENoR@YowFGh3t{{%!LAlvrkYyhLf}K;Z|y^dfQS z1MYNcN7abUo3Doq=UtLGPnQ2YxVODFGYP`K^;%j5|d*c4vGO zWY96_Znys)U!_#QJwpok6LD9FfR`w=0qy^P`RThi|IeL-?mqTUCLY)s6j=2 z4!hOe@j~IM$9oNC6lkIbrEefbE@JNo4k+HzDEW)mx)*|5-+L_i=LQ`%sjt*ii|_*x z3nW^psvRbm#OtGhDkAb|?qhWbZg&TSvr9S6SKiboNdb$*G}*$kcM^*a)fOc~Gru75 zrzm-Y**vO{7cvQ7?fR+;<$ne!TIhFQjV1a|!M3mB&bqCN0UC>7DX=O!_s2pZ7RMR3 z+sWxPp-tR{fRPD`2NG{5RyCDDve3e@r@qVqs#pupohBGtK_!FtA-}^omZ0y#jk*fx z7saQZv-(+0c-c8MVcF#?{&EQbM!@!<&N=M#D!>gQSft9IC1?CcO*O;)0$=9{x;l5k zu^wBpP&&pgC{u#~T%NUV@seiK3Q#a@OIKf|eG&J(XS`Ze?5^H1LuDfUpH1ZR1QbBE zG_ms!lQg|61ft0TD(Xh0e|=5PygrZwIh7qJcR#x}`SVjhnKUf%HIfh!%k{V~^Zgw` zBMU(U^`Y*Clyq2l>a0SGz~;j=V1b|DZ{H;XpR5ap9@Y=*2so#ZAjD3q;&bY7+w#vMEWaE{S02yh zw)%&~eWvpU&G2g&vKv@qnpHD^Rv{S-<1Ol+Vp@3rxmz4)x1x10r^L>=S1I-pvT8n| zCuP8!Kd*!OYp?G2!AgQ3N*IUi%H{CKrH_;ny>HvukWY1T795ddqcPQ@T_9)9U7zRjVx3fsE{!hbr=UOip>Tq&|3@ zk#sjg@bf4}yTgl9Z~t-WU!;Ed@+Ez;HFr~s3bNk*JPuWmL43e4RHexg4yckhw&E=3dnBSJk;i~t)GZl~+v z1jr=ib6TYUGYV|6_m=9N>A{Z!OokU*cavDt5^%x3d-LCd-hUNu?>_ba5<&lGXaD_* zCUlYizfWQRa|8b82K;|dT>mF({NE@0|8vd$d)LhW`Sa)DmKb@3p5LhiG-|Qn3`PE> zqpHgvc@{h!9)~$R04{H22FmTL;0_3z>Nv*#EdHx7XPr?Gx&B=5{}PPJo&}N}3bjVx zKmAGX5ssSu1^-l`)3vLsYp?(c!%wLuCMPk_(Lu8YfEPip!2Npya`)2z+l2Vnnqu>U zNFX+YRCd__8}WT)|3Dmi^=j++euk_L%5W4mV{As%YHJ;#q`q~NTV%Fh-`>|5543zn za&&NMsH}0!-8*Rm-&Xh39@PRE8(b^{fUVRzdmaX2)2nt)jFbE0%$x?C(1BfoeI#X` z7x4UO<I)(GdQ#cD+y^=Qz1UWg*#oXA(Ef+!V1y3^S`Ch5#Q(nuZq$Q%Wo zgg6TkyX;&k9PNCs+T#)9X5{=+=^-EWUydkex8&fUAD#blMx9gskbP|+hxxo%&CiwN zxv`jfx$&lzF{;(k*d}2Xya+tku!lso>$lC{&O#VMJCZW$GE^+KapI8~SPScNeLmG-n$a@YwV=N-Kp+DiV1qeJJpgZXwg-A2r(_7L=~w2u4GHii6@?sGhENDDGD8>2h67gz26E7 zZ@~N*)!mV$VoY(gSS$YC4czEqj9?F;(rYy*qu!&pe)Z2(fj>|-Vq3Zg;y7+{amn7y z>~6W=6hSD8FNk_OyEz~-ye{SYX60zUxO0)r&W5B;;C%PU)+bIZdIggq2wv*JQH1D> zZ7JR|3-1E~jb$r+0F!|_JrEK)E>Eg|b5M#oTk@%hciD}R2p1o;Jqv(VXPDCahpn$f z@SgV>-XvM2bQGsPD@gxUPUwAbnOsa-kiq1>NqCg^fX>G{5|S;2(`=sV%Go$8i}k@) zX1iXvsxI74uzf-{;SKc#>mqh`zyGj|d1o&;;758aw|OdQx;kraU-ntxIwx1tHJa!V z8bZq<-&Zf}GemJZ1G`~H+Hb1_TZ^~4K_Ao~sPZ~V1+#_6F)gl_?-*^~3TvPJz;z;^ z4Ob-rB-F^sqPPU)C-P#TMhb|BZ)s%!LhihY9R_i0+vIQ2-(G2O3Vwf>V@-$5MfD+F z)LGD`mmcJn`+1*sJ5v8$SoivQ@Zg*>VzrKGJ7K6fN7&imGa@$B`nB2)C;f|q3{Yr!9N=p@lR%hMhA&F#p`6Gdzy?4{^BH)dDE} zFhbFhq^b9l1dm=0FgP?4k~IRCtwV@aCj6=L!amQ6K7|E;Q}Uk%uy=T=_e^{C#neEp zm%0&26M`#eyXeQ+eZgWOBa^j2M|Jzq&EvWHMjWeV*LIGWWQnMB9C{a>ZE%Ca*VYS& zk>_w6#aTz6j1nJI>!dVMwS2GKFTic}_rL;l!pzo7FW58W=H?qfo?VOL5)a#jb~=e&S%z&wN@sv<-iZv>O-UIVs6N1? zCRgNzc-0A5aT94Ze)L8cuSip{c8<0SoEKSrP-eKDGir27#GDRT#bVJ*BP;L*&~2RS z;Pfr*eq<8@TMBsrJA2@bL&hril&yr(Wmoxl9vk9YGE1^bTYljI@^-3UwDBv^g|g5A z3||Mu?Z5<|iVW*45i#)g)OUe=n}tP)v4Vz|)~Omc2cMdblLSZ$=6qWO)Yx)ThijEU zDePp!+ielw&vCBY$$+W^wfXbl1T6!(8gx?8sSM8W^9Z`l81{{Hb}6Y3F8mG4fZmc3 z*Bc1SPbK*n$}$WSjc_JR&&Hw#>!2&!J5GDuxWgMu!sfo(2#oWlN>&Ba3yQ8?1u7QDS*UcSFpPZ)=mdGMq1{OHJCh^HPpO5VZ z#%&1t+=VBfpW#Sm<41l2^zb<)$XBD1m`x{D)5&6Jk$d%Bx7)>%--e#WQlp&H>csAn z-XA$H6J*AqtpR|R^wB4C=k4F^#WFDcv&U11+=}RTE~x&><>Gn2)9^h6Rvf@a+n2uh z2k2xE4!>+uAYs<8HNS;wgVP_;Zmu6hEVF1FPG3VKcm93~+>Rlm@;cp66sBANz0G~Q z=Ue&kB}ce~K^NSG3kt0)gsQF`g-aB|o-X_a9ssR9X=x&xfVCWQpdOQQ=f8X8B5SKy zbc9ojHq_%SLeG-5-Lw!0VT_Bk$zOvG8eVC<gDhQmLf~zo z?KC$v@~RrS&^zP?HSnWE4Nkiq?mtfnsOnD}Pf+P)C<$ojNNU0kFw{vYdBm&3;?a z<5^DpxiVYs*RCaBPv5XzU35naFEdaOcoz*MQ-1KO+Q}Xe7Gy=s>Ldwwbq>}UcT9GfB|<+`M(-L@nj*hYc5Et?{4GC@X=KJ#{jvc^i-*GmfBF>ZEC5LkG(+b5DM zBoHGhiJsaW`4R86Rw>$(ZUoT2;8uF)q+8^$rajy0j@fj;>4KkR2Z$E_GXH8Mr&2=15HV zK0f8Saf-s7V-6})Vm1@97+Y#{H!J+wO*BplvZ}@9Fu&|Kr!2v_FGo3N)LhrcD-P?vn&;^^hfHuqUsim|}HUCW4%)j>j$%S)uuG5`hxeP}-*G z;@9JQ$v}2d30XTu;%R6GlQvVMZv|!hyQ=!icKt!{!vk<42AI`4j_48mKjRZDg<*+6 z>U724=k4hO34zV|OIEG=)z8C?A;~*&H3zlcJN?I1D}_)4NA&A8N0y~0tV^K}!Yf<9 zv|39W9+?>ZnV<_NtEdDY*0loK@8P(K{n65_Q`1D_x4qbmho<49oZ1x}wwm=p2b18K zA_}(A_X!p$SUz?WhmU_OTD}KV$rF82#p{n`CrXjM4|M5;(vbtl{13Q0E7BeF9X2Rs zUF!*uoYt*@P^sp!fdt9fkr2zWoP)-R+S91~3LJB4DyOz;^oU95^vt*eDq-1;wZ#lM zACn2{Vb!Vr+?)jc7FYX70~yp>jjjM*Qdf3ZPAHIfW0qg#dcyDCr}o3m6R9`IF`XC% z#Mxn4YXGhI%vRGaH90P}KX+=>exl$2Ja;=8Cf&|7Uii@B>o`l9YB`vXigc@HAW5IB znG}ACL^N3)Z|;GvCV@xc*(W3XiOk+b3+&8$yD};h8G~oRQlA^rG5x|#d}Iipe8#;B zlcm9Gh=9PhZ)l<4Ssg!=#rHaV9D=#9y0r)IHQtxQWMHP4lO>`X!VzG#f5m&29ig)) zBCKKj!g}RO(d`7{%Rjf5RtUO6Wgto05tn^-ephh*TVo7KPISbVu zKu#ir-)vM0UBX+AS-7r^HXEXseRg62zurA#=5k-fttE=2!RuB*O&ofSegU0xB3cQK zy`V7VKN)!Sw0_qL$FU_V*CF;0fm<_#qh;W7;o!Ko2W38M72Wm^wkzC6Fj_tO} zFcfe|QHMhZ=`T1Cx(pILZ-}Hq9Xd zx=+n+O`cn(_Gxdlu!-!1?yMi+cDXJ~fxOuP@A;Rq+{~h-FXEn#(?{p?P>2tNlZoq= z)0n;-MtkrSd?U32HPQKrrhB&@l=^(`FoDFk5fcO`sJB7Y~ne z8G~r=C3cPSa=#G{xHbG#K2Wpe!%+PNDvH1Qqkuv{%k=oo_(V1puY!6>T%tZI9}S2s zPk3d1xkB9docE92epEDOu6D)?HInz9f!du z5tBOAFaTJYAcdN)f^V98Ru=p!u21cxF1eF#k%-s%GAQ%Xzv(b(0yt3>OLb-6ZJWPG zZ9yGBNNa!wP)X7vSssovgp5$0% z1n0#;Wml$N%_2|dVau&vLT6q{9-yhKXW5Pue?1x$YDAgN?~l!yc~$tH?;FpV=rv=)xOMRL2_(Np}~zGwGY7W z%vQ4{R4gy^4i(mL->_6%XTQ6FuZtP(~iB*GXx86P`kHtEnB$IkCC>|g=%GQ z*=_l>&j8svz(tO7Ldh;dXQ%)v0DjNvb~t-;c_T#i@+HdYhX)i(qUReM+^*0MP;t?% zbh|7Yql-5U3JYo9mOIeY_!$El!Sa?0dkF=3Eg1L_gW^pjI5&bVq}t6npONu+Z>>=O z8X7G``4VMynFP8yR^)59Z~5!ej;SPIjTb)2|JCb@GynwkWy$h6$@Z2X%&hcG64ZWX zKn?8MxaNhulLE~x*@s^Lcy7Hyp>x))Qi(ZQU=S0tOS-8vDEFGU=nkrLD?Cu#)u+7j zzht`Mg}HmmfZ^dEcA5>Yj{@u}F3JlP4r=YpSf3>j znm@hl1F!7XyXn7j5=^{oZzGoLbMu2Y+_+^6VBTd%Un8ywgkHYn`*lA39?5oC zs<`Yk`-Uv6854Ki>&jfp;&k~#`&$8eu)VUMe17o;QwQ|5k(N)pc0afuhYq4u`?-~4=aU#B6IQX`wx!h_ z9VfQ(5bFp)MmF8^gY$CLZ6%iAX!ot{wh7PUIk-nYG6u)Tl}pG3%G-XVD2aLLY6s)c zQ!)1FO!Q(Dc?$UlA|4OxL5(Ihic@1@$U`3|h$pLxpsHGT1H^R>?&ess8bfwG@AW6S ze6@2}OwBHFW%SWdz~D}QeGYTQy@~13;_p)U%do>>h5i7)r*xD3DiX{{PYv#wY^nL| zMmynY^pU}~!pEZ+l{&?Chf%gs4f?)$U#gN;rI%ek>xC-8H=euv?L2lv>OVa_!U>G! z0=a4Nj@>v3e;c%YqB1fhpByvF@p)?p^{Kwu<>{vO&6o9C;~zcNWQ$YQz~2_Q?jgAO z+7}i-_*S$nMypmHL9O=aNP#s?5YamTcSMvofuZ-VH#(Uy&LkvPtVt>o5WlrWVdzm` z=;pvBRSA#5OV})kl85eb8B)mWRXF%hh$9HBi16BA#Kim7AoX4ev-U-NH7I)Yj%j9a zi(RyWV(D~}+xLX}Xnu&!`%TU6hj}QHvX(c4!y_M2xYK?OTNw~%Efvx{?OAy~8Z%U* z5!U9nYk&b4zTs#3DY*aVj9bPCg3(%L3_19Q7Y){I6Z#nrq7pcehJ2zWqf(fBChaS|-&}H%sCKmEtuQ<$j1?~ehr`K=qoOkD|3G2y) zUewn|l|&cj!%*InA@ZBEn&T%xLaS>7i=~TevbIaR9bDdVs%qejjew>v`@7ghWY%`? zS%X5Gz$!)upMC7604CKkL2`I-^Hpme^;P5?bqZB9btt@$?CBR4czRa2Pruk0NU!k{ zmbrI5D`sofSnr8WPqT-K>Sn;LPp zrNP!wThP|v(&(VHx0o)mSthY3vnouGc-owu$SDHNh$4Axu5<8^wic;S$n-03(o2UV z_6oxztDsKGjSE7S-khiJ2$)HCz_vWvAcduaqEm-{HJEwsQDX`GoR(^6y$&ZDQs#vi z{>Z0n~>9-IC_cDI#fA%##TsX$*i?c?#K^ZS)XUih4D zAI4R$Vvc0&_z4`TEFEh~xNI`(Dp75%oi*jmrDaoP*L?ZD(+q|>>T)5Y+YR?*dUc_{V7}QD{-epdUq12;MCHdal~lTSc7Z+ zeGeS>`yxSwU^*i2^87Y+NL$0^a82bkd~)h(-~)m0&xOpSzh@akyoP7mV|d8g;O;Uf zUr}**(dlb&lYH$#-yE(sAG`jA1?dnWX`HIe^{#6ur<-f4P8vDOBoy@BfOs2<9eCiSRX8v2#N=%PLSb2gf?HlR! zFS75xeX9ug$j*SD7@JC;VI)F|zgVOMHdFI4G%fi%{Pwxv@}vim#qT-3?**)bHJ>-) z)E5AbKAo&dYN|E8Ck@O;)vHK z=@HCX_o{8l?WMoxi(_hcu~?4nWb-28&dNeckrfrxf+DOm(y=dh!xQ5U<)yzD*|9By zIDW!>e%+Vu|86n@R2^BFDX#MCqI!QIm**vK>SyEL|#F~iD& z)(!#BR#8JAW7RKd5gM9WUFurD9?tuIk9wB-#(jx~{eaU^2QDfv(YDo;L@dXlKsc0Z zg3+KLmLcuwr82JuZO&)>;O>17Q!u!89Nw9Al_aQ+2J(P}-GfEY!IGa3WgaV8&y}zh zY=Y!)9G@PJm#Od>2pUt)SJUC+Zjtn~$9qlBuTsYln&=3sP&}96s^1+ll`Y*5>fs2~ z(T$rotC~_JO)g~1B>NPi=+kljDdb(n&rKrZ)?DijjT%3j<)YokA3%ymXUQ$SU8DdpW6U(ntmhrMWHD zNgGk+{LZ;mx6^mKtD8nZKkis3eEzB&Wem0`dA&3kzNba;8GeXDk`MAp!4d**ylN(W zxsP<<(vcQn0=gZ%-R5Vl3TEtS5&^mWIVnU0x|pW4lZlnRk~eyz;u4>&G1?ym3|ps4 zHGP_E!tpO8qjzebvr_%p;M{BDOdE#Gq)#Q&O9kPyCeM8#=1E1GSXot?l`K8-LA}1) z(WRKKZSvlmCvK`tp(bi={Do)yj((-n83Bm|@ZfDqu@{fAIWDvd(~RusDIHL;2yBH$^_rp(0hU7V-tsb{Mzp&LxBC%0Gp?8xzGAK*1m=~Y`~UywD|-9 z6T9|q>5r=E){6d9XX4T`~nfHAs07gBa8!4`-75`en)6+dESaVZfzjJCdP& zX{U(qQ@`77X(_YAz}W69{uT1$;PbkjjiQMBb4sC|3*qSDre@A7Zn0qJv&`!l@CRLi zoE_@FF?kTd{%vWYG!K-Y9pZe^$q#<+d#8hlk<_OCMOW^}a~@Yly*3Xj*9)zje4pGIM9iBYK>4dWhv*42Wvb z56G5cdg-6yy}&JHCwzIwS|t6NA5I439>KK-h(|-{Xn&)$C42^79!b+kD9+FJBl$ng?lSPR}UlDJoz6 zF1ohXOZ=NtkIz&W3@$d`+56!ZoJLS&5IW}oF7GlIXg|7K|67=Y;GJ@6;ueJzv!w3% zFw@L<2vGqVa~x%>&}QNJ2R`s%q`V4tv?Lo$CfIpReski-s&aG z;l{`rSz9Bkr)8d6u^O@a^i<0CcS|d{Dp2n)So{J(ZCiWWpqtCwO}`rX0jFF*xEzr` z9JT9`pz8~F*A_7z;ANmX*TKea`-lF2+QnXXiTBO zEBJ5+@5QwIx2Budqjj!}vZ)uzaRPrHl}nA1-4RG|34K^~X7VCNqhcSPmd8_9LYq>^ zSUv$qDS4f97J1!NOO5WO-&pAFis!>ZQ<>30!rYrx(s?~Xe;t(>RMNGzVuy0E*bA#t z!m+&M+RWq1zQM0_(fzqd>O#>%p0Bhbx)$ROu3Q$)*LS)_zI<_N)$Rooxp+{il>Ro` z{19r~6>7O?;Z;7J4^Ip-=Z&Uqv0MHAHa~|a#cu@jnRL2RCZXl}WY=x`qlNEK2PnUR zI{Iz?m1gy9Q`|Jd<#KC0wDlo+xO}?zfaP@jsX{EyvQzqgvCRabg6*&7Oc;Zjc8y7+ zV@|w=X0a<5M3#b=pMiPC8`24!@Yqa~y~7zmafHP_Fz_*5MB)D=2JFilHBQ!@Ac@09 zU+eAQ22k`o)SI**Q2odR`H|r9_m}(pe3R&d(J5^Nlp@K7;f*7`Ll`kp-qo9F&U6mh zAD@Mk2l)4$H3;AZAwP@UF_-KKeBAG#^L31lo?|MspjR6tYFa92PZVdDLUya+QBqpg|lmG!{o}SL`6@}ZK7t81o>mISN5`dUnS#M@q@R5#kaFn z*#u7QV~PhF`Vj!~Q!|OI59j}MV>2u*KTCWWK4X!}iW~i$Z7XT4$@^L_+Arf?hnQl* zaf@pAwV6SJ(B*rYr@LjwE`oNosYa zRll_w$>0-fF5$wMlj=Q`Z0pks1QL;9;k!sa^dYGDf>pj5&Nc8-(b!L0*fU4Bvp)Mt zt=y-k34%CP3FnZOS!1Ue8$>xz)L6e$w(lo+kyHm_OZp3Qpa6qcz^J56=pUZ|ais~!AF zE)LO4*l}huTzfd*vmQbd`bD~$_67t*7$274o}QRNOJVnTqhNt3FNJvACWt12CBE>YL6@op-K zd-1rqnE8FQr}PN%5zS8k_nESDa)+jF8O^3=q&KMTv8;Z0p#3aKqvqDMw#P3zFB;Q` zJ53T@N`xwE%X%!N=RfkC6#IMC(A8Epr>2dxwho$0<>z*@$eFGBOETS%OmH-HcG@IA zB6Xy|Vqja|4$n(dTdR2@eVv&FhO-+; zMk{&w_X1f2S;n4Gk&Fu8jQDcG%dG`DzM+cD#?6U`SA2rk=#xjnX+PtT$YDigjT(am_ z9uf(K#e~OG1H$E(-!rqMq4}cPsCz~CSZXxXtJH)Q%hTOY2G}x8*UtwMN_2*nK@|dq zp7czjuU7$&r!lAvhs~NZ`AN&5Yy*Q-9{vN&E zst?Cei3M0fHtN<1wj|@-OQ_17lRF+u_XR<-thUx;8pCEKvP_P+bp4kqbLUO7Ln*~G zPtxi7otvrZFjNe~$93W4FO#b?@ril6`|*YX6d>L~oDs-s}60igd zn3C!A1D2xLZfVHijft(v1b6)-KAKTR=^UrKdinRh;PBcv!%t6B&P9G}8beA2q(&L> z_tOPhau>O9>xBxVNAr*y;R~hPk0u@s)NrPCJ}Fc#9T9Zn1-s^!J#xCtzqQ z%u9BKyv>|nT))2_9~Sk4Mc=9`nGQ;?=U!Sb$Pim>D*f{d6W_}t^4gVVm(F54A)2)HbUnlUh#1Kte_gFM;_(5JkM_R zRN;Sjxc-aFd+>O-8niWC|{BTt_m>EaU!Ndd;iOY1|rB@Va_|BdwRDdlJ3vvVEn*5njwV|0c&{%LY&9 zfnB6gc(QjLVhEmIr0*h1OFA7nH=KtLMy*VJx0>lpRqYS=iA0}DqXVL->Rbpq0Zpum<8}H(6qSxQj|?d+I?U4`03-e&=f@9&hJPN-hMD^Cz#wzEb_I0dMQo~n z5mwwX+uBI5CrlV4cfQ*2U5(9?u%DrCBtw|nsNXsb#rky7?`-{YZ=?8 zhMm&+Lb2*-r2Q1sTW<2PT--@fzZAmfK53AdLuTT=bwys-4tc@fXm*-H*}F0V_C=vH zssuq=FWQcVemGDMqmJGSQv-n6V3@zomRU_C_LX(bxjt{hnd;s>Pl=Edn;Yg-c>f`! zhTktU>D9Bxhjxjt9>4b15m^r&_VaKo8Z*5X)aY#R^>aoPI^A?^&VtYUoYq4oAAHoq zhIpEGH7f2X^;&zEoK<3r@mzYX>A>RJ=Fiqu#DdRJz}1a|@ysdlQ?Ia_3_&sR1RKHF z3mwzCKS|_?YJSzLdo<4FBP^HFWW|4l3J;)oAU%}Na=lc;pq~^Q(?vCX4XPzQDV=3` z^>4TiW~c9v$ik357`g?DEySZXzNSDCoJj@#@l7k&Yw}15-&wGG;E#Uoh0K<)=tt=2 zy<=gC3=gk?Jh^jc%%~jN#$lSUdF^-j`=R@tF;IL$0ubXMz#l(mnXT9#WO%zP=FXkb zAoqWdsCIm$S^0NI%!%C3e-0UT$Z$Yw4vt!mVUC`6?4ws7-NqjTHUa%VUc7ThfN1^S z@edp{-N5AmFYveCJy|=2zb{~+ZQ*Q1T8A@gs*a>K= zzGCd}LVlZVrYfM3%8?Uf_|mNP{>F6a$E)igKr+MMwV>w2{BlPq_Nkj1`c-U!BOk|v zKpl2>oSR|@n1gEa2P2=MgtC6&9tY0^j;r90@;Hjwy+4jRTaQ7Yft`U=oJ+yM25AF2HCe^d8 z1=&j{6w`4pc&^Z~hL_e-ZE_eb76Zd8St($}z9SDOL!mC1D-KH(3c04sV^P>XOsIAo2SBgw&M z;jAhvQ`x?4fYg*v@=d3R*;M@b)@Ig#r@23rjjbR+I+-A#0-6Jel(6R( zSw=yth1hkFs+Zis{X6cBz}$HL8R)dOTmx$5GVbS*lDXp-YjVxv!A#4uZfD(*cr%oj zDnT*mx+U|C6JyAz;kjqvxVbENfY>jux z6Y*YRxr}eVv}hiv%DBbO@#+V=l+F7Sp5ghKHEWh&Iz~x_XEX1VH+SKYIz18nfQk6uP%{d(%9=$Sh;1Mqa;tp zxe8!f-kGmk#2}3(xS%A}rEH+TT3%lY#ExxAN^7J*DvbEF$P-8Q{zfnM%N!+JgvgsV zC`(|7+c_qW$&Vi9-u9b|_1by%p4y105Il1t)MaLnpZyKuQ+U61j9G&lhb`sc4jm;> z+lZcJW&HsPOO-i#c_5r%IA0gU?ku>$a&Z^BEmadW@|?7(JrtJCQEFlmGrPbSQSv~< zdw+gg5q`sbwh)P*JMQj#Fqb=NloQ`Js;BK(Ex+X4_4q9wv1kzu9k~iioM$ z*Y>NIw|oC`)Q+T#I!$ZZq`I$WVS&6Mis&RRY=Q4wa^u+iE;ST5XhFbzMfK?UCsnVN zq9j}ErQ)xKZzU9>zSCl>p*FiFBJtELo*hK>46_gK3oDCTkT zc$Tu0m!a2D*rE-pwTP3O%*%D0m@@G|tYwl{%cE83ras27EzrIpPpt(@+r-)Ot)AQK z9bc)rg!VE`7GM<+mpC*y%GYE;`9% zeBiV@Uvx>Zm|?93P~%8@Q#9J_`(LB^!)}#4@&l)MZy{;Iptp1%LucncTNe%1&pV3d zAI+N-eJrH(JuY7ey9|&6D|x727kt>6JyKD5ntSk&Ddg9e#XOp46DqXlTLU%K#J6RX zKO!ruNK@8Kl!VjB^nYHbocB;V7z1pIz!jkTaVbj9y2K}{IjXLIrj%U0r-=+FUcAp? zxHZWBx-y;UBocSE_SgNv$A-rKKU*YZ%u{P;klmY_O~WY^FEtCD+Ylm^D<9*GY;xHg ze#cL7>>cjw@0JKp&pospS^RL9ni5hxc$Oy;<{x9M-?RX%OXv-nh?3IMdy*bYZ^X~+ zyu*J?(8In{@+R+hZc-zfY_>6HQul4&APVy7!z;49s%hykd4nM@cVw8@k zh2&UNN0()&Xl$m5^}g%o+E{qKCH_K7Q`v}1XNj{&HSNeZidN)H&R5T&0Mo_n_L=<+ zc;dy|CQkLF_aOE{5+E}4L%?Ej3GcZ+7y+dV)pF%a!BW*oLov>cxp za~TZx?ljFFq!0V&VF@v{sU&SlZx9a7Dy<>BRg-(-3dD%jP33;yA@CGmJDG!J zKBjB4hw}^5-3fZEUkX(R1&?}7O>smB%USAOR9a%}W~J@!RSKz?U7#J|-A;92XUsMAZMEUG#Dg%q*WRYypPnWcdry5JtAI;L{3#P~@>cemzUpXkFHk=UG|0?aR3q1A=DJ-o8npzp=`9n>|57+2ZYxRi z?c<7ybU+UCrL&5sNGM32^ZfJI>Rf86xQqPa1Nc*y>qYY#~0o zne+F?t(Y{d>$|bm?Ka*V@HoW1Dnci)$FaB2srU5v4YD+Cg%sOIzxw-!UEacFdfGFM zF_qw_<_m^5FeX*OX0k+{x@y`KYvyubMar4LQbYN!d|5=?(@TZ4rg;-7;A`xIEd`yh zz`VR|_qyRB5f_il?seA-sAKrB_2-Ndse`;0?Cr9UgUU^Pk7 zR?06dWhND^GOv-V@pR6sYb{{%IVXpQcJo@BBncH6aC#Ppd1R~RhqNh!G}FshWA4)= zM$m?~vU9p{sd?^_!_$*As*GtZsF@c^3`m;eS+cSf2z+vdvU$=_+Bpt}gqrBqe~+<%hMJ&DA(_OAh0CUXM5Zv_b}ro?0*Cr`P|k8~B0;<)NIwOW>mq$wwVs7l6*xJ6Nyw@(0d^-h~>v=07tNJ)5Wr8H_w z`0kz6Z~nkgyi(qLj!X9uR`@%KJM`V^Dc2C1XV+c;{(0)V%KIixTGKe6 zNAN6+-<2sHzrD}toSL3Y?$pTEDwg+ScRh1t0w9x<=0ADze;!K%Vi!aE^x3LXW*|Ml zVpwLKZR(cQ?5ML5B<<|V#^Mw>9McJQd%POxhozkl|3Jw!%h1z|9=}b|;)&EFv5jT) zp>nFBuubi+;XkJysXk6K4#Q>m9Q$f>9^hW=28z5sq_8YIPyF`4ZDH%KMN6K_35_1L zONMr*u4X8X4fe@<`t`)rr++TsqYDwxsj-j)kddeX;Nh0X)=0%&qvdca;4U1y44cKhLtVFUfzr2^OU)lJq6VHMg8#*4OxXa`%`M3R@EP+> ziL5V`!g=R5jQ4Jd4>A)uHAN5g#i|quY{lRF{A9zV<03ZVGgWy`2fZj9pDGO19sftK z{5YN;Hq0+1q$M@ES6r*#X=JN*qt=d3v~HiSo0ynrY~(?gBQsdJ9nZ;Wx+!_({2z@; zH7}X(m1O1G%sjX~%K5Odx|$uxDMI+T=!R|?Gd*`?pbFSh;IopNm;Pp={|Sn-ngW>Qf9|={|CbY0EOk)6Xm`&aZGI}& zxWae)cz{)B&BR(Cy|+(DOkA-0C%(<-Gjj6q|5>N5rf8&6 z<-frw{=fOe|J3V$?>hhYuf+(z#6>JxYki*Z{U==8Qb0vTMO0LjPJ?aAuqoPSEQ3bu z#{~-YCtMFh=$M^`(M+rg0Jy;Q(o9UKL8G&^kcv}53v-@1Ol5ihF$WM1R%RsjJUSDIZ07Z=l7#(i2tu5PIY zfAszi$nUloFEp^>-`CeSBO?Q$<8_DNW(0n@mNvXC6!GMq26c|fzr&6sH+{B3BLsr% z+7kEi%5kLrDU$&PBk^rR>a?}7Q*y+ zLq>HEI0TtTN&o4Njt({Ou0|mEQr$^$>9AH$rp0r-@?oK4!ugKr)i;7Vuo zRy!5*s=%ZJe_Kz@S!N&dE?6W3D6}l`8zA)hCmyh2T zTqqV2!^FGn)em0ed5#Z4U3&b^{caM39Dk8nw7X@gu=qNE?#o$|;=@3>u0P8s;QYWn ztG0WDOswB4QF=?8mRe^D^C!6YPx+sw!!eDA(2p{{%^vohZ|-eJDhb?7jWT>`*M=Q_ zKhtsT^1d%Z7-Z|`zLc#@-nK;k@u%R!=Ox|I3IaU&eJ6u|Ld9Ayht#`m;WBO|f!%gWc<JTS#Ji>NDX5qN5|i21cYepOjLgkAYLt z^>YJwj<6}_dOi}$ihCw`vHq#S@4%pCUDj2Kpt{HNVuS3pK-sX--!=i}aQumZ!O5`g5nlTgz)hz9H$tWWD?Nn%vQ10i@rFj!)h1iu}R9 z3ldRDj&oT*JF0K)OfNfHe7htdOonI6OMj2=-IC!L@$nF56*_B+%oUL^6W+M3(Q3bT z#gtZ_$X$UCOUfv8g zHtEAAhgsu_J)pnf6Wu1(xV%ahR-;QNc)uQd2*m!1@bFE}uCM4euEv|G$XxQMmaVei zt0sA;UY3krw{zZV8K`iSZJFaXXMyOsP77_u-G6Y3Yj%*@QU)dmIz0`mGY_Nhy(6qm z@cqD!_O^BIw0ba!a1-OKWLmF_FDOhHiGeeHnI_?GaJC?~ilrZ$4?ef$D*Exs#VShJbz-?)sp(f34<(m2G}yacCJ?D{+!DxcONe+udF~Q zlN+vv&W)zS#i*YCx=*8^!z*h~i~gjt<4?6Q$)(4MgM}3|1!4Eb`W|wYN?BTeKRTL# zoGHtY-N521DCS|F2Ip~kX(xWybgqt${_rn&UA#}*<8;;b4j$7JQvYtIvVyblT(J(JVOE$Jl0);8g~usfBiLm zrM?SQbamb>7bb|pyK<+bd^qxxTSN(rhNaE>E9#&n(xSzgH(Q=_`+fS)w0ytbQ7B!F zkqIvqC1pt}-pfp{VmiG-x<>Ffpk9y#^FI=BSp7`pk>4~e^m{wtFtjFRwAOlFOdaHc|CQ zUz>&G#3C(q=x#NJGb!%VKj!uQ9md|#^;4LF`r;0!a*1M_9e!ju{_1>dL)Z?8DdRwo zhtV5J!d!d&GZmzjT{kjXo4?o&zpl851z|p3L!j&HxF3Zt_sCrHh2#2-*}-JU(z`m; zQ(3%T-Nb|~97gj`qMFz+l3&f6HB9*EL_}H>Q9oScit~&6DPF~#EF0SkJ-9#@bgWlJk4eo-HkLxuSx{-OILpDUb-kx z6Wn(H{;dt`Xz%GgM8M#fW8E;tb8~*8xXg*-2J8#I^M}W}roC8{5LMlOu5=MaAehTI&(&Mg~;{!^tezeY-QqT z`BAB!Fg?7a2;C`_-SMqMG#P+@b?eEB)M>Wu3=Fd>uYQgl;_r|Ds&zF~J?h1C`9;8Q zi@CD1KYHXQq8MDP-P(ADI1w-aP_#A)Q#savbekI&lgWB4MvQkoWWVm?wD-KQJfJlrkBi3PqNQU zstR2QVuQY@)k|G2>*1!7eXF_yicXn7y+-`t>410=epyXFz{tzYypqUJ&O zr1zdKxCrz{|J8-JC{Vx#h`_qU!7*1x&AlWVNr3wSD9pS&s@r_!qn?q#?RyoWMrl=}4_ zRJ5d;aEs3T^-;$y&`e*{9#v)Voe{lO_fxlaw4NRHh8x6(+i~-=*@wI5q7W)fxlRL> z-__{~m5bX8j^L0RgyvMv^Tj)(C5sQEa8o;5N2ygSr>BQNXYm6#5!~8pyWH$@ zFvIe9(dTQGrtM0r2W(qD;M3RkQI@ja+b*$hcX4sKM*7_}=vVeGb*`+#E~5nzb0=$E zUg(*@&MqjhUUxwno?lvuqu54JbVuhEA&=z3@vPCm$_TLXza6QeK$PR#!tVH+?fZHI zD_g6Wu0tS(fq!Pl#lOBm$EW{(#p}O%6DZ(+u`u?(eeH&t#EZ+5zKJ6Ie+=XlPgg&e IbxsLQ0BXWIzyJUM literal 0 HcmV?d00001 diff --git a/docs/overview/media/acquire-msvc/project-properties-use-msvc-build-tools-preview.png b/docs/overview/media/acquire-msvc/project-properties-use-msvc-build-tools-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..ca7583ec4734490ec0ce7be7c29c0ca05b871517 GIT binary patch literal 54526 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

      $E+{aGcQD`BtpSH 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 Date: Mon, 13 Jul 2026 11:15:57 -0700 Subject: [PATCH 563/619] UUF Fix. --- docs/build/working-with-project-properties.md | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/docs/build/working-with-project-properties.md b/docs/build/working-with-project-properties.md index b6ca518f4c8..70b0abd76f8 100644 --- a/docs/build/working-with-project-properties.md +++ b/docs/build/working-with-project-properties.md @@ -1,7 +1,9 @@ --- -title: "Set C++ Compiler and Build Properties in Visual Studio" -description: "Use the Visual Studio IDE to change C++ compiler and linker options and other build settings." -ms.date: 03/19/2025 +title: Set C++ Compiler and Build Properties in Visual Studio +description: Use the Visual Studio IDE to change C++ compiler and linker options and other build settings. Modify these settings in the Properties pages for your project. +ms.date: 07/13/2026 +author: TimShererWithAquent +ms.author: v-tishe ms.topic: concept-article helpviewer_keywords: ["project properties [C++], modifying", "properties [C++]", "Visual C++ projects, properties", "projects [C++], properties"] --- @@ -9,31 +11,31 @@ helpviewer_keywords: ["project properties [C++], modifying", "properties [C++]", In the Visual Studio IDE, you can view and edit the properties needed to compile and build a project. This information includes the application name, extension (such as DLL, LIB, EXE), compiler options, linker options, debugger settings, and custom build steps. -You can view and modify these properties by using *property pages*. To access the property pages, choose **Project** > **_project-name_ Properties** from the main menu, or right-click on the project node in **Solution Explorer** and choose **Properties**. +You can view and modify these properties by using *property pages*. To access the property pages, in the main menu, select **Project**, and then select **Properties**. Or, in **Solution Explorer**, right-click the project node and choose **Properties**. ## Default properties -When you create a project, the system assigns values for various properties. The defaults vary somewhat depending on the kind of project and what options you choose in the app wizard. For example, an Active Template Library (ATL) project has properties related to Microsoft Interface Definition Language (MIDL) files, but these properties are absent in a basic console application. The default properties are shown in the Advanced pane in the **Property Pages** window: +When you create a project, the system assigns values for various properties. The defaults vary somewhat depending on the kind of project and what options you choose in the app wizard. For example, an Active Template Library (ATL) project has properties related to Microsoft Interface Definition Language (MIDL) files, but these properties are absent in a basic console application. The Advanced pane in the **Property Pages** window shows the default properties: :::image type="content" source="media/visual-c---project-defaults.png" alt-text="Screenshot of the Visual Studio project properties dialog box with the Advanced pane selected. Properties such as Use of MFC, Character Set, and so on are highlighted." lightbox="media/visual-c---project-defaults.png"::: ## Apply properties to build configurations and target platforms -Some properties, such as the application name, apply to all build variations and target platforms, whether it's a debug or release build. But most properties are configuration-dependent. To generate the correct code, the compiler has to know both the specific platform the program runs on and which specific compiler options to use. So when you set a property, it's important to pay attention to which configuration and platform the new value should apply to. Should it apply only to Debug Win32 builds, or should it also apply to Debug ARM64 and Debug x64? For example, the **Optimization** property, by default, is set to **Maximize Speed (/O2)** in a Release configuration, but is disabled in the Debug configuration. +Some properties, such as the application name, apply to all build variations and target platforms, whether it's a debug or release build. But most properties are configuration-dependent. To generate the correct code, the compiler needs to know both the specific platform the program runs on and which specific compiler options to use. So when you set a property, pay attention to which configuration and platform the new value should apply to. Should it apply only to Debug Win32 builds, or should it also apply to Debug ARM64 and Debug x64? For example, the **Optimization** property, by default, is set to **Maximize Speed (/O2)** in a Release configuration, but is disabled in the Debug configuration. -You can always see and change the configuration and platform a property value should apply to. The following illustration shows the property pages with the configuration and platform information controls at the top. When the **Optimization** property is set here, it only applies to Debug x64 builds, the currently active configuration, as shown by the red arrows. +You can always see and change the configuration and platform a property value should apply to. The following illustration shows the property pages with the configuration and platform information controls at the top. When you set the **Optimization** property here, it only applies to Debug x64 builds, the currently active configuration, as shown by the red arrows. :::image type="complex" source="media/visual-c---property-pages-showing-active-configuration.png" alt-text="Screenshot of the Visual Studio Property Pages dialog."::: The page is open to C/C++, Optimization. The Optimization setting is set to Disabled (/Od), which is called out. An arrow calls out the relationship between the Configuration setting in the project property page, which is set to Active(Debug), and the setting in the Solution configuration dropdown on the toolbar, which is set to Debug. Another arrow calls out the relationship between the Platform setting in the project property page, which is set to Active(x64), and the setting in the Solutions platform dropdown on the toolbar, which is set to x64. :::image-end::: -The following illustration shows the same project property page, but the configuration has been changed to Release. Note the different value for the Optimization property. Also note that the active configuration is still Debug. You can set properties for any configuration here; it doesn't have to be the active one. +The following illustration shows the same project property page, but the configuration is changed to Release. Note the different value for the Optimization property. Also note that the active configuration is still Debug. You can set properties for any configuration here; it doesn't have to be the active one. :::image type="content" source="media/visual-c---property-pages-showing-release-config.png" alt-text="Screenshot of the Visual Studio project Property Pages dialog. The Configuration dropdown is called out and is set to Release. The optimization setting is set to Maximize Speed slash O2."::: ## Target platforms -*Target platform* refers to the kind of device and operating system that the executable runs on. You can build a project for more than one platform. The available target platforms for C++ projects depend on the kind of project. They include but aren't limited to Win32, x64, ARM, ARM64, Android, and iOS. The **x86** target platform that you might see in **Configuration Manager** is identical to **Win32** in native C++ projects. Win32 means 32-bit Windows and **x64** means 64-bit Windows. For more information about these two platforms, see [Running 32-bit applications](/windows/win32/WinProg64/running-32-bit-applications). +*Target platform* refers to the kind of device and operating system that the executable runs on. You can build a project for more than one platform. The available target platforms for C++ projects depend on the kind of project. They include but aren't limited to Win32, x64, ARM, ARM64, Android, and iOS. The **x86** target platform that you might see in **Microsoft Configuration Manager** is identical to **Win32** in native C++ projects. Win32 means 32-bit Windows and **x64** means 64-bit Windows. For more information about these two platforms, see [Running 32-bit applications](/windows/win32/WinProg64/running-32-bit-applications). The **Any CPU** target platform value that you might see in **Configuration Manager** has no effect on native C++ projects. It's only relevant for C++/CLI and other .NET project types. For more information, see [`/CLRIMAGETYPE` (Specify Type of CLR Image)](reference/clrimagetype-specify-type-of-clr-image.md). @@ -46,21 +48,21 @@ For more information about setting properties for a Debug build, see: ## C++ compiler and linker options -C++ compiler and linker options are located under the **C/C++** and **Linker** nodes in the left pane under **Configuration Properties**. These options translate directly to command-line options that are passed to the compiler. To read documentation about a specific option, select the option in the center pane and press **F1**. Or, you can browse documentation for all the options at [MSVC compiler options](reference/compiler-options.md) and [MSVC linker options](reference/linker-options.md). +C++ compiler and linker options are located under the **C/C++** and **Linker** nodes in the left pane under **Configuration Properties**. These options translate directly to command-line options that the compiler receives. To read documentation about a specific option, select the option in the center pane and press **F1**. Or, you can browse documentation for all the options at [MSVC compiler options](reference/compiler-options.md) and [MSVC linker options](reference/linker-options.md). The **Property Pages** dialog box shows only the property pages that are relevant to the current project. For example, if the project doesn't have an *`.idl`* file, the MIDL property page isn't displayed. For more information about the settings on each property page, see [Property Pages (C++)](reference/property-pages-visual-cpp.md). ## Directory and path values -MSBuild supports the use of compile-time constants for certain string values, such as include directories and paths, called *macros*. A macro can refer to a value that's defined by Visual Studio or the MSBuild system, or to a user-defined value. Macros look like `$(macro-name)` or `%(item-macro-name)`. They're exposed in the property pages, where you can refer to and modify them by using the [Property Editor](#property_editor). Use macros instead of hard-coded values such as directory paths. Macros make it easier to share property settings between machines and between versions of Visual Studio. You can also better ensure that your project settings participate correctly in [property inheritance](project-property-inheritance.md). +MSBuild supports the use of compile-time constants for certain string values, such as include directories and paths, called *macros*. A macro can refer to a value that's defined by Visual Studio or the MSBuild system, or to a user-defined value. Macros look like `$(macro-name)` or `%(item-macro-name)`. The property pages expose these macros, where you can refer to and modify them by using the [Property Editor](#property_editor). Use macros instead of hard-coded values such as directory paths. Macros make it easier to share property settings between machines and between versions of Visual Studio. You can also better ensure that your project settings participate correctly in [property inheritance](project-property-inheritance.md). The following illustration shows the property pages for a Visual Studio C++ project. In the left pane, the **VC++ Directories** *rule* is selected, and the right pane lists the properties that are associated with that rule. The property values are often macros, such as `$(VC_SourcePath)`: :::image type="complex" source="media/project_property_pages_vc.png" alt-text="Screenshot of the Visual Studio Property Pages dialog for rules for various directories."::: -The VC plus plus Directories page is open, which has properties for the VC++ Directories rules. An example rule is Source directories, which is set to $(VC_SourcePath). There are rules for the include directories, library directories, executable directories, and so on. +The VC++ Directories page is open, which has properties for the VC++ Directories rules. An example rule is Source directories, which is set to `$(VC_SourcePath)`. There are rules for the include directories, library directories, executable directories, and so on. :::image-end::: -You can use the [Property Editor](#property_editor) to view the values of all available macros. +Use the [Property Editor](#property_editor) to view the values of all available macros. ### Predefined macros @@ -72,7 +74,7 @@ You can use the [Property Editor](#property_editor) to view the values of all av ### User-defined macros -You can create *user-defined macros* to use as variables in project builds. For example, you could create a user-defined macro that provides a value to a custom build step or a custom build tool. A user-defined macro is a name-value pair. In a project file, use the `$(name)` notation to access the value. +Create *user-defined macros* to use as variables in project builds. For example, you could create a user-defined macro that provides a value to a custom build step or a custom build tool. A user-defined macro is a name-value pair. In a project file, use the `$(name)` notation to access the value. A user-defined macro is stored in a property sheet. If your project doesn't already contain a property sheet, you can create one by following the steps under [Share or reuse Visual Studio project settings](create-reusable-property-configurations.md). @@ -86,13 +88,13 @@ A user-defined macro is stored in a property sheet. If your project doesn't alre ## Property Editor -You can use the Property Editor to modify certain string properties and select macros as values. To access the Property Editor, select a property on a property page and then choose the down arrow button on the right. If the drop-down list contains **\**, then you can choose it to display the Property Editor for that property. +Use the Property Editor to modify certain string properties and select macros as values. To access the Property Editor, select a property on a property page and then choose the down arrow button on the right. If the drop-down list contains **\**, you can choose it to display the Property Editor for that property. :::image type="complex" source="media/property_editor_dropdown.png" alt-text="Screenshot of the Visual Studio project properties page for VC plus plus Directories."::: The Property Editor for the Include Directories setting is open. It shows the evaluated value for the Include Directories, which is C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\Include. It shows the two inherited values: $(VC_IncludePath) and $(WindowsSDK_IncludePath). A checkbox for 'Inherit from parent or project defaults' is selected. :::image-end::: -In the Property Editor, you can choose the **Macros** button to view the available macros and their current values. The following illustration shows the Property Editor for the **Additional Include Directories** property after the **Macros** button was chosen. When the **Inherit from parent or project defaults** check box is selected and you add a new value, it's appended to any values that are currently being inherited. If you clear the check box, your new value replaces the inherited values. In most cases, leave the check box selected. +In the Property Editor, choose the **Macros** button to view the available macros and their current values. The following illustration shows the Property Editor for the **Additional Include Directories** property after the **Macros** button was chosen. When the **Inherit from parent or project defaults** check box is selected and you add a new value, it appends to any values that are currently being inherited. If you clear the check box, your new value replaces the inherited values. In most cases, leave the check box selected. :::image type="complex" source="media/propertyeditorvc.png" alt-text="Screenshot of the Property Editor dialog after selecting the Macros button."::: The property editor for Include Directories is open. The evaluated value is displayed along with the inherited values. A listbox contains various macros and their values, such as $(CharacterSet) which is set to Unicode. @@ -100,7 +102,7 @@ The property editor for Include Directories is open. The evaluated value is disp ## Add an include directory to the set of default directories -When you add an include directory to a project, it's important not to override all the default directories. The correct way to add a directory is to append the new path, for example `C:\MyNewIncludeDir\`, and then to append the `$(IncludePath)` macro to the property value. +When you add an include directory to a project, don't override all the default directories. Append the new path, such as `C:\MyNewIncludeDir\`, and then append the `$(IncludePath)` macro to the property value. ## Quickly browse and search all properties @@ -114,7 +116,7 @@ The **All Options** property page (under the **Configuration Properties** > **C/ ## Set environment variables for a build -The MSVC compiler (cl.exe) recognizes certain environment variables, specifically `LIB`, `LIBPATH`, `PATH`, and `INCLUDE`. When you build with the IDE, the properties that are set in the [VC++ Directories Property Page](reference/vcpp-directories-property-page.md) are used to set those environment variables. If `LIB`, `LIBPATH`, and `INCLUDE` values have already been set, for example by a Developer Command Prompt, they're replaced with the values of the corresponding MSBuild properties. The build then prepends the value of the VC++ Directories executable directories property to `PATH`. You can set a user-defined environment variable by creating a user-defined macro and then checking the box that says **Set this macro as an environment variable in the build environment**. +The MSVC compiler (cl.exe) recognizes certain environment variables, specifically `LIB`, `LIBPATH`, `PATH`, and `INCLUDE`. When you build with the IDE, the properties that you set in the [VC++ Directories Property Page](reference/vcpp-directories-property-page.md) set those environment variables. If `LIB`, `LIBPATH`, and `INCLUDE` values are already set, for example by a Developer Command Prompt, the build process replaces them with the values of the corresponding MSBuild properties. The build process prepends the value of the VC++ Directories executable directories property to `PATH`. You can set a user-defined environment variable by creating a user-defined macro and then checking the box that says **Set this macro as an environment variable in the build environment**. ## Set environment variables for a debugging session From 23d302d4938028260613a2043f0011accac22460 Mon Sep 17 00:00:00 2001 From: Tim Sherer <28902327+TimShererWithAquent@users.noreply.github.com> Date: Tue, 14 Jul 2026 15:47:12 -0700 Subject: [PATCH 564/619] Update project properties documentation metadata Removed author and ms.author metadata from the document. --- docs/build/working-with-project-properties.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/build/working-with-project-properties.md b/docs/build/working-with-project-properties.md index 70b0abd76f8..900afd80d16 100644 --- a/docs/build/working-with-project-properties.md +++ b/docs/build/working-with-project-properties.md @@ -2,8 +2,6 @@ title: Set C++ Compiler and Build Properties in Visual Studio description: Use the Visual Studio IDE to change C++ compiler and linker options and other build settings. Modify these settings in the Properties pages for your project. ms.date: 07/13/2026 -author: TimShererWithAquent -ms.author: v-tishe ms.topic: concept-article helpviewer_keywords: ["project properties [C++], modifying", "properties [C++]", "Visual C++ projects, properties", "projects [C++], properties"] --- From 94f5804c1b1b31701663e29b1ab34d7b1377724f Mon Sep 17 00:00:00 2001 From: Tim Sherer <28902327+TimShererWithAquent@users.noreply.github.com> Date: Wed, 15 Jul 2026 16:11:53 -0700 Subject: [PATCH 565/619] UUF Fix for "Share or reuse Visual Studio project settings" (6 of 10) (#6770) * UUF Fix. * Fix metadata. * Feedback. --- ...create-reusable-property-configurations.md | 36 +++++++++++------- .../media/add-new-project-property-sheet.png | Bin 0 -> 10604 bytes docs/build/media/sharingnew.png | Bin 6348 -> 0 bytes 3 files changed, 23 insertions(+), 13 deletions(-) create mode 100644 docs/build/media/add-new-project-property-sheet.png delete mode 100644 docs/build/media/sharingnew.png diff --git a/docs/build/create-reusable-property-configurations.md b/docs/build/create-reusable-property-configurations.md index 52af28e0f40..33a1075ce57 100644 --- a/docs/build/create-reusable-property-configurations.md +++ b/docs/build/create-reusable-property-configurations.md @@ -1,28 +1,35 @@ --- -description: "Learn more about: Share or reuse Visual Studio project settings" -title: "Share or reuse Visual Studio project settings - C++" -ms.date: 02/07/2022 +title: Share or reuse Visual Studio project settings - C++ +description: Learn how to create Visual Studio property sheets to share and reuse C++ project settings across projects. Simplify configuration with Property Manager. +ms.date: 07/14/2026 helpviewer_keywords: ["project properties [C++], reusable"] ms.topic: how-to +#customer intent: As a C++ developer, I want to create a reusable property sheet using Property Manager so that I can share project settings across multiple projects. --- # Share or reuse Visual Studio project settings -To create a custom group of settings that you can share with others or reuse in multiple projects, use **Property Manager** to create a *property sheet* (a *`.props`* file) to store the settings for each kind of project that you want to be able to reuse or share with others. Using property sheets are far less error-prone than other ways of creating "global" settings. +To create a custom group of settings that you can share with others or reuse in multiple projects, use **Property Manager** to create a *property sheet* (a *`.props`* file) to store the settings for each kind of project that you want to be able to reuse or share with others. Using property sheets is far less error-prone than other ways of creating "global" settings. > [!IMPORTANT] > **The problem with *`*.user`* files** > -> Past versions of Visual Studio used global property sheets that had a *`.user`* file name extension and were located in the *`\\AppData\Local\Microsoft\MSBuild\v4.0\`* folder. We no longer recommend these files because they set properties for project configurations on a per-user, per-computer basis. Such "global" settings can interfere with builds, especially when you are targeting more than one platform on your build computer. For example, if you have both an MFC project and Windows Phone project, the *`.user`* properties would be invalid for one of them. Reusable property sheets are more flexible and more robust. +> Past versions of Visual Studio used global property sheets that had a *`.user`* file name extension and were located in the *`\\AppData\Local\Microsoft\MSBuild\v4.0\`* folder. > -> Although *`.user`* files are still installed by Visual Studio and participate in property inheritance, they're empty by default. The best practice is to delete any reference to them in **Property Manager** to ensure that your projects operate independently of any per-user, per-computer settings. This practice is important to ensure correct behavior in a SCC (source code control) environment. +> Microsoft no longer recommends using this approach. These files set properties for project configurations on a per-user, per-computer basis. Such *global* settings can interfere with builds, especially when you are targeting more than one platform on your build computer. For example, if you have both an MFC project and Windows Phone project, the *`.user`* properties are invalid for one of them. Reusable property sheets are more flexible and more robust. +> +> Although Visual Studio still installs *`.user`* files and they participate in property inheritance, they're empty by default. The best practice is to delete any reference to them in **Property Manager** to ensure that your projects operate independently of any per-user, per-computer settings. This practice is important to ensure correct behavior in a source code control environment. To display **Property Manager**, on the menu bar, choose **View** > **Property Manager** or **View** > **Other Windows** > **Property Manager**, depending on your settings. -If you want to apply a common, frequently used set of properties to multiple projects, you can use **Property Manager** to capture them in a reusable *property sheet* file, which by convention has a *`.props`* file name extension. You can apply the sheet (or sheets) to new projects so you don't have to set those properties from scratch. +If you want to apply a common, frequently used set of properties to multiple projects, use **Property Manager** to capture them in a reusable *property sheet* file, which by convention has a *`.props`* file name extension. You can apply the sheet (or sheets) to new projects so you don't have to set those properties from scratch. + +:::image type="content" source="media/add-new-project-property-sheet.png" alt-text="Screenshot of the Property Manager context menu."::: + +Under each configuration node, you see nodes for each property sheet that applies to that configuration. The system adds property sheets that set common values based on options you choose in the app wizard when you create the project. Right-click any node and choose **Properties** to see the properties that apply to that node. -![Screenshot of the Property Manager shortcut menu.](media/sharingnew.png "SharingNew") +All the property sheets are imported automatically into the project's primary property sheet (*`ms.cpp.props`*) and are evaluated in the order they appear in **Property Manager**. You can move them to change the evaluation order. Property sheets that are evaluated later override the values in previously evaluated sheets. -Under each configuration node, you see nodes for each property sheet that applies to that configuration. The system adds property sheets that set common values based on options you choose in the app wizard when you create the project. Right-click any node and choose Properties to see the properties that apply to that node. All the property sheets are imported automatically into the project's primary property sheet (*`ms.cpp.props`*) and are evaluated in the order they appear in Property Manager. You can move them to change the evaluation order. Property sheets that are evaluated later override the values in previously evaluated sheets. For more information about the order of evaluation in the *`.vcxproj`* file, the *`.props`* and *`.targets`* files, environment variables, and the command line, see [Project property inheritance](project-property-inheritance.md). +For more information about the order of evaluation in the *`.vcxproj`* file, the *`.props`* and *`.targets`* files, environment variables, and the command line, see [Project property inheritance](project-property-inheritance.md). If you choose **Add New Project Property Sheet** and then select, for example, the MyProps.props property sheet, a property page dialog box appears. Notice that it applies to the MyProps property sheet; any changes you make are written to the sheet, not to the project file (.vcxproj). @@ -30,17 +37,20 @@ Properties in a property sheet are overridden if the same property is set direct You can import a property sheet as often as required. Multiple projects in a solution can inherit settings from the same property sheet, and a project can have multiple sheets. A property sheet itself can inherit settings from another property sheet. -You can also create a common property sheet for multiple configurations. To create a property sheet for each configuration, open the shortcut menu for one of them, choose **Add Existing Property Sheet**, and then add the other sheets. However, if you use a common property sheet, properties you set for all configurations that the sheet applies to. The IDE doesn't show which projects or other property sheets inherit from a given property sheet. +You can also create a common property sheet for multiple configurations. To create a property sheet for each configuration, open the shortcut menu for one of them, choose **Add Existing Property Sheet**, and then add the other sheets. However, if you use a common property sheet, properties you set apply to all configurations that the sheet applies to. The IDE doesn't show which projects or other property sheets inherit from a given property sheet. In large solutions that have many projects, it can be useful to create a common property sheet for all the projects in the solution. Create the property sheet as usual. Use **Property Manager** to add that property sheet to each project in the solution. If necessary at the project level, you can add another property sheet to set project-specific values. > [!IMPORTANT] -> A *`.props`* file by default does not participate in source control because it isn't created as a project item. You can manually add the file as a solution item if you want to include it in source control. +> A *`.props`* file by default doesn't participate in source control because it isn't created as a project item. You can manually add the file as a solution item if you want to include it in source control. #### To create a property sheet 1. On the menu bar, choose **View** > **Property Manager** or **View** > **Other Windows** > **Property Manager**. The **Property Manager** opens. +1. Select the item to which to apply the property sheet. This item can be a particular configuration, or another property sheet. +1. Right-click the item and then choose **Add New Project Property Sheet**. +1. In the **Add New Item** dialog, specify a name and location for the property sheet. Visual Studio saves the *`.props`* file in the specified location. -2. To define the scope of the property sheet, select the item to which it applies. This item can be a particular configuration, or another property sheet. Open the shortcut menu for this item and then choose **Add New Project Property Sheet**. Specify a name and location. + Expand the items under the project to see your property sheet. -3. In **Property Manager**, open the new property sheet and then set the properties you want to include. +1. In **Property Manager**, open the new property sheet and then set the properties you want to include. diff --git a/docs/build/media/add-new-project-property-sheet.png b/docs/build/media/add-new-project-property-sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..3241dc98580543489f3003806c5409c99831de63 GIT binary patch literal 10604 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 literal 0 HcmV?d00001 diff --git a/docs/build/media/sharingnew.png b/docs/build/media/sharingnew.png deleted file mode 100644 index 2316c884b97c62a5a5243c1691747d88f5297ce9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6348 zcmZ8`XEfTE2bzwzIuET^$ggm||#bK0LOdsHj+2R$p1$@%{VvwzjtE z>1ky}iBI||3X00fD6j49?S+Mfub&;wO;p`H{6s~?KBj-2Ufj`w>vVKWKR-WZCFyJd z`qAEq{=pe6o*0SF!A-3>R1(ERg~rClzJC4M);(&Cbl6&{G&eU74vVg+sL;{T**zxC zjTh!-ghsX#F<7ErK2ZmuA|@s_JT{kCSh=&agWn~Nj*eDlI;v$6U)mZ*M@LHrh@YRI z7rC(Bi<60dZPpRYesOV;o}PYiaPR}0nKewTEb_!{5Pf`n9BknZ4i1%-l^YuyE#=;q zmzPm*98OP9D@tNZaKwfgA`*$TC?OJeGXnwwuvlzVRMgtq+R@R`@$oS(E17U`41>Ws zeP15zZ_UroPnYKUHW1GV9T^!J`7#{Gd)v*;&4m5E{QP{v!5JEjuFzMks;aUnC!U?1 zVKA73gA;La@$%ZPnwpxfz7;(^y&vzQh-bvj+1}#f;yuDS;ozh%()ZoFcYB13Cr_U2 z@1L$>JKEdZ2L}gDO-;?r%+B_EYMXkuRu^a2j}8dyv$L~@hexfgt>xwAbIoxxGc#df zVT%nFgoC4f{K9nGr}@RTdHe~!KYwa!sC#dnHg1>pC^R9t&`oIW=FG?pVf=KnHvi~A7oyZsEN$hzd0ie zpPyg!^z`fzE-wfz#J$hMxMk^7;?=XhLxdFn2O}Y2eu;po8Tw6beg^s7?(q)0FTC7K za;H}#3`0VFgNOfHE*zR`T8%`!x%p~T8766br$HHptri{8<`gU!)k?G&_hwRRo>X)V z`s$Ln@^WE_&z>`LB$D-@~y5i@(+AjUI*VrPRRT ziQM(K;~N+_<+Vm%cxd(+xWEir!sdd=jTdQ_3$sKj_(t)A3AvNWQ5pR9gHQV`G z)}e$=v{-}@=&8%Z$Ydl^r1rwz!r9lGK*kL0RM%cBHlY(?pJ_QrR-1%6Q@XIL^ld$q ziMgQWeW+zjW_ET!@!YM2KP|qbQ}XqV9!t9N?$$;^+xmS!6R z1w^A>|KTxF4%xRg;WZTGFnLnY3>hVLO53r}I1n`607E1)zPJswH$;rxqL?e9jMe1* zOEqbv?q-%qU0>k&zWaJsIh{SII=rdqn%3enp=*``Tq28u(u&acB0ef-Oe$0 ze()OnN3wU!R{Tmi-~6l*;AS4+{t(G*^5UYt{yO!Hw|C<&G9HAi9wI!ZVJ~DIwbx!4 z0kjv1yGe0c^cR*JS%bI^yJmG!wc3=3#pB(#*FOwUG~(P-W7)tn*|qHc3lAY}+l}*u zCLMuHetV9lKS@HcMG&(@8M*p(@I1LXqquaQWOP8GQJiX5K&5Qg=ZGW z7L{uDEU&i;1ikWmj#&~G15!z6U-I=FgnW<%Qx7U{;`UABBrBf1WPal<`#@3_;AAY_ zM#Zne=R18~H$<;)njiEfBgVtxtZLsDFInoGenoUKEq4%9MWmjIp-Kkly%m<4XUvBx>f z>Rw=M3+)H5)E!l^+Zh>$!mcgY#~%7f1Z zPL1&AQE)I`c=)Q^b-x62e)GS84tPdUv9e1P9w3_B!d#pk&G}5Z?35FGVz5zYLu2FS zxiM`O?>#(L-ny7f3kkdC1IJ&1_YV7iRn+a$f#I%H_8Y(^{|~3 zfHBdEj6|ZG>97tDn^tV-EWGQ=MKn0aj36xcM=(TWLL0DyAw~RK*ch**sxZ2| zQKoxF6^CYl7L-@+I9p)o5zSE6KOpSZRWSg+3L6B1rHY0AzYt=(QJW8$Mt=_R`F~NP zMhNjt)V#9N=u&|Q0SkAOq(9p_jc{GK5TAEX3LF1o8pK8Qd)+SL1x|QVsSb?jS0a&V z^h0Sph^JuJ{^@Q2BFU3_VM&j;#!8M6miuJmbfx9e?VdbFjtLO>nB2s5o8CTUW5KbIVz|2hetBSVO{I`!gWz;+RdKpZ_h>25^hU`WR^u+m^*&XmjH38;4K3cGwKc5VS7CPJ-}3}BxqbzQ_?-JyBWAW-grPiU9&&SI zJHfy)D35}4f##P>e^>tEY8KTo>yf+xeK42}bmIigJrtFj$!aec*)`90f8xtPjnUeb ziWlcEvhI{AK46F|g>L7vkbz9E&9S6?RFw*)WJyo$F|W9)f?P4Nz3@YaAsuxC5ifqe zg*KbJq7a3SqU*e=h!N@ht(=z?W;4q_0Je|><8zE zDCFf^d~Gcwb%|yhYh$|m%;Um@ewljW85wX&yJQSCxdQ0y-gt68if-5m}_=qDv}wB@wBjh zll$ngrR8676AvNFM-ZS(-5|F=F(UWnzrAqv33&q>06!3c*VNc!H8_fYZw!X39EaDu zgu=B+Kxy4QDn*HZu7T;)KeJZR*hsI?Ybh-(^OmMR>7Mug+dfcG?Fdh;t5s>vxuZh? zc>q{_KxerJwZ`N+1-m}1`^bPfNG?4%DC%Q(V_P3J5%Vr7D=AJAFYy(!gh9B0?bA1; z*yi`EaNM}k_#RZshm@M`>M~$nG9S^F=fF6_XAj7=x!{`7ts+9|U&3;qkPds1Qor@i zk!N4u)P=Bdr#-c*BN3>Qqx@U{o;L2y%@yPBWAhmtyqt%WH;zMF6y+u4*}Am;WBS&r zpCOwGnj~?T4TL@ITTS_UHMX6#Q$7tDIgw-F69X4MRHT#WTqF z)Gej48KLLvCE2j1e~fH{T|k_-c-gF43V0G|r9E2{WALvdn9wN~Kg%}Ymos5V+y9*I zFzZB>ij%(nI;22==}2J|Z0&4=9Vo*aRHcT{Z$&JZ)NfAhtL`00+|dMD_9_%HPcQi* zk&T{quC6gX;gZMqC@-B}HaZn}27hHz>4oEzvhxFt%*;NZiW6+&`ODD>2|6mr`HC2; zlx}|3mE#?$eF#_8V|<^$t8jS2@Ji|^ zq-P59qvhf{Ip)bZ_nNOdT;+7VM?M;V*f4AU*nOw8$u}3pp>n?bBwsI>Z4Q z3QrD%^oHxgGrH+nY8$3_Q1YSxK5vDnEI2q=z0GtI_Z3-ywcZq-Jq;TJrNlO#e-Q`~VR`TX;x%YK2Bp0<|5J7U zPKTg!25zg1iA$_8GyV%>_HGsfxowZuQay;hA z@?bTJ)2D$+x1!>9Mc{Z*zcL0}aBSw1qXmpb@->jhr)IL`ux5NQ6}w-;wN-Om=tl{5 zv&|_?M1FsIPf^y92kd6Ys|*Sh@dSK1VZ2&W;su?=>#@p*F(-OcyE3i^>GonBH(+DX z@jxZ=o-U(%1Cus?8Uz#-R|?@^5>gAvI5f4o>tlGqVF`1n*r=SQRW z&J!#!|EeS&9+A}A7elFXGG)K4zD?BHc<-4A5{_;BofqAp)OP`C{FKr48K8$;83!aBM zJ||VW$N8y2-eI50IjlHJ!MROU>Lod_NYLtYeG#iNrc6tj7bds!@eQsyw_{sWLgdOt zZMd)(_8aC|D31a&?CC<K>+P;02Y4o0M2%hXaH5!@XL3W_g{0 zs*(?5kZC3#=x+4S690m%Bqj0Cgm?PAZad>?dr-_(me4O-AZQ1Eatr3BUS1v)g)Z97 zB_9>G{^;z9Zk);*yft|@F+35Nu-~XaJSIoiI;DqvPng|{=f|=Bu?5zQ+xe=8DX({u zs=>qnK+XP<(Fq9!=cfo{>))_uXLj(6yMq5~WmzC=PpD?qO=Aqk|IX=sFgxf6j@LYvw$ zTh;meJv#oRqxIk_uzqdwt2{HW5|+w)g;hcct4vAHS}s@BwKC=1E#v~FZfx?+yn5(Y z(<|KUL0BDOEhFNYw7BbC6Fa@6v=wLrC|lBJrw`-zw@Czst(Nkv<2o0rV^1K;`#0$b z3o_ILBD({wqw+k)DU9IrkgaA;SbHi*)1gG(eQ{+QXJx+C9VM50R-JQG{dwthKR5Nf zoGzbzFKah}GA`R8E~bVv1`9tU+4VHL(tMPZK&ti;i<*_^s+(*=A?f z&rvtQzuaHrGNrCz3q;)*{s?zEr zvre19@k(NaRZh!P@!;l@xSM)DN6*6pDOaz>Uzv#S1d9AXF$Lt9=+X;%$Vi!~s;`Ew z^prUuVAiFh^+df>NB>*}GJzXua4_B-7Pr)nMCms|;nlZ6w#+(o|A77crd>IYr&UrmD-H`21N4!vd# z3{6^gP9SAUrA>-2EoypS?jl8=7C4qr0y{*-O%0vd_g}QC~nvU2~5kW9GbbG z5u(t!!;fA+5WF-XA=;9L(hJPM66@*E&NyvTO3YIvBm9y70vY<2eZg4mt~`e$1-M4l zTBODFjbTuo;7z=0`<|LX5#ifJJL-Qd&{+&G>@aFjC$Os}ccs4=W zuvNv`)lQYyV{ADJC|mtVi(qG>1s1StWQuJKk2`a-8}rnbVb(}%Mjgr`8aClAb0EmA zy}C==F>)@)$ztkmz_5Hu1QiJD1Ho4G$ljk&hgXAQG2CF;W+n`0?Pl%xo%a%TlBE5@4w>8~2f+mqV=dOt~?lTks)W$4~D=v7Y{Sm9ePidHV2l{n)6_x?%--VC2T(l`jI z;||SqFqTY;ANzXvbca8JA~eM846@RQK7SL^GQE^ncl12*ZT7E@U>^~13KN2Pv5~ zk}fwngFKQ>-MA(7BOh$p*YKgmNuEO3(xY=8IL5-Rn8(}?>QBP`c36C=nh*E`FJvbx ze9uqcAv=|spQ4Ikdhb>fFs@OoU>K3EMGy~tCRNvKVAIdYshM!(|SOv8yA7u=vj>>1L z1ZrvKoD}gWl*))qzSW_nG8){u$W%kG0fZJx59W@|)D(2_+6tXl;^; zzHL^Lbu5MnOF%wt;YF#YC-t3x-CL%^Q>6cR0|>#+T@^o(j26L+rVeyW^jVC*@S^*J zu_bMF%v$YxIoub%)D@;W8Gzx_4Xj*%uT*_i_7C@1A;P`=aZ82!gGF|X$Lh^6$Snh-hBK%5XWdN;J+=3?tUv_k Date: Wed, 15 Jul 2026 16:12:20 -0700 Subject: [PATCH 566/619] UUF Fix for Install C and C++ support in Visual Studio (1 of 10) (#6763) * UUF fixes. * Apply suggestions from code review Co-authored-by: learn-build-service-prod-06[bot] <274430002+learn-build-service-prod-06[bot]@users.noreply.github.com> * Update docs/build/vscpp-step-0-installation.md Co-authored-by: learn-build-service-prod-08[bot] <274430765+learn-build-service-prod-08[bot]@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Remove references to 2022. --------- Co-authored-by: learn-build-service-prod-06[bot] <274430002+learn-build-service-prod-06[bot]@users.noreply.github.com> Co-authored-by: learn-build-service-prod-08[bot] <274430765+learn-build-service-prod-08[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../media/vscpp-first-start-page-flag.png | Bin 29663 -> 0 bytes docs/build/vscpp-step-0-installation.md | 202 ++---------------- .../visual-studio-installer-cpp-workload.png | Bin 0 -> 22787 bytes .../vs-installer-individual-components.png | Bin 129856 -> 0 bytes .../vs-installer-installation-locations.png | Bin 116240 -> 0 bytes .../media/vs-installer-workloads.png | Bin 149929 -> 0 bytes .../media/vs2022-installer-workloads.png | Bin 101191 -> 0 bytes 7 files changed, 21 insertions(+), 181 deletions(-) delete mode 100644 docs/build/media/vscpp-first-start-page-flag.png create mode 100644 docs/get-started/media/vs-2026/visual-studio-installer-cpp-workload.png delete mode 100644 docs/get-started/media/vs-installer-individual-components.png delete mode 100644 docs/get-started/media/vs-installer-installation-locations.png delete mode 100644 docs/get-started/media/vs-installer-workloads.png delete mode 100644 docs/get-started/media/vs2022-installer-workloads.png diff --git a/docs/build/media/vscpp-first-start-page-flag.png b/docs/build/media/vscpp-first-start-page-flag.png deleted file mode 100644 index e17924233c75cd6886cc3cf2017a68769204cc37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29663 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 diff --git a/docs/build/vscpp-step-0-installation.md b/docs/build/vscpp-step-0-installation.md index 63753c2b85a..c7ea3bbe0ce 100644 --- a/docs/build/vscpp-step-0-installation.md +++ b/docs/build/vscpp-step-0-installation.md @@ -1,7 +1,7 @@ --- title: Install C and C++ support in Visual Studio -description: "Learn how to install Visual Studio with support for Microsoft C and C++ and related workloads." -ms.date: 09/09/2025 +description: Install C++ support in Visual Studio on Windows. Learn to select workloads, customize components, change install locations, and start building apps. +ms.date: 07/15/2026 ms.topic: tutorial ms.devlang: "cpp" ms.custom: @@ -14,16 +14,14 @@ ms.custom: If you haven't installed Visual Studio and the Microsoft C and C++ tools yet, here's how to get started. -::: moniker range="msvc-170" +## Visual Studio installation -## Visual Studio 2022 installation - -Welcome to Visual Studio 2022! In this version, it's easy to choose and install just the features you need. Because of its reduced minimum footprint, Visual Studio installs quickly and with less system impact. +Welcome to Visual Studio! It's easy to choose and install just the features you need. Because of its reduced minimum footprint, Visual Studio installs quickly and with less system impact. > [!NOTE] > This article applies to installation of Visual Studio on Windows. [Visual Studio Code](https://code.visualstudio.com) is a lightweight, cross-platform development environment that runs on Windows, Mac, and Linux systems. The Microsoft [C/C++ for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) extension supports IntelliSense, debugging, code formatting, autocompletion. Visual Studio for Mac doesn't support Microsoft C++, but does support .NET languages and cross-platform development. For installation instructions, see [Install Visual Studio for Mac](/visualstudio/mac/installation/). -To learn what else is new in this version, see the Visual Studio [release notes](/visualstudio/releases/2022/release-notes/). +To learn what's new in this version, see [Visual Studio 2026 release notes](/visualstudio/releases/2026/release-notes). Ready to install? Use the following step-by-step guide. @@ -31,7 +29,7 @@ Ready to install? Use the following step-by-step guide. Before you begin installing Visual Studio: -1. Check the [system requirements](/visualstudio/releases/2022/system-requirements). These requirements help you know whether your computer supports Visual Studio 2022. +1. Check the [system requirements for Visual Studio](/visualstudio/releases/2026/vs-system-requirements). These requirements help you know whether your computer supports Visual Studio. 1. Apply the latest Windows updates. These updates ensure that your computer has both the latest security updates and the required system components for Visual Studio. @@ -39,7 +37,7 @@ Before you begin installing Visual Studio: 1. Free up disk space. Remove unneeded files and applications from your %SystemDrive% by, for example, running the Disk Cleanup app. -For questions about running previous versions of Visual Studio side by side with Visual Studio 2022, see the [Visual Studio 2022 Platform Targeting and Compatibility](/visualstudio/releases/2022/compatibility/) page. +For questions about running previous versions of Visual Studio side by side, see [Visual Studio Platform Targeting and Compatibility](/visualstudio/releases/2026/compatibility/). ### Step 2 - Download Visual Studio @@ -49,29 +47,29 @@ Select the following button to go to the Visual Studio download page, and downlo > [Download Visual Studio](https://visualstudio.microsoft.com/downloads/) >[!TIP] -> The Community edition is for individual developers, classroom learning, academic research, and open source development. For other uses, install Visual Studio 2022 Professional or Visual Studio 2022 Enterprise. +> The Community edition is for individual developers, classroom learning, academic research, and open source development. For other uses, install Visual Studio Professional or Visual Studio Enterprise. ### Step 3 - Install the Visual Studio Installer Run the bootstrapper file you downloaded to install the Visual Studio Installer. This new lightweight installer includes everything you need to both install and customize Visual Studio. -1. From your *Downloads* folder, double-click the bootstrapper file called *VisualStudioSetup.exe*. +1. From your **Downloads** folder, double-click the bootstrapper file named `VisualStudioSetup.exe`. - If you receive a User Account Control notice, choose **Yes** to allow the bootstrapper to run. + If you receive a User Account Control notice, select **Yes** to allow the bootstrapper to run. -1. We ask you to acknowledge the Microsoft [License Terms](https://visualstudio.microsoft.com/license-terms/) and the Microsoft [Privacy Statement](https://privacy.microsoft.com/privacystatement). Choose **Continue**. +1. Agree to the Microsoft [License Terms](https://visualstudio.microsoft.com/license-terms/) and the Microsoft [Privacy Statement](https://privacy.microsoft.com/privacystatement). Select **Continue**. ### Step 4 - Choose workloads -You can use the installer to customize your installation by selecting the *workloads*, or feature sets, that you want. +Use the installer to customize your installation by selecting the *workloads*, or feature sets, that you want. 1. Find the workload you want in the **Installing Visual Studio** screen. - :::image type="content" source="../get-started/media/vs2022-installer-workloads.png" alt-text="Screenshot of the Visual Studio 2022 installer with the Desktop development with C plus plus workload selected." lightbox="../get-started/media/vs2022-installer-workloads.png"::: + :::image type="content" source="../get-started/media/vs-2026/visual-studio-installer-cpp-workload.png" alt-text="Screenshot showing the Visual Studio installer with the Desktop development with C plus plus workload selected."::: For core C and C++ support, choose the **Desktop development with C++** workload. It comes with the default core editor, which includes basic code editing support for more than 20 languages, the ability to open and edit code from any folder without requiring a project, and integrated source code control. - The **Installation details** pane lists the included and optional components installed by each workload. You can select or deselect optional components in this list. For example, to support development by using the Visual Studio 2017 or 2015 compiler toolsets, choose the MSVC v141 or MSVC v140 optional components. You can add support for MFC, the experimental Modules language extension, IncrediBuild, and more. + The **Installation details** pane lists the included and optional components that each workload installs. You can select or deselect optional components in this list. For example, to support development by using the Visual Studio 2017 or 2015 compiler toolsets, choose the MSVC v141 or MSVC v140 optional components. You can add support for MFC, the experimental Modules language extension, IncrediBuild, and more. > [!TIP] > To install a specific MSVC Build Tools version (Preview, latest release, or an older in-support release), see [Install the Microsoft C++ (MSVC) Build Tools](../overview/acquire-msvc.md). @@ -87,30 +85,30 @@ You can use the installer to customize your installation by selecting the *workl ### Step 5 - Choose individual components (optional) -If you don't want to use the Workloads feature to customize your Visual Studio installation, or you want to add more components than a workload installs, you can do so by installing or adding individual components from the **Individual components** tab. Choose what you want, and then follow the prompts. +If you don't want to use the Workloads feature to customize your Visual Studio installation, or you want to add more components than a workload installs, you can install or add individual components from the **Individual components** tab. Choose what you want, and then follow the prompts. ### Step 6 - Install language packs (optional) -By default, the installer program tries to match the language of the operating system when it runs for the first time. To install Visual Studio in a language of your choosing, choose the **Language packs** tab from the Visual Studio Installer, and then follow the prompts. +By default, the Visual Studio Installer tries to match the language of the operating system when it runs for the first time. To install Visual Studio in a language that you choose, select the **Language packs** tab from the Visual Studio Installer, and then follow the prompts. :::image type="content" source="../get-started/media/vs-installer-language-packs.png" alt-text="Screenshot of the Visual Studio Installer, showing the Install language packs tab view and the languages you can choose from like English, Spanish, Chinese (simplified or traditional)." lightbox="../get-started/media/vs-installer-language-packs.png"::: #### Change the installer language from the command line -Another way that you can change the default language is by running the installer from the command line. For example, you can force the installer to run in English by using the following command: `vs_installer.exe --locale en-US`. The installer remembers this setting when it's run the next time. The installer supports the following language tokens: zh-cn, zh-tw, cs-cz, en-us, es-es, fr-fr, de-de, it-it, ja-jp, ko-kr, pl-pl, pt-br, ru-ru, and tr-tr. +You can change the default language by running the installer from the command line. For example, you can force the installer to run in English by using the following command: `vs_installer.exe --locale en-US`. The installer remembers this setting the next time it runs. The installer supports the following language tokens: zh-cn, zh-tw, cs-cz, en-us, es-es, fr-fr, de-de, it-it, ja-jp, ko-kr, pl-pl, pt-br, ru-ru, and tr-tr. ### Step 7 - Change the installation location (optional) -You can reduce the installation footprint of Visual Studio on your system drive. You can choose to move the download cache, shared components, SDKs, and tools to different drives, and keep Visual Studio on the drive that runs it the fastest. +You can reduce the installation footprint of Visual Studio on your system drive. Move the download cache, shared components, SDKs, and tools to different drives, and keep Visual Studio on the drive that runs it the fastest. > [!IMPORTANT] -> You can select a different drive only when you first install Visual Studio. If you've already installed it and want to change drives, you must uninstall Visual Studio and then reinstall it. +> You can select a different drive only when you first install Visual Studio. If you already installed it and want to change drives, you must uninstall Visual Studio and then reinstall it. ### Step 8 - Start developing -1. After Visual Studio installation is complete, choose the **Launch** button to get started developing with Visual Studio. +1. After Visual Studio installation is complete, select the **Launch** button to get started developing with Visual Studio. -1. On the start window, choose **Create a new project**. +1. On the start window, select **Create a new project**. 1. In the search box, enter the type of app you want to create to see a list of available templates. The list of templates depends on the workloads that you chose during installation. To see different templates, choose different workloads. @@ -133,164 +131,6 @@ Some benefits of using Copilot for your C++ coding scenarios: To try GitHub copilot to create a C++ app, follow the instructions in [Use AI to create a C++ console application in Visual Studio](../build/use-github-copilot-create-cpp-console-app.md). -::: moniker-end - -::: moniker range="msvc-160" - -## Visual Studio 2019 installation - -Welcome to Visual Studio 2019! In this version, it's easy to choose and install just the features you need. Because of its reduced minimum footprint, Visual Studio installs quickly and with less system impact. - -> [!NOTE] -> This article applies to installation of Visual Studio on Windows. [Visual Studio Code](https://code.visualstudio.com) is a lightweight, cross-platform development environment that runs on Windows, Mac, and Linux systems. The Microsoft [C/C++ for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) extension supports IntelliSense, debugging, code formatting, autocompletion. Visual Studio for Mac doesn't support Microsoft C++, but does support .NET languages and cross-platform development. For installation instructions, see [Install Visual Studio for Mac](/visualstudio/mac/installation/). - -To learn what else is new in this version, see the Visual Studio [release notes](/visualstudio/releases/2019/release-notes/). - -Ready to install? Use the following step-by-step guide. - -### Step 1 - Prepare your computer for Visual Studio - -Before you begin installing Visual Studio: - -1. Check the [system requirements](/visualstudio/releases/2019/system-requirements). These requirements help you know whether your computer supports Visual Studio 2019. - -1. Apply the latest Windows updates. These updates ensure that your computer has both the latest security updates and the required system components for Visual Studio. - -1. Reboot your computer. The reboot ensures that any pending installs or updates don't hinder the Visual Studio install. - -1. Free up disk space. Remove unneeded files and applications from your %SystemDrive% by, for example, running the Disk Cleanup app. - -For questions about running previous versions of Visual Studio side by side with Visual Studio 2019, see the [Visual Studio 2019 Platform Targeting and Compatibility](/visualstudio/releases/2019/compatibility/) page. - -### Step 2 - Download Visual Studio - -Select the following button to go to the Visual Studio older downloads page, and download the Visual Studio 2019 bootstrapper file. - - > [!div class="button"] - > [Download Visual Studio 2019](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2019-and-other-products) - -### Step 3 - Install the Visual Studio Installer - -Run the bootstrapper file you downloaded to install the Visual Studio Installer. This new lightweight installer includes everything you need to both install and customize Visual Studio. - -1. From your *Downloads* folder, double-click the bootstrapper file. - - If you receive a User Account Control notice, choose **Yes** to allow the bootstrapper to run. - -1. We ask you to acknowledge the Microsoft [License Terms](https://visualstudio.microsoft.com/license-terms/) and the Microsoft [Privacy Statement](https://privacy.microsoft.com/privacystatement). Choose **Continue**. - -### Step 4 - Choose workloads - -You can use the installer to customize your installation by selecting the *workloads*, or feature sets, that you want. - -1. Find the workload you want in the **Installing Visual Studio** screen. - - :::image type="content" source="../get-started/media/vs-installer-workloads.png" alt-text="Screenshot of the Visual Studio 2019 installer." lightbox="../get-started/media/vs-installer-workloads.png"::: - - For core C and C++ support, choose the **Desktop development with C++** workload. It comes with the default core editor, which includes basic code editing support for over 20 languages, the ability to open and edit code from any folder without requiring a project, and integrated source code control. - - The **Installation details** pane lists the included and optional components installed by each workload. You can select or deselect optional components in this list. For example, to support development by using the Visual Studio 2017 or 2015 compiler toolsets, choose the MSVC v141 or MSVC v140 optional components. You can add support for MFC, the experimental Modules language extension, IncrediBuild, and more. - - Other workloads support more kinds of development. For example, choose the **Universal Windows Platform development** workload to create apps that use the Windows Runtime for the Microsoft Store. Choose **Game development with C++** to create games that use DirectX, Unreal, and Cocos2d. Choose **Linux development with C++** to target Linux platforms, including IoT development. - -1. After you choose the workloads and optional components you want, choose **Install**. - - Next, status screens appear that show the progress of your Visual Studio installation. - -> [!TIP] -> At any time after installation, you can install workloads or components that you didn't install initially. If you have Visual Studio open, go to **Tools** > **Get Tools and Features...** which opens the Visual Studio Installer. Or, open **Visual Studio Installer** from the Start menu. From there, you can choose the workloads or components that you wish to install. Then, choose **Modify**. - -### Step 5 - Choose individual components (optional) - -If you don't want to use the Workloads feature to customize your Visual Studio installation, or if you want to add more components than a workload installs, you can do so by installing or adding individual components from the **Individual components** tab. Choose what you want, and then follow the prompts. - -:::image type="content" source="../get-started/media/vs-installer-individual-components.png" alt-text="Screenshot of the Visual Studio Installer, showing the Install individual components tab view." lightbox="../get-started/media/vs-installer-individual-components.png"::: - -### Step 6 - Install language packs (optional) - -By default, the installer program tries to match the language of the operating system when it runs for the first time. To install Visual Studio in a language of your choosing, choose the **Language packs** tab from the Visual Studio Installer, and then follow the prompts. - -:::image type="content" source="../get-started/media/vs-installer-language-packs.png" alt-text="Screenshot of the Visual Studio Installer, showing the Install language packs tab view." lightbox="../get-started/media/vs-installer-language-packs.png"::: - -#### Change the installer language from the command line - -Another way that you can change the default language is by running the installer from the command line. For example, you can force the installer to run in English by using the following command: `vs_installer.exe --locale en-US`. The installer will remember this setting when it's run the next time. The installer supports the following language tokens: zh-cn, zh-tw, cs-cz, en-us, es-es, fr-fr, de-de, it-it, ja-jp, ko-kr, pl-pl, pt-br, ru-ru, and tr-tr. - -### Step 7 - Change the installation location (optional) - -You can reduce the installation footprint of Visual Studio on your system drive. You can choose to move the download cache, shared components, SDKs, and tools to different drives, and keep Visual Studio on the drive that runs it the fastest. - -:::image type="content" source="../get-started/media/vs-installer-installation-locations.png" alt-text="Screenshot of the Visual Studio Installer, showing the installation locations tab view." lightbox="../get-started/media/vs-installer-installation-locations.png"::: - -> [!IMPORTANT] -> You can select a different drive only when you first install Visual Studio. If you've already installed it and want to change drives, you must uninstall Visual Studio and then reinstall it. - -### Step 8 - Start developing - -1. After Visual Studio installation is complete, choose the **Launch** button to get started developing with Visual Studio. -1. On the start window, choose **Create a new project**. -1. In the search box, enter the type of app you want to create to see a list of available templates. The list of templates depends on the workloads that you chose during installation. To see different templates, choose different workloads. - - You can also filter your search for a specific programming language by using the **Language** dropdown list. You can filter by using the **Platform** list and the **Project type** list, too. - -1. Visual Studio opens your new project, and you're ready to code! - -::: moniker-end - -::: moniker range="msvc-150" - -## Visual Studio 2017 installation - -In Visual Studio 2017, it's easy to choose and install just the features you need. Because of its reduced minimum footprint, it installs quickly and with less system impact. - -### Prerequisites - -- A computer that runs Microsoft Windows 7 or later versions. We recommend the latest version of Windows for the best development experience. Make sure that the latest updates are applied to your system before you install Visual Studio. - -- Enough free disk space. Visual Studio requires at least 7 GB of disk space, and can take 50 GB or more if many common options are installed. We recommend you install it on your C: drive. - -For details on the disk space and operating system requirements, see [Visual Studio Product Family System Requirements](/visualstudio/productinfo/vs2017-system-requirements-vs). The installer reports how much disk space is required for the options you select. - -### Download and install - -1. To download the Visual Studio 2017 installer for Windows, go to the Visual Studio [older downloads](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2017-and-other-products) page. Expand the **2017** section, and choose the **Download** button. - -1. Find the installer file you downloaded and run it. The downloaded file might be displayed in your browser, or you might find it in your *Downloads* folder. The installer needs Administrator privileges to run. You might see a **User Account Control** dialog asking you to give permission to let the installer make changes to your system; choose **Yes**. If you're having trouble, find the downloaded file in File Explorer, right-click on the installer icon, and choose **Run as Administrator** from the context menu. - - :::image type="content" source="media/vscpp-concierge-run-installer.gif" alt-text="Animation that shows the Visual Studio Installer."::: - -1. The installer presents you with a list of workloads, which are groups of related options for specific development areas. Support for C++ is now part of optional workloads that aren't installed by default. - - :::image type="content" source="media/desktop-development-with-cpp.png" alt-text="Screenshot showing the Desktop development with C plus plus workload."::: - - For C and C++, select the **Desktop development with C++** workload and then choose **Install**. - - :::image type="content" source="media/vscpp-concierge-choose-workload.gif" alt-text="Animation that shows the Desktop development with C plus plus workload then choose the Install button."::: - -1. When the installation completes, choose the **Launch** button to start Visual Studio. - - The first time you run Visual Studio, you're asked to sign in with a Microsoft Account. If you don't have one, you can create one for free. You must also choose a theme. Don't worry, you can change it later if you want to. - - It might take Visual Studio several minutes to get ready for use the first time you run it. - -1. When Visual Studio opens, check to see if the flag icon in the title bar is highlighted: - - :::image type="content" source="media/vscpp-first-start-page-flag.png" alt-text="Screenshot of the Visual Studio notification flag."::: - - If it's highlighted, select it to open the **Notifications** window. If there are any updates available for Visual Studio, we recommend you install them now. Once the installation is complete, restart Visual Studio. - -::: moniker-end - -::: moniker range="r8z2 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 L^Fzfnhwy&@!Rafi literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-installer-individual-components.png b/docs/get-started/media/vs-installer-individual-components.png deleted file mode 100644 index 30c65048f6c2bd32173d01101a720bf687132ddc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129856 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 UbzS#JFM)seRdw!FDBHaHKhp_8>Hq)$ diff --git a/docs/get-started/media/vs-installer-workloads.png b/docs/get-started/media/vs-installer-workloads.png deleted file mode 100644 index 4f575c27412826c0a7f6968faf2dc05920bf3589..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 149929 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

      I-8?SKVve0K0%>%EeH6ZZCS5_qtE8`%Km(V%^q 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 duIkGTs?tF^BmzPZ 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 From 6f652435b102fc1420a6dd050c858099fcbe20dc Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 15 Jul 2026 20:21:51 -0700 Subject: [PATCH 567/619] update include cleanup docs for 2026 (#6768) * update include cleanup docs for 2026 * edits * edits * edits * Apply suggestions from code review Co-authored-by: learn-build-service-prod-01[bot] <274427437+learn-build-service-prod-01[bot]@users.noreply.github.com> Co-authored-by: learn-build-service-prod-08[bot] <274430765+learn-build-service-prod-08[bot]@users.noreply.github.com> * add other include cleanup options * edits * tech review * Apply suggestions from code review Co-authored-by: learn-build-service-prod-03[bot] <274428581+learn-build-service-prod-03[bot]@users.noreply.github.com> Co-authored-by: learn-build-service-prod-04[bot] <274428985+learn-build-service-prod-04[bot]@users.noreply.github.com> * edit * add lightbulb exclusion method * Apply suggestions from code review Co-authored-by: learn-build-service-prod-03[bot] <274428581+learn-build-service-prod-03[bot]@users.noreply.github.com> * fix image * wording * add qualifier * fix image link * update UI to match VCIC002 * pr review stuff * edit * edit --------- Co-authored-by: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Co-authored-by: learn-build-service-prod-01[bot] <274427437+learn-build-service-prod-01[bot]@users.noreply.github.com> Co-authored-by: learn-build-service-prod-08[bot] <274430765+learn-build-service-prod-08[bot]@users.noreply.github.com> Co-authored-by: learn-build-service-prod-03[bot] <274428581+learn-build-service-prod-03[bot]@users.noreply.github.com> Co-authored-by: learn-build-service-prod-04[bot] <274428985+learn-build-service-prod-04[bot]@users.noreply.github.com> --- docs/ide/include-cleanup-config.md | 119 +++++++++++++++--- docs/ide/include-cleanup-overview.md | 37 ++++-- .../include-cleanup-lightbulb-suppress.png | Bin 0 -> 806130 bytes .../media/other-include-cleanup-options.png | Bin 0 -> 43097 bytes docs/ide/media/vs-include-cleanup-option.png | Bin 0 -> 33656 bytes .../vs-other-include-cleanup-options.png | Bin 0 -> 88107 bytes 6 files changed, 125 insertions(+), 31 deletions(-) create mode 100644 docs/ide/media/include-cleanup-lightbulb-suppress.png create mode 100644 docs/ide/media/other-include-cleanup-options.png create mode 100644 docs/ide/media/vs-include-cleanup-option.png create mode 100644 docs/ide/media/vs-other-include-cleanup-options.png diff --git a/docs/ide/include-cleanup-config.md b/docs/ide/include-cleanup-config.md index 0f2b6d59871..e6fd5c9a978 100644 --- a/docs/ide/include-cleanup-config.md +++ b/docs/ide/include-cleanup-config.md @@ -1,14 +1,14 @@ --- title: "Configure C/C++ Include Cleanup in Visual Studio" description: "Learn how to configure C/C++ Include Cleanup." -ms.date: 01/23/2026 +ms.date: 07/15/2026 ms.topic: "how-to" f1_keywords: ["config include cleanup"] helpviewer_keywords: ["config include cleanup"] --- # Configure C/C++ Include Cleanup in Visual Studio -Starting with 17.8 Preview 1, Visual Studio can clean up your `#include`s to improve the quality of your C and C++ code in the following ways: +Starting with 17.8 Preview 1, Visual Studio can clean up which files you `#include` to improve the quality of your C and C++ code in the following ways: - Offers to add header files for code that compiles only because a needed header file is included indirectly by another header file. - Offers to remove unused header files--improving build times. @@ -16,50 +16,133 @@ This article describes how to configure Include Cleanup in Visual Studio. For mo ## Turn on Include Cleanup -The Include Cleanup feature is on by default. If it isn't active, you can turn it on via **Tools** > **Options** > **Text Editor** > **C/C++** > **Code Cleanup** and select **Enable #include cleanup**. +The Include Cleanup feature is off by default. -Then use the dropdowns to configure how you want to be notified about opportunities to add indirect headers or remove unused headers: +::: moniker range="<=msvc-170" + +Turn it on by selecting **Tools** > **Options** > **Text Editor** > **C/C++** > **Code Cleanup** and selecting **Enable #include cleanup**. + +Then use the dropdowns to configure the severity of the notifications about opportunities to add indirect headers or remove unused headers: :::image type="complex" source="media/vs2022-include-cleanup-option.png" alt-text="The Tools options dialog opened at Text Editor > C/C++ > Code Cleanup."::: -The Enable # include cleanup checkbox is checked. The dropdowns for Remove unused includes suggestion level, and Add missing includes suggestion level, are shown. The contents of the dropdown are shown, which are: **Refactoring only**, **Suggestion**, **Warning**, and **Error**. The **Remove unused includes suggestion level** dropdown offers the same options but also adds dimmed. +The **Enable #include cleanup** checkbox is selected. The dropdowns for **Remove unused includes suggestion level** and **Add missing includes suggestion level** are shown. The contents of the dropdown are shown, which are: **Refactoring only**, **Suggestion**, **Warning**, and **Error**. The **Remove unused includes suggestion level** dropdown offers the same options but also adds **Dimmed**. :::image-end::: -The meanings of the suggestion level options are: +These options control the kind of notification that the Include Cleanup feature provides about unused headers: + +**Dimmed** -**Refactoring only**: Include Cleanup offers actions you can take through the quick action menu when you hover the mouse pointer over an `#include`, or place the cursor on the `#include` line and press Ctrl+period: +Include Cleanup shows unused headers by dimming the line of the unused header file in the code editor, and with a message in the **Error List** window. In the code editor, hover your cursor over the dimmed `#include` to bring up the quick action menu and choose **Show potential fixes**, or click on the light bulb dropdown, to see actions related to the unused file. -:::image type="complex" source="media/include-cleanup-refactor-lightbulb.png" alt-text="A screenshot of the quick action to remove an unused header"::: +:::image type="complex" source="media/include-cleanup-dimmed-include.png" alt-text="A screenshot of a dimmed #include < iostream > line."::: +The line for #include < iostream > is dimmed because the line of code that uses iostream is commented out. That line of code is // std::cout << "charSize = " << charSize; The quick action menu is also visible for this line. It says the #include < iostream > isn't used in this file, and has a link to Show potential fixes. +:::image-end::: + +**Refactoring only**: Include Cleanup offers actions you can take through the quick action menu in the code editor when you hover the mouse pointer over an `#include`, or place the cursor on the `#include` line and press Ctrl+period: + +:::image type="complex" source="media/include-cleanup-refactor-lightbulb.png" alt-text="A screenshot of the quick action to remove an unused header."::: When hovering the cursor over # include iostream, a light bulb appears with the text that # include iostream isn't used in this file." :::image-end::: -**Suggestion, Warning, Error**: Include Cleanup offers actions it can take via suggestions, warnings, or errors in the Error List window. You determine which. In the following screenshot of the Error List, Include Cleanup is configured to show unused headers with a warning. Ensure that **Build + Intellisense** is selected in the dropdown filter so that you can see the Include Cleanup output: +**Suggestion, Warning, Error**: Include Cleanup can show Include Cleanup messages as suggestions, warnings, or errors in the **Error List** window. You determine which. In the following screenshot of the **Error List**, Include Cleanup is configured to show unused headers with a warning. Ensure that **Build + Intellisense** is selected in the dropdown filter so that you can see the Include Cleanup output: :::image type="complex" source="media/include-cleanup-error-list.png" alt-text="A screenshot of the Error List window."::: -The dropdown filter is set to Build + IntelliSense. A warning is visible: VCIC002 - #include < iostream > isn't used in this file." +The dropdown filter is set to **Build + IntelliSense**. A warning is visible: VCIC002 - `#include ` isn't used in this file." :::image-end::: +::: moniker-end +::: moniker range=">=msvc-180" + +Turn it on by selecting **Tools** > **Options** > **All Settings** > **Languages** > **C/C++** > **Code cleanup** > **Include cleanup**. Use the dropdowns to configure how you want to be notified about opportunities to highlight unused `#include` statements, `#include` statements that can be optimized (removed after their required transitive includes are added directly), and missing `#include` statements that are transitively included. + +:::image type="complex" source="media/vs-include-cleanup-option.png" alt-text="A screenshot of the Tools options dialog opened at All Settings > Languages > C/C++ > Code cleanup > Include cleanup."::: +Screenshot showing dropdowns for choosing how to highlight an unused header in the code editor, those that can be optimized, and those that are transitively included. +:::image-end::: + +The meaning of the options: **Dimmed** -Include Cleanup shows unused headers by dimming the line of the unused header file in the code editor. Hover your cursor over the dimmed `#include` to bring up the quick action menu and choose **Show potential fixes**, or click on the light bulb dropdown, to see actions related to the unused file. +Include Cleanup shows unused headers by dimming the line of the unused header file in the code editor, and as a message in the **Error List** window. In the code editor, hover your cursor over the dimmed `#include` to bring up the quick action menu and choose **Show potential fixes**, or click on the light bulb dropdown, to see actions related to the unused file. :::image type="complex" source="media/include-cleanup-dimmed-include.png" alt-text="A screenshot of a dimmed #include < iostream > line."::: -The line for #include < iostream > is dimmed because the line of code that uses iostream is commented out. That line of code is // std::cout << "charSize = " << charSize; The quick action menu is also visible for this line. It says the #include < iostream > isn't used in this file, and has a link to Show potential fixes. +The line for `#include ` is dimmed because the line of code that uses `iostream` is commented out. That line of code is `// std::cout << "charSize = " << charSize;`. The quick action menu is also visible for this line. It says the `#include ` isn't used in this file, and has a link to **Show potential fixes**. +:::image-end::: + +**None**: Take no action. Include Cleanup still offers actions you can take in the code editor via the quick action menu when you hover the mouse pointer over an `#include`, or place the cursor on the `#include` line and press Ctrl+period: + +**Suggestion, Warning, Error**: Include Cleanup can show Include Cleanup messages as suggestions, warnings, or errors in the Error List window. You determine which. In the following screenshot of the **Error List**, Include Cleanup is configured to show unused headers with a warning. Ensure that **Build + Intellisense** is selected in the dropdown filter so that you can see the Include Cleanup output: + +:::image type="complex" source="media/include-cleanup-error-list.png" alt-text="A screenshot of the Error List window."::: +The dropdown filter is set to **Build + IntelliSense**. A warning is visible: VCIC002 - `#include ` isn't used in this file." :::image-end::: +::: moniker-end + +## Other configuration options + +::: moniker range="<=msvc-170" + +More **Include Cleanup** settings are available under **Tools** > **Options** > **Text Editor** > **C/C++** > **Code Cleanup**: + +- **Sort includes**: Flags `#include` directives that need sorting. Choose the severity notification level of the message that appears in the **Error List** window: **None** (feature is off), **Suggestion**, **Warning**, or **Error**. +- **Style**: Controls how `#include` statements are sorted. Choose **Ignore** to sort without considering bracket style, **Quotes** to sort quoted includes above angle-bracket includes, or **Angle brackets** to sort angle-bracket includes above quoted includes. +- **Case sensitive**: When selected, sorting compares include filenames case-sensitively. When cleared, sorting is case-insensitive. + +:::image type="content" source="media/other-include-cleanup-options.png" alt-text="Screenshot of Visual Studio Options with Advanced filtering, Sort after edits, Sort Includes, Sorting priority, Style, and Case sensitive settings highlighted."::: +::: moniker-end +::: moniker range=">=msvc-180" + +More **Include Cleanup** settings are available under **Tools** > **Options** > **All Settings** > **Languages** > **C/C++** > **Code cleanup** > **Include cleanup**: + +- **Advanced Filtering**: When selected, if you call a member function on a derived class object but the function is defined in the base class, the tool doesn't suggest adding the base-class header. Turn this option on to reduce noisy suggestions when the symbols you use come from base classes rather than the type you directly reference. +- **Sort the #include directives after making any edits for include cleanup**: When selected, the built-in sort-includes feature runs after any Include Cleanup action. +- **Format the #include directives after making any edits for include cleanup**: When selected, the format command runs after any Include Cleanup action. + +:::image type="content" source="media/vs-other-include-cleanup-options.png" alt-text="Screenshot of Visual Studio Include cleanup options with Advanced filtering, Sort, and Format settings highlighted."::: + +::: moniker-end ## Configure Include Cleanup with `.editorconfig` -There are more options for configuring Include Cleanup such as excluding specified includes from cleanup suggestions, indicating that some header files are required so that the tool doesn't mark them as unused, and so on. These options are defined in an `.editorconfig` file, that you can add to your project to, among other things, enforce consistent coding styles for everyone that works in the codebase. For more information about adding an `.editorconfig` file to your project, see [Create portable, custom editor settings with EditorConfig](/visualstudio/ide/create-portable-custom-editor-options). +The Include Cleanup feature has more options, such as excluding specified includes from cleanup suggestions and indicating that some header files are required so the tool doesn't mark them as unused. Define these options in an `.editorconfig` file. Add this file to your project to enforce consistent coding styles for everyone that works in the codebase. For more information about adding an `.editorconfig` file to your project, see [Create portable, custom editor settings with EditorConfig](/visualstudio/ide/create-portable-custom-editor-options). The `.editorconfig` settings that you can use with Include Cleanup are: | Setting | Values | Example | -|--|--|--|--| -| `cpp_include_cleanup_add_missing_error_tag_type`

      Sets the error level of add transitive include messages. | `none`
      `suggestion`
      `warning`
      `error` | `cpp_include_cleanup_add_missing_error_tag_type = suggestion` | -| `cpp_include_cleanup_remove_unused_error_tag_type`

      Sets the error level of remove unused include messages. | `none`
      `suggestion`
      `warning`
      `error`
      `dimmed` | `cpp_include_cleanup_remove_unused_error_tag_type = dimmed` | +|--|--|--| +| `cpp_include_cleanup_add_missing_error_tag_type`

      Sets the error level for add transitive include messages. | `none`
      `suggestion`
      `warning`
      `error` | `cpp_include_cleanup_add_missing_error_tag_type = suggestion` | +| `cpp_include_cleanup_alternate_files`

      Suppress messages for indirect includes. For example, if you `#include ` and only use content from its indirectly included headers `winerror.h` or `minwindef.h`, the tool doesn't suggest adding them. | *file1*:*file2*[:*file3*...][,*file4*:*file5*...] | `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h`
      or
      `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h`| | `cpp_include_cleanup_excluded_files`

      Excludes the specified files from Include Cleanup messages. You won't get a suggestion related to the header at all, whether to add it or that it's unused. | *filename* | `cpp_include_cleanup_excluded_files = vcruntime.h, vcruntime_string.h` | -| `cpp_include_cleanup_required_files`

      Specify that usage of *file1* requires *file2*. For example, specify that if you use `atlwin.h` that `altbase.h` must also be included. | *file1*:*file2* | `cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h` | +| `cpp_include_cleanup_remove_unused_error_tag_type`

      Sets the error level for remove unused include messages. | `none`
      `suggestion`
      `warning`
      `error`
      `dimmed` | `cpp_include_cleanup_remove_unused_error_tag_type = dimmed` | | `cpp_include_cleanup_replacement_files`

      Replaces *file1* with *file2* during Include Cleanup processing. For example, you may prefer using `cstdio` over `stdio.h`. If you have a file with both `#include ` and `#include ` and you consume content only from `stdio.h`, with this setting Include Cleanup will tell you to remove `stdio.h` because it replaced the usage of `cstdio` with `stdio.h` during processing. If you don't use the contents from either, Include Cleanup will tell you to remove both.| *file1*:*file2* | `cpp_include_cleanup_replacement_files = stdio.h:cstdio,stdint.h:cstdint` | -| `cpp_include_cleanup_alternate_files`

      Suppress messages for indirect includes. For example, if you `#include ` and only use content from its indirectly included headers `winerror.h` or `minwindef.h`, the tool won't suggest adding them. | *file1*:*file2*[:*file3*...][,*file4*:*file5*...] | `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h`
      or
      `cpp_include_cleanup_alternate_files = windows.h:winerror.h:minwindef.h,umbrella.h:internal.h`| +| `cpp_include_cleanup_required_files`

      Specify that usage of *file1* requires *file2*. For example, specify that if you use `atlwin.h` that `altbase.h` must also be included. | *file1*:*file2* | `cpp_include_cleanup_required_files = atlwin.h:altbase.h, atlcom.h:altbase.h` | +| `cpp_sort_includes_error_tag_type`

      Sets the error level of sort-includes messages. `none` turns the feature off. `suggestion` shows a **`...`** squiggle and adds a message to the error list. `warning` shows a green squiggle and adds a warning. `error` shows a red squiggle and adds an error. | `none`
      `suggestion`
      `warning`
      `error` | `cpp_sort_includes_error_tag_type = suggestion` | +| `cpp_sort_includes_priority_case_sensitive`

      When `true`, sort compares include filenames case-sensitively. When `false`, sort is case-insensitive. | `true`
      `false` | `cpp_sort_includes_priority_case_sensitive = false` | +| `cpp_sort_includes_priority_style`

      Controls whether the sort takes bracket style into account. `ignore` sorts without considering brackets. `quoted` sorts quoted includes above angle-bracket includes. `angle_brackets` sorts angle-bracket includes above quoted includes. | `ignore`
      `quoted`
      `angle_brackets` | `cpp_sort_includes_priority_style = quoted` | + +::: moniker range=">=msvc-180" + +The following settings are available starting in Visual Studio 2026: + +| Setting | Values | Example | +|--|--|--| +| `cpp_include_cleanup_format_after_edits`

      When `true`, runs the format command after any Include Cleanup action. Useful when you have clang-format configured to sort your `#include` directives. | `true`
      `false` | `cpp_include_cleanup_format_after_edits = true` | +| `cpp_include_cleanup_sort_after_edits`

      When `true`, runs the built-in sort-includes feature after any Include Cleanup action. Useful when you're not using clang-format to sort your `#include` directives. | `true`
      `false` | `cpp_include_cleanup_sort_after_edits = true` | + +## Suppress unused-include messages through code + +Starting in Visual Studio 2026, you can suppress **Include Cleanup** messages on a single `#include` directive by adding a `// VCIC-Excluded` comment on the same line. The Include Cleanup tool doesn't suggest removing that include, even if it appears unused. Provide optional justification text after the marker so future readers know why the include is there: + +```cpp +#include "Header2.h" // VCIC-Excluded: needed for the ATL macros used below +``` + +You can also use the light-bulb menu to add the `// VCIC-Excluded` comment to a `#include` directive. Ensure that Include Cleanup is turned on via **Tools** > **Options** > **All Settings** > **Languages** > **C/C++** > **Code cleanup** > **Include cleanup** because it's off by default. Then, hover your cursor over the `#include` line, select **Other Fixes** > **Suppress VCIC002 in source**:: + +:::image type="content" source="media/include-cleanup-lightbulb-suppress.png" alt-text="Screenshot of Visual Studio light-bulb menu, showing Suppress VCIC002 in source."::: + +The `// VCIC-Excluded` comment only applies to the `#include` for the file. Setting `cpp_include_cleanup_excluded_files` in `.editorconfig` applies that exclusion in every file governed by the `.editorconfig`. + +::: moniker-end ## See also diff --git a/docs/ide/include-cleanup-overview.md b/docs/ide/include-cleanup-overview.md index 423b16a3440..6fbc7528e65 100644 --- a/docs/ide/include-cleanup-overview.md +++ b/docs/ide/include-cleanup-overview.md @@ -1,7 +1,7 @@ --- title: "Clean up C/C++ #includes in Visual Studio" description: "Learn about using C/C++ Include Cleanup in Visual Studio to remove unused headers, and transitively add indirect headers needed in your project." -ms.date: 10/5/2023 +ms.date: 07/13/2026 ms.topic: "overview" ms.custom: intro-overview f1_keywords: ["include cleanup"] @@ -18,10 +18,10 @@ Include Cleanup is on by default. To learn how to configure it, see [Config C/C+ ## Direct vs indirect headers -First some terminology: +Some terminology: - A direct header is a header that you explicitly `#include` in your code. -- An indirect header is a header that you don't explicitly `#include`. Instead, a header file that you do directly include, includes it. We also say that an indirect header is included `transitively`. +- An indirect header is included because a header you directly include, includes it. You can also say that an indirect header is included `transitively`. Include Cleanup analyzes your code and determines which headers aren't used and which are indirectly included. Consider the following header file: @@ -54,15 +54,15 @@ int main() `myHeader.h` is a direct header because `myProgram.cpp` explicitly includes it. `myHeader.h` includes `` and ``, so those are indirect headers. -The issue is that `myProgram.cpp` uses `std::string` and `std::cout`, but doesn't directly include the headers that define them. This code happens to compile because `myHeader.h` includes those headers. This code is brittle because if `myHeader.h` ever stopped including either one, `myProgram.cpp` wouldn't compile anymore. +The problem is that `myProgram.cpp` uses `std::string` and `std::cout`, but doesn't directly include the headers that define them. This code compiles because `myHeader.h` includes those headers. This code is brittle because if `myHeader.h` ever stopped including either one, `myProgram.cpp` wouldn't compile anymore. -Per the C++ guidelines, it's better to explicitly include headers for all of your dependencies so that your code isn't subject to brittleness caused by changes to header files. For more information, see [SF.10: Avoid dependencies on implicitly `#include`d names](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#sf10-avoid-dependencies-on-implicitly-included-names) in the C++ Core Guidelines. +Per the C++ guidelines, it's better to explicitly include headers for all of your dependencies so that your code isn't subject to brittleness caused by changes to header files. For more information about the guideline, see [SF.10: Avoid dependencies on implicitly `#include`d names](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#sf10-avoid-dependencies-on-implicitly-included-names) in the C++ Core Guidelines. -Include Cleanup analyzes your code to identify unused and indirectly included headers. It provides feedback based on the settings described in [Config the C++ #include tool in Visual Studio](include-cleanup-config.md). Feedback can be in the form of error list warnings, suggestions, etc. For more details on the feedback provided by Include Cleanup, refer [Include Cleanup messages](include-cleanup-messages.md). +Include Cleanup analyzes your code to identify unused and indirectly included headers. It provides feedback based on the settings described in [Config the C++ #include tool in Visual Studio](include-cleanup-config.md). The feedback comes in the form of error list warnings and suggestions. For more details on the feedback provided by Include Cleanup, see [Include Cleanup messages](include-cleanup-messages.md). ## Unused headers -As your code evolves, you may no longer need some header files. This is hard to keep track of in a complex project. Over time, your builds may take longer because the compiler is processing unnecessary header files. Include Cleanup helps you find and remove unused headers. For example, what if `myFunc()` is commented out in `myProgram.cpp`: +As your code evolves, you might no longer need some header files. It's hard to keep track of these headers in a complex project. Over time, your builds might take longer because the compiler processes unnecessary header files. **Include Cleanup** helps you find and remove unused headers. For example, what if you comment out `myFunc()` in `myProgram.cpp`: ```cpp // myProgram.cpp @@ -76,15 +76,15 @@ int main() } ``` -In the following screenshot, `#include "myHeader.h"` is dimmed (a setting described in [Config the C++ #include tool in Visual Studio](include-cleanup-config.md)) because it isn't used since `myFunc()` is commented out. +In the following screenshot, `#include "myHeader.h"` appears dimmed (a setting described in [Config the C++ #include tool in Visual Studio](include-cleanup-config.md)) because it's no longer necessary since `myFunc()` is commented out. -Hover your cursor over the dimmed `#include` to bring up the quick action menu. Click the light bulb (or choose the **Show potential fixes** link) to see actions related to the unused file: +Hover your cursor over the dimmed `#include` to bring up the quick action menu. Select the light bulb (or choose the **Show potential fixes** link) to see actions related to the unused file: :::image type="content" source="media/vs2022-include-cleanup-refactor-options.png" alt-text="Three refactoring options are shown: Remove # include myHeader.h, remove all unused includes, and Add all transitively used and remove all unused # includes."::: ## Add transitively used headers -We could choose to remove the unused header file, but that breaks the code since `` and `` are indirectly included via `myheader.h`. +You might choose to remove the unused header file, but that action breaks the code since `` and `` are indirectly included by `myheader.h`. Instead, we can choose **Add all transitively used and remove all unused #includes**. This removes the unused header `myHeader.h`, but also adds any headers being used that are indirectly included via `myHeader.h`. The result, in this case, is adding `#include ` and `#include ` to `myProgram.cpp`, and removing `#include "myHeader.h"`: @@ -105,9 +105,20 @@ The tool doesn't update the comments, but you can see that the code is now using ## Best practice -Don't remove what appear to be unused header files without first adding indirectly included header files. That's because your code may rely on indirect includes in a header file that is otherwise unused. Add transitively used headers first. Then, when you remove unused headers, you don't get compilation errors due to missing header files that are included indirectly by a header file you've removed. +Don't remove what appear to be unused header files without first adding indirectly included header files. Your code might rely on indirect includes in a header file that is otherwise unused. Add transitively used headers first. Then, when you remove unused headers, you don't get compilation errors due to missing header files that are included indirectly by a header file you removed. -One way to do this is to set the Include Cleanup setting for **Add missing includes suggestion level** to **Suggestion** (**Tools** > **Options** > **Text Editor** > **C/C++** > **Code Cleanup**). Also set **Remove unused includes suggestion level** to **Suggestion**. Then: +::: moniker range="<=msvc-170" +One way to do this is: +- Set the Include Cleanup setting for **Add missing includes suggestion level** to **Suggestion** (**Tools** > **Options** > **Text Editor** > **C/C++** > **Code Cleanup**). +- Set **Remove unused includes suggestion level** to **Suggestion**. +::: moniker-end +::: moniker range=">=msvc-180" +One way to do this is: +- Set the dropdown for the Include Cleanup setting for **Choose how to highlight missing #include statements that are transitively included** to **Suggestion** (**Tools** > **Options** > **All Settings** > **Languages** > **C/C++** > **Code cleanup** > **Include cleanup**). +- Set **Choose how to highlight #include statements that are unused** to **Suggestion**. +::: moniker-end + +Then: 1. In the error list, make sure the filter is set to **Build + IntelliSense**. 1. Look for instances of "Content from #include x is used in this file and transitively included." @@ -117,7 +128,7 @@ One way to do this is to set the Include Cleanup setting for **Add missing inclu 1. Hover your cursor over the unused header. From the light bulb dropdown, select **Remove all unused includes**. 1. Repeat these steps in your project until all Include Cleanup suggestions are addressed. -In this brief overview, you've seen how Include Cleanup can help you remove unused headers, and add headers that were indirectly included. This helps you keep your code clean, potentially build faster, and reduces the brittleness of your code. +In this brief overview, you saw how **Include Cleanup** can help you remove unused headers and add headers that were indirectly included. This process helps you keep your code clean, potentially build faster, and reduces the brittleness of your code. ## See also diff --git a/docs/ide/media/include-cleanup-lightbulb-suppress.png b/docs/ide/media/include-cleanup-lightbulb-suppress.png new file mode 100644 index 0000000000000000000000000000000000000000..d539fc19cdaba63c54190bc81dd2014fae814f19 GIT binary patch literal 806130 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%0A@4QJgfu!0`3^p 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�H_)MtC(VF5Q& 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 ILri0d?6)F#tHVeXiKYO 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 literal 0 HcmV?d00001 diff --git a/docs/ide/media/other-include-cleanup-options.png b/docs/ide/media/other-include-cleanup-options.png new file mode 100644 index 0000000000000000000000000000000000000000..7406930a549efa23a8e5b66dfa21eb375313c172 GIT binary patch literal 43097 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

      !*Ew32?>5%AfyQi#VJ)xf| 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 literal 0 HcmV?d00001 diff --git a/docs/ide/media/vs-include-cleanup-option.png b/docs/ide/media/vs-include-cleanup-option.png new file mode 100644 index 0000000000000000000000000000000000000000..5f45bb9ec305b557c330f59d8149789159093995 GIT binary patch literal 33656 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 Date: Thu, 16 Jul 2026 10:27:11 -0700 Subject: [PATCH 568/619] UUF Fix for "Create and Configure Visual Studio C++ Projects" (4 of 10) (#6767) * UUF Fix. * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update metadata in Visual C++ projects documentation Removed author and ms.author fields from the metadata. * Incorporate feedback. * Fix moniker. --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- ...eating-and-managing-visual-cpp-projects.md | 75 +++++++++++++----- .../media/vs-2022/choose-console-app.png | Bin 0 -> 37342 bytes .../media/vs-2026/choose-console-app.png | Bin 43085 -> 40760 bytes .../build/media/vs-2026/output-error-list.png | Bin 0 -> 26186 bytes .../build/media/vs-2026/solution-explorer.png | Bin 0 -> 80543 bytes 5 files changed, 54 insertions(+), 21 deletions(-) create mode 100644 docs/build/media/vs-2022/choose-console-app.png create mode 100644 docs/build/media/vs-2026/output-error-list.png create mode 100644 docs/build/media/vs-2026/solution-explorer.png diff --git a/docs/build/creating-and-managing-visual-cpp-projects.md b/docs/build/creating-and-managing-visual-cpp-projects.md index 2441a8b327e..f72cbf8f850 100644 --- a/docs/build/creating-and-managing-visual-cpp-projects.md +++ b/docs/build/creating-and-managing-visual-cpp-projects.md @@ -1,29 +1,59 @@ --- -title: "Create and Configure Visual Studio C++ Projects" -description: "Learn how to create a Visual Studio C++ project, and then add code and build your project." -ms.date: 03/24/2025 +title: Create and Configure Visual Studio C++ Projects +description: Get started with Visual Studio C++ projects. Learn to create a solution, then compile and run your code. +ms.date: 07/15/2026 ms.topic: concept-article helpviewer_keywords: ["Visual Studio C++ projects, creating", "projects [C++], creating", "Visual Studio C++ projects"] --- # Visual Studio C++ projects -A *Visual Studio project* is a collection of code files and assets such as icons, images, and so on, that are built together using the MSBuild system. MSBuild is the native build system for Visual Studio and is generally the best build system to use for Windows-specific programs. MSBuild is tightly integrated with Visual Studio, but you can also use it from the command line. +A *Visual Studio project* is a collection of code files and assets such as icons, images, and other resources that you build together by using the MSBuild system. MSBuild is the native build system for Visual Studio and is generally the best build system to use for Windows-specific programs. Visual Studio tightly integrates with MSBuild, but you can also use MSBuild from the command line. For information about upgrading MSBuild projects from older versions of Visual Studio, see the [Microsoft C++ porting and upgrading guide](../porting/visual-cpp-porting-and-upgrading-guide.md). -For cross-platform projects, or projects that use open-source libraries, we recommend using [CMake projects in Visual Studio](cmake-projects-in-visual-studio.md). +For cross-platform projects, or projects that use open-source libraries, use [CMake projects in Visual Studio](cmake-projects-in-visual-studio.md). ## Create a Visual Studio C++ project -::: moniker range=">=msvc-160" +When you open Visual Studio, you see options to open an existing project or create a new one. You can also open Visual Studio without code. -1. Create a C++ project by choosing **File** > **New** > **Project**. +::: moniker range=">=msvc-180" -1. In the **Create a new project** dialog, set the **Language** dropdown to **C++**. This filters the list of project templates to C++ projects. You can filter the templates by setting the **Platform**, **Project Type**, or by entering keywords in the search box. +1. Open Visual Studio and select **Create a new project**. If you already opened Visual Studio, create a C++ project by choosing **File** > **New** > **Project**. - :::image type="content" source="../build/media/vs2019-choose-console-app.png" alt-text="Screenshot of the Create a new project wizard. The Console App project template is selected."::: +1. In the **Create a new project** dialog, set the **Language** dropdown menu to **C++**. This option filters the list of project templates to C++ projects. You can filter the templates by setting the **Platform**, **Project Type**, or by entering keywords in the search box. -1. Select a project template, then choose **Next**. + :::image type="content" source="media/vs-2026/choose-console-app.png" alt-text="Screenshot of the Create a new project dialog with the Console App project template selected."::: + +1. Select a project template, and then choose **Next**. + +1. On the **Configure your new project page**, enter project-specific settings such as the project name or location and then choose **Create** to create your project. + +::: moniker-end + +::: moniker range="msvc-170" + +1. Open Visual Studio and select **Create a new project**. If you already opened Visual Studio, create a C++ project by choosing **File** > **New** > **Project**. + +1. In the **Create a new project** dialog, set the **Language** dropdown menu to **C++**. This option filters the list of project templates to C++ projects. You can filter the templates by setting the **Platform**, **Project Type**, or by entering keywords in the search box. + + :::image type="content" source="media/vs-2022/choose-console-app.png" alt-text="Screenshot of the Create a new project dialog with the Console App project template selected."::: + +1. Select a project template, and then choose **Next**. + +1. On the **Configure your new project page**, enter project-specific settings such as the project name or location and then choose **Create** to create your project. + +::: moniker-end + +::: moniker range="msvc-160" + +1. Open Visual Studio and select **Create a new project**. If you already opened Visual Studio, create a C++ project by choosing **File** > **New** > **Project**. + +1. In the **Create a new project** dialog, set the **Language** dropdown menu to **C++**. This option filters the list of project templates to C++ projects. You can filter the templates by setting the **Platform**, **Project Type**, or by entering keywords in the search box. + + :::image type="content" source="../build/media/vs2019-choose-console-app.png" alt-text="Screenshot of the Create a new project dialog with the Console App project template selected."::: + +1. Select a project template, and then choose **Next**. 1. On the **Configure your new project page**, enter project-specific settings such as the project name or location and then choose **Create** to create your project. @@ -31,7 +61,7 @@ For cross-platform projects, or projects that use open-source libraries, we reco ::: moniker range="msvc-150" -1. Create a C++ project by choosing **File** > **New** > **Project**. +1. Open Visual Studio and select **Create a new project**. If you already opened Visual Studio, create a C++ project by choosing **File** > **New** > **Project**. 1. Choose **Visual C++** in the left pane. In the center pane, a list of project templates appears: @@ -43,9 +73,11 @@ For more information about the default project templates included in Visual Stud You can create your own project templates. For more information, see [Create project templates](/visualstudio/ide/how-to-create-project-templates). -After you create a project, it appears in the [Solution Explorer](/visualstudio/ide/solutions-and-projects-in-visual-studio) window: +After you create a project, it appears in [Solution Explorer](/visualstudio/ide/solutions-and-projects-in-visual-studio): -:::image type="content" source="media/mathlibrary-solution-explorer-153.png" alt-text="Screenshot of the Solution Explorer window, showing source files, header files, and resource files."::: +:::image type="content" source="media/vs-2026/solution-explorer.png" alt-text="Screenshot of the Solution Explorer window, showing source files, header files, and resource files." lightbox="media/vs-2026/solution-explorer.png"::: + +If you don't see **Solution Explorer**, from the main menu, select **View** > **Solution Explorer**. When you create a new project, a solution file (*`.sln`*) is also created. A *Visual Studio solution* is a collection of one or more projects. You can add another project to the solution by right-clicking the solution name in **Solution Explorer** > **Add** > **New project**. @@ -57,29 +89,30 @@ Add source code files, icons, or any other items to your project by right-clicki ## Add third-party libraries to a project -Over 900 C++ open source libraries are available via the [vcpkg](/vcpkg/) package manager. Run the Visual Studio integration step to set up the paths to that library when you reference it from any Visual Studio project. +Over 900 C++ open source libraries are available through the [vcpkg](/vcpkg/) package manager. Run the Visual Studio integration step to set up the paths to those libraries when you reference them from any Visual Studio project. + +For more information about consuming a library that you download by using the **vcpkg** package manager, see: -For more information about consuming a library that you have downloaded by using the **vcpkg** package manager, see: - [vcpkg in CMake projects](/vcpkg/users/buildsystems/cmake-integration) - [Install and use packages with CMake in Visual Studio](/vcpkg/get_started/get-started-vs) - [vcpkg in MSBuild projects](/vcpkg/users/buildsystems/msbuild-integration) - [Tutorial: Install and use packages with MSBuild in Visual Studio](/vcpkg/get_started/get-started-msbuild) -There are also commercial third-party libraries that you can install. Follow their installation instructions. +You can also install commercial third-party libraries. Follow their installation instructions. ## Set compiler options and build properties -To configure build settings for a project, right-click on the project in **Solution Explorer** and choose **Properties**. For more information, see [Set compiler and build properties](working-with-project-properties.md). +To configure build settings for a project, in **Solution Explorer**, right-click the project and choose **Properties**. For more information, see [Set compiler and build properties](working-with-project-properties.md). ## Compile and run a project -To compile and run the new project, press **F5** or select the *debug dropdown* with the green arrow on the main toolbar. The *configuration dropdown* is where you choose whether to perform a *Debug* or *Release* build (or some other custom configuration). +To compile and run the new project, press **F5** or select the **debug dropdown list** with the green arrow on the main toolbar. Use the **configuration dropdown list** to choose whether to perform a **Debug** or **Release** build, or some custom configuration. -A new project compiles without errors. When adding your own code, you might occasionally introduce an error or trigger a warning. An error prevents the build from completing; a warning doesn't. All errors and warnings appear both in the Output Window and in the Error List when you build the project. +A new project compiles without errors. When you add your own code, you might occasionally introduce an error or trigger a warning. An error prevents the build from completing. A warning doesn't. All errors and warnings appear both in the **Output** window and in the **Error List**. -:::image type="content" source="../overview/media/vs2017-output-error-list.png" alt-text="Screenshot of the Output window and Error list, showing a syntax error for a misplaced colon."::: +:::image type="content" source="media/vs-2026/output-error-list.png" alt-text="Screenshot of the Output window and Error list, showing a syntax error for a typo in a variable name."::: -In the **Error List**, you can press **F1** on the highlighted error to go to its documentation topic. +In the **Error List**, press **F1** on the highlighted error to go to its documentation topic. ## Related content diff --git a/docs/build/media/vs-2022/choose-console-app.png b/docs/build/media/vs-2022/choose-console-app.png new file mode 100644 index 0000000000000000000000000000000000000000..067815d8e0f88de7d2dbe9df12499240b240e604 GIT binary patch literal 37342 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 asbEP-*5g8-szUf2gxE9br&&)l-~BHGhunw& literal 0 HcmV?d00001 diff --git a/docs/build/media/vs-2026/choose-console-app.png b/docs/build/media/vs-2026/choose-console-app.png index e74f21d38f58fb75bce216ea8709a93246ddaadd..934f106be49cec016bd1ac37a90ae51054c692d3 100644 GIT binary patch literal 40760 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

      F-c$k_H?%JaOz*RivJlkiZf{lngOX4b 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 RR~6U?Wxp4XtFZOC`VZs}pz8nt literal 43085 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 z zr=9oy^!8VBu}}hR!#p}K{?Xauzgsl^1K~5(Rzx12(Cza17)VT_ZqPz$F?*;T_}zac z5K*LAvm=x*;5GM$e!pj)$(p39$jEbj8mqJ4#*4AkexwWb8hpPv|{dzB6)J~(8{oifhzbHRytKC1YM)gN+TlA~Bavu! z_w42eHhM66Hraf=dR_NM*1PV;3My=9XecZ!Y;%^r z-fw3hP)-HHQ`#FD&g#(}^e=Jlz%tLJO~TRapP-=3>Z&8pZ*`}7hFM00+j`!_p$r+snr}p{q6O4E$YfKm|sk7mary!qPM(3+P98@>1s__#nk9bVg5yW znC689L|;dgHcX_yPi(UY0AoI<_Ptj-|7N^E2CVZ-c+1?IFV>TXV|su$8GwC`Omj~k zBc%Hx)vU&Ma8pvk*A@3r)vLB<=z)J;d|0+hH-|Mdb zEwbVQ>9wAud{?I@Ig*K3i^)$<=JS2wVHT6cC(ih3tsjMj=he|sCbw%H4DHk!BNLk| zINnp=tN#C`ga2O(pYk$m%5KP3>8_LX%vr2H{@sq%#Ej#T-?X&m`jDN+t4g7m=Y@WJ)@o#x!l=5eSim=XPYnNW) z^y<5?4a45NtfRt}=UIB=QF`%duHS5MFNdfXwY5Ak`E~E}1xafzJ>-D(Nd-O tyxkB5o?~?N+Q!Q$Nm{e6I{A^(wCVK!%L4BfF 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 diff --git a/docs/build/media/vs-2026/output-error-list.png b/docs/build/media/vs-2026/output-error-list.png new file mode 100644 index 0000000000000000000000000000000000000000..f75a320cd7cde95b30507c7c9c42d60e2f2b6327 GIT binary patch literal 26186 zcma&N1yqz@6fX)YA|fDC(n?DWh@`+M3?ePvprmv+%qWU9NDhs}5K__&(lK;*cX!Xs z`|yA7ee2!3?pp6G^vs;^JNwi=`|RIup9%b+C{6H?>LC^u7Jt(tq% z&a9Un=_wj~Aovv#`5BR)wduonZ!994MzVw{hE55#I`*I!>@m(N{iD3Ig{J^c=k%`ewXmzGH}4qFo9!R08s zYtQK_5unOIfi`P{HFsA}8f9*-sL`EndAIY6kAzWkPoAVw^?V}lp3z+je=zKhnx{P7 zdkvBPjtTqYq7GF2HC?KR5n>fGm^0}*URQSVkm4g&mXqVFCi>YPm4v-FGBacp^YCA< z{Im*SdK?BH0-mW(C1}S+skY+iypriw*{$j9Xaa zb)nOqcu%mZjeJQqH-Cqs^-R7Ol0Fv+D(ogrx*=1ATC9}DZ zk&lGL=I_{*WeIH$1`F2C_-pigU!RsT9mMqD$E%^-lxPs#Jw^CZPLI0-t zg{sdT<>MIgrF&IK@tRtv2bJd=sQnbb`nlO9TOIM+s`pD& zFz!w=W@fy(;JHY?zsU)~I71zVv3Nl-dn~vF2B`XXvuNR#vd1&0huPX)xImR(Bx4qh zoFt@zB+3qEvc;T%f{ZTr!#kXVvZGhohVoUOcdT4B=VCI7F(|hpOAFsJs%G3NSM z+hS_bAe#`Gz#3ymm#r*mmf|>`c)Ju>_(=z72kD;M!TgveIyP5{aay$|Nl9y z@~8YLAPvWzjwXZfZ>8vKcwyYN6=lOtq<*p&ZCU`@$Z0z!kDL6^xaE@9U!Ci3a}4AIpbJ32+7_ZK(f&PJnKcN{D)>pbT6}4FtIMxubQKt&yBAUkEj7 z8~q0X6;pjzM>!#C*Nh&Z>y!jU1GPYK^i+d7@=Pe4H^i;`+4zS6i89JufcVbeNFcQo^D zN527E*FFAMReV5Dd_*jS$t$jADR*0RbD8&cHUFjoCSj%b{c10d<$d5gmJmxFY-Ta! zz~jforC&wiZP^#s01&N`)>+z9Xw|>9tm?hhyPdF@R2W|V1LWRDXNAjcTUcch*Z=ZA zc!&Rcj*zspu_<>U`}dlpH{JjNS-b0Y2N7wzNZS&zAr@AwG2-9ucd{8Q zX6&!743LfN_C4&ge9pjt*-1_B08E)Dzb(@JJPHXIlY`U9?`%q9NQ1t_$U}8uVq&TO z8TeU9u4ze(lKJoPa6B;F;knm$#KS*cpJXU8Pd7=uau{FtjHzQ|ZA9jeK)dk5lwuN^ zIFJ$dqvh=>c_0u{YPTl^8_0GUT$Sk%o)nn`lwT7J!}_RJ*0WvnPl0}RqV+he^8 zml-;{{hP})UO(X$=h^x=B`z~n@|iD~|9L9XLp7G!y4G6$#pw3@`(Gg-xa<5zWWYO4 z)Jx-6V4Bc4V8owLXa_ep!g9S&Q!fFf6MA06YZIHa@Qf}7Pd4GSkl>?(OGiT=?S*Go zV!sTSC`9LDaTX*`(iu>)ILt=-H(=p8JGc5Z?F!lK*6!7{KWAXiV`Dt09HKj1d-9f& zxV-FfTKLSnEmw0KxptX59MwpU0Jdkgi%pY5pydl`df92uclTp=2&2!*Ifeq$$9>|? zo)GifCDtQYV&hq^xZ#OnZ#>Aj{A6GE>iVXFm>C$(&z+XY?X_nGWHzHI5%Tk;Q!F`F zqOJ|%3!CR<{ou;4wd-DHLw~rf5l~mEGpIzn?^iW9&gWID>VdDID38gKqWUK<$sdg* zhMHB&CU34%4uhXFq<_J~h(8s9xOiBksf^A;UCd6l4cVpPJt=s>u{X1+0UNb?dq)pf zi{_s8PMg_XuH50{qQBEbLo`?>DhQwa;!dwffh_u{!U z@*aOyk3$yVab9jpD&3CMW7;4{_b+0Z-sh>@U}Wk|;07>z_xo8`NOPu>$#hAyj-vLo zda+VUmzhd)ZQV2u9Kb%GQdP)|lbbJp%kW-F5Bb26`Ub@HdoABUn+ER+bJt#8hS8^+ z_N~^vSnZb^ntN_^r|KRk3|)1wZi*ao#Ms3%Eeea_yC`~9E8`BQZ#d3HhtL~n;4Agp zEbOK2l=&>jZ-(591bxuYr89UUc<_->AwHs(a{#=H2r@Oh4>uT$oJF^Ock5s8ZmFGF ztsdMKkFJBb)Ry|f*A;JGc#3X{76z2j`@cI(65|%(INxv^Tt;Bl)z-ouaVk$15`!AW zMbb(V9z-xa zRg-WBS?>&BH(?Q>s_G zIy@IcYt1(%s6ey@_>zQJrtm>7vs=4=DjT^YEIuGW)Vw3+g9Zf@#RQS#58JCH>R>c5h}O;wySzU0^R#@b^sn6jBX6?^Z1pl=&t5HAj<^ z>&SISrMJpPDk@6(wX94_jAKkcaN4Vco=L^KE3Z39W$p^Sn!A|%ip|F!j+uqkK`wT2 zFm7(fD+E|yVzj^wObptURlsT1DfWI$cg`E(=l=F{TbZ;7F63qXwEX<%1L?a=FhPD1 zUI{H%Y3YiH?FY=gCy}2P+nh)+;g0q*80y!$^B=X1%f|EuVmYfBn9kw;FX=gX1~e$g&sQT5 zm^oA=tGbF_^x1n1CH*V)J6M1EuFk{Zt1HnCcW#6;U6JliU2{ujDd1+g+Lluv4-+J7 zEyoFWE9D;INP7zO;ze?a9wta7Wd@sk+j9MTm>a0Sdpe8%c0Sxtp)2G-r5+8%74pS4P%h(9TH#IS#t-)-N|W+!h`isyM>{ zzxd}swto!8D(!g1)xVQ;EzfRrKOW63C}j2KY#!Bt5fizRu(+{Zg??|=Iz?r)$Uz6y zh_53~w#CuPwtJm_{iuwegza;45m8ruv089IbS+#xCUziiy@JzYY>^J0+DI71KWkQ& zs^e~D18xKf0R;(VOLL&{EOJWzfa}8TDAXpJ@1`s_Awxz?5t_Nb;lyU zGS{LINEqqGZit@kC+-N?nFvP9!Z_oow~h4L+fVj*RBmwc6Meg^mz=ikn962Hc3+*CwIV#OJy!KOJg07S25K=KG?UR(E)AfuzJq89(Zksj3YOhQw9;DX~v*-^J2PK;& zrqQ;~=?{;#Gf19{k#nm*V*NSGBc2k_3Hvk?xRB32aXs-a9 zhghuNdw=V-u-m2oP=+)#qh@be7SysW34wqvr9l0?1i`WP{AL!_@VSc{Y^*ob*;eC) zUEl}zd^o4C!f(>3*+X0&g3Vix-GHN>GX9O3=pX4*4|OxX z5^*wQN9xno(?W}^`yBVlhX!^8m&PYq@j7?g|?ov;qgTV7$Wh|zV{OLcvv6rx5BYzdjk;JL~T!xwi24P zShFMW`e{nw>!(juQ-SlL(+Ax$K~>V|6_cuS8E$xaWQx~5&cc|PB zK0LH_I2CZ@{)%hAXt)JU_xYks0sl`JEo#9Dz^_{X)XbQX`eVe$PpW+Y3>hW;A$<8=DkSIu@O@kI><20?BU|A{uh2-&@}{Fl7ncx1gAx;Gr6 zHt| zm0_>8LGLE&cj@ifjvM+9C#2@1y!g_ZS&5aw$QM~-a~m<>nd?r6G=%g#E{U!K*A zPko-pebNHk%UG?3M?QDPFYXl{;)yP7Opka!JNjkc{2t5s!=4vt9PYPRu7Y zBuq@yWG?r)YPc+UUjj8B@t!JtA3mjBR7Xyt$KBazk}T`W!5?qz722C$?3g>V*cU_u z<<@J%t&ASpBp?{3mi2jY>Tbka+jgdF|JhTrzzNrTN0}=jf;*0!2{kgG>QJOHH*6S!}ag*vs zugVgP)h&wK*v$BeU|S(>XV4Iq%vm@8DsZ~n{hQ?Jj~KI6kc&y$8AjC^p_@=Y+M!kP zyK!=r%In7cirzAA?x*<30XtQ8Fin5#*lYzwe%IEasZUqa(U%uZEswOxn-Ju;v(d%I zjn$otAI`?y4ekUz?Mbi8EOizL%#MgKNcXcEe^(ZU+G)f7fv`FV@X(9i-%5LxR;U%H zvvwx?89cfE1G0-+3pz=YghdOujj4Y}W(Nk5oC?anOkV3yMdomxR=vtQcvwH%d4I%^ z1Gy`>nucTM%%4!DFHL^7MdkqAH9s`?fygr=gj`~Knxq|lbvH>{JG5Q|4k`V`j>5qW z-@4{-{U~phI8FsaAS?D=AelUpEs$OUU5ckZ*j&Lj(^!H3xWRn1MYS0osn;s_b^Rc> zIfL>YT@3OWNKJe6vY`hLn)n2SQ%<4#I^iTS&TS5DGJYCKSN^?*@OGU+4 zv$l0=XD%L$ciIt`_)wvZwz*)0*3X^eQ;VkYA@2S6Z=+&Y1y?nwRHRO~?+B4@*Eg<1 zg3fPzAP{VhpfyW8kP_)`#uqa7udKduF2L}DCiu-UyQ)#qs#Y&Mjv`ZHv&KxqR!?=R zFlVtcB1Z>7V3*e^mcXO41`XHlFLDo-ySs{CD-KS0RF3*S*WY|+DMv5^mxZjvs<7|( z*u1B?!rx7rd)zEfPn3P=PkzD(sOAmDr|yd%IH;4AiFhbJp@QL?@k&2>%o-VsZt$N4 zXkOj}BGRk9Bq-bWfI>Tbu=uM8sv&=J*1g1Q{!)nQ!iVR?gLyEs`m`JtCr(h{SnRCE zYhP!C)lm>w{hhG~F@E;k+{?|*<^cVSG1>5rgq~vDtht7IzX0Ktjw@H_uLMK-n&$A; zY=Ttw?lWeFL-1o)11nBHq z1LmIHc8qy0sHI5N+S=}tJhi@Tby@6f&qD>Zal#a?L4s*wiX9a74f;ArpLULbnayH@Hrp$FaXndp}Zkik!FV$j#1XNme2F;fzT9%Y|_El*|Pw2^Umt zTBX?OJvjdKSuaR;5+H=mq*g7wOeawqZuz-8qu^}0bEQTcIo#oKg*M3Z&0%V)EWsTb zdC~cyADaX_=MsQI?Y7-WXIwF6a_F-bUG$HIO`STJtpN+>bcP%UmXR6U$*PcSjJSHG zM*I74_Nc+xKCy!u7Ra>7tIemf@|!HrFgm+(jQ?@O!NedoaxR*i{$wo}%CF8GMUn=eKgZd|WA19t z5+%&n&MiY$-XBJu~>aIKDbXp ztlWs>->!P$U`7sV^DPKBD?WgdXjbNWpV==fCx)47tE*O>=ksn}xwpY8TtOg<@g!7b z4B-x-`gKfF1{q^I8R7(*>RvlnMCa)`yTLCVTGWa4yHe{}6e7f*>4^(FWbXKnxVhxU zQonqZlRbFNx6w<1GBbQ!w@*Ft!6m2NO{M~kF_^fa)BcokoG^;|by+XCA*v`k7a%Nu z1F(!m6rrDeUg674Ppgef#F)y6GY2t&F^Xe{lsppwPyP;0Zd}5#4fG~WP<=U<*LO5X zS1l^^UpAQ@_g-rhB>KFDr44^&+d9meyx-cvG@BxLR(F-mRx{N5_{q9lu0&fEhX+2* zv0JC1Yh%z!tUYqZuI~xQo*)B*gD$04{N^$lZ0l^dqr|#y+!p6nPdsZW0zcfruRM%--CYlV|}Y-Zc=7d3Cy}`r7kQY3ymFEkl1( z(LutPU9BP{CGDGsX)`CPkvGLhZTd$7Aq5HXDBz5Qz8xt_g%_FDPH|PvORx}S6~Q7< z_XU~yY?crgKjL%^B|X|wYw9tZOet4(5rxhLVVo<>V)Za&ri|`c|DdA@iIb3St~e+x zglSP?(yneH>h7fhsNppIO2rqXsG)cx*YklTt~T-vM~)Yp<2veoYtLZ;=jGz?lZS%# z8#u35OB7Lc0()pW5-nTsQ|F{d2Q-C8+9G{vizX|w-w1ia(@>$?mVz)ZT-<9Spkn(1 zt^?tjb9Q$SpAkd)a98{6ym6}n^rLiAp?)n3=Go&1XJ&G#>pvS%O7BchI`Kg~B(|fY zRD9cR?-aBcz3jJ6c8|=TbnRa%|Li~Q%R$?I?eM)Z^wZpXtgPPrAY&_IzBf^j-seP_ zoUcp=%`WDDM9mOK4I3eefv1$hz*64%j;Y_nTtpmJ{!WFb#$^lJf6%PK-ePaQn`jU* zJEmG$z{V4k>2^7y{vG$>YOiAncj=GTv_|iO6gI=k(149m@P4M@Sol-e=eOW;`G5fT z21HQS2gHop(4^^C)H_HUm@t{chWNw25+~YW!&5NWCTu3cuU>r2^*XfBIfhwne{+#J zIl1)qaP7vu%qh1@Rh+W=ixOKK_YZgZZ9o9WWcpVW7(yzZgEBsRh|Z(-X99YEDvffeti=4-pFiA4nD z0IRSQ6$61Z=xPi$>nqXpK?fzdNEp(AoxqVG5#y*TQ#o_?BoL=7itO#~fN8L1hy8ob z_bJ}Y5+_?v85l&8Z<^4HL)XxRi^RyGgm`8~OF@}ob-w2eNB9ODb`N6=9<6Ouo5nEP zFlO@psCb(7dTX*Y+k#_leH|AEC!%~wPSxF9?V8a2J0ABfi#^d!2IXvY4Ld>8)w0SH zioVICK~!KRM~Ly`93o=k=?!%-XgbEuZvc+lARR7%J#AukCgzW)-)BG&8!o)Dc7}!X z4zUoG0nGOoAF-t+x)hRglx{Dw~dfo9mSXyf%LlOlAZbYP{PUHf$qz@LUm`ZS4VQ|()5TP`Je!M=r-4r!1vDvQkJ%46%{KAd9j?e zkNk0$D-*S*@XlVNOO~VhQbsL1uFm)Ew%M^JDkB&XB;4F5yOr#vuT&rF-N6zf_1dSu z4H;l{G()dVk*Z3?DcQ_r6E(LXS}gr1Q~z6FDgQJaEaYQ0@Fol!KNbjZ0wEwu(YwQ3 z>E-34zLg6=$N<%{-@J*iZg9ATN`K#KHKK-QlO?${U(rJ|IcRUC(gcn!BiDkC%oM*g zzLU!?{0|DUjd`I>f#{PWB{4B8lX%>)N6lU8MZv2c&3O%w6s|B((OD8exE_2e9((~g zKtP2LA;mkOq6xfqi@A~89YVs%fx;sZv}W5|x9w;}opu;H`hIg)(@-}1Tyyug0l0mW z;Ho6!ZqscD#2GB$DNfumJDURlc6|?k*#>1e(Etx>n72ECNTaanl} z5D>rQ3pNd>1EQXx>zhjdW=+~O`67~pCY8z>avR3Q5@N5TkM#Ku(YD;q-7l|_x#Pf^ zZvZp)jwR`NknqS?>RUwnD^bF`D~ni8$&Iu8zX*->!~ddre^~$~14#e(oMRSTh)z$T z6ty`9f>no2?r#Aq80!mTsfu^*NqS02QgjjxEXDErq+Us7oX`W#fAAJ-`#ik1)+uLI zwp2wn{#TrY0ls6U=WPfX>x+vn|AKDWmx*6F^brfzZ|8@Ld#+F4P!K7vCR$z>av$N>QfFvy~ZAD=~xwd(W zO}Uqi%3cJcw6Cx4gML;(y*BzpL_`3#u*Tfp!jGVGbg%q!{C7RFIf%Y%DGr)gMM_H&Oi0y8yRspA~sk=tY(b%xKh(uNmgWy64r`&vtcf4ocIz zxVpMJI+j3_wZ;br4;Pxg&BHLLz1iA&uk#8Q7ohHr)cGUsE*)yyyjiQ`BK7|o?(6Hb zwYBBu=GJGdV$!}wBqmO`5P`k-=fre1J9zc#Jx9mX2Ri!lfVDsC5&_d!Tt$?m(o3IS z908)myw1vG)boF778#I-g6PXoV+j%J$1_ZeQKG<~!{?Kt{lYr0;x0$#C(75SSHrp} z=;YEkw0vl8=H#Xj{sI`JcG_~t`RmrIXTIqUhL~n=eYq8E9BjE zyW4iZF`|dE?Xg}ZUrOpFoR_!nE)8ttO}pvld|>zuj-P^NpcQpde$6-r%_Pi{1%vr*;r5St{MAGAMK`~2u95ZYT{uu!j2}8 z3N7=X5TVz;@yv#XeJ1+XHavxM^!>LmKqX$|Z%@>YE zhBpm}C4951_O|`o&&Mu`z@ys~F!zGD;f;&7wl>bc1bi?vb2(lEY@1zzA+uQAf@8}M z0&#J1a;^the|hmDeKIb#8W(>&KF;u_>^h>qGO>^~7iJ%e;j+}@Z@poQX~XG~E$4}= zs~K`3OXaV4Q`-D)u%`ZD$#1K@dogVxFSNNhHl<^BNIj@N1X&Y{x$qo7Egf82TV3WN zB4j;^wBAf}>pfrqMl4qa&Xw(E!w*Hrq(vOTMHqDY*xY=m0`>L>neF+W zfptv@G!Jdcjq(ZI&U|KGDNg0Y^g1Kk#9b-TOl5G?pZsxz(|&`P=b2Tb#{7YgWusu& zhW>JEw^Uhmoi|Og7Udsn^ACG^g)%sRKdzxM_Vq5VS#N?A1ecKJS$b8K&~Rz#pF&!_ zxmveAemPBfi?UM6?Rtv`8&$>)k82~2@nbeR=CJ;|^)`)IP2F6Uq@+Ax`}a+=uUG&Z z+pF{vjdY(EB&kK*g#}0FOD~7%TIxA0nG#;e2IF!)0Kalr>5O2c_~6Z1Or=jwMrMIt zp`f5Bjjn&Yr(y5`E#%(O7~kpG83yCXu3X*PWe_xI$sN@p*{_@*C=bdk>~_20F-zFq z%=orz-OgM}vfZovMz?MxiDQ5b4@tXsJ>qS^uL0Po*De58MVLhVm~ zp5V9(k+*aV>1tZ_+OHpBHdX{PCke_xS+fT=henRC}x(aLQo8}b~oHSzHax(qB2*2JYQeXE1x_f9Q~ z)pcq)zp**_rHM;ZF=}X|*TCbRKQW1o)n&%?(3LFDhaS(Vr?`ZVQg>~`w0d6| z{H`9>m_NY?6l?v|(5vH=?B=u1}2w1O%pP9%5;@psrkW zHPdu+<%k)&a8WGLDArZ8PJUdeX)&9Fek zy?pD}jq&hiuV(^}cCp>Oc!AAVz{*~q?edAH0$V2-!qDs7EB%0S1Dx7uUwV0yBMcUQ zy)L~d$Y(2%YCa^4=G&jKX73k_ zg?tq?I{Ge=#&Z%kq)%@IjqdIg=W;$Px?;}iaNpok>rvu-Bxi2LlkSZFkR)$u#>9{khGO{=O)e)u2<1w7 zlP&OIFTf*#h@W0VJ3i-#PA?^bTni+;ElO|&;NF#0`rhP7};)0P9Dg4=sN z*)1VKO~*AcAz{vAJ=qVRBH?G+K8J8+VM-%xy*(o-+sCjg!aweOf5zT*&r0IQa!0ti zuiP3ViIHN$tFG_)oc=9~6Sq3zCs;gL^lMamh}UC?2V!WyNlY`QEs9877(S8pz|zu= zr!$)h-QQ9VlF@8+KjM)iN5-pvx~p*>AfuE&)!Ocwqe6R!qcD$wmXX|fgk4E^it`1N zwz2Jp&)*AodCO6e+pDRt=<2VqX_1FShXax6eJYiwJkQsFy$YNm`Sf~Elp8g(*;54l08{jS-^+-%eBPk&!4lHm zLPoG873#RS{&6yBE(KMY4x4J+hWVP$=$(eT-tx>pDsJ>uykr6vE`Xh#yZ`7Of24nQ zrICB?!mzW`{RmHYPdPhR74J!%rx)G~y*tL|cDlTdEAJVCW?Y|-eG7P{suoZRr+aAF zm>R(L`K|j}Ys7XOv$n;AnS{K6pUwB`S=iJt<<>fHMO)H28#sfajSY zXg4>Kt7_h#V&nMZ=+Dr342{{EJLBdOG>xaRk6&!_yg+=ve32&Z#wzh7i{*Z>h zJ($t)_v>9l&rJktihJ{z%VsnCaEteF;QOm+suqo^eM(u+))7H|)4<2~m-f57VvjX8?)abr~7Nl{h!xU;v9bW*hFaN>AK2h!29#%s$ zQ`4?vUZy<7Jh#$IQ4*sX(Vd_5bZjmK@jqs0#xEXsD zWK`fQ3gbKoiVmP^j`;$EgN&T9Y$J6%e1humlm6t1B&>{t|rGj`O3lE#{ z`qE3xn=4AK`o!LKj$?CC)YW1N>SVU-`UPAiqGJ&+pGvA0M<3P1kUTHKkC4y7vA*=wmlL<7h)Rro9gECtaPLPxfZ70VpzF zWC%N0_&U06_5y%3VgP>ny;}k_h9$t-D6MCDW2&n={SBAsJ|WHL44qq?_a~&+jy`Pgxi)C1&t{7ZK;5{&A3w@K94GjG5BuLgP3 zJ-E8My1c!N88jC@d6fzwtYs3BKze?yZJ) zb%1i(CIVvAb>mG{B2jo66M0*}8 zDyUDdzmi~|zZ%Y_uxo~dZl6Tx5E078%=hFJ~tD<6T!X+akqd!SFBi=w)mzs{Q5T>6o z1wz5;iFq|}sY+88tB#K#9>-M)e6JXkZ|e_i1BjIqNbKxE;o%^5_Lr8knVFdY!YF@S zT2bLTmaiR50UB%MzPhC$uxfq*dO%J}$}=1j6GJUv&BNYGBj)L>p%LpC&~*<^?|sm; z(iL@DWToh>ov=d^lSH$+9HsaBWv{bS-f3nY_bE+wEtj#Zui=|-D!-o$AtS1(h7(xfcflWO%HMOwtv4tVV_nX{Hmm7rl1p?;I10Ts^c2Or4{;KW!+D^tqDiq?h*k@mVb3ET3aI3f* z;sSPaGebj1eXsXwu}ZR$~E>yL1@M;3Mu-pR>uG9cvQH(+T77>Z+=l zMi}hx7wr3mMn%h@YGAq2AIW~)H@GDsuxi(~wrZ@#xmj9)Xt;i@YjsTxRSaHuhpKKc za@BUGiWdxqT^ua7Ysk!T6$+56g7I77dP;WPAa>x&XIEJ0Wl4oRiDLrX&7>Npp8Oq= zaJ!}x{4A|?F54P5HU)T1%*(|cbWToAQALUIz*XgLQj#NOI;UKZ+HkseZE#@XW%jEF zr=4i4t~!r?SNeDZiG}tdI31(?PUI+B%*JU*WS{xC3i6eN!2x!A1>M<4KET4!{sqy) zcp7(6y6_G@R{G00xfV(J|851$9+lI<1A2mL8Y( zi(5&Er=_LI!MR84($;(8`5YV^8gGt**Vs$5Xy>ll?KVMn;Pz*_~k_ zVc}DtCBTw%b0^nDZPqTe4}%3X@iA`OV`AGQy)=N`sWPyId4`dQI^>j=Mx`**TGjS^ zx)8@MkQY*WG{0VDE%F!$!pve5>hs8EXNUJi{jRT14)8qR+XZwZcM3ZXKq3QkbI|j> zS%8<>)-l^|?8od|dbL^^DAk{r5b|CfWAaCk&a@!n;y3NxLwBL$U$(DLW4byB{p10ff=XptM7dFu-D%YiepzP{6&; z%PPCQHD@jw^LF=PH|D8dI%t_6IJxXD?w-3hcZ0>IvOAjUbPA9{ORn)PKYi}##CzvF zE$MfdbcQ4w2-M!Csrg8S$__vKM|Xvb9tHSu+$SH*(*)^LbOZAvUAJbsdi7^@RC^Ab zT$k?>D`^K8KG^|!dLt>-FWzA~?66sF?TRbp+(c8ONWXiy3b1hpu#j(#j*cqmEL~mQ z)#1@*jM(a62YHMUw)uzs_8;>r^tC;%@sj=G*urA|-6+5h7!n9XziQ~2)jY{Q1is8R z4rYM`#ja`K3LOa7$sJq!4PRmBWbvsELnC)PxHGU~z2Z&Rf>VVy^FCbJ3v+EO3|nLi z(|mtBd?wTV0qQnbBtc@^m3OLW9AmEZSsFJq!6o0k@smbjTzxh48l4rzRf{pSLY3D- zPI{v1Q$0$~yAPEJy>33~YWB)T6U6|snTVZi;rQ|4=iCDNiqqc9_IPd>Zg_(&i%A%g zMTiZUIJ_#0LfzUF)q#^HRv26PwG5c5r+zQU0oV ztKqolZ7+PFCq=f?z1j^E6)tzNc-{hsJrEB&IzFbRruKhC`Gk^E*u0NMP*4^9Ngx%k zzmYWmY1$u&kAJC_b}SgPOoJ6TAWC??WcSUiByeiJj@hK@hrlpIHnhG(wq^QPAA3)e z?v$Slnb5x*Aq)%?2GFE<7lQnEi3584V0N{nA2EE&3VclNlQJFEoGu(PS+#kgppjA} z(*GcmRypCizgYk}Pjg)k5w41^g6#iaHwRot}RI0pWoj8j-`#| zly~=X3oRox8p8j!CRVwI(6g0XjiS}_X;QtA*Od2EAL)k`b*m)=GUTE2T{n;bf42Fi z;o3NnxH4rJ%cQd4Tc#(0ko1DN?I*7o@Gz^=an2)3~1(pd{+ise)jhRV9 zMetyqRQIJyg5QJLeLfNp2pX+UJt}dyyUjk4U$)A7SE4Mdwz@jdBq%sooBf09B&Y0? z-f`NW+Sf*=CV$zB=w54D{4wtB702X6E<(n0ciNQ@cv#@sbXa zV<74xM9Vwa&Ni0o?$qk`HsJYpKbQRRI3hK59`H@kH|ya2sd6OCX)*Hr{Jkan3V4>T zxL8C|i%0*sMggGs46qyO?|AcP)6aainyt_+CUl#td$So0Z!BlG{4KZc$|trgi7s>h z_?MI6$`BQ3h^f^@rX!>-BS`K92HaT(v3lH-fwZ0;75z3Amy;#*02wOsA1RU2^_1(O zv`-wAqjZp~*+q`ShEQ4I)vMiWY9)4k?b96+28N?E4FyiF?(mQhlhQHramkJc#`>H2 zhfnt;({-fx6`Ry+kXF^+76WhG%o6yZb$;n$AC;g`^gKFC{I^YClJMo_r9dtb$06cl zTY$ynx%(P5}g znIju|5P3;M!yTHz#O&Y6F)^$=m6AJgHz)#oXzRD#MHsCmZSN7(wZMt&n$@y{a5B?zME`m@ai**RD~kimflk(g5hm zjrH~HSRs?npTOQFapc21ddbz0ul4%vuH%Q|3Ns@Y7njqsoS^dQd!%Jqo?fKG^qF(t z44xldX}X*yJbRKKXK(*-_)}T3K#pFv@0c2eg0RqA=6gwh#>{K$+;WGXebB^lUd_;e zT^|8dGsvJ$>oO6&4#rrR1y|lwXq(k6+R6QZRya(UQ*UD`ARe(};;lm~m3guKL~2Tf zT7ojWl@00L9Fk+Y+^O6ODP?_LdG7)15XM>LsY|EPMb0+MooM3;uDw`c&pK4;O|H0V z=cDEyc8S8(jHG%Jt!W8}T5+M-9lk~h;-6g>ed;@@ zk3^VIMZ&TF3uTRQN2s0TqF8Akn%|eRMufg*+BzMd zpb7QKv0-&iD2TWM#m#d3J)djK;@C`#Z}g%_^u)OkKk_tr|Nem&BWTqG-g{Z5e_q94 zL#kN-8*CEg+y1pLQLvtnFSD(#TRvDTK9L~e2m#$KBLj9&(=!eua-IBy{kV1J5iULB@BS$Yd$DkOWsUFAVVz(iM! zBmY3i$nT4`kfqU2=f2m<3A-qPZShI?4B6nLda-JV9!NxuL7CF~g^jnDZZ58bX$vCFec}82 z$kTETu3T|V6-{Qj0bnzJ1T_Gh21-Mxa#@xA}PgaAW}+N$#~XKWf*xu(V{PA#Lz-Wf@d2 z@N`sxp^&VrP>HU1AClW|N`+y`FX&91_n`hYhp*2%ZlaK&Y0*2%FT3J-x&EU3@l*Yr zw0x(@oh_kdI4}0hkeDf?w->&0INw(a=dOI*Ma|=uqMpycp-txxgy?s`@OKI-^jkt~ z)@Sa7#D^)AQt*UPU7l57jg(V31!IyDL4!Hw?n5GqRLljzTg}N1^gz&cS`%^scTKplqS>bBvLlxPTw9Ad$giCHW$8U`10fDYcPAQY;9cuyR<)n-|BFw z?c03xV&WGCkIA&RE|ng-wJ z)-^dvSUY$SztmXqPNKD2K@`y7(P9YTtWE!*cskDgJ9LVF@=F6vOkNpwo)_S>bOe=V zhdxy%F0c0_&~)N*)mkcTax&$U4E#Kzw|XWvDfULxQamNg#<^B(ImEC6 z>V14zhL8j0+Qwug@R|1kz$_{<5`9+L2%L=k0s_#pNpm1jX6SwBhgTgByFUqB)Cyk| zkIt?ag#6@^Bd4IxKLEm7`1COZW0OBwt-eJsd0ryX`(!kuO5$$%cw2|83_am`^Dp5`-#lN($W*1wG3{&47Aw#7=2wi=)iEMb{E62hqtJQ- zv^>KPrHO2V=RlM^a$mz2#q#NY-UTQ()Z7wV_q>#|QmgSvZr6W3vtX}tekKxGq3I}A ze>`3gMFftSUw!sMxV0NK4B%&NrD~IocdN>iEc;QD8P|CTy+$9yV{NJKLsQmkh(QMP z-1gj9T<_^g)=el?Z;<7wruWEHA;KUiSP2C4fY6l?H+LTrX|>i9 z55zq$0lFg+&^Hbah0cKwDTE||Va);M%F}t{pAA1M zC=Zq4m4rlNz7bFv@ENr}h(vUFKK96eA)6rZRpvyAo&5s=zL?Q`AQdkRLPsnm)pZqK zrt$2(ow#f0W!7Z(ZXix+5%lU3AY=d09;CBQI*hM^%1@vxrxDNs1k6F@QugufDzp z*;$o@hZCu0zQgJzAUxL$O1r}fQ4#M-U;2BA6jV%DDGj?}WSp$d7Pmhgd!JhAa};<3 z2Zd)!Le}=8m_d#L$#v;8A8bWDq-^4$^?Dj%FqOmVC?AHRotstkO0Ia~Wss?~z2k zKa|r&s@Z+e8hTkzx!oC6jgZ#iCnR2vSAOjVNZRNOjR&r%9R5q)fxtBifII>IPjJIH zcPH_6Zcg#HImOIFk8At!Sx5#$sRdKqm+*!i?Dg#DA--0D3QQb$r`cy43Y%NatMU@X zYG7AL$@013;UYLPdr48wQ8u-LJxVYJ81>D^T?H=3U&(j!chdG;qR3e;9zhO>r?r`J_En=?g? zd`hh}S6bnd8MvGtga1!;U;P!wwr$agSiZy>V}(aSu*#C%8j! zZ#==>o#5IDZjCjrUvcgo<9+wN@&15Uzg5-VyL!~xd#_b<&b4~s%C&dKs2~*pR0V+T z&mA+!H3^Zw+zSS3CU7ueO^#N^OJ1Tc1(bb)sAO?H5X*Ew3JI91EaTgk07tS((SS(P zyQUiQnD|>e8c~p{JNoHiytK6(0DTYu2+irn=<*%RZ>#J@1ZbpKSc21KSFxPi#ZD~D zYfM8V%74#JI1at)#2wNysvpPzkQ$2mfZ(({uxDAJ-rSMv-w;ab0UXG7@+*2kJi55J zm?ef+Qkh1H_BiuO72sRc#l~#i9HpFKuk#-L3qdIv5K=nYvD4(Fj8E$~a`O5_GLW%- zG>%(86f~uCryU4Gz<9HHgp~<2sK4<@+$cfSA2|ay3(XFf1@|qwZoX zAdteb{$gUwCEk7=sbwLQ0E5}wYzd8N>y}GsEuNL>8GD+Z+Z(6>Xx809)CgJpMO#0pO@ftlZcj%wUq^^oj$IkIU^Q z&k!*524j{?Nyp5L>3M*`^OZ@%;tS6(+-9T03@7Sf@anOXqd1GdajUKlE348X_l8fxUKJbJgpJPHc$y25_vjgyj^3N{W6OnKM# z@qF&80!Q~wbCqv}YFaqK`L2r-K6<7nBMbJ@sugsrDJcRlMqRZpP5+4g%04$<{}Sxh zo;EH44SdZa2T*m!s{h7nK&W({6nRwJ<0Dj%nrfPw1M5JA84nwqgT7cM3k~W|cYRxU ztsh$3pFN^XooM=S$*-hZ5UWlbZgX2B@9pCwz|T+Ry7La~vQyr@U!@8>A7r+bbU=e2 zBn)25Qk|znQQRpmb(u&#?}}4^%(uMJ@u9uZbcB(rkdyuWGC)fN9CeW_iymqK9;l$8 zKV1=(I*O$*%1864#8yA2HH3VxqYw0OGB|Q4l=CfHd;9~?34;#SGeJU|*;)KBvzn#3 z@(nBOGLdDoit%%JV!Erw_R;}dT)d}HxrkRsrh<)ER|36cTfk0`Qs%bGyPjNWFprTz%Cg-CngvJR*AcZy8> zQQLpXzQ4X0IW)sUr9&=SVW;MQx^}3%Y=|>oYuCN0(Yn=D!kh40!+LKCg{bx|KQb-@N5eU3n}Vw%oTx4A<$|aG?}cvcDSb z*85l{)9`drF~jf$x?JDDD(#q<=a7q<7geLHfL9wP>C*6J ztxER1g!?JCkM+eSnIv|EO2_1Gc)a{s=!Rj>jn#&KD7pL^=u1|eu?if?c{pqp=!1<% z8w79oxQKxKD4RstLp!yppx%)N`T{L7`_#P_uwK`TYb-AgPrjBv`IJ=c<3lqxMcG@XEj+EEK(=c%@*)9 z!H3d;lw!i{EcWCUh0!D2B}MnWf_%w-vANH#9oA}^X6|TCI_pQ7Be(oMD&(R2K*X!b z)^dB+0!-JAUhSg?cBTHNBX59F$`HrTyw9RcLx#8=^(VM1ZvxVP%w&dv2tH(txW0=Q z&s3YNnLn((o84G#rpf&zXpMRGid~11cYvT(`iJ+e@-*|t_$T5RIsnQ_;L~qKg*a2d) zIFEG&FK8(SXx2Dc)H1EwS~YXozD%r{Vujp$66i)qkSm{If9-=as%Tg;U3|^QxJQYR z=BD4H8lz`AN+|Yon_aVI!5Sdsw>xNvx5;mpFK7MfV+=VfuSC-=>=St!9yh53d zxiQ1ujqw2FmGsRYG*|OnZN#d!g5E@F)1qwBk6mdiE2E{+LPpp8h}G##6*`qi=H!+t zdoL5(2*fzJc~6ia;1b1Ck#G7AC+Ge5{3~a#L(t?`Cagii=aH!*>Fl_>{P!*-HjxK3&`LBj!%>h{A?Cdv!K(T<#%*?{V zLJ0|pXFZ$c9CHSil;O1w+(wwE!b(3kUiS%6*lk+_pTQDb+T(Gy2RnY{1B`X??*hc6 z(%!OmwKqt`$Qp_Gd#}`7Ik3gky6V^Fn1 zni^20*Q?d?l4<&JyX(sZ1|?HeTn5XKJ}d62N#(MyyR{R)zjs`90J>Q~RIBDKCKZ1+ zxGT7i%Uk#T)mlAf|0q`-ylVB0Z+_Tl!WI%f>*4&nY{(~a{!FaT+ zAOk@Vz$^f#XT51N>Yhi);{vhtTTt; z^DX96K*38dD5O@fsSW5Wf2ITKp9GPFXGB32@Nr4`p|?Cd5(UOyf!-?XonO9*NiA-@ zTGjqbjWhT;$)-eKzu5vWGv!}f$)yRC^P=}pBakJ#Z$63SR1st8@+?KQ^#zW+Vzy%+ zg2qlLMQD|*MIk)(`T^%a>_+Qj1(N=&2E=0rRj3kvlCRwE-;a&xp#SK>9#zq1Sq zo8eQ;mEK58Aeb5j4p81$6dX+{9A=Y1teEC`a}K=ozeWKLRZ&494x$#7l*9`VkZP4i z(g|-rEIJ^kZdC@1A1TIBa8x`O8+*9EeuWYyL|D;(uvM*dA|9((sL_c8q>w#TV`H?N zy()>?FZ=ABlyW^8zki=N4963(&l6Wdw~VCeP3+sR#wt5^tiYY~JQ-hou%&>nc7CCE zs@Xvqju5@yFR-7pC&`kqc!@hNq)Dk!!t|+HE2H``=;_$#Z{#I}5R3tgHS=h zo^|T6LZpg=qi=J!n;|C59UbOjO=;6F-F#9#ebl*Xq3(n^PyO23gca;RnMqecOjleX zN)}c)QOkt{DCie#N3(Epop3U?-2D9f%uH|7Hb8Fy92c8;>0O~@pM(JcM`3<`Pk%q# zE4uTueq94_r`b!A1DF8OL8HiJYo~*<$FKV{uZ?Vc`6JJ*eoakrS$e`td;YJ3>|V3Zvr+FjEw7bqjH4xH2Yf&!(kmqeVmie7R^urxc2AF6HZn(7q$m-;m z3e9p^?Kv*2_9!7g2M!n(ggIngZu>hIzzp(}hQ{&tL-^Fm4;N2phO>Ur73T~w797!2 z@yox(DhaeTwp<-#Il>rr{(cH;rLm=q*Qq*EJ9I7=<$vRl{9V!x@A9@c88n`?o=zh+- z88Z<_0yCApE1i3WO!@eQOjV6f#@Fj6LT2V4ET$$FCHqr_P#aAx_=%d?0foX(b#)EN z=bu@PZeN(bZAPv!deKadlRdR?{5fsjH}*)!WO{T@g1#iRu~%z-nOKO*T# za^FpdoXi6_8nK4jhy-?U5{Gh@Ci@ww1_uq{W4&!KJY zIG8-48+;HF4dphGq*=ff6z%P=H+JN-6WYIza=rG`K^N<@I}28+$6{~O#n;MGs4_Mb zVZE2E`efjdW%RcSlG@GnY@D^3wu|yEsjj6@*yHY7OyFMy|5TZicsYz<2;w%-Ml(?B z#w)GopA0d&!+)ejL05NjF&F67u>f`RZEJeE=Xs;u?M*Y=UT}}Q#+FcJC*mUV)CxgW z>}UcsG>a_9^w-*z-u#)C-D|l0P`5HU5u^d5Tg200r#uf}<;Pqzb^$d4%Q(rtxLwKS z>D1jsP|oziXS?@2zn!fw+pTMB-Q)uUO>$?g#e1eYpNgI~$7ruD7zkafGF?L6&e^>M z%x%4Z{9WhsdM_}r$4m>+OIVtHSpQa^~@N-4<`SpX@URwzvW7q{QmU7a_@Dq8@ic^LeBB$!S zg$hg?om=fNZM*FpVDOaD;+(5gLCtb+&h$=o%Mw{2^Nr4+k$W7RJk;?EwuY-gIaY*7 zdNoM$HI@CGI+8NDpl(IK$}Oiev3tr>F^@pSs)+sUW4UT^M=g7Lu|7v?EX4i;R?NzhnMaw(+g>~U#s0Yto39T5Eh)nRB}-Z ztnt(`E6Xi&H!vT=gbhErrv?UUrg@C2U1kT0F9@My?V1yb5?wfMR!N#F-~DVIo)D@U zk#4g!nby=m|K$Z;`k)hE%{7^LQ%XY|5pb)k|Ayj2mKj1JJU(Zr@P%QxE_%(M@gbaD zbdc3bE49bN%^ihDEr^+qAL2i~bQc=%_*|Rcke|3|rx<5t$yDAk-!bmrToUPo9OglA z(u+j!H|QA}$*{;anZD=I-30(n;8^7{P z)Qa(-K$q3}w1!{F+>Fb4@o~qRzBh1tpGDv3Jx`KJ$>}5(py95qDr*-_58(W7n;7ZpXlKej>7@z$t&fem)DZem2Neg&`u zah=%8?!CeZi)qcP&Z)Z0=7meu(a7B%&1=)UnS_bs^4#w$?&)f$!-!6hv@eluR67b# z$C?DdT(J4$c0Po)5V9FG&hhlPe(cSej;xGvD)AKiM&q~y4 zs>TPLz8Ehq20MPCbH6-C0jN-polFs!lheeCQUPSTftGig4p z>El&RkwW*M_=GSa?YOLe#W9N&tC`j&8#nJH@ChcUHi=vhFF3zn5;Y*w@2Om?!qnyoqvxsof7HF+>OQqiuE z%}~NYT=@3wU|6AM@i9b~59r-phKd;EWrCIR!aD8pIVcC0hC-Yaf7cIHA`9oixmIHiA3pP zzYWitXVppWT5kM#t%hJ(aPlv%vO5O27cWc%;3wfzF^bWs1b9#oczzoCNLo7a~l zJ*l|Nnt{XNq>#)480GU6BOontCgo_px?)4!uG~LmiijPk*gv47uJIg;XrM`+`SK-V zwbR%KdyHXiKztY;*>6Qzo$nr97{JL59xMH?hykvFUhL5jU;{(v>^PfF59$Wm*j@_- zZP;eWR<$!VmTSu+b&{Jnk)gF6to~gX5=cUvLVfMu$9$~3nuT~R3dYi5G2K3NkH-9> z_zLxAMt{i}req20&Ptn>*tC9Sj@re&7XkuEU1IgT&mzwB+31EnaH3i&Z>SzFK$e7w3? zXDaE-*dP|^OZQ(B`js;>ixM<7l_v2Yug=NUX2N{X zU^g<4$0;sj8028#ev7W-)2Lj_j$gbACVvnouV@TeNj}O&e%tR2&;3QG{^#yRyw57w zQOqr1YdndQlgw|^b_aUq&z!qYmWcne^e}umtuBMcl{4ndT9Zc|Z_)pR4<7|=wH;2{9g7yZW)GN>g3+$+;vjnzWDzm7E_Ukh|=_wV#hn+If42=?)^KO z0srrT&j0CK7fLr6+12=#8vjpIx7%StO_Z*svtI!laQK?rPHgeqtm)ibjgDPfoT5DU z)}>FC`2dZ2*~LPggJcg-%ID9>@ulEpfq~GaMD=|@uWa@l!wSpmFKwPXGL){)0$!&X z{`utg7j zsjZWQXEGKPz@3_^KN=s|+JoNGc6Cp&L|4v4k~T&a+maept~_|>2=Dk~t;9+dX}DrO zow87Xu#M6jQiMX;mrP`hJ!sdd;(cEmOyE8NmBn0y0O0Dw&b$8z&pI&(Iy2zBlv#GrrXqq>kvf_h`XG$(fCh}UB@KSI;Qi|U_VbG!G~Sjq&`}Mg%5}u z8CCJJy-(ruP9+)UclzJjhvO;AhJoUqf05s2J-xqXV4 zsJUkSMYuv#i-f#awb@gg0t$_am8C5WrKK25!hugFI3om-4qlj-iHZywacHw=x4D}j z<`IIfuNfQ_9rLmdYk0^uUgAf33GJBRRef&u>=|!zsFLMz>&t|jmH00_0u}k=WBQA_ zwT`<*DspwSQ{CS1zmsROHKpIS3D~YV9`9&zgbU_ehVmj)wZGqsm&r>4(j$TtE6BUL zm3wg>CIdkGI%-C@H^rKRr*ytsifg z&G%}F0H17I_9y!!DwU6z1q?nB6+^|AbJlCUafU1X*nRi;%{5RFNB9lC3@7$I3n(zR z6bZ-tM8V)7-(Kp+EB=O@reQTkvr1jAuMu^Me+{d?sn*;K-h@f+Q5*c44hS+-5H?ue zvH0rPD?u$n@F%0>=6#D2;<=bMGpOZ>e#cdX_04Kr>0bVzC%*s(Lp`1q34Y|Pdw>%) zbrNyGphiu~tk{nfq2JmZWI2rZ&(GSy;P8|8TSYu$SSF623vU^OYGXz#v1Yc0Wm0U- z7Q_>@Tz9~Izg@qG$9()8ns4^PhMhQ<)G^O&!~Bh@6YXm~JG+)QYRmb~MRHX1?Gq=W z0nZl1gBPlPiwk!&RF_u>(>uTZyFic!n4orrG>mRZqX5OE z%v?3_oD|y8S%7ML{Z`+jHuRsRk}SB4EN!j}_V0L#TphHRpnbhy90HRHOkgwplvAC3 zRaOdQuBJ3XX|r&q(tey{|JWC=qJ5A={xj)5!gH%FAw}%okYV=Ro-Ft5eT!AQEM=}H zjT*dYm?+`ensZ)I?@OFWQFovFAV}?mtGld4s`3z?76E?bCY!*z6PJ~aiR9&@Hlal* z4@ZfjA(JdLQLZj73MLx+**mwZWGym7e6d<+t;99FN>b;i0#e>AnkPfMBQo?^fm7}~ z3#g=?qO;VHkzEZd#MwQ_uPC4W=Al^TgJsf9%xPZqu;CkMu1YhMwm_6Jj7ITeG$s%Q zmzfujD^N96>dM?{KVqTS#`6_HuW=;CP&0s`j&R|6m#wa-mW_GbB9ueKK!!V8knRf z9-asiUMNOhddTQ_M0`yY3s??1I$IZ1_?0})lY6rCL};Q3bs|1okV**P_KnA6p95|` z{?-CUl=W3R?Pk)i2_vh*<_)Z@Z|2%KI+sjz1WLa3>i4|9-nj%7%o%qf0zx38&-2vAauaE9>#p9$#FqFIc4HtkqotwBLv<*T6)Li!7Dxi00aKYrETJ@@6;Uywu71FmD%c72F)^@EJZ%-M9; zl!t(ppY`{m8xmToVl|zAH#ptZx@%C2d5L#@fX5|!b5*j1Tc$5>x!7?1YqO|1IpK0w z+pOB)&T;iD0L2tgDug{LmxMt*-M4hjRA<+ox9edu&2Qx_`M39)PxqQCHtStW(yt*f zODrHtu?A9J00F>!lRMvnXW~Ec2`HrX`k%-m?-pC`3kq_aUkGgIAkb$K8DZo{UGM(~ DTnM|r literal 0 HcmV?d00001 diff --git a/docs/build/media/vs-2026/solution-explorer.png b/docs/build/media/vs-2026/solution-explorer.png new file mode 100644 index 0000000000000000000000000000000000000000..a6f561d740b4964fda5b753eb153538581e2f4d7 GIT binary patch literal 80543 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�T`wL; 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�HH9QcxmB1FB`ILc-D3f}V(QBg(6;`DyG4R}}G%9SdiYSuXNlt7=2 z*X8`=CZiSWf6*tePYXJ=VwS!46@EZQ`dQ6w?X?<@YkjWeu>W#BJw7=*rInCiBz>$!o!A#~ak6fj~3NcmCON0VFfd4fT zoF~pd{{StUL8Ims(47f%KI5?88Uq4ZUP8hZkkfo&uMUSyQq%_4A>2b z=kp)W;lHsoOmO=d&j5*3lSluCNeHXuBiI!V4i{W5sLjHNXF7Y93Fe4dvoTpV9Ea4Y zH7$l#q)rC#d;dNF=6-QqNKI7MQSn6ddpGPb*jr!{sHvdgX6me|0^1fi_-)HY@wdM3 zAa=u0>K^6O!SC0+@LeQ+?@~6d7nRz_#lCmlA6tcz0gkm5rB#jZB7{IRmsLY=H;M@Y zyM8-{4-031+3#Wum{i)NP@_XKZ{U_k79mnHvHq&yBfM= zL(r+`{resdzpeP*DHj}O(??4m3n#~(@j1&!*IdhH?*@SVM5HGhbwy`yuuT#UMWQqZ1*%#O}m`^8x%;**kxC? z$GAep28EhkEHBrX@}C)?G*=~Xtt}Bys$Q|~jFMEmWj$+*z0Bm$WEm$-`8k@W5=b7x z9t6`xH<^KEXWXC8|9r+m(WrIU1#RD7fu(__21pSi(LpsKp;+cyk00gRPCwy^Yx^To z(nLE)`c_0r+M&>ZB(1ZX;gKgLm8@~e1=mWXA_1w-9O~-bf9l=5%b(4Mb1CnFIm0@8 z&>j<%R7}?VR%*PA95y~C2p`_RJ5VM z4-LH1p+I9>*UA-Tl%mMxdc9=~PDfG)#<;9c8zt9+s+M0hRUrPn5*Gy4>0jz;j*lqx z-@i9OQ5#GGBi$u<{XA2oeNf;MpWO}8lJmEVQ`mBN^(8C5RG0b$2$tuM0EgEIx+efL z%-yGtbgaI1Q%9O{-TH`Ii7UGie1>6mAO79Bkk^N1S+PlJX%sa;dd0(^tElKk)xd?z zo@dhE^tbolq#PexN4G=aeOl&|PSi5Lr*mf&evGmPlY zM!;Abm`kWO$i=c)D;N`as3H^EC$hNKgW3P($BS72@uc(L&r?<(5NF7Z zq&S_)Kmam#;5!qYo$WAv5-sF_KsrCd(`&b{8BiPkQ$YQmJ6?f-^jmcVt^d7zB>z#I zf4zJ0QByCnT5x3btpByq0gz()i9(dt%mD#j6cp1i?VbD&Rd(krll~l}R z-#55z0s7!qd=XyI1N^iJL`4}s@!)=6gl!FaK+d&H2GBN4O-`O||CPeVp;ag zKcSqh32g%}Gf~TLI^f)sna!d+)Of&K4Q5+#RoxK7RNSFv?W1V810#b?GYSL6HrHi+lF(wy;uk3bib=4 zra_nPB#+yR@1Bp5pZ={(dHh|T!d^Z0A)KD4h{0`oA80R*D_JMSS_)z*i|p`1dQEt%bT-g_Y6etgf(81SMc>e7QkB6l-^P9a6>VAgMJDgAA2~DyJmp-24oe>I>2M;*(>nG( z-GdJ}xCiLK{N5TLWv@CL^dT8M<=4jONSnY4>S#6~o-%=D9pDK5kX+7SqN~${_|{I; zb(h?he1V!h;wC|>e@9sG>lhj3sXo}NMYT^1-~IZ6H7YY;FNx>8^cg?qt0tn?0EDu{ zhr^VQIT$Y<@sz@XG7=w&#rXYYa=6FMQ2Zbr%TFdQBOqrE)NJWw-1{~_Z+IXBfn4F} z!H~iE-g-B@-$r`y5%jq9x7XcC{VZXpmTKLa(a&IbZPeHe69icO%yv;Zi-*`HFmru<_uRw0$Unl8!qBRyp(NOu!;TZElXfG9z@h&894 zIRL-q51hI9F_WRXA9`NeL$4AVX6CU_aN76M)E;Gf^-8)6ZaOvgOXdqb&yv{e*5?Co zbKv1)Bi@5L5^B-6yncbibm5>KZ!!6piod6^;ss(;dCyi zN&N$?e235I3>5WzfAglB%eZq6!S$2kZhUnR8UfiqfwI{o?^TS-sE5||#MN@8i*s29 zL_nGkI-+Wk3(V)30C-dm7L>`t8boG8ei)6KC}z%)+1fNiApf9`SfH3={4`~zT$M*| ze6AoJZ#LLmmHt^rjd7<%0vzAhd$9VM06cWF@?EbF0zPr%L%=YDPXHkkp!xe%@D5Tv z{pW^%A_MwXBpkq&w!s;a@q}@9P)F2Y;wzMCIx1YLLP`;g$Nn?}@at6D_H!LCkf|{5 z_3qD~+-K>u?YP=3uleV4`axFY@k5a7QX4qa>(raW>o-WyGsbA5#0)wp1+{se9I&@N z1`{|1UCNi(c2H2Ckv6qWm(e_EYC-!NDR3j^WkxZMMyuu%Muyf9)VOEz;KAB7f$9{C zc!SNZ72o;xe}DL!16Z{45*t;mv}YFHfLsw?E{wB})fyyiE}++kryo@O-@k7&51=B^ z&4_+s^W-HYOf+3`W*sCKlHSC`MZ$7Bx>vzlV|8=~?4{dyGoZT@$wrSYK?hlZ#<5^Dw4 zJ*#OQAKGygWCdtp5fEIrDGi!j2?)p@^DK=qk8*eZ^esleF;*4$_vfoUOq5gWSQuDoD}(uari>Nk5m>_2z5(Z z9mWLJD}3v?HpUL?>}>n}JTRDj8gmQaIVa(B{6==?jf15X+L|oJkjAwyq)1Pwi9U-M zq`;6`Kd9Fr-Lm4@l3^D&78L*tB>`g!YNA%01_62KzPJIt&OrqaF!q^yb*{rXnRI;* zkr~k3{CHJ?P8|HusufHa z%ErH#)VRiA%E;94Ilrsf4qd#kViV8K%8Yy{hsr=in@tMHRR{^|NhCX9qcr!{(!jC- zr4PX9^y&ZXd-o!ASXht{Q86g0cO_#Y9N=C8I1wnHe75$gadjI-xQ-m{&(ZXZ%M(=A zll&_SH4*v(My!VOUBd&L)t`78(6nipER_a>qgh^u;sTM_*5Y-NQhzmc2`K-elVsoK zNOKNbbfjArEXagIdoU8?r|m1cm2H|CewgvrG?$S(U?9^R;#JEX0*5*5tmiHK$IxE9e6rNqk$FHX{#H@@RVEQcZ()( z`G7H#?l6e2;hG+MG8wiYv$@Z|O?f-})nFlnr7A9h8Cnm0LcbTh&&uHV4MpKw zhKNC*hvhR`LHEha-mK1TS!Q-##gMA(?Nwv(;}W)%9a-Dw{4<(8QJ2MkPlF6j^VL{Y zWX#Uf*Ed2@>{^aIUN}t8C8O`>CEJY2ZJg%doWH5>vdXEn;$B9Qd9;ZLlR=wIv!&IC zU5jOUfB>c%Uw9;wJ@o2h$L!aMwDnojSkqF%@yWY0yldM5coJ;!e z{cj*Gnp>;E+SBL^(*E|F{=Y&l&>Tl0K~I5I_<+8RoWMV|nZ=)+J{rf5t&M(u!TLBU z=Atn(15?gf4M#*&Fg_<5SuU}p+gMWxBrqNx2?u-fL*D!;6zT1IQ3FgPpep}$ta|0P-S75(eWiZ^D>gI_bV|M1f{D2N!+D`aQHU2!)5O7STZ4IC!r zTMuo=epgB=4*_JE2|ZW(Y=jPKi&bw9{~V|LWCWOQ{n1Sp>$8+9gYyXZ>qe({FW^(S zhxhN?4`=cFeU9AOi|;D$P@0_JI^G3#G*z|jgnHwGfaufVc}Xk{(gW?+e`%RN1C)N1 zw=4&WYbRD{R&F}ejgp@ZubR9c(=Gh7!wh8x(^_Pk8tIMA!mGutG5nj#Obka1@8XxW zLS#Ja8s1)B`2~}q1@87!TP}FE{>~4Yi2tU?>C{oqCf#c!jt_FtsNt_DbYEkX?FnPVy&82i9udma`yBfDzWBMxOsRqUB2x(c z+I=t@EbqcQZi@kbUn4W>ZG=5HiJQs0VAWYe`*h3q)JP}{g*oyIsmB9F*jB`#9TKD9MB!1TJxAOr>Z!GN4Avyf9ECBD?p{ z+|YV+OKEn1u{2@Zz~;a)trnEY3T3xQY1u;G4?Z5S6n0dhcb(K;Fa^^c9YZ z?K3N^pBNhYW&7=}?xW3Zp$F$?^wAoW*L85;y=+h?A%J|mOf*tN5lc*Vx&=E(Fm<>L z9e2>CURJ=3EA2xndC)tJn=PXBGKExtiQ+~uGw|g25G~3r1T><4bC4F-)?I~U6vdoA z=s@1fq^EF}8NPb`u9#-rQL&pm9nAerOCu6U2~)D)dW7~?$a5_W*lvR#D<3n7!%4Yi zhpoT^x_J{pY7-NVmi}c zg1#U9PVBn=)`P?Vv-T0TcR=qXmmS4z#7-{ZxLn1q)Ga$z4x!POdrQjhceC1pT-+id z`vjRxT}n^hhCMw(zjNAhlE$}}Mnp#r$4~jgB@go<=AN0%n1F)0(c4qhxLW#eTP#($ zf1Taqd@wN=Of#7kCu#jn2b*gGX8k?F3a6`2d7o#zeQK7<;Beg5`QY_-uh%9gQ{2m* z)-(ppZ&gVh!m@qSqD5xi`lN1thj~4esd#0lf(C{&aV9271tc z>C>s%mT1MPkxW;`g%B-Wd+CcB*`27p>FWxlgPLPYZ(7PtRT2h<`@d0S?DRas2y3yV ziS0~Krx9NqRwdwZZ<#cFAoz506jLf|i~<$v`{YZo9-AtIh$u+Z4GZ7A;a`m$j;M6X zQr~LsiQ*u~o9~(^46n(yng-=^e(Ht{N0YZMh}ma5%y|3UGgSWBs@uyQukzLCZNpUr zynIkYD;VNPIcka-i2TVdsM(U*BgoV9 z`{?}XZrEeLlA9C8e)IO+ zTO9_xCQi`+@&Z+@PgXXzhLts+ykdm!6!SSCOPd!3x*`S4*xXtu-9w6k0f$*Bi!nGk z`Ezs$mkr0DPOB+~s5q6MgJMn<+S zL>+x6MK4-w3pZ6cK16I4^!vMGw9-0w1}OT~Xjv)KCkKyQj=!)pb!C5xiv3og%qf)| zH-GK9fw^7ik&_zW#+&rQ-Px@!JUrfRkim5n{?Ncl-OtO}`a#gG^TC8(W|Rg3F)dbJ zP8P?4j)_qJ%j0wdIj*@peff_s&a7 zKq}O;iL%?{zH^WlA5}4QalMwsl5oxl#U&5vVtO9#`kgG!iEFeSU4yM0@=1cv*7guP zap>%9TinLNL!eB!t(VY-^RCb0X6O%DN)m^FSpN1n6y~hyCO&cpp|lx9x3QB&r$q?M z3UbGxycT^H#4jWmP&i*MXhTQaD{?dUEn+*%*=V&us=A0oaOXxK>3Ki5u^n#63gf`G zobg^qAlGd9ePfWO2f%u1_nCNdx;!#Pjs|(|1pi(7@09tCU&! zZ}THKxM04&B0)IZf3*~0`&V)ENAZto^p^uUDJhWZo&sM3d+($F=#eNTndIU3sn8cx zs9*-puGX^qcX0|OclE`>#4{k?n>akr{DSm=VCo}pkW6=g|3c<-KZ#-jnp)3Dh)nl4 z%Fu(xA$36TXCc_(?)7QaYC8T3Q{sHLF?qD zOu&n;k^w0+Il7!jKl+B|g0SQ(n^&I)!2GB-!ZaAzY2|(t4+h~qVM7A0uqf@zI#b@u zt(~`lPE~W# zpRu$D`rn)83P~BKVGl=3VRXUJaBI>Hk$+n6Dz|;-6Wum__|HSmfTJ@8gUiZ^I4!hY z3kUALmOiF{To!2$N8DNY6E%)AtA06Ze-2e#^d4MeO4c!y6I^?1+PN{S?ly5oxX<)E zAd7XenVD>3W5d;_zp#6u`bRV*>v(_vG@+7x96a`ZKMU{!ZL5=Z;iwf?N>-{U5|qQ% zqd?Bc>}1PFq(idi4zd;?rlkNIc%{#UmVt>b(+`X2GA2q5y`=O8-i+MpK)QPDTO_r; zEJsafz80yy++vB=sxGQ?2}x$UiZW;E(feY_xBTOrF?K088_bZ3q1S2g1ihJ%Lwx|cvCwi)qP#fY{DZ+WHk}~qe#SdlMqFSbMg&>&I-b8f zCVQ@tDN8LDX#Fvxc8IAzuW0s`;fScL#j@nBhBe)Y?!3ICj&ju3F$0l|C~Cv9*qSXG z1T_uis+j^Sp&N%%gA7eP^oQp(F{79wFH2cSI8zG!XLGO1%YFt^Xxd3HjPduVo{}*| zGx)yVJB&df9w&J$uwB{rao?xVl&n5*hJZJ_~1 z8Bt!4-v;kx@qqmN;RzY=Iy1U^e(=E5C1sJ9FSj8;|Q1S}Z^@lZ=<07Ial(sI$n4Rp~ z8M>m(%nYa)WefmWlK|HX)7(gyH6KvfF8t(qE2}eK*XllQpqBjs2LGg0k}gz*yx@3V zu7NTTWDLr8k#W7w2q-c!H6kCA$N~zyCZwjjT$* z(jInm3q**Q6%X%}t+^7nUoX^HtWKJeBdmD87<`sW&+R;tG3L&4G4$5nm9Q=!#Myd% zphr58ZrdL$3rvnf(>+L2{Ah7w&RZTF{jA4%621dJpLeD7Y6CZ_RF6#MWxNgS8+E18 z*x=9(iGx7q{Z{m`kx(;uNg0I*qktfFsY=V5PoQRK@BSv@kT>8213nMFvU}c|HY{6G z%lpgq%w9!I$X9m0TxD457L)B)Bb6i9u-Wa*NliI4&BJUr-nwvL>}H^uM*lWS-3++e zLc@Q&;3kVPvk;kHY5+af{bHOtnlURpIX!Iv5V0UPvF=Z506(MDdRXj>m9*uOioKB- z%xxQBHmGujjdg{U8aW1+(vuGLRjJU*D7wtkpv zBO)qN5x?8lQ8VN2kB&kcLgs%NNi?HP!HRm|t0V-4%8Yq@kI5r)XRsFssod-)XpJW7?9@7|-)TrQVoJh`yvGEEYH9 zbmNO@NHrv&BF_u-6;=dc77AFu@VzhPkVC~uN-Y)}vSXksii)zzv3bBW%gv~2Z)vCx z)ev@={5ZWq4Ru<2uc;gpM^3M?U4+~uROh4QE`5|Fb;a+Tnw#5uJ-EKZUWmWM;EHbK zEemFh^Xhd3z889+rv^ih>wGMa;gGLizZ3w89~6zCKz&imjop41^Zi=YH#^C|>5x;^LmJ$yK-k8TzSaG6fkLNGq#S$hPB^2IW^cE`VL z^8XGw{?+R2SImD4h)3lV5;b{k!f_~4$xDfc_yVyO*Wsn$j~eldFYi&9;D19Ft>Kpg zXPm+Wn5*9jK0`iOVh;b^=PB^tGTo~YvSE0vqX*LkNd6u~QM^5T_oP&l@Ujawp$NH% zH5W2}T3D|_*i_XItbk!zCIBSwQbf$GGZ^Bi3(LqXx|tN#LY)_4E5e*&q15KicImU4 zV0lraFLYlQR?nxG2SQ~RgBxLBevZ=Nl5ZZRv zQF1Tl_(`AHzj8?(%k`Fa=1>!slxdo3IbrHxcQc9>4O?dFT#7?q_A@RHyH`Oteg7a~ zw3TLOM~D@a*7u`MX!=-CP2?q(no2C6Y;Rd+uoF(!qHu?M3YX1=g~r{)3@fWw-Y_27 z1RmL*`knonGzowIlYaS*h@*J;sl!vH07k!jEtsbc?UoiREpjki|Dv17<(=bLmu`Dv z$>>~B^!Ps6)%TS-XxOn~k?)|mIjl`O;49fT({Q|m9_f1}*Fh7#%`1%J0%ZhqrgPLFaU z#5)lik2cBD)<+6i>J!k%WLsU{C7HywVE?pFNLW2#%=ESo(OwG;JR3sl5D)APWVo*q z-!tg@Qeu9^N(sghM(9KbRq3)nk}!3n_|}KTmp^Q6+QxBWpFDmLh#Xp)1ZIb0 zIF{%*ML|Sr<}>|txa?%tWZTczj{VwgET)3kdP?FUsGy#$cXd=#Q*(B{@O<&$CN2%I zU-AIbrTXc-0_+#JA+&af24NO^q=ryqqrp@>TTpImiCB|K4A3fZc2c@eo)0hyhRH%i z=<&0E3us*Lm`jHA=ZU7*apkBB@QB;@M4$>>jBWe>VIE7kFs<5i)PdEpQ zT=QYh$LXS)ugj!r5c<>a(f>kr-$KBfvG7hsq{2VdYStHDn9WqDcH0@A>2k!jQ$wL+ z>P?bwd()UXSgcU;%$zP)zZi}V7%Ij`S_>IFy+#=)FUkfBsfy_zbSWb#IRMMqPk7|- z_72(-ngF#simV5yVoi6KfS!i>7~S&Jj_Q|aP1w*D^Oq2C#4YfIfzzpbe5{$71=1ISq$ znVW08m+c+Wk0uKyohJ)SL$`u|YSorfgW0Zsh3E`I-KL$Xr98*6lf#@>F>_e*V(N z8XyNipD=c4qeCn#FzOxe(V zb&B`qVI{b+r%n51kvLmqIm-g#cZiB%+04#75@@ldG9*L?9RDGmy{ljCg%)&U)+1aZO9IL7Vhr^Z-8l--%L@`4W z7+YpB@30DPTtyy6c;-K8RrlTM%n*#n$)5rNL& z^FdIz&Vu{ZF5n8U>JOqic`YQ(^%SoeX(N!5C_6`nUezi+XYhOIiu+3u_Ah84qdLI+mW!!P1%jK9LswBQf z@4)qkS9L@lmV2TW9@f$$Ocg#IEc1NSaSXwe*b5ZhcAGM#)58Fuj*1S*n0A{d^J3^N z%8RE^QBsoUiNkOT;Opp4XaJr;Svd`&r)S$3&NRgHT+ia1trUkYdp&a2(J{?v8*6C& z@QY=km6A8h*{bcXU}1dR;8q8gu*h#S99-@*>;~h6lR??zl?%9m_i55(x_Wwk8>ae1 zayI-{Rv;&_c%yCbegzxR5%+f0w^orp;2_XX|ecCZ>*@aY&Uurl~b zVSuH;_O+7@M*Z(Q0RVR1Y8i0FGx8#DY zR~)t&N0bf?W0)C+{SmH-4D;Dv^$r|C)jxge{#SD6zmOK@KVp?8dhq_hw$FNB34yOy z1mj)16@q)gfJy%xj*~CX5yWSXq~N{QXQ?$~5Eb{Ak8ofP(?jXx$F?DjA}Lczq^(`+ z^G>bZ^KjO)X02-%{HL!-|KMD_@bN*Z?RAPd71}#G6uP2uALz`n<=pEXblpz4IN@)( z_VK)UwTl1Zqk7V^%QbjFjQ>tBSlgxK&_Zhe<`+06kv~s$5Lp;7(bmXv_S6r&ilwtd zrq^lMG*FXVIb6;T@@D$>u3x(<{&Yi~h0(&zHLm&lL<~pY$4|!Vy7nLRKAg1cIP3&Q z!>-Pr*U$IqSwhCL@7Thq>!(4zYpf77!Yg);EB19?m0VtmyMO{N4~ZX-4p1gnK#SeN z|BfG5d988@>G^@^t0#1YsT7y5*1Tt;49SAZyE9r+ai$-ccK^0`zRw#Y#;@QC zt>cRKR+lxhycWZ|o4k2-z)e}n=rM0T&jEojG!kIX+19Yy45-25YX0n9+BehH%vjj% zj_z&V(&!BUW`r;xeRn%^_}7x>YBW58xyw-0sB(q$OoMw|ui?&By>j9Ysy$*ziY9Sm z%qD@Z$5q%9D3cSLjKoyWLKr&V~@iQC61o}&hAa_Zd( z1v-|4(K*3US4Yr8@MK0BSuRBy;5Ya~wmVU(d~h zU-bbOl4g%3y3(xQD{Em;MrK8?mIEID0fR(r;G>__&w{Gcz^}~dE(eP?{Eo-*$wP(7 zEFFKiDbD789f%Qu>dR9A>z5+NzE^npUhu>feazXm8nIvxGLf*wLCjTm$8qSjZrq+7 zofvK3dYt~j@W#vi&&QTS9&0^SSBPzXSTg?_ZL@?)(3Wm?Go3||%jBWG&puuclR10+ ztAZKcNJaGG#qSlLVc2jxXT7{IS&6uupO}!(Gd9?xc~Wc_ zbM@D_iRJqzH)meFw{CdT5c9N|!$u;yLdwIgh!;akhm&YplaY&}LKV+(?$)VA+G|uM zP6l_Y3YYJWsE>d6!j^Ktc6d+15Lm))LKxgFRDph(!4y}Ba8+pnGD29QvyTO8bF+=I zn3x>(o{p2NUQZWRTuCg%CsVl_xAJZ8Lk4cYt*3A21X*ZHf=ZRFM>1$xt!K(gr2tD}_| ztFuKM_sg^Kg)H#L7dR`iTfnvIF6-TdlF8c>8oLxbcG9lNzVE)$BjV#_P z<{gf;kFvF;HuzbMctj=mzC{V-P-tj74Gz||qJ%BHcVe5<>^@jsik53d8Z|U^*l(d1iPti7wSfI@uKw!6dZKRfY*7r{>dERa_ASoqx*-VYuxe-954p{^ zG6o&-6&E_d!ve3H@7WUDY^fRcDFR%4eL}$x|pGJDJFn) z7b>`8R4F0Gh&h5VVAO`fXv!DuA6@E7oXH&8I-CUV={0*hU(Z(B9AhxgnT~t#!1?6` z$7-jC7K&ftcF&#e?cxwNDrqoQgPle*+PyukqE-fku6f=2@pc|6LE`A#$0)i;g+VVg zBC*HA&$4z|y1Ppda>5NuM!QrQ((OT>C9cDKYSRFavnGiOYB~YgnI_TeoHR#zNS02< z2c%Yq3p*1ovU^@o5$oUS%d4&uTF$hJO55h!WxEn)CDf(m+DTN0vIiVKQdI2e=7bRJ zyoJ>UJf#~+c$C?JNzsUb^bEHQdA{gy2Z|Eq<=&X@;a7Bdrx@3=J7x*+dx>b%vr4O` zGqLFbuCJpZ0qOkgAxnGmqZXAvaw!@jRJD_l*eTCG=MK)deH$FcYIJL$LA+a>%s+z; zY@5w49q^l4YS0B-y6|%HL62431>}-z;nkPLuVM5;Nc85UN+po83xmii1D3<1FT%&I;xEE-l;zcid@o9 zc|&1V<+4ci+`eBT(-~ZIRYK~ud{kGx9YVFO`J}a+lxMFwUr+=s3PbyXHKBczE(QmO z9l8+zKr%_D4>ng#f+V03E{=Lz4GfdJY}?Vk zzNnRRi9L&*4$TuvLoMl)w0g=qKpzE$q3S;`59wvRZhiB*<5B+UCf5t})aYdI8b zFp!h1ZLq6z%-NytE&X7!)xeZ)DaL}5$WTu%Y9T($5b>Ce!Vx{BGP$-gIdwGonTK1$ z9>US$4)(#{k_le!cz&3%3h9j*gELhj+(J8Vzo0C{?fmj?U&g7zZ*KLr*v) z0~h#Y0!Oo!_8F!~#?9MA%eChZQvL;wiE1gfycZVoI!_y}ntMKXJb}|||DU{^RgomD zGX~wLqGc9gfC>0ko9tomjUcQ1J^*SdrF{VR_2uMb2S}roYm3yj2IV9~J_-!{t(scQ zGQ&lU*?L!mHq&|c5t^-J<2uVUDR36>P^ zt8e4AQ5agFHDY%Al~TSIa@KpQTW(Yo8U5lix0|x}0*uQYGmWWmowmTa;ny1+tgue( zy@CtWngjZdLrC>I9?cI?DghvmNMyMo4NDMru7|jo>xES?sE$Q&%nVA!;OicwqSNc# z4mHmSp7Q$C;NJ4^gz5x*H=emXEjxk2TyiQ_I#xHvDTM!`!*88#Y?PH~0H#Xt=n2GVa7D&RmLrl1KG%hhD#ID+7?egp z)Z7b7u-%{P($VHpElQiGQ|h)7H{*!xu#y)Y{oV@KgxPvBj42}OSL>&HIY9G9LXQS;` zC3kh|b+qf@2;6?7TRc;?&b)XP`&$_o+qYF4Ej({Kcgt3pDAFC}W*SK1W~)3zrwRi%}!KcS<>)8McdARB~!#m2aot!JAj-J1bFg&v-jbQg9w9Avx4$KCj)rJv;H(LHw4YR8rNcQ)XT^Uhaa&zIaUgN}yAPbKz7BnmN(~ImH=4|4!r6Xr*ydcY4wn$mSESqkb|QF_A?R zg^e)!G}n<@%kf+@Q;SujObQ$kHE6+ol~7bCH5W6HB-|Ix<&G5F0MeUc zdNYjxZ;SU1V^ut__s|OFrCs0e?Iz-%w4QOJkzB|>a@Q!|55(Ua)J8hmP4+crZw%== z?jJGWI^9K$pKN=#|>XQeUoAF$E8IHu;$q`_;{_uNRAhMkf9B&5hmy78-ZwcD z5G*!^4lZUoT=|Sw$Vr5P$uud1eKbikxoqrU!mEW_?Zx1i4<<~5rgK|gM;>(HIMcPxx>gpdwQ{hz{?6K~`PUK?DgKP(G5aN=(6S16KZ_utG)P&r zhzPRF=)JYvDF>gecr4kOH#=T5UNt(-RcODo!Ner}`U&V(rqh88$JUL^y9|)j#lw~n z0HcV77yC~3PwqrtUr0dgU2;W( zhUg2?HPoYPG>l!R*+M1tN-zSlq!7TrYX{f)v+WbzRYs*Bl9sIi*ZBPaQi_ljV;gp~tdw%mAXjvVolZqV}=Tvfd1G zjC1;DtXyS)&TzJJFyki2Xa5&KyA0{GaP8lInMZq@K9%cGw>vpehFrY+i6wdFAjQq7 zZkJVtBRcMMwdlm2-6RuNLIh@7M5&cav}5*rPmd0l-JH=geQ=LC>rQX%Jg(70@<9mx z$(@i_h*fY|$NBbXs3LmMN<8b-=3Qy&;wwo+w_w7D2cLN*8aBP(`@qrVRPkWzog|1k zhl)ymJ>S`3dw`Pt`|wAMv>+4;BGfB#Rs9*QzOrUzn|v7&F7m>GlJCABY%7(R{9+Cf z(i!+`np5(Bs~S9&>S0-3k~CPJLDZerV&R#=v*bQq&ifRT_cow9WU(ydM(^}1@$MD5 zj&o`?r9+Z(N*bH2N?l!Xj4y=HUrwYssd6qO5TMlEzGy0=UA7eqHwZ*@&c>0#1D`Xp z%l?|jdZ?jsSxWsLyJb#K$@2i8rmuZGl|?HC+OcYAXfVVEI=h`FEZ7^kmKs?bLRYUZ zj{eG`;Rqi{?K>cz8L5x1{!xIRw~Xa>=}_gOA$#pVHKh!x!N%&2m>ZgnKbcx^qQFMh|wSoDwlfQ2%J})g_-XDsIZ+DVgng#MR?;sj(ZmjKX z=R=~7I#UzhC-62uKy)sVBrfS5qGHhPK7Ph8WN;DMez98p36j!~LGlPC89!O=t&}*Q zI}R@|Ym$|R!uAenPcPwAYcP+02nBUaRxMw~Akf3&i}}JCVlsuVOhv zA1IbN6Q>Q>zXdo0#d1_SfxQZ<+-%C%Zw@u^t%{SArM8`O5>HBFesomKz!c35@fH)! ztCB8MRO3fz+)^}Xgka6vZG(0_VczvD0^Qu61pv1PnZ?yL^ zPTY2IO7Jr7kdl)l?l3=BMSY5%iQU3@4coSOmp%}dVFoxA4Mp!R4=tK^aUPDRU~ETcCIj{5v}|yZ3g=Vm7XZsyo3D#(GmxUFosf zV;IUHa!!hCR76t1L@^Jh*R&*Ex!%hD9FFLacGL-z1&ItGea4>YNn%OHdr*4O$L6nb z$_GWsUX`LspBA}TMJEKY-ZcB{jG)QtD)=M!?98x{X?h*luKm(|X2gS%EtrLS@^em@ z=}X6YdPg_9-c^)0WE>I(9L45l=eNFh!!swY_0_)q+Y&|no%mw&r~OxyJD?<$O%mjm zPWx;bPCgH0DkfGC(l}9g`;w8!2zE+MvCzc!smlW_r0QG)1D1rE>uAF|#8s;VyP8onkfNJ|PR-QB5j>5^{gj!SnLbV)Znw19Ls5|;+) z2I=nZe_#FHcl_V@&Tu%0!#Vq&v-e(W%{AAWYg@lkt)~y!n_2u!+7R32N0 z#azw|u`ggf>u&>Y!)uH*XyNKSBimvp6{EmOSjQH&u$X^2C5m5p9|}8|l|R}K{7W8)nS$KB zPfGmdBRxI6J`43wN^Nm+dMgICly+=HvZY;3`wd6{;l#emc|&?ETth=C9~%>ctwLEa z6phNUTSjC8sAqac?OKXt%Em-YrVJG6CAt>FTUX;m$ARt0NJp)$qtXrIR&~1(dAeII zw9^>B!Uq{}*;m)s+5F3+juZ<;jY-L+7F=`ro5!3!l2`Jl>8M-Vsux9}k}gF}_w*iX znw<@2muo-9jJRqazHvT6!|0cl)Q}XLY`w|qIXb#g0X-3}ptVq=#H6Z|Ks(DYPT51^ zPnYjOfrw~b5~wvfX8K;felq__&^`7T8%n_xNw~CpNkn8A0pH*&$iE_;obA}s{RSk8 zy+G$|vIW5CddCc;LxGeU)bKK3?|$^ZM=LF^zKxhgPtyhgE}*UE^EQ6^ju_MfjIx8cg-;hI|7HF`nRmnn-+c~ysGD_j zb3BOJ`;{Y99uWf40PYhhBK-tiI26Q0l={kkr%z}yiDUdNZzDRA#!=l@OM|dD*qK8c zCH&$ec()TzF;N&^EFYInA@fExZji zi0C&UI^;HXxc~W$HX&JjHvxE5@#iN2`b?Gtg$<7F*u=)Ptn2nEuC$72PmDWPziTmMwo0}A&yObXpoRN9gX zk^w<0BD6dhrC7ZWaVfxMT~@E2pR|x26T29G`tQ-=w*u87-N_elA^@lV&4P92lG9K` zMh}G|HV?nc${5<#f(e9^(w z+S&@V49uAEUXTByMH}=2Wo7He({aG5f_&xz9rPPN?H?%FNYjout0*I0GX)Li4Cs_p z#?vOh9$qvx?;R2lfWr`M)nuO^T&MGTL+$j^845iqD4gom_uL)P*#!e|ku9EJQZFM1 zum9a2ZSUJtkRo+<3A#250f|1Y_D-oTS~*DJ3N$*#0oXKjVJQ2>JC{4Vyu0IKFn9)x($4BR{IJg$ zV6YIpYT#@FZj>#%W}j{eLDJ&!lhJd4K4&hotPk!q*&O$vcb0e6Ie8x>$GUD#H82Ht zo3U$G&@tR_)+sGaa@6cR;FQ_A=U+Nbnnlf>JhxzZv|F#Nd<%s-*zaW?Zn6bzD0mvE zu0EOJZsz`7x|Q(*_G>C&ytwOYw;iao-n$0m()fvt_yNE8%bh?(%^PEW#=WlfkC`OI z@E}@nK$dzQs74y+>`9cff-e&g_M74YCJoAJA2w)<12|_&p=#7uV)8w|~i2&vawH-NTb(A#y&V zx_i4e(mdU>!p~-nGvxdgSF3V#zA$HnV>Qe^9>9J>0qKCi@Q2IY=ogUv=ED7%HMj4? zJs&iNc2(8<@mJMA_~1;)>!&`Ip4Vr>{-{KtcZM7o-C~=6V;xXV9vdA+K|xW&Nd*F` zWo4{9JW~ZZAj#nu@Yr^W!gj|Zrs3;F>8z|#)AbU6$26Lv+5kFP#%2*#w3LpA@Htb` zvcFBk)_JQ?m^zW1I&;d?ezEj&8LY*%Xv6w286oa>7OX@<4}sx~Oj@LN)pzYLb*?IH zrcS>HTXZ_OY5dxa1~~3bA?zC2-IRuim;JiCKU@?Kyj7<(ko?S+v-V>DQuxNju6wcC zIju4|m{Tb#&(wOIe#T}Bxjs&?_ELWOu9f(KeZ($BRVT!tA3Q-IhE!ZXV2-H*gTV|9 zv#Moo58BYuyskFE#IR)K@w{@-)J#(4%hEJv<(hMdg7Kg{+0QC_OY0h;MIo_h2N*h3 z_EY_xg8Q_rGVNDOEklemyt%;|&2|$5qm$p0!ae5|_f5}t(U9b@Fj9o-;GTR%SB+Lz z{SJ$kaYncqQ($%s?h5w5cHF&NK+6qg^-P$gtfBh6pxU_1kkVHEFFP=`B-{oJFnM)f8_wFwDMPG?pl?aaLO?q~wm9Jqxr_o+pSCrLmuz2Q<~ zx^3KGdJ1UXL`fw~S*YX%&QW;o<_vsqYr#A1rb@d39bGE=1m?Z(Z;Ke~_ahlSZ%-${ z%18r^;=_sfjP19Ev!&+!3hp>pf#Q z4cMESgLzddy$G=F@}=+jBX1A_k%8y1FQ$M&*=2m@inZGMF*8Vb>~?^tW2(v zV)}TTa?A2IB{Jq_?zui(H$$7J6Hf}(1)b-@%Dn;u#49Yf{~!&PYL}c!l?CRwj4iV{(rLPOwguU&50|5pFRDbj&Xz?uVljP80|7(>HUTuD^X377<5@8}sCk&D>>A8h{7JmH9X5Ug>ul8nEX6(0E5AY?lK~S2sB+%| zuR}5Sid!mR+bm@D1s)w>4oLKvim_!(QpwlROPlD($;i3CnM-mq6?L(9s=53jw~|9d zbz7#dT9y>A9-8KWvT-0nEgP5h|W|ov+ zT#ra7lB7tFI1wKFCznNf%9vl1?6yno$;q!NqY^l+2%_4glevcqM8OWz$$qpPF2qU! zx{G@J`HYm2nd$kgyMfqvYcwx*+pq!iCaOnw_BY61WCHvJku+saJ$zEW`H?9q9FOeHQgt z6A)W2*jEKtm_vYU;$}W`A^V(_z(|a4v zz!=}Y9W0P;_5W}OYhaIbw@YM-3vr6I8dmrxN~WXlhFF?byV8d+J=BX?KL~-5-04Or1GS zq1i=c;`*SlZaIQF{D(i3f9WuwlZ2-g2~khcbK5!tj%53t`P3FG~gGd{>~qJ{r1Iq5#j3l7Ze$wkj6ntYQ=*$ zF(ZujYHFgJNg+DG$*kMyY8oRnHd4$}5yQW+TeSSst!S;D^#ASR&)$}6s=EqYzB+uSKg`vQF{M5 zyHR`ECsXQdWN)6!QI-*A9QL=wAUlZAUCx*Yi$rN!J!>`ctH;!&#c|~ni?+pg><~E5~^`!Q$5;R4>pn8a$yYD*J6B6 z_q|={Z*fr}H=mDzr0-52%l3M!nw4zMzDKh#6NWukaQb(Nkw8Xj?|4Q~_jI>8jV7nf zy)wa0X(-w?OqZtYQi=3sMENXT4=S*7d34SD1Ovm2M#J3ti$W&#J{lwAFh~vsz7WF! zyqFc#y$PX6~ z7ZL1Ycjo@}gEI;H0}>i;V9pFCI>*_n7qP3tm613CX@)ur>U^nbcBFvpB%10Vyc*nH z76}i01obK>@>Dv$~S&x8tZ5W?1vD%2x71~eWWXPX^32QapwgYV1NRA9s z<4L46<*_PL5~o!iP!CP>JX24ylQ)BTFP2176PgSp)6moNJMBz@5Et>gYvKnj_Q@d3 zeh{rSqx0T1Bb}-_#Lq{-5tLHEeSpZx?rd#Tx8Bk+;_zQEc6WCd76$U6aaKKYUe_ZB zgj{?;`sOQ|ARZA>BRE~ty0(KU;!%i+xPdM=NTbrSfes2@&q8!6Z{EU6kKROr5W{w> zFM+Lk)-L$cQA`X8qocFaKfxu57y$4kB_$v}2e%x#U(}eaFdJbTy&c4>C=VHH$K!XJa8&C7^n$7ziNDZry;ncTf7};Mqd4!f97>hy z(i$#5WeS5aF)#?&uc6qx00mDI@Y(D4o7^u~TY?n)VyApC)pZTuewmCtFJvnAzw~syo@kmr(TCu{NeLs4HgTq|2ha5X zf#8G$1O&t$2k(#HvPH8b8^VvKfwo2nR6%b*&$@Os7N~;@9JXV{G3lhT8oemb^I83a z32}L1hEn~P%m|f#bvyYJl!n8T5HHY9a|JkMpfHpGK8@%5L0(O5qs^Ciy4F5d26cIX zY910|^8P#62?6+dtnioL!JUnu3;mvnwNsVKsbBy>zUa z?bipu6nX3a0PihW7Koi+l7=P%J!(+t@Djjb`r#;thnT}i+|c_W^RSO_(G?*53sLbP z4%M>+6ETc$?_j?*9*ivB9`QdvkO2nuW;emx;mz3XMoIn}}rTi=k^^`tm#T`YFo@R01Pn& zP4MDPRNGJO`m+R+)c2^5{^$T_!xq%VV7@-?0@u^+l45E!9C+c^9KCw9+AD3rDYbil zQex9T^9Wk8w)=UFO4!5H705dD*)t@(e$Ip9vj7Sn;E|Grr0>6}p>J@DhMbwoDRJYR z0r-U*Zpd`k^8!qd!DJpqH8ngO9OKJpaUIQdrI+2`U7K%2j-%cNdpl;LF)(RXg}8F} z<;Wxf%16kz|M35MK!~mv$UXFaQ~%KmoAC$4fL?XXUN!7Cn6}g6J5q z4EKf}I(uJq*l1jsb_UMuKik_!f-GaNkKiGAK}b)$QNdZvcjV-Q*PYI)_Z7;H^EMqb z7EB(;gMLE9%I99kf5@7C4k7ulgaMK~BAZOQ^@Elbrb3Fq-kH&w45bjLW9ZjKP)6wU z$L{vD;mgtnS`rei*L|~2>eWDj#glSa!!7DB_|Ym^b;VQ2!+`Dk65xqOVk500aL5|@ za0J|UvwgMgS{D6L{e{!kV+bAC3^`N3`7z{xHV*&&bv7Z-n6p^4A_1B0N7RwaWXWHa zJ)EORj+PJ>X%Pyaeuo5HN9N(C`@2pAN@+mwufIJY%Kz(n34wI}FXJA+v64mT=HSt> z{#JC7XOq)T{UMx?2b%%X(#1j$I-%_hIu4>Zyt!lNh0%VjW~3Hkg*;RF>v`V;6c*F~ zb~T}g4#^YEo%b354d-7*?x2P8r(ST8 zG&G;Bz~T(O(NnL7&MI3Yp5sGA+kSXm-mMGWcP}4W*KOu(7dNMNE{7UVkhPn#-)-yM zUoC=Y^lCGg5Z1u*dl7h6uMCcn51B*%j+n5QB%#frL&U9(cl@fm`@Y%JV07>nd9Ti}>@4rx0C!J{$r!p>Su*k77_NM-7eWXl!%d>ho%;SSbJW ze`H(WX+=^n9Z+_&h3_aC;M+%BgLg%x}00@o1Yct2^sO$IYwtDZe%E$ZHgdW3DC6Huq(D@@AB4zy{FDxE(p> zSmoS1fa_QwkjLqv?Hi24aOA9-+Sn-%j0Qlu9}*$A;IaSoF6`S!b8dd$^h2}JG(uSf z#=A>faY?kLY?x!=AGVuOi8e@wx-f^XxN!!X%1`7Hm|^cA*5Ke8%|U8(Iisnwxv)uF zz2~nr6uG$-T}C2$sa@E)(Y$1^L)WK?Zq1%gw{L>+56t}7&PK9m4(M;#4W6cT zvoNuQ%m;c`ZaLkrMeXzol`2NcdOKg;?$6)f&(xpS{MhpJzS)=m-T*b(*M~51KYr8` zBC%7p!SA*9O)J`(&9YuC5m$k}lDegPLGZM)^A7)kxfsLHN2w9*<|<(m+#U*zY1f;w z;LbPr=uh>Po_*upwTU8q(JVCHS7L13&&<|mwYYt`F=Sxef8`;#Updb0F@JpNG5&gl zWX9?KjJ^9|6Q-?g=%AG$0Vkj1P6S;z`_I>|6>WN)f~xr*o!yh)3>?;(Z*Ombu(7hc z`!#_7cDB`Sx~!__aBy&(fLb&HKA9*DvFn2;@MVT^vO}k5@*H9C){IGK0s?HmTz7np z%?%_}O|?7+&a&}F{K1Iy{_#e4dM z`_?%rXKn&G_SR5?`d_|G>UL3=9^3M_@SVEQG8h>0i-`a?%sF0iwO_#hQjNX>Qs}Yq5Nj`UYZQ_*d+h-92Fwkv))XIm7qR78lA>l@j37J z4~17yXwaCelFD39c}LE8WL)CJI&xFF$Kvo4YgB__`%0>rv-rN&N}f=@TSJ>x4Xx<* ziMKU_a`(q)o1TFSdqD*g{PM>#9pZNJV6m+NUE-CMi}kGbySuw^!K)utRX98$zG>cf zwM9jHZD>L_6U}$4+iId*IUpl$8ZQXjo=?tD+ry=Zpi2?Qq_$g)@bl~Mmi5np<#BnI zs8{0E+7*`FZQvG?p$&ds3NobNxZ5aByMsatg*f319&aK8u)BM%a2h8FQsYjT$0jT` z7ccFtc3IDhIXL)8FaiTiuWrq3Nr!}j&eM)Hd?3sZ1?3FrE34RhGAMSIyMCxymCw5& zn>crDos^BngJY~hFlsij9q7eroYNN+6gKr8`dH;67uv^*40nF*d~&X}JLPVS=FQUG zQ&}p)GaiUy!un+_`T0o2=kyd#)^WMoa%ApshO;s^>)HESg?uIrQ+hZS8tfLlFMRiN zjecQfoWaTK%t!0P{YBcBg_|2&1Jh{Ma*Q($_^Z{A9kFhC7VbpDVtgL)}NV>ReIT0d`hs~ z&eVZjwcEI5OfiE8N zMy)u!4}KwKXJ-QqIp*7nRbYeWXJ?b6qgSdpEidwy>CWD7ojiH99)>a0>%2xEuR3>Jh0oLJ?yYxeuBbX;`Y9h&FH^yEFI zgc*d|^+z*cvO3K;^A(@pI<1#QMSa+RlTpH#bFR&MK2z%n4d>BbthAV#nwp!N1Hu9? zU%coUKpgW`R!KUy(dGc@FBU#CT2TKu@|YQC{fo91CaQCy*HBT^cgw6RWlXNkE!iZ!JP+vQ+N5PA|F$ zx?mh*`eb!zmPhWdDfHJ`&)ZmFBj+ZZrD*GSl{xSOT>HHowuN%d+$7G_yeY#^4p&EQ z3rx;sJdlHz&4i)0_?h#>jU1rI@=d)Zuyo+q9xpU#CIcpK!otGBd3So%PtD&RtYy*{ z#JCMKho^CSeR^Oj8%a9VpT2wPuYb%}Dza~f+H~3}%IbCc3aqxmArA>9txbF31$hnr z)v+rBvN2o+&^dgqFJUldyn2I(arGVlQ(KiyfAPx57a4I)C50Lu`*OF1uwTp6F#g>TGI>G=6X3Bg(}IwL^%qz;*jv?=oWk}@ zh1-UbYldm-y$_e{!Z=I#Yu^nuyxM+n_nOw+6ddA3c8i}tfhPYAW9XtRp+RnxI&6_< zT%#;y+(fjD?k*`Y(P_k~ASsc@42%c~^|dY=KBqsA%^x4<*yE?+$dnnW1p>i6O5q)X z1N}f4Zn}SD=amY7(#S>fh&MT@DzTXF3mg|bC zY_eH8^?DvT?ZAcS8^w;osVi8n2!)E(0lZDMxp3*!Zzu~afE05+~?xH=XSgGMD6 zCKpPhd+yL%@qjbRR!m0L#c6yi+>xX-s=6yMLx z!eV=W|J;$=i=3I6nV#Mfa4M?j-3p2gFoM!6v21z7!nxgYojcYtg^c4>e5il!omk8k zESg3ie)Y9#35}R}v3nMq0LO{hXa5;OK0GsNZ@BnUN9)jXV8EBhorK%2zF<9}T75vQ zVYit$Y}}|J1aAKX!mNKld9x{9?^>y!fTQd~0`Sc4TB3?hLL+XreN8=ZlSoe`fIh zUEzgXJtZLGz3^RqWrQc1Zga;t31KE+k&Zddg^nxgxWU*($uVD|q6R@piz}&3%_5(a zX*N^yDqr+>6oc7{&d=x)adK#4Qkdvu|E*ZKekcKM_=Qq5z(inm+XiAyEv=l#>RMh5 zG=UbSlkrxz(RHIYc6ZB9BhQE9eSCbtd;=}S-3mou1bBEh*PeE{bNstPuV&^nscN1i zb&p!421E$#ZmWSS1@+4=6ykzTy;S?zEa2}{i?r|ydwrR7ns!u$&L5<5(wv0xSnSA9 z8R&^3*g`&3E}ODOU|U0+Tl{Hvcb5nc??5(l9%O$GfQHfe>1ik-*T6)n520=cCq(UF zpz}+ypohnGx_{mpy}Qt7bYzgLHdK zCcndVnmrP+cZE^^dD2ED-^A_mBGCdY(Zpl*!oqnk=xQZ1dt~l+Ph4?7ZP?YxfkGhR z7QyNXMNc%>_R~Od@`aD;i8PB-{_>rc;Z=tOBqrz8>b?17UuPMPUMiCnMo*G4O0A;} z3PgO38;<||`!_I!00#tOGkT){fw+0?u9-MA6m(xL5g&-A~Oj9UYFNR(zrF%(V&pVhR)^Hz&|T#`Ozn zvqap!E{4f4nuM{LVh&m9m)-{Uyq#E0>rK$ScW0;lfCbX>QpASj+Op-${gO36w4QOEC36hNyo%iUGC3zB z+^oRZePV<9i0cJYC>#Y972eT-NXG)-ehl=FT}u%KutAH^6C@oCoB4N^K_fC)Hdb@YRxbVLCJt?L@+3~f^G0JiO9b4gzZ{g|Jui=)(n(5v* z5rrD0LGGJu!c+FwxI%T6UN#@e-A;s>@3*x`6Nxz#C)~o;^!WXN048gpxq!~RequjG z&tzM-9ZH9E)Nj_ajiXnydg!TdF^==aiOR3K{=A`(LY_=K1@G`n-FrnVKS^;Bf>3oo zBjOa1;O!*EfBLyHENv?n{aSoUL7$xH+?)>9c~`TUM?2U zNImOLXd4M^y6IhdbX6-w!7iXMeQ?P`n#ID|ok4cVX>Vd5V@Sho7O1BlSftddYCV}R zd7R{g#r0f*CSYz(DPNaPB^IyBf-sXVDe<+{7x6{IO6iURu@_`Z*%Amb2uKqfY{Xjw z)HWP39UdNCTvXoUO=HL1!jCqg?9O*&r0UbRn4}rC$0U>~cdv(PRfxu5o={>Erf{8m z3E|+>fB~%1ivGfe8T?A1HZG}ZMqgF_h+Ee2%t~1VdKD|GkXi&NkQmx{0oX#-39vuax^y1*=4Hg`mMwOe%j8)3oGV<9xTuD^Iwi>bba z3$*McG|qwPCtFBkvV~bZK1WKx0L$vjFlBxL1<8A5k9V-DL#=|aLZk}`)`^0!pON{X zdc7&@+go$1@v^A?le9Q92FX6TIJ2s_4W1;@Oe6RrYEG-2bepU)lsqtq!hkrNX{v|? zH65kRI#^cOLWm#l!C&4UbE5d3T;>s$TdHaflQ$XPz=4akF{hO$`6sV+ItB$XF@rU$ zs}+jrvyUDP{DRRepPguvZEhw)M-Pz zt$~tf=6A!`y)XuGy>nGI!yex(aL$uF`t9l>$%y>nrUd#>c{XU!O%H$7X?%3qi6m0o zq$SA*KSO9u(C`%&h>C>mP3oR$Buq=VQ4T}i)DqZT)ss)-=)ZPU#K!%xIK*P5{ zC_tSFU%yTUZBV2sv1W_Y!N%ZI4|a@C&0dWlBm>0@wzjsZU4}VKw;S%&s^&((Pyb{J z`j5MsS@p%xsebwLWoc>Y;lqaj8HPY+yP%}<@80<+(KhZ@&3N6Os_OVZf_z!Y{)>VI z1q2+(YJ$_=Jj1}i0EVL}>>=cFw^URQ0HKXoXH&q{u_G>7D`E)im%3 zh6bg8f{wS)8X{HhL-nUg%`3aQ8cp@_Y=^95$im+?D-g)%|LGX}aJg|I6kl|1G5K7! z9IXv^r7@ZO%!(UaohzrQspm2V#L&py+L~6PHoz z;$%cFrNRPKPNHvSqRpFp;*a zV}$Ug$2QN}akAQf;EOGvf`FBvrTOAL!H8o{4%s3qk4dnLiib;Q2O}%V2R)MVs6pPa zS1T*8i`XoG7R*ORMMW7*J5DNq(PTnpWcpiLd^+GHUKhW7^SwY{@cX;{`?YZ=AS&0> zBbiIPXv`|uqvt0MmU@Lz+IHhY8EG@CTu$D>HUHChEjMpM-)0Xcj>*x10I1X^_xJ-mujaZxd_4-)0@Uk@uL-hQ`PbegpA2Tn1e{SN_abe!~+a;(8 zYBrrF-}zIJRqfokY;@iw*wCwvCcO0Lcll0gDZDm#x*pN|oaAV1`RGZ`7Y5;e9<}kE zcRM7N9jOqnPN8AE)MQ_(^3t~+zaq(5Fao0#uq-J6?GloysG_1GCl^i=b-9rlK9Ir} z7ZbCpL;-kH*PA1`*Voq!RSRH{Abz!fn=cVX8H&$ltgHJ6cmcNQHT4@(RThSu#}qqk zRt6_kIXNCrShk`OHXZRQE7NT&J5HEIQxsx9O=XR2f~f8cQy`)VngD*#EsNW$N_~{% zWD>AKnC~ES`2s1Ur09D<#giE`O~t4p^RKq^NuhIzijKS~)^dJT|4n{R!~41*YD91? zqZV7qjb8trwc|-?{pH!?16;4~@Botz|FpZ$d}9UM(lY+bW_=$^gNdwBK(6i`1gv^M zvUhxuU?dXU~4) zbpCr7&EP{O%#2)_c7`L)ut?P`Ns~w9lpz$pG^{KJ3|iKGgLHw$e$NX`bq8`CUnsP! z!72gM8dBxdtALI{qo6!GnL#yN%}!8_upgEkeLCZ3pVcPN@fk+cj9nmJ9caUNm{i%6 z$zFpM#@Tx|zgRSwb!4IBs4uxtOGa;P5}RGb`V$yQ_Xr5ZB*AtPf@w)PGBGhRHMRKx zwJnj|Z201ES;k1UP{Z+j&bj_0nzKO2X^=OJg}xGIXIax8WF9`y((xjoA74L{yiMf? z%*;Wmo-BN-;VHta8{zDMXR#h=-hGFcNU3f#z8-h4_}S$$!^+v#jW{kpV}`gdM6_uC zBq8=X)RhItuhIjfomSj`gCVx0T((0s=n_Xm zD5)jXIjC12RtDJI(Mv)lCFA<%7MKN(N54$vi{SbaTI+wH1K`1b{E_a(b>5Nr8pEHBk5)=%BH@B2ah80znp}^RhpS z6}KA~chOlF+@VGJ3e!mPbF86j%q6A{$XAA8x&7@{&ioKO0;Nf4l<&9+xQ>@Ofl%AH*ovikMg#bYI^?#b4KmMN{ z2+vT);m^iSfga|k#_5FxA#Uys5Wn>SbJ_Cu@PT-=LVV86gp^2rvhbryd0vW$1U&Ms zOQ^0I9dNQ)U!2J<8I9A4p1|K8_4-ltf=GV#!$f~WWp+kX0DV#5neb_X`lVc#-&qB> zDw&YuxC}QT_da1;M2qNn#dgC;QK5>ZwncE6^#$%{S-&^hwRXM%h|YOVJ8Iwov@Bnp zZiC3N*6nl)bW-*pLWa!xpfu)MuN5-*gd?WFE=C>+i#%QQsw3s+ccFS@s4f%@5k#`yytK{*AeT*6sJp#Qs=@sw5XnM>)=M9 zm23jL8KxcHfhOP=q;T8nzkB!2+q=2g;DHaJY5*xuQ+ZX<%!KXi@45tGa0_moX@BaP zTMcyu^L6|}F|vaXSa;(U&eN6VM)4NAPI#dh#2#%gKd^Y+Tu8++K6(1|iWih_?D}uf z2IVFumQaAl!aee7>18A10PcZsF@X;IOvN`;;-7Cb7`B2gD4b084qi?lC<*2}PK-Ih zsWeG)H)p?fnK%>c*BQ0FOi)kZ?tM8cl{{*6Mo=Ay_}I8np}DE+nD|sk1Vv2v=YQ($ zwEe7v+iY;$)rnJ5GXJ>Kp$c$%KSFcoq@Srgy(8guOqVjAAg*wv&zYo`Osv-5*0872 zI%?Qv*s9>a@xL<&Ej)ibjJLSCzu(D?^6ZN^`BE4hQT9_k=al3>U8Z;mTs2-^UQ#l$ zxfy)`n7X)J0GjTK<$KNas)`EfRDRc+i$f@=X;}qMB@HcYk9JJGuNWQD!8hxid`io+ zUcXc=6O)bJ%geXWX|!skZw%euL%%QGgITuW=0dXyeAlZtxWWMyBuyO-z1Z!H;a%QC zHHvqbOKD2u>ZKyu@1dOb*xNlYpH)`9bbWUwf9lA#`TT8_NugKM=F1#x{MAj;!f|TX zi|@-*YGuArM=p=SYd=o2aU6DEuD$F{Wv*}1Abfx>Zz3|b6L)+pTtSkLreg6*uIr+x zcxveIwQovw#*-1knwg`QJeKvw9hY(`i)wz9`bQn(Mi|Y?beu(%JApShQ~@$l@#K5; z^H*xgKJ20{B{?Lbr67S578W)?KMx}R+TVfIPQbN3J3B+rSQ==Nfo8U4KcgXQ1EpN5 z2k>glMshGBHb1YEQ&1?Ys=8M^hb*vUV;xEz`Mar=ukJYaX{Q+83~)muUhCNA1b2-F zZtZPl4G+Tr-kR^%YtWvq z$APrKx*EoB66wcS+A)A5gHpKpJ9Sf9#;vvVE$cQf4gD#Nfv?iom<;Pueba1?Ygp@< z=1}D3OD&U2zZFj%^;G4(>$LSz{ICw}r-vQJ_wA9P7BaJo@g+)oPTK~yPXQ0|fXvFu z3S_kHq0n#jw3aYfv)ie;g++l`uQ+B_Y-}vht=1Ubk97zRfQOR^0mczBE+hI7U_edk z;d7b8VBXie)iX0QarEk}-gh_Pd7UqK-vh@~B~QuPGCMbSz2);G0IJP_TL?n|X-2Ee zFwi{-V&l`sMZIh?AGf<_CnnBGOLF>QrM!*SPt%$)>6J0wz#B||Kif~6;F*=Ezippq zN>6f?D%=aviM;<7|8s!cBtkUca)33M(oiB#*+1TzMcHw{i}u@V&CWqZDyD5*9vOc% z65sksE9dx>{_$!DN6h}Rp@3T~i){^OHW*PB#pNaImhn9AO3$yUKid>{om>OVlP6Xz57N?d2QapPSh1*6uQT}Q9k@Dx$}_G#R8?I~7t@1?EP#OX{n-o* z$lYJ}&=q?C{{qm3K_Ike{zNzHL%W`mfm*_BztULyV5EAJMu&|xGCFA*k#Uoep-g=) z?XPF@OI- z0&G48%9v0RAur(4@8#dmz?wb5v~qWIlhy=eacL;%N#v}G1@>fR+L+k}g!n7S&P;*I zH&BuR4gmkmjp4LB>q>RuIW1%`=fL2zCR=tLvkVPh>Y%_K6CN2&{oZZdLBh{{gXyg) zgI4ZiToEADxLuo?d^+F-l*hhdgm(3FJM~cWsq7v zuSVz6A2_X4rrO6#3Ej3ZuM0k>rk@Xb8?@qb`rh#+f<$;+fvJD%_c}+r+_2xxg!Bb+ zy^DC^o*`G4pA%cS)g)H0dm#-?rFk!o;}hSGPJ939i*TdKHWE@d%U@I-{%g~7oiG3S zF$~p5h7XFevB=iP+2L*e2jF?kxosDw<`cCP0suM=P~?0)ExkW;*XuV`R&ubi4*UKT zepfK)S=sKrJ6#DTUA019GFWU=R)$1Ut6f{3x{Bon~-1EhYZDvB_@Kv==C6n6OFDHZNhym$VEd-& zD!Wzw2XJ3v=rV2(3X8}G@1Q?$6A!9$h|Hbag+w>IGq-nl4dQ9H>-s)oSd;c>>U#*nC|FK`eY zrWWdkSmgx`7F`XM1gC53WIIAQL2_I0pyknn2gW2sV`F1rv61~u&}NZ??$li((38T# z(0bvIAHVksV^vmGdU|>~IoagfosS#0%4mRXZ&0w(x_9-s#9?z-6_mmOAuwHkXpVHk z5m>xhbq;0#Jb{i@9HNq5t*=_77mrO!8tm}79Q>gxZqRo#X9?Z`>m9LAYX87#k*Y8; zZ~Y*4_5LZ@TlXaqIjV?HrmYK!XR`Hzyu1sHhiTQ9mX}Q-75Gou6MVB7CL=z1o&8+7 zfa9yXhZRrqhljzW=>ix8-3^J8Vhwlbgvv-oVw7DyjvHJZ8p`BFLv=P(e}3O+rq0}8 zNWQv!A?eaaO(`48iv86~N0dM=wL>+?IWtv!22UGYw%v(&b~$AzUKM=(%`c3orTI0# z%g4+iK;<2Y?zWt+$g8b&T`@!9yY6+^F9zj4a;ZC#CW&!`xyH4PoW+$KCIhec4xa5> z_1sxCYT{@bij;Z_Z5rWF?F{JKb7Y-=)7IymEjBh2zg4pfnV%9QaUZFf*tN;+L( zrU)#Yt!=3$ZS!VMQbtC`Y|ZrJhLHLLN^Wi!P$r&pgHxd2;_XZQsc&#_@VsA%3?lT# z{X_h|_kGP`nPEq4Ls>=7vTTT;II(zcT=VaR`Puj;^W#Sq2H~INjG~)Fmgc)ogg7y? zYpP`-50bcTmwtUk0`{;BaB~k14yLE4zapW@CUe`aa2yYe5_Ch$^yr*x-=fLT9y_e= zyo?Ln0Mo++R-$q}vOjp&dsRIxD}V_Y&JlpU6L`ATW}w@>k4G~6 z^+L5=*_RZLQ;`IfSjM-*$2*j@0Pjy%}P%N35oKp1C`z4p?* zqCxDz8z_jD=XnL{{y=Li3}!cyU`?(7f|8K~!}I{V-FkyEtTf4D`#Lb7G5ZKWF@-R( zDnPV_HC@6Tu-G8g_MIT?veIf$#D|dZ(Ui);YIbsOJRd*i(t7&9_QtQ5jQxdmO&`Hx z7As#2U5wlTu7{q1!#47kX`Ci%6Oab63=}3mIf+8UywxIHX z)@R_|15_IDAe}%^^Xu1pM34%`d;lnyV4q)xhaNl9Lu?)y&?2%Un56ohkM-$I64k8@ zM_CHOQN|kqq+d$x8rY{rqWRq_rYqi<0za5}3(x4e!4LKR?*KgH(d?cqvdx+PolIwd zC(IEqsm@`j{kzUsXTtixF^MCHv%mwFlN+qGD7sf6@>vfd;&TGtXB4H(k>eYPjR7Lf;29+z zU7DL0z5AZ+A1s*tg48pRRYYCkZ>lqXp(07YN=)@g4oP8UzbK%aF#&d#kH|a9K|^?r z-6dj46+b|yzwBBp3X1G19M^3>DFIBkVBB;JFB2@%i&r(W#c*X3 zz%cuN^Iu=sMSs9U3H|qL0U~nI#i|7lwQR-md_i zm0*=hO01ISTqqnnVF;DwF#J?LD6y8?%l@jN9InL!^O#kOp}KH&`S7pMLzF7ej3tEw^8T=Il%Wige6LNQvsom8&v<%}-VgsR$@fPnZHp(4m z#vr_Z2t{J8s-Z0UOFB+uHY{ibpH{5d!emA!qKQX*=V9vTi{-4$kU1I543+-_ z-5p-s`H?4N*C!dEoEq*7td|K}*8 zpfrepAc%yBl!P=&h$ta3(k&p;CDJ?wEeMD-JfJiJLr8Z^h}6&_-QBhCf#*5jJ!gNr zXV2OFYtPOf3=E%{xu4JH-uHdq_bV<$G{k#wHPTARSv+?S@9Q%LA)V$r--nj?KW8Wk zmIm>5D@R5u6dk3iO#b_d9_%g*Zv@rUe~M|AurCn6H>zZNa_%|F*j1JPnvPz$cvS|G1X^{|`D9B7vjXzdo=3FJGewgf1v9F$9;>QZT~vMEtaN>~8X>j!qY39Par4 zcRSdF+Y}D6vH?*yVWwbubSEr5GT~a0!Z4ZyvCDE+g2vkqS)x)}YFCZ;@e*Knk*+WF z9)*598NnbDV?8?r2Lmj8dxEs)!|yFuUrdvf2u`Q(RG|wxx2ka3jUV7(;+70Kjp+bg zh{=m4sV}#f8up9<_JRE3zNN3?o&F^*t|tW=rhU~a-6dqf^hjR*Hy51nJU!0N|1I%# z#&Kc)_JJ?Vc@gSNkO{nkY@tMi@|}Z~F=6@VitlM@uim*@=g3PeIFzL0+XkaZLacKCb0IJR`kRGi!9ZLwn}V@xBA{KtkK;sj zYnYe`;`{GyAP|(DGLjEfp5MLZn~&WPjm^opD9e*9ev8B?Vi*vZLrj4V0>y>qLwm}V z@3jyqx$*KUF#+=(TnwhCc`el0{CWBJV1p^-BFRaQxlFRS1o{0(ScsFG|5O#6ODMhc zfq5xB3@9}M=c$uZvABLD3n$*j*gL}YrS??A=Vm|^To;McdXvqF$XUqyC7O5qxygCH z1raX^d>X`WVk#!^^VjgK zhV`vG%MrmBaXFpO!s*S9@Y||gH)4To!i#)V7{Cw|{Nf8=nDG-IAI0omm|b|`cP~D{ zcGk2j;dT$5MT8L?mscI2>7dAbY0>*L@m7Chh%EC4zL0F#dCyP(ATSSru|fVK8lU|% zol{N>@C|;FBr!qYTua_Q#0_J_EA~^eaRBxfWK3JZ)g|{s`*UMZS6Zm<`bBHpC!>9p z(i5z=c;Q#7;pbNcojG}^yD8d24>jtVuf?T#k<@MqE5`&3JnJaRQ-AZy3vg$D`X7Y& zRo74F3QsyfXzz5jD7D(*T2#Lt=Q-W>w9cj2u6KBqT7o?q_RNy-gEx)gn7+9#hG6+iNRg~TyPlGz($bys4%^H*M*k_ z8#SHx1J*L%d#IdCk&!5ZkzDhMc?uwhgaVpxih6g;TfqEH^3VUUkizgCov8(R5J9B> z%e<(H`*e&8K8wN-AG7SY8+8ufn^kkqNBF5^@E#z(_5na|e8dvG)g69j!9j$REdFk^ z_#7R*75f?o2giRvjJSWbpMO7>Fb ziz@6X3~Q<5s;8!{H6N~&cM&1*7GRkLVj{uV<&5l#lARG3&@?YB_*97;&v+cqz(4Or zn#0;=qA>_~zlgvR*S*{fsjGW(HL==LFIG=6)F5muI$?lAt!pX8++879#~*K|0AGTa zk8fX)+M2Ljhn9%Q8UrzaY8vFY2)%9zDlF>>KVRSK#jlEA%gaUR>1$xA3btmrofMwe z(GgrAiwvLwncu=GMhVHJXE=nKBAZjl?}9b6)-$j|u=yX8ISij@&Bei^#qA`2O{RwX zgTl{YC6grnog@a7jfCn}Z_Pme5Zl*FI~TlC1Z)DHn>1@zt7+F~&42$eH7RQz*MTfA z$SHg06Ca=ya8JM>ApVjr7S9H+Tkzm>h=e3+do0i5nTVP=ZLLP zDTZ7}$32Q4%P#9t&5rx5pz>hwry3V0i?Xkoe^7#Yac|3d0>9jUj*g59e6O+`jA5>z zwHE1%BZS`9h{~6%t&W(|-)R!~l9Tz8i>5sdN1I%CV+0kL(Eqab3l)9}KJ=Zr zG%5IOB#f=O%gsMSJMW04E{8BXAj7>=$ozb{_nH!Mx6cVRJ{4vC>kh~3V68=4hPo5? z+1WpHR)g-+>h*@lKTzr&DodO*(x2YglE<|+c&%bT4XKl4kbfe_zm4Uwj>$&Od-60$ z*U4~PWpY4TwY4o#uywilFcVT!8O)`R?Ekg&mPT@1Lc~@2>F-s$q`Exgu1hBKsXuNl z%`wLkwr)M%B{%aiX(Qm^2_PtL_+!ECdd-!ryjbmz`r3G-d#a|eJwa)ExBdGR!Pt-X z+KY50wdK`k!^O99qb_0Gejjg8ZYe!WIF_@e$2}3o=urM@pnrwVl@$SPZJI@%^epaz z#q$Jfnf>D_tQl+s00}GG);8YdmxaGf zzsl!@O&HLxWxn4TrFDCHI3;5m_TfYE6j|ISy`tYJI4P47TefS!BRXsz^4Gj#XVzt_ zo6FAVu^#z;Xva>0^g~J#UBc{f5N^kHC>odV^@zdd>{=(0~dvm5drc08?{;A*|4em<0 z36yxr&L~lrG@mU$OH;JzgwuIM^V{%>D2pf$x~naKR&1n8uIgiAhO?Qzs-KvB^AU3h zF~9TXEZBg|F5E6N{Cq;y3X|Ip>v3^i>2qU#E#VxR=K2)VUVAUkd+MLDf@%y5L4aYP zM2Q0%VLDwpIjSgY^PtC+MT&kyaKt%3Gox5k_^>qL*6C|D;IQ$Kh`C(lr5!3nbx(o8 zvTJmdmVyHFeGe*%9(Rx;mVot=4y9G=6wq9Nb_6sXmbC!YzXdk$;NNW49Kn zn65O~0iPc;?AOvBk1gCrXjKnN;1Cd0yk3ghd3O%s!3_!+&_|7gLvAtDAucYip{WT~ z&j1xSwu)HQecbDmaGQc~I_ z_H&zaT`&<>1Y&Fb9v#(HRowyABH*Z9XcU6q!rJ=NPOS;}o{1f8Dw~CaY z2UGDiBF}`{Uj3s&WIOsT(0va1-kMGAtA!mvgSQ5a8m}sQjQlG zL?bk1J0?(_CGvlE?yw7*oT3oFyl}h90X~94;hiFAWq>!PIa+fbwt6vyTLmP<|E=N+ zlc$dk2%2@hG4~RtuD|#GH68meDm6@1y;oSDXTtq>o%03U9l>t0n1$i=jR+U>WUlJ! zY5+X4-W6aBKrH<*i+H_nbp|%Jwz+C|ErC0cnmRi-w`T7T2d1T^DW}LU&Cl-xN4KBc z>Hc{%Sg!$Z(rfs8cD5C07=KS}wQT^FfMe@B+!%&V&7Xy_10uaZ4|N8G3B_&Pc*?wgBqoN=t)!8yVD5#;vk zcmZ~Hb}lXyAakXq(LV5W1I`P;#$GhqB~^+esDXk*{ZAB)Kbj%V{-_oh?ug9D2K_j& z%!3Q{*-^IPoUa*q*SN!iyb>JNqLPy7B2Jt>NitD@Xea*(>EcI$gLk!?TPtyxG}ZZwjQsH@CI~?saye z(f3<#EE)-ySq{t8DkJG*cg&@`e1*p++47ZwHw z2FTeox;s1X9ZuQ#1}&?+&P|RJues&g1q}46mtiq6=07$2wkUuNDvu7KpjFki3-OtK zK`F6bnt7}zJ;b<@b#K8KU$brq64o#5m_gjhWjNG(bzD9Px)@y|7+t&p6F&@qJ#33< zv1Vb0@%!(2EXv@62@D-swslLg+X`Cu=nYiM%FHAs!86ssJE!Qnw_4=Lr%;@37qlkjZ0cAliNZ{aYZkd$!x-fzg75gSdGsiZT%v59v0I)iEB@CLe`1; zw+tufncbK^zb5}M*AjJy2c7oH?9WHuJ`p8%%d$+cKDr_l-YO303|ryQAC1`Bbz3UZ z#HQf{y2Sn31)clJbj9l>H4clid8$ZaX5N|N3Cnb!(5MYxGux}sy7G3NCyD;{I?Bk( zTcW}8aSYp6{!Z7%ELsp{^jzA%we#BRYm(!-0Iu3UH~_OG(RE9d1A$?b_ViMk)^qB3 zdFVs#T!V!&0fckOpGxU@W`03ON%2qd@!A*147VL5QfP1oAGcVo$P(?8SoelL5vM1^ z3sm2}F(ndY3CM-srNla3A@UUFSFd9k7TUw);F8orfel!j`n2&PF0XgbC-V%%AhSC+ z{q)tF1-&aT-p`)j(q3q~i%U6uUSPyWxhEGrd>p*K(QM>^nRCG0D6{auzydE#r;Rt6 zj(Geg8A;T8bLuWueFmaIb; z=T85vLOzTc;3$HWi(b&_y}JSVzUZfGKj2NP(H z&kM9+@Sw)VmT(6K0Dg1zs^0?PRNZ{1{#))w)J}wIIR2FHw1lq2=q<@q9c|;%FQG=V z>-Uh7LX6(s6rM*mn>JGBOXNm_?f3^W>^(8steIN76{A=|hxF$e1tYKpa@eO&V;Zq9 zsJ%_CtP0!pn^d13{xVB1x!R&aEIA`o!osdzzlRoJ>|PzeW)mLch84duOQ86TnS@v> zHAK!aL&zgNaB^0Ph~I9@l_!@-QntgR>Q8XU_o zbreTMQTb>0fCZ@g?)arfg8Gn?Nlus{7uDV7(^6uJPz90D>cnJI|+KEvonZ_ zbX(u~%6*gY&RQYa%lj2LJ0YuIA!mA+m05T`M&fdt3DQE{(tAqMGb5p0Yv%&ste>x=W*h zV1N<$VdGyi8aXZX+ z$Hm?7Xwq+ztF(7IR-s{;^lF__(SDpY^hV-aXzArz-L_$rAs0${(_+gQ|DZXt1}(J6 zXY|!>$_y+XfVL>vjYd2Esl)wY;tIToOW4@>q116h1zFlg!cvPe^z;ilNzG1e3*Hir z6eWLed83yEogha2iX+Wk4vC+f`@6TBL&sdpe`O3iH{h=nfaRuef4P9%2=cq7!+V{O zbWSf;K3V1u`2L#$lcy6)yICI9_+4c!vI^G)##$fB5P}&~;@U(bhg!~9ucj4m`9N1! zp4F&m%3HfD3-KeES)CqiD5l#jVK?Wf`&K&E*47Yaaoj(#+q7kj8@bz=b=1|>{rxu` zA7iwj1K7x>6V8O#C=}HJ8Hcx+W%({&9l&$venc`G=q&9n=xyts532o(j!ZB+D^ zFJIn=86IjrX0-J@v7cpZ2wXK1r+U@>6_(G-#MFjd+1 ze3sI%1)_!6W`_jWqNB5Qb&IU^m6f}I;v-EGd0p*flN?%3L>ydC$e*8|k70w=y}Qcn zST4HWF@$jvhBOHnv6X6f32<@OmfV_M_nwB|3XRCZnKL$LH(nQB=FroDnSHW3RFaI0 ztj>~4gksr5wwi+)id|rnmb`LJOHYKrP=t!xn(d|1s@iW>jxQ&NgZCejdeeGfDr$xX z20p22Y0c<DiB?pfc@NeIB zi;v#0V+cHH_bC+K>Q)|NJeKSp9$u>9p!@5AdQh!eK*Q#i*Zaf4^2DVNx~?Z~ZFOSD zvyYP&zh9J(7hOtA#iY_>4IrDdhdveEy9wHvcz&CjLeo3DVIwEyM+zQKh{9+^iaksk zX;a)p_*NZty&>$wL$9l9%eOM7lzHPrn&B_L-u4LMqrqPZ_lJk(7E(`-K$!0@B`zLM zrlD*|8%JC>+A4QqgT64F*se`iMLRbHEbTa)THPWL#uu{`4wn+m*C$y_gN6i+TO&}w zL^=Q~!;|bw$sdX3%nwE1UzB=>b)OZS<%MUbYk)B?K5Mqw`6;pOBi78BL|4ns z$!_lxet18ZVZ#Mj>X3l3RSB!jA6m;&*V*!RwK+GMB{wYeTUQ$H(CL;ln4@H* Date: Thu, 16 Jul 2026 15:51:33 -0700 Subject: [PATCH 569/619] UUF Fix. --- ...ng-and-using-a-dynamic-link-library-cpp.md | 127 +++++++++--------- 1 file changed, 66 insertions(+), 61 deletions(-) diff --git a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md index ac858bc073f..d1ac1dfe678 100644 --- a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md +++ b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md @@ -1,8 +1,11 @@ --- -title: "Create and Use Your Own Dynamic-Link Library (C++)" -description: "Learn how to use C++ to create a Windows dynamic-link library (DLL) in Visual Studio." +title: Create and Use Your Own Dynamic-Link Library (C++) +description: Learn how to build a C++ DLL in Visual Studio. This tutorial walks you through creating exported functions, a console client app, and running the finished project. +#customer intent: As a C++ developer, I want to create a dynamic-link library in Visual Studio, so that I can share code and resources across multiple apps. ms.topic: tutorial -ms.date: 03/17/2025 +ms.date: 07/16/2026 +author: TimShererWithAquent +ms.author: v-tishe helpviewer_keywords: ["libraries [C++], DLLs", "DLLs [C++], walkthroughs"] ms.custom: sfi-image-nochange --- @@ -20,23 +23,23 @@ This walkthrough covers the following steps: - Use the functions and variables imported from the DLL in the console app. - Run the completed app. -Like a statically linked library, a DLL _exports_ variables, functions, and resources by name. A client app _imports_ the names to use those variables, functions, and resources. Unlike a statically linked library, Windows connects the imports in your app to the exports in a DLL at load time or at run time, instead of connecting them at link time. Windows requires extra information that isn't part of the standard C++ compilation model to make these connections. The MSVC compiler implements some Microsoft-specific extensions to C++ to provide this extra information. We explain these extensions as we go. +Like a statically linked library, a DLL _exports_ variables, functions, and resources by name. A client app _imports_ the names to use those variables, functions, and resources. Unlike a statically linked library, Windows connects the imports in your app to the exports in a DLL at load time or at run time, instead of connecting them at link time. Windows requires extra information that isn't part of the standard C++ compilation model to make these connections. The MSVC compiler implements some Microsoft-specific extensions to C++ to provide this extra information. The walkthrough explains these extensions as you go. This walkthrough creates two Visual Studio solutions: one that builds the DLL, and one that builds the client app. The DLL uses the C calling convention. It can be called from apps written in other programming languages, as long as the platform, calling conventions, and linking conventions match. The client app uses _implicit linking_, where Windows links the app to the DLL at load time. This linking lets the app call the DLL-supplied functions just like the functions in a statically linked library. This walkthrough doesn't cover some common situations. The code doesn't show the use of C++ DLLs by other programming languages. It doesn't show how to [create a resource-only DLL](creating-a-resource-only-dll.md), or how to use [explicit linking](linking-an-executable-to-a-dll.md#linking-explicitly) to load DLLs at run time rather than at load time. Rest assured, you can use MSVC and Visual Studio to do all these things. -Even though the code of the DLL is written in C++, we use C-style interfaces for the exported functions. There are two main reasons for this: First, many other languages support imports of C-style functions. The client app doesn't have to be written in C++. Second, it avoids some common pitfalls related to exported classes and member functions. It's easy to make hard-to-diagnose errors when exporting classes, since everything referred to within a class declaration has to have an instantiation that's also exported. This restriction applies to DLLs, but not static libraries. If your classes are plain-old-data style, you shouldn't run into this issue. +Even though the code of the DLL is written in C++, use C-style interfaces for the exported functions. There are two main reasons for this choice: First, many other languages support imports of C-style functions. The client app doesn't have to be written in C++. Second, it avoids some common pitfalls related to exported classes and member functions. It's easy to make hard-to-diagnose errors when exporting classes, since everything referred to within a class declaration has to have an instantiation that's also exported. This restriction applies to DLLs, but not static libraries. If your classes are plain-old-data style, you shouldn't run into this issue. For links to more information about DLLs, see [Create C/C++ DLLs in Visual Studio](dlls-in-visual-cpp.md). For more information about implicit linking and explicit linking, see [Determine which linking method to use](linking-an-executable-to-a-dll.md#determining-which-linking-method-to-use). For information about creating C++ DLLs for use with programming languages that use C-language linkage conventions, see [Exporting C++ functions for use in C-language executables](exporting-cpp-functions-for-use-in-c-language-executables.md). For information about how to create DLLs for use with .NET languages, see [Calling DLL Functions from Visual Basic Applications](calling-dll-functions-from-visual-basic-applications.md). ## Prerequisites -- Microsoft Windows 7 or later. We recommend the latest version of Windows for the best development experience. +- Windows 7 or later. For the best development experience, use the latest version of Windows. ::: moniker range=">=msvc-150" -- Visual Studio. To learn how to download and install Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). When you run the installer, make sure that the **Desktop development with C++** workload is checked. 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. +- Visual Studio. To learn how to download and install Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). When you run the installer, make sure that the **Desktop development with C++** workload is checked. If you didn't install this workload when you installed Visual Studio, don't worry. You can run the installer again and install it now. :::image type="content" source="media/desktop-development-with-cpp.png" alt-text="Screenshot of the Visual Studio Installer, Desktop development with C++ workload."::: @@ -48,11 +51,11 @@ For links to more information about DLLs, see [Create C/C++ DLLs in Visual Studi ::: moniker-end -- An understanding of the basics of using the Visual Studio IDE. If you've used Windows desktop apps before, you can probably keep up. For an introduction, see [Visual Studio IDE feature tour](/visualstudio/ide/visual-studio-ide). +- An understanding of the basics of using the Visual Studio IDE. If you used Windows desktop apps before, you can probably keep up. For an introduction, see [Visual Studio IDE feature tour](/visualstudio/ide/visual-studio-ide). -- Some familiarity with the C++ language. Don't worry, we don't do anything too complicated. +- Some familiarity with the C++ language. Don't worry, the walkthrough doesn't cover anything too complicated. -::: moniker range="msvc-150" +::: moniker range=">=msvc-150" > [!NOTE] > This walkthrough assumes you're using Visual Studio 2017 version 15.9 or later. Some earlier versions of Visual Studio 2017 had defects in the code templates, or used different user interface dialogs. To avoid problems, use the Visual Studio Installer to update Visual Studio 2017 to version 15.9 or later. @@ -67,14 +70,16 @@ In the following set of tasks, you create a project for your DLL, add code, and ### To create a DLL project in Visual Studio -1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a New Project** dialog box. +1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a New Project** dialog. - :::image type="content" source="media/create-new-dll-project-2019.png" alt-text="Screenshot of the Create a new project dialog box with the dynamic-link library template highlighted."::: + :::image type="content" source="media/create-new-dll-project-2019.png" alt-text="Screenshot of the Create a new project dialog with the dynamic-link library template highlighted."::: 1. At the top of the dialog, set **Language** to **C++**, set **Platform** to **Windows**, and set **Project type** to **Library**. 1. From the filtered list of project types, select **Dynamic-link Library (DLL)**, and then choose **Next**. + If you don't see that type, make sure you have **Desktop development with C++** installed, as described in the prerequisites. + 1. In the **Configure your new project** page, enter *MathLibrary* in the **Project name** box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Uncheck **Place solution and project in the same directory** if it's checked. 1. Choose the **Create** button to create the project. @@ -85,15 +90,15 @@ When the solution is created, you can see the generated project and source files ::: moniker-end -::: moniker range="msvc-150" +::: moniker range=">=msvc-150" ### To create a DLL project in Visual Studio 2017 -1. On the menu bar, choose **File** > **New** > **Project** to open the **New Project** dialog box. +1. On the menu bar, choose **File** > **New** > **Project** to open the **New Project** dialog. -1. In the left pane of the **New Project** dialog box, select **Installed** > **Visual C++** > **Windows Desktop**. In the center pane, select **Dynamic-Link Library (DLL)**. Enter *MathLibrary* in the **Name** box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. +1. In the left pane of the **New Project** dialog, select **Installed** > **Visual C++** > **Windows Desktop**. In the center pane, select **Dynamic-Link Library (DLL)**. Enter *MathLibrary* in the **Name** box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. - :::image type="content" source="media/mathlibrary-new-project-name-159.png" alt-text="Screenshot of the New Project dialog box in Visual Studio 2017 showing Math Library in the Name text box."::: + :::image type="content" source="media/mathlibrary-new-project-name-159.png" alt-text="Screenshot of the New Project dialog in Visual Studio 2017 showing Math Library in the Name text box."::: 1. Choose the **OK** button to create the project. @@ -109,21 +114,21 @@ When the solution is created, you can see the generated project and source files 1. On the menu bar, choose **File** > **New** > **Project**. -1. In the left pane of the **New Project** dialog box, expand **Installed** > **Templates**, and select **Visual C++**, and then in the center pane, select **Win32 Console Application**. Enter *MathLibrary* in the **Name** edit box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. +1. In the left pane of the **New Project** dialog, expand **Installed** > **Templates**, and select Visual C++. In the center pane, select **Win32 Console Application**. Enter *MathLibrary* as the **Name** for the project. Don't change the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Select **Create directory for solution**. - :::image type="content" source="media/mathlibrary-project-name.png" alt-text="Screenshot of the New Project dialog box in Visual Studio 2015 showing MathLibrary in the Name text box."::: + :::image type="content" source="media/mathlibrary-project-name.png" alt-text="Screenshot of the New Project dialog in Visual Studio 2015 showing MathLibrary in the Name text box."::: -1. Choose the **OK** button to dismiss the **New Project** dialog and start the **Win32 Application Wizard**. +1. Choose **OK** to dismiss the **New Project** dialog and start the **Win32 Application Wizard**. :::image type="content" source="media/mathlibrary-project-wizard-1.png" alt-text="Screenshot of the Win32 Application Wizard Overview page."::: -1. Choose the **Next** button. On the **Application Settings** page, under **Application type**, select **DLL**. +1. Choose **Next**. On the **Application Settings** page, under **Application type**, select **DLL**. :::image type="content" source="media/mathlibrary-project-wizard-2.png" alt-text="Screenshot of the Win32 Application Wizard Application Settings Page."::: -1. Choose the **Finish** button to create the project. +1. Choose **Finish** to create the project. -When the wizard completes the solution, you can see the generated project and source files in the **Solution Explorer** window in Visual Studio. +When the wizard finishes the solution, you can see the generated project and source files in the **Solution Explorer** window in Visual Studio. :::image type="content" source="media/mathlibrary-solution-explorer-153.png" alt-text="Screenshot of the Solution Explorer window in Visual Studio 2015 with the MathLibrary highlighted."::: @@ -135,7 +140,7 @@ Right now, this DLL doesn't do very much. Next, you'll create a header file to d 1. To create a header file for your functions, on the menu bar, choose **Project** > **Add New Item**. -1. In the **Add New Item** dialog box, in the left pane, select **Visual C++**. In the center pane, select **Header File (.h)**. Specify *`MathLibrary.h`* as the name for the header file. +1. In the **Add New Item** dialog, in the left pane, select **Visual C++**. In the center pane, select **Header File (.h)**. Specify *`MathLibrary.h`* as the name for the header file. :::image type="content" source="media/mathlibrary-add-new-item-header-file.png" alt-text="Screenshot of the Add New Item dialog with the C plus plus Header File template selected, and MathLibrary.h entered in the Name textbox."::: @@ -192,7 +197,7 @@ When the `MATHLIBRARY_EXPORTS` macro is defined, the `MATHLIBRARY_API` macro set ::: moniker range=">=msvc-160" -1. In **Solution Explorer**, right-click on the **Source Files** node and choose **Add** > **New Item**. Create a new *`.cpp`* file called *`MathLibrary.cpp`*, in the same way that you added a new header file in the previous step. +1. In **Solution Explorer**, right-click the **Source Files** node and select **Add** > **New Item**. Create a new *`.cpp`* file named *`MathLibrary.cpp`*, just like you added a new header file in the previous step. 1. In the editor window, select the *`MathLibrary.cpp`* tab if it's already open. If not, in **Solution Explorer**, double-click *`MathLibrary.cpp`* in the **Source Files** folder of the **MathLibrary** project to open it. @@ -343,7 +348,7 @@ To verify that everything works so far, compile the DLL. To compile, choose **Bu ::: moniker-end -::: moniker range="msvc-150" +::: moniker range=">=msvc-150" ```Output 1>------ Build started: Project: MathLibrary, Configuration: Debug Win32 ------ @@ -373,7 +378,7 @@ To verify that everything works so far, compile the DLL. To compile, choose **Bu ::: moniker-end -Congratulations, you've created a DLL using Visual Studio! Next, you'll create a client app that uses the functions exported by the DLL. +Congratulations, you created a DLL by using Visual Studio! Next, you create a client app that uses the functions the DLL exports. ## Create a client app that uses the DLL @@ -381,13 +386,13 @@ When you create a DLL, think about how client apps might use it. To call the fun Whether it's your own or from a third-party, your client app project needs several pieces of information to use a DLL. It needs to find the headers that declare the DLL exports, the import libraries for the linker, and the DLL itself. One solution is to copy all of these files into your client project. For third-party DLLs that are unlikely to change while your client is in development, this method might be the best way to use them. However, when you also build the DLL, it's better to avoid duplication. If you make a local copy of DLL files that are under development, you might accidentally change a header file in one copy but not the other, or use an out-of-date library. -To avoid out-of-sync code, we recommend you set the include path in your client project to include the DLL header files directly from your DLL project. Also, set the library path in your client project to include the DLL import libraries from the DLL project. And finally, copy the built DLL from the DLL project into your client build output directory. This step allows your client app to use the same DLL code you build. +To avoid out-of-sync code, set the include path in your client project to include the DLL header files directly from your DLL project. Also, set the library path in your client project to include the DLL import libraries from the DLL project. Finally, copy the built DLL from the DLL project into your client build output directory. This step allows your client app to use the same DLL code you build. ::: moniker range=">=msvc-160" ### To create a client app in Visual Studio -1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a new project** dialog box. +1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a new project** dialog. 1. At the top of the dialog, set **Language** to **C++**, set **Platform** to **Windows**, and set **Project type** to **Console**. @@ -395,7 +400,7 @@ To avoid out-of-sync code, we recommend you set the include path in your client 1. In the **Configure your new project** page, enter *MathClient* in the **Project name** box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Uncheck **Place solution and project in the same directory** if it's checked. - :::image type="content" source="media/mathclient-project-name-2019.png" alt-text="Screenshot of the Create a new project dialog box with the Console App option highlighted."::: + :::image type="content" source="media/mathclient-project-name-2019.png" alt-text="Screenshot of the Create a new project dialog with the Console App option highlighted."::: 1. Choose the **Create** button to create the client project. @@ -403,15 +408,15 @@ A minimal console application project is created for you. The name for the main ::: moniker-end -::: moniker range="msvc-150" +::: moniker range=">=msvc-150" ### To create a client app in Visual Studio 2017 -1. To create a C++ app that uses the DLL that you created, on the menu bar, choose **File** > **New** > **Project**. +1. To create a C++ app that uses the DLL you created, on the menu bar, choose **File** > **New** > **Project**. -1. In the left pane of the **New Project** dialog, select **Windows Desktop** under **Installed** > **Visual C++**. In the center pane, select **Windows Console Application**. Specify the name for the project, *MathClient*, in the **Name** edit box. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. +1. In the left pane of the **New Project** dialog, select **Windows Desktop** under **Installed** > Visual C++. In the center pane, select **Windows Console Application**. Enter *MathClient* in the **Name** box. Keep the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. - :::image type="content" source="media/mathclient-new-project-name-159.png" alt-text="Screenshot of the New Project dialog box with Windows Console Application highlighted, and Math Client typed in the Name text box."::: + :::image type="content" source="media/mathclient-new-project-name-159.png" alt-text="Screenshot of the New Project dialog with Windows Console Application highlighted, and Math Client typed in the Name text box."::: 1. Choose **OK** to create the client app project. @@ -423,27 +428,27 @@ A minimal console application project is created for you. The name for the main ### To create a client app in Visual Studio 2015 -1. To create a C++ app that uses the DLL that you created, on the menu bar, choose **File** > **New** > **Project**. +1. To create a C++ app that uses the DLL you created, on the menu bar, choose **File** > **New** > **Project**. 1. In the left pane of the **New Project** dialog, select **Win32** under **Installed** > **Templates** > **Visual C++**. In the center pane, select **Win32 Console Application**. Specify the name for the project, *MathClient*, in the **Name** edit box. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. - :::image type="content" source="media/mathclient-project-name.png" alt-text="Screenshot of the New Project dialog box with Win32 Console Application Visual C plus plus highlighted, and Math Client typed in the Name text box."::: + :::image type="content" source="media/mathclient-project-name.png" alt-text="Screenshot of the New Project dialog with Win32 Console Application Visual C plus plus highlighted, and Math Client typed in the Name text box."::: -1. Choose the **OK** button to dismiss the **New Project** dialog and start the **Win32 Application Wizard**. On the **Overview** page of the **Win32 Application Wizard** dialog box, choose the **Next** button. +1. Choose the **OK** button to dismiss the **New Project** dialog and start the **Win32 Application Wizard**. On the **Overview** page of the **Win32 Application Wizard** dialog, choose the **Next** button. 1. On the **Application Settings** page, under **Application type**, select **Console application** if it isn't already selected. -1. Choose the **Finish** button to create the project. +1. Choose **Finish** to create the project. -When the wizard finishes, a minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *`MathClient.cpp`*. You can build it, but it doesn't use your DLL yet. +When the wizard finishes, it creates a minimal console application project for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *`MathClient.cpp`*. You can build it, but it doesn't use your DLL yet. ::: moniker-end -Next, to call the MathLibrary functions in your source code, your project must include the *`MathLibrary.h`* file. You could copy this header file into your client app project, then add it to the project as an existing item. This method can be a good choice for third-party libraries. However, if you're working on the code for your DLL and your client at the same time, the header files could get out of sync. To avoid this issue, set the **Additional Include Directories** path in your project to include the path to the original header. +Next, to call the MathLibrary functions in your source code, your project must include the *`MathLibrary.h`* file. You can copy this header file into your client app project, then add it to the project as an existing item. This method can be a good choice for third-party libraries. However, if you're working on the code for your DLL and your client at the same time, the header files can get out of sync. To avoid this issue, set the **Additional Include Directories** path in your project to include the path to the original header. ### To add the DLL header to your include path -1. Right-click on the **MathClient** node in **Solution Explorer** to open the **Property Pages** dialog. +1. Right-click the **MathClient** node in **Solution Explorer** to open the **Property Pages** dialog. 1. In the **Configuration** dropdown box, select **All Configurations** if it's not already selected. @@ -453,7 +458,7 @@ Next, to call the MathLibrary functions in your source code, your project must i :::image type="content" source="media/mathclient-additional-include-directories-property.png" alt-text="Screenshot of the Property Pages dialog showing the Edit command in the Additional Include Directories property dropdown."::: -1. Double-click in the top pane of the **Additional Include Directories** dialog box to enable an edit control. Or, choose the folder icon to create a new entry. +1. Double-click in the top pane of the **Additional Include Directories** dialog to enable an edit control. Or, choose the folder icon to create a new entry. 1. In the edit control, specify the path to the location of the *`MathLibrary.h`* header file. You can choose the ellipsis (**...**) control to browse to the correct folder. @@ -469,7 +474,7 @@ Next, to call the MathLibrary functions in your source code, your project must i :::image type="content" source="media/mathclient-additional-include-directories.png" alt-text="Screenshot of the Additional Include Directories dialog showing the relative path to the MathLibrary directory."::: -1. After you've entered the path to the header file in the **Additional Include Directories** dialog box, choose the **OK** button. In the **Property Pages** dialog box, choose the **OK** button to save your changes. +1. After you enter the path to the header file in the **Additional Include Directories** dialog, choose **OK**. In the **Property Pages** dialog, choose **OK** to save your changes. You can now include the *`MathLibrary.h`* file and use the functions it declares in your client application. Replace the contents of *`MathClient.cpp`* by using this code: @@ -495,31 +500,31 @@ int main() } ``` -This code can be compiled, but not linked. If you build the client app now, the error list shows several LNK2019 errors. That's because your project is missing some information: You haven't specified that your project has a dependency on the *`MathLibrary.lib`* library yet. And, you haven't told the linker how to find the *`MathLibrary.lib`* file. +This code can be compiled, but not linked. If you build the client app now, the error list shows several LNK2019 errors. That's because your project is missing some information: You didn't specify that your project has a dependency on the *`MathLibrary.lib`* library yet. And, you didn't tell the linker how to find the *`MathLibrary.lib`* file. -To fix this issue, you could copy the library file directly into your client app project. The linker would find and use it automatically. However, if both the library and the client app are under development, that might lead to changes in one copy that aren't shown in the other. To avoid this issue, you can set the **Additional Dependencies** property to tell the build system that your project depends on *`MathLibrary.lib`*. And, you can set an **Additional Library Directories** path in your project to include the path to the original library when you link. +To fix this problem, you could copy the library file directly into your client app project. The linker would find and use it automatically. However, if both the library and the client app are under development, that action might lead to changes in one copy that aren't shown in the other. To avoid this problem, set the **Additional Dependencies** property to tell the build system that your project depends on *`MathLibrary.lib`*. And, set an **Additional Library Directories** path in your project to include the path to the original library when you link. ### To add the DLL import library to your project -1. Right-click on the **MathClient** node in **Solution Explorer** and choose **Properties** to open the **Property Pages** dialog. +1. Right-click the **MathClient** node in **Solution Explorer** and select **Properties** to open the **Property Pages** dialog. -1. In the **Configuration** dropdown box, select **All Configurations** if it's not already selected. It ensures that any property changes apply to both Debug and Release builds. +1. In the **Configuration** dropdown box, select **All Configurations** if it's not already selected. This selection ensures that any property changes apply to both Debug and Release builds. 1. In the left pane, select **Configuration Properties** > **Linker** > **Input**. In the property pane, select the dropdown control next to the **Additional Dependencies** edit box, and then choose **Edit**. - :::image type="content" source="media/mathclient-additional-dependencies-property.png" alt-text="Screenshot of the Property Pages dialog box under Input that shows the Edit command in the Additional Dependencies property dropdown."::: + :::image type="content" source="media/mathclient-additional-dependencies-property.png" alt-text="Screenshot of the Property Pages dialog under Input that shows the Edit command in the Additional Dependencies property dropdown."::: 1. In the **Additional Dependencies** dialog, add *`MathLibrary.lib`* to the list in the top edit control. - :::image type="content" source="media/mathclient-additional-dependencies.png" alt-text="Screenshot of the Additional Dependencies dialog box showing the MathLibrary.lib file."::: + :::image type="content" source="media/mathclient-additional-dependencies.png" alt-text="Screenshot of the Additional Dependencies dialog showing the MathLibrary.lib file."::: -1. Choose **OK** to go back to the **Property Pages** dialog box. +1. Choose **OK** to go back to the **Property Pages** dialog. 1. In the left pane, select **Configuration Properties** > **Linker** > **General**. In the property pane, select the dropdown control next to the **Additional Library Directories** edit box, and then choose **Edit**. - :::image type="content" source="media/mathclient-additional-library-directories-property.png" alt-text="Screenshot of the Property Pages dialog box under General that shows the Edit command in the Additional Library Directories property dropdown."::: + :::image type="content" source="media/mathclient-additional-library-directories-property.png" alt-text="Screenshot of the Property Pages dialog under General that shows the Edit command in the Additional Library Directories property dropdown."::: -1. Double-click in the top pane of the **Additional Library Directories** dialog box to enable an edit control. In the edit control, specify the path to the location of the *`MathLibrary.lib`* file. By default, it's in a folder called *Debug* directly under the DLL solution folder. If you create a release build, the file is placed in a folder called *Release*. You can use the `$(IntDir)` macro so that the linker can find your DLL, no matter which kind of build you create. If you followed the directions to put your client project in a separate solution from the DLL project, the relative path should look like this: +1. Double-click in the top pane of the **Additional Library Directories** dialog to enable an edit control. In the edit control, specify the path to the location of the *`MathLibrary.lib`* file. By default, it's in a folder called *Debug* directly under the DLL solution folder. If you create a release build, the file is placed in a folder called *Release*. You can use the `$(IntDir)` macro so that the linker can find your DLL, no matter which kind of build you create. If you followed the directions to put your client project in a separate solution from the DLL project, the relative path should look like this: `..\..\MathLibrary\$(IntDir)` @@ -527,23 +532,23 @@ To fix this issue, you could copy the library file directly into your client app :::image type="content" source="media/mathclient-additional-library-directories.png" alt-text="Screenshot of the Additional Library Directories dialog."::: -1. Once you've entered the path to the library file in the **Additional Library Directories** dialog box, choose the **OK** button to go back to the **Property Pages** dialog box. Choose **OK** to save the property changes. +1. After you enter the path to the library file in the **Additional Library Directories** dialog, choose **OK** to go back to the **Property Pages** dialog. Choose **OK** to save the property changes. -Your client app can now compile and link successfully, but it still doesn't have everything it needs to run. When the operating system loads your app, it looks for the MathLibrary DLL. If it can't find the DLL in certain system directories, the environment path, or the local app directory, the load fails. Depending on the operating system, you'll see an error message like this: +Your client app can now compile and link successfully, but it still doesn't have everything it needs to run. When the operating system loads your app, it looks for the MathLibrary DLL. If it can't find the DLL in certain system directories, the environment path, or the local app directory, the load fails. Depending on the operating system, you see an error message like this: :::image type="content" source="media/mathclient-system-error-mathlibrary-dll-not-found.png" alt-text="Screenshot of the error dialog, MathLibrary DLL not found."::: -One way to avoid this issue is to copy the DLL to the directory that contains your client executable as part of the build process. You can add a *post-build event* to your project, to add a command that copies the DLL to your build output directory. The command specified here copies the DLL only if it's missing or has changed. It uses macros to copy to and from the Debug or Release locations, based on your build configuration. +One way to avoid this problem is to copy the DLL to the directory that contains your client executable as part of the build process. You can add a *post-build event* to your project, to add a command that copies the DLL to your build output directory. The command you specify here copies the DLL only if it's missing or changed. It uses macros to copy to and from the Debug or Release locations, based on your build configuration. ### To copy the DLL in a post-build event -1. Right-click on the **MathClient** node in **Solution Explorer** and choose **Properties** to open the **Property Pages** dialog. +1. Right-click the **MathClient** node in **Solution Explorer** and select **Properties** to open the **Property Pages** dialog. 1. In the **Configuration** dropdown box, select **All Configurations** if it isn't already selected. 1. In the left pane, select **Configuration Properties** > **Build Events** > **Post-Build Event**. -1. In the property pane, select the edit control in the **Command Line** field. If you followed the directions to put your client project in a separate solution from the DLL project, then enter this command: +1. In the property pane, select the edit control in the **Command Line** field. If you followed the directions to put your client project in a separate solution from the DLL project, enter this command: `xcopy /y /d "..\..\MathLibrary\$(IntDir)MathLibrary.dll" "$(OutDir)"` @@ -551,9 +556,9 @@ One way to avoid this issue is to copy the DLL to the directory that contains yo :::image type="content" source="media/mathclient-post-build-command-line.png" alt-text="Screenshot of the Property Pages dialog showing the post build event command line property."::: -1. Choose the **OK** button to save your changes to the project properties. +1. Select **OK** to save your changes to the project properties. -Now your client app has everything it needs to build and run. Build the application by choosing **Build** > **Build Solution** on the menu bar. The **Output** window in Visual Studio should have something like the following example depending on your version of Visual Studio: +Your client app now has everything it needs to build and run. Build the application by selecting **Build** > **Build Solution** on the menu bar. The **Output** window in Visual Studio shows something like the following example depending on your version of Visual Studio: ```Output 1>------ Build started: Project: MathClient, Configuration: Debug Win32 ------ @@ -563,15 +568,15 @@ Now your client app has everything it needs to build and run. Build the applicat ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== ``` -Congratulations, you've created an application that calls functions in your DLL. Now run your application to see what it does. On the menu bar, choose **Debug** > **Start Without Debugging**. Visual Studio opens a command window for the program to run in. The last part of the output should look like: +You created an application that calls functions in your DLL. Now run your application to see what it does. On the menu bar, select **Debug** > **Start Without Debugging**. Visual Studio opens a command window for the program to run in. The last part of the output looks like: :::image type="content" source="media/mathclient-run-without-debugging.png" alt-text="Screenshot of the command window output when you start the client app without debugging."::: Press any key to dismiss the command window. -Now that you've created a DLL and a client application, you can experiment. Try setting breakpoints in the code of the client app, and run the app in the debugger. See what happens when you step into a library call. Add other functions to the library, or write another client app that uses your DLL. +Now that you created a DLL and a client application, you can experiment. Try setting breakpoints in the code of the client app, and run the app in the debugger. See what happens when you step into a library call. Add other functions to the library, or write another client app that uses your DLL. -When you deploy your app, you must also deploy the DLLs it uses. The simplest way to make the DLLs that you build, or that you include from third parties, available is to put them in the same directory as your app. It's known as *app-local deployment*. For more information about deployment, see [Deployment in Microsoft C++](../windows/deployment-in-visual-cpp.md). +When you deploy your app, you must also deploy the DLLs it uses. The simplest way to make the DLLs that you build, or that you include from third parties, available is to put them in the same directory as your app. This approach is known as *app-local deployment*. For more information about deployment, see [Deployment in Microsoft C++](../windows/deployment-in-visual-cpp.md). ## See also From b212ffd3ccda51d7444d53472aebb6d9a69ca43f Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Thu, 16 Jul 2026 16:19:06 -0700 Subject: [PATCH 570/619] Metadata fix. --- ...lkthrough-creating-and-using-a-dynamic-link-library-cpp.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md index d1ac1dfe678..f92da7c85c7 100644 --- a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md +++ b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md @@ -1,13 +1,11 @@ --- title: Create and Use Your Own Dynamic-Link Library (C++) description: Learn how to build a C++ DLL in Visual Studio. This tutorial walks you through creating exported functions, a console client app, and running the finished project. -#customer intent: As a C++ developer, I want to create a dynamic-link library in Visual Studio, so that I can share code and resources across multiple apps. ms.topic: tutorial ms.date: 07/16/2026 -author: TimShererWithAquent -ms.author: v-tishe helpviewer_keywords: ["libraries [C++], DLLs", "DLLs [C++], walkthroughs"] ms.custom: sfi-image-nochange +#customer intent: As a C++ developer, I want to create a dynamic-link library in Visual Studio, so that I can share code and resources across multiple apps. --- # Walkthrough: Create and use your own dynamic-link library (C++) From 940ba87ad0c99931e0a897fb5ae7cf186976ada9 Mon Sep 17 00:00:00 2001 From: Zack Johnson Date: Fri, 17 Jul 2026 11:26:04 -0400 Subject: [PATCH 571/619] Document Managed C++ support limitations for ASan Add section on Managed C++ limitations with ASan. --- docs/sanitizers/asan-known-issues.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 7d3b22a2e7a..adbe9f72ae7 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -105,6 +105,12 @@ On x64, MSVC ASan's [shadow bytes](./asan-shadow-bytes.md) region occupies sever The Visual Studio debugger handles this gracefully, and doesn't show these traces. However, debuggers like WinDbgX may break on every exception by default. Disabling breaking on first-chance exceptions is recommended. For example, in WinDbgX, this corresponds to the [`sxd av`](/windows-hardware/drivers/debuggercmds/sx--sxd--sxe--sxi--sxn--sxr--sx---set-exceptions-) command. +## Managed C++ is not fully supported + +An image built with both `/fsanitize=address` and `/clr` may link and start, and native code that is normally compiled with AddressSanitizer can still report memory-safety errors when it is called from C++/CLI code. + +However, in managed C++ (C++/CLI or applications compiled with /clr), ASan support is limited to native code. Managed method bodies, managed objects, JIT-generated code, garbage-collected memory, managed thread startup, finalizers, and CLR shutdown/unload behavior are owned by the CLR and aren't guaranteed to have ASan load/store instrumentation. For reliable ASan diagnostics, put memory-augmenting implementation code in native translation units or native DLLs that are compiled normally with `/fsanitize=address`, and call that code from C++/CLI wrapper code. + ## See also [AddressSanitizer overview](asan.md)\ From 5458dc5e6be8a79536595fa348188b2e19acfd45 Mon Sep 17 00:00:00 2001 From: Zack Johnson Date: Fri, 17 Jul 2026 12:02:46 -0400 Subject: [PATCH 572/619] Update ASan known issues for C++/CLI support Clarify limitations of ASan support for C++/CLI and provide additional notes on potential misleading reports. --- docs/sanitizers/asan-known-issues.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index adbe9f72ae7..fc9cc75f91a 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -109,7 +109,15 @@ The Visual Studio debugger handles this gracefully, and doesn't show these trace An image built with both `/fsanitize=address` and `/clr` may link and start, and native code that is normally compiled with AddressSanitizer can still report memory-safety errors when it is called from C++/CLI code. -However, in managed C++ (C++/CLI or applications compiled with /clr), ASan support is limited to native code. Managed method bodies, managed objects, JIT-generated code, garbage-collected memory, managed thread startup, finalizers, and CLR shutdown/unload behavior are owned by the CLR and aren't guaranteed to have ASan load/store instrumentation. For reliable ASan diagnostics, put memory-augmenting implementation code in native translation units or native DLLs that are compiled normally with `/fsanitize=address`, and call that code from C++/CLI wrapper code. +However, ASan support for C++/CLI is limited to normally compiled native code. C++/CLI method bodies, managed objects, JIT-generated code, garbage-collected memory, managed thread startup, finalizers, and CLR shutdown or unload behavior are owned by the CLR and aren't guaranteed to have ASan load/store instrumentation. For reliable ASan diagnostics, put memory-unsafe implementation code in native translation units or native DLLs that are compiled normally with `/fsanitize=address`, and call that code from C++/CLI wrapper code. + +For applications that continue running, you may experience misleading ASan reports or missed coverage: + +- Native-looking STL code compiled as C++/CLI may miss coverage. Even though the source looks identical, accesses emitted in the C++/CLI method body may not have native ASan load/store checks. +- Managed array bounds errors are reported by the CLR, not ASan. A managed out-of-range access should be expected to produce CLR behavior such as `IndexOutOfRangeException`, not an `ERROR: AddressSanitizer` report. +- Code running on CLR-created managed threads may miss ASan diagnostics for memory accesses emitted inside C++/CLI method bodies. The thread transition completing only proves the CLR transition worked; it doesn't prove the method body is ASan-covered. +- C++/CLI finalizers and normal C++/CLI process teardown are CLR-owned and order-dependent. Failures or reports during finalization, shutdown, or mixed-mode unload shouldn't be interpreted as reliable ASan diagnostics for user memory bugs. +- Loading an ASan-enabled C++/CLI wrapper DLL from a native host can produce misleading runtime failures, such as ASan access-violation reports on unknown addresses. ## See also From e3448c0c8e9d048903069e3cb6ed1ec067b6cec9 Mon Sep 17 00:00:00 2001 From: Zack Johnson Date: Mon, 20 Jul 2026 10:27:09 -0400 Subject: [PATCH 573/619] Apply suggestions from code review Co-authored-by: learn-build-service-prod-09[bot] <274431102+learn-build-service-prod-09[bot]@users.noreply.github.com> --- docs/sanitizers/asan-known-issues.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index fc9cc75f91a..0e07801f498 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -105,17 +105,17 @@ On x64, MSVC ASan's [shadow bytes](./asan-shadow-bytes.md) region occupies sever The Visual Studio debugger handles this gracefully, and doesn't show these traces. However, debuggers like WinDbgX may break on every exception by default. Disabling breaking on first-chance exceptions is recommended. For example, in WinDbgX, this corresponds to the [`sxd av`](/windows-hardware/drivers/debuggercmds/sx--sxd--sxe--sxi--sxn--sxr--sx---set-exceptions-) command. -## Managed C++ is not fully supported +## Managed C++ isn't fully supported -An image built with both `/fsanitize=address` and `/clr` may link and start, and native code that is normally compiled with AddressSanitizer can still report memory-safety errors when it is called from C++/CLI code. +An image built with both `/fsanitize=address` and `/clr` might link and start. Native code that's normally compiled with AddressSanitizer can still report memory-safety errors when C++/CLI code calls it. -However, ASan support for C++/CLI is limited to normally compiled native code. C++/CLI method bodies, managed objects, JIT-generated code, garbage-collected memory, managed thread startup, finalizers, and CLR shutdown or unload behavior are owned by the CLR and aren't guaranteed to have ASan load/store instrumentation. For reliable ASan diagnostics, put memory-unsafe implementation code in native translation units or native DLLs that are compiled normally with `/fsanitize=address`, and call that code from C++/CLI wrapper code. +However, ASan support for C++/CLI is limited to normally compiled native code. The CLR owns C++/CLI method bodies, managed objects, JIT-generated code, garbage-collected memory, managed thread startup, finalizers, and CLR shutdown or unload behavior. These components aren't guaranteed to have ASan load or store instrumentation. For reliable ASan diagnostics, put memory-unsafe implementation code in native translation units or native DLLs that are compiled normally with `/fsanitize=address`. Call that code from C++/CLI wrapper code. -For applications that continue running, you may experience misleading ASan reports or missed coverage: +For applications that continue running, you might see misleading ASan reports or missed coverage: -- Native-looking STL code compiled as C++/CLI may miss coverage. Even though the source looks identical, accesses emitted in the C++/CLI method body may not have native ASan load/store checks. -- Managed array bounds errors are reported by the CLR, not ASan. A managed out-of-range access should be expected to produce CLR behavior such as `IndexOutOfRangeException`, not an `ERROR: AddressSanitizer` report. -- Code running on CLR-created managed threads may miss ASan diagnostics for memory accesses emitted inside C++/CLI method bodies. The thread transition completing only proves the CLR transition worked; it doesn't prove the method body is ASan-covered. +- Native-looking STL code compiled as C++/CLI might miss coverage. Even though the source looks identical, accesses emitted in the C++/CLI method body might not have native ASan load or store checks. +- The CLR, not ASan, reports managed array bounds errors. A managed out-of-range access should be expected to produce CLR behavior such as `IndexOutOfRangeException`, not an `ERROR: AddressSanitizer` report. +- Code running on CLR-created managed threads might miss ASan diagnostics for memory accesses emitted inside C++/CLI method bodies. The thread transition completing only proves the CLR transition worked; it doesn't prove the method body is ASan-covered. - C++/CLI finalizers and normal C++/CLI process teardown are CLR-owned and order-dependent. Failures or reports during finalization, shutdown, or mixed-mode unload shouldn't be interpreted as reliable ASan diagnostics for user memory bugs. - Loading an ASan-enabled C++/CLI wrapper DLL from a native host can produce misleading runtime failures, such as ASan access-violation reports on unknown addresses. From 6d709da414176125d5c075f8cb8228b0b2ba6a4e Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Mon, 27 Jul 2026 14:17:03 -0700 Subject: [PATCH 574/619] clarify that off is the default --- docs/ide/include-cleanup-overview.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/ide/include-cleanup-overview.md b/docs/ide/include-cleanup-overview.md index 6fbc7528e65..31e174a5a28 100644 --- a/docs/ide/include-cleanup-overview.md +++ b/docs/ide/include-cleanup-overview.md @@ -1,7 +1,7 @@ --- title: "Clean up C/C++ #includes in Visual Studio" description: "Learn about using C/C++ Include Cleanup in Visual Studio to remove unused headers, and transitively add indirect headers needed in your project." -ms.date: 07/13/2026 +ms.date: 07/27/2026 ms.topic: "overview" ms.custom: intro-overview f1_keywords: ["include cleanup"] @@ -14,7 +14,7 @@ Starting with Visual Studio 17.8 Preview 1, Visual Studio provides an `#include` - Offers to add header files for code that compiles only because a needed header file is included indirectly by another header file. - Offers to remove unused header files--improving build times and code cleanliness. -Include Cleanup is on by default. To learn how to configure it, see [Config C/C++ Include Cleanup in Visual Studio](include-cleanup-config.md). +Include Cleanup is off by default. To learn how to configure it, see [Config C/C++ Include Cleanup in Visual Studio](include-cleanup-config.md). ## Direct vs indirect headers From f45023b79ce2f977f564d694d94f3919d2dfe00d Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Mon, 27 Jul 2026 14:20:49 -0700 Subject: [PATCH 575/619] edit --- docs/ide/include-cleanup-overview.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/ide/include-cleanup-overview.md b/docs/ide/include-cleanup-overview.md index 31e174a5a28..9f595b37d97 100644 --- a/docs/ide/include-cleanup-overview.md +++ b/docs/ide/include-cleanup-overview.md @@ -9,7 +9,12 @@ helpviewer_keywords: ["include cleanup"] --- # Clean up C/C++ includes in Visual Studio +::: moniker range=" Date: Tue, 28 Jul 2026 07:11:42 -0700 Subject: [PATCH 576/619] Clarify version prefix for Visual Studio Command Prompt (#5946) Updated instructions for starting Visual Studio Command Prompt to reflect changes in version specification. --- docs/overview/acquire-msvc.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/acquire-msvc.md b/docs/overview/acquire-msvc.md index cbd86ef4549..b70d02b277e 100644 --- a/docs/overview/acquire-msvc.md +++ b/docs/overview/acquire-msvc.md @@ -184,10 +184,10 @@ cmake -G "Visual Studio 18 2026" -T "version=14.52" ..\ Some build systems need the command prompt to have the `PATH`, `LIB`, `INCLUDE`, and related environment variables set before you run them. -To start a Visual Studio Command Prompt that targets a supported Build Tools version, add `-vcvars_ver=` where `` matches the folder name under `\VC\Tools\MSVC\`. +To start a Visual Studio Command Prompt that targets a supported Build Tools version, add `-vcvars_ver=` where `` matches the prefix of a folder name under `\VC\Tools\MSVC\`. ```cmd -\VC\Auxiliary\Build\vcvars64.bat -vcvars_ver=14.50.35717 +\VC\Auxiliary\Build\vcvars64.bat -vcvars_ver=14.50 ``` To start a Visual Studio Command Prompt targeting the MSVC preview tools, use `-vcvars_ver=preview`: From d6f4722c34a29ed0df7bd74279ee2a795cd006ef Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Tue, 28 Jul 2026 07:55:59 -0700 Subject: [PATCH 577/619] Incorporate feedback. --- ...rough-creating-and-using-a-dynamic-link-library-cpp.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md index f92da7c85c7..3973cab6fa2 100644 --- a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md +++ b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md @@ -2,7 +2,7 @@ title: Create and Use Your Own Dynamic-Link Library (C++) description: Learn how to build a C++ DLL in Visual Studio. This tutorial walks you through creating exported functions, a console client app, and running the finished project. ms.topic: tutorial -ms.date: 07/16/2026 +ms.date: 07/28/2026 helpviewer_keywords: ["libraries [C++], DLLs", "DLLs [C++], walkthroughs"] ms.custom: sfi-image-nochange #customer intent: As a C++ developer, I want to create a dynamic-link library in Visual Studio, so that I can share code and resources across multiple apps. @@ -53,7 +53,7 @@ For links to more information about DLLs, see [Create C/C++ DLLs in Visual Studi - Some familiarity with the C++ language. Don't worry, the walkthrough doesn't cover anything too complicated. -::: moniker range=">=msvc-150" +::: moniker range="msvc-150" > [!NOTE] > This walkthrough assumes you're using Visual Studio 2017 version 15.9 or later. Some earlier versions of Visual Studio 2017 had defects in the code templates, or used different user interface dialogs. To avoid problems, use the Visual Studio Installer to update Visual Studio 2017 to version 15.9 or later. @@ -88,7 +88,7 @@ When the solution is created, you can see the generated project and source files ::: moniker-end -::: moniker range=">=msvc-150" +::: moniker range="msvc-150" ### To create a DLL project in Visual Studio 2017 @@ -406,7 +406,7 @@ A minimal console application project is created for you. The name for the main ::: moniker-end -::: moniker range=">=msvc-150" +::: moniker range="msvc-150" ### To create a client app in Visual Studio 2017 From 76409a95c78d783a924a9e6576a1a460d730b10b Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Tue, 28 Jul 2026 08:02:53 -0700 Subject: [PATCH 578/619] Fix moniker. --- ...walkthrough-creating-and-using-a-dynamic-link-library-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md index 3973cab6fa2..a18c4349852 100644 --- a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md +++ b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md @@ -346,7 +346,7 @@ To verify that everything works so far, compile the DLL. To compile, choose **Bu ::: moniker-end -::: moniker range=">=msvc-150" +::: moniker range="msvc-150" ```Output 1>------ Build started: Project: MathLibrary, Configuration: Debug Win32 ------ From c10b7933a8babc716a9673d0fb63139f9ef53a3d Mon Sep 17 00:00:00 2001 From: "learn-build-service-prod[bot]" <113403604+learn-build-service-prod[bot]@users.noreply.github.com> Date: Tue, 28 Jul 2026 10:17:17 -0700 Subject: [PATCH 579/619] Confirm merge from FromPublicMasterBranch to main to sync with https://github.com/MicrosoftDocs/cpp-docs (branch main) (#6778) * Update Vectorized STL algorithm documentation to reflect the current stae (#5937) Since the last update: * ARM64 and ARM64EC vectorization was added. Mention of x64 and x86 is removed, as vectorization is now supported on any target, except deprecated `/clr:pure` and `/clr:safe` modes. * `includes` is now manually vectorized too * `replace_copy` is now manually vectorized too Also moved `find_end` to `search` / `search_n` group, where it fits better. * Update header-files-cpp.md (#5938) Clarify intent of section * Update documentation on accessing System.String characters (#5940) * Update documentation on accessing System.String characters Added important note about treating interior pointers as const and linked to unsafe code best practices. * Update docs/dotnet/how-to-access-characters-in-a-system-string.md Co-authored-by: Jan Kotas * Apply suggestions from code review Co-authored-by: Aaron R Robinson * Apply suggestions from code review Co-authored-by: Aaron R Robinson --------- Co-authored-by: Jan Kotas * Clarify version prefix for Visual Studio Command Prompt (#5946) Updated instructions for starting Visual Studio Command Prompt to reflect changes in version specification. --------- Co-authored-by: learn-build-service-prod[bot] <113403604+learn-build-service-prod[bot]@users.noreply.github.com> Co-authored-by: Learn Build Service GitHub App Co-authored-by: Alex Guteniev Co-authored-by: veganaiZe <7102064+veganaiZe@users.noreply.github.com> Co-authored-by: Aaron R Robinson Co-authored-by: Jan Kotas Co-authored-by: Eric Brumer --- docs/overview/acquire-msvc.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/overview/acquire-msvc.md b/docs/overview/acquire-msvc.md index cbd86ef4549..b70d02b277e 100644 --- a/docs/overview/acquire-msvc.md +++ b/docs/overview/acquire-msvc.md @@ -184,10 +184,10 @@ cmake -G "Visual Studio 18 2026" -T "version=14.52" ..\ Some build systems need the command prompt to have the `PATH`, `LIB`, `INCLUDE`, and related environment variables set before you run them. -To start a Visual Studio Command Prompt that targets a supported Build Tools version, add `-vcvars_ver=` where `` matches the folder name under `\VC\Tools\MSVC\`. +To start a Visual Studio Command Prompt that targets a supported Build Tools version, add `-vcvars_ver=` where `` matches the prefix of a folder name under `\VC\Tools\MSVC\`. ```cmd -\VC\Auxiliary\Build\vcvars64.bat -vcvars_ver=14.50.35717 +\VC\Auxiliary\Build\vcvars64.bat -vcvars_ver=14.50 ``` To start a Visual Studio Command Prompt targeting the MSVC preview tools, use `-vcvars_ver=preview`: From d64339b49e792602e5968f3beea8811951d60c01 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Tue, 28 Jul 2026 14:32:43 -0700 Subject: [PATCH 580/619] Change choose to select. --- ...ng-and-using-a-dynamic-link-library-cpp.md | 56 +++++++++---------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md index a18c4349852..93f493a1816 100644 --- a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md +++ b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md @@ -68,19 +68,19 @@ In the following set of tasks, you create a project for your DLL, add code, and ### To create a DLL project in Visual Studio -1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a New Project** dialog. +1. On the menu bar, select **File** > **New** > **Project** to open the **Create a New Project** dialog. :::image type="content" source="media/create-new-dll-project-2019.png" alt-text="Screenshot of the Create a new project dialog with the dynamic-link library template highlighted."::: 1. At the top of the dialog, set **Language** to **C++**, set **Platform** to **Windows**, and set **Project type** to **Library**. -1. From the filtered list of project types, select **Dynamic-link Library (DLL)**, and then choose **Next**. +1. From the filtered list of project types, select **Dynamic-link Library (DLL)**, and then select **Next**. If you don't see that type, make sure you have **Desktop development with C++** installed, as described in the prerequisites. 1. In the **Configure your new project** page, enter *MathLibrary* in the **Project name** box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Uncheck **Place solution and project in the same directory** if it's checked. -1. Choose the **Create** button to create the project. +1. Select the **Create** button to create the project. When the solution is created, you can see the generated project and source files in the **Solution Explorer** window in Visual Studio. @@ -92,13 +92,13 @@ When the solution is created, you can see the generated project and source files ### To create a DLL project in Visual Studio 2017 -1. On the menu bar, choose **File** > **New** > **Project** to open the **New Project** dialog. +1. On the menu bar, select **File** > **New** > **Project** to open the **New Project** dialog. 1. In the left pane of the **New Project** dialog, select **Installed** > **Visual C++** > **Windows Desktop**. In the center pane, select **Dynamic-Link Library (DLL)**. Enter *MathLibrary* in the **Name** box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. :::image type="content" source="media/mathlibrary-new-project-name-159.png" alt-text="Screenshot of the New Project dialog in Visual Studio 2017 showing Math Library in the Name text box."::: -1. Choose the **OK** button to create the project. +1. Select the **OK** button to create the project. When the solution is created, you can see the generated project and source files in the **Solution Explorer** window in Visual Studio. @@ -110,21 +110,21 @@ When the solution is created, you can see the generated project and source files ### To create a DLL project in Visual Studio 2015 and older versions -1. On the menu bar, choose **File** > **New** > **Project**. +1. On the menu bar, select **File** > **New** > **Project**. 1. In the left pane of the **New Project** dialog, expand **Installed** > **Templates**, and select Visual C++. In the center pane, select **Win32 Console Application**. Enter *MathLibrary* as the **Name** for the project. Don't change the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Select **Create directory for solution**. :::image type="content" source="media/mathlibrary-project-name.png" alt-text="Screenshot of the New Project dialog in Visual Studio 2015 showing MathLibrary in the Name text box."::: -1. Choose **OK** to dismiss the **New Project** dialog and start the **Win32 Application Wizard**. +1. Select **OK** to dismiss the **New Project** dialog and start the **Win32 Application Wizard**. :::image type="content" source="media/mathlibrary-project-wizard-1.png" alt-text="Screenshot of the Win32 Application Wizard Overview page."::: -1. Choose **Next**. On the **Application Settings** page, under **Application type**, select **DLL**. +1. Select **Next**. On the **Application Settings** page, under **Application type**, select **DLL**. :::image type="content" source="media/mathlibrary-project-wizard-2.png" alt-text="Screenshot of the Win32 Application Wizard Application Settings Page."::: -1. Choose **Finish** to create the project. +1. Select **Finish** to create the project. When the wizard finishes the solution, you can see the generated project and source files in the **Solution Explorer** window in Visual Studio. @@ -136,13 +136,13 @@ Right now, this DLL doesn't do very much. Next, you'll create a header file to d ### To add a header file to the DLL -1. To create a header file for your functions, on the menu bar, choose **Project** > **Add New Item**. +1. To create a header file for your functions, on the menu bar, select **Project** > **Add New Item**. 1. In the **Add New Item** dialog, in the left pane, select **Visual C++**. In the center pane, select **Header File (.h)**. Specify *`MathLibrary.h`* as the name for the header file. :::image type="content" source="media/mathlibrary-add-new-item-header-file.png" alt-text="Screenshot of the Add New Item dialog with the C plus plus Header File template selected, and MathLibrary.h entered in the Name textbox."::: -1. Choose the **Add** button to generate a blank header file, which is displayed in a new editor window. +1. Select the **Add** button to generate a blank header file, which is displayed in a new editor window. :::image type="content" source="media/edit-empty-mathlibrary-header.png" alt-text="Screenshot of the empty MathLibrary.h file in the editor."::: @@ -329,7 +329,7 @@ When the `MATHLIBRARY_EXPORTS` macro is defined, the `MATHLIBRARY_API` macro set ::: moniker-end -To verify that everything works so far, compile the DLL. To compile, choose **Build** > **Build Solution** on the menu bar. The DLL and related compiler output are placed in a folder called `Debug` directly below the solution folder. If you create a Release build, the output is placed in a folder called `Release`. The output should look something like this: +To verify that everything works so far, compile the DLL. To compile, select **Build** > **Build Solution** on the menu bar. The DLL and related compiler output are placed in a folder called `Debug` directly below the solution folder. If you create a Release build, the output is placed in a folder called `Release`. The output should look something like this: ::: moniker range=">=msvc-160" @@ -390,17 +390,17 @@ To avoid out-of-sync code, set the include path in your client project to includ ### To create a client app in Visual Studio -1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a new project** dialog. +1. On the menu bar, select **File** > **New** > **Project** to open the **Create a new project** dialog. 1. At the top of the dialog, set **Language** to **C++**, set **Platform** to **Windows**, and set **Project type** to **Console**. -1. From the filtered list of project types, choose **Console App** then choose **Next**. +1. From the filtered list of project types, select **Console App** then select **Next**. 1. In the **Configure your new project** page, enter *MathClient* in the **Project name** box to specify a name for the project. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Uncheck **Place solution and project in the same directory** if it's checked. :::image type="content" source="media/mathclient-project-name-2019.png" alt-text="Screenshot of the Create a new project dialog with the Console App option highlighted."::: -1. Choose the **Create** button to create the client project. +1. Select the **Create** button to create the client project. A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *`MathClient.cpp`*. You can build it, but it doesn't use your DLL yet. @@ -410,13 +410,13 @@ A minimal console application project is created for you. The name for the main ### To create a client app in Visual Studio 2017 -1. To create a C++ app that uses the DLL you created, on the menu bar, choose **File** > **New** > **Project**. +1. To create a C++ app that uses the DLL you created, on the menu bar, select **File** > **New** > **Project**. 1. In the left pane of the **New Project** dialog, select **Windows Desktop** under **Installed** > Visual C++. In the center pane, select **Windows Console Application**. Enter *MathClient* in the **Name** box. Keep the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. :::image type="content" source="media/mathclient-new-project-name-159.png" alt-text="Screenshot of the New Project dialog with Windows Console Application highlighted, and Math Client typed in the Name text box."::: -1. Choose **OK** to create the client app project. +1. Select **OK** to create the client app project. A minimal console application project is created for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *`MathClient.cpp`*. You can build it, but it doesn't use your DLL yet. @@ -426,17 +426,17 @@ A minimal console application project is created for you. The name for the main ### To create a client app in Visual Studio 2015 -1. To create a C++ app that uses the DLL you created, on the menu bar, choose **File** > **New** > **Project**. +1. To create a C++ app that uses the DLL you created, on the menu bar, select **File** > **New** > **Project**. 1. In the left pane of the **New Project** dialog, select **Win32** under **Installed** > **Templates** > **Visual C++**. In the center pane, select **Win32 Console Application**. Specify the name for the project, *MathClient*, in the **Name** edit box. Leave the default **Location** and **Solution name** values. Set **Solution** to **Create new solution**. Check **Create directory for solution** if it's unchecked. :::image type="content" source="media/mathclient-project-name.png" alt-text="Screenshot of the New Project dialog with Win32 Console Application Visual C plus plus highlighted, and Math Client typed in the Name text box."::: -1. Choose the **OK** button to dismiss the **New Project** dialog and start the **Win32 Application Wizard**. On the **Overview** page of the **Win32 Application Wizard** dialog, choose the **Next** button. +1. Select the **OK** button to dismiss the **New Project** dialog and start the **Win32 Application Wizard**. On the **Overview** page of the **Win32 Application Wizard** dialog, select the **Next** button. 1. On the **Application Settings** page, under **Application type**, select **Console application** if it isn't already selected. -1. Choose **Finish** to create the project. +1. Select **Finish** to create the project. When the wizard finishes, it creates a minimal console application project for you. The name for the main source file is the same as the project name that you entered earlier. In this example, it's named *`MathClient.cpp`*. You can build it, but it doesn't use your DLL yet. @@ -452,13 +452,13 @@ Next, to call the MathLibrary functions in your source code, your project must i 1. In the left pane, select **Configuration Properties** > **C/C++** > **General**. -1. In the property pane, select the dropdown control next to the **Additional Include Directories** edit box, and then choose **Edit**. +1. In the property pane, select the dropdown control next to the **Additional Include Directories** edit box, and then select **Edit**. :::image type="content" source="media/mathclient-additional-include-directories-property.png" alt-text="Screenshot of the Property Pages dialog showing the Edit command in the Additional Include Directories property dropdown."::: -1. Double-click in the top pane of the **Additional Include Directories** dialog to enable an edit control. Or, choose the folder icon to create a new entry. +1. Double-click in the top pane of the **Additional Include Directories** dialog to enable an edit control. Or, select the folder icon to create a new entry. -1. In the edit control, specify the path to the location of the *`MathLibrary.h`* header file. You can choose the ellipsis (**...**) control to browse to the correct folder. +1. In the edit control, specify the path to the location of the *`MathLibrary.h`* header file. You can select the ellipsis (**...**) control to browse to the correct folder. You can also enter a relative path from your client source files to the folder that contains the DLL header files. If you followed the directions to put your client project in a separate solution from the DLL, the relative path should look like this: @@ -472,7 +472,7 @@ Next, to call the MathLibrary functions in your source code, your project must i :::image type="content" source="media/mathclient-additional-include-directories.png" alt-text="Screenshot of the Additional Include Directories dialog showing the relative path to the MathLibrary directory."::: -1. After you enter the path to the header file in the **Additional Include Directories** dialog, choose **OK**. In the **Property Pages** dialog, choose **OK** to save your changes. +1. After you enter the path to the header file in the **Additional Include Directories** dialog, select **OK**. In the **Property Pages** dialog, select **OK** to save your changes. You can now include the *`MathLibrary.h`* file and use the functions it declares in your client application. Replace the contents of *`MathClient.cpp`* by using this code: @@ -508,7 +508,7 @@ To fix this problem, you could copy the library file directly into your client a 1. In the **Configuration** dropdown box, select **All Configurations** if it's not already selected. This selection ensures that any property changes apply to both Debug and Release builds. -1. In the left pane, select **Configuration Properties** > **Linker** > **Input**. In the property pane, select the dropdown control next to the **Additional Dependencies** edit box, and then choose **Edit**. +1. In the left pane, select **Configuration Properties** > **Linker** > **Input**. In the property pane, select the dropdown control next to the **Additional Dependencies** edit box, and then select **Edit**. :::image type="content" source="media/mathclient-additional-dependencies-property.png" alt-text="Screenshot of the Property Pages dialog under Input that shows the Edit command in the Additional Dependencies property dropdown."::: @@ -516,9 +516,9 @@ To fix this problem, you could copy the library file directly into your client a :::image type="content" source="media/mathclient-additional-dependencies.png" alt-text="Screenshot of the Additional Dependencies dialog showing the MathLibrary.lib file."::: -1. Choose **OK** to go back to the **Property Pages** dialog. +1. Select **OK** to go back to the **Property Pages** dialog. -1. In the left pane, select **Configuration Properties** > **Linker** > **General**. In the property pane, select the dropdown control next to the **Additional Library Directories** edit box, and then choose **Edit**. +1. In the left pane, select **Configuration Properties** > **Linker** > **General**. In the property pane, select the dropdown control next to the **Additional Library Directories** edit box, and then select **Edit**. :::image type="content" source="media/mathclient-additional-library-directories-property.png" alt-text="Screenshot of the Property Pages dialog under General that shows the Edit command in the Additional Library Directories property dropdown."::: @@ -530,7 +530,7 @@ To fix this problem, you could copy the library file directly into your client a :::image type="content" source="media/mathclient-additional-library-directories.png" alt-text="Screenshot of the Additional Library Directories dialog."::: -1. After you enter the path to the library file in the **Additional Library Directories** dialog, choose **OK** to go back to the **Property Pages** dialog. Choose **OK** to save the property changes. +1. After you enter the path to the library file in the **Additional Library Directories** dialog, select **OK** to go back to the **Property Pages** dialog. Select **OK** to save the property changes. Your client app can now compile and link successfully, but it still doesn't have everything it needs to run. When the operating system loads your app, it looks for the MathLibrary DLL. If it can't find the DLL in certain system directories, the environment path, or the local app directory, the load fails. Depending on the operating system, you see an error message like this: From 6e1045b8c4073548c53a43e409503db8a0544183 Mon Sep 17 00:00:00 2001 From: Tim Sherer <28902327+TimShererWithAquent@users.noreply.github.com> Date: Tue, 28 Jul 2026 16:04:36 -0700 Subject: [PATCH 581/619] UUF Fix. (#6771) --- docs/build/how-to-create-a-release-build.md | 28 +++++++++++++----- .../media/vs-2026/configure-release-build.png | Bin 0 -> 15062 bytes 2 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 docs/build/media/vs-2026/configure-release-build.png diff --git a/docs/build/how-to-create-a-release-build.md b/docs/build/how-to-create-a-release-build.md index be26a6e5da9..9aec226e84f 100644 --- a/docs/build/how-to-create-a-release-build.md +++ b/docs/build/how-to-create-a-release-build.md @@ -1,18 +1,32 @@ --- -description: "Learn more about: How to: Create a Release Build" title: "How to: Create a Release Build" -ms.date: "11/04/2016" +description: Learn how to create a release build in Visual Studio. Switch configurations, optimize your program, and prepare it for distribution. +ms.date: "07/16/2026" +author: TimShererWithAquent +ms.author: v-tishe helpviewer_keywords: ["Win32, release build", "release builds, creating"] ms.assetid: 6a4c89b1-48f0-44d2-8703-ca0a4b0351bf +#customer intent: As a developer, I want to create a release build of my program, so that I can distribute an optimized version to my users. --- -# How to: Create a Release Build +# How to create a release build -### To generate a release build of your program +Visual Studio projects have separate release and debug configurations for your program: debug version and release version for distribution. -1. Select **Release** from the **Solution Configuration** drop-down list, which is on the **Standard** toolbar. +In debug configuration, your program has symbolic debug information and no optimization. The release configuration of your program has no symbolic debug information and is fully optimized. -1. On the **Build** menu, click **Build**. +To generate a release build of your program, follow these steps: + +1. Open your solution in Visual Studio. +1. In the **Solutions Configuration** menu under the toolbar, select **Release**. + + :::image type="content" source="media/vs-2026/configure-release-build.png" alt-text="Screenshot shows Visual Studio Solutions Configuration menu with Release highlighted."::: + +1. From the **Build** menu, select **Build**. + +You can instead select **Configuration Manager**, where you can edit the build and release configurations. You can also create custom configurations to debug and release your program for different contexts and platforms. ## See also -[Release Builds](release-builds.md) +- [Project and solution configurations](/visualstudio/ide/understanding-build-configurations) +- [Release Builds](release-builds.md) +- [Common problems](common-problems-when-creating-a-release-build.md) diff --git a/docs/build/media/vs-2026/configure-release-build.png b/docs/build/media/vs-2026/configure-release-build.png new file mode 100644 index 0000000000000000000000000000000000000000..a67c06c8fa3a22d9b853d9da3bbf11f63815b25c GIT binary patch literal 15062 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 literal 0 HcmV?d00001 From 52b14efcc40e807fe9322968a5d7d934e1b14709 Mon Sep 17 00:00:00 2001 From: Zack Johnson Date: Wed, 29 Jul 2026 11:27:13 -0400 Subject: [PATCH 582/619] Update ASan known issues for C++/CLI support Tyler's feedback / improve wording for better understanding. --- docs/sanitizers/asan-known-issues.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 0e07801f498..0ba3b50ea39 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -107,18 +107,17 @@ The Visual Studio debugger handles this gracefully, and doesn't show these trace ## Managed C++ isn't fully supported -An image built with both `/fsanitize=address` and `/clr` might link and start. Native code that's normally compiled with AddressSanitizer can still report memory-safety errors when C++/CLI code calls it. +An image built with both `/fsanitize=address` and `/clr` might link and start. Native code that is compiled with ASan can still report memory-safety errors when C++/CLI code calls it. -However, ASan support for C++/CLI is limited to normally compiled native code. The CLR owns C++/CLI method bodies, managed objects, JIT-generated code, garbage-collected memory, managed thread startup, finalizers, and CLR shutdown or unload behavior. These components aren't guaranteed to have ASan load or store instrumentation. For reliable ASan diagnostics, put memory-unsafe implementation code in native translation units or native DLLs that are compiled normally with `/fsanitize=address`. Call that code from C++/CLI wrapper code. +However, ASan support for C++/CLI is limited to native code compiled without `/clr`. The CLR is responsible for memory mutating operations in C++/CLI methods, managed objects, JIT-generated code, garbage-collected memory, managed thread startup, finalizers, and CLR shutdown or unload behavior. These components aren't guaranteed to have ASan load or store instrumentation. For reliable ASan diagnostics, put memory-unsafe implementation code in native translation units or native DLLs that are compiled normally with `/fsanitize=address`. Call that code from C++/CLI wrapper code. -For applications that continue running, you might see misleading ASan reports or missed coverage: +For applications that run, you might see misleading ASan reports or missed coverage: -- Native-looking STL code compiled as C++/CLI might miss coverage. Even though the source looks identical, accesses emitted in the C++/CLI method body might not have native ASan load or store checks. -- The CLR, not ASan, reports managed array bounds errors. A managed out-of-range access should be expected to produce CLR behavior such as `IndexOutOfRangeException`, not an `ERROR: AddressSanitizer` report. -- Code running on CLR-created managed threads might miss ASan diagnostics for memory accesses emitted inside C++/CLI method bodies. The thread transition completing only proves the CLR transition worked; it doesn't prove the method body is ASan-covered. -- C++/CLI finalizers and normal C++/CLI process teardown are CLR-owned and order-dependent. Failures or reports during finalization, shutdown, or mixed-mode unload shouldn't be interpreted as reliable ASan diagnostics for user memory bugs. +- STL code compiled as C++/CLI might miss coverage. Even though the source looks identical to native C++, accesses emitted in the C++/CLI method body might not have native ASan load or store checks. +- The CLR, not ASan, reports managed array bounds errors. A managed out-of-range access produces CLR behavior such as `IndexOutOfRangeException`, not an `ERROR: AddressSanitizer` report. +- Code running on managed threads might miss ASan diagnostics for memory accesses emitted inside C++/CLI method bodies. Even if the CLR thread transition works, it doesn't prove the method body is ASan aware. +- C++/CLI finalizers and normal C++/CLI process teardown are maanged by the CLR and order-dependent. Don't interpret failures or reports during finalization, shutdown, or mixed-mode unload as reliable ASan diagnostics for user memory bugs. - Loading an ASan-enabled C++/CLI wrapper DLL from a native host can produce misleading runtime failures, such as ASan access-violation reports on unknown addresses. - ## See also [AddressSanitizer overview](asan.md)\ From 5967d883137580767dd4f3e1c7f12816aeb21e1f Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 29 Jul 2026 10:01:16 -0700 Subject: [PATCH 583/619] Apply suggestion from @learn-build-service-prod-02[bot] Co-authored-by: learn-build-service-prod-02[bot] <274428175+learn-build-service-prod-02[bot]@users.noreply.github.com> --- docs/sanitizers/asan-known-issues.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 0ba3b50ea39..cbb610e233c 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -116,7 +116,7 @@ For applications that run, you might see misleading ASan reports or missed cover - STL code compiled as C++/CLI might miss coverage. Even though the source looks identical to native C++, accesses emitted in the C++/CLI method body might not have native ASan load or store checks. - The CLR, not ASan, reports managed array bounds errors. A managed out-of-range access produces CLR behavior such as `IndexOutOfRangeException`, not an `ERROR: AddressSanitizer` report. - Code running on managed threads might miss ASan diagnostics for memory accesses emitted inside C++/CLI method bodies. Even if the CLR thread transition works, it doesn't prove the method body is ASan aware. -- C++/CLI finalizers and normal C++/CLI process teardown are maanged by the CLR and order-dependent. Don't interpret failures or reports during finalization, shutdown, or mixed-mode unload as reliable ASan diagnostics for user memory bugs. +- C++/CLI finalizers and normal C++/CLI process teardown are managed by the CLR and order-dependent. Don't interpret failures or reports during finalization, shutdown, or mixed-mode unload as reliable ASan diagnostics for user memory bugs. - Loading an ASan-enabled C++/CLI wrapper DLL from a native host can produce misleading runtime failures, such as ASan access-violation reports on unknown addresses. ## See also From ded796ff403534f430bc2f8fb30a89663a0a46cd Mon Sep 17 00:00:00 2001 From: Amy Wishnousky Date: Wed, 29 Jul 2026 12:26:17 -0700 Subject: [PATCH 584/619] Add C5089 for /fsanitize=address /clr (#6759) * Add warning C5089 about experimental address sanitizer * Add new page for warning, add links back to asan-known-issues. * Address recommendations from writing style bot. * Rewording - thanks Tyler! * Apply suggestions from code review Co-authored-by: learn-build-service-prod-08[bot] <274430765+learn-build-service-prod-08[bot]@users.noreply.github.com> * Addressed PR feedback. --------- Co-authored-by: learn-build-service-prod-08[bot] <274430765+learn-build-service-prod-08[bot]@users.noreply.github.com> Co-authored-by: Tyler Whitney --- docs/error-messages/TOC.yml | 5204 +++++++++++++++++ .../compiler-warning-c5089.md | 29 + .../compiler-warnings-c5000-through-c5199.md | 1 + docs/sanitizers/asan-known-issues.md | 2 +- 4 files changed, 5235 insertions(+), 1 deletion(-) create mode 100644 docs/error-messages/TOC.yml create mode 100644 docs/error-messages/compiler-warnings/compiler-warning-c5089.md diff --git a/docs/error-messages/TOC.yml b/docs/error-messages/TOC.yml new file mode 100644 index 00000000000..71c6190ca58 --- /dev/null +++ b/docs/error-messages/TOC.yml @@ -0,0 +1,5204 @@ +items: +- name: C/C++ Compiler and build tools errors and warnings + href: compiler-errors-1/c-cpp-build-errors.md +- name: BSCMAKE errors and warnings + expanded: false + items: + - name: BSCMAKE errors and warnings (BKxxxx) + href: tool-errors/bscmake-errors-bk1500-through-bk4505.md + - name: BSCMAKE error BK1503 + href: tool-errors/bscmake-error-bk1503.md + - name: BSCMAKE error BK1504 + href: tool-errors/bscmake-error-bk1504.md + - name: BSCMAKE error BK1505 + href: tool-errors/bscmake-error-bk1505.md + - name: BSCMAKE error BK1506 + href: tool-errors/bscmake-error-bk1506.md + - name: BSCMAKE error BK1507 + href: tool-errors/bscmake-error-bk1507.md + - name: BSCMAKE error BK1508 + href: tool-errors/bscmake-error-bk1508.md + - name: BSCMAKE error BK1509 + href: tool-errors/bscmake-error-bk1509.md + - name: BSCMAKE error BK1510 + href: tool-errors/bscmake-error-bk1510.md + - name: BSCMAKE error BK1512 + href: tool-errors/bscmake-error-bk1512.md + - name: BSCMAKE error BK1513 + href: tool-errors/bscmake-error-bk1513.md + - name: BSCMAKE error BK1514 + href: tool-errors/bscmake-error-bk1514.md + - name: BSCMAKE error BK1515 + href: tool-errors/bscmake-error-bk1515.md + - name: BSCMAKE error BK1516 + href: tool-errors/bscmake-error-bk1516.md + - name: BSCMAKE error BK1517 + href: tool-errors/bscmake-error-bk1517.md + - name: BSCMAKE warning BK4502 + href: tool-errors/bscmake-warning-bk4502.md + - name: BSCMAKE warning BK4503 + href: tool-errors/bscmake-warning-bk4503.md + - name: BSCMAKE warning BK4504 + href: tool-errors/bscmake-warning-bk4504.md +- name: Command-line errors and warnings + expanded: false + items: + - name: Command-line errors and warnings (Dxxxx) + href: tool-errors/command-line-errors-d8000-through-d9999.md + - name: Command-line error D8016 + href: tool-errors/command-line-error-d8016.md + - name: Command-line error D8021 + href: tool-errors/command-line-error-d8021.md + - name: Command-line error D8022 + href: tool-errors/command-line-error-d8022.md + - name: Command-line error D8027 + href: tool-errors/command-line-error-d8027.md + - name: Command-line error D8036 + href: tool-errors/command-line-error-d8036.md + - name: Command-line error D8037 + href: tool-errors/command-line-error-d8037.md + - name: Command-line error D8045 + href: tool-errors/command-line-error-d8045.md + - name: Command-line error D8048 + href: tool-errors/command-line-error-d8048.md + - name: Command-line error D8049 + href: tool-errors/command-line-error-d8049.md + - name: Command-line warning D9024 + href: tool-errors/command-line-warning-d9024.md + - name: Command-line warning D9025 + href: tool-errors/command-line-warning-d9025.md + - name: Command-line warning D9026 + href: tool-errors/command-line-warning-d9026.md + - name: Command-line warning D9027 + href: tool-errors/command-line-warning-d9027.md + - name: Command-line warning D9028 + href: tool-errors/command-line-warning-d9028.md + - name: Command-line warning D9035 + href: tool-errors/command-line-warning-d9035.md + - name: Command-line warning D9036 + href: tool-errors/command-line-warning-d9036.md + - name: Command-line warning D9040 + href: tool-errors/command-line-warning-d9040.md + - name: Command-line warning D9041 + href: tool-errors/command-line-warning-d9041.md + - name: Command-line warning D9043 + href: tool-errors/command-line-warning-d9043.md +- name: Compiler fatal errors + expanded: false + items: + - name: Compiler fatal errors C1001 through C1907 + href: compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md + - name: Fatal error C1001 + href: compiler-errors-1/fatal-error-c1001.md + - name: Fatal error C1002 + href: compiler-errors-1/fatal-error-c1002.md + - name: Fatal error C1003 + href: compiler-errors-1/fatal-error-c1003.md + - name: Fatal error C1004 + href: compiler-errors-1/fatal-error-c1004.md + - name: Fatal error C1005 + href: compiler-errors-1/fatal-error-c1005.md + - name: Fatal error C1007 + href: compiler-errors-1/fatal-error-c1007.md + - name: Fatal error C1008 + href: compiler-errors-1/fatal-error-c1008.md + - name: Fatal error C1009 + href: compiler-errors-1/fatal-error-c1009.md + - name: Fatal error C1010 + href: compiler-errors-1/fatal-error-c1010.md + - name: Fatal error C1011 + href: compiler-errors-1/fatal-error-c1011.md + - name: Fatal error C1012 + href: compiler-errors-1/fatal-error-c1012.md + - name: Fatal error C1013 + href: compiler-errors-1/fatal-error-c1013.md + - name: Fatal error C1014 + href: compiler-errors-1/fatal-error-c1014.md + - name: Fatal error C1015 + href: compiler-errors-1/fatal-error-c1015.md + - name: Fatal error C1016 + href: compiler-errors-1/fatal-error-c1016.md + - name: Fatal error C1017 + href: compiler-errors-1/fatal-error-c1017.md + - name: Fatal error C1018 + href: compiler-errors-1/fatal-error-c1018.md + - name: Fatal error C1019 + href: compiler-errors-1/fatal-error-c1019.md + - name: Fatal error C1020 + href: compiler-errors-1/fatal-error-c1020.md + - name: Fatal error C1021 + href: compiler-errors-1/fatal-error-c1021.md + - name: Fatal error C1022 + href: compiler-errors-1/fatal-error-c1022.md + - name: Fatal error C1023 + href: compiler-errors-1/fatal-error-c1023.md + - name: Fatal error C1025, C1115 + href: compiler-errors-1/fatal-error-c1025-c1115.md + - name: Fatal error C1026 + href: compiler-errors-1/fatal-error-c1026.md + - name: Fatal error C1029 + href: compiler-errors-1/fatal-error-c1029.md + - name: Fatal error C1033 + href: compiler-errors-1/fatal-error-c1033.md + - name: Fatal error C1035 + href: compiler-errors-1/fatal-error-c1035.md + - name: Fatal error C1037 + href: compiler-errors-1/fatal-error-c1037.md + - name: Fatal error C1038 + href: compiler-errors-1/fatal-error-c1038.md + - name: Fatal error C1045 + href: compiler-errors-1/fatal-error-c1045.md + - name: Fatal error C1046 + href: compiler-errors-1/fatal-error-c1046.md + - name: Fatal error C1047 + href: compiler-errors-1/fatal-error-c1047.md + - name: Fatal error C1049 + href: compiler-errors-1/fatal-error-c1049.md + - name: Fatal error C1051 + href: compiler-errors-1/fatal-error-c1051.md + - name: Fatal error C1052 + href: compiler-errors-1/fatal-error-c1052.md + - name: Fatal error C1053 + href: compiler-errors-1/fatal-error-c1053.md + - name: Fatal error C1054 + href: compiler-errors-1/fatal-error-c1054.md + - name: Fatal error C1055 + href: compiler-errors-1/fatal-error-c1055.md + - name: Fatal error C1057 + href: compiler-errors-1/fatal-error-c1057.md + - name: Fatal error C1060 + href: compiler-errors-1/fatal-error-c1060.md + - name: Fatal error C1061 + href: compiler-errors-1/fatal-error-c1061.md + - name: Fatal error C1064 + href: compiler-errors-1/fatal-error-c1064.md + - name: Fatal error C1065 + href: compiler-errors-1/fatal-error-c1065.md + - name: Fatal error C1067 + href: compiler-errors-1/fatal-error-c1067.md + - name: Fatal error C1068 + href: compiler-errors-1/fatal-error-c1068.md + - name: Fatal error C1070 + href: compiler-errors-1/fatal-error-c1070.md + - name: Fatal error C1071 + href: compiler-errors-1/fatal-error-c1071.md + - name: Fatal error C1073 + href: compiler-errors-1/fatal-error-c1073.md + - name: Fatal error C1074 + href: compiler-errors-1/fatal-error-c1074.md + - name: Fatal error C1075 + href: compiler-errors-1/fatal-error-c1075.md + - name: Fatal error C1076 + href: compiler-errors-1/fatal-error-c1076.md + - name: Fatal error C1077 + href: compiler-errors-1/fatal-error-c1077.md + - name: Fatal error C1079 + href: compiler-errors-1/fatal-error-c1079.md + - name: Fatal error C1080 + href: compiler-errors-1/fatal-error-c1080.md + - name: Fatal error C1081 + href: compiler-errors-1/fatal-error-c1081.md + - name: Fatal error C1082 + href: compiler-errors-1/fatal-error-c1082.md + - name: Fatal error C1083 + href: compiler-errors-1/fatal-error-c1083.md + - name: Fatal error C1084 + href: compiler-errors-1/fatal-error-c1084.md + - name: Fatal error C1085 + href: compiler-errors-1/fatal-error-c1085.md + - name: Fatal error C1086 + href: compiler-errors-1/fatal-error-c1086.md + - name: Fatal error C1087 + href: compiler-errors-1/fatal-error-c1087.md + - name: Fatal error C1088 + href: compiler-errors-1/fatal-error-c1088.md + - name: Fatal error C1089 + href: compiler-errors-1/fatal-error-c1089.md + - name: Fatal error C1090 + href: compiler-errors-1/fatal-error-c1090.md + - name: Fatal error C1091 + href: compiler-errors-1/fatal-error-c1091.md + - name: Fatal error C1092 + href: compiler-errors-1/fatal-error-c1092.md + - name: Fatal error C1093 + href: compiler-errors-1/fatal-error-c1093.md + - name: Fatal error C1094 + href: compiler-errors-1/fatal-error-c1094.md + - name: Fatal error C1098 + href: compiler-errors-1/fatal-error-c1098.md + - name: Fatal error C1099 + href: compiler-errors-1/fatal-error-c1099.md + - name: Fatal error C1100 + href: compiler-errors-1/fatal-error-c1100.md + - name: Fatal error C1103 + href: compiler-errors-1/fatal-error-c1103.md + - name: Fatal error C1104 + href: compiler-errors-1/fatal-error-c1104.md + - name: Fatal error C1107 + href: compiler-errors-1/fatal-error-c1107.md + - name: Fatal error C1108 + href: compiler-errors-1/fatal-error-c1108.md + - name: Fatal error C1109 + href: compiler-errors-1/fatal-error-c1109.md + - name: Fatal error C1113 + href: compiler-errors-1/fatal-error-c1113.md + - name: Fatal error C1116 + href: compiler-errors-1/fatal-error-c1116.md + - name: Fatal error C1117 + href: compiler-errors-1/fatal-error-c1117.md + - name: Fatal error C1120 + href: compiler-errors-1/fatal-error-c1120.md + - name: Fatal error C1121 + href: compiler-errors-1/fatal-error-c1121.md + - name: Fatal error C1126 + href: compiler-errors-1/fatal-error-c1126.md + - name: Fatal error C1128 + href: compiler-errors-1/fatal-error-c1128.md + - name: Fatal error C1189 + href: compiler-errors-1/fatal-error-c1189.md + - name: Fatal error C1190 + href: compiler-errors-1/fatal-error-c1190.md + - name: Fatal error C1191 + href: compiler-errors-1/fatal-error-c1191.md + - name: Fatal error C1192 + href: compiler-errors-1/fatal-error-c1192.md + - name: Fatal error C1196 + href: compiler-errors-1/fatal-error-c1196.md + - name: Fatal error C1197 + href: compiler-errors-1/fatal-error-c1197.md + - name: Fatal error C1201 + href: compiler-errors-1/fatal-error-c1201.md + - name: Fatal error C1202 + href: compiler-errors-1/fatal-error-c1202.md + - name: Fatal error C1205 + href: compiler-errors-1/fatal-error-c1205.md + - name: Fatal error C1206 + href: compiler-errors-1/fatal-error-c1206.md + - name: Fatal error C1207 + href: compiler-errors-1/fatal-error-c1207.md + - name: Fatal error C1208 + href: compiler-errors-1/fatal-error-c1208.md + - name: Fatal error C1209 + href: compiler-errors-1/fatal-error-c1209.md + - name: Fatal error C1210 + href: compiler-errors-1/fatal-error-c1210.md + - name: Fatal error C1211 + href: compiler-errors-1/fatal-error-c1211.md + - name: Fatal error C1305 + href: compiler-errors-1/fatal-error-c1305.md + - name: Fatal error C1307 + href: compiler-errors-1/fatal-error-c1307.md + - name: Fatal error C1308 + href: compiler-errors-1/fatal-error-c1308.md + - name: Fatal error C1309 + href: compiler-errors-1/fatal-error-c1309.md + - name: Fatal error C1310 + href: compiler-errors-1/fatal-error-c1310.md + - name: Fatal error C1311 + href: compiler-errors-1/fatal-error-c1311.md + - name: Fatal error C1312 + href: compiler-errors-1/fatal-error-c1312.md + - name: Fatal error C1313 + href: compiler-errors-1/fatal-error-c1313.md + - name: Fatal error C1350 + href: compiler-errors-1/fatal-error-c1350.md + - name: Fatal error C1351 + href: compiler-errors-1/fatal-error-c1351.md + - name: Fatal error C1352 + href: compiler-errors-1/fatal-error-c1352.md + - name: Fatal error C1353 + href: compiler-errors-1/fatal-error-c1353.md + - name: Fatal error C1382 + href: compiler-errors-1/fatal-error-c1382.md + - name: Fatal error C1383 + href: compiler-errors-1/fatal-error-c1383.md + - name: Fatal error C1506 + href: compiler-errors-1/fatal-error-c1506.md + - name: Fatal error C1508 + href: compiler-errors-1/fatal-error-c1508.md + - name: Fatal error C1509 + href: compiler-errors-1/fatal-error-c1509.md + - name: Fatal error C1510 + href: compiler-errors-1/fatal-error-c1510.md + - name: Fatal error C1601 + href: compiler-errors-1/fatal-error-c1601.md + - name: Fatal error C1602 + href: compiler-errors-1/fatal-error-c1602.md + - name: Fatal error C1603 + href: compiler-errors-1/fatal-error-c1603.md + - name: Fatal error C1852 + href: compiler-errors-1/fatal-error-c1852.md + - name: Fatal error C1853 + href: compiler-errors-1/fatal-error-c1853.md + - name: Fatal error C1854 + href: compiler-errors-1/fatal-error-c1854.md + - name: Fatal error C1900 + href: compiler-errors-1/fatal-error-c1900.md + - name: Fatal error C1902 + href: compiler-errors-1/fatal-error-c1902.md + - name: Fatal error C1903 + href: compiler-errors-1/fatal-error-c1903.md + - name: Fatal error C1904 + href: compiler-errors-1/fatal-error-c1904.md + - name: Fatal error C1905 + href: compiler-errors-1/fatal-error-c1905.md +- name: Compiler errors + expanded: false + items: + - name: Compiler errors C2000 - C3999, C7000 - C7999 + href: compiler-errors-1/compiler-errors-c2000-c3999.md + - name: Compiler errors C2000 through C2099 + expanded: false + items: + - name: Compiler errors C2000 through C2099 + href: compiler-errors-1/compiler-errors-c2001-through-c2099.md + - name: Compiler error C2001 + href: compiler-errors-1/compiler-error-c2001.md + - name: Compiler error C2002 + href: compiler-errors-1/compiler-error-c2002.md + - name: Compiler error C2003 + href: compiler-errors-1/compiler-error-c2003.md + - name: Compiler error C2004 + href: compiler-errors-1/compiler-error-c2004.md + - name: Compiler error C2005 + href: compiler-errors-1/compiler-error-c2005.md + - name: Compiler error C2006 + href: compiler-errors-1/compiler-error-c2006.md + - name: Compiler error C2007 + href: compiler-errors-1/compiler-error-c2007.md + - name: Compiler error C2008 + href: compiler-errors-1/compiler-error-c2008.md + - name: Compiler error C2009 + href: compiler-errors-1/compiler-error-c2009.md + - name: Compiler error C2010 + href: compiler-errors-1/compiler-error-c2010.md + - name: Compiler error C2011 + href: compiler-errors-1/compiler-error-c2011.md + - name: Compiler error C2012 + href: compiler-errors-1/compiler-error-c2012.md + - name: Compiler error C2013 + href: compiler-errors-1/compiler-error-c2013.md + - name: Compiler error C2014 + href: compiler-errors-1/compiler-error-c2014.md + - name: Compiler error C2015 + href: compiler-errors-1/compiler-error-c2015.md + - name: Compiler error C2016 + href: compiler-errors-1/compiler-error-c2016.md + - name: Compiler error C2017 + href: compiler-errors-1/compiler-error-c2017.md + - name: Compiler error C2018 + href: compiler-errors-1/compiler-error-c2018.md + - name: Compiler error C2019 + href: compiler-errors-1/compiler-error-c2019.md + - name: Compiler error C2020 + href: compiler-errors-1/compiler-error-c2020.md + - name: Compiler error C2021 + href: compiler-errors-1/compiler-error-c2021.md + - name: Compiler error C2022 + href: compiler-errors-1/compiler-error-c2022.md + - name: Compiler error C2023 + href: compiler-errors-1/compiler-error-c2023.md + - name: Compiler error C2024 + href: compiler-errors-1/compiler-error-c2024.md + - name: Compiler error C2025 + href: compiler-errors-1/compiler-error-c2025.md + - name: Compiler error C2026 + href: compiler-errors-1/compiler-error-c2026.md + - name: Compiler error C2027 + href: compiler-errors-1/compiler-error-c2027.md + - name: Compiler error C2028 + href: compiler-errors-1/compiler-error-c2028.md + - name: Compiler error C2030 + href: compiler-errors-1/compiler-error-c2030.md + - name: Compiler error C2031 + href: compiler-errors-1/compiler-error-c2031.md + - name: Compiler error C2032 + href: compiler-errors-1/compiler-error-c2032.md + - name: Compiler error C2033 + href: compiler-errors-1/compiler-error-c2033.md + - name: Compiler error C2034 + href: compiler-errors-1/compiler-error-c2034.md + - name: Compiler error C2035 + href: compiler-errors-1/compiler-error-c2035.md + - name: Compiler error C2036 + href: compiler-errors-1/compiler-error-c2036.md + - name: Compiler error C2037 + href: compiler-errors-1/compiler-error-c2037.md + - name: Compiler error C2038 + href: compiler-errors-1/compiler-error-c2038.md + - name: Compiler error C2039 + href: compiler-errors-1/compiler-error-c2039.md + - name: Compiler error C2040 + href: compiler-errors-1/compiler-error-c2040.md + - name: Compiler error C2041 + href: compiler-errors-1/compiler-error-c2041.md + - name: Compiler error C2042 + href: compiler-errors-1/compiler-error-c2042.md + - name: Compiler error C2043 + href: compiler-errors-1/compiler-error-c2043.md + - name: Compiler error C2044 + href: compiler-errors-1/compiler-error-c2044.md + - name: Compiler error C2045 + href: compiler-errors-1/compiler-error-c2045.md + - name: Compiler error C2046 + href: compiler-errors-1/compiler-error-c2046.md + - name: Compiler error C2047 + href: compiler-errors-1/compiler-error-c2047.md + - name: Compiler error C2048 + href: compiler-errors-1/compiler-error-c2048.md + - name: Compiler error C2049 + href: compiler-errors-1/compiler-error-c2049.md + - name: Compiler error C2050 + href: compiler-errors-1/compiler-error-c2050.md + - name: Compiler error C2051 + href: compiler-errors-1/compiler-error-c2051.md + - name: Compiler error C2052 + href: compiler-errors-1/compiler-error-c2052.md + - name: Compiler error C2053 + href: compiler-errors-1/compiler-error-c2053.md + - name: Compiler error C2054 + href: compiler-errors-1/compiler-error-c2054.md + - name: Compiler error C2055 + href: compiler-errors-1/compiler-error-c2055.md + - name: Compiler error C2056 + href: compiler-errors-1/compiler-error-c2056.md + - name: Compiler error C2057 + href: compiler-errors-1/compiler-error-c2057.md + - name: Compiler error C2058 + href: compiler-errors-1/compiler-error-c2058.md + - name: Compiler error C2059 + href: compiler-errors-1/compiler-error-c2059.md + - name: Compiler error C2060 + href: compiler-errors-1/compiler-error-c2060.md + - name: Compiler error C2061 + href: compiler-errors-1/compiler-error-c2061.md + - name: Compiler error C2062 + href: compiler-errors-1/compiler-error-c2062.md + - name: Compiler error C2063 + href: compiler-errors-1/compiler-error-c2063.md + - name: Compiler error C2064 + href: compiler-errors-1/compiler-error-c2064.md + - name: Compiler error C2065 + href: compiler-errors-1/compiler-error-c2065.md + - name: Compiler error C2066 + href: compiler-errors-1/compiler-error-c2066.md + - name: Compiler error C2067 + href: compiler-errors-1/compiler-error-c2067.md + - name: Compiler error C2068 + href: compiler-errors-1/compiler-error-c2068.md + - name: Compiler error C2069 + href: compiler-errors-1/compiler-error-c2069.md + - name: Compiler error C2070 + href: compiler-errors-1/compiler-error-c2070.md + - name: Compiler error C2071 + href: compiler-errors-1/compiler-error-c2071.md + - name: Compiler error C2072 + href: compiler-errors-1/compiler-error-c2072.md + - name: Compiler error C2073 + href: compiler-errors-1/compiler-error-c2073.md + - name: Compiler error C2074 + href: compiler-errors-1/compiler-error-c2074.md + - name: Compiler error C2075 + href: compiler-errors-1/compiler-error-c2075.md + - name: Compiler error C2076 + href: compiler-errors-1/compiler-error-c2076.md + - name: Compiler error C2077 + href: compiler-errors-1/compiler-error-c2077.md + - name: Compiler error C2078 + href: compiler-errors-1/compiler-error-c2078.md + - name: Compiler error C2079 + href: compiler-errors-1/compiler-error-c2079.md + - name: Compiler error C2080 + href: compiler-errors-1/compiler-error-c2080.md + - name: Compiler error C2081 + href: compiler-errors-1/compiler-error-c2081.md + - name: Compiler error C2082 + href: compiler-errors-1/compiler-error-c2082.md + - name: Compiler error C2083 + href: compiler-errors-1/compiler-error-c2083.md + - name: Compiler error C2084 + href: compiler-errors-1/compiler-error-c2084.md + - name: Compiler error C2085 + href: compiler-errors-1/compiler-error-c2085.md + - name: Compiler error C2086 + href: compiler-errors-1/compiler-error-c2086.md + - name: Compiler error C2087 + href: compiler-errors-1/compiler-error-c2087.md + - name: Compiler error C2088 + href: compiler-errors-1/compiler-error-c2088.md + - name: Compiler error C2089 + href: compiler-errors-1/compiler-error-c2089.md + - name: Compiler error C2090 + href: compiler-errors-1/compiler-error-c2090.md + - name: Compiler error C2091 + href: compiler-errors-1/compiler-error-c2091.md + - name: Compiler error C2092 + href: compiler-errors-1/compiler-error-c2092.md + - name: Compiler error C2093 + href: compiler-errors-1/compiler-error-c2093.md + - name: Compiler error C2094 + href: compiler-errors-1/compiler-error-c2094.md + - name: Compiler error C2095 + href: compiler-errors-1/compiler-error-c2095.md + - name: Compiler error C2096 + href: compiler-errors-1/compiler-error-c2096.md + - name: Compiler error C2097 + href: compiler-errors-1/compiler-error-c2097.md + - name: Compiler error C2098 + href: compiler-errors-1/compiler-error-c2098.md + - name: Compiler error C2099 + href: compiler-errors-1/compiler-error-c2099.md + - name: Compiler errors C2100 through C2199 + expanded: false + items: + - name: Compiler errors C2100 through C2199 + href: compiler-errors-1/compiler-errors-c2100-through-c2199.md + - name: Compiler error C2100 + href: compiler-errors-1/compiler-error-c2100.md + - name: Compiler error C2101 + href: compiler-errors-1/compiler-error-c2101.md + - name: Compiler error C2102 + href: compiler-errors-1/compiler-error-c2102.md + - name: Compiler error C2103 + href: compiler-errors-1/compiler-error-c2103.md + - name: Compiler error C2104 + href: compiler-errors-1/compiler-error-c2104.md + - name: Compiler error C2105 + href: compiler-errors-1/compiler-error-c2105.md + - name: Compiler error C2106 + href: compiler-errors-1/compiler-error-c2106.md + - name: Compiler error C2107 + href: compiler-errors-1/compiler-error-c2107.md + - name: Compiler error C2108 + href: compiler-errors-1/compiler-error-c2108.md + - name: Compiler error C2109 + href: compiler-errors-1/compiler-error-c2109.md + - name: Compiler error C2110 + href: compiler-errors-1/compiler-error-c2110.md + - name: Compiler error C2111 + href: compiler-errors-1/compiler-error-c2111.md + - name: Compiler error C2112 + href: compiler-errors-1/compiler-error-c2112.md + - name: Compiler error C2113 + href: compiler-errors-1/compiler-error-c2113.md + - name: Compiler error C2114 + href: compiler-errors-1/compiler-error-c2114.md + - name: Compiler error C2115 + href: compiler-errors-1/compiler-error-c2115.md + - name: Compiler error C2116 + href: compiler-errors-1/compiler-error-c2116.md + - name: Compiler error C2117 + href: compiler-errors-1/compiler-error-c2117.md + - name: Compiler error C2118 + href: compiler-errors-1/compiler-error-c2118.md + - name: Compiler error C2120 + href: compiler-errors-1/compiler-error-c2120.md + - name: Compiler error C2121 + href: compiler-errors-1/compiler-error-c2121.md + - name: Compiler error C2122 + href: compiler-errors-1/compiler-error-c2122.md + - name: Compiler error C2124 + href: compiler-errors-1/compiler-error-c2124.md + - name: Compiler error C2128 + href: compiler-errors-1/compiler-error-c2128.md + - name: Compiler error C2129 + href: compiler-errors-1/compiler-error-c2129.md + - name: Compiler error C2130 + href: compiler-errors-1/compiler-error-c2130.md + - name: Compiler error C2131 + href: compiler-errors-1/compiler-error-c2131.md + - name: Compiler error C2132 + href: compiler-errors-1/compiler-error-c2132.md + - name: Compiler error C2133 + href: compiler-errors-1/compiler-error-c2133.md + - name: Compiler error C2134 + href: compiler-errors-1/compiler-error-c2134.md + - name: Compiler error C2135 + href: compiler-errors-1/compiler-error-c2135.md + - name: Compiler error C2137 + href: compiler-errors-1/compiler-error-c2137.md + - name: Compiler error C2138 + href: compiler-errors-1/compiler-error-c2138.md + - name: Compiler error C2139 + href: compiler-errors-1/compiler-error-c2139.md + - name: Compiler error C2140 + href: compiler-errors-1/compiler-error-c2140.md + - name: Compiler error C2141 + href: compiler-errors-1/compiler-error-c2141.md + - name: Compiler error C2142 + href: compiler-errors-1/compiler-error-c2142.md + - name: Compiler error C2143 + href: compiler-errors-1/compiler-error-c2143.md + - name: Compiler error C2144 + href: compiler-errors-1/compiler-error-c2144.md + - name: Compiler error C2145 + href: compiler-errors-1/compiler-error-c2145.md + - name: Compiler error C2146 + href: compiler-errors-1/compiler-error-c2146.md + - name: Compiler error C2147 + href: compiler-errors-1/compiler-error-c2147.md + - name: Compiler error C2148 + href: compiler-errors-1/compiler-error-c2148.md + - name: Compiler error C2149 + href: compiler-errors-1/compiler-error-c2149.md + - name: Compiler error C2150 + href: compiler-errors-1/compiler-error-c2150.md + - name: Compiler error C2151 + href: compiler-errors-1/compiler-error-c2151.md + - name: Compiler error C2152 + href: compiler-errors-1/compiler-error-c2152.md + - name: Compiler error C2153 + href: compiler-errors-1/compiler-error-c2153.md + - name: Compiler error C2154 + href: compiler-errors-1/compiler-error-c2154.md + - name: Compiler error C2155 + href: compiler-errors-1/compiler-error-c2155.md + - name: Compiler error C2156 + href: compiler-errors-1/compiler-error-c2156.md + - name: Compiler error C2157 + href: compiler-errors-1/compiler-error-c2157.md + - name: Compiler error C2158 + href: compiler-errors-1/compiler-error-c2158.md + - name: Compiler error C2159 + href: compiler-errors-1/compiler-error-c2159.md + - name: Compiler error C2160 + href: compiler-errors-1/compiler-error-c2160.md + - name: Compiler error C2161 + href: compiler-errors-1/compiler-error-c2161.md + - name: Compiler error C2162 + href: compiler-errors-1/compiler-error-c2162.md + - name: Compiler error C2163 + href: compiler-errors-1/compiler-error-c2163.md + - name: Compiler error C2164 + href: compiler-errors-1/compiler-error-c2164.md + - name: Compiler error C2165 + href: compiler-errors-1/compiler-error-c2165.md + - name: Compiler error C2166 + href: compiler-errors-1/compiler-error-c2166.md + - name: Compiler error C2167 + href: compiler-errors-1/compiler-error-c2167.md + - name: Compiler error C2168 + href: compiler-errors-1/compiler-error-c2168.md + - name: Compiler error C2169 + href: compiler-errors-1/compiler-error-c2169.md + - name: Compiler error C2170 + href: compiler-errors-1/compiler-error-c2170.md + - name: Compiler error C2171 + href: compiler-errors-1/compiler-error-c2171.md + - name: Compiler error C2172 + href: compiler-errors-1/compiler-error-c2172.md + - name: Compiler error C2173 + href: compiler-errors-1/compiler-error-c2173.md + - name: Compiler error C2174 + href: compiler-errors-1/compiler-error-c2174.md + - name: Compiler error C2175 + href: compiler-errors-1/compiler-error-c2175.md + - name: Compiler error C2177 + href: compiler-errors-1/compiler-error-c2177.md + - name: Compiler error C2178 + href: compiler-errors-1/compiler-error-c2178.md + - name: Compiler error C2179 + href: compiler-errors-1/compiler-error-c2179.md + - name: Compiler error C2180 + href: compiler-errors-1/compiler-error-c2180.md + - name: Compiler error C2181 + href: compiler-errors-1/compiler-error-c2181.md + - name: Compiler error C2182 + href: compiler-errors-1/compiler-error-c2182.md + - name: Compiler error C2183 + href: compiler-errors-1/compiler-error-c2183.md + - name: Compiler error C2184 + href: compiler-errors-1/compiler-error-c2184.md + - name: Compiler error C2185 + href: compiler-errors-1/compiler-error-c2185.md + - name: Compiler error C2186 + href: compiler-errors-1/compiler-error-c2186.md + - name: Compiler error C2188 + href: compiler-errors-1/compiler-error-c2188.md + - name: Compiler error C2190 + href: compiler-errors-1/compiler-error-c2190.md + - name: Compiler error C2191 + href: compiler-errors-1/compiler-error-c2191.md + - name: Compiler error C2192 + href: compiler-errors-1/compiler-error-c2192.md + - name: Compiler error C2193 + href: compiler-errors-1/compiler-error-c2193.md + - name: Compiler error C2194 + href: compiler-errors-1/compiler-error-c2194.md + - name: Compiler error C2195 + href: compiler-errors-1/compiler-error-c2195.md + - name: Compiler error C2196 + href: compiler-errors-1/compiler-error-c2196.md + - name: Compiler error C2197 + href: compiler-errors-1/compiler-error-c2197.md + - name: Compiler error C2198 + href: compiler-errors-1/compiler-error-c2198.md + - name: Compiler error C2199 + href: compiler-errors-1/compiler-error-c2199.md + - name: Compiler errors C2200 through C2299 + expanded: false + items: + - name: Compiler errors C2200 through C2299 + href: compiler-errors-1/compiler-errors-c2200-through-c2299.md + - name: Compiler error C2200 + href: compiler-errors-1/compiler-error-c2200.md + - name: Compiler error C2201 + href: compiler-errors-1/compiler-error-c2201.md + - name: Compiler error C2203 + href: compiler-errors-1/compiler-error-c2203.md + - name: Compiler error C2204 + href: compiler-errors-1/compiler-error-c2204.md + - name: Compiler error C2205 + href: compiler-errors-1/compiler-error-c2205.md + - name: Compiler error C2206 + href: compiler-errors-1/compiler-error-c2206.md + - name: Compiler error C2207 + href: compiler-errors-1/compiler-error-c2207.md + - name: Compiler error C2208 + href: compiler-errors-1/compiler-error-c2208.md + - name: Compiler error C2212 + href: compiler-errors-1/compiler-error-c2212.md + - name: Compiler error C2213 + href: compiler-errors-1/compiler-error-c2213.md + - name: Compiler error C2216 + href: compiler-errors-1/compiler-error-c2216.md + - name: Compiler error C2217 + href: compiler-errors-1/compiler-error-c2217.md + - name: Compiler error C2218 + href: compiler-errors-1/compiler-error-c2218.md + - name: Compiler error C2219 + href: compiler-errors-1/compiler-error-c2219.md + - name: Compiler error C2220 + href: compiler-errors-1/compiler-error-c2220.md + - name: Compiler error C2222 + href: compiler-errors-1/compiler-error-c2222.md + - name: Compiler error C2223 + href: compiler-errors-1/compiler-error-c2223.md + - name: Compiler error C2224 + href: compiler-errors-1/compiler-error-c2224.md + - name: Compiler error C2226 + href: compiler-errors-1/compiler-error-c2226.md + - name: Compiler error C2227 + href: compiler-errors-1/compiler-error-c2227.md + - name: Compiler error C2228 + href: compiler-errors-1/compiler-error-c2228.md + - name: Compiler error C2229 + href: compiler-errors-1/compiler-error-c2229.md + - name: Compiler error C2231 + href: compiler-errors-1/compiler-error-c2231.md + - name: Compiler error C2232 + href: compiler-errors-1/compiler-error-c2232.md + - name: Compiler error C2233 + href: compiler-errors-1/compiler-error-c2233.md + - name: Compiler error C2234 + href: compiler-errors-1/compiler-error-c2234.md + - name: Compiler error C2236 + href: compiler-errors-1/compiler-error-c2236.md + - name: Compiler error C2238 + href: compiler-errors-1/compiler-error-c2238.md + - name: Compiler error C2241 + href: compiler-errors-1/compiler-error-c2241.md + - name: Compiler error C2242 + href: compiler-errors-1/compiler-error-c2242.md + - name: Compiler error C2243 + href: compiler-errors-1/compiler-error-c2243.md + - name: Compiler error C2244 + href: compiler-errors-1/compiler-error-c2244.md + - name: Compiler error C2245 + href: compiler-errors-1/compiler-error-c2245.md + - name: Compiler error C2246 + href: compiler-errors-1/compiler-error-c2246.md + - name: Compiler error C2247 + href: compiler-errors-1/compiler-error-c2247.md + - name: Compiler error C2248 + href: compiler-errors-1/compiler-error-c2248.md + - name: Compiler error C2249 + href: compiler-errors-1/compiler-error-c2249.md + - name: Compiler error C2250 + href: compiler-errors-1/compiler-error-c2250.md + - name: Compiler error C2251 + href: compiler-errors-1/compiler-error-c2251.md + - name: Compiler error C2252 + href: compiler-errors-1/compiler-error-c2252.md + - name: Compiler error C2253 + href: compiler-errors-1/compiler-error-c2253.md + - name: Compiler error C2254 + href: compiler-errors-1/compiler-error-c2254.md + - name: Compiler error C2255 + href: compiler-errors-1/compiler-error-c2255.md + - name: Compiler error C2256 + href: compiler-errors-1/compiler-error-c2256.md + - name: Compiler error C2258 + href: compiler-errors-1/compiler-error-c2258.md + - name: Compiler error C2259 + href: compiler-errors-1/compiler-error-c2259.md + - name: Compiler error C2261 + href: compiler-errors-1/compiler-error-c2261.md + - name: Compiler error C2262 + href: compiler-errors-1/compiler-error-c2262.md + - name: Compiler error C2264 + href: compiler-errors-1/compiler-error-c2264.md + - name: Compiler error C2266 + href: compiler-errors-1/compiler-error-c2266.md + - name: Compiler error C2267 + href: compiler-errors-1/compiler-error-c2267.md + - name: Compiler error C2268 + href: compiler-errors-1/compiler-error-c2268.md + - name: Compiler error C2270 + href: compiler-errors-1/compiler-error-c2270.md + - name: Compiler error C2271 + href: compiler-errors-1/compiler-error-c2271.md + - name: Compiler error C2272 + href: compiler-errors-1/compiler-error-c2272.md + - name: Compiler error C2273 + href: compiler-errors-1/compiler-error-c2273.md + - name: Compiler error C2274 + href: compiler-errors-1/compiler-error-c2274.md + - name: Compiler error C2275 + href: compiler-errors-1/compiler-error-c2275.md + - name: Compiler error C2276 + href: compiler-errors-1/compiler-error-c2276.md + - name: Compiler error C2277 + href: compiler-errors-1/compiler-error-c2277.md + - name: Compiler error C2279 + href: compiler-errors-1/compiler-error-c2279.md + - name: Compiler error C2280 + href: compiler-errors-1/compiler-error-c2280.md + - name: Compiler error C2283 + href: compiler-errors-1/compiler-error-c2283.md + - name: Compiler error C2285 + href: compiler-errors-1/compiler-error-c2285.md + - name: Compiler error C2286 + href: compiler-errors-1/compiler-error-c2286.md + - name: Compiler error C2287 + href: compiler-errors-1/compiler-error-c2287.md + - name: Compiler error C2289 + href: compiler-errors-1/compiler-error-c2289.md + - name: Compiler error C2290 + href: compiler-errors-1/compiler-error-c2290.md + - name: Compiler error C2292 + href: compiler-errors-1/compiler-error-c2292.md + - name: Compiler error C2293 + href: compiler-errors-1/compiler-error-c2293.md + - name: Compiler error C2295 + href: compiler-errors-1/compiler-error-c2295.md + - name: Compiler error C2296 + href: compiler-errors-1/compiler-error-c2296.md + - name: Compiler error C2297 + href: compiler-errors-1/compiler-error-c2297.md + - name: Compiler error C2298 + href: compiler-errors-1/compiler-error-c2298.md + - name: Compiler error C2299 + href: compiler-errors-1/compiler-error-c2299.md + - name: Compiler errors C2300 through C2399 + expanded: false + items: + - name: Compiler errors C2300 through C2399 + href: compiler-errors-1/compiler-errors-c2300-through-c2399.md + - name: Compiler error C2300 + href: compiler-errors-1/compiler-error-c2300.md + - name: Compiler error C2301 + href: compiler-errors-1/compiler-error-c2301.md + - name: Compiler error C2302 + href: compiler-errors-1/compiler-error-c2302.md + - name: Compiler error C2307 + href: compiler-errors-1/compiler-error-c2307.md + - name: Compiler error C2308 + href: compiler-errors-1/compiler-error-c2308.md + - name: Compiler error C2309 + href: compiler-errors-1/compiler-error-c2309.md + - name: Compiler error C2310 + href: compiler-errors-1/compiler-error-c2310.md + - name: Compiler error C2311 + href: compiler-errors-1/compiler-error-c2311.md + - name: Compiler error C2312 + href: compiler-errors-1/compiler-error-c2312.md + - name: Compiler error C2313 + href: compiler-errors-1/compiler-error-c2313.md + - name: Compiler error C2315 + href: compiler-errors-1/compiler-error-c2315.md + - name: Compiler error C2316 + href: compiler-errors-1/compiler-error-c2316.md + - name: Compiler error C2317 + href: compiler-errors-1/compiler-error-c2317.md + - name: Compiler error C2318 + href: compiler-errors-1/compiler-error-c2318.md + - name: Compiler error C2319 + href: compiler-errors-1/compiler-error-c2319.md + - name: Compiler error C2320 + href: compiler-errors-1/compiler-error-c2320.md + - name: Compiler error C2322 + href: compiler-errors-1/compiler-error-c2322.md + - name: Compiler error C2323 + href: compiler-errors-1/compiler-error-c2323.md + - name: Compiler error C2324 + href: compiler-errors-1/compiler-error-c2324.md + - name: Compiler error C2325 + href: compiler-errors-1/compiler-error-c2325.md + - name: Compiler error C2326 + href: compiler-errors-1/compiler-error-c2326.md + - name: Compiler error C2327 + href: compiler-errors-1/compiler-error-c2327.md + - name: Compiler error C2332 + href: compiler-errors-1/compiler-error-c2332.md + - name: Compiler error C2333 + href: compiler-errors-1/compiler-error-c2333.md + - name: Compiler error C2334 + href: compiler-errors-1/compiler-error-c2334.md + - name: Compiler error C2337 + href: compiler-errors-1/compiler-error-c2337.md + - name: Compiler error C2338 + href: compiler-errors-1/compiler-error-c2338.md + - name: Compiler error C2341 + href: compiler-errors-1/compiler-error-c2341.md + - name: Compiler error C2344 + href: compiler-errors-1/compiler-error-c2344.md + - name: Compiler error C2345 + href: compiler-errors-1/compiler-error-c2345.md + - name: Compiler error C2346 + href: compiler-errors-1/compiler-error-c2346.md + - name: Compiler error C2348 + href: compiler-errors-1/compiler-error-c2348.md + - name: Compiler error C2349 + href: compiler-errors-1/compiler-error-c2349.md + - name: Compiler error C2350 + href: compiler-errors-1/compiler-error-c2350.md + - name: Compiler error C2351 + href: compiler-errors-1/compiler-error-c2351.md + - name: Compiler error C2352 + href: compiler-errors-1/compiler-error-c2352.md + - name: Compiler error C2353 + href: compiler-errors-1/compiler-error-c2353.md + - name: Compiler error C2355 + href: compiler-errors-1/compiler-error-c2355.md + - name: Compiler error C2356 + href: compiler-errors-1/compiler-error-c2356.md + - name: Compiler error C2357 + href: compiler-errors-1/compiler-error-c2357.md + - name: Compiler error C2360 + href: compiler-errors-1/compiler-error-c2360.md + - name: Compiler error C2361 + href: compiler-errors-1/compiler-error-c2361.md + - name: Compiler error C2362 + href: compiler-errors-1/compiler-error-c2362.md + - name: Compiler error C2364 + href: compiler-errors-1/compiler-error-c2364.md + - name: Compiler error C2365 + href: compiler-errors-1/compiler-error-c2365.md + - name: Compiler error C2368 + href: compiler-errors-1/compiler-error-c2368.md + - name: Compiler error C2369 + href: compiler-errors-1/compiler-error-c2369.md + - name: Compiler error C2370 + href: compiler-errors-1/compiler-error-c2370.md + - name: Compiler error C2371 + href: compiler-errors-1/compiler-error-c2371.md + - name: Compiler error C2372 + href: compiler-errors-1/compiler-error-c2372.md + - name: Compiler error C2373 + href: compiler-errors-1/compiler-error-c2373.md + - name: Compiler error C2374 + href: compiler-errors-1/compiler-error-c2374.md + - name: Compiler error C2375 + href: compiler-errors-1/compiler-error-c2375.md + - name: Compiler error C2376 + href: compiler-errors-1/compiler-error-c2376.md + - name: Compiler error C2377 + href: compiler-errors-1/compiler-error-c2377.md + - name: Compiler error C2378 + href: compiler-errors-1/compiler-error-c2378.md + - name: Compiler error C2379 + href: compiler-errors-1/compiler-error-c2379.md + - name: Compiler error C2380 + href: compiler-errors-1/compiler-error-c2380.md + - name: Compiler error C2381 + href: compiler-errors-1/compiler-error-c2381.md + - name: Compiler error C2382 + href: compiler-errors-1/compiler-error-c2382.md + - name: Compiler error C2383 + href: compiler-errors-1/compiler-error-c2383.md + - name: Compiler error C2384 + href: compiler-errors-1/compiler-error-c2384.md + - name: Compiler error C2385 + href: compiler-errors-1/compiler-error-c2385.md + - name: Compiler error C2386 + href: compiler-errors-1/compiler-error-c2386.md + - name: Compiler error C2387 + href: compiler-errors-1/compiler-error-c2387.md + - name: Compiler error C2388 + href: compiler-errors-1/compiler-error-c2388.md + - name: Compiler error C2389 + href: compiler-errors-1/compiler-error-c2389.md + - name: Compiler error C2390 + href: compiler-errors-1/compiler-error-c2390.md + - name: Compiler error C2391 + href: compiler-errors-1/compiler-error-c2391.md + - name: Compiler error C2392 + href: compiler-errors-1/compiler-error-c2392.md + - name: Compiler error C2393 + href: compiler-errors-1/compiler-error-c2393.md + - name: Compiler error C2394 + href: compiler-errors-1/compiler-error-c2394.md + - name: Compiler error C2395 + href: compiler-errors-1/compiler-error-c2395.md + - name: Compiler error C2396 + href: compiler-errors-1/compiler-error-c2396.md + - name: Compiler error C2397 + href: compiler-errors-1/compiler-error-c2397.md + - name: Compiler errors C2400 through C2499 + expanded: false + items: + - name: Compiler errors C2400 through C2499 + href: compiler-errors-1/compiler-errors-c2400-through-c2499.md + - name: Compiler error C2400 + href: compiler-errors-1/compiler-error-c2400.md + - name: Compiler error C2401 + href: compiler-errors-1/compiler-error-c2401.md + - name: Compiler error C2402 + href: compiler-errors-1/compiler-error-c2402.md + - name: Compiler error C2403 + href: compiler-errors-1/compiler-error-c2403.md + - name: Compiler error C2404 + href: compiler-errors-1/compiler-error-c2404.md + - name: Compiler error C2405 + href: compiler-errors-1/compiler-error-c2405.md + - name: Compiler error C2406 + href: compiler-errors-1/compiler-error-c2406.md + - name: Compiler error C2407 + href: compiler-errors-1/compiler-error-c2407.md + - name: Compiler error C2408 + href: compiler-errors-1/compiler-error-c2408.md + - name: Compiler error C2409 + href: compiler-errors-1/compiler-error-c2409.md + - name: Compiler error C2410 + href: compiler-errors-1/compiler-error-c2410.md + - name: Compiler error C2411 + href: compiler-errors-1/compiler-error-c2411.md + - name: Compiler error C2412 + href: compiler-errors-1/compiler-error-c2412.md + - name: Compiler error C2413 + href: compiler-errors-1/compiler-error-c2413.md + - name: Compiler error C2414 + href: compiler-errors-1/compiler-error-c2414.md + - name: Compiler error C2415 + href: compiler-errors-1/compiler-error-c2415.md + - name: Compiler error C2417 + href: compiler-errors-1/compiler-error-c2417.md + - name: Compiler error C2418 + href: compiler-errors-1/compiler-error-c2418.md + - name: Compiler error C2419 + href: compiler-errors-1/compiler-error-c2419.md + - name: Compiler error C2420 + href: compiler-errors-1/compiler-error-c2420.md + - name: Compiler error C2421 + href: compiler-errors-1/compiler-error-c2421.md + - name: Compiler error C2422 + href: compiler-errors-1/compiler-error-c2422.md + - name: Compiler error C2423 + href: compiler-errors-1/compiler-error-c2423.md + - name: Compiler error C2424 + href: compiler-errors-1/compiler-error-c2424.md + - name: Compiler error C2425 + href: compiler-errors-1/compiler-error-c2425.md + - name: Compiler error C2426 + href: compiler-errors-1/compiler-error-c2426.md + - name: Compiler error C2427 + href: compiler-errors-1/compiler-error-c2427.md + - name: Compiler error C2428 + href: compiler-errors-1/compiler-error-c2428.md + - name: Compiler error C2429 + href: compiler-errors-1/compiler-error-c2429.md + - name: Compiler error C2430 + href: compiler-errors-1/compiler-error-c2430.md + - name: Compiler error C2431 + href: compiler-errors-1/compiler-error-c2431.md + - name: Compiler error C2432 + href: compiler-errors-1/compiler-error-c2432.md + - name: Compiler error C2433 + href: compiler-errors-1/compiler-error-c2433.md + - name: Compiler error C2434 + href: compiler-errors-1/compiler-error-c2434.md + - name: Compiler error C2435 + href: compiler-errors-1/compiler-error-c2435.md + - name: Compiler error C2436 + href: compiler-errors-1/compiler-error-c2436.md + - name: Compiler error C2437 + href: compiler-errors-1/compiler-error-c2437.md + - name: Compiler error C2438 + href: compiler-errors-1/compiler-error-c2438.md + - name: Compiler error C2439 + href: compiler-errors-1/compiler-error-c2439.md + - name: Compiler error C2440 + href: compiler-errors-1/compiler-error-c2440.md + - name: Compiler error C2441 + href: compiler-errors-1/compiler-error-c2441.md + - name: Compiler error C2443 + href: compiler-errors-1/compiler-error-c2443.md + - name: Compiler error C2444 + href: compiler-errors-1/compiler-error-c2444.md + - name: Compiler error C2446 + href: compiler-errors-1/compiler-error-c2446.md + - name: Compiler error C2447 + href: compiler-errors-1/compiler-error-c2447.md + - name: Compiler error C2448 + href: compiler-errors-1/compiler-error-c2448.md + - name: Compiler error C2449 + href: compiler-errors-1/compiler-error-c2449.md + - name: Compiler error C2450 + href: compiler-errors-1/compiler-error-c2450.md + - name: Compiler error C2451 + href: compiler-errors-1/compiler-error-c2451.md + - name: Compiler error C2452 + href: compiler-errors-1/compiler-error-c2452.md + - name: Compiler error C2457 + href: compiler-errors-1/compiler-error-c2457.md + - name: Compiler error C2458 + href: compiler-errors-1/compiler-error-c2458.md + - name: Compiler error C2459 + href: compiler-errors-1/compiler-error-c2459.md + - name: Compiler error C2460 + href: compiler-errors-1/compiler-error-c2460.md + - name: Compiler error C2461 + href: compiler-errors-1/compiler-error-c2461.md + - name: Compiler error C2462 + href: compiler-errors-1/compiler-error-c2462.md + - name: Compiler error C2464 + href: compiler-errors-1/compiler-error-c2464.md + - name: Compiler error C2465 + href: compiler-errors-1/compiler-error-c2465.md + - name: Compiler error C2466 + href: compiler-errors-1/compiler-error-c2466.md + - name: Compiler error C2467 + href: compiler-errors-1/compiler-error-c2467.md + - name: Compiler error C2469 + href: compiler-errors-1/compiler-error-c2469.md + - name: Compiler error C2470 + href: compiler-errors-1/compiler-error-c2470.md + - name: Compiler error C2471 + href: compiler-errors-1/compiler-error-c2471.md + - name: Compiler error C2472 + href: compiler-errors-1/compiler-error-c2472.md + - name: Compiler error C2473 + href: compiler-errors-1/compiler-error-c2473.md + - name: Compiler error C2474 + href: compiler-errors-1/compiler-error-c2474.md + - name: Compiler error C2477 + href: compiler-errors-1/compiler-error-c2477.md + - name: Compiler error C2479 + href: compiler-errors-1/compiler-error-c2479.md + - name: Compiler error C2480 + href: compiler-errors-1/compiler-error-c2480.md + - name: Compiler error C2482 + href: compiler-errors-1/compiler-error-c2482.md + - name: Compiler error C2483 + href: compiler-errors-1/compiler-error-c2483.md + - name: Compiler error C2485 + href: compiler-errors-1/compiler-error-c2485.md + - name: Compiler error C2486 + href: compiler-errors-1/compiler-error-c2486.md + - name: Compiler error C2487 + href: compiler-errors-1/compiler-error-c2487.md + - name: Compiler error C2488 + href: compiler-errors-1/compiler-error-c2488.md + - name: Compiler error C2489 + href: compiler-errors-1/compiler-error-c2489.md + - name: Compiler error C2490 + href: compiler-errors-1/compiler-error-c2490.md + - name: Compiler error C2491 + href: compiler-errors-1/compiler-error-c2491.md + - name: Compiler error C2492 + href: compiler-errors-1/compiler-error-c2492.md + - name: Compiler error C2493 + href: compiler-errors-1/compiler-error-c2493.md + - name: Compiler error C2494 + href: compiler-errors-1/compiler-error-c2494.md + - name: Compiler error C2495 + href: compiler-errors-1/compiler-error-c2495.md + - name: Compiler error C2496 + href: compiler-errors-1/compiler-error-c2496.md + - name: Compiler error C2498 + href: compiler-errors-1/compiler-error-c2498.md + - name: Compiler error C2499 + href: compiler-errors-1/compiler-error-c2499.md + - name: Compiler errors C2500 through C2599 + expanded: false + items: + - name: Compiler errors C2500 through C2599 + href: compiler-errors-2/compiler-errors-c2500-through-c2599.md + - name: Compiler error C2500 + href: compiler-errors-2/compiler-error-c2500.md + - name: Compiler error C2502 + href: compiler-errors-2/compiler-error-c2502.md + - name: Compiler error C2503 + href: compiler-errors-2/compiler-error-c2503.md + - name: Compiler error C2504 + href: compiler-errors-2/compiler-error-c2504.md + - name: Compiler error C2505 + href: compiler-errors-2/compiler-error-c2505.md + - name: Compiler error C2506 + href: compiler-errors-2/compiler-error-c2506.md + - name: Compiler error C2507 + href: compiler-errors-2/compiler-error-c2507.md + - name: Compiler error C2509 + href: compiler-errors-2/compiler-error-c2509.md + - name: Compiler error C2510 + href: compiler-errors-2/compiler-error-c2510.md + - name: Compiler error C2511 + href: compiler-errors-2/compiler-error-c2511.md + - name: Compiler error C2512 + href: compiler-errors-2/compiler-error-c2512.md + - name: Compiler error C2513 + href: compiler-errors-2/compiler-error-c2513.md + - name: Compiler error C2514 + href: compiler-errors-2/compiler-error-c2514.md + - name: Compiler error C2516 + href: compiler-errors-2/compiler-error-c2516.md + - name: Compiler error C2517 + href: compiler-errors-2/compiler-error-c2517.md + - name: Compiler error C2518 + href: compiler-errors-2/compiler-error-c2518.md + - name: Compiler error C2521 + href: compiler-errors-2/compiler-error-c2521.md + - name: Compiler error C2523 + href: compiler-errors-2/compiler-error-c2523.md + - name: Compiler error C2524 + href: compiler-errors-2/compiler-error-c2524.md + - name: Compiler error C2526 + href: compiler-errors-2/compiler-error-c2526.md + - name: Compiler error C2528 + href: compiler-errors-2/compiler-error-c2528.md + - name: Compiler error C2529 + href: compiler-errors-2/compiler-error-c2529.md + - name: Compiler error C2530 + href: compiler-errors-2/compiler-error-c2530.md + - name: Compiler error C2531 + href: compiler-errors-2/compiler-error-c2531.md + - name: Compiler error C2532 + href: compiler-errors-2/compiler-error-c2532.md + - name: Compiler error C2533 + href: compiler-errors-2/compiler-error-c2533.md + - name: Compiler error C2534 + href: compiler-errors-2/compiler-error-c2534.md + - name: Compiler error C2535 + href: compiler-errors-2/compiler-error-c2535.md + - name: Compiler error C2537 + href: compiler-errors-2/compiler-error-c2537.md + - name: Compiler error C2540 + href: compiler-errors-2/compiler-error-c2540.md + - name: Compiler error C2541 + href: compiler-errors-2/compiler-error-c2541.md + - name: Compiler error C2542 + href: compiler-errors-2/compiler-error-c2542.md + - name: Compiler error C2543 + href: compiler-errors-2/compiler-error-c2543.md + - name: Compiler error C2544 + href: compiler-errors-2/compiler-error-c2544.md + - name: Compiler error C2545 + href: compiler-errors-2/compiler-error-c2545.md + - name: Compiler error C2548 + href: compiler-errors-2/compiler-error-c2548.md + - name: Compiler error C2549 + href: compiler-errors-2/compiler-error-c2549.md + - name: Compiler error C2550 + href: compiler-errors-2/compiler-error-c2550.md + - name: Compiler error C2551 + href: compiler-errors-2/compiler-error-c2551.md + - name: Compiler error C2552 + href: compiler-errors-2/compiler-error-c2552.md + - name: Compiler error C2553 + href: compiler-errors-2/compiler-error-c2553.md + - name: Compiler error C2555 + href: compiler-errors-2/compiler-error-c2555.md + - name: Compiler error C2556 + href: compiler-errors-2/compiler-error-c2556.md + - name: Compiler error C2557 + href: compiler-errors-2/compiler-error-c2557.md + - name: Compiler error C2558 + href: compiler-errors-2/compiler-error-c2558.md + - name: Compiler error C2561 + href: compiler-errors-2/compiler-error-c2561.md + - name: Compiler error C2562 + href: compiler-errors-2/compiler-error-c2562.md + - name: Compiler error C2563 + href: compiler-errors-2/compiler-error-c2563.md + - name: Compiler error C2566 + href: compiler-errors-2/compiler-error-c2566.md + - name: Compiler error C2567 + href: compiler-errors-2/compiler-error-c2567.md + - name: Compiler error C2568 + href: compiler-errors-2/compiler-error-c2568.md + - name: Compiler error C2569 + href: compiler-errors-2/compiler-error-c2569.md + - name: Compiler error C2570 + href: compiler-errors-2/compiler-error-c2570.md + - name: Compiler error C2571 + href: compiler-errors-2/compiler-error-c2571.md + - name: Compiler error C2572 + href: compiler-errors-2/compiler-error-c2572.md + - name: Compiler error C2573 + href: compiler-errors-2/compiler-error-c2573.md + - name: Compiler error C2574 + href: compiler-errors-2/compiler-error-c2574.md + - name: Compiler error C2575 + href: compiler-errors-2/compiler-error-c2575.md + - name: Compiler error C2577 + href: compiler-errors-2/compiler-error-c2577.md + - name: Compiler error C2579 + href: compiler-errors-2/compiler-error-c2579.md + - name: Compiler error C2581 + href: compiler-errors-2/compiler-error-c2581.md + - name: Compiler error C2582 + href: compiler-errors-2/compiler-error-c2582.md + - name: Compiler error C2583 + href: compiler-errors-2/compiler-error-c2583.md + - name: Compiler error C2584 + href: compiler-errors-2/compiler-error-c2584.md + - name: Compiler error C2585 + href: compiler-errors-2/compiler-error-c2585.md + - name: Compiler error C2586 + href: compiler-errors-2/compiler-error-c2586.md + - name: Compiler error C2587 + href: compiler-errors-2/compiler-error-c2587.md + - name: Compiler error C2588 + href: compiler-errors-2/compiler-error-c2588.md + - name: Compiler error C2589 + href: compiler-errors-2/compiler-error-c2589.md + - name: Compiler error C2592 + href: compiler-errors-2/compiler-error-c2592.md + - name: Compiler error C2593 + href: compiler-errors-2/compiler-error-c2593.md + - name: Compiler error C2594 + href: compiler-errors-2/compiler-error-c2594.md + - name: Compiler error C2597 + href: compiler-errors-2/compiler-error-c2597.md + - name: Compiler error C2598 + href: compiler-errors-2/compiler-error-c2598.md + - name: Compiler error C2599 + href: compiler-errors-2/compiler-error-c2599.md + - name: Compiler errors C2600 through C2699 + expanded: false + items: + - name: Compiler errors C2600 through C2699 + href: compiler-errors-2/compiler-errors-c2600-through-c2699.md + - name: Compiler error C2600 + href: compiler-errors-2/compiler-error-c2600.md + - name: Compiler error C2601 + href: compiler-errors-2/compiler-error-c2601.md + - name: Compiler error C2602 + href: compiler-errors-2/compiler-error-c2602.md + - name: Compiler error C2603 + href: compiler-errors-2/compiler-error-c2603.md + - name: Compiler error C2605 + href: compiler-errors-2/compiler-error-c2605.md + - name: Compiler error C2611 + href: compiler-errors-2/compiler-error-c2611.md + - name: Compiler error C2612 + href: compiler-errors-2/compiler-error-c2612.md + - name: Compiler error C2613 + href: compiler-errors-2/compiler-error-c2613.md + - name: Compiler error C2614 + href: compiler-errors-2/compiler-error-c2614.md + - name: Compiler error C2616 + href: compiler-errors-2/compiler-error-c2616.md + - name: Compiler error C2617 + href: compiler-errors-2/compiler-error-c2617.md + - name: Compiler error C2619 + href: compiler-errors-2/compiler-error-c2619.md + - name: Compiler error C2624 + href: compiler-errors-2/compiler-error-c2624.md + - name: Compiler error C2626 + href: compiler-errors-2/compiler-error-c2626.md + - name: Compiler error C2627 + href: compiler-errors-2/compiler-error-c2627.md + - name: Compiler error C2628 + href: compiler-errors-2/compiler-error-c2628.md + - name: Compiler error C2630 + href: compiler-errors-2/compiler-error-c2630.md + - name: Compiler error C2632 + href: compiler-errors-2/compiler-error-c2632.md + - name: Compiler error C2633 + href: compiler-errors-2/compiler-error-c2633.md + - name: Compiler error C2634 + href: compiler-errors-2/compiler-error-c2634.md + - name: Compiler error C2635 + href: compiler-errors-2/compiler-error-c2635.md + - name: Compiler error C2636 + href: compiler-errors-2/compiler-error-c2636.md + - name: Compiler error C2637 + href: compiler-errors-2/compiler-error-c2637.md + - name: Compiler error C2638 + href: compiler-errors-2/compiler-error-c2638.md + - name: Compiler error C2640 + href: compiler-errors-2/compiler-error-c2640.md + - name: Compiler error C2645 + href: compiler-errors-2/compiler-error-c2645.md + - name: Compiler error C2646 + href: compiler-errors-2/compiler-error-c2646.md + - name: Compiler error C2647 + href: compiler-errors-2/compiler-error-c2647.md + - name: Compiler error C2648 + href: compiler-errors-2/compiler-error-c2648.md + - name: Compiler error C2649 + href: compiler-errors-2/compiler-error-c2649.md + - name: Compiler error C2650 + href: compiler-errors-2/compiler-error-c2650.md + - name: Compiler error C2651 + href: compiler-errors-2/compiler-error-c2651.md + - name: Compiler error C2652 + href: compiler-errors-2/compiler-error-c2652.md + - name: Compiler error C2653 + href: compiler-errors-2/compiler-error-c2653.md + - name: Compiler error C2654 + href: compiler-errors-2/compiler-error-c2654.md + - name: Compiler error C2655 + href: compiler-errors-2/compiler-error-c2655.md + - name: Compiler error C2656 + href: compiler-errors-2/compiler-error-c2656.md + - name: Compiler error C2657 + href: compiler-errors-2/compiler-error-c2657.md + - name: Compiler error C2658 + href: compiler-errors-2/compiler-error-c2658.md + - name: Compiler error C2659 + href: compiler-errors-2/compiler-error-c2659.md + - name: Compiler error C2660 + href: compiler-errors-2/compiler-error-c2660.md + - name: Compiler error C2661 + href: compiler-errors-2/compiler-error-c2661.md + - name: Compiler error C2662 + href: compiler-errors-2/compiler-error-c2662.md + - name: Compiler error C2663 + href: compiler-errors-2/compiler-error-c2663.md + - name: Compiler error C2664 + href: compiler-errors-2/compiler-error-c2664.md + - name: Compiler error C2665 + href: compiler-errors-2/compiler-error-c2665.md + - name: Compiler error C2666 + href: compiler-errors-2/compiler-error-c2666.md + - name: Compiler error C2667 + href: compiler-errors-2/compiler-error-c2667.md + - name: Compiler error C2668 + href: compiler-errors-2/compiler-error-c2668.md + - name: Compiler error C2669 + href: compiler-errors-2/compiler-error-c2669.md + - name: Compiler error C2670 + href: compiler-errors-2/compiler-error-c2670.md + - name: Compiler error C2671 + href: compiler-errors-2/compiler-error-c2671.md + - name: Compiler error C2672 + href: compiler-errors-2/compiler-error-c2672.md + - name: Compiler error C2673 + href: compiler-errors-2/compiler-error-c2673.md + - name: Compiler error C2674 + href: compiler-errors-2/compiler-error-c2674.md + - name: Compiler error C2675 + href: compiler-errors-2/compiler-error-c2675.md + - name: Compiler error C2676 + href: compiler-errors-2/compiler-error-c2676.md + - name: Compiler error C2677 + href: compiler-errors-2/compiler-error-c2677.md + - name: Compiler error C2678 + href: compiler-errors-2/compiler-error-c2678.md + - name: Compiler error C2679 + href: compiler-errors-2/compiler-error-c2679.md + - name: Compiler error C2680 + href: compiler-errors-2/compiler-error-c2680.md + - name: Compiler error C2681 + href: compiler-errors-2/compiler-error-c2681.md + - name: Compiler error C2682 + href: compiler-errors-2/compiler-error-c2682.md + - name: Compiler error C2683 + href: compiler-errors-2/compiler-error-c2683.md + - name: Compiler error C2687 + href: compiler-errors-2/compiler-error-c2687.md + - name: Compiler error C2688 + href: compiler-errors-2/compiler-error-c2688.md + - name: Compiler error C2689 + href: compiler-errors-2/compiler-error-c2689.md + - name: Compiler error C2690 + href: compiler-errors-2/compiler-error-c2690.md + - name: Compiler error C2691 + href: compiler-errors-2/compiler-error-c2691.md + - name: Compiler error C2692 + href: compiler-errors-2/compiler-error-c2692.md + - name: Compiler error C2693 + href: compiler-errors-2/compiler-error-c2693.md + - name: Compiler error C2694 + href: compiler-errors-2/compiler-error-c2694.md + - name: Compiler error C2695 + href: compiler-errors-2/compiler-error-c2695.md + - name: Compiler error C2696 + href: compiler-errors-2/compiler-error-c2696.md + - name: Compiler error C2698 + href: compiler-errors-2/compiler-error-c2698.md + - name: Compiler errors C2700 through C2799 + expanded: false + items: + - name: Compiler errors C2700 through C2799 + href: compiler-errors-2/compiler-errors-c2700-through-c2799.md + - name: Compiler error C2700 + href: compiler-errors-2/compiler-error-c2700.md + - name: Compiler error C2701 + href: compiler-errors-2/compiler-error-c2701.md + - name: Compiler error C2702 + href: compiler-errors-2/compiler-error-c2702.md + - name: Compiler error C2703 + href: compiler-errors-2/compiler-error-c2703.md + - name: Compiler error C2704 + href: compiler-errors-2/compiler-error-c2704.md + - name: Compiler error C2705 + href: compiler-errors-2/compiler-error-c2705.md + - name: Compiler error C2706 + href: compiler-errors-2/compiler-error-c2706.md + - name: Compiler error C2707 + href: compiler-errors-2/compiler-error-c2707.md + - name: Compiler error C2708 + href: compiler-errors-2/compiler-error-c2708.md + - name: Compiler error C2709 + href: compiler-errors-2/compiler-error-c2709.md + - name: Compiler error C2710 + href: compiler-errors-2/compiler-error-c2710.md + - name: Compiler error C2711 + href: compiler-errors-2/compiler-error-c2711.md + - name: Compiler error C2712 + href: compiler-errors-2/compiler-error-c2712.md + - name: Compiler error C2713 + href: compiler-errors-2/compiler-error-c2713.md + - name: Compiler error C2714 + href: compiler-errors-2/compiler-error-c2714.md + - name: Compiler error C2715 + href: compiler-errors-2/compiler-error-c2715.md + - name: Compiler error C2718 + href: compiler-errors-2/compiler-error-c2718.md + - name: Compiler error C2719 + href: compiler-errors-2/compiler-error-c2719.md + - name: Compiler error C2720 + href: compiler-errors-2/compiler-error-c2720.md + - name: Compiler error C2721 + href: compiler-errors-2/compiler-error-c2721.md + - name: Compiler error C2722 + href: compiler-errors-2/compiler-error-c2722.md + - name: Compiler error C2723 + href: compiler-errors-2/compiler-error-c2723.md + - name: Compiler error C2724 + href: compiler-errors-2/compiler-error-c2724.md + - name: Compiler error C2725 + href: compiler-errors-2/compiler-error-c2725.md + - name: Compiler error C2726 + href: compiler-errors-2/compiler-error-c2726.md + - name: Compiler error C2728 + href: compiler-errors-2/compiler-error-c2728.md + - name: Compiler error C2730 + href: compiler-errors-2/compiler-error-c2730.md + - name: Compiler error C2731 + href: compiler-errors-2/compiler-error-c2731.md + - name: Compiler error C2732 + href: compiler-errors-2/compiler-error-c2732.md + - name: Compiler error C2733 + href: compiler-errors-2/compiler-error-c2733.md + - name: Compiler error C2734 + href: compiler-errors-2/compiler-error-c2734.md + - name: Compiler error C2735 + href: compiler-errors-2/compiler-error-c2735.md + - name: Compiler error C2736 + href: compiler-errors-2/compiler-error-c2736.md + - name: Compiler error C2738 + href: compiler-errors-2/compiler-error-c2738.md + - name: Compiler error C2739 + href: compiler-errors-2/compiler-error-c2739.md + - name: Compiler error C2743 + href: compiler-errors-2/compiler-error-c2743.md + - name: Compiler error C2745 + href: compiler-errors-2/compiler-error-c2745.md + - name: Compiler error C2748 + href: compiler-errors-2/compiler-error-c2748.md + - name: Compiler error C2749 + href: compiler-errors-2/compiler-error-c2749.md + - name: Compiler error C2750 + href: compiler-errors-2/compiler-error-c2750.md + - name: Compiler error C2751 + href: compiler-errors-2/compiler-error-c2751.md + - name: Compiler error C2752 + href: compiler-errors-2/compiler-error-c2752.md + - name: Compiler error C2753 + href: compiler-errors-2/compiler-error-c2753.md + - name: Compiler error C2754 + href: compiler-errors-2/compiler-error-c2754.md + - name: Compiler error C2755 + href: compiler-errors-2/compiler-error-c2755.md + - name: Compiler error C2756 + href: compiler-errors-2/compiler-error-c2756.md + - name: Compiler error C2757 + href: compiler-errors-2/compiler-error-c2757.md + - name: Compiler error C2758 + href: compiler-errors-2/compiler-error-c2758.md + - name: Compiler error C2760 + href: compiler-errors-2/compiler-error-c2760.md + - name: Compiler error C2761 + href: compiler-errors-2/compiler-error-c2761.md + - name: Compiler error C2762 + href: compiler-errors-2/compiler-error-c2762.md + - name: Compiler error C2764 + href: compiler-errors-2/compiler-error-c2764.md + - name: Compiler error C2765 + href: compiler-errors-2/compiler-error-c2765.md + - name: Compiler error C2766 + href: compiler-errors-2/compiler-error-c2766.md + - name: Compiler error C2767 + href: compiler-errors-2/compiler-error-c2767.md + - name: Compiler error C2768 + href: compiler-errors-2/compiler-error-c2768.md + - name: Compiler error C2770 + href: compiler-errors-2/compiler-error-c2770.md + - name: Compiler error C2771 + href: compiler-errors-2/compiler-error-c2771.md + - name: Compiler error C2773 + href: compiler-errors-2/compiler-error-c2773.md + - name: Compiler error C2774 + href: compiler-errors-2/compiler-error-c2774.md + - name: Compiler error C2775 + href: compiler-errors-2/compiler-error-c2775.md + - name: Compiler error C2776 + href: compiler-errors-2/compiler-error-c2776.md + - name: Compiler error C2777 + href: compiler-errors-2/compiler-error-c2777.md + - name: Compiler error C2778 + href: compiler-errors-2/compiler-error-c2778.md + - name: Compiler error C2779 + href: compiler-errors-2/compiler-error-c2779.md + - name: Compiler error C2780 + href: compiler-errors-2/compiler-error-c2780.md + - name: Compiler error C2781 + href: compiler-errors-2/compiler-error-c2781.md + - name: Compiler error C2782 + href: compiler-errors-2/compiler-error-c2782.md + - name: Compiler error C2783 + href: compiler-errors-2/compiler-error-c2783.md + - name: Compiler error C2784 + href: compiler-errors-2/compiler-error-c2784.md + - name: Compiler error C2785 + href: compiler-errors-2/compiler-error-c2785.md + - name: Compiler error C2786 + href: compiler-errors-2/compiler-error-c2786.md + - name: Compiler error C2787 + href: compiler-errors-2/compiler-error-c2787.md + - name: Compiler error C2788 + href: compiler-errors-2/compiler-error-c2788.md + - name: Compiler error C2790 + href: compiler-errors-2/compiler-error-c2790.md + - name: Compiler error C2791 + href: compiler-errors-2/compiler-error-c2791.md + - name: Compiler error C2792 + href: compiler-errors-2/compiler-error-c2792.md + - name: Compiler error C2793 + href: compiler-errors-2/compiler-error-c2793.md + - name: Compiler error C2794 + href: compiler-errors-2/compiler-error-c2794.md + - name: Compiler error C2795 + href: compiler-errors-2/compiler-error-c2795.md + - name: Compiler error C2797 + href: compiler-errors-2/compiler-error-c2797.md + - name: Compiler error C2798 + href: compiler-errors-2/compiler-error-c2798.md + - name: Compiler errors C2800 through C2899 + expanded: false + items: + - name: Compiler errors C2800 through C2899 + href: compiler-errors-2/compiler-errors-c2800-through-c2899.md + - name: Compiler error C2800 + href: compiler-errors-2/compiler-error-c2800.md + - name: Compiler error C2801 + href: compiler-errors-2/compiler-error-c2801.md + - name: Compiler error C2802 + href: compiler-errors-2/compiler-error-c2802.md + - name: Compiler error C2803 + href: compiler-errors-2/compiler-error-c2803.md + - name: Compiler error C2804 + href: compiler-errors-2/compiler-error-c2804.md + - name: Compiler error C2805 + href: compiler-errors-2/compiler-error-c2805.md + - name: Compiler error C2806 + href: compiler-errors-2/compiler-error-c2806.md + - name: Compiler error C2807 + href: compiler-errors-2/compiler-error-c2807.md + - name: Compiler error C2808 + href: compiler-errors-2/compiler-error-c2808.md + - name: Compiler error C2809 + href: compiler-errors-2/compiler-error-c2809.md + - name: Compiler error C2810 + href: compiler-errors-2/compiler-error-c2810.md + - name: Compiler error C2811 + href: compiler-errors-2/compiler-error-c2811.md + - name: Compiler error C2812 + href: compiler-errors-2/compiler-error-c2812.md + - name: Compiler error C2813 + href: compiler-errors-2/compiler-error-c2813.md + - name: Compiler error C2814 + href: compiler-errors-2/compiler-error-c2814.md + - name: Compiler error C2815 + href: compiler-errors-2/compiler-error-c2815.md + - name: Compiler error C2817 + href: compiler-errors-2/compiler-error-c2817.md + - name: Compiler error C2818 + href: compiler-errors-2/compiler-error-c2818.md + - name: Compiler error C2819 + href: compiler-errors-2/compiler-error-c2819.md + - name: Compiler error C2821 + href: compiler-errors-2/compiler-error-c2821.md + - name: Compiler error C2823 + href: compiler-errors-2/compiler-error-c2823.md + - name: Compiler error C2824 + href: compiler-errors-2/compiler-error-c2824.md + - name: Compiler error C2825 + href: compiler-errors-2/compiler-error-c2825.md + - name: Compiler error C2827 + href: compiler-errors-2/compiler-error-c2827.md + - name: Compiler error C2828 + href: compiler-errors-2/compiler-error-c2828.md + - name: Compiler error C2829 + href: compiler-errors-2/compiler-error-c2829.md + - name: Compiler error C2830 + href: compiler-errors-2/compiler-error-c2830.md + - name: Compiler error C2831 + href: compiler-errors-2/compiler-error-c2831.md + - name: Compiler error C2833 + href: compiler-errors-2/compiler-error-c2833.md + - name: Compiler error C2834 + href: compiler-errors-2/compiler-error-c2834.md + - name: Compiler error C2835 + href: compiler-errors-2/compiler-error-c2835.md + - name: Compiler error C2838 + href: compiler-errors-2/compiler-error-c2838.md + - name: Compiler error C2839 + href: compiler-errors-2/compiler-error-c2839.md + - name: Compiler error C2842 + href: compiler-errors-2/compiler-error-c2842.md + - name: Compiler error C2843 + href: compiler-errors-2/compiler-error-c2843.md + - name: Compiler error C2844 + href: compiler-errors-2/compiler-error-c2844.md + - name: Compiler error C2845 + href: compiler-errors-2/compiler-error-c2845.md + - name: Compiler error C2846 + href: compiler-errors-2/compiler-error-c2846.md + - name: Compiler error C2847 + href: compiler-errors-2/compiler-error-c2847.md + - name: Compiler error C2849 + href: compiler-errors-2/compiler-error-c2849.md + - name: Compiler error C2850 + href: compiler-errors-2/compiler-error-c2850.md + - name: Compiler error C2854 + href: compiler-errors-2/compiler-error-c2854.md + - name: Compiler error C2855 + href: compiler-errors-2/compiler-error-c2855.md + - name: Compiler error C2856 + href: compiler-errors-2/compiler-error-c2856.md + - name: Compiler error C2857 + href: compiler-errors-2/compiler-error-c2857.md + - name: Compiler error C2858 + href: compiler-errors-2/compiler-error-c2858.md + - name: Compiler error C2859 + href: compiler-errors-2/compiler-error-c2859.md + - name: Compiler error C2860 + href: compiler-errors-2/compiler-error-c2860.md + - name: Compiler error C2861 + href: compiler-errors-2/compiler-error-c2861.md + - name: Compiler error C2862 + href: compiler-errors-2/compiler-error-c2862.md + - name: Compiler error C2863 + href: compiler-errors-2/compiler-error-c2863.md + - name: Compiler error C2864 + href: compiler-errors-2/compiler-error-c2864.md + - name: Compiler error C2865 + href: compiler-errors-2/compiler-error-c2865.md + - name: Compiler error C2867 + href: compiler-errors-2/compiler-error-c2867.md + - name: Compiler error C2868 + href: compiler-errors-2/compiler-error-c2868.md + - name: Compiler error C2869 + href: compiler-errors-2/compiler-error-c2869.md + - name: Compiler error C2870 + href: compiler-errors-2/compiler-error-c2870.md + - name: Compiler error C2871 + href: compiler-errors-2/compiler-error-c2871.md + - name: Compiler error C2872 + href: compiler-errors-2/compiler-error-c2872.md + - name: Compiler error C2873 + href: compiler-errors-2/compiler-error-c2873.md + - name: Compiler error C2874 + href: compiler-errors-2/compiler-error-c2874.md + - name: Compiler error C2875 + href: compiler-errors-2/compiler-error-c2875.md + - name: Compiler error C2876 + href: compiler-errors-2/compiler-error-c2876.md + - name: Compiler error C2877 + href: compiler-errors-2/compiler-error-c2877.md + - name: Compiler error C2878 + href: compiler-errors-2/compiler-error-c2878.md + - name: Compiler error C2879 + href: compiler-errors-2/compiler-error-c2879.md + - name: Compiler error C2881 + href: compiler-errors-2/compiler-error-c2881.md + - name: Compiler error C2882 + href: compiler-errors-2/compiler-error-c2882.md + - name: Compiler error C2883 + href: compiler-errors-2/compiler-error-c2883.md + - name: Compiler error C2884 + href: compiler-errors-2/compiler-error-c2884.md + - name: Compiler error C2885 + href: compiler-errors-2/compiler-error-c2885.md + - name: Compiler error C2886 + href: compiler-errors-2/compiler-error-c2886.md + - name: Compiler error C2888 + href: compiler-errors-2/compiler-error-c2888.md + - name: Compiler error C2890 + href: compiler-errors-2/compiler-error-c2890.md + - name: Compiler error C2891 + href: compiler-errors-2/compiler-error-c2891.md + - name: Compiler error C2892 + href: compiler-errors-2/compiler-error-c2892.md + - name: Compiler error C2893 + href: compiler-errors-2/compiler-error-c2893.md + - name: Compiler error C2894 + href: compiler-errors-2/compiler-error-c2894.md + - name: Compiler error C2896 + href: compiler-errors-2/compiler-error-c2896.md + - name: Compiler error C2897 + href: compiler-errors-2/compiler-error-c2897.md + - name: Compiler error C2898 + href: compiler-errors-2/compiler-error-c2898.md + - name: Compiler errors C2900 through C2999 + expanded: false + items: + - name: Compiler errors C2900 through C2999 + href: compiler-errors-2/compiler-errors-c2900-through-c3499.md + - name: Compiler error C2902 + href: compiler-errors-2/compiler-error-c2902.md + - name: Compiler error C2903 + href: compiler-errors-2/compiler-error-c2903.md + - name: Compiler error C2904 + href: compiler-errors-2/compiler-error-c2904.md + - name: Compiler error C2906 + href: compiler-errors-2/compiler-error-c2906.md + - name: Compiler error C2908 + href: compiler-errors-2/compiler-error-c2908.md + - name: Compiler error C2909 + href: compiler-errors-2/compiler-error-c2909.md + - name: Compiler error C2910 + href: compiler-errors-2/compiler-error-c2910.md + - name: Compiler error C2911 + href: compiler-errors-2/compiler-error-c2911.md + - name: Compiler error C2912 + href: compiler-errors-2/compiler-error-c2912.md + - name: Compiler error C2913 + href: compiler-errors-2/compiler-error-c2913.md + - name: Compiler error C2914 + href: compiler-errors-2/compiler-error-c2914.md + - name: Compiler error C2917 + href: compiler-errors-2/compiler-error-c2917.md + - name: Compiler error C2918 + href: compiler-errors-2/compiler-error-c2918.md + - name: Compiler error C2919 + href: compiler-errors-2/compiler-error-c2919.md + - name: Compiler error C2920 + href: compiler-errors-2/compiler-error-c2920.md + - name: Compiler error C2921 + href: compiler-errors-2/compiler-error-c2921.md + - name: Compiler error C2923 + href: compiler-errors-2/compiler-error-c2923.md + - name: Compiler error C2927 + href: compiler-errors-2/compiler-error-c2927.md + - name: Compiler error C2928 + href: compiler-errors-2/compiler-error-c2928.md + - name: Compiler error C2929 + href: compiler-errors-2/compiler-error-c2929.md + - name: Compiler error C2930 + href: compiler-errors-2/compiler-error-c2930.md + - name: Compiler error C2931 + href: compiler-errors-2/compiler-error-c2931.md + - name: Compiler error C2932 + href: compiler-errors-2/compiler-error-c2932.md + - name: Compiler error C2933 + href: compiler-errors-2/compiler-error-c2933.md + - name: Compiler error C2934 + href: compiler-errors-2/compiler-error-c2934.md + - name: Compiler error C2935 + href: compiler-errors-2/compiler-error-c2935.md + - name: Compiler error C2936 + href: compiler-errors-2/compiler-error-c2936.md + - name: Compiler error C2937 + href: compiler-errors-2/compiler-error-c2937.md + - name: Compiler error C2939 + href: compiler-errors-2/compiler-error-c2939.md + - name: Compiler error C2940 + href: compiler-errors-2/compiler-error-c2940.md + - name: Compiler error C2941 + href: compiler-errors-2/compiler-error-c2941.md + - name: Compiler error C2942 + href: compiler-errors-2/compiler-error-c2942.md + - name: Compiler error C2943 + href: compiler-errors-2/compiler-error-c2943.md + - name: Compiler error C2944 + href: compiler-errors-2/compiler-error-c2944.md + - name: Compiler error C2945 + href: compiler-errors-2/compiler-error-c2945.md + - name: Compiler error C2946 + href: compiler-errors-2/compiler-error-c2946.md + - name: Compiler error C2947 + href: compiler-errors-2/compiler-error-c2947.md + - name: Compiler error C2948 + href: compiler-errors-2/compiler-error-c2948.md + - name: Compiler error C2951 + href: compiler-errors-2/compiler-error-c2951.md + - name: Compiler error C2952 + href: compiler-errors-2/compiler-error-c2952.md + - name: Compiler error C2953 + href: compiler-errors-2/compiler-error-c2953.md + - name: Compiler error C2955 + href: compiler-errors-2/compiler-error-c2955.md + - name: Compiler error C2956 + href: compiler-errors-2/compiler-error-c2956.md + - name: Compiler error C2957 + href: compiler-errors-2/compiler-error-c2957.md + - name: Compiler error C2958 + href: compiler-errors-2/compiler-error-c2958.md + - name: Compiler error C2959 + href: compiler-errors-2/compiler-error-c2959.md + - name: Compiler error C2962 + href: compiler-errors-2/compiler-error-c2962.md + - name: Compiler error C2969 + href: compiler-errors-2/compiler-error-c2969.md + - name: Compiler error C2970 + href: compiler-errors-2/compiler-error-c2970.md + - name: Compiler error C2971 + href: compiler-errors-2/compiler-error-c2971.md + - name: Compiler error C2973 + href: compiler-errors-2/compiler-error-c2973.md + - name: Compiler error C2974 + href: compiler-errors-2/compiler-error-c2974.md + - name: Compiler error C2975 + href: compiler-errors-2/compiler-error-c2975.md + - name: Compiler error C2976 + href: compiler-errors-2/compiler-error-c2976.md + - name: Compiler error C2977 + href: compiler-errors-2/compiler-error-c2977.md + - name: Compiler error C2978 + href: compiler-errors-2/compiler-error-c2978.md + - name: Compiler error C2979 + href: compiler-errors-2/compiler-error-c2979.md + - name: Compiler error C2988 + href: compiler-errors-2/compiler-error-c2988.md + - name: Compiler error C2989 + href: compiler-errors-2/compiler-error-c2989.md + - name: Compiler error C2990 + href: compiler-errors-2/compiler-error-c2990.md + - name: Compiler error C2991 + href: compiler-errors-2/compiler-error-c2991.md + - name: Compiler error C2992 + href: compiler-errors-2/compiler-error-c2992.md + - name: Compiler error C2993 + href: compiler-errors-2/compiler-error-c2993.md + - name: Compiler error C2994 + href: compiler-errors-2/compiler-error-c2994.md + - name: Compiler error C2995 + href: compiler-errors-2/compiler-error-c2995.md + - name: Compiler error C2996 + href: compiler-errors-2/compiler-error-c2996.md + - name: Compiler error C2998 + href: compiler-errors-2/compiler-error-c2998.md + - name: Compiler errors C3000 through C3099 + expanded: false + items: + - name: Compiler errors C3000 through C3099 + href: compiler-errors-2/compiler-errors-c3000-through-c3099.md + - name: Compiler error C3001 + href: compiler-errors-2/compiler-error-c3001.md + - name: Compiler error C3002 + href: compiler-errors-2/compiler-error-c3002.md + - name: Compiler error C3003 + href: compiler-errors-2/compiler-error-c3003.md + - name: Compiler error C3004 + href: compiler-errors-2/compiler-error-c3004.md + - name: Compiler error C3005 + href: compiler-errors-2/compiler-error-c3005.md + - name: Compiler error C3006 + href: compiler-errors-2/compiler-error-c3006.md + - name: Compiler error C3007 + href: compiler-errors-2/compiler-error-c3007.md + - name: Compiler error C3008 + href: compiler-errors-2/compiler-error-c3008.md + - name: Compiler error C3009 + href: compiler-errors-2/compiler-error-c3009.md + - name: Compiler error C3010 + href: compiler-errors-2/compiler-error-c3010.md + - name: Compiler error C3011 + href: compiler-errors-2/compiler-error-c3011.md + - name: Compiler error C3012 + href: compiler-errors-2/compiler-error-c3012.md + - name: Compiler error C3013 + href: compiler-errors-2/compiler-error-c3013.md + - name: Compiler error C3014 + href: compiler-errors-2/compiler-error-c3014.md + - name: Compiler error C3015 + href: compiler-errors-2/compiler-error-c3015.md + - name: Compiler error C3016 + href: compiler-errors-2/compiler-error-c3016.md + - name: Compiler error C3017 + href: compiler-errors-2/compiler-error-c3017.md + - name: Compiler error C3018 + href: compiler-errors-2/compiler-error-c3018.md + - name: Compiler error C3019 + href: compiler-errors-2/compiler-error-c3019.md + - name: Compiler error C3020 + href: compiler-errors-2/compiler-error-c3020.md + - name: Compiler error C3021 + href: compiler-errors-2/compiler-error-c3021.md + - name: Compiler error C3022 + href: compiler-errors-2/compiler-error-c3022.md + - name: Compiler error C3023 + href: compiler-errors-2/compiler-error-c3023.md + - name: Compiler error C3024 + href: compiler-errors-2/compiler-error-c3024.md + - name: Compiler error C3025 + href: compiler-errors-2/compiler-error-c3025.md + - name: Compiler error C3026 + href: compiler-errors-2/compiler-error-c3026.md + - name: Compiler error C3027 + href: compiler-errors-2/compiler-error-c3027.md + - name: Compiler error C3028 + href: compiler-errors-2/compiler-error-c3028.md + - name: Compiler error C3029 + href: compiler-errors-2/compiler-error-c3029.md + - name: Compiler error C3030 + href: compiler-errors-2/compiler-error-c3030.md + - name: Compiler error C3031 + href: compiler-errors-2/compiler-error-c3031.md + - name: Compiler error C3032 + href: compiler-errors-2/compiler-error-c3032.md + - name: Compiler error C3033 + href: compiler-errors-2/compiler-error-c3033.md + - name: Compiler error C3034 + href: compiler-errors-2/compiler-error-c3034.md + - name: Compiler error C3035 + href: compiler-errors-2/compiler-error-c3035.md + - name: Compiler error C3036 + href: compiler-errors-2/compiler-error-c3036.md + - name: Compiler error C3037 + href: compiler-errors-2/compiler-error-c3037.md + - name: Compiler error C3038 + href: compiler-errors-2/compiler-error-c3038.md + - name: Compiler error C3039 + href: compiler-errors-2/compiler-error-c3039.md + - name: Compiler error C3040 + href: compiler-errors-2/compiler-error-c3040.md + - name: Compiler error C3041 + href: compiler-errors-2/compiler-error-c3041.md + - name: Compiler error C3042 + href: compiler-errors-2/compiler-error-c3042.md + - name: Compiler error C3043 + href: compiler-errors-2/compiler-error-c3043.md + - name: Compiler error C3044 + href: compiler-errors-2/compiler-error-c3044.md + - name: Compiler error C3045 + href: compiler-errors-2/compiler-error-c3045.md + - name: Compiler error C3046 + href: compiler-errors-2/compiler-error-c3046.md + - name: Compiler error C3047 + href: compiler-errors-2/compiler-error-c3047.md + - name: Compiler error C3048 + href: compiler-errors-2/compiler-error-c3048.md + - name: Compiler error C3049 + href: compiler-errors-2/compiler-error-c3049.md + - name: Compiler error C3050 + href: compiler-errors-2/compiler-error-c3050.md + - name: Compiler error C3052 + href: compiler-errors-2/compiler-error-c3052.md + - name: Compiler error C3053 + href: compiler-errors-2/compiler-error-c3053.md + - name: Compiler error C3054 + href: compiler-errors-2/compiler-error-c3054.md + - name: Compiler error C3055 + href: compiler-errors-2/compiler-error-c3055.md + - name: Compiler error C3056 + href: compiler-errors-2/compiler-error-c3056.md + - name: Compiler error C3057 + href: compiler-errors-2/compiler-error-c3057.md + - name: Compiler error C3058 + href: compiler-errors-2/compiler-error-c3058.md + - name: Compiler error C3059 + href: compiler-errors-2/compiler-error-c3059.md + - name: Compiler error C3060 + href: compiler-errors-2/compiler-error-c3060.md + - name: Compiler error C3062 + href: compiler-errors-2/compiler-error-c3062.md + - name: Compiler error C3063 + href: compiler-errors-2/compiler-error-c3063.md + - name: Compiler error C3065 + href: compiler-errors-2/compiler-error-c3065.md + - name: Compiler error C3066 + href: compiler-errors-2/compiler-error-c3066.md + - name: Compiler error C3068 + href: compiler-errors-2/compiler-error-c3068.md + - name: Compiler error C3069 + href: compiler-errors-2/compiler-error-c3069.md + - name: Compiler error C3070 + href: compiler-errors-2/compiler-error-c3070.md + - name: Compiler error C3071 + href: compiler-errors-2/compiler-error-c3071.md + - name: Compiler error C3072 + href: compiler-errors-2/compiler-error-c3072.md + - name: Compiler error C3073 + href: compiler-errors-2/compiler-error-c3073.md + - name: Compiler error C3075 + href: compiler-errors-2/compiler-error-c3075.md + - name: Compiler error C3076 + href: compiler-errors-2/compiler-error-c3076.md + - name: Compiler error C3077 + href: compiler-errors-2/compiler-error-c3077.md + - name: Compiler error C3080 + href: compiler-errors-2/compiler-error-c3080.md + - name: Compiler error C3083 + href: compiler-errors-2/compiler-error-c3083.md + - name: Compiler error C3084 + href: compiler-errors-2/compiler-error-c3084.md + - name: Compiler error C3085 + href: compiler-errors-2/compiler-error-c3085.md + - name: Compiler error C3087 + href: compiler-errors-2/compiler-error-c3087.md + - name: Compiler error C3094 + href: compiler-errors-2/compiler-error-c3094.md + - name: Compiler error C3095 + href: compiler-errors-2/compiler-error-c3095.md + - name: Compiler error C3096 + href: compiler-errors-2/compiler-error-c3096.md + - name: Compiler error C3097 + href: compiler-errors-2/compiler-error-c3097.md + - name: Compiler error C3099 + href: compiler-errors-2/compiler-error-c3099.md + - name: Compiler errors C3100 through C3199 + expanded: false + items: + - name: Compiler errors C3100 through C3199 + href: compiler-errors-2/compiler-errors-c3100-through-c3199.md + - name: Compiler error C3100 + href: compiler-errors-2/compiler-error-c3100.md + - name: Compiler error C3101 + href: compiler-errors-2/compiler-error-c3101.md + - name: Compiler error C3103 + href: compiler-errors-2/compiler-error-c3103.md + - name: Compiler error C3104 + href: compiler-errors-2/compiler-error-c3104.md + - name: Compiler error C3106 + href: compiler-errors-2/compiler-error-c3106.md + - name: Compiler error C3110 + href: compiler-errors-2/compiler-error-c3110.md + - name: Compiler error C3113 + href: compiler-errors-2/compiler-error-c3113.md + - name: Compiler error C3114 + href: compiler-errors-2/compiler-error-c3114.md + - name: Compiler error C3115 + href: compiler-errors-2/compiler-error-c3115.md + - name: Compiler error C3116 + href: compiler-errors-2/compiler-error-c3116.md + - name: Compiler error C3117 + href: compiler-errors-2/compiler-error-c3117.md + - name: Compiler error C3118 + href: compiler-errors-2/compiler-error-c3118.md + - name: Compiler error C3120 + href: compiler-errors-2/compiler-error-c3120.md + - name: Compiler error C3121 + href: compiler-errors-2/compiler-error-c3121.md + - name: Compiler error C3126 + href: compiler-errors-2/compiler-error-c3126.md + - name: Compiler error C3130 + href: compiler-errors-2/compiler-error-c3130.md + - name: Compiler error C3131 + href: compiler-errors-2/compiler-error-c3131.md + - name: Compiler error C3132 + href: compiler-errors-2/compiler-error-c3132.md + - name: Compiler error C3133 + href: compiler-errors-2/compiler-error-c3133.md + - name: Compiler error C3134 + href: compiler-errors-2/compiler-error-c3134.md + - name: Compiler error C3135 + href: compiler-errors-2/compiler-error-c3135.md + - name: Compiler error C3136 + href: compiler-errors-2/compiler-error-c3136.md + - name: Compiler error C3137 + href: compiler-errors-2/compiler-error-c3137.md + - name: Compiler error C3138 + href: compiler-errors-2/compiler-error-c3138.md + - name: Compiler error C3139 + href: compiler-errors-2/compiler-error-c3139.md + - name: Compiler error C3140 + href: compiler-errors-2/compiler-error-c3140.md + - name: Compiler error C3141 + href: compiler-errors-2/compiler-error-c3141.md + - name: Compiler error C3142 + href: compiler-errors-2/compiler-error-c3142.md + - name: Compiler error C3145 + href: compiler-errors-2/compiler-error-c3145.md + - name: Compiler error C3149 + href: compiler-errors-2/compiler-error-c3149.md + - name: Compiler error C3150 + href: compiler-errors-2/compiler-error-c3150.md + - name: Compiler error C3152 + href: compiler-errors-2/compiler-error-c3152.md + - name: Compiler error C3153 + href: compiler-errors-2/compiler-error-c3153.md + - name: Compiler error C3154 + href: compiler-errors-2/compiler-error-c3154.md + - name: Compiler error C3155 + href: compiler-errors-2/compiler-error-c3155.md + - name: Compiler error C3156 + href: compiler-errors-2/compiler-error-c3156.md + - name: Compiler error C3157 + href: compiler-errors-2/compiler-error-c3157.md + - name: Compiler error C3159 + href: compiler-errors-2/compiler-error-c3159.md + - name: Compiler error C3160 + href: compiler-errors-2/compiler-error-c3160.md + - name: Compiler error C3161 + href: compiler-errors-2/compiler-error-c3161.md + - name: Compiler error C3162 + href: compiler-errors-2/compiler-error-c3162.md + - name: Compiler error C3163 + href: compiler-errors-2/compiler-error-c3163.md + - name: Compiler error C3166 + href: compiler-errors-2/compiler-error-c3166.md + - name: Compiler error C3167 + href: compiler-errors-2/compiler-error-c3167.md + - name: Compiler error C3168 + href: compiler-errors-2/compiler-error-c3168.md + - name: Compiler error C3170 + href: compiler-errors-2/compiler-error-c3170.md + - name: Compiler error C3171 + href: compiler-errors-2/compiler-error-c3171.md + - name: Compiler error C3172 + href: compiler-errors-2/compiler-error-c3172.md + - name: Compiler error C3173 + href: compiler-errors-2/compiler-error-c3173.md + - name: Compiler error C3174 + href: compiler-errors-2/compiler-error-c3174.md + - name: Compiler error C3175 + href: compiler-errors-2/compiler-error-c3175.md + - name: Compiler error C3176 + href: compiler-errors-2/compiler-error-c3176.md + - name: Compiler error C3179 + href: compiler-errors-2/compiler-error-c3179.md + - name: Compiler error C3180 + href: compiler-errors-2/compiler-error-c3180.md + - name: Compiler error C3181 + href: compiler-errors-2/compiler-error-c3181.md + - name: Compiler error C3182 + href: compiler-errors-2/compiler-error-c3182.md + - name: Compiler error C3183 + href: compiler-errors-2/compiler-error-c3183.md + - name: Compiler error C3185 + href: compiler-errors-2/compiler-error-c3185.md + - name: Compiler error C3187 + href: compiler-errors-2/compiler-error-c3187.md + - name: Compiler error C3189 + href: compiler-errors-2/compiler-error-c3189.md + - name: Compiler error C3190 + href: compiler-errors-2/compiler-error-c3190.md + - name: Compiler error C3192 + href: compiler-errors-2/compiler-error-c3192.md + - name: Compiler error C3194 + href: compiler-errors-2/compiler-error-c3194.md + - name: Compiler error C3195 + href: compiler-errors-2/compiler-error-c3195.md + - name: Compiler error C3196 + href: compiler-errors-2/compiler-error-c3196.md + - name: Compiler error C3197 + href: compiler-errors-2/compiler-error-c3197.md + - name: Compiler error C3198 + href: compiler-errors-2/compiler-error-c3198.md + - name: Compiler error C3199 + href: compiler-errors-2/compiler-error-c3199.md + - name: Compiler errors C3200 through C3299 + expanded: false + items: + - name: Compiler errors C3200 through C3299 + href: compiler-errors-2/compiler-errors-c3200-through-c3299.md + - name: Compiler error C3200 + href: compiler-errors-2/compiler-error-c3200.md + - name: Compiler error C3201 + href: compiler-errors-2/compiler-error-c3201.md + - name: Compiler error C3202 + href: compiler-errors-2/compiler-error-c3202.md + - name: Compiler error C3203 + href: compiler-errors-2/compiler-error-c3203.md + - name: Compiler error C3204 + href: compiler-errors-2/compiler-error-c3204.md + - name: Compiler error C3205 + href: compiler-errors-2/compiler-error-c3205.md + - name: Compiler error C3206 + href: compiler-errors-2/compiler-error-c3206.md + - name: Compiler error C3207 + href: compiler-errors-2/compiler-error-c3207.md + - name: Compiler error C3208 + href: compiler-errors-2/compiler-error-c3208.md + - name: Compiler error C3209 + href: compiler-errors-2/compiler-error-c3209.md + - name: Compiler error C3210 + href: compiler-errors-2/compiler-error-c3210.md + - name: Compiler error C3211 + href: compiler-errors-2/compiler-error-c3211.md + - name: Compiler error C3212 + href: compiler-errors-2/compiler-error-c3212.md + - name: Compiler error C3213 + href: compiler-errors-2/compiler-error-c3213.md + - name: Compiler error C3214 + href: compiler-errors-2/compiler-error-c3214.md + - name: Compiler error C3215 + href: compiler-errors-2/compiler-error-c3215.md + - name: Compiler error C3216 + href: compiler-errors-2/compiler-error-c3216.md + - name: Compiler error C3217 + href: compiler-errors-2/compiler-error-c3217.md + - name: Compiler error C3218 + href: compiler-errors-2/compiler-error-c3218.md + - name: Compiler error C3219 + href: compiler-errors-2/compiler-error-c3219.md + - name: Compiler error C3222 + href: compiler-errors-2/compiler-error-c3222.md + - name: Compiler error C3223 + href: compiler-errors-2/compiler-error-c3223.md + - name: Compiler error C3224 + href: compiler-errors-2/compiler-error-c3224.md + - name: Compiler error C3225 + href: compiler-errors-2/compiler-error-c3225.md + - name: Compiler error C3226 + href: compiler-errors-2/compiler-error-c3226.md + - name: Compiler error C3227 + href: compiler-errors-2/compiler-error-c3227.md + - name: Compiler error C3228 + href: compiler-errors-2/compiler-error-c3228.md + - name: Compiler error C3229 + href: compiler-errors-2/compiler-error-c3229.md + - name: Compiler error C3230 + href: compiler-errors-2/compiler-error-c3230.md + - name: Compiler error C3231 + href: compiler-errors-2/compiler-error-c3231.md + - name: Compiler error C3232 + href: compiler-errors-2/compiler-error-c3232.md + - name: Compiler error C3233 + href: compiler-errors-2/compiler-error-c3233.md + - name: Compiler error C3234 + href: compiler-errors-2/compiler-error-c3234.md + - name: Compiler error C3235 + href: compiler-errors-2/compiler-error-c3235.md + - name: Compiler error C3236 + href: compiler-errors-2/compiler-error-c3236.md + - name: Compiler error C3237 + href: compiler-errors-2/compiler-error-c3237.md + - name: Compiler error C3238 + href: compiler-errors-2/compiler-error-c3238.md + - name: Compiler error C3239 + href: compiler-errors-2/compiler-error-c3239.md + - name: Compiler error C3240 + href: compiler-errors-2/compiler-error-c3240.md + - name: Compiler error C3241 + href: compiler-errors-2/compiler-error-c3241.md + - name: Compiler error C3242 + href: compiler-errors-2/compiler-error-c3242.md + - name: Compiler error C3243 + href: compiler-errors-2/compiler-error-c3243.md + - name: Compiler error C3244 + href: compiler-errors-2/compiler-error-c3244.md + - name: Compiler error C3246 + href: compiler-errors-2/compiler-error-c3246.md + - name: Compiler error C3247 + href: compiler-errors-2/compiler-error-c3247.md + - name: Compiler error C3248 + href: compiler-errors-2/compiler-error-c3248.md + - name: Compiler error C3251 + href: compiler-errors-2/compiler-error-c3251.md + - name: Compiler error C3252 + href: compiler-errors-2/compiler-error-c3252.md + - name: Compiler error C3253 + href: compiler-errors-2/compiler-error-c3253.md + - name: Compiler error C3254 + href: compiler-errors-2/compiler-error-c3254.md + - name: Compiler error C3255 + href: compiler-errors-2/compiler-error-c3255.md + - name: Compiler error C3262 + href: compiler-errors-2/compiler-error-c3262.md + - name: Compiler error C3264 + href: compiler-errors-2/compiler-error-c3264.md + - name: Compiler error C3265 + href: compiler-errors-2/compiler-error-c3265.md + - name: Compiler error C3266 + href: compiler-errors-2/compiler-error-c3266.md + - name: Compiler error C3268 + href: compiler-errors-2/compiler-error-c3268.md + - name: Compiler error C3269 + href: compiler-errors-2/compiler-error-c3269.md + - name: Compiler error C3270 + href: compiler-errors-2/compiler-error-c3270.md + - name: Compiler error C3271 + href: compiler-errors-2/compiler-error-c3271.md + - name: Compiler error C3272 + href: compiler-errors-2/compiler-error-c3272.md + - name: Compiler error C3273 + href: compiler-errors-2/compiler-error-c3273.md + - name: Compiler error C3274 + href: compiler-errors-2/compiler-error-c3274.md + - name: Compiler error C3275 + href: compiler-errors-2/compiler-error-c3275.md + - name: Compiler error C3276 + href: compiler-errors-2/compiler-error-c3276.md + - name: Compiler error C3277 + href: compiler-errors-2/compiler-error-c3277.md + - name: Compiler error C3278 + href: compiler-errors-2/compiler-error-c3278.md + - name: Compiler error C3279 + href: compiler-errors-2/compiler-error-c3279.md + - name: Compiler error C3280 + href: compiler-errors-2/compiler-error-c3280.md + - name: Compiler error C3282 + href: compiler-errors-2/compiler-error-c3282.md + - name: Compiler error C3283 + href: compiler-errors-2/compiler-error-c3283.md + - name: Compiler error C3284 + href: compiler-errors-2/compiler-error-c3284.md + - name: Compiler error C3285 + href: compiler-errors-2/compiler-error-c3285.md + - name: Compiler error C3286 + href: compiler-errors-2/compiler-error-c3286.md + - name: Compiler error C3287 + href: compiler-errors-2/compiler-error-c3287.md + - name: Compiler error C3288 + href: compiler-errors-2/compiler-error-c3288.md + - name: Compiler error C3289 + href: compiler-errors-2/compiler-error-c3289.md + - name: Compiler error C3290 + href: compiler-errors-2/compiler-error-c3290.md + - name: Compiler error C3291 + href: compiler-errors-2/compiler-error-c3291.md + - name: Compiler error C3292 + href: compiler-errors-2/compiler-error-c3292.md + - name: Compiler error C3293 + href: compiler-errors-2/compiler-error-c3293.md + - name: Compiler error C3295 + href: compiler-errors-2/compiler-error-c3295.md + - name: Compiler error C3296 + href: compiler-errors-2/compiler-error-c3296.md + - name: Compiler error C3297 + href: compiler-errors-2/compiler-error-c3297.md + - name: Compiler error C3298 + href: compiler-errors-2/compiler-error-c3298.md + - name: Compiler error C3299 + href: compiler-errors-2/compiler-error-c3299.md + - name: Compiler errors C3300 through C3399 + expanded: false + items: + - name: Compiler errors C3300 through C3399 + href: compiler-errors-2/compiler-errors-c3300-through-c3399.md + - name: Compiler error C3303 + href: compiler-errors-2/compiler-error-c3303.md + - name: Compiler error C3309 + href: compiler-errors-2/compiler-error-c3309.md + - name: Compiler error C3320 + href: compiler-errors-2/compiler-error-c3320.md + - name: Compiler error C3322 + href: compiler-errors-2/compiler-error-c3322.md + - name: Compiler error C3333 + href: compiler-errors-2/compiler-error-c3333.md + - name: Compiler error C3334 + href: compiler-errors-2/compiler-error-c3334.md + - name: Compiler error C3340 + href: compiler-errors-2/compiler-error-c3340.md + - name: Compiler error C3342 + href: compiler-errors-2/compiler-error-c3342.md + - name: Compiler error C3345 + href: compiler-errors-2/compiler-error-c3345.md + - name: Compiler error C3347 + href: compiler-errors-2/compiler-error-c3347.md + - name: Compiler error C3350 + href: compiler-errors-2/compiler-error-c3350.md + - name: Compiler error C3351 + href: compiler-errors-2/compiler-error-c3351.md + - name: Compiler error C3352 + href: compiler-errors-2/compiler-error-c3352.md + - name: Compiler error C3353 + href: compiler-errors-2/compiler-error-c3353.md + - name: Compiler error C3354 + href: compiler-errors-2/compiler-error-c3354.md + - name: Compiler error C3356 + href: compiler-errors-2/compiler-error-c3356.md + - name: Compiler error C3358 + href: compiler-errors-2/compiler-error-c3358.md + - name: Compiler error C3360 + href: compiler-errors-2/compiler-error-c3360.md + - name: Compiler error C3363 + href: compiler-errors-2/compiler-error-c3363.md + - name: Compiler error C3364 + href: compiler-errors-2/compiler-error-c3364.md + - name: Compiler error C3365 + href: compiler-errors-2/compiler-error-c3365.md + - name: Compiler error C3366 + href: compiler-errors-2/compiler-error-c3366.md + - name: Compiler error C3367 + href: compiler-errors-2/compiler-error-c3367.md + - name: Compiler error C3368 + href: compiler-errors-2/compiler-error-c3368.md + - name: Compiler error C3369 + href: compiler-errors-2/compiler-error-c3369.md + - name: Compiler error C3370 + href: compiler-errors-2/compiler-error-c3370.md + - name: Compiler error C3371 + href: compiler-errors-2/compiler-error-c3371.md + - name: Compiler error C3372 + href: compiler-errors-2/compiler-error-c3372.md + - name: Compiler error C3373 + href: compiler-errors-2/compiler-error-c3373.md + - name: Compiler error C3374 + href: compiler-errors-2/compiler-error-c3374.md + - name: Compiler error C3375 + href: compiler-errors-2/compiler-error-c3375.md + - name: Compiler error C3379 + href: compiler-errors-2/compiler-error-c3379.md + - name: Compiler error C3380 + href: compiler-errors-2/compiler-error-c3380.md + - name: Compiler error C3381 + href: compiler-errors-2/compiler-error-c3381.md + - name: Compiler error C3382 + href: compiler-errors-2/compiler-error-c3382.md + - name: Compiler error C3383 + href: compiler-errors-2/compiler-error-c3383.md + - name: Compiler error C3384 + href: compiler-errors-2/compiler-error-c3384.md + - name: Compiler error C3385 + href: compiler-errors-2/compiler-error-c3385.md + - name: Compiler error C3386 + href: compiler-errors-2/compiler-error-c3386.md + - name: Compiler error C3387 + href: compiler-errors-2/compiler-error-c3387.md + - name: Compiler error C3388 + href: compiler-errors-2/compiler-error-c3388.md + - name: Compiler error C3389 + href: compiler-errors-2/compiler-error-c3389.md + - name: Compiler error C3390 + href: compiler-errors-2/compiler-error-c3390.md + - name: Compiler error C3391 + href: compiler-errors-2/compiler-error-c3391.md + - name: Compiler error C3392 + href: compiler-errors-2/compiler-error-c3392.md + - name: Compiler error C3393 + href: compiler-errors-2/compiler-error-c3393.md + - name: Compiler error C3394 + href: compiler-errors-2/compiler-error-c3394.md + - name: Compiler error C3395 + href: compiler-errors-2/compiler-error-c3395.md + - name: Compiler error C3396 + href: compiler-errors-2/compiler-error-c3396.md + - name: Compiler error C3397 + href: compiler-errors-2/compiler-error-c3397.md + - name: Compiler error C3398 + href: compiler-errors-2/compiler-error-c3398.md + - name: Compiler error C3399 + href: compiler-errors-2/compiler-error-c3399.md + - name: Compiler errors C3400 through C3499 + expanded: false + items: + - name: Compiler errors C3400 through C3499 + href: compiler-errors-2/compiler-errors-c3400-through-c3499.md + - name: Compiler error C3400 + href: compiler-errors-2/compiler-error-c3400.md + - name: Compiler error C3408 + href: compiler-errors-2/compiler-error-c3408.md + - name: Compiler error C3409 + href: compiler-errors-2/compiler-error-c3409.md + - name: Compiler error C3412 + href: compiler-errors-2/compiler-error-c3412.md + - name: Compiler error C3413 + href: compiler-errors-2/compiler-error-c3413.md + - name: Compiler error C3414 + href: compiler-errors-2/compiler-error-c3414.md + - name: Compiler error C3415 + href: compiler-errors-2/compiler-error-c3415.md + - name: Compiler error C3417 + href: compiler-errors-2/compiler-error-c3417.md + - name: Compiler error C3418 + href: compiler-errors-2/compiler-error-c3418.md + - name: Compiler error C3420 + href: compiler-errors-2/compiler-error-c3420.md + - name: Compiler error C3421 + href: compiler-errors-2/compiler-error-c3421.md + - name: Compiler error C3445 + href: compiler-errors-2/compiler-error-c3445.md + - name: Compiler error C3446 + href: compiler-errors-2/compiler-error-c3446.md + - name: Compiler error C3450 + href: compiler-errors-2/compiler-error-c3450.md + - name: Compiler error C3451 + href: compiler-errors-2/compiler-error-c3451.md + - name: Compiler error C3452 + href: compiler-errors-2/compiler-error-c3452.md + - name: Compiler error C3453 + href: compiler-errors-2/compiler-error-c3453.md + - name: Compiler error C3454 + href: compiler-errors-2/compiler-error-c3454.md + - name: Compiler error C3455 + href: compiler-errors-2/compiler-error-c3455.md + - name: Compiler error C3456 + href: compiler-errors-2/compiler-error-c3456.md + - name: Compiler error C3457 + href: compiler-errors-2/compiler-error-c3457.md + - name: Compiler error C3458 + href: compiler-errors-2/compiler-error-c3458.md + - name: Compiler error C3459 + href: compiler-errors-2/compiler-error-c3459.md + - name: Compiler error C3460 + href: compiler-errors-2/compiler-error-c3460.md + - name: Compiler error C3461 + href: compiler-errors-2/compiler-error-c3461.md + - name: Compiler error C3462 + href: compiler-errors-2/compiler-error-c3462.md + - name: Compiler error C3463 + href: compiler-errors-2/compiler-error-c3463.md + - name: Compiler error C3464 + href: compiler-errors-2/compiler-error-c3464.md + - name: Compiler error C3465 + href: compiler-errors-2/compiler-error-c3465.md + - name: Compiler error C3466 + href: compiler-errors-2/compiler-error-c3466.md + - name: Compiler error C3467 + href: compiler-errors-2/compiler-error-c3467.md + - name: Compiler error C3468 + href: compiler-errors-2/compiler-error-c3468.md + - name: Compiler error C3469 + href: compiler-errors-2/compiler-error-c3469.md + - name: Compiler error C3470 + href: compiler-errors-2/compiler-error-c3470.md + - name: Compiler error C3480 + href: compiler-errors-2/compiler-error-c3480.md + - name: Compiler error C3481 + href: compiler-errors-2/compiler-error-c3481.md + - name: Compiler error C3482 + href: compiler-errors-2/compiler-error-c3482.md + - name: Compiler error C3483 + href: compiler-errors-2/compiler-error-c3483.md + - name: Compiler error C3484 + href: compiler-errors-2/compiler-error-c3484.md + - name: Compiler error C3485 + href: compiler-errors-2/compiler-error-c3485.md + - name: Compiler error C3487 + href: compiler-errors-2/compiler-error-c3487.md + - name: Compiler error C3488 + href: compiler-errors-2/compiler-error-c3488.md + - name: Compiler error C3489 + href: compiler-errors-2/compiler-error-c3489.md + - name: Compiler error C3490 + href: compiler-errors-2/compiler-error-c3490.md + - name: Compiler error C3491 + href: compiler-errors-2/compiler-error-c3491.md + - name: Compiler error C3492 + href: compiler-errors-2/compiler-error-c3492.md + - name: Compiler error C3493 + href: compiler-errors-2/compiler-error-c3493.md + - name: Compiler error C3495 + href: compiler-errors-2/compiler-error-c3495.md + - name: Compiler error C3496 + href: compiler-errors-2/compiler-error-c3496.md + - name: Compiler error C3498 + href: compiler-errors-2/compiler-error-c3498.md + - name: Compiler error C3499 + href: compiler-errors-2/compiler-error-c3499.md + - name: Compiler errors C3500 through C3999 + expanded: false + items: + - name: Compiler errors C3500 through C3999 + href: compiler-errors-2/compiler-errors-c3500-through-c3999.md + - name: Compiler error C3500 + href: compiler-errors-2/compiler-error-c3500.md + - name: Compiler error C3501 + href: compiler-errors-2/compiler-error-c3501.md + - name: Compiler error C3505 + href: compiler-errors-2/compiler-error-c3505.md + - name: Compiler error C3506 + href: compiler-errors-2/compiler-error-c3506.md + - name: Compiler error C3507 + href: compiler-errors-2/compiler-error-c3507.md + - name: Compiler error C3508 + href: compiler-errors-2/compiler-error-c3508.md + - name: Compiler error C3509 + href: compiler-errors-2/compiler-error-c3509.md + - name: Compiler error C3510 + href: compiler-errors-2/compiler-error-c3510.md + - name: Compiler error C3519 + href: compiler-errors-2/compiler-error-c3519.md + - name: Compiler error C3530 + href: compiler-errors-2/compiler-error-c3530.md + - name: Compiler error C3531 + href: compiler-errors-2/compiler-error-c3531.md + - name: Compiler error C3532 + href: compiler-errors-2/compiler-error-c3532.md + - name: Compiler error C3533 + href: compiler-errors-2/compiler-error-c3533.md + - name: Compiler error C3535 + href: compiler-errors-2/compiler-error-c3535.md + - name: Compiler error C3536 + href: compiler-errors-2/compiler-error-c3536.md + - name: Compiler error C3537 + href: compiler-errors-2/compiler-error-c3537.md + - name: Compiler error C3538 + href: compiler-errors-2/compiler-error-c3538.md + - name: Compiler error C3539 + href: compiler-errors-2/compiler-error-c3539.md + - name: Compiler error C3540 + href: compiler-errors-2/compiler-error-c3540.md + - name: Compiler error C3541 + href: compiler-errors-2/compiler-error-c3541.md + - name: Compiler error C3550 + href: compiler-errors-2/compiler-error-c3550.md + - name: Compiler error C3551 + href: compiler-errors-2/compiler-error-c3551.md + - name: Compiler error C3552 + href: compiler-errors-2/compiler-error-c3552.md + - name: Compiler error C3553 + href: compiler-errors-2/compiler-error-c3553.md + - name: Compiler error C3554 + href: compiler-errors-2/compiler-error-c3554.md + - name: Compiler error C3555 + href: compiler-errors-2/compiler-error-c3555.md + - name: Compiler error C3556 + href: compiler-errors-2/compiler-error-c3556.md + - name: Compiler error C3603 + href: compiler-errors-2/compiler-error-c3603.md + - name: Compiler error C3609 + href: compiler-errors-2/compiler-error-c3609.md + - name: Compiler error C3610 + href: compiler-errors-2/compiler-error-c3610.md + - name: Compiler error C3611 + href: compiler-errors-2/compiler-error-c3611.md + - name: Compiler error C3612 + href: compiler-errors-2/compiler-error-c3612.md + - name: Compiler error C3615 + href: compiler-errors-2/compiler-error-c3615.md + - name: Compiler error C3618 + href: compiler-errors-2/compiler-error-c3618.md + - name: Compiler error C3619 + href: compiler-errors-2/compiler-error-c3619.md + - name: Compiler error C3622 + href: compiler-errors-2/compiler-error-c3622.md + - name: Compiler error C3623 + href: compiler-errors-2/compiler-error-c3623.md + - name: Compiler error C3624 + href: compiler-errors-2/compiler-error-c3624.md + - name: Compiler error C3625 + href: compiler-errors-2/compiler-error-c3625.md + - name: Compiler error C3626 + href: compiler-errors-2/compiler-error-c3626.md + - name: Compiler error C3627 + href: compiler-errors-2/compiler-error-c3627.md + - name: Compiler error C3628 + href: compiler-errors-2/compiler-error-c3628.md + - name: Compiler error C3630 + href: compiler-errors-2/compiler-error-c3630.md + - name: Compiler error C3631 + href: compiler-errors-2/compiler-error-c3631.md + - name: Compiler error C3632 + href: compiler-errors-2/compiler-error-c3632.md + - name: Compiler error C3633 + href: compiler-errors-2/compiler-error-c3633.md + - name: Compiler error C3634 + href: compiler-errors-2/compiler-error-c3634.md + - name: Compiler error C3637 + href: compiler-errors-2/compiler-error-c3637.md + - name: Compiler error C3638 + href: compiler-errors-2/compiler-error-c3638.md + - name: Compiler error C3640 + href: compiler-errors-2/compiler-error-c3640.md + - name: Compiler error C3641 + href: compiler-errors-2/compiler-error-c3641.md + - name: Compiler error C3642 + href: compiler-errors-2/compiler-error-c3642.md + - name: Compiler error C3644 + href: compiler-errors-2/compiler-error-c3644.md + - name: Compiler error C3645 + href: compiler-errors-2/compiler-error-c3645.md + - name: Compiler error C3646 + href: compiler-errors-2/compiler-error-c3646.md + - name: Compiler error C3648 + href: compiler-errors-2/compiler-error-c3648.md + - name: Compiler error C3650 + href: compiler-errors-2/compiler-error-c3650.md + - name: Compiler error C3651 + href: compiler-errors-2/compiler-error-c3651.md + - name: Compiler error C3652 + href: compiler-errors-2/compiler-error-c3652.md + - name: Compiler error C3653 + href: compiler-errors-2/compiler-error-c3653.md + - name: Compiler error C3654 + href: compiler-errors-2/compiler-error-c3654.md + - name: Compiler error C3655 + href: compiler-errors-2/compiler-error-c3655.md + - name: Compiler error C3656 + href: compiler-errors-2/compiler-error-c3656.md + - name: Compiler error C3657 + href: compiler-errors-2/compiler-error-c3657.md + - name: Compiler error C3661 + href: compiler-errors-2/compiler-error-c3661.md + - name: Compiler error C3662 + href: compiler-errors-2/compiler-error-c3662.md + - name: Compiler error C3665 + href: compiler-errors-2/compiler-error-c3665.md + - name: Compiler error C3666 + href: compiler-errors-2/compiler-error-c3666.md + - name: Compiler error C3668 + href: compiler-errors-2/compiler-error-c3668.md + - name: Compiler error C3669 + href: compiler-errors-2/compiler-error-c3669.md + - name: Compiler error C3670 + href: compiler-errors-2/compiler-error-c3670.md + - name: Compiler error C3671 + href: compiler-errors-2/compiler-error-c3671.md + - name: Compiler error C3672 + href: compiler-errors-2/compiler-error-c3672.md + - name: Compiler error C3673 + href: compiler-errors-2/compiler-error-c3673.md + - name: Compiler error C3675 + href: compiler-errors-2/compiler-error-c3675.md + - name: Compiler error C3697 + href: compiler-errors-2/compiler-error-c3697.md + - name: Compiler error C3698 + href: compiler-errors-2/compiler-error-c3698.md + - name: Compiler error C3699 + href: compiler-errors-2/compiler-error-c3699.md + - name: Compiler error C3701 + href: compiler-errors-2/compiler-error-c3701.md + - name: Compiler error C3702 + href: compiler-errors-2/compiler-error-c3702.md + - name: Compiler error C3703 + href: compiler-errors-2/compiler-error-c3703.md + - name: Compiler error C3704 + href: compiler-errors-2/compiler-error-c3704.md + - name: Compiler error C3705 + href: compiler-errors-2/compiler-error-c3705.md + - name: Compiler error C3706 + href: compiler-errors-2/compiler-error-c3706.md + - name: Compiler error C3707 + href: compiler-errors-2/compiler-error-c3707.md + - name: Compiler error C3708 + href: compiler-errors-2/compiler-error-c3708.md + - name: Compiler error C3709 + href: compiler-errors-2/compiler-error-c3709.md + - name: Compiler error C3710 + href: compiler-errors-2/compiler-error-c3710.md + - name: Compiler error C3711 + href: compiler-errors-2/compiler-error-c3711.md + - name: Compiler error C3712 + href: compiler-errors-2/compiler-error-c3712.md + - name: Compiler error C3713 + href: compiler-errors-2/compiler-error-c3713.md + - name: Compiler error C3714 + href: compiler-errors-2/compiler-error-c3714.md + - name: Compiler error C3715 + href: compiler-errors-2/compiler-error-c3715.md + - name: Compiler error C3717 + href: compiler-errors-2/compiler-error-c3717.md + - name: Compiler error C3718 + href: compiler-errors-2/compiler-error-c3718.md + - name: Compiler error C3719 + href: compiler-errors-2/compiler-error-c3719.md + - name: Compiler error C3721 + href: compiler-errors-2/compiler-error-c3721.md + - name: Compiler error C3722 + href: compiler-errors-2/compiler-error-c3722.md + - name: Compiler error C3723 + href: compiler-errors-2/compiler-error-c3723.md + - name: Compiler error C3724 + href: compiler-errors-2/compiler-error-c3724.md + - name: Compiler error C3727 + href: compiler-errors-2/compiler-error-c3727.md + - name: Compiler error C3728 + href: compiler-errors-2/compiler-error-c3728.md + - name: Compiler error C3731 + href: compiler-errors-2/compiler-error-c3731.md + - name: Compiler error C3732 + href: compiler-errors-2/compiler-error-c3732.md + - name: Compiler error C3733 + href: compiler-errors-2/compiler-error-c3733.md + - name: Compiler error C3734 + href: compiler-errors-2/compiler-error-c3734.md + - name: Compiler error C3736 + href: compiler-errors-2/compiler-error-c3736.md + - name: Compiler error C3737 + href: compiler-errors-2/compiler-error-c3737.md + - name: Compiler error C3738 + href: compiler-errors-2/compiler-error-c3738.md + - name: Compiler error C3739 + href: compiler-errors-2/compiler-error-c3739.md + - name: Compiler error C3740 + href: compiler-errors-2/compiler-error-c3740.md + - name: Compiler error C3741 + href: compiler-errors-2/compiler-error-c3741.md + - name: Compiler error C3743 + href: compiler-errors-2/compiler-error-c3743.md + - name: Compiler error C3744 + href: compiler-errors-2/compiler-error-c3744.md + - name: Compiler error C3745 + href: compiler-errors-2/compiler-error-c3745.md + - name: Compiler error C3747 + href: compiler-errors-2/compiler-error-c3747.md + - name: Compiler error C3748 + href: compiler-errors-2/compiler-error-c3748.md + - name: Compiler error C3749 + href: compiler-errors-2/compiler-error-c3749.md + - name: Compiler error C3752 + href: compiler-errors-2/compiler-error-c3752.md + - name: Compiler error C3753 + href: compiler-errors-2/compiler-error-c3753.md + - name: Compiler error C3754 + href: compiler-errors-2/compiler-error-c3754.md + - name: Compiler error C3755 + href: compiler-errors-2/compiler-error-c3755.md + - name: Compiler error C3761 + href: compiler-errors-2/compiler-error-c3761.md + - name: Compiler error C3762 + href: compiler-errors-2/compiler-error-c3762.md + - name: Compiler error C3763 + href: compiler-errors-2/compiler-error-c3763.md + - name: Compiler error C3764 + href: compiler-errors-2/compiler-error-c3764.md + - name: Compiler error C3765 + href: compiler-errors-2/compiler-error-c3765.md + - name: Compiler error C3766 + href: compiler-errors-2/compiler-error-c3766.md + - name: Compiler error C3767 + href: compiler-errors-2/compiler-error-c3767.md + - name: Compiler error C3768 + href: compiler-errors-2/compiler-error-c3768.md + - name: Compiler error C3769 + href: compiler-errors-2/compiler-error-c3769.md + - name: Compiler error C3771 + href: compiler-errors-2/compiler-error-c3771.md + - name: Compiler error C3772 + href: compiler-errors-2/compiler-error-c3772.md + - name: Compiler error C3779 + href: compiler-errors-2/compiler-error-c3779.md + - name: Compiler error C3797 + href: compiler-errors-2/compiler-error-c3797.md + - name: Compiler error C3798 + href: compiler-errors-2/compiler-error-c3798.md + - name: Compiler error C3799 + href: compiler-errors-2/compiler-error-c3799.md + - name: Compiler error C3800 + href: compiler-errors-2/compiler-error-c3800.md + - name: Compiler error C3803 + href: compiler-errors-2/compiler-error-c3803.md + - name: Compiler error C3804 + href: compiler-errors-2/compiler-error-c3804.md + - name: Compiler error C3805 + href: compiler-errors-2/compiler-error-c3805.md + - name: Compiler error C3807 + href: compiler-errors-2/compiler-error-c3807.md + - name: Compiler error C3808 + href: compiler-errors-2/compiler-error-c3808.md + - name: Compiler error C3809 + href: compiler-errors-2/compiler-error-c3809.md + - name: Compiler error C3812 + href: compiler-errors-2/compiler-error-c3812.md + - name: Compiler error C3813 + href: compiler-errors-2/compiler-error-c3813.md + - name: Compiler error C3815 + href: compiler-errors-2/compiler-error-c3815.md + - name: Compiler error C3816 + href: compiler-errors-2/compiler-error-c3816.md + - name: Compiler error C3817 + href: compiler-errors-2/compiler-error-c3817.md + - name: Compiler error C3818 + href: compiler-errors-2/compiler-error-c3818.md + - name: Compiler error C3820 + href: compiler-errors-2/compiler-error-c3820.md + - name: Compiler error C3821 + href: compiler-errors-2/compiler-error-c3821.md + - name: Compiler error C3824 + href: compiler-errors-2/compiler-error-c3824.md + - name: Compiler error C3825 + href: compiler-errors-2/compiler-error-c3825.md + - name: Compiler error C3828 + href: compiler-errors-2/compiler-error-c3828.md + - name: Compiler error C3830 + href: compiler-errors-2/compiler-error-c3830.md + - name: Compiler error C3831 + href: compiler-errors-2/compiler-error-c3831.md + - name: Compiler error C3832 + href: compiler-errors-2/compiler-error-c3832.md + - name: Compiler error C3833 + href: compiler-errors-2/compiler-error-c3833.md + - name: Compiler error C3834 + href: compiler-errors-2/compiler-error-c3834.md + - name: Compiler error C3836 + href: compiler-errors-2/compiler-error-c3836.md + - name: Compiler error C3838 + href: compiler-errors-2/compiler-error-c3838.md + - name: Compiler error C3839 + href: compiler-errors-2/compiler-error-c3839.md + - name: Compiler error C3842 + href: compiler-errors-2/compiler-error-c3842.md + - name: Compiler error C3846 + href: compiler-errors-2/compiler-error-c3846.md + - name: Compiler error C3848 + href: compiler-errors-2/compiler-error-c3848.md + - name: Compiler error C3849 + href: compiler-errors-2/compiler-error-c3849.md + - name: Compiler error C3850 + href: compiler-errors-2/compiler-error-c3850.md + - name: Compiler error C3851 + href: compiler-errors-2/compiler-error-c3851.md + - name: Compiler error C3852 + href: compiler-errors-2/compiler-error-c3852.md + - name: Compiler error C3853 + href: compiler-errors-2/compiler-error-c3853.md + - name: Compiler error C3854 + href: compiler-errors-2/compiler-error-c3854.md + - name: Compiler error C3855 + href: compiler-errors-2/compiler-error-c3855.md + - name: Compiler error C3856 + href: compiler-errors-2/compiler-error-c3856.md + - name: Compiler error C3857 + href: compiler-errors-2/compiler-error-c3857.md + - name: Compiler error C3858 + href: compiler-errors-2/compiler-error-c3858.md + - name: Compiler error C3859 + href: compiler-errors-2/compiler-error-c3859.md + - name: Compiler error C3860 + href: compiler-errors-2/compiler-error-c3860.md + - name: Compiler error C3861 + href: compiler-errors-2/compiler-error-c3861.md + - name: Compiler error C3862 + href: compiler-errors-2/compiler-error-c3862.md + - name: Compiler error C3865 + href: compiler-errors-2/compiler-error-c3865.md + - name: Compiler error C3866 + href: compiler-errors-2/compiler-error-c3866.md + - name: Compiler error C3867 + href: compiler-errors-2/compiler-error-c3867.md + - name: Compiler error C3868 + href: compiler-errors-2/compiler-error-c3868.md + - name: Compiler error C3869 + href: compiler-errors-2/compiler-error-c3869.md + - name: Compiler error C3872 + href: compiler-errors-2/compiler-error-c3872.md + - name: Compiler error C3873 + href: compiler-errors-2/compiler-error-c3873.md + - name: Compiler error C3874 + href: compiler-errors-2/compiler-error-c3874.md + - name: Compiler error C3880 + href: compiler-errors-2/compiler-error-c3880.md + - name: Compiler error C3883 + href: compiler-errors-2/compiler-error-c3883.md + - name: Compiler error C3886 + href: compiler-errors-2/compiler-error-c3886.md + - name: Compiler error C3887 + href: compiler-errors-2/compiler-error-c3887.md + - name: Compiler error C3888 + href: compiler-errors-2/compiler-error-c3888.md + - name: Compiler error C3890 + href: compiler-errors-2/compiler-error-c3890.md + - name: Compiler error C3891 + href: compiler-errors-2/compiler-error-c3891.md + - name: Compiler error C3892 + href: compiler-errors-2/compiler-error-c3892.md + - name: Compiler error C3893 + href: compiler-errors-2/compiler-error-c3893.md + - name: Compiler error C3894 + href: compiler-errors-2/compiler-error-c3894.md + - name: Compiler error C3895 + href: compiler-errors-2/compiler-error-c3895.md + - name: Compiler error C3896 + href: compiler-errors-2/compiler-error-c3896.md + - name: Compiler error C3898 + href: compiler-errors-2/compiler-error-c3898.md + - name: Compiler error C3899 + href: compiler-errors-2/compiler-error-c3899.md + - name: Compiler error C3900 + href: compiler-errors-2/compiler-error-c3900.md + - name: Compiler error C3901 + href: compiler-errors-2/compiler-error-c3901.md + - name: Compiler error C3902 + href: compiler-errors-2/compiler-error-c3902.md + - name: Compiler error C3903 + href: compiler-errors-2/compiler-error-c3903.md + - name: Compiler error C3904 + href: compiler-errors-2/compiler-error-c3904.md + - name: Compiler error C3908 + href: compiler-errors-2/compiler-error-c3908.md + - name: Compiler error C3909 + href: compiler-errors-2/compiler-error-c3909.md + - name: Compiler error C3910 + href: compiler-errors-2/compiler-error-c3910.md + - name: Compiler error C3911 + href: compiler-errors-2/compiler-error-c3911.md + - name: Compiler error C3912 + href: compiler-errors-2/compiler-error-c3912.md + - name: Compiler error C3913 + href: compiler-errors-2/compiler-error-c3913.md + - name: Compiler error C3914 + href: compiler-errors-2/compiler-error-c3914.md + - name: Compiler error C3915 + href: compiler-errors-2/compiler-error-c3915.md + - name: Compiler error C3917 + href: compiler-errors-2/compiler-error-c3917.md + - name: Compiler error C3918 + href: compiler-errors-2/compiler-error-c3918.md + - name: Compiler error C3919 + href: compiler-errors-2/compiler-error-c3919.md + - name: Compiler error C3920 + href: compiler-errors-2/compiler-error-c3920.md + - name: Compiler error C3923 + href: compiler-errors-2/compiler-error-c3923.md + - name: Compiler errors C7000 through C7499 + expanded: false + items: + - name: Compiler errors C7000 through C7499 + href: compiler-errors-2/compiler-errors-c7000-through-c7499.md + - name: Compiler errors C7500 through C7999 + expanded: false + items: + - name: Compiler errors C7500 through C7999 + href: compiler-errors-2/compiler-errors-c7500-through-c7999.md + - name: Compiler error C7510 + href: compiler-errors-2/compiler-error-c7510.md + - name: Compiler error C7536 + href: compiler-errors-2/compiler-error-c7536.md + - name: Compiler error C7553 + href: compiler-errors-2/compiler-error-c7553.md + - name: Compiler error C7626 + href: compiler-warnings/c5208.md + - name: Compiler error C7688 + href: compiler-errors-2/compiler-error-c7688.md + - name: Compiler error C7742 + href: compiler-errors-2/compiler-error-c7742.md +- name: Compiler warnings C4000 through C5999 + expanded: false + items: + - name: Compiler warnings C4000 through C5999 + href: compiler-warnings/compiler-warnings-c4000-c5999.md + - name: Compiler warnings C4000 through C4199 + expanded: false + items: + - name: Compiler warnings C4000 through C4199 + href: compiler-warnings/compiler-warnings-c4000-through-c4199.md + - name: Compiler warning (level 4, no longer emitted) C4001 + href: compiler-warnings/compiler-warning-level-4-c4001.md + - name: Compiler warning (level 1, Error) C4002 + href: compiler-warnings/compiler-warning-level-1-c4002.md + - name: Compiler warning (level 1, Error) C4003 + href: compiler-warnings/compiler-warning-level-1-c4003.md + - name: Compiler warning (level 1) C4005 + href: compiler-warnings/compiler-warning-level-1-c4005.md + - name: Compiler warning (level 1) C4006 + href: compiler-warnings/compiler-warning-level-1-c4006.md + - name: Compiler warning (level 3) C4007 + href: compiler-warnings/compiler-warning-level-2-c4007.md + - name: Compiler warning (levels 2 and 3) C4008 + href: compiler-warnings/compiler-warning-levels-2-and-3-c4008.md + - name: Compiler warning (level 1) C4010 + href: compiler-warnings/compiler-warning-level-1-c4010.md + - name: Compiler warning (level 3) C4013 + href: compiler-warnings/compiler-warning-level-3-c4013.md + - name: Compiler warning (level 1) C4015 + href: compiler-warnings/compiler-warning-level-1-c4015.md + - name: Compiler warning (level 3) C4018 + href: compiler-warnings/compiler-warning-level-3-c4018.md + - name: Compiler warning (level 4) C4019 + href: compiler-warnings/compiler-warning-level-4-c4019.md + - name: Compiler warning (level 1) C4020 + href: compiler-warnings/compiler-warning-level-1-c4020.md + - name: Compiler warning (level 1) C4022 + href: compiler-warnings/compiler-warning-level-1-c4022.md + - name: Compiler warning (level 3) C4023 + href: compiler-warnings/compiler-warning-level-3-c4023.md + - name: Compiler warning (level 1) C4024 + href: compiler-warnings/compiler-warning-level-1-c4024.md + - name: Compiler warning (level 1) C4025 + href: compiler-warnings/compiler-warning-level-1-c4025.md + - name: Compiler warning (level 1) C4026 + href: compiler-warnings/compiler-warning-level-1-c4026.md + - name: Compiler warning (level 1) C4027 + href: compiler-warnings/compiler-warning-level-1-c4027.md + - name: Compiler warning (level 1) C4028 + href: compiler-warnings/compiler-warning-level-1-c4028.md + - name: Compiler warning (level 1) C4029 + href: compiler-warnings/compiler-warning-level-1-c4029.md + - name: Compiler warning (level 1) C4030 + href: compiler-warnings/compiler-warning-level-1-c4030.md + - name: Compiler warning (level 1) C4031 + href: compiler-warnings/compiler-warning-level-1-c4031.md + - name: Compiler warning (level 4) C4032 + href: compiler-warnings/compiler-warning-level-4-c4032.md + - name: Compiler warning (level 1) C4033 + href: compiler-warnings/compiler-warning-level-1-c4033.md + - name: Compiler warning (level 1) C4034 + href: compiler-warnings/compiler-warning-level-1-c4034.md + - name: Compiler warning (level 1) C4036 + href: compiler-warnings/compiler-warning-level-1-c4036.md + - name: Compiler warning (level 1) C4038 + href: compiler-warnings/compiler-warning-level-1-c4038.md + - name: Compiler warning (level 1) C4041 + href: compiler-warnings/compiler-warning-level-1-c4041.md + - name: Compiler warning (level 1) C4042 + href: compiler-warnings/compiler-warning-level-1-c4042.md + - name: Compiler warning (level 1) C4045 + href: compiler-warnings/compiler-warning-level-1-c4045.md + - name: Compiler warning (level 1) C4047 + href: compiler-warnings/compiler-warning-level-1-c4047.md + - name: Compiler warning (level 1) C4048 + href: compiler-warnings/compiler-warning-level-1-c4048.md + - name: Compiler warning (level 1) C4049 + href: compiler-warnings/compiler-warning-level-1-c4049.md + - name: Compiler warning (level 2) C4051 + href: compiler-warnings/compiler-warning-level-2-c4051.md + - name: Compiler warning (level 1 and level 4) C4052 + href: compiler-warnings/compiler-warning-level-1-c4052.md + - name: Compiler warning (level 4) C4053 + href: compiler-warnings/compiler-warning-level-4-c4053.md + - name: Compiler warning (level 1) C4055 + href: compiler-warnings/compiler-warning-level-1-c4055.md + - name: Compiler warning (level 2) C4056 + href: compiler-warnings/compiler-warning-level-2-c4056.md + - name: Compiler warning (level 4) C4057 + href: compiler-warnings/compiler-warning-level-4-c4057.md + - name: Compiler warning (level 4, off) C4061 + href: compiler-warnings/compiler-warning-level-4-c4061.md + - name: Compiler warning (level 4, off) C4062 + href: compiler-warnings/compiler-warning-level-4-c4062.md + - name: Compiler warning (level 3) C4066 + href: compiler-warnings/compiler-warning-level-3-c4066.md + - name: Compiler warning (level 1) C4067 + href: compiler-warnings/compiler-warning-level-1-c4067.md + - name: Compiler warning (level 1) C4068 + href: compiler-warnings/compiler-warning-level-1-c4068.md + - name: Compiler warning (level 3) C4073 + href: compiler-warnings/compiler-warning-level-3-c4073.md + - name: Compiler warning (level 1) C4074 + href: compiler-warnings/compiler-warning-level-1-c4074.md + - name: Compiler warning (level 1) C4075 + href: compiler-warnings/compiler-warning-level-1-c4075.md + - name: Compiler warning (level 1) C4076 + href: compiler-warnings/compiler-warning-level-1-c4076.md + - name: Compiler warning (level 1) C4077 + href: compiler-warnings/compiler-warning-level-1-c4077.md + - name: Compiler warning (level 1) C4079 + href: compiler-warnings/compiler-warning-level-1-c4079.md + - name: Compiler warning (level 1) C4080 + href: compiler-warnings/compiler-warning-level-1-c4080.md + - name: Compiler warning (level 1) C4081 + href: compiler-warnings/compiler-warning-level-1-c4081.md + - name: Compiler warning (level 1) C4083 + href: compiler-warnings/compiler-warning-level-1-c4083.md + - name: Compiler warning (level 1) C4085 + href: compiler-warnings/compiler-warning-level-1-c4085.md + - name: Compiler warning (level 1) C4086 + href: compiler-warnings/compiler-warning-level-1-c4086.md + - name: Compiler warning (level 1) C4087 + href: compiler-warnings/compiler-warning-level-1-c4087.md + - name: Compiler warning (level 1) C4088 + href: compiler-warnings/compiler-warning-level-1-c4088.md + - name: Compiler warning (level 1) C4089 + href: compiler-warnings/compiler-warning-level-1-c4089.md + - name: Compiler warning (level 1) C4090 + href: compiler-warnings/compiler-warning-level-1-c4090.md + - name: Compiler warning (level 1 and level 2) C4091 + href: compiler-warnings/compiler-warning-level-1-c4091.md + - name: Compiler warning (level 4) C4092 + href: compiler-warnings/compiler-warning-level-4-c4092.md + - name: Compiler warning (level 2) C4094 + href: compiler-warnings/compiler-warning-level-2-c4094.md + - name: Compiler warning (level 1) C4096 + href: compiler-warnings/compiler-warning-level-1-c4096.md + - name: Compiler warning (level 1) C4097 + href: compiler-warnings/compiler-warning-level-1-c4097.md + - name: Compiler warning (level 1) C4098 + href: compiler-warnings/compiler-warning-level-1-c4098.md + - name: Compiler warning (level 2) C4099 + href: compiler-warnings/compiler-warning-level-2-c4099.md + - name: Compiler warning (level 4) C4100 + href: compiler-warnings/compiler-warning-level-4-c4100.md + - name: Compiler warning (level 3 and level 4) C4101 + href: compiler-warnings/compiler-warning-level-3-c4101.md + - name: Compiler warning (level 3) C4102 + href: compiler-warnings/compiler-warning-level-3-c4102.md + - name: Compiler warning (level 1) C4103 + href: compiler-warnings/compiler-warning-level-1-c4103.md + - name: Compiler warning (level 1) C4109 + href: compiler-warnings/compiler-warning-level-1-c4109.md + - name: Compiler warning (level 1 and level 4) C4112 + href: compiler-warnings/compiler-warning-levels-1-and-4-c4112.md + - name: Compiler warning (level 1) C4113 + href: compiler-warnings/compiler-warning-level-1-c4113.md + - name: Compiler warning (level 1) C4114 + href: compiler-warnings/compiler-warning-level-1-c4114.md + - name: Compiler warning (levels 1 and 4) C4115 + href: compiler-warnings/compiler-warning-levels-1-and-4-c4115.md + - name: Compiler warning (level 1) C4116 + href: compiler-warnings/compiler-warning-level-1-c4116.md + - name: Compiler warning (level 1) C4117 + href: compiler-warnings/compiler-warning-level-1-c4117.md + - name: Compiler warning (level 1) C4119 + href: compiler-warnings/compiler-warning-level-1-c4119.md + - name: Compiler warning (level 1) C4120 + href: compiler-warnings/compiler-warning-level-1-c4120.md + - name: Compiler warning (level 4) C4121 + href: compiler-warnings/compiler-warning-level-4-c4121.md + - name: Compiler warning (level 1) C4122 + href: compiler-warnings/compiler-warning-level-1-c4122.md + - name: Compiler warning (level 1) C4124 + href: compiler-warnings/compiler-warning-level-1-c4124.md + - name: Compiler warning (level 4) C4125 + href: compiler-warnings/compiler-warning-level-4-c4125.md + - name: Compiler warning (level 4) C4127 + href: compiler-warnings/compiler-warning-level-4-c4127.md + - name: Compiler warning (level 1) C4129 + href: compiler-warnings/compiler-warning-level-1-c4129.md + - name: Compiler warning (level 4) C4130 + href: compiler-warnings/compiler-warning-level-4-c4130.md + - name: Compiler warning (level 4) C4131 + href: compiler-warnings/compiler-warning-level-4-c4131.md + - name: Compiler warning (level 4) C4132 + href: compiler-warnings/compiler-warning-level-4-c4132.md + - name: Compiler warning (level 1 and level 3) C4133 + href: compiler-warnings/compiler-warning-level-3-c4133.md + - name: Compiler warning (level 1) C4138 + href: compiler-warnings/compiler-warning-level-1-c4138.md + - name: Compiler warning (level 1, Error) C4141 + href: compiler-warnings/compiler-warning-level-1-c4141.md + - name: Compiler warning (level 1) C4142 + href: compiler-warnings/compiler-warning-level-1-c4142.md + - name: Compiler warning (level 1) C4143 + href: compiler-warnings/compiler-warning-level-1-c4143.md + - name: Compiler warning (level 1) C4144 + href: compiler-warnings/compiler-warning-level-1-c4144.md + - name: Compiler warning (level 1) C4145 + href: compiler-warnings/compiler-warning-level-1-c4145.md + - name: Compiler warning (level 2) C4146 + href: compiler-warnings/compiler-warning-level-2-c4146.md + - name: Compiler warning (level 2) C4150 + href: compiler-warnings/compiler-warning-level-2-c4150.md + - name: Compiler warning (level 4) C4152 + href: compiler-warnings/compiler-warning-level-4-c4152.md + - name: Compiler warning (level 1) C4153 + href: compiler-warnings/compiler-warning-level-1-c4153.md + - name: Compiler warning (level 1) C4154 + href: compiler-warnings/compiler-warning-level-1-c4154.md + - name: Compiler warning (level 1) C4155 + href: compiler-warnings/compiler-warning-level-1-c4155.md + - name: Compiler warning (level 2) C4156 + href: compiler-warnings/compiler-warning-level-2-c4156.md + - name: Compiler warning (level 1) C4157 + href: compiler-warnings/compiler-warning-level-1-c4157.md + - name: Compiler warning (level 1) C4158 + href: compiler-warnings/compiler-warning-level-1-c4158.md + - name: Compiler warning (level 3) C4159 + href: compiler-warnings/compiler-warning-level-3-c4159.md + - name: Compiler warning (level 1) C4160 + href: compiler-warnings/compiler-warning-level-1-c4160.md + - name: Compiler warning (level 3) C4161 + href: compiler-warnings/compiler-warning-level-3-c4161.md + - name: Compiler warning (level 1) C4162 + href: compiler-warnings/compiler-warning-level-1-c4162.md + - name: Compiler warning (level 1) C4163 + href: compiler-warnings/compiler-warning-level-1-c4163.md + - name: Compiler warning (level 1) C4164 + href: compiler-warnings/compiler-warning-level-1-c4164.md + - name: Compiler warning (level 3, off) C4165 + href: compiler-warnings/compiler-warning-level-1-c4165.md + - name: Compiler warning (level 1) C4166 + href: compiler-warnings/compiler-warning-level-1-c4166.md + - name: Compiler warning (level 1) C4167 + href: compiler-warnings/compiler-warning-level-1-c4167.md + - name: Compiler warning (level 1) C4168 + href: compiler-warnings/compiler-warning-level-1-c4168.md + - name: Compiler warning (level 1) C4172 + href: compiler-warnings/compiler-warning-level-1-c4172.md + - name: Compiler warning (level 1) C4174 + href: compiler-warnings/compiler-warning-level-1-c4174.md + - name: Compiler warning (level 1) C4175 + href: compiler-warnings/compiler-warning-level-1-c4175.md + - name: Compiler warning (level 1) C4176 + href: compiler-warnings/compiler-warning-level-1-c4176.md + - name: Compiler warning (level 1) C4177 + href: compiler-warnings/compiler-warning-level-1-c4177.md + - name: Compiler warning (level 1) C4178 + href: compiler-warnings/compiler-warning-level-1-c4178.md + - name: Compiler warning (level 1) C4179 + href: compiler-warnings/compiler-warning-level-1-c4179.md + - name: Compiler warning (level 1) C4180 + href: compiler-warnings/compiler-warning-level-1-c4180.md + - name: Compiler warning (level 1) C4182 + href: compiler-warnings/compiler-warning-level-1-c4182.md + - name: Compiler warning (level 1) C4183 + href: compiler-warnings/compiler-warning-level-1-c4183.md + - name: Compiler warning (level 1) C4185 + href: compiler-warnings/compiler-warning-level-1-c4185.md + - name: Compiler warning (level 1) C4186 + href: compiler-warnings/compiler-warning-level-1-c4186.md + - name: Compiler warning (level 1) C4187 + href: compiler-warnings/compiler-warning-level-1-c4187.md + - name: Compiler warning (level 3 and level 4) C4189 + href: compiler-warnings/compiler-warning-level-4-c4189.md + - name: Compiler warning (level 1) C4190 + href: compiler-warnings/compiler-warning-level-1-c4190.md + - name: Compiler warning (level 3, off) C4191 + href: compiler-warnings/compiler-warning-level-3-c4191.md + - name: Compiler warning (level 3) C4192 + href: compiler-warnings/compiler-warning-level-3-c4192.md + - name: Compiler warning (level 3) C4197 + href: compiler-warnings/compiler-warning-level-3-c4197.md + - name: Compiler warnings C4200 through C4399 + expanded: false + items: + - name: Compiler warnings C4200 through C4399 + href: compiler-warnings/compiler-warnings-c4200-through-c4399.md + - name: Compiler warning (levels 2 and 4) C4200 + href: compiler-warnings/compiler-warning-levels-2-and-4-c4200.md + - name: Compiler warning (level 4) C4201 + href: compiler-warnings/compiler-warning-level-4-c4201.md + - name: Compiler warning (level 4) C4202 + href: compiler-warnings/compiler-warning-level-4-c4202.md + - name: Compiler warning (level 4) C4204 + href: compiler-warnings/compiler-warning-level-4-c4204.md + - name: Compiler warning (level 4) C4205 + href: compiler-warnings/compiler-warning-level-4-c4205.md + - name: Compiler warning (level 4) C4206 + href: compiler-warnings/compiler-warning-level-4-c4206.md + - name: Compiler warning (level 4) C4207 + href: compiler-warnings/compiler-warning-level-4-c4207.md + - name: Compiler warning (level 4) C4208 + href: compiler-warnings/compiler-warning-level-4-c4208.md + - name: Compiler warning (level 4) C4210 + href: compiler-warnings/compiler-warning-level-4-c4210.md + - name: Compiler warning (level 4) C4211 + href: compiler-warnings/compiler-warning-level-4-c4211.md + - name: Compiler warning (level 4) C4212 + href: compiler-warnings/compiler-warning-level-4-c4212.md + - name: Compiler warning (level 4) C4213 + href: compiler-warnings/compiler-warning-level-4-c4213.md + - name: Compiler warning (level 4) C4214 + href: compiler-warnings/compiler-warning-level-4-c4214.md + - name: Compiler warning (level 1) C4215 + href: compiler-warnings/compiler-warning-level-1-c4215.md + - name: Compiler warning (level 1) C4216 + href: compiler-warnings/compiler-warning-level-1-c4216.md + - name: Compiler warning (level 1) C4218 + href: compiler-warnings/compiler-warning-level-1-c4218.md + - name: Compiler warning (level 4) C4220 + href: compiler-warnings/compiler-warning-level-4-c4220.md + - name: Compiler warning (level 4) C4221 + href: compiler-warnings/compiler-warning-level-4-c4221.md + - name: Compiler warning (levels 1 and 4) C4223 + href: compiler-warnings/compiler-warning-levels-1-and-4-c4223.md + - name: Compiler warning (level 1) C4224 + href: compiler-warnings/compiler-warning-level-1-c4224.md + - name: Compiler warning (level 1) C4226 + href: compiler-warnings/compiler-warning-level-1-c4226.md + - name: Compiler warning (level 1) C4227 + href: compiler-warnings/compiler-warning-level-1-c4227.md + - name: Compiler warning (level 1) C4228 + href: compiler-warnings/compiler-warning-level-1-c4228.md + - name: Compiler warning (level 1) C4229 + href: compiler-warnings/compiler-warning-level-1-c4229.md + - name: Compiler warning (level 1) C4230 + href: compiler-warnings/compiler-warning-level-1-c4230.md + - name: Compiler warning (level 4) C4232 + href: compiler-warnings/compiler-warning-level-4-c4232.md + - name: Compiler warning (level 4) C4233 + href: compiler-warnings/compiler-warning-level-4-c4233.md + - name: Compiler warning (level 4) C4234 + href: compiler-warnings/compiler-warning-level-4-c4234.md + - name: Compiler warning (level 4) C4235 + href: compiler-warnings/compiler-warning-level-4-c4235.md + - name: Compiler warning (level 1) C4237 + href: compiler-warnings/compiler-warning-level-1-c4237.md + - name: Compiler warning (level 4) C4238 + href: compiler-warnings/compiler-warning-level-4-c4238.md + - name: Compiler warning (level 4) C4239 + href: compiler-warnings/compiler-warning-level-4-c4239.md + - name: Compiler warning (level 3) C4240 + href: compiler-warnings/compiler-warning-level-3-c4240.md + - name: Compiler warning (level 4) C4242 + href: compiler-warnings/compiler-warning-level-4-c4242.md + - name: Compiler warning (level 3) C4243 + href: compiler-warnings/compiler-warning-level-3-c4243.md + - name: Compiler warning (level 2) C4244 + href: compiler-warnings/compiler-warning-level-2-c4244.md + - name: Compiler warning (levels 3 and 4) C4244 + href: compiler-warnings/compiler-warning-levels-3-and-4-c4244.md + - name: Compiler warning (level 4) C4245 + href: compiler-warnings/compiler-warning-level-4-c4245.md + - name: Compiler warning (level 2) C4250 + href: compiler-warnings/compiler-warning-level-2-c4250.md + - name: Compiler warning (level 1) C4251 + href: compiler-warnings/compiler-warning-level-1-c4251.md + - name: Compiler warning (level 4) C4254 + href: compiler-warnings/compiler-warning-level-4-c4254.md + - name: Compiler warning (level 4, off) C4255 + href: compiler-warnings/compiler-warning-level-4-c4255.md + - name: Compiler warning (level 4) C4256 + href: compiler-warnings/compiler-warning-level-4-c4256.md + - name: Compiler warning (level 1) C4258 + href: compiler-warnings/compiler-warning-level-1-c4258.md + - name: Compiler warning (level 4, off) C4263 + href: compiler-warnings/compiler-warning-level-4-c4263.md + - name: Compiler warning (level 4, off) C4264 + href: compiler-warnings/compiler-warning-level-1-c4264.md + - name: Compiler warning (level 3, off) C4265 + href: compiler-warnings/compiler-warning-level-3-c4265.md + - name: Compiler warning (level 4, off) C4266 + href: compiler-warnings/compiler-warning-level-4-c4266.md + - name: Compiler warning (level 3) C4267 + href: compiler-warnings/compiler-warning-level-3-c4267.md + - name: Compiler warning (level 4) C4268 + href: compiler-warnings/compiler-warning-level-4-c4268.md + - name: Compiler warning (level 1) C4269 + href: compiler-warnings/compiler-warning-level-1-c4269.md + - name: Compiler warning (level 1) C4272 + href: compiler-warnings/compiler-warning-level-1-c4272.md + - name: Compiler warning (level 1) C4273 + href: compiler-warnings/compiler-warning-level-1-c4273.md + - name: Compiler warning (level 1) C4274 + href: compiler-warnings/compiler-warning-level-1-c4274.md + - name: Compiler warning (level 2) C4275 + href: compiler-warnings/compiler-warning-level-2-c4275.md + - name: Compiler warning (level 1) C4276 + href: compiler-warnings/compiler-warning-level-1-c4276.md + - name: Compiler warning (level 3 and level 4) C4278 + href: compiler-warnings/compiler-warning-level-3-c4278.md + - name: Compiler warning (level 3) C4280 + href: compiler-warnings/compiler-warning-level-3-c4280.md + - name: Compiler warning (level 3) C4281 + href: compiler-warnings/compiler-warning-level-3-c4281.md + - name: Compiler warning (level 3) C4282 + href: compiler-warnings/compiler-warning-level-3-c4282.md + - name: Compiler warning (level 3) C4283 + href: compiler-warnings/compiler-warning-level-3-c4283.md + - name: Compiler warning (level 2) C4285 + href: compiler-warnings/compiler-warning-level-2-c4285.md + - name: Compiler warning (level 1) C4286 + href: compiler-warnings/compiler-warning-level-1-c4286.md + - name: Compiler warning (level 3, off) C4287 + href: compiler-warnings/compiler-warning-level-3-c4287.md + - name: Compiler warning (level 1) C4288 + href: compiler-warnings/compiler-warning-level-1-c4288.md + - name: Compiler warning (level 4, off) C4289 + href: compiler-warnings/compiler-warning-level-4-c4289.md + - name: Compiler warning (level 3) C4290 + href: compiler-warnings/compiler-warning-level-3-c4290.md + - name: Compiler warning (level 1) C4291 + href: compiler-warnings/compiler-warning-level-1-c4291.md + - name: Compiler warning (level 1) C4293 + href: compiler-warnings/compiler-warning-level-1-c4293.md + - name: Compiler warning (level 4) C4295 + href: compiler-warnings/compiler-warning-level-4-c4295.md + - name: Compiler warning (level 4, off) C4296 + href: compiler-warnings/compiler-warning-level-4-c4296.md + - name: Compiler warning (level 1) C4297 + href: compiler-warnings/compiler-warning-level-1-c4297.md + - name: Compiler warning (level 2) C4302 + href: compiler-warnings/compiler-warning-level-2-c4302.md + - name: Compiler warning (level 1) C4305 + href: compiler-warnings/compiler-warning-level-1-c4305.md + - name: Compiler warning (level 3) C4306 + href: compiler-warnings/compiler-warning-level-3-c4306.md + - name: Compiler warning (level 2) C4307 + href: compiler-warnings/compiler-warning-level-2-c4307.md + - name: Compiler warning (level 2) C4308 + href: compiler-warnings/compiler-warning-level-2-c4308.md + - name: Compiler warning (level 2) C4309 + href: compiler-warnings/compiler-warning-level-2-c4309.md + - name: Compiler warning (level 4) C4310 + href: compiler-warnings/compiler-warning-level-3-c4310.md + - name: Compiler warning (level 1) C4311 + href: compiler-warnings/compiler-warning-level-1-c4311.md + - name: Compiler warning (level 1) C4312 + href: compiler-warnings/compiler-warning-level-1-c4312.md + - name: Compiler warning (level 1) C4313 + href: compiler-warnings/compiler-warning-level-1-c4313.md + - name: Compiler warning (level 3) C4316 + href: compiler-warnings/compiler-warning-level-3-c4316.md + - name: Compiler warning (level 1) C4319 + href: compiler-warnings/compiler-warning-level-1-c4319.md + - name: Compiler warning (level 4) C4324 + href: compiler-warnings/compiler-warning-level-4-c4324.md + - name: Compiler warning (level 1) C4325 + href: compiler-warnings/compiler-warning-level-1-c4325.md + - name: Compiler warning (level 1) C4326 + href: compiler-warnings/compiler-warning-level-1-c4326.md + - name: Compiler warning (level 1) C4329 + href: compiler-warnings/compiler-warning-level-1-c4329.md + - name: Compiler warning (level 1) C4333 + href: compiler-warnings/compiler-warning-level-1-c4333.md + - name: Compiler warning (level 3) C4334 + href: compiler-warnings/compiler-warning-level-3-c4334.md + - name: Compiler warning (level 1) C4335 + href: compiler-warnings/compiler-warning-c4335.md + - name: Compiler warning (level 4) C4336 + href: compiler-warnings/compiler-warning-level-4-c4336.md + - name: Compiler warning (level 4) C4337 + href: compiler-warnings/compiler-warning-level-4-c4337.md + - name: Compiler warning (level 4, off) C4339 + href: compiler-warnings/compiler-warning-level-4-c4339.md + - name: Compiler warning (level 1) C4340 + href: compiler-warnings/compiler-warning-level-1-c4340.md + - name: Compiler warning (level 1, no longer emitted) C4342 + href: compiler-warnings/compiler-warning-level-1-c4342.md + - name: Compiler warning (level 4) C4343 + href: compiler-warnings/compiler-warning-level-4-c4343.md + - name: Compiler warning (level 1) C4344 + href: compiler-warnings/compiler-warning-level-1-c4344.md + - name: Compiler warning (level 1) C4346 + href: compiler-warnings/compiler-warning-level-1-c4346.md + - name: Compiler warning (level 1) C4348 + href: compiler-warnings/compiler-warning-level-1-c4348.md + - name: Compiler warning (level 1, no longer emitted) C4350 + href: compiler-warnings/compiler-warning-level-1-c4350.md + - name: Compiler warning (level 1) C4353 + href: compiler-warnings/compiler-warning-level-1-c4353.md + - name: Compiler warning C4355 + href: compiler-warnings/compiler-warning-c4355.md + - name: Compiler warning (level 2) C4356 + href: compiler-warnings/compiler-warning-level-2-c4356.md + - name: Compiler warning (level 3) C4357 + href: compiler-warnings/compiler-warning-level-3-c4357.md + - name: Compiler warning (level 1) C4358 + href: compiler-warnings/compiler-warning-level-1-c4358.md + - name: Compiler warning (level 1 and level 3) C4359 + href: compiler-warnings/compiler-warning-level-3-c4359.md + - name: Compiler warning (level 1) C4364 + href: compiler-warnings/compiler-warning-level-1-c4364.md + - name: Compiler warning (level 4, off) C4365 + href: compiler-warnings/compiler-warning-level-4-c4365.md + - name: Compiler warning (level 4) C4366 + href: compiler-warnings/compiler-warning-level-4-c4366.md + - name: Compiler warning (level 1, Error) C4368 + href: compiler-warnings/compiler-warning-c4368.md + - name: Compiler warning (level 1) C4369 + href: compiler-warnings/compiler-warning-level-1-c4369.md + - name: Compiler warning (level 3, off) C4371 + href: compiler-warnings/c4371.md + - name: Compiler warning (level 4) C4373 + href: compiler-warnings/compiler-warning-level-3-c4373.md + - name: Compiler warning (level 1) C4374 + href: compiler-warnings/compiler-warning-level-1-c4374.md + - name: Compiler warning (level 1) C4375 + href: compiler-warnings/compiler-warning-level-1-c4375.md + - name: Compiler warning (level 1) C4376 + href: compiler-warnings/compiler-warning-level-1-c4376.md + - name: Compiler warning (level 1) C4377 + href: compiler-warnings/compiler-warning-level-1-c4377.md + - name: Compiler warning (level 1) C4378 + href: compiler-warnings/compiler-warning-level-1-c4378.md + - name: Compiler warning (level 1) C4379 + href: compiler-warnings/compiler-warning-level-1-c4379.md + - name: Compiler warning (level 1) C4381 + href: compiler-warnings/compiler-warning-level-1-c4381.md + - name: Compiler warning (level 1) C4382 + href: compiler-warnings/compiler-warning-level-1-c4382.md + - name: Compiler warning (level 1) C4383 + href: compiler-warnings/compiler-warning-level-1-c4383.md + - name: Compiler warning (level 1) C4384 + href: compiler-warnings/compiler-warning-level-1-c4384.md + - name: Compiler warning (level 4, off) C4388 + href: compiler-warnings/c4388.md + - name: Compiler warning (level 4) C4389 + href: compiler-warnings/compiler-warning-level-4-c4389.md + - name: Compiler warning (level 3) C4390 + href: compiler-warnings/compiler-warning-level-3-c4390.md + - name: Compiler warning (level 1) C4391 + href: compiler-warnings/compiler-warning-level-1-c4391.md + - name: Compiler warning (level 1, Error) C4392 + href: compiler-warnings/compiler-warning-level-1-c4392.md + - name: Compiler warning (level 1) C4393 + href: compiler-warnings/compiler-warning-level-1-c4393.md + - name: Compiler warning (level 1, Error) C4394 + href: compiler-warnings/compiler-warning-c4394.md + - name: Compiler warning (level 1) C4395 + href: compiler-warnings/compiler-warning-level-1-c4395.md + - name: Compiler warning (level 2) C4396 + href: compiler-warnings/compiler-warning-level-2-c4396.md + - name: Compiler warning (level 1) C4397 + href: compiler-warnings/compiler-warning-level-1-c4397.md + - name: Compiler warning (level 3) C4398 + href: compiler-warnings/compiler-warning-level-3-c4398.md + - name: Compiler warning (level 1, Error) C4399 + href: compiler-warnings/compiler-warning-level-1-c4399.md + - name: Compiler warnings C4400 through C4599 + expanded: false + items: + - name: Compiler warnings C4400 through C4599 + href: compiler-warnings/compiler-warnings-c4400-through-c4599.md + - name: Compiler warning (level 4, Error) C4400 + href: compiler-warnings/compiler-warning-level-4-c4400.md + - name: Compiler warning (level 1) C4401 + href: compiler-warnings/compiler-warning-level-1-c4401.md + - name: Compiler warning (level 1) C4402 + href: compiler-warnings/compiler-warning-level-1-c4402.md + - name: Compiler warning (level 1) C4403 + href: compiler-warnings/compiler-warning-level-1-c4403.md + - name: Compiler warning (level 3) C4404 + href: compiler-warnings/compiler-warning-level-3-c4404.md + - name: Compiler warning (level 1) C4405 + href: compiler-warnings/compiler-warning-level-1-c4405.md + - name: Compiler warning (level 1) C4406 + href: compiler-warnings/compiler-warning-level-1-c4406.md + - name: Compiler warning (level 1) C4407 + href: compiler-warnings/compiler-warning-level-1-c4407.md + - name: Compiler warning (level 4) C4408 + href: compiler-warnings/compiler-warning-level-4-c4408.md + - name: Compiler warning (level 1) C4409 + href: compiler-warnings/compiler-warning-level-1-c4409.md + - name: Compiler warning (level 1) C4410 + href: compiler-warnings/compiler-warning-level-1-c4410.md + - name: Compiler warning (level 1) C4411 + href: compiler-warnings/compiler-warning-level-1-c4411.md + - name: Compiler warning (level 2, off) C4412 + href: compiler-warnings/compiler-warning-level-2-c4412.md + - name: Compiler warning (level 3) C4414 + href: compiler-warnings/compiler-warning-level-3-c4414.md + - name: Compiler warning (level 1) C4420 + href: compiler-warnings/compiler-warning-level-1-c4420.md + - name: Compiler warning (level 4) C4429 + href: compiler-warnings/compiler-warning-level-4-c4429.md + - name: Compiler warning (level 1, Error) C4430 + href: compiler-warnings/compiler-warning-c4430.md + - name: Compiler warning (level 4) C4431 + href: compiler-warnings/compiler-warning-level-4-c4431.md + - name: Compiler warning (level 4) C4434 + href: compiler-warnings/compiler-warning-level-4-c4434.md + - name: Compiler warning (level 4, off) C4435 + href: compiler-warnings/compiler-warning-level-4-c4435.md + - name: Compiler warning (level 1 and level 4) C4436 + href: compiler-warnings/compiler-warning-level-1-c4436.md + - name: Compiler warning (level 1 and level 4, off) C4437 + href: compiler-warnings/compiler-warning-level-4-c4437.md + - name: Compiler warning (level 1, Error) C4439 + href: compiler-warnings/compiler-warning-c4439.md + - name: Compiler warning (level 1) C4440 + href: compiler-warnings/compiler-warning-level-1-c4440.md + - name: Compiler warning (level 1) C4441 + href: compiler-warnings/compiler-warning-level-1-c4441.md + - name: Compiler warning (level 1) C4445 + href: compiler-warnings/compiler-warning-level-1-c4445.md + - name: Compiler warning (level 1 and level 4) C4456 + href: compiler-warnings/compiler-warning-level-4-c4456.md + - name: Compiler warning (level 1 and level 4) C4457 + href: compiler-warnings/compiler-warning-level-4-c4457.md + - name: Compiler warning (level 1 and level 4) C4458 + href: compiler-warnings/compiler-warning-level-4-c4458.md + - name: Compiler warning (level 1 and level 4) C4459 + href: compiler-warnings/compiler-warning-level-4-c4459.md + - name: Compiler warning (level 4) C4460 + href: compiler-warnings/compiler-warning-level-4-c4460.md + - name: Compiler warning (level 1) C4461 + href: compiler-warnings/compiler-warning-level-1-c4461.md + - name: Compiler warning (level 1) C4462 + href: compiler-warnings/compiler-warning-level-1-c4462.md + - name: Compiler warning (level 4) C4463 + href: compiler-warnings/compiler-warning-level-4-c4463.md + - name: Compiler warning (level 4, off) C4464 + href: compiler-warnings/compiler-warning-level-4-c4464.md + - name: Compiler warning (level 1) C4470 + href: compiler-warnings/compiler-warning-level-1-c4470.md + - name: Compiler warning (level 4, off) C4471 + href: compiler-warnings/compiler-warning-level-4-c4471.md + - name: Compiler warning (level 1) C4473 + href: compiler-warnings/c4473.md + - name: Compiler warning (level 1) C4477 + href: compiler-warnings/c4477.md + - name: Compiler warning (level 4, Error) C4481 + href: compiler-warnings/compiler-warning-level-4-c4481.md + - name: Compiler warning (level 1, Error) C4484 + href: compiler-warnings/compiler-warning-c4484.md + - name: Compiler warning (level 1, Error) C4485 + href: compiler-warnings/compiler-warning-c4485.md + - name: Compiler warning (level 1) C4486 + href: compiler-warnings/compiler-warning-level-1-c4486.md + - name: Compiler warning (level 4) C4487 + href: compiler-warnings/compiler-warning-level-4-c4487.md + - name: Compiler warning (level 1) C4488 + href: compiler-warnings/compiler-warning-level-1-c4488.md + - name: Compiler warning (level 1) C4489 + href: compiler-warnings/compiler-warning-level-1-c4489.md + - name: Compiler warning (level 1) C4490 + href: compiler-warnings/compiler-warning-level-1-c4490.md + - name: Compiler warning (level 1) C4502 + href: compiler-warnings/compiler-warning-level-1-c4502.md + - name: Compiler warning (level 1) C4503 + href: compiler-warnings/compiler-warning-level-1-c4503.md + - name: Compiler warning (level 4) C4505 + href: compiler-warnings/compiler-warning-level-4-c4505.md + - name: Compiler warning (level 1) C4506 + href: compiler-warnings/compiler-warning-level-1-c4506.md + - name: Compiler warning (level 1) C4508 + href: compiler-warnings/compiler-warning-level-1-c4508.md + - name: Compiler warning (level 4) C4510 + href: compiler-warnings/compiler-warning-level-4-c4510.md + - name: Compiler warning (level 4) C4511 + href: compiler-warnings/compiler-warning-level-3-c4511.md + - name: Compiler warning (level 4) C4512 + href: compiler-warnings/compiler-warning-level-4-c4512.md + - name: Compiler warning (level 4) C4513 + href: compiler-warnings/compiler-warning-level-4-c4513.md + - name: Compiler warning (level 4, off) C4514 + href: compiler-warnings/compiler-warning-level-4-c4514.md + - name: Compiler warning (level 4) C4515 + href: compiler-warnings/compiler-warning-level-4-c4515.md + - name: Compiler warning (level 4) C4516 + href: compiler-warnings/compiler-warning-level-4-c4516.md + - name: Compiler warning (level 4) C4517 + href: compiler-warnings/compiler-warning-level-4-c4517.md + - name: Compiler warning (level 1) C4518 + href: compiler-warnings/compiler-warning-level-1-c4518.md + - name: Compiler warning (level 3) C4521 + href: compiler-warnings/compiler-warning-level-3-c4521.md + - name: Compiler warning (level 3) C4522 + href: compiler-warnings/compiler-warning-level-3-c4522.md + - name: Compiler warning (level 3) C4523 + href: compiler-warnings/compiler-warning-level-3-c4523.md + - name: Compiler warning (level 1) C4526 + href: compiler-warnings/compiler-warning-level-1-c4526.md + - name: Compiler warning (level 1) C4530 + href: compiler-warnings/compiler-warning-level-1-c4530.md + - name: Compiler warning (level 1) C4532 + href: compiler-warnings/compiler-warning-level-1-c4532.md + - name: Compiler warning (level 1) C4533 + href: compiler-warnings/compiler-warning-level-1-c4533.md + - name: Compiler warning (level 3) C4534 + href: compiler-warnings/compiler-warning-level-3-c4534.md + - name: Compiler warning (level 3) C4535 + href: compiler-warnings/compiler-warning-level-3-c4535.md + - name: Compiler warning (level 4, off) C4536 + href: compiler-warnings/compiler-warning-level-4-c4536.md + - name: Compiler warning (level 1) C4537 + href: compiler-warnings/compiler-warning-level-1-c4537.md + - name: Compiler warning (level 3) C4538 + href: compiler-warnings/compiler-warning-level-3-c4538.md + - name: Compiler warning (level 1) C4540 + href: compiler-warnings/compiler-warning-level-1-c4540.md + - name: Compiler warning (level 1) C4541 + href: compiler-warnings/compiler-warning-level-1-c4541.md + - name: Compiler warning (level 3) C4543 + href: compiler-warnings/compiler-warning-level-3-c4543.md + - name: Compiler warning (level 1) C4544 + href: compiler-warnings/compiler-warning-level-1-c4544.md + - name: Compiler warning (level 1, off) C4545 + href: compiler-warnings/compiler-warning-level-1-c4545.md + - name: Compiler warning (level 1, off) C4546 + href: compiler-warnings/compiler-warning-level-1-c4546.md + - name: Compiler warning (level 1, off) C4547 + href: compiler-warnings/compiler-warning-level-1-c4547.md + - name: Compiler warning (level 1, off) C4548 + href: compiler-warnings/compiler-warning-level-1-c4548.md + - name: Compiler warning (level 1, off) C4549 + href: compiler-warnings/compiler-warning-level-1-c4549.md + - name: Compiler warning (level 1) C4550 + href: compiler-warnings/compiler-warning-level-1-c4550.md + - name: Compiler warning (level 1) C4551 + href: compiler-warnings/compiler-warning-level-1-c4551.md + - name: Compiler warning (level 1) C4552 + href: compiler-warnings/compiler-warning-level-1-c4552.md + - name: Compiler warning (level 1) C4553 + href: compiler-warnings/compiler-warning-level-1-c4553.md + - name: Compiler warning (level 3) C4554 + href: compiler-warnings/compiler-warning-level-3-c4554.md + - name: Compiler warning (level 1, off) C4555 + href: compiler-warnings/compiler-warning-level-1-c4555.md + - name: Compiler warning (level 1) C4556 + href: compiler-warnings/compiler-warning-level-1-c4556.md + - name: Compiler warning (level 3, off) C4557 + href: compiler-warnings/compiler-warning-level-3-c4557.md + - name: Compiler warning (level 1) C4558 + href: compiler-warnings/compiler-warning-level-1-c4558.md + - name: Compiler warning (level 4) C4559 + href: compiler-warnings/compiler-warning-level-4-c4559.md + - name: Compiler warning (level 1) C4561 + href: compiler-warnings/compiler-warning-level-1-c4561.md + - name: Compiler warning (level 4) C4564 + href: compiler-warnings/compiler-warning-level-4-c4564.md + - name: Compiler warning (level 4) C4565 + href: compiler-warnings/compiler-warning-level-4-c4565.md + - name: Compiler warning (level 1) C4566 + href: compiler-warnings/compiler-warning-level-1-c4566.md + - name: Compiler warning (level 3) C4570 + href: compiler-warnings/compiler-warning-level-3-c4570.md + - name: Compiler warning (level 4) C4571 + href: compiler-warnings/compiler-warning-level-4-c4571.md + - name: Compiler warning (level 1) C4572 + href: compiler-warnings/compiler-warning-level-1-c4572.md + - name: Compiler warning (level 1) C4577 + href: compiler-warnings/compiler-warning-level-1-c4577.md + - name: Compiler warning (level 3) C4580 + href: compiler-warnings/compiler-warning-level-3-c4580.md + - name: Compiler warning (level 1) C4581 + href: compiler-warnings/compiler-warning-level-1-c4581.md + - name: Compiler warning (level 1) C4584 + href: compiler-warnings/compiler-warning-level-1-c4584.md + - name: Compiler warning (level 4, Error, off) C4596 + href: compiler-warnings/c4596.md + - name: Compiler warning (level 4) C4597 + href: compiler-warnings/c4597.md + - name: Compiler warnings C4600 through C4799 + expanded: false + items: + - name: Compiler warnings C4600 through C4799 + href: compiler-warnings/compiler-warnings-c4600-through-c4799.md + - name: Compiler warning (level 1) C4600 + href: compiler-warnings/compiler-warning-level-1-c4600.md + - name: Compiler warning (level 1) C4602 + href: compiler-warnings/compiler-warning-level-1-c4602.md + - name: Compiler warning (level 1) C4603 + href: compiler-warnings/compiler-warning-level-1-c4603.md + - name: Compiler warning (level 1) C4606 + href: compiler-warnings/compiler-warning-level-1-c4606.md + - name: Compiler warning (level 3) C4608 + href: compiler-warnings/compiler-warning-level-3-c4608.md + - name: Compiler warning (level 4) C4610 + href: compiler-warnings/compiler-warning-level-4-c4610.md + - name: Compiler warning (level 4) C4611 + href: compiler-warnings/compiler-warning-level-4-c4611.md + - name: Compiler warning (level 1) C4612 + href: compiler-warnings/compiler-warning-level-1-c4612.md + - name: Compiler warning (level 1) C4613 + href: compiler-warnings/compiler-warning-level-1-c4613.md + - name: Compiler warning (level 1) C4615 + href: compiler-warnings/compiler-warning-level-1-c4615.md + - name: Compiler warning (level 1) C4616 + href: compiler-warnings/compiler-warning-level-1-c4616.md + - name: Compiler warning (level 1) C4618 + href: compiler-warnings/compiler-warning-level-1-c4618.md + - name: Compiler warning (level 3) C4619 + href: compiler-warnings/compiler-warning-level-3-c4619.md + - name: Compiler warning (level 1) C4620 + href: compiler-warnings/compiler-warning-level-1-c4620.md + - name: Compiler warning (level 1) C4621 + href: compiler-warnings/compiler-warning-level-1-c4621.md + - name: Compiler warning (level 3) C4622 + href: compiler-warnings/compiler-warning-level-3-c4622.md + - name: Compiler warning (level 4) C4623 + href: compiler-warnings/compiler-warning-level-4-c4623.md + - name: Compiler warning (level 1) C4624 + href: compiler-warnings/compiler-warning-level-1-c4624.md + - name: Compiler warning (level 4) C4625 + href: compiler-warnings/compiler-warning-level-4-c4625.md + - name: Compiler warning (level 4) C4626 + href: compiler-warnings/compiler-warning-level-4-c4626.md + - name: Compiler warning (level 1) C4627 + href: compiler-warnings/compiler-warning-level-1-c4627.md + - name: Compiler warning (level 1) C4628 + href: compiler-warnings/compiler-warning-level-1-c4628.md + - name: Compiler warning (level 4) C4629 + href: compiler-warnings/compiler-warning-level-4-c4629.md + - name: Compiler warning (level 1) C4630 + href: compiler-warnings/compiler-warning-level-1-c4630.md + - name: Compiler warning (level 1) C4631 + href: compiler-warnings/compiler-warning-level-1-c4631.md + - name: Compiler warning (level 1) C4632 + href: compiler-warnings/compiler-warning-level-1-c4632.md + - name: Compiler warning (level 3) C4633 + href: compiler-warnings/compiler-warning-level-3-c4633.md + - name: Compiler warning (level 4) C4634 + href: compiler-warnings/compiler-warning-level-4-c4634.md + - name: Compiler warning (level 3) C4635 + href: compiler-warnings/compiler-warning-level-3-c4635.md + - name: Compiler warning (level 3) C4636 + href: compiler-warnings/compiler-warning-level-3-c4636.md + - name: Compiler warning (level 3) C4637 + href: compiler-warnings/compiler-warning-level-3-c4637.md + - name: Compiler warning (level 3) C4638 + href: compiler-warnings/compiler-warning-level-3-c4638.md + - name: Compiler warning (level 4) C4639 + href: compiler-warnings/compiler-warning-level-4-c4639.md + - name: Compiler warning (level 3) C4640 + href: compiler-warnings/compiler-warning-level-3-c4640.md + - name: Compiler warning (level 3) C4641 + href: compiler-warnings/compiler-warning-level-3-c4641.md + - name: Compiler warning (level 3) C4645 + href: compiler-warnings/compiler-warning-level-3-c4645.md + - name: Compiler warning (level 3) C4646 + href: compiler-warnings/compiler-warning-level-3-c4646.md + - name: Compiler warning (level 1) C4650 + href: compiler-warnings/compiler-warning-level-1-c4650.md + - name: Compiler warning (level 1) C4651 + href: compiler-warnings/compiler-warning-level-1-c4651.md + - name: Compiler warning (level 1) C4652 + href: compiler-warnings/compiler-warning-level-1-c4652.md + - name: Compiler warning (level 2) C4653 + href: compiler-warnings/compiler-warning-level-2-c4653.md + - name: Compiler warning (level 1) C4655 + href: compiler-warnings/compiler-warning-level-1-c4655.md + - name: Compiler warning (level 1) C4656 + href: compiler-warnings/compiler-warning-level-1-c4656.md + - name: Compiler warning (level 1) C4657 + href: compiler-warnings/compiler-warning-level-1-c4657.md + - name: Compiler warning (level 1) C4659 + href: compiler-warnings/compiler-warning-level-1-c4659.md + - name: Compiler warning (level 1) C4661 + href: compiler-warnings/compiler-warning-level-1-c4661.md + - name: Compiler warning (level 1) C4662 + href: compiler-warnings/compiler-warning-level-1-c4662.md + - name: Compiler warning (level 1) C4667 + href: compiler-warnings/compiler-warning-level-1-c4667.md + - name: Compiler warning (level 4) C4668 + href: compiler-warnings/compiler-warning-level-4-c4668.md + - name: Compiler warning (level 1) C4669 + href: compiler-warnings/compiler-warning-level-1-c4669.md + - name: Compiler warning (level 4) C4670 + href: compiler-warnings/compiler-warning-level-4-c4670.md + - name: Compiler warning (level 4) C4672 + href: compiler-warnings/compiler-warning-level-4-c4672.md + - name: Compiler warning (level 4) C4673 + href: compiler-warnings/compiler-warning-level-4-c4673.md + - name: Compiler warning (level 1) C4674 + href: compiler-warnings/compiler-warning-level-1-c4674.md + - name: Compiler warning (level 1) C4677 + href: compiler-warnings/compiler-warning-level-1-c4677.md + - name: Compiler warning (level 1) C4678 + href: compiler-warnings/compiler-warning-level-1-c4678.md + - name: Compiler warning (level 1) C4679 + href: compiler-warnings/compiler-warning-level-1-c4679.md + - name: Compiler warning (level 4) C4680 + href: compiler-warnings/compiler-warning-level-4-c4680.md + - name: Compiler warning (level 4) C4681 + href: compiler-warnings/compiler-warning-level-4-c4681.md + - name: Compiler warning (level 4) C4682 + href: compiler-warnings/compiler-warning-level-4-c4682.md + - name: Compiler warning (level 1) C4683 + href: compiler-warnings/compiler-warning-level-1-c4683.md + - name: Compiler warning (level 1) C4684 + href: compiler-warnings/compiler-warning-level-1-c4684.md + - name: Compiler warning (level 1) C4685 + href: compiler-warnings/compiler-warning-level-1-c4685.md + - name: Compiler warning (level 3) C4686 + href: compiler-warnings/compiler-warning-level-3-c4686.md + - name: Compiler warning C4687 + href: compiler-warnings/compiler-warning-c4687.md + - name: Compiler warning (level 1) C4688 + href: compiler-warnings/compiler-warning-level-1-c4688.md + - name: Compiler warning (level 4) C4690 + href: compiler-warnings/compiler-warning-level-4-c4690.md + - name: Compiler warning (level 1) C4691 + href: compiler-warnings/compiler-warning-level-1-c4691.md + - name: Compiler warning (level 1) C4692 + href: compiler-warnings/compiler-warning-level-1-c4692.md + - name: Compiler warning C4693 + href: compiler-warnings/compiler-warning-c4693.md + - name: Compiler warning C4694 + href: compiler-warnings/compiler-warning-c4694.md + - name: Compiler warning (level 3) C4698 + href: compiler-warnings/c4698.md + - name: Compiler warning (level 1 and level 4) C4700 + href: compiler-warnings/compiler-warning-level-1-and-level-4-c4700.md + - name: Compiler warning (level 4) C4701 + href: compiler-warnings/compiler-warning-level-4-c4701.md + - name: Compiler warning (level 4) C4702 + href: compiler-warnings/compiler-warning-level-4-c4702.md + - name: Compiler warning (level 4) C4703 + href: compiler-warnings/compiler-warning-level-4-c4703.md + - name: Compiler warning (level 4) C4706 + href: compiler-warnings/compiler-warning-level-4-c4706.md + - name: Compiler warning (level 4) C4709 + href: compiler-warnings/compiler-warning-level-4-c4709.md + - name: Compiler warning (level 4) C4710 + href: compiler-warnings/compiler-warning-level-4-c4710.md + - name: Compiler warning (level 1) C4711 + href: compiler-warnings/compiler-warning-level-1-c4711.md + - name: Compiler warning (level 4) C4714 + href: compiler-warnings/compiler-warning-level-4-c4714.md + - name: Compiler warning (level 1) C4715 + href: compiler-warnings/compiler-warning-level-1-c4715.md + - name: Compiler warning (level 1) C4716 + href: compiler-warnings/compiler-warning-level-1-c4716.md + - name: Compiler warning (level 1) C4717 + href: compiler-warnings/compiler-warning-level-1-c4717.md + - name: Compiler warning (level 4) C4718 + href: compiler-warnings/compiler-warning-level-4-c4718.md + - name: Compiler warning (level 1) C4722 + href: compiler-warnings/compiler-warning-level-1-c4722.md + - name: Compiler warning (level 3) C4723 + href: compiler-warnings/compiler-warning-level-3-c4723.md + - name: Compiler warning (level 3) C4724 + href: compiler-warnings/compiler-warning-level-3-c4724.md + - name: Compiler warning (level 4) C4725 + href: compiler-warnings/compiler-warning-level-4-c4725.md + - name: Compiler warning (level 1) C4727 + href: compiler-warnings/compiler-warning-level-1-c4727.md + - name: Compiler warning (Level 1) C4729 + href: compiler-warnings/compiler-warning-level-1-c4729.md + - name: Compiler warning (Level 1) C4730 + href: compiler-warnings/compiler-warning-level-1-c4730.md + - name: Compiler warning (Level 1) C4731 + href: compiler-warnings/compiler-warning-level-1-c4731.md + - name: Compiler warning (Level 1) C4733 + href: compiler-warnings/compiler-warning-level-1-c4733.md + - name: Compiler warning (Level 3) C4738 + href: compiler-warnings/compiler-warning-level-3-c4738.md + - name: Compiler warning (Level 1) C4739 + href: compiler-warnings/compiler-warning-level-1-c4739.md + - name: Compiler warning (Level 4) C4740 + href: compiler-warnings/compiler-warning-level-4-c4740.md + - name: Compiler warning (Level 1) C4742 + href: compiler-warnings/compiler-warning-level-1-c4742.md + - name: Compiler warning (Level 1) C4743 + href: compiler-warnings/compiler-warning-level-1-c4743.md + - name: Compiler warning (Level 1) C4744 + href: compiler-warnings/compiler-warning-level-1-c4744.md + - name: Compiler warning C4746 + href: compiler-warnings/compiler-warning-c4746.md + - name: Compiler warning (level 1) C4747 + href: compiler-warnings/compiler-warning-level-1-c4747.md + - name: Compiler warning (level 1) C4750 + href: compiler-warnings/compiler-warning-level-1-c4750.md + - name: Compiler warning (level 4) C4754 + href: compiler-warnings/compiler-warning-level-4-c4754.md + - name: Compiler warning (level 2) C4756 + href: compiler-warnings/compiler-warning-level-2-c4756.md + - name: Compiler warning (level 4) C4764 + href: compiler-warnings/compiler-warning-level-4-c4764.md + - name: Compiler warning (level 4) C4768 + href: compiler-warnings/c4768.md + - name: Compiler warning (level 4) C4770 + href: compiler-warnings/c4770.md + - name: Compiler warning (level 1) C4772 + href: compiler-warnings/compiler-warning-level-1-c4772.md + - name: Compiler warning (Level 1) C4788 + href: compiler-warnings/compiler-warning-level-1-c4788.md + - name: Compiler warning (Level 1) C4789 + href: compiler-warnings/compiler-warning-level-1-c4789.md + - name: Compiler warning (level 3) C4792 + href: compiler-warnings/compiler-warning-level-3-c4792.md + - name: Compiler warning (level 1 and 3) C4793 + href: compiler-warnings/compiler-warning-level-1-and-3-c4793.md + - name: Compiler warning (level 1) C4794 + href: compiler-warnings/compiler-warning-level-1-c4794.md + - name: Compiler warning (level 1) C4799 + href: compiler-warnings/compiler-warning-level-1-c4799.md + - name: Compiler warnings C4800 through C4999 + expanded: false + items: + - name: Compiler warnings C4800 through C4999 + href: compiler-warnings/compiler-warnings-c4800-through-c4999.md + - name: Compiler warning (level 3) C4800 + href: compiler-warnings/compiler-warning-level-3-c4800.md + - name: Compiler warning (level 1) C4803 + href: compiler-warnings/compiler-warning-level-1-c4803.md + - name: Compiler warning (level 1) C4804 + href: compiler-warnings/compiler-warning-level-1-c4804.md + - name: Compiler warning (level 1) C4805 + href: compiler-warnings/compiler-warning-level-1-c4805.md + - name: Compiler warning (level 1) C4806 + href: compiler-warnings/compiler-warning-level-1-c4806.md + - name: Compiler warning (level 1) C4807 + href: compiler-warnings/compiler-warning-level-1-c4807.md + - name: Compiler warning (level 1) C4810 + href: compiler-warnings/compiler-warning-level-1-c4810.md + - name: Compiler warning (level 1) C4811 + href: compiler-warnings/compiler-warning-level-1-c4811.md + - name: Compiler warning (level 1) C4812 + href: compiler-warnings/compiler-warning-level-1-c4812.md + - name: Compiler warning (level 1) C4813 + href: compiler-warnings/compiler-warning-level-1-c4813.md + - name: Compiler warning (level 4) C4816 + href: compiler-warnings/compiler-warning-level-4-c4816.md + - name: Compiler warning (level 1) C4817 + href: compiler-warnings/compiler-warning-level-1-c4817.md + - name: Compiler warning (level 1) C4819 + href: compiler-warnings/compiler-warning-level-1-c4819.md + - name: Compiler warning (level 4) C4820 + href: compiler-warnings/compiler-warning-level-4-c4820.md + - name: Compiler warning (level 1) C4821 + href: compiler-warnings/compiler-warning-level-1-c4821.md + - name: Compiler warning (level 1) C4822 + href: compiler-warnings/compiler-warning-level-1-c4822.md + - name: Compiler warning (level 3) C4823 + href: compiler-warnings/compiler-warning-level-3-c4823.md + - name: Compiler warning (level 1) C4829 + href: compiler-warnings/compiler-warning-level-1-c4829.md + - name: Compiler warning (level 1) C4834 + href: compiler-warnings/c4834.md + - name: Compiler warning (level 1) C4835 + href: compiler-warnings/compiler-warning-level-1-c4835.md + - name: Compiler warning (level 1) C4838 + href: compiler-warnings/compiler-warning-level-1-c4838.md + - name: Compiler warning (level 3) C4839 + href: compiler-warnings/compiler-warning-level-3-c4839.md + - name: Compiler warning (level 4) C4840 + href: compiler-warnings/compiler-warning-level-4-c4840.md + - name: Compiler warning (level 4) C4841 + href: compiler-warnings/c4841.md + - name: Compiler warning (level 4) C4843 + href: compiler-warnings/c4843.md + - name: Compiler warning (level 4) C4866 + href: compiler-warnings/c4866.md + - name: Compiler warning C4867 + href: compiler-warnings/compiler-warning-c4867.md + - name: Compiler warning C4868 + href: compiler-warnings/compiler-warning-c4868.md + - name: Compiler warning (level 1) C4900 + href: compiler-warnings/compiler-warning-level-1-c4900.md + - name: Compiler warning (level 1) C4905 + href: compiler-warnings/compiler-warning-level-1-c4905.md + - name: Compiler warning (level 1) C4906 + href: compiler-warnings/compiler-warning-level-1-c4906.md + - name: Compiler warning (level 1) C4910 + href: compiler-warnings/compiler-warning-level-1-c4910.md + - name: Compiler warning (level 1) C4912 + href: compiler-warnings/compiler-warning-level-1-c4912.md + - name: Compiler warning (level 4) C4913 + href: compiler-warnings/compiler-warning-level-4-c4913.md + - name: Compiler warning (level 1) C4917 + href: compiler-warnings/compiler-warning-level-1-c4917.md + - name: Compiler warning (level 4) C4918 + href: compiler-warnings/compiler-warning-level-4-c4918.md + - name: Compiler warning (level 1) C4920 + href: compiler-warnings/compiler-warning-level-1-c4920.md + - name: Compiler warning (level 1) C4925 + href: compiler-warnings/compiler-warning-level-1-c4925.md + - name: Compiler warning (level 1) C4926 + href: compiler-warnings/compiler-warning-level-1-c4926.md + - name: Compiler warning (level 1) C4927 + href: compiler-warnings/compiler-warning-level-1-c4927.md + - name: Compiler warning (level 1) C4928 + href: compiler-warnings/compiler-warning-level-1-c4928.md + - name: Compiler warning (level 1) C4929 + href: compiler-warnings/compiler-warning-level-1-c4929.md + - name: Compiler warning (level 1) C4930 + href: compiler-warnings/compiler-warning-level-1-c4930.md + - name: Compiler warning (level 4) C4931 + href: compiler-warnings/compiler-warning-level-4-c4931.md + - name: Compiler warning (level 4) C4932 + href: compiler-warnings/compiler-warning-level-4-c4932.md + - name: Compiler warning (level 1) C4935 + href: compiler-warnings/compiler-warning-level-1-c4935.md + - name: Compiler warning C4936 + href: compiler-warnings/compiler-warning-c4936.md + - name: Compiler warning (level 4) C4937 + href: compiler-warnings/compiler-warning-level-4-c4937.md + - name: Compiler warning (level 4) C4938 + href: compiler-warnings/compiler-warning-level-4-c4938.md + - name: Compiler warning (level 1) C4939 + href: compiler-warnings/compiler-warning-level-1-c4939.md + - name: Compiler warning (level 1) C4944 + href: compiler-warnings/compiler-warning-level-1-c4944.md + - name: Compiler warning (level 1) C4945 + href: compiler-warnings/compiler-warning-level-1-c4945.md + - name: Compiler warning (level 1) C4946 + href: compiler-warnings/compiler-warning-level-1-c4946.md + - name: Compiler warning (level 1) C4947 + href: compiler-warnings/compiler-warning-level-1-c4947.md + - name: Compiler warning (level 2) C4948 + href: compiler-warnings/compiler-warning-level-2-c4948.md + - name: Compiler warning (level 1 and level 4) C4949 + href: compiler-warnings/compiler-warning-level-1-and-level-4-c4949.md + - name: Compiler warning C4950 + href: compiler-warnings/compiler-warning-c4950.md + - name: Compiler warning (level 1) C4951 + href: compiler-warnings/compiler-warning-level-1-c4951.md + - name: Compiler warning (level 1) C4952 + href: compiler-warnings/compiler-warning-level-1-c4952.md + - name: Compiler warning (level 1) C4953 + href: compiler-warnings/compiler-warning-level-1-c4953.md + - name: Compiler warning C4956 + href: compiler-warnings/compiler-warning-c4956.md + - name: Compiler warning C4957 + href: compiler-warnings/compiler-warning-c4957.md + - name: Compiler warning C4958 + href: compiler-warnings/compiler-warning-c4958.md + - name: Compiler warning C4959 + href: compiler-warnings/compiler-warning-c4959.md + - name: Compiler warning (level 4) C4960 + href: compiler-warnings/compiler-warning-level-4-c4960.md + - name: Compiler warning C4961 + href: compiler-warnings/compiler-warning-c4961.md + - name: Compiler warning C4962 + href: compiler-warnings/compiler-warning-c4962.md + - name: Compiler warning (level 1) C4964 + href: compiler-warnings/compiler-warning-level-1-c4964.md + - name: Compiler warning (level 1) C4965 + href: compiler-warnings/compiler-warning-level-1-c4965.md + - name: Compiler warning C4972 + href: compiler-warnings/compiler-warning-c4972.md + - name: Compiler warning C4984 + href: compiler-warnings/compiler-warning-c4984.md + - name: Compiler warning (level 4) C4985 + href: compiler-warnings/compiler-warning-level-4-c4985.md + - name: Compiler warning C4986 + href: compiler-warnings/compiler-warning-c4986.md + - name: Compiler warning (level 3) C4995 + href: compiler-warnings/compiler-warning-level-3-c4995.md + - name: Compiler warning (level 3) C4996 + href: compiler-warnings/compiler-warning-level-3-c4996.md + - name: Compiler warning (level 1) C4997 + href: compiler-warnings/compiler-warning-level-1-c4997.md + - name: Compiler warnings C5000 through C5199 + expanded: false + items: + - name: Compiler warnings C5000 through C5199 + href: compiler-warnings/compiler-warnings-c5000-through-c5199.md + - name: Compiler warning (level 1) C5033 + href: compiler-warnings/c5033.md + - name: Compiler warning C5037 + href: compiler-warnings/c5037.md + - name: Compiler warning C5038 + href: compiler-warnings/c5038.md + - name: Compiler warning C5045 + href: compiler-warnings/c5045.md + - name: Compiler warning (level 2) C5046 + href: compiler-warnings/c5046.md + - name: Compiler warning C5050 + href: compiler-warnings/c5050.md + - name: Compiler warning (level 4) C5054 + href: compiler-warnings/c5054.md + - name: Compiler warning (level 1) C5055 + href: compiler-warnings/c5055.md + - name: Compiler warning (level 1) C5056 + href: compiler-warnings/c5056.md + - name: Compiler warning (level 1) C5072 + href: compiler-warnings/compiler-warning-c5072.md + - name: Compiler warning (level 1) C5089 + href: compiler-warnings/compiler-warning-c5089.md + - name: Compiler warning (level 1) C5105 + href: compiler-warnings/c5105.md + - name: Compiler warnings C5200 through C5399 + expanded: false + items: + - name: Compiler warnings C5200 through C5399 + href: compiler-warnings/compiler-warnings-c5200-through-c5399.md + - name: Compiler warning (level 1) C5208 + href: compiler-warnings/c5208.md + - name: Compiler warning (level 1) C5240 + href: compiler-warnings/c5240.md + - name: Compiler warning (level 1) C5243 + href: compiler-warnings/c5243.md + - name: Compiler warning (level 1) C5247 + href: compiler-warnings/c5247.md + - name: Compiler warning (level 1) C5248 + href: compiler-warnings/c5248.md + - name: Compiler warning (level 1, error, off) C5262 + href: compiler-warnings/c5262.md + - name: Compiler warning (level 4) C5266 + href: compiler-warnings/compiler-warning-level-4-c5266.md + - name: Compiler warning (level 4) C5267 + href: compiler-warnings/c5267.md + - name: Compiler warning (level 1) C5301 and C5302 + href: compiler-warnings/c5301-c5302.md +- name: Compiler warnings by compiler version + href: compiler-warnings/compiler-warnings-by-compiler-version.md +- name: Compiler warnings that are off by default + href: ../preprocessor/compiler-warnings-that-are-off-by-default.md +- name: C Runtime errors + expanded: false + items: + - name: C Runtime errors (Rxxxx) + href: tool-errors/c-runtime-errors-r6002-through-r6035.md + - name: C Runtime error R6002 + href: tool-errors/c-runtime-error-r6002.md + - name: C Runtime error R6008 + href: tool-errors/c-runtime-error-r6008.md + - name: C Runtime error R6009 + href: tool-errors/c-runtime-error-r6009.md + - name: C Runtime error R6016 + href: tool-errors/c-runtime-error-r6016.md + - name: C Runtime error R6017 + href: tool-errors/c-runtime-error-r6017.md + - name: C Runtime error R6018 + href: tool-errors/c-runtime-error-r6018.md + - name: C Runtime error R6019 + href: tool-errors/c-runtime-error-r6019.md + - name: C Runtime error R6024 + href: tool-errors/c-runtime-error-r6024.md + - name: C Runtime error R6025 + href: tool-errors/c-runtime-error-r6025.md + - name: C Runtime error R6026 + href: tool-errors/c-runtime-error-r6026.md + - name: C Runtime error R6027 + href: tool-errors/c-runtime-error-r6027.md + - name: C Runtime error R6028 + href: tool-errors/c-runtime-error-r6028.md + - name: C Runtime error R6030 + href: tool-errors/c-runtime-error-r6030.md + - name: C Runtime error R6031 + href: tool-errors/c-runtime-error-r6031.md + - name: C Runtime error R6032 + href: tool-errors/c-runtime-error-r6032.md + - name: C Runtime error R6033 + href: tool-errors/c-runtime-error-r6033.md + - name: C Runtime error R6035 + href: tool-errors/c-runtime-error-r6035.md +- name: CVTRES errors and warnings + expanded: false + items: + - name: CVTRES errors and warnings (CVTxxxx) + href: tool-errors/cvtres-errors-cvt1100-through-cvt4001.md + - name: CVTRES fatal error CVT1100 + href: tool-errors/cvtres-fatal-error-cvt1100.md + - name: CVTRES fatal error CVT1103 + href: tool-errors/cvtres-fatal-error-cvt1103.md + - name: CVTRES fatal error CVT1105 + href: tool-errors/cvtres-fatal-error-cvt1105.md + - name: CVTRES warning CVT4001 + href: tool-errors/cvtres-warning-cvt4001.md +- name: Expression evaluator errors + expanded: false + items: + - name: Expression evaluator errors (CXXxxxx) + href: tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md + - name: Expression Evaluator error CXX0000 + href: tool-errors/expression-evaluator-error-cxx0000.md + - name: Expression Evaluator error CXX0001 + href: tool-errors/expression-evaluator-error-cxx0001.md + - name: Expression Evaluator error CXX0002 + href: tool-errors/expression-evaluator-error-cxx0002.md + - name: Expression Evaluator error CXX0004 + href: tool-errors/expression-evaluator-error-cxx0004.md + - name: Expression Evaluator error CXX0005 + href: tool-errors/expression-evaluator-error-cxx0005.md + - name: Expression Evaluator error CXX0006 + href: tool-errors/expression-evaluator-error-cxx0006.md + - name: Expression Evaluator error CXX0007 + href: tool-errors/expression-evaluator-error-cxx0007.md + - name: Expression Evaluator error CXX0008 + href: tool-errors/expression-evaluator-error-cxx0008.md + - name: Expression Evaluator error CXX0009 + href: tool-errors/expression-evaluator-error-cxx0009.md + - name: Expression Evaluator error CXX0010 + href: tool-errors/expression-evaluator-error-cxx0010.md + - name: Expression Evaluator error CXX0011 + href: tool-errors/expression-evaluator-error-cxx0011.md + - name: Expression Evaluator error CXX0012 + href: tool-errors/expression-evaluator-error-cxx0012.md + - name: Expression Evaluator error CXX0013 + href: tool-errors/expression-evaluator-error-cxx0013.md + - name: Expression Evaluator error CXX0014 + href: tool-errors/expression-evaluator-error-cxx0014.md + - name: Expression Evaluator error CXX0015 + href: tool-errors/expression-evaluator-error-cxx0015.md + - name: Expression Evaluator error CXX0016 + href: tool-errors/expression-evaluator-error-cxx0016.md + - name: Expression Evaluator error CXX0017 + href: tool-errors/expression-evaluator-error-cxx0017.md + - name: Expression Evaluator error CXX0018 + href: tool-errors/expression-evaluator-error-cxx0018.md + - name: Expression Evaluator error CXX0019 + href: tool-errors/expression-evaluator-error-cxx0019.md + - name: Expression Evaluator error CXX0020 + href: tool-errors/expression-evaluator-error-cxx0020.md + - name: Expression Evaluator error CXX0021 + href: tool-errors/expression-evaluator-error-cxx0021.md + - name: Expression Evaluator error CXX0022 + href: tool-errors/expression-evaluator-error-cxx0022.md + - name: Expression Evaluator error CXX0023 + href: tool-errors/expression-evaluator-error-cxx0023.md + - name: Expression Evaluator error CXX0024 + href: tool-errors/expression-evaluator-error-cxx0024.md + - name: Expression Evaluator error CXX0025 + href: tool-errors/expression-evaluator-error-cxx0025.md + - name: Expression Evaluator error CXX0026 + href: tool-errors/expression-evaluator-error-cxx0026.md + - name: Expression Evaluator error CXX0027 + href: tool-errors/expression-evaluator-error-cxx0027.md + - name: Expression Evaluator error CXX0028 + href: tool-errors/expression-evaluator-error-cxx0028.md + - name: Expression Evaluator error CXX0029 + href: tool-errors/expression-evaluator-error-cxx0029.md + - name: Expression Evaluator error CXX0030 + href: tool-errors/expression-evaluator-error-cxx0030.md + - name: Expression Evaluator error CXX0031 + href: tool-errors/expression-evaluator-error-cxx0031.md + - name: Expression Evaluator error CXX0032 + href: tool-errors/expression-evaluator-error-cxx0032.md + - name: Expression Evaluator error CXX0033 + href: tool-errors/expression-evaluator-error-cxx0033.md + - name: Expression Evaluator error CXX0034 + href: tool-errors/expression-evaluator-error-cxx0034.md + - name: Expression Evaluator error CXX0036 + href: tool-errors/expression-evaluator-error-cxx0036.md + - name: Expression Evaluator error CXX0037 + href: tool-errors/expression-evaluator-error-cxx0037.md + - name: Expression Evaluator error CXX0038 + href: tool-errors/expression-evaluator-error-cxx0038.md + - name: Expression Evaluator error CXX0039 + href: tool-errors/expression-evaluator-error-cxx0039.md + - name: Expression Evaluator error CXX0040 + href: tool-errors/expression-evaluator-error-cxx0040.md + - name: Expression Evaluator error CXX0041 + href: tool-errors/expression-evaluator-error-cxx0041.md + - name: Expression Evaluator error CXX0043 + href: tool-errors/expression-evaluator-error-cxx0043.md + - name: Expression Evaluator error CXX0044 + href: tool-errors/expression-evaluator-error-cxx0044.md + - name: Expression Evaluator error CXX0045 + href: tool-errors/expression-evaluator-error-cxx0045.md + - name: Expression Evaluator error CXX0046 + href: tool-errors/expression-evaluator-error-cxx0046.md + - name: Expression Evaluator error CXX0047 + href: tool-errors/expression-evaluator-error-cxx0047.md + - name: Expression Evaluator error CXX0048 + href: tool-errors/expression-evaluator-error-cxx0048.md + - name: Expression Evaluator error CXX0049 + href: tool-errors/expression-evaluator-error-cxx0049.md + - name: Expression Evaluator error CXX0050 + href: tool-errors/expression-evaluator-error-cxx0050.md + - name: Expression Evaluator error CXX0051 + href: tool-errors/expression-evaluator-error-cxx0051.md + - name: Expression Evaluator error CXX0052 + href: tool-errors/expression-evaluator-error-cxx0052.md + - name: Expression Evaluator error CXX0053 + href: tool-errors/expression-evaluator-error-cxx0053.md + - name: Expression Evaluator error CXX0054 + href: tool-errors/expression-evaluator-error-cxx0054.md + - name: Expression Evaluator error CXX0055 + href: tool-errors/expression-evaluator-error-cxx0055.md + - name: Expression Evaluator error CXX0056 + href: tool-errors/expression-evaluator-error-cxx0056.md + - name: Expression Evaluator error CXX0057 + href: tool-errors/expression-evaluator-error-cxx0057.md + - name: Expression Evaluator error CXX0058 + href: tool-errors/expression-evaluator-error-cxx0058.md + - name: Expression Evaluator error CXX0059 + href: tool-errors/expression-evaluator-error-cxx0059.md + - name: Expression Evaluator error CXX0060 + href: tool-errors/expression-evaluator-error-cxx0060.md + - name: Expression Evaluator error CXX0061 + href: tool-errors/expression-evaluator-error-cxx0061.md + - name: Expression Evaluator error CXX0062 + href: tool-errors/expression-evaluator-error-cxx0062.md + - name: Expression Evaluator error CXX0063 + href: tool-errors/expression-evaluator-error-cxx0063.md + - name: Expression Evaluator error CXX0064 + href: tool-errors/expression-evaluator-error-cxx0064.md + - name: Expression Evaluator error CXX0065 + href: tool-errors/expression-evaluator-error-cxx0065.md + - name: Expression Evaluator error CXX0066 + href: tool-errors/expression-evaluator-error-cxx0066.md + - name: Expression Evaluator error CXX0067 + href: tool-errors/expression-evaluator-error-cxx0067.md + - name: Expression Evaluator error CXX0069 + href: tool-errors/expression-evaluator-error-cxx0069.md + - name: Expression Evaluator error CXX0072 + href: tool-errors/expression-evaluator-error-cxx0072.md +- name: Linker tools errors and warnings + expanded: false + items: + - name: Linker tools errors and warnings (LNKxxxx) + href: tool-errors/linker-tools-errors-and-warnings.md + - name: Linker tools error LNK1000 + href: tool-errors/linker-tools-error-lnk1000.md + - name: Linker tools error LNK1103 + href: tool-errors/linker-tools-error-lnk1103.md + - name: Linker tools error LNK1104 + href: tool-errors/linker-tools-error-lnk1104.md + - name: Linker tools error LNK1106 + href: tool-errors/linker-tools-error-lnk1106.md + - name: Linker tools error LNK1107 + href: tool-errors/linker-tools-error-lnk1107.md + - name: Linker tools error LNK1112 + href: tool-errors/linker-tools-error-lnk1112.md + - name: Linker tools error LNK1113 + href: tool-errors/linker-tools-error-lnk1113.md + - name: Linker tools error LNK1120 + href: tool-errors/linker-tools-error-lnk1120.md + - name: Linker tools error LNK1123 + href: tool-errors/linker-tools-error-lnk1123.md + - name: Linker tools error LNK1127 + href: tool-errors/linker-tools-error-lnk1127.md + - name: Linker tools error LNK1136 + href: tool-errors/linker-tools-error-lnk1136.md + - name: Linker tools error LNK1140 + href: tool-errors/linker-tools-error-lnk1140.md + - name: Linker tools error LNK1141 + href: tool-errors/linker-tools-error-lnk1141.md + - name: Linker tools error LNK1143 + href: tool-errors/linker-tools-error-lnk1143.md + - name: Linker tools error LNK1152 + href: tool-errors/linker-tools-error-lnk1152.md + - name: Linker tools error LNK1158 + href: tool-errors/linker-tools-error-lnk1158.md + - name: Linker tools error LNK1164 + href: tool-errors/linker-tools-error-lnk1164.md + - name: Linker tools error LNK1166 + href: tool-errors/linker-tools-error-lnk1166.md + - name: Linker tools error LNK1168 + href: tool-errors/linker-tools-error-lnk1168.md + - name: Linker tools error LNK1169 + href: tool-errors/linker-tools-error-lnk1169.md + - name: Linker tools error LNK1170 + href: tool-errors/linker-tools-error-lnk1170.md + - name: Linker tools error LNK1179 + href: tool-errors/linker-tools-error-lnk1179.md + - name: Linker tools error LNK1181 + href: tool-errors/linker-tools-error-lnk1181.md + - name: Linker tools error LNK1188 + href: tool-errors/linker-tools-error-lnk1188.md + - name: Linker tools error LNK1189 + href: tool-errors/linker-tools-error-lnk1189.md + - name: Linker tools error LNK1196 + href: tool-errors/linker-tools-error-lnk1196.md + - name: Linker tools error LNK1200 + href: tool-errors/linker-tools-error-lnk1200.md + - name: Linker tools error LNK1201 + href: tool-errors/linker-tools-error-lnk1201.md + - name: Linker tools error LNK1211 + href: tool-errors/linker-tools-error-lnk1211.md + - name: Linker tools error LNK1215 + href: tool-errors/linker-tools-error-lnk1215.md + - name: Linker tools error LNK1218 + href: tool-errors/linker-tools-error-lnk1218.md + - name: Linker tools error LNK1221 + href: tool-errors/linker-tools-error-lnk1221.md + - name: Linker tools error LNK1223 + href: tool-errors/linker-tools-error-lnk1223.md + - name: Linker tools error LNK1224 + href: tool-errors/linker-tools-error-lnk1224.md + - name: Linker tools error LNK1237 + href: tool-errors/linker-tools-error-lnk1237.md + - name: Linker tools error LNK1240 + href: tool-errors/linker-tools-error-lnk1240.md + - name: Linker tools error LNK1241 + href: tool-errors/linker-tools-error-lnk1241.md + - name: Linker tools error LNK1245 + href: tool-errors/linker-tools-error-lnk1245.md + - name: Linker tools error LNK1248 + href: tool-errors/linker-tools-error-lnk1248.md + - name: Linker tools error LNK1256 + href: tool-errors/linker-tools-error-lnk1256.md + - name: Linker tools error LNK1264 + href: tool-errors/linker-tools-error-lnk1264.md + - name: Linker tools error LNK1277 + href: tool-errors/linker-tools-error-lnk1277.md + - name: Linker tools error LNK1282 + href: tool-errors/linker-tools-error-lnk1282.md + - name: Linker tools error LNK1287 + href: tool-errors/linker-tools-error-lnk1287.md + - name: Linker tools error LNK1296 + href: tool-errors/linker-tools-error-lnk1296.md + - name: Linker tools error LNK1301 + href: tool-errors/linker-tools-error-lnk1301.md + - name: Linker tools error LNK1302 + href: tool-errors/linker-tools-error-lnk1302.md + - name: Linker tools error LNK1306 + href: tool-errors/linker-tools-error-lnk1306.md + - name: Linker tools error LNK1309 + href: tool-errors/linker-tools-error-lnk1309.md + - name: Linker tools error LNK1312 + href: tool-errors/linker-tools-error-lnk1312.md + - name: Linker tools error LNK1313 + href: tool-errors/linker-tools-error-lnk1313.md + - name: Linker tools error LNK1314 + href: tool-errors/linker-tools-error-lnk1314.md + - name: Linker tools error LNK1318 + href: tool-errors/linker-tools-error-lnk1318.md + - name: Linker tools error LNK1332 + href: tool-errors/linker-tools-error-lnk1332.md + - name: Linker tools error LNK1352 + href: tool-errors/linker-tools-error-lnk1352.md + - name: Linker tools error LNK1561 + href: tool-errors/linker-tools-error-lnk1561.md + - name: Linker tools error LNK2001 + href: tool-errors/linker-tools-error-lnk2001.md + expanded: false + items: + - name: Name Decoration + href: tool-errors/name-decoration.md + - name: Linker tools error LNK2004 + href: tool-errors/linker-tools-error-lnk2004.md + - name: Linker tools error LNK2005 + href: tool-errors/linker-tools-error-lnk2005.md + - name: Linker tools error LNK2008 + href: tool-errors/linker-tools-error-lnk2008.md + - name: Linker tools error LNK2011 + href: tool-errors/linker-tools-error-lnk2011.md + - name: Linker tools error LNK2013 + href: tool-errors/linker-tools-error-lnk2013.md + - name: Linker tools error LNK2017 + href: tool-errors/linker-tools-error-lnk2017.md + - name: Linker tools error LNK2019 + href: tool-errors/linker-tools-error-lnk2019.md + expanded: false + items: + - name: Global Constants in C++ + href: tool-errors/global-constants-in-cpp.md + - name: Function Inlining Problems + href: tool-errors/function-inlining-problems.md + - name: Automatic (Function Scope) Variables + href: tool-errors/automatic-function-scope-variables.md + - name: Missing Function Body or Variable + href: tool-errors/missing-function-body-or-variable.md + - name: Linker tools error LNK2020 + href: tool-errors/linker-tools-error-lnk2020.md + - name: Linker tools error LNK2022 + href: tool-errors/linker-tools-error-lnk2022.md + - name: Linker tools error LNK2023 + href: tool-errors/linker-tools-error-lnk2023.md + - name: Linker tools error LNK2026 + href: tool-errors/linker-tools-error-lnk2026.md + - name: Linker tools error LNK2027 + href: tool-errors/linker-tools-error-lnk2027.md + - name: Linker tools error LNK2028 + href: tool-errors/linker-tools-error-lnk2028.md + - name: Linker tools error LNK2031 + href: tool-errors/linker-tools-error-lnk2031.md + - name: Linker tools error LNK2033 + href: tool-errors/linker-tools-error-lnk2033.md + - name: Linker tools error LNK2038 + href: tool-errors/linker-tools-error-lnk2038.md + - name: Linker tools error LNK2039 + href: tool-errors/linker-tools-error-lnk2039.md + - name: Linker tools warning LNK4001 + href: tool-errors/linker-tools-warning-lnk4001.md + - name: Linker tools warning LNK4002 + href: tool-errors/linker-tools-warning-lnk4002.md + - name: Linker tools warning LNK4006 + href: tool-errors/linker-tools-warning-lnk4006.md + - name: Linker tools warning LNK4010 + href: tool-errors/linker-tools-warning-lnk4010.md + - name: Linker tools warning LNK4014 + href: tool-errors/linker-tools-warning-lnk4014.md + - name: Linker tools warning LNK4020 + href: tool-errors/linker-tools-warning-lnk4020.md + - name: Linker tools warning LNK4022 + href: tool-errors/linker-tools-warning-lnk4022.md + - name: Linker tools warning LNK4037 + href: tool-errors/linker-tools-warning-lnk4037.md + - name: Linker tools warning LNK4039 + href: tool-errors/linker-tools-warning-lnk4039.md + - name: Linker tools warning LNK4044 + href: tool-errors/linker-tools-warning-lnk4044.md + - name: Linker tools warning LNK4049 + href: tool-errors/linker-tools-warning-lnk4049.md + - name: Linker tools warning LNK4065 + href: tool-errors/linker-tools-warning-lnk4065.md + - name: Linker tools warning LNK4070 + href: tool-errors/linker-tools-warning-lnk4070.md + - name: Linker tools warning LNK4071 + href: tool-errors/linker-tools-warning-lnk4071.md + - name: Linker tools warning LNK4073 + href: tool-errors/linker-tools-warning-lnk4073.md + - name: Linker tools warning LNK4075 + href: tool-errors/linker-tools-warning-lnk4075.md + - name: Linker tools warning LNK4076 + href: tool-errors/linker-tools-warning-lnk4076.md + - name: Linker tools warning LNK4078 + href: tool-errors/linker-tools-warning-lnk4078.md + - name: Linker tools warning LNK4086 + href: tool-errors/linker-tools-warning-lnk4086.md + - name: Linker tools warning LNK4092 + href: tool-errors/linker-tools-warning-lnk4092.md + - name: Linker tools warning LNK4096 + href: tool-errors/linker-tools-warning-lnk4096.md + - name: Linker tools warning LNK4098 + href: tool-errors/linker-tools-warning-lnk4098.md + - name: Linker tools warning LNK4099 + href: tool-errors/linker-tools-warning-lnk4099.md + - name: Linker tools warning LNK4102 + href: tool-errors/linker-tools-warning-lnk4102.md + - name: Linker tools warning LNK4104 + href: tool-errors/linker-tools-warning-lnk4104.md + - name: Linker tools warning LNK4105 + href: tool-errors/linker-tools-warning-lnk4105.md + - name: Linker tools warning LNK4194 + href: tool-errors/linker-tools-warning-lnk4194.md + - name: Linker tools warning LNK4197 + href: tool-errors/linker-tools-warning-lnk4197.md + - name: Linker tools warning LNK4199 + href: tool-errors/linker-tools-warning-lnk4199.md + - name: Linker tools warning LNK4200 + href: tool-errors/linker-tools-warning-lnk4200.md + - name: Linker tools warning LNK4204 + href: tool-errors/linker-tools-warning-lnk4204.md + - name: Linker tools warning LNK4205 + href: tool-errors/linker-tools-warning-lnk4205.md + - name: Linker tools warning LNK4206 + href: tool-errors/linker-tools-warning-lnk4206.md + - name: Linker tools warning LNK4210 + href: tool-errors/linker-tools-warning-lnk4210.md + - name: Linker tools warning LNK4216 + href: tool-errors/linker-tools-warning-lnk4216.md + - name: Linker tools warning LNK4217 + href: tool-errors/linker-tools-warning-lnk4217.md + - name: Linker tools warning LNK4219 + href: tool-errors/linker-tools-warning-lnk4219.md + - name: Linker tools warning LNK4220 + href: tool-errors/linker-tools-warning-lnk4220.md + - name: Linker tools warning LNK4221 + href: tool-errors/linker-tools-warning-lnk4221.md + - name: Linker tools warning LNK4222 + href: tool-errors/linker-tools-warning-lnk4222.md + - name: Linker tools warning LNK4224 + href: tool-errors/linker-tools-warning-lnk4224.md + - name: Linker tools warning LNK4227 + href: tool-errors/linker-tools-warning-lnk4227.md + - name: Linker tools warning LNK4229 + href: tool-errors/linker-tools-warning-lnk4229.md + - name: Linker tools warning LNK4237 + href: tool-errors/linker-tools-warning-lnk4237.md + - name: Linker tools warning LNK4247 + href: tool-errors/linker-tools-warning-lnk4247.md + - name: Linker tools warning LNK4248 + href: tool-errors/linker-tools-warning-lnk4248.md + - name: Linker tools warning LNK4253 + href: tool-errors/linker-tools-warning-lnk4253.md + - name: Linker tools warning LNK4254 + href: tool-errors/linker-tools-warning-lnk4254.md + - name: Linker tools warning LNK4286 + href: tool-errors/linker-tools-warning-lnk4286.md + - name: Linker tools warning LNK4306 + href: tool-errors/linker-tools-warning-lnk4306.md + - name: Linker tools warning LNK4307 + href: tool-errors/linker-tools-warning-lnk4307.md +- name: Math errors + expanded: false + items: + - name: Math errors (M6101 through M6205) + href: tool-errors/math-errors-m6101-through-m6205.md + - name: Math error M6101 + href: tool-errors/math-error-m6101.md + - name: Math error M6102 + href: tool-errors/math-error-m6102.md + - name: Math error M6107 + href: tool-errors/math-error-m6107.md + - name: Math error M6108 + href: tool-errors/math-error-m6108.md + - name: Math error M6110 + href: tool-errors/math-error-m6110.md + - name: Math error M6111 + href: tool-errors/math-error-m6111.md + - name: Math error M6201 + href: tool-errors/math-error-m6201.md + - name: Math error M6202 + href: tool-errors/math-error-m6202.md + - name: Math error M6203 + href: tool-errors/math-error-m6203.md + - name: Math error M6205 + href: tool-errors/math-error-m6205.md +- name: NMAKE errors and warnings + expanded: false + items: + - name: NMAKE errors and warnings (Uxxxx) + href: tool-errors/nmake-errors-u1000-through-u4011.md + - name: NMAKE fatal error U1000 + href: tool-errors/nmake-fatal-error-u1000.md + - name: NMAKE fatal error U1001 + href: tool-errors/nmake-fatal-error-u1001.md + - name: NMAKE fatal error U1007 + href: tool-errors/nmake-fatal-error-u1007.md + - name: NMAKE fatal error U1023 + href: tool-errors/nmake-fatal-error-u1023.md + - name: NMAKE fatal error U1033 + href: tool-errors/nmake-fatal-error-u1033.md + - name: NMAKE fatal error U1034 + href: tool-errors/nmake-fatal-error-u1034.md + - name: NMAKE fatal error U1035 + href: tool-errors/nmake-fatal-error-u1035.md + - name: NMAKE fatal error U1036 + href: tool-errors/nmake-fatal-error-u1036.md + - name: NMAKE fatal error U1045 + href: tool-errors/nmake-fatal-error-u1045.md + - name: NMAKE fatal error U1050 + href: tool-errors/nmake-fatal-error-u1050.md + - name: NMAKE fatal error U1051 + href: tool-errors/nmake-fatal-error-u1051.md + - name: NMAKE fatal error U1052 + href: tool-errors/nmake-fatal-error-u1052.md + - name: NMAKE fatal error U1055 + href: tool-errors/nmake-fatal-error-u1055.md + - name: NMAKE fatal error U1056 + href: tool-errors/nmake-fatal-error-u1056.md + - name: NMAKE fatal error U1059 + href: tool-errors/nmake-fatal-error-u1059.md + - name: NMAKE fatal error U1064 + href: tool-errors/nmake-fatal-error-u1064.md + - name: NMAKE fatal error U1065 + href: tool-errors/nmake-fatal-error-u1065.md + - name: NMAKE fatal error U1070 + href: tool-errors/nmake-fatal-error-u1070.md + - name: NMAKE fatal error U1071 + href: tool-errors/nmake-fatal-error-u1071.md + - name: NMAKE fatal error U1073 + href: tool-errors/nmake-fatal-error-u1073.md + - name: NMAKE fatal error U1076 + href: tool-errors/nmake-fatal-error-u1076.md + - name: NMAKE fatal error U1077 + href: tool-errors/nmake-fatal-error-u1077.md + - name: NMAKE fatal error U1078 + href: tool-errors/nmake-fatal-error-u1078.md + - name: NMAKE fatal error U1083 + href: tool-errors/nmake-fatal-error-u1083.md + - name: NMAKE fatal error U1086 + href: tool-errors/nmake-fatal-error-u1086.md + - name: NMAKE fatal error U1087 + href: tool-errors/nmake-fatal-error-u1087.md + - name: NMAKE fatal error U1088 + href: tool-errors/nmake-fatal-error-u1088.md + - name: NMAKE fatal error U1095 + href: tool-errors/nmake-fatal-error-u1095.md + - name: NMAKE fatal error U1097 + href: tool-errors/nmake-fatal-error-u1097.md + - name: NMAKE fatal error U1099 + href: tool-errors/nmake-fatal-error-u1099.md + - name: NMAKE fatal error U1100 + href: tool-errors/nmake-fatal-error-u1100.md + - name: NMAKE warning U4001 + href: tool-errors/nmake-warning-u4001.md + - name: NMAKE warning U4004 + href: tool-errors/nmake-warning-u4004.md + - name: NMAKE warning U4006 + href: tool-errors/nmake-warning-u4006.md + - name: NMAKE warning U4007 + href: tool-errors/nmake-warning-u4007.md + - name: NMAKE warning U4010 + href: tool-errors/nmake-warning-u4010.md + - name: NMAKE warning U4011 + href: tool-errors/nmake-warning-u4011.md +- name: Profile-Guided Optimization errors and warnings + expanded: false + items: + - name: Profile-Guided Optimization errors and warnings + href: tool-errors/profile-guided-optimization-errors-and-warnings.md + - name: Profile-Guided Optimization warning PG1039 + href: tool-errors/profile-guided-optimization-warning-pg1039.md + - name: Profile-Guided Optimization warning PG1087 + href: tool-errors/profile-guided-optimization-warning-pg1087.md + - name: Profile-Guided Optimization error PG0165 + href: tool-errors/profile-guided-optimization-error-pg0165.md +- name: Project build errors and warnings + expanded: false + items: + - name: Project build errors and warnings (PRJxxxx) + href: tool-errors/project-build-errors-and-warnings-prjxxxx.md + - name: Project Build error PRJ0002 + href: tool-errors/project-build-error-prj0002.md + - name: Project Build error PRJ0003 + href: tool-errors/project-build-error-prj0003.md + - name: Project Build error PRJ0004 + href: tool-errors/project-build-error-prj0004.md + - name: Project Build error PRJ0005 + href: tool-errors/project-build-error-prj0005.md + - name: Project Build error PRJ0006 + href: tool-errors/project-build-error-prj0006.md + - name: Project Build error PRJ0007 + href: tool-errors/project-build-error-prj0007.md + - name: Project Build error PRJ0008 + href: tool-errors/project-build-error-prj0008.md + - name: Project Build error PRJ0009 + href: tool-errors/project-build-error-prj0009.md + - name: Project Build error PRJ0013 + href: tool-errors/project-build-error-prj0013.md + - name: Project Build error PRJ0014 + href: tool-errors/project-build-error-prj0014.md + - name: Project Build error PRJ0015 + href: tool-errors/project-build-error-prj0015.md + - name: Project Build error PRJ0016 + href: tool-errors/project-build-error-prj0016.md + - name: Project Build error PRJ0017 + href: tool-errors/project-build-error-prj0017.md + - name: Project Build warning PRJ0018 + href: tool-errors/project-build-warning-prj0018.md + - name: Project Build error PRJ0019 + href: tool-errors/project-build-error-prj0019.md + - name: Project Build error PRJ0020 + href: tool-errors/project-build-error-prj0020.md + - name: Project Build error PRJ0021 + href: tool-errors/project-build-error-prj0021.md + - name: Project Build error PRJ0022 + href: tool-errors/project-build-error-prj0022.md + - name: Project Build error PRJ0023 + href: tool-errors/project-build-error-prj0023.md + - name: Project Build error PRJ0024 + href: tool-errors/project-build-error-prj0024.md + - name: Project Build error PRJ0025 + href: tool-errors/project-build-error-prj0025.md + - name: Project Build error PRJ0026 + href: tool-errors/project-build-error-prj0026.md + - name: Project Build error PRJ0027 + href: tool-errors/project-build-error-prj0027.md + - name: Project Build error PRJ0028 + href: tool-errors/project-build-error-prj0028.md + - name: Project Build warning PRJ0029 + href: tool-errors/project-build-warning-prj0029.md + - name: Project Build error PRJ0030 + href: tool-errors/project-build-error-prj0030.md + - name: Project Build error PRJ0031 + href: tool-errors/project-build-error-prj0031.md + - name: Project Build error PRJ0032 + href: tool-errors/project-build-error-prj0032.md + - name: Project Build error PRJ0033 + href: tool-errors/project-build-error-prj0033.md + - name: Project Build error PRJ0034 + href: tool-errors/project-build-error-prj0034.md + - name: Project Build error PRJ0035 + href: tool-errors/project-build-error-prj0035.md + - name: Project Build error PRJ0036 + href: tool-errors/project-build-error-prj0036.md + - name: Project Build error PRJ0040 + href: tool-errors/project-build-error-prj0040.md + - name: Project Build warning PRJ0041 + href: tool-errors/project-build-warning-prj0041.md + - name: Project Build warning PRJ0042 + href: tool-errors/project-build-warning-prj0042.md + - name: Project Build error PRJ0044 + href: tool-errors/project-build-error-prj0044.md + - name: Project Build error PRJ0046 + href: tool-errors/project-build-error-prj0046.md + - name: Project Build error PRJ0047 + href: tool-errors/project-build-error-prj0047.md + - name: Project Build warning PRJ0049 + href: tool-errors/project-build-warning-prj0049.md + - name: Project Build error PRJ0050 + href: tool-errors/project-build-error-prj0050.md +- name: Resource compiler errors and warnings + expanded: false + items: + - name: Resource compiler errors and warnings (RCxxxx, RWxxxx) + href: tool-errors/resource-compiler-errors-rc1000-through-rc4413.md + - name: Resource Compiler fatal error RC1002 + href: tool-errors/resource-compiler-fatal-error-rc1002.md + - name: Resource Compiler fatal error RC1004 + href: tool-errors/resource-compiler-fatal-error-rc1004.md + - name: Resource Compiler fatal error RC1009 + href: tool-errors/resource-compiler-fatal-error-rc1009.md + - name: Resource Compiler fatal error RC1011 + href: tool-errors/resource-compiler-fatal-error-rc1011.md + - name: Resource Compiler fatal error RC1015 + href: tool-errors/resource-compiler-fatal-error-rc1015.md + - name: Resource Compiler fatal error RC1017 + href: tool-errors/resource-compiler-fatal-error-rc1017.md + - name: Resource Compiler fatal error RC1018 + href: tool-errors/resource-compiler-fatal-error-rc1018.md + - name: Resource Compiler fatal error RC1019 + href: tool-errors/resource-compiler-fatal-error-rc1019.md + - name: Resource Compiler fatal error RC1020 + href: tool-errors/resource-compiler-fatal-error-rc1020.md + - name: Resource Compiler fatal error RC1021 + href: tool-errors/resource-compiler-fatal-error-rc1021.md + - name: Resource Compiler fatal error RC1022 + href: tool-errors/resource-compiler-fatal-error-rc1022.md + - name: Resource Compiler fatal error RC1047 + href: tool-errors/resource-compiler-fatal-error-rc1047.md + - name: Resource Compiler fatal error RC1052 + href: tool-errors/resource-compiler-fatal-error-rc1052.md + - name: Resource Compiler fatal error RC1067 + href: tool-errors/resource-compiler-fatal-error-rc1067.md + - name: Resource Compiler fatal error RC1101 + href: tool-errors/resource-compiler-fatal-error-rc1101.md + - name: Resource Compiler fatal error RC1102 + href: tool-errors/resource-compiler-fatal-error-rc1102.md + - name: Resource Compiler fatal error RC1105 + href: tool-errors/resource-compiler-fatal-error-rc1105.md + - name: Resource Compiler fatal error RC1109 + href: tool-errors/resource-compiler-fatal-error-rc1109.md + - name: Resource Compiler fatal error RC1116 + href: tool-errors/resource-compiler-fatal-error-rc1116.md + - name: Resource Compiler fatal error RC1120 + href: tool-errors/resource-compiler-fatal-error-rc1120.md + - name: Resource Compiler fatal error RC1121 + href: tool-errors/resource-compiler-fatal-error-rc1121.md + - name: Resource Compiler fatal error RC1203 + href: tool-errors/resource-compiler-fatal-error-rc1203.md + - name: Resource Compiler fatal error RC1205 + href: tool-errors/resource-compiler-fatal-error-rc1205.md + - name: Resource Compiler fatal error RC1208 + href: tool-errors/resource-compiler-fatal-error-rc1208.md + - name: Resource Compiler fatal error RW1004 + href: tool-errors/resource-compiler-fatal-error-rw1004.md + - name: Resource Compiler fatal error RW1009 + href: tool-errors/resource-compiler-fatal-error-rw1009.md + - name: Resource Compiler fatal error RW1016 + href: tool-errors/resource-compiler-fatal-error-rw1016.md + - name: Resource Compiler fatal error RW1022 + href: tool-errors/resource-compiler-fatal-error-rw1022.md + - name: Resource Compiler fatal error RW1023 + href: tool-errors/resource-compiler-fatal-error-rw1023.md + - name: Resource Compiler fatal error RW1025 + href: tool-errors/resource-compiler-fatal-error-rw1025.md + - name: Resource Compiler fatal error RW1030 + href: tool-errors/resource-compiler-fatal-error-rw1030.md + - name: Resource Compiler error RC2001 + href: tool-errors/resource-compiler-error-rc2001.md + - name: Resource Compiler error RC2007 + href: tool-errors/resource-compiler-error-rc2007.md + - name: Resource Compiler error RC2015 + href: tool-errors/resource-compiler-error-rc2015.md + - name: Resource Compiler error RC2017 + href: tool-errors/resource-compiler-error-rc2017.md + - name: Resource Compiler error RC2101 + href: tool-errors/resource-compiler-error-rc2101.md + - name: Resource Compiler error RC2103 + href: tool-errors/resource-compiler-error-rc2103.md + - name: Resource Compiler error RC2104 + href: tool-errors/resource-compiler-error-rc2104.md + - name: Resource Compiler error RC2107 + href: tool-errors/resource-compiler-error-rc2107.md + - name: Resource Compiler error RC2109 + href: tool-errors/resource-compiler-error-rc2109.md + - name: Resource Compiler error RC2111 + href: tool-errors/resource-compiler-error-rc2111.md + - name: Resource Compiler error RC2112 + href: tool-errors/resource-compiler-error-rc2112.md + - name: Resource Compiler error RC2113 + href: tool-errors/resource-compiler-error-rc2113.md + - name: Resource Compiler error RC2114 + href: tool-errors/resource-compiler-error-rc2114.md + - name: Resource Compiler error RC2116 + href: tool-errors/resource-compiler-error-rc2116.md + - name: Resource Compiler error RC2122 + href: tool-errors/resource-compiler-error-rc2122.md + - name: Resource Compiler error RC2124 + href: tool-errors/resource-compiler-error-rc2124.md + - name: Resource Compiler error RC2127 + href: tool-errors/resource-compiler-error-rc2127.md + - name: Resource Compiler error RC2135 + href: tool-errors/resource-compiler-error-rc2135.md + - name: Resource Compiler error RC2144 + href: tool-errors/resource-compiler-error-rc2144.md + - name: Resource Compiler error RC2147 + href: tool-errors/resource-compiler-error-rc2147.md + - name: Resource Compiler error RC2148 + href: tool-errors/resource-compiler-error-rc2148.md + - name: Resource Compiler error RC2151 + href: tool-errors/resource-compiler-error-rc2151.md + - name: Resource Compiler error RC2152 + href: tool-errors/resource-compiler-error-rc2152.md + - name: Resource Compiler error RC2162 + href: tool-errors/resource-compiler-error-rc2162.md + - name: Resource Compiler error RC2163 + href: tool-errors/resource-compiler-error-rc2163.md + - name: Resource Compiler error RC2164 + href: tool-errors/resource-compiler-error-rc2164.md + - name: Resource Compiler error RC2165 + href: tool-errors/resource-compiler-error-rc2165.md + - name: Resource Compiler error RC2167 + href: tool-errors/resource-compiler-error-rc2167.md + - name: Resource Compiler error RC2169 + href: tool-errors/resource-compiler-error-rc2169.md + - name: Resource Compiler error RC2170 + href: tool-errors/resource-compiler-error-rc2170.md + - name: Resource Compiler error RC2171 + href: tool-errors/resource-compiler-error-rc2171.md + - name: Resource Compiler error RC2175 + href: tool-errors/resource-compiler-error-rc2175.md + - name: Resource Compiler error RW2001 + href: tool-errors/resource-compiler-error-rw2001.md + - name: Resource Compiler error RW2002 + href: tool-errors/resource-compiler-error-rw2002.md + - name: Resource Compiler error RW2003 + href: tool-errors/resource-compiler-error-rw2003.md + - name: Resource Compiler warning RC4002 + href: tool-errors/resource-compiler-warning-rc4002.md + - name: Resource Compiler warning RC4005 + href: tool-errors/resource-compiler-warning-rc4005.md + - name: Resource Compiler warning RC4093 + href: tool-errors/resource-compiler-warning-rc4093.md + - name: Resource Compiler warning RC4214 + href: tool-errors/resource-compiler-warning-rc4214.md + - name: Resource Compiler warning RW4001 + href: tool-errors/resource-compiler-warning-rw4001.md + - name: Resource Compiler warning RW4003 + href: tool-errors/resource-compiler-warning-rw4003.md + - name: Resource Compiler warning RW4004 + href: tool-errors/resource-compiler-warning-rw4004.md +- name: Vectorizer and parallelizer messages + href: tool-errors/vectorizer-and-parallelizer-messages.md diff --git a/docs/error-messages/compiler-warnings/compiler-warning-c5089.md b/docs/error-messages/compiler-warnings/compiler-warning-c5089.md new file mode 100644 index 00000000000..4551d2ccd60 --- /dev/null +++ b/docs/error-messages/compiler-warnings/compiler-warning-c5089.md @@ -0,0 +1,29 @@ +--- +title: "Compiler Warning (level 1) C5089" +description: "Learn more about: Compiler Warning (level 1) C5089" +ms.date: 07/29/2026 +f1_keywords: ["C5089"] +helpviewer_keywords: ["C5089"] +--- +# Compiler warning (level 1) C5089 + +> using `/fsanitize=address` with `/clr` is experimental and may result in unexpected behavior. + +## Remarks + +This warning occurs when you compile with both [`/fsanitize=address`](../../build/reference/fsanitize.md) (AddressSanitizer) and [`/clr`](../../build/reference/clr-common-language-runtime-compilation.md) (Common Language Runtime compilation). Although you can use AddressSanitizer with managed C++, support is still experimental. This limitation can lead to missed detections and unpredictable application behavior. For more information on ASan compatibility, see [AddressSanitizer known issues](../../sanitizers/asan-known-issues.md#incompatible-options). + +## Example + +The following command line generates warning C5089: + +```cmd +cl /fsanitize=address /clr test.cpp +``` + +To fix it, remove either [`/fsanitize=address`](../../build/reference/fsanitize.md) or [`/clr`](../../build/reference/clr-common-language-runtime-compilation.md) from the command line. + +## See also + +[Address Sanitizer (ASAN)](../../sanitizers/asan.md)\ +[AddressSanitizer known issues](../../sanitizers/asan-known-issues.md) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c5000-through-c5199.md b/docs/error-messages/compiler-warnings/compiler-warnings-c5000-through-c5199.md index 38f4e448954..01e7052c4aa 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c5000-through-c5199.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c5000-through-c5199.md @@ -59,6 +59,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages | Compiler warning (level 1) C5063 | '`std::is_constant_evaluated`' always evaluates to true in manifestly constant-evaluated expressions | | [Compiler warning (level 1) C5072](compiler-warning-c5072.md) | ASAN enabled without debug information emission. Enable debug info for better ASAN error reporting | | Compiler warning (level 1) C5081 | Secure hotpatch is not supported with `/GENPROFILE`, `/FASTGENPROFILE` or `/LTCG:PGI`, disabling secure hotpatch. | +| [Compiler warning (level 1) C5089](compiler-warning-c5089.md) | using `/fsanitize=address` with `/clr` is experimental and may result in unexpected behavior. | | Compiler warning (level 1) C5100 | `__VA_ARGS__` is reserved for use in variadic macros | | Compiler warning (level 1) C5101 | use of preprocessor directive in function-like macro argument list is undefined behavior | | Compiler warning (level 1) C5102 | ignoring invalid command-line macro definition '*value*' | diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 7d3b22a2e7a..6b43a47598c 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -19,7 +19,7 @@ The following options and functionality are incompatible with [`/fsanitize=addre - [Edit-and-Continue](/visualstudio/debugger/edit-and-continue-visual-cpp) is unsupported, and should be disabled. - [Coroutines](https://devblogs.microsoft.com/cppblog/category/coroutine/) are incompatible with AddressSanitizer, and resumable functions are exempt from instrumentation. - [OpenMP](../build/reference/openmp-enable-openmp-2-0-support.md) is unsupported, and should be disabled. -- [Managed C++](../build/reference/clr-common-language-runtime-compilation.md) is unsupported, and should be disabled. +- [Managed C++](../build/reference/clr-common-language-runtime-compilation.md) is not fully supported, and should be disabled. See [Compiler Warning (level 1) C5089](../error-messages/compiler-warnings/compiler-warning-c5089.md) for more information. - [C++ AMP](../parallel/amp/cpp-amp-overview.md) is unsupported, and should be disabled. - [Universal Windows Platform](../cppcx/universal-windows-apps-cpp.md) (UWP) applications are unsupported. - [Special case list](https://clang.llvm.org/docs/SanitizerSpecialCaseList.html) files are unsupported. From b77cc8d78331597e63318b04b33a1c2d66b1c751 Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Wed, 29 Jul 2026 14:46:52 -0700 Subject: [PATCH 585/619] fix: remove duplicate uppercase error message TOC --- docs/error-messages/TOC.yml | 5204 ----------------------------------- docs/error-messages/toc.yml | 2 + 2 files changed, 2 insertions(+), 5204 deletions(-) delete mode 100644 docs/error-messages/TOC.yml diff --git a/docs/error-messages/TOC.yml b/docs/error-messages/TOC.yml deleted file mode 100644 index 71c6190ca58..00000000000 --- a/docs/error-messages/TOC.yml +++ /dev/null @@ -1,5204 +0,0 @@ -items: -- name: C/C++ Compiler and build tools errors and warnings - href: compiler-errors-1/c-cpp-build-errors.md -- name: BSCMAKE errors and warnings - expanded: false - items: - - name: BSCMAKE errors and warnings (BKxxxx) - href: tool-errors/bscmake-errors-bk1500-through-bk4505.md - - name: BSCMAKE error BK1503 - href: tool-errors/bscmake-error-bk1503.md - - name: BSCMAKE error BK1504 - href: tool-errors/bscmake-error-bk1504.md - - name: BSCMAKE error BK1505 - href: tool-errors/bscmake-error-bk1505.md - - name: BSCMAKE error BK1506 - href: tool-errors/bscmake-error-bk1506.md - - name: BSCMAKE error BK1507 - href: tool-errors/bscmake-error-bk1507.md - - name: BSCMAKE error BK1508 - href: tool-errors/bscmake-error-bk1508.md - - name: BSCMAKE error BK1509 - href: tool-errors/bscmake-error-bk1509.md - - name: BSCMAKE error BK1510 - href: tool-errors/bscmake-error-bk1510.md - - name: BSCMAKE error BK1512 - href: tool-errors/bscmake-error-bk1512.md - - name: BSCMAKE error BK1513 - href: tool-errors/bscmake-error-bk1513.md - - name: BSCMAKE error BK1514 - href: tool-errors/bscmake-error-bk1514.md - - name: BSCMAKE error BK1515 - href: tool-errors/bscmake-error-bk1515.md - - name: BSCMAKE error BK1516 - href: tool-errors/bscmake-error-bk1516.md - - name: BSCMAKE error BK1517 - href: tool-errors/bscmake-error-bk1517.md - - name: BSCMAKE warning BK4502 - href: tool-errors/bscmake-warning-bk4502.md - - name: BSCMAKE warning BK4503 - href: tool-errors/bscmake-warning-bk4503.md - - name: BSCMAKE warning BK4504 - href: tool-errors/bscmake-warning-bk4504.md -- name: Command-line errors and warnings - expanded: false - items: - - name: Command-line errors and warnings (Dxxxx) - href: tool-errors/command-line-errors-d8000-through-d9999.md - - name: Command-line error D8016 - href: tool-errors/command-line-error-d8016.md - - name: Command-line error D8021 - href: tool-errors/command-line-error-d8021.md - - name: Command-line error D8022 - href: tool-errors/command-line-error-d8022.md - - name: Command-line error D8027 - href: tool-errors/command-line-error-d8027.md - - name: Command-line error D8036 - href: tool-errors/command-line-error-d8036.md - - name: Command-line error D8037 - href: tool-errors/command-line-error-d8037.md - - name: Command-line error D8045 - href: tool-errors/command-line-error-d8045.md - - name: Command-line error D8048 - href: tool-errors/command-line-error-d8048.md - - name: Command-line error D8049 - href: tool-errors/command-line-error-d8049.md - - name: Command-line warning D9024 - href: tool-errors/command-line-warning-d9024.md - - name: Command-line warning D9025 - href: tool-errors/command-line-warning-d9025.md - - name: Command-line warning D9026 - href: tool-errors/command-line-warning-d9026.md - - name: Command-line warning D9027 - href: tool-errors/command-line-warning-d9027.md - - name: Command-line warning D9028 - href: tool-errors/command-line-warning-d9028.md - - name: Command-line warning D9035 - href: tool-errors/command-line-warning-d9035.md - - name: Command-line warning D9036 - href: tool-errors/command-line-warning-d9036.md - - name: Command-line warning D9040 - href: tool-errors/command-line-warning-d9040.md - - name: Command-line warning D9041 - href: tool-errors/command-line-warning-d9041.md - - name: Command-line warning D9043 - href: tool-errors/command-line-warning-d9043.md -- name: Compiler fatal errors - expanded: false - items: - - name: Compiler fatal errors C1001 through C1907 - href: compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md - - name: Fatal error C1001 - href: compiler-errors-1/fatal-error-c1001.md - - name: Fatal error C1002 - href: compiler-errors-1/fatal-error-c1002.md - - name: Fatal error C1003 - href: compiler-errors-1/fatal-error-c1003.md - - name: Fatal error C1004 - href: compiler-errors-1/fatal-error-c1004.md - - name: Fatal error C1005 - href: compiler-errors-1/fatal-error-c1005.md - - name: Fatal error C1007 - href: compiler-errors-1/fatal-error-c1007.md - - name: Fatal error C1008 - href: compiler-errors-1/fatal-error-c1008.md - - name: Fatal error C1009 - href: compiler-errors-1/fatal-error-c1009.md - - name: Fatal error C1010 - href: compiler-errors-1/fatal-error-c1010.md - - name: Fatal error C1011 - href: compiler-errors-1/fatal-error-c1011.md - - name: Fatal error C1012 - href: compiler-errors-1/fatal-error-c1012.md - - name: Fatal error C1013 - href: compiler-errors-1/fatal-error-c1013.md - - name: Fatal error C1014 - href: compiler-errors-1/fatal-error-c1014.md - - name: Fatal error C1015 - href: compiler-errors-1/fatal-error-c1015.md - - name: Fatal error C1016 - href: compiler-errors-1/fatal-error-c1016.md - - name: Fatal error C1017 - href: compiler-errors-1/fatal-error-c1017.md - - name: Fatal error C1018 - href: compiler-errors-1/fatal-error-c1018.md - - name: Fatal error C1019 - href: compiler-errors-1/fatal-error-c1019.md - - name: Fatal error C1020 - href: compiler-errors-1/fatal-error-c1020.md - - name: Fatal error C1021 - href: compiler-errors-1/fatal-error-c1021.md - - name: Fatal error C1022 - href: compiler-errors-1/fatal-error-c1022.md - - name: Fatal error C1023 - href: compiler-errors-1/fatal-error-c1023.md - - name: Fatal error C1025, C1115 - href: compiler-errors-1/fatal-error-c1025-c1115.md - - name: Fatal error C1026 - href: compiler-errors-1/fatal-error-c1026.md - - name: Fatal error C1029 - href: compiler-errors-1/fatal-error-c1029.md - - name: Fatal error C1033 - href: compiler-errors-1/fatal-error-c1033.md - - name: Fatal error C1035 - href: compiler-errors-1/fatal-error-c1035.md - - name: Fatal error C1037 - href: compiler-errors-1/fatal-error-c1037.md - - name: Fatal error C1038 - href: compiler-errors-1/fatal-error-c1038.md - - name: Fatal error C1045 - href: compiler-errors-1/fatal-error-c1045.md - - name: Fatal error C1046 - href: compiler-errors-1/fatal-error-c1046.md - - name: Fatal error C1047 - href: compiler-errors-1/fatal-error-c1047.md - - name: Fatal error C1049 - href: compiler-errors-1/fatal-error-c1049.md - - name: Fatal error C1051 - href: compiler-errors-1/fatal-error-c1051.md - - name: Fatal error C1052 - href: compiler-errors-1/fatal-error-c1052.md - - name: Fatal error C1053 - href: compiler-errors-1/fatal-error-c1053.md - - name: Fatal error C1054 - href: compiler-errors-1/fatal-error-c1054.md - - name: Fatal error C1055 - href: compiler-errors-1/fatal-error-c1055.md - - name: Fatal error C1057 - href: compiler-errors-1/fatal-error-c1057.md - - name: Fatal error C1060 - href: compiler-errors-1/fatal-error-c1060.md - - name: Fatal error C1061 - href: compiler-errors-1/fatal-error-c1061.md - - name: Fatal error C1064 - href: compiler-errors-1/fatal-error-c1064.md - - name: Fatal error C1065 - href: compiler-errors-1/fatal-error-c1065.md - - name: Fatal error C1067 - href: compiler-errors-1/fatal-error-c1067.md - - name: Fatal error C1068 - href: compiler-errors-1/fatal-error-c1068.md - - name: Fatal error C1070 - href: compiler-errors-1/fatal-error-c1070.md - - name: Fatal error C1071 - href: compiler-errors-1/fatal-error-c1071.md - - name: Fatal error C1073 - href: compiler-errors-1/fatal-error-c1073.md - - name: Fatal error C1074 - href: compiler-errors-1/fatal-error-c1074.md - - name: Fatal error C1075 - href: compiler-errors-1/fatal-error-c1075.md - - name: Fatal error C1076 - href: compiler-errors-1/fatal-error-c1076.md - - name: Fatal error C1077 - href: compiler-errors-1/fatal-error-c1077.md - - name: Fatal error C1079 - href: compiler-errors-1/fatal-error-c1079.md - - name: Fatal error C1080 - href: compiler-errors-1/fatal-error-c1080.md - - name: Fatal error C1081 - href: compiler-errors-1/fatal-error-c1081.md - - name: Fatal error C1082 - href: compiler-errors-1/fatal-error-c1082.md - - name: Fatal error C1083 - href: compiler-errors-1/fatal-error-c1083.md - - name: Fatal error C1084 - href: compiler-errors-1/fatal-error-c1084.md - - name: Fatal error C1085 - href: compiler-errors-1/fatal-error-c1085.md - - name: Fatal error C1086 - href: compiler-errors-1/fatal-error-c1086.md - - name: Fatal error C1087 - href: compiler-errors-1/fatal-error-c1087.md - - name: Fatal error C1088 - href: compiler-errors-1/fatal-error-c1088.md - - name: Fatal error C1089 - href: compiler-errors-1/fatal-error-c1089.md - - name: Fatal error C1090 - href: compiler-errors-1/fatal-error-c1090.md - - name: Fatal error C1091 - href: compiler-errors-1/fatal-error-c1091.md - - name: Fatal error C1092 - href: compiler-errors-1/fatal-error-c1092.md - - name: Fatal error C1093 - href: compiler-errors-1/fatal-error-c1093.md - - name: Fatal error C1094 - href: compiler-errors-1/fatal-error-c1094.md - - name: Fatal error C1098 - href: compiler-errors-1/fatal-error-c1098.md - - name: Fatal error C1099 - href: compiler-errors-1/fatal-error-c1099.md - - name: Fatal error C1100 - href: compiler-errors-1/fatal-error-c1100.md - - name: Fatal error C1103 - href: compiler-errors-1/fatal-error-c1103.md - - name: Fatal error C1104 - href: compiler-errors-1/fatal-error-c1104.md - - name: Fatal error C1107 - href: compiler-errors-1/fatal-error-c1107.md - - name: Fatal error C1108 - href: compiler-errors-1/fatal-error-c1108.md - - name: Fatal error C1109 - href: compiler-errors-1/fatal-error-c1109.md - - name: Fatal error C1113 - href: compiler-errors-1/fatal-error-c1113.md - - name: Fatal error C1116 - href: compiler-errors-1/fatal-error-c1116.md - - name: Fatal error C1117 - href: compiler-errors-1/fatal-error-c1117.md - - name: Fatal error C1120 - href: compiler-errors-1/fatal-error-c1120.md - - name: Fatal error C1121 - href: compiler-errors-1/fatal-error-c1121.md - - name: Fatal error C1126 - href: compiler-errors-1/fatal-error-c1126.md - - name: Fatal error C1128 - href: compiler-errors-1/fatal-error-c1128.md - - name: Fatal error C1189 - href: compiler-errors-1/fatal-error-c1189.md - - name: Fatal error C1190 - href: compiler-errors-1/fatal-error-c1190.md - - name: Fatal error C1191 - href: compiler-errors-1/fatal-error-c1191.md - - name: Fatal error C1192 - href: compiler-errors-1/fatal-error-c1192.md - - name: Fatal error C1196 - href: compiler-errors-1/fatal-error-c1196.md - - name: Fatal error C1197 - href: compiler-errors-1/fatal-error-c1197.md - - name: Fatal error C1201 - href: compiler-errors-1/fatal-error-c1201.md - - name: Fatal error C1202 - href: compiler-errors-1/fatal-error-c1202.md - - name: Fatal error C1205 - href: compiler-errors-1/fatal-error-c1205.md - - name: Fatal error C1206 - href: compiler-errors-1/fatal-error-c1206.md - - name: Fatal error C1207 - href: compiler-errors-1/fatal-error-c1207.md - - name: Fatal error C1208 - href: compiler-errors-1/fatal-error-c1208.md - - name: Fatal error C1209 - href: compiler-errors-1/fatal-error-c1209.md - - name: Fatal error C1210 - href: compiler-errors-1/fatal-error-c1210.md - - name: Fatal error C1211 - href: compiler-errors-1/fatal-error-c1211.md - - name: Fatal error C1305 - href: compiler-errors-1/fatal-error-c1305.md - - name: Fatal error C1307 - href: compiler-errors-1/fatal-error-c1307.md - - name: Fatal error C1308 - href: compiler-errors-1/fatal-error-c1308.md - - name: Fatal error C1309 - href: compiler-errors-1/fatal-error-c1309.md - - name: Fatal error C1310 - href: compiler-errors-1/fatal-error-c1310.md - - name: Fatal error C1311 - href: compiler-errors-1/fatal-error-c1311.md - - name: Fatal error C1312 - href: compiler-errors-1/fatal-error-c1312.md - - name: Fatal error C1313 - href: compiler-errors-1/fatal-error-c1313.md - - name: Fatal error C1350 - href: compiler-errors-1/fatal-error-c1350.md - - name: Fatal error C1351 - href: compiler-errors-1/fatal-error-c1351.md - - name: Fatal error C1352 - href: compiler-errors-1/fatal-error-c1352.md - - name: Fatal error C1353 - href: compiler-errors-1/fatal-error-c1353.md - - name: Fatal error C1382 - href: compiler-errors-1/fatal-error-c1382.md - - name: Fatal error C1383 - href: compiler-errors-1/fatal-error-c1383.md - - name: Fatal error C1506 - href: compiler-errors-1/fatal-error-c1506.md - - name: Fatal error C1508 - href: compiler-errors-1/fatal-error-c1508.md - - name: Fatal error C1509 - href: compiler-errors-1/fatal-error-c1509.md - - name: Fatal error C1510 - href: compiler-errors-1/fatal-error-c1510.md - - name: Fatal error C1601 - href: compiler-errors-1/fatal-error-c1601.md - - name: Fatal error C1602 - href: compiler-errors-1/fatal-error-c1602.md - - name: Fatal error C1603 - href: compiler-errors-1/fatal-error-c1603.md - - name: Fatal error C1852 - href: compiler-errors-1/fatal-error-c1852.md - - name: Fatal error C1853 - href: compiler-errors-1/fatal-error-c1853.md - - name: Fatal error C1854 - href: compiler-errors-1/fatal-error-c1854.md - - name: Fatal error C1900 - href: compiler-errors-1/fatal-error-c1900.md - - name: Fatal error C1902 - href: compiler-errors-1/fatal-error-c1902.md - - name: Fatal error C1903 - href: compiler-errors-1/fatal-error-c1903.md - - name: Fatal error C1904 - href: compiler-errors-1/fatal-error-c1904.md - - name: Fatal error C1905 - href: compiler-errors-1/fatal-error-c1905.md -- name: Compiler errors - expanded: false - items: - - name: Compiler errors C2000 - C3999, C7000 - C7999 - href: compiler-errors-1/compiler-errors-c2000-c3999.md - - name: Compiler errors C2000 through C2099 - expanded: false - items: - - name: Compiler errors C2000 through C2099 - href: compiler-errors-1/compiler-errors-c2001-through-c2099.md - - name: Compiler error C2001 - href: compiler-errors-1/compiler-error-c2001.md - - name: Compiler error C2002 - href: compiler-errors-1/compiler-error-c2002.md - - name: Compiler error C2003 - href: compiler-errors-1/compiler-error-c2003.md - - name: Compiler error C2004 - href: compiler-errors-1/compiler-error-c2004.md - - name: Compiler error C2005 - href: compiler-errors-1/compiler-error-c2005.md - - name: Compiler error C2006 - href: compiler-errors-1/compiler-error-c2006.md - - name: Compiler error C2007 - href: compiler-errors-1/compiler-error-c2007.md - - name: Compiler error C2008 - href: compiler-errors-1/compiler-error-c2008.md - - name: Compiler error C2009 - href: compiler-errors-1/compiler-error-c2009.md - - name: Compiler error C2010 - href: compiler-errors-1/compiler-error-c2010.md - - name: Compiler error C2011 - href: compiler-errors-1/compiler-error-c2011.md - - name: Compiler error C2012 - href: compiler-errors-1/compiler-error-c2012.md - - name: Compiler error C2013 - href: compiler-errors-1/compiler-error-c2013.md - - name: Compiler error C2014 - href: compiler-errors-1/compiler-error-c2014.md - - name: Compiler error C2015 - href: compiler-errors-1/compiler-error-c2015.md - - name: Compiler error C2016 - href: compiler-errors-1/compiler-error-c2016.md - - name: Compiler error C2017 - href: compiler-errors-1/compiler-error-c2017.md - - name: Compiler error C2018 - href: compiler-errors-1/compiler-error-c2018.md - - name: Compiler error C2019 - href: compiler-errors-1/compiler-error-c2019.md - - name: Compiler error C2020 - href: compiler-errors-1/compiler-error-c2020.md - - name: Compiler error C2021 - href: compiler-errors-1/compiler-error-c2021.md - - name: Compiler error C2022 - href: compiler-errors-1/compiler-error-c2022.md - - name: Compiler error C2023 - href: compiler-errors-1/compiler-error-c2023.md - - name: Compiler error C2024 - href: compiler-errors-1/compiler-error-c2024.md - - name: Compiler error C2025 - href: compiler-errors-1/compiler-error-c2025.md - - name: Compiler error C2026 - href: compiler-errors-1/compiler-error-c2026.md - - name: Compiler error C2027 - href: compiler-errors-1/compiler-error-c2027.md - - name: Compiler error C2028 - href: compiler-errors-1/compiler-error-c2028.md - - name: Compiler error C2030 - href: compiler-errors-1/compiler-error-c2030.md - - name: Compiler error C2031 - href: compiler-errors-1/compiler-error-c2031.md - - name: Compiler error C2032 - href: compiler-errors-1/compiler-error-c2032.md - - name: Compiler error C2033 - href: compiler-errors-1/compiler-error-c2033.md - - name: Compiler error C2034 - href: compiler-errors-1/compiler-error-c2034.md - - name: Compiler error C2035 - href: compiler-errors-1/compiler-error-c2035.md - - name: Compiler error C2036 - href: compiler-errors-1/compiler-error-c2036.md - - name: Compiler error C2037 - href: compiler-errors-1/compiler-error-c2037.md - - name: Compiler error C2038 - href: compiler-errors-1/compiler-error-c2038.md - - name: Compiler error C2039 - href: compiler-errors-1/compiler-error-c2039.md - - name: Compiler error C2040 - href: compiler-errors-1/compiler-error-c2040.md - - name: Compiler error C2041 - href: compiler-errors-1/compiler-error-c2041.md - - name: Compiler error C2042 - href: compiler-errors-1/compiler-error-c2042.md - - name: Compiler error C2043 - href: compiler-errors-1/compiler-error-c2043.md - - name: Compiler error C2044 - href: compiler-errors-1/compiler-error-c2044.md - - name: Compiler error C2045 - href: compiler-errors-1/compiler-error-c2045.md - - name: Compiler error C2046 - href: compiler-errors-1/compiler-error-c2046.md - - name: Compiler error C2047 - href: compiler-errors-1/compiler-error-c2047.md - - name: Compiler error C2048 - href: compiler-errors-1/compiler-error-c2048.md - - name: Compiler error C2049 - href: compiler-errors-1/compiler-error-c2049.md - - name: Compiler error C2050 - href: compiler-errors-1/compiler-error-c2050.md - - name: Compiler error C2051 - href: compiler-errors-1/compiler-error-c2051.md - - name: Compiler error C2052 - href: compiler-errors-1/compiler-error-c2052.md - - name: Compiler error C2053 - href: compiler-errors-1/compiler-error-c2053.md - - name: Compiler error C2054 - href: compiler-errors-1/compiler-error-c2054.md - - name: Compiler error C2055 - href: compiler-errors-1/compiler-error-c2055.md - - name: Compiler error C2056 - href: compiler-errors-1/compiler-error-c2056.md - - name: Compiler error C2057 - href: compiler-errors-1/compiler-error-c2057.md - - name: Compiler error C2058 - href: compiler-errors-1/compiler-error-c2058.md - - name: Compiler error C2059 - href: compiler-errors-1/compiler-error-c2059.md - - name: Compiler error C2060 - href: compiler-errors-1/compiler-error-c2060.md - - name: Compiler error C2061 - href: compiler-errors-1/compiler-error-c2061.md - - name: Compiler error C2062 - href: compiler-errors-1/compiler-error-c2062.md - - name: Compiler error C2063 - href: compiler-errors-1/compiler-error-c2063.md - - name: Compiler error C2064 - href: compiler-errors-1/compiler-error-c2064.md - - name: Compiler error C2065 - href: compiler-errors-1/compiler-error-c2065.md - - name: Compiler error C2066 - href: compiler-errors-1/compiler-error-c2066.md - - name: Compiler error C2067 - href: compiler-errors-1/compiler-error-c2067.md - - name: Compiler error C2068 - href: compiler-errors-1/compiler-error-c2068.md - - name: Compiler error C2069 - href: compiler-errors-1/compiler-error-c2069.md - - name: Compiler error C2070 - href: compiler-errors-1/compiler-error-c2070.md - - name: Compiler error C2071 - href: compiler-errors-1/compiler-error-c2071.md - - name: Compiler error C2072 - href: compiler-errors-1/compiler-error-c2072.md - - name: Compiler error C2073 - href: compiler-errors-1/compiler-error-c2073.md - - name: Compiler error C2074 - href: compiler-errors-1/compiler-error-c2074.md - - name: Compiler error C2075 - href: compiler-errors-1/compiler-error-c2075.md - - name: Compiler error C2076 - href: compiler-errors-1/compiler-error-c2076.md - - name: Compiler error C2077 - href: compiler-errors-1/compiler-error-c2077.md - - name: Compiler error C2078 - href: compiler-errors-1/compiler-error-c2078.md - - name: Compiler error C2079 - href: compiler-errors-1/compiler-error-c2079.md - - name: Compiler error C2080 - href: compiler-errors-1/compiler-error-c2080.md - - name: Compiler error C2081 - href: compiler-errors-1/compiler-error-c2081.md - - name: Compiler error C2082 - href: compiler-errors-1/compiler-error-c2082.md - - name: Compiler error C2083 - href: compiler-errors-1/compiler-error-c2083.md - - name: Compiler error C2084 - href: compiler-errors-1/compiler-error-c2084.md - - name: Compiler error C2085 - href: compiler-errors-1/compiler-error-c2085.md - - name: Compiler error C2086 - href: compiler-errors-1/compiler-error-c2086.md - - name: Compiler error C2087 - href: compiler-errors-1/compiler-error-c2087.md - - name: Compiler error C2088 - href: compiler-errors-1/compiler-error-c2088.md - - name: Compiler error C2089 - href: compiler-errors-1/compiler-error-c2089.md - - name: Compiler error C2090 - href: compiler-errors-1/compiler-error-c2090.md - - name: Compiler error C2091 - href: compiler-errors-1/compiler-error-c2091.md - - name: Compiler error C2092 - href: compiler-errors-1/compiler-error-c2092.md - - name: Compiler error C2093 - href: compiler-errors-1/compiler-error-c2093.md - - name: Compiler error C2094 - href: compiler-errors-1/compiler-error-c2094.md - - name: Compiler error C2095 - href: compiler-errors-1/compiler-error-c2095.md - - name: Compiler error C2096 - href: compiler-errors-1/compiler-error-c2096.md - - name: Compiler error C2097 - href: compiler-errors-1/compiler-error-c2097.md - - name: Compiler error C2098 - href: compiler-errors-1/compiler-error-c2098.md - - name: Compiler error C2099 - href: compiler-errors-1/compiler-error-c2099.md - - name: Compiler errors C2100 through C2199 - expanded: false - items: - - name: Compiler errors C2100 through C2199 - href: compiler-errors-1/compiler-errors-c2100-through-c2199.md - - name: Compiler error C2100 - href: compiler-errors-1/compiler-error-c2100.md - - name: Compiler error C2101 - href: compiler-errors-1/compiler-error-c2101.md - - name: Compiler error C2102 - href: compiler-errors-1/compiler-error-c2102.md - - name: Compiler error C2103 - href: compiler-errors-1/compiler-error-c2103.md - - name: Compiler error C2104 - href: compiler-errors-1/compiler-error-c2104.md - - name: Compiler error C2105 - href: compiler-errors-1/compiler-error-c2105.md - - name: Compiler error C2106 - href: compiler-errors-1/compiler-error-c2106.md - - name: Compiler error C2107 - href: compiler-errors-1/compiler-error-c2107.md - - name: Compiler error C2108 - href: compiler-errors-1/compiler-error-c2108.md - - name: Compiler error C2109 - href: compiler-errors-1/compiler-error-c2109.md - - name: Compiler error C2110 - href: compiler-errors-1/compiler-error-c2110.md - - name: Compiler error C2111 - href: compiler-errors-1/compiler-error-c2111.md - - name: Compiler error C2112 - href: compiler-errors-1/compiler-error-c2112.md - - name: Compiler error C2113 - href: compiler-errors-1/compiler-error-c2113.md - - name: Compiler error C2114 - href: compiler-errors-1/compiler-error-c2114.md - - name: Compiler error C2115 - href: compiler-errors-1/compiler-error-c2115.md - - name: Compiler error C2116 - href: compiler-errors-1/compiler-error-c2116.md - - name: Compiler error C2117 - href: compiler-errors-1/compiler-error-c2117.md - - name: Compiler error C2118 - href: compiler-errors-1/compiler-error-c2118.md - - name: Compiler error C2120 - href: compiler-errors-1/compiler-error-c2120.md - - name: Compiler error C2121 - href: compiler-errors-1/compiler-error-c2121.md - - name: Compiler error C2122 - href: compiler-errors-1/compiler-error-c2122.md - - name: Compiler error C2124 - href: compiler-errors-1/compiler-error-c2124.md - - name: Compiler error C2128 - href: compiler-errors-1/compiler-error-c2128.md - - name: Compiler error C2129 - href: compiler-errors-1/compiler-error-c2129.md - - name: Compiler error C2130 - href: compiler-errors-1/compiler-error-c2130.md - - name: Compiler error C2131 - href: compiler-errors-1/compiler-error-c2131.md - - name: Compiler error C2132 - href: compiler-errors-1/compiler-error-c2132.md - - name: Compiler error C2133 - href: compiler-errors-1/compiler-error-c2133.md - - name: Compiler error C2134 - href: compiler-errors-1/compiler-error-c2134.md - - name: Compiler error C2135 - href: compiler-errors-1/compiler-error-c2135.md - - name: Compiler error C2137 - href: compiler-errors-1/compiler-error-c2137.md - - name: Compiler error C2138 - href: compiler-errors-1/compiler-error-c2138.md - - name: Compiler error C2139 - href: compiler-errors-1/compiler-error-c2139.md - - name: Compiler error C2140 - href: compiler-errors-1/compiler-error-c2140.md - - name: Compiler error C2141 - href: compiler-errors-1/compiler-error-c2141.md - - name: Compiler error C2142 - href: compiler-errors-1/compiler-error-c2142.md - - name: Compiler error C2143 - href: compiler-errors-1/compiler-error-c2143.md - - name: Compiler error C2144 - href: compiler-errors-1/compiler-error-c2144.md - - name: Compiler error C2145 - href: compiler-errors-1/compiler-error-c2145.md - - name: Compiler error C2146 - href: compiler-errors-1/compiler-error-c2146.md - - name: Compiler error C2147 - href: compiler-errors-1/compiler-error-c2147.md - - name: Compiler error C2148 - href: compiler-errors-1/compiler-error-c2148.md - - name: Compiler error C2149 - href: compiler-errors-1/compiler-error-c2149.md - - name: Compiler error C2150 - href: compiler-errors-1/compiler-error-c2150.md - - name: Compiler error C2151 - href: compiler-errors-1/compiler-error-c2151.md - - name: Compiler error C2152 - href: compiler-errors-1/compiler-error-c2152.md - - name: Compiler error C2153 - href: compiler-errors-1/compiler-error-c2153.md - - name: Compiler error C2154 - href: compiler-errors-1/compiler-error-c2154.md - - name: Compiler error C2155 - href: compiler-errors-1/compiler-error-c2155.md - - name: Compiler error C2156 - href: compiler-errors-1/compiler-error-c2156.md - - name: Compiler error C2157 - href: compiler-errors-1/compiler-error-c2157.md - - name: Compiler error C2158 - href: compiler-errors-1/compiler-error-c2158.md - - name: Compiler error C2159 - href: compiler-errors-1/compiler-error-c2159.md - - name: Compiler error C2160 - href: compiler-errors-1/compiler-error-c2160.md - - name: Compiler error C2161 - href: compiler-errors-1/compiler-error-c2161.md - - name: Compiler error C2162 - href: compiler-errors-1/compiler-error-c2162.md - - name: Compiler error C2163 - href: compiler-errors-1/compiler-error-c2163.md - - name: Compiler error C2164 - href: compiler-errors-1/compiler-error-c2164.md - - name: Compiler error C2165 - href: compiler-errors-1/compiler-error-c2165.md - - name: Compiler error C2166 - href: compiler-errors-1/compiler-error-c2166.md - - name: Compiler error C2167 - href: compiler-errors-1/compiler-error-c2167.md - - name: Compiler error C2168 - href: compiler-errors-1/compiler-error-c2168.md - - name: Compiler error C2169 - href: compiler-errors-1/compiler-error-c2169.md - - name: Compiler error C2170 - href: compiler-errors-1/compiler-error-c2170.md - - name: Compiler error C2171 - href: compiler-errors-1/compiler-error-c2171.md - - name: Compiler error C2172 - href: compiler-errors-1/compiler-error-c2172.md - - name: Compiler error C2173 - href: compiler-errors-1/compiler-error-c2173.md - - name: Compiler error C2174 - href: compiler-errors-1/compiler-error-c2174.md - - name: Compiler error C2175 - href: compiler-errors-1/compiler-error-c2175.md - - name: Compiler error C2177 - href: compiler-errors-1/compiler-error-c2177.md - - name: Compiler error C2178 - href: compiler-errors-1/compiler-error-c2178.md - - name: Compiler error C2179 - href: compiler-errors-1/compiler-error-c2179.md - - name: Compiler error C2180 - href: compiler-errors-1/compiler-error-c2180.md - - name: Compiler error C2181 - href: compiler-errors-1/compiler-error-c2181.md - - name: Compiler error C2182 - href: compiler-errors-1/compiler-error-c2182.md - - name: Compiler error C2183 - href: compiler-errors-1/compiler-error-c2183.md - - name: Compiler error C2184 - href: compiler-errors-1/compiler-error-c2184.md - - name: Compiler error C2185 - href: compiler-errors-1/compiler-error-c2185.md - - name: Compiler error C2186 - href: compiler-errors-1/compiler-error-c2186.md - - name: Compiler error C2188 - href: compiler-errors-1/compiler-error-c2188.md - - name: Compiler error C2190 - href: compiler-errors-1/compiler-error-c2190.md - - name: Compiler error C2191 - href: compiler-errors-1/compiler-error-c2191.md - - name: Compiler error C2192 - href: compiler-errors-1/compiler-error-c2192.md - - name: Compiler error C2193 - href: compiler-errors-1/compiler-error-c2193.md - - name: Compiler error C2194 - href: compiler-errors-1/compiler-error-c2194.md - - name: Compiler error C2195 - href: compiler-errors-1/compiler-error-c2195.md - - name: Compiler error C2196 - href: compiler-errors-1/compiler-error-c2196.md - - name: Compiler error C2197 - href: compiler-errors-1/compiler-error-c2197.md - - name: Compiler error C2198 - href: compiler-errors-1/compiler-error-c2198.md - - name: Compiler error C2199 - href: compiler-errors-1/compiler-error-c2199.md - - name: Compiler errors C2200 through C2299 - expanded: false - items: - - name: Compiler errors C2200 through C2299 - href: compiler-errors-1/compiler-errors-c2200-through-c2299.md - - name: Compiler error C2200 - href: compiler-errors-1/compiler-error-c2200.md - - name: Compiler error C2201 - href: compiler-errors-1/compiler-error-c2201.md - - name: Compiler error C2203 - href: compiler-errors-1/compiler-error-c2203.md - - name: Compiler error C2204 - href: compiler-errors-1/compiler-error-c2204.md - - name: Compiler error C2205 - href: compiler-errors-1/compiler-error-c2205.md - - name: Compiler error C2206 - href: compiler-errors-1/compiler-error-c2206.md - - name: Compiler error C2207 - href: compiler-errors-1/compiler-error-c2207.md - - name: Compiler error C2208 - href: compiler-errors-1/compiler-error-c2208.md - - name: Compiler error C2212 - href: compiler-errors-1/compiler-error-c2212.md - - name: Compiler error C2213 - href: compiler-errors-1/compiler-error-c2213.md - - name: Compiler error C2216 - href: compiler-errors-1/compiler-error-c2216.md - - name: Compiler error C2217 - href: compiler-errors-1/compiler-error-c2217.md - - name: Compiler error C2218 - href: compiler-errors-1/compiler-error-c2218.md - - name: Compiler error C2219 - href: compiler-errors-1/compiler-error-c2219.md - - name: Compiler error C2220 - href: compiler-errors-1/compiler-error-c2220.md - - name: Compiler error C2222 - href: compiler-errors-1/compiler-error-c2222.md - - name: Compiler error C2223 - href: compiler-errors-1/compiler-error-c2223.md - - name: Compiler error C2224 - href: compiler-errors-1/compiler-error-c2224.md - - name: Compiler error C2226 - href: compiler-errors-1/compiler-error-c2226.md - - name: Compiler error C2227 - href: compiler-errors-1/compiler-error-c2227.md - - name: Compiler error C2228 - href: compiler-errors-1/compiler-error-c2228.md - - name: Compiler error C2229 - href: compiler-errors-1/compiler-error-c2229.md - - name: Compiler error C2231 - href: compiler-errors-1/compiler-error-c2231.md - - name: Compiler error C2232 - href: compiler-errors-1/compiler-error-c2232.md - - name: Compiler error C2233 - href: compiler-errors-1/compiler-error-c2233.md - - name: Compiler error C2234 - href: compiler-errors-1/compiler-error-c2234.md - - name: Compiler error C2236 - href: compiler-errors-1/compiler-error-c2236.md - - name: Compiler error C2238 - href: compiler-errors-1/compiler-error-c2238.md - - name: Compiler error C2241 - href: compiler-errors-1/compiler-error-c2241.md - - name: Compiler error C2242 - href: compiler-errors-1/compiler-error-c2242.md - - name: Compiler error C2243 - href: compiler-errors-1/compiler-error-c2243.md - - name: Compiler error C2244 - href: compiler-errors-1/compiler-error-c2244.md - - name: Compiler error C2245 - href: compiler-errors-1/compiler-error-c2245.md - - name: Compiler error C2246 - href: compiler-errors-1/compiler-error-c2246.md - - name: Compiler error C2247 - href: compiler-errors-1/compiler-error-c2247.md - - name: Compiler error C2248 - href: compiler-errors-1/compiler-error-c2248.md - - name: Compiler error C2249 - href: compiler-errors-1/compiler-error-c2249.md - - name: Compiler error C2250 - href: compiler-errors-1/compiler-error-c2250.md - - name: Compiler error C2251 - href: compiler-errors-1/compiler-error-c2251.md - - name: Compiler error C2252 - href: compiler-errors-1/compiler-error-c2252.md - - name: Compiler error C2253 - href: compiler-errors-1/compiler-error-c2253.md - - name: Compiler error C2254 - href: compiler-errors-1/compiler-error-c2254.md - - name: Compiler error C2255 - href: compiler-errors-1/compiler-error-c2255.md - - name: Compiler error C2256 - href: compiler-errors-1/compiler-error-c2256.md - - name: Compiler error C2258 - href: compiler-errors-1/compiler-error-c2258.md - - name: Compiler error C2259 - href: compiler-errors-1/compiler-error-c2259.md - - name: Compiler error C2261 - href: compiler-errors-1/compiler-error-c2261.md - - name: Compiler error C2262 - href: compiler-errors-1/compiler-error-c2262.md - - name: Compiler error C2264 - href: compiler-errors-1/compiler-error-c2264.md - - name: Compiler error C2266 - href: compiler-errors-1/compiler-error-c2266.md - - name: Compiler error C2267 - href: compiler-errors-1/compiler-error-c2267.md - - name: Compiler error C2268 - href: compiler-errors-1/compiler-error-c2268.md - - name: Compiler error C2270 - href: compiler-errors-1/compiler-error-c2270.md - - name: Compiler error C2271 - href: compiler-errors-1/compiler-error-c2271.md - - name: Compiler error C2272 - href: compiler-errors-1/compiler-error-c2272.md - - name: Compiler error C2273 - href: compiler-errors-1/compiler-error-c2273.md - - name: Compiler error C2274 - href: compiler-errors-1/compiler-error-c2274.md - - name: Compiler error C2275 - href: compiler-errors-1/compiler-error-c2275.md - - name: Compiler error C2276 - href: compiler-errors-1/compiler-error-c2276.md - - name: Compiler error C2277 - href: compiler-errors-1/compiler-error-c2277.md - - name: Compiler error C2279 - href: compiler-errors-1/compiler-error-c2279.md - - name: Compiler error C2280 - href: compiler-errors-1/compiler-error-c2280.md - - name: Compiler error C2283 - href: compiler-errors-1/compiler-error-c2283.md - - name: Compiler error C2285 - href: compiler-errors-1/compiler-error-c2285.md - - name: Compiler error C2286 - href: compiler-errors-1/compiler-error-c2286.md - - name: Compiler error C2287 - href: compiler-errors-1/compiler-error-c2287.md - - name: Compiler error C2289 - href: compiler-errors-1/compiler-error-c2289.md - - name: Compiler error C2290 - href: compiler-errors-1/compiler-error-c2290.md - - name: Compiler error C2292 - href: compiler-errors-1/compiler-error-c2292.md - - name: Compiler error C2293 - href: compiler-errors-1/compiler-error-c2293.md - - name: Compiler error C2295 - href: compiler-errors-1/compiler-error-c2295.md - - name: Compiler error C2296 - href: compiler-errors-1/compiler-error-c2296.md - - name: Compiler error C2297 - href: compiler-errors-1/compiler-error-c2297.md - - name: Compiler error C2298 - href: compiler-errors-1/compiler-error-c2298.md - - name: Compiler error C2299 - href: compiler-errors-1/compiler-error-c2299.md - - name: Compiler errors C2300 through C2399 - expanded: false - items: - - name: Compiler errors C2300 through C2399 - href: compiler-errors-1/compiler-errors-c2300-through-c2399.md - - name: Compiler error C2300 - href: compiler-errors-1/compiler-error-c2300.md - - name: Compiler error C2301 - href: compiler-errors-1/compiler-error-c2301.md - - name: Compiler error C2302 - href: compiler-errors-1/compiler-error-c2302.md - - name: Compiler error C2307 - href: compiler-errors-1/compiler-error-c2307.md - - name: Compiler error C2308 - href: compiler-errors-1/compiler-error-c2308.md - - name: Compiler error C2309 - href: compiler-errors-1/compiler-error-c2309.md - - name: Compiler error C2310 - href: compiler-errors-1/compiler-error-c2310.md - - name: Compiler error C2311 - href: compiler-errors-1/compiler-error-c2311.md - - name: Compiler error C2312 - href: compiler-errors-1/compiler-error-c2312.md - - name: Compiler error C2313 - href: compiler-errors-1/compiler-error-c2313.md - - name: Compiler error C2315 - href: compiler-errors-1/compiler-error-c2315.md - - name: Compiler error C2316 - href: compiler-errors-1/compiler-error-c2316.md - - name: Compiler error C2317 - href: compiler-errors-1/compiler-error-c2317.md - - name: Compiler error C2318 - href: compiler-errors-1/compiler-error-c2318.md - - name: Compiler error C2319 - href: compiler-errors-1/compiler-error-c2319.md - - name: Compiler error C2320 - href: compiler-errors-1/compiler-error-c2320.md - - name: Compiler error C2322 - href: compiler-errors-1/compiler-error-c2322.md - - name: Compiler error C2323 - href: compiler-errors-1/compiler-error-c2323.md - - name: Compiler error C2324 - href: compiler-errors-1/compiler-error-c2324.md - - name: Compiler error C2325 - href: compiler-errors-1/compiler-error-c2325.md - - name: Compiler error C2326 - href: compiler-errors-1/compiler-error-c2326.md - - name: Compiler error C2327 - href: compiler-errors-1/compiler-error-c2327.md - - name: Compiler error C2332 - href: compiler-errors-1/compiler-error-c2332.md - - name: Compiler error C2333 - href: compiler-errors-1/compiler-error-c2333.md - - name: Compiler error C2334 - href: compiler-errors-1/compiler-error-c2334.md - - name: Compiler error C2337 - href: compiler-errors-1/compiler-error-c2337.md - - name: Compiler error C2338 - href: compiler-errors-1/compiler-error-c2338.md - - name: Compiler error C2341 - href: compiler-errors-1/compiler-error-c2341.md - - name: Compiler error C2344 - href: compiler-errors-1/compiler-error-c2344.md - - name: Compiler error C2345 - href: compiler-errors-1/compiler-error-c2345.md - - name: Compiler error C2346 - href: compiler-errors-1/compiler-error-c2346.md - - name: Compiler error C2348 - href: compiler-errors-1/compiler-error-c2348.md - - name: Compiler error C2349 - href: compiler-errors-1/compiler-error-c2349.md - - name: Compiler error C2350 - href: compiler-errors-1/compiler-error-c2350.md - - name: Compiler error C2351 - href: compiler-errors-1/compiler-error-c2351.md - - name: Compiler error C2352 - href: compiler-errors-1/compiler-error-c2352.md - - name: Compiler error C2353 - href: compiler-errors-1/compiler-error-c2353.md - - name: Compiler error C2355 - href: compiler-errors-1/compiler-error-c2355.md - - name: Compiler error C2356 - href: compiler-errors-1/compiler-error-c2356.md - - name: Compiler error C2357 - href: compiler-errors-1/compiler-error-c2357.md - - name: Compiler error C2360 - href: compiler-errors-1/compiler-error-c2360.md - - name: Compiler error C2361 - href: compiler-errors-1/compiler-error-c2361.md - - name: Compiler error C2362 - href: compiler-errors-1/compiler-error-c2362.md - - name: Compiler error C2364 - href: compiler-errors-1/compiler-error-c2364.md - - name: Compiler error C2365 - href: compiler-errors-1/compiler-error-c2365.md - - name: Compiler error C2368 - href: compiler-errors-1/compiler-error-c2368.md - - name: Compiler error C2369 - href: compiler-errors-1/compiler-error-c2369.md - - name: Compiler error C2370 - href: compiler-errors-1/compiler-error-c2370.md - - name: Compiler error C2371 - href: compiler-errors-1/compiler-error-c2371.md - - name: Compiler error C2372 - href: compiler-errors-1/compiler-error-c2372.md - - name: Compiler error C2373 - href: compiler-errors-1/compiler-error-c2373.md - - name: Compiler error C2374 - href: compiler-errors-1/compiler-error-c2374.md - - name: Compiler error C2375 - href: compiler-errors-1/compiler-error-c2375.md - - name: Compiler error C2376 - href: compiler-errors-1/compiler-error-c2376.md - - name: Compiler error C2377 - href: compiler-errors-1/compiler-error-c2377.md - - name: Compiler error C2378 - href: compiler-errors-1/compiler-error-c2378.md - - name: Compiler error C2379 - href: compiler-errors-1/compiler-error-c2379.md - - name: Compiler error C2380 - href: compiler-errors-1/compiler-error-c2380.md - - name: Compiler error C2381 - href: compiler-errors-1/compiler-error-c2381.md - - name: Compiler error C2382 - href: compiler-errors-1/compiler-error-c2382.md - - name: Compiler error C2383 - href: compiler-errors-1/compiler-error-c2383.md - - name: Compiler error C2384 - href: compiler-errors-1/compiler-error-c2384.md - - name: Compiler error C2385 - href: compiler-errors-1/compiler-error-c2385.md - - name: Compiler error C2386 - href: compiler-errors-1/compiler-error-c2386.md - - name: Compiler error C2387 - href: compiler-errors-1/compiler-error-c2387.md - - name: Compiler error C2388 - href: compiler-errors-1/compiler-error-c2388.md - - name: Compiler error C2389 - href: compiler-errors-1/compiler-error-c2389.md - - name: Compiler error C2390 - href: compiler-errors-1/compiler-error-c2390.md - - name: Compiler error C2391 - href: compiler-errors-1/compiler-error-c2391.md - - name: Compiler error C2392 - href: compiler-errors-1/compiler-error-c2392.md - - name: Compiler error C2393 - href: compiler-errors-1/compiler-error-c2393.md - - name: Compiler error C2394 - href: compiler-errors-1/compiler-error-c2394.md - - name: Compiler error C2395 - href: compiler-errors-1/compiler-error-c2395.md - - name: Compiler error C2396 - href: compiler-errors-1/compiler-error-c2396.md - - name: Compiler error C2397 - href: compiler-errors-1/compiler-error-c2397.md - - name: Compiler errors C2400 through C2499 - expanded: false - items: - - name: Compiler errors C2400 through C2499 - href: compiler-errors-1/compiler-errors-c2400-through-c2499.md - - name: Compiler error C2400 - href: compiler-errors-1/compiler-error-c2400.md - - name: Compiler error C2401 - href: compiler-errors-1/compiler-error-c2401.md - - name: Compiler error C2402 - href: compiler-errors-1/compiler-error-c2402.md - - name: Compiler error C2403 - href: compiler-errors-1/compiler-error-c2403.md - - name: Compiler error C2404 - href: compiler-errors-1/compiler-error-c2404.md - - name: Compiler error C2405 - href: compiler-errors-1/compiler-error-c2405.md - - name: Compiler error C2406 - href: compiler-errors-1/compiler-error-c2406.md - - name: Compiler error C2407 - href: compiler-errors-1/compiler-error-c2407.md - - name: Compiler error C2408 - href: compiler-errors-1/compiler-error-c2408.md - - name: Compiler error C2409 - href: compiler-errors-1/compiler-error-c2409.md - - name: Compiler error C2410 - href: compiler-errors-1/compiler-error-c2410.md - - name: Compiler error C2411 - href: compiler-errors-1/compiler-error-c2411.md - - name: Compiler error C2412 - href: compiler-errors-1/compiler-error-c2412.md - - name: Compiler error C2413 - href: compiler-errors-1/compiler-error-c2413.md - - name: Compiler error C2414 - href: compiler-errors-1/compiler-error-c2414.md - - name: Compiler error C2415 - href: compiler-errors-1/compiler-error-c2415.md - - name: Compiler error C2417 - href: compiler-errors-1/compiler-error-c2417.md - - name: Compiler error C2418 - href: compiler-errors-1/compiler-error-c2418.md - - name: Compiler error C2419 - href: compiler-errors-1/compiler-error-c2419.md - - name: Compiler error C2420 - href: compiler-errors-1/compiler-error-c2420.md - - name: Compiler error C2421 - href: compiler-errors-1/compiler-error-c2421.md - - name: Compiler error C2422 - href: compiler-errors-1/compiler-error-c2422.md - - name: Compiler error C2423 - href: compiler-errors-1/compiler-error-c2423.md - - name: Compiler error C2424 - href: compiler-errors-1/compiler-error-c2424.md - - name: Compiler error C2425 - href: compiler-errors-1/compiler-error-c2425.md - - name: Compiler error C2426 - href: compiler-errors-1/compiler-error-c2426.md - - name: Compiler error C2427 - href: compiler-errors-1/compiler-error-c2427.md - - name: Compiler error C2428 - href: compiler-errors-1/compiler-error-c2428.md - - name: Compiler error C2429 - href: compiler-errors-1/compiler-error-c2429.md - - name: Compiler error C2430 - href: compiler-errors-1/compiler-error-c2430.md - - name: Compiler error C2431 - href: compiler-errors-1/compiler-error-c2431.md - - name: Compiler error C2432 - href: compiler-errors-1/compiler-error-c2432.md - - name: Compiler error C2433 - href: compiler-errors-1/compiler-error-c2433.md - - name: Compiler error C2434 - href: compiler-errors-1/compiler-error-c2434.md - - name: Compiler error C2435 - href: compiler-errors-1/compiler-error-c2435.md - - name: Compiler error C2436 - href: compiler-errors-1/compiler-error-c2436.md - - name: Compiler error C2437 - href: compiler-errors-1/compiler-error-c2437.md - - name: Compiler error C2438 - href: compiler-errors-1/compiler-error-c2438.md - - name: Compiler error C2439 - href: compiler-errors-1/compiler-error-c2439.md - - name: Compiler error C2440 - href: compiler-errors-1/compiler-error-c2440.md - - name: Compiler error C2441 - href: compiler-errors-1/compiler-error-c2441.md - - name: Compiler error C2443 - href: compiler-errors-1/compiler-error-c2443.md - - name: Compiler error C2444 - href: compiler-errors-1/compiler-error-c2444.md - - name: Compiler error C2446 - href: compiler-errors-1/compiler-error-c2446.md - - name: Compiler error C2447 - href: compiler-errors-1/compiler-error-c2447.md - - name: Compiler error C2448 - href: compiler-errors-1/compiler-error-c2448.md - - name: Compiler error C2449 - href: compiler-errors-1/compiler-error-c2449.md - - name: Compiler error C2450 - href: compiler-errors-1/compiler-error-c2450.md - - name: Compiler error C2451 - href: compiler-errors-1/compiler-error-c2451.md - - name: Compiler error C2452 - href: compiler-errors-1/compiler-error-c2452.md - - name: Compiler error C2457 - href: compiler-errors-1/compiler-error-c2457.md - - name: Compiler error C2458 - href: compiler-errors-1/compiler-error-c2458.md - - name: Compiler error C2459 - href: compiler-errors-1/compiler-error-c2459.md - - name: Compiler error C2460 - href: compiler-errors-1/compiler-error-c2460.md - - name: Compiler error C2461 - href: compiler-errors-1/compiler-error-c2461.md - - name: Compiler error C2462 - href: compiler-errors-1/compiler-error-c2462.md - - name: Compiler error C2464 - href: compiler-errors-1/compiler-error-c2464.md - - name: Compiler error C2465 - href: compiler-errors-1/compiler-error-c2465.md - - name: Compiler error C2466 - href: compiler-errors-1/compiler-error-c2466.md - - name: Compiler error C2467 - href: compiler-errors-1/compiler-error-c2467.md - - name: Compiler error C2469 - href: compiler-errors-1/compiler-error-c2469.md - - name: Compiler error C2470 - href: compiler-errors-1/compiler-error-c2470.md - - name: Compiler error C2471 - href: compiler-errors-1/compiler-error-c2471.md - - name: Compiler error C2472 - href: compiler-errors-1/compiler-error-c2472.md - - name: Compiler error C2473 - href: compiler-errors-1/compiler-error-c2473.md - - name: Compiler error C2474 - href: compiler-errors-1/compiler-error-c2474.md - - name: Compiler error C2477 - href: compiler-errors-1/compiler-error-c2477.md - - name: Compiler error C2479 - href: compiler-errors-1/compiler-error-c2479.md - - name: Compiler error C2480 - href: compiler-errors-1/compiler-error-c2480.md - - name: Compiler error C2482 - href: compiler-errors-1/compiler-error-c2482.md - - name: Compiler error C2483 - href: compiler-errors-1/compiler-error-c2483.md - - name: Compiler error C2485 - href: compiler-errors-1/compiler-error-c2485.md - - name: Compiler error C2486 - href: compiler-errors-1/compiler-error-c2486.md - - name: Compiler error C2487 - href: compiler-errors-1/compiler-error-c2487.md - - name: Compiler error C2488 - href: compiler-errors-1/compiler-error-c2488.md - - name: Compiler error C2489 - href: compiler-errors-1/compiler-error-c2489.md - - name: Compiler error C2490 - href: compiler-errors-1/compiler-error-c2490.md - - name: Compiler error C2491 - href: compiler-errors-1/compiler-error-c2491.md - - name: Compiler error C2492 - href: compiler-errors-1/compiler-error-c2492.md - - name: Compiler error C2493 - href: compiler-errors-1/compiler-error-c2493.md - - name: Compiler error C2494 - href: compiler-errors-1/compiler-error-c2494.md - - name: Compiler error C2495 - href: compiler-errors-1/compiler-error-c2495.md - - name: Compiler error C2496 - href: compiler-errors-1/compiler-error-c2496.md - - name: Compiler error C2498 - href: compiler-errors-1/compiler-error-c2498.md - - name: Compiler error C2499 - href: compiler-errors-1/compiler-error-c2499.md - - name: Compiler errors C2500 through C2599 - expanded: false - items: - - name: Compiler errors C2500 through C2599 - href: compiler-errors-2/compiler-errors-c2500-through-c2599.md - - name: Compiler error C2500 - href: compiler-errors-2/compiler-error-c2500.md - - name: Compiler error C2502 - href: compiler-errors-2/compiler-error-c2502.md - - name: Compiler error C2503 - href: compiler-errors-2/compiler-error-c2503.md - - name: Compiler error C2504 - href: compiler-errors-2/compiler-error-c2504.md - - name: Compiler error C2505 - href: compiler-errors-2/compiler-error-c2505.md - - name: Compiler error C2506 - href: compiler-errors-2/compiler-error-c2506.md - - name: Compiler error C2507 - href: compiler-errors-2/compiler-error-c2507.md - - name: Compiler error C2509 - href: compiler-errors-2/compiler-error-c2509.md - - name: Compiler error C2510 - href: compiler-errors-2/compiler-error-c2510.md - - name: Compiler error C2511 - href: compiler-errors-2/compiler-error-c2511.md - - name: Compiler error C2512 - href: compiler-errors-2/compiler-error-c2512.md - - name: Compiler error C2513 - href: compiler-errors-2/compiler-error-c2513.md - - name: Compiler error C2514 - href: compiler-errors-2/compiler-error-c2514.md - - name: Compiler error C2516 - href: compiler-errors-2/compiler-error-c2516.md - - name: Compiler error C2517 - href: compiler-errors-2/compiler-error-c2517.md - - name: Compiler error C2518 - href: compiler-errors-2/compiler-error-c2518.md - - name: Compiler error C2521 - href: compiler-errors-2/compiler-error-c2521.md - - name: Compiler error C2523 - href: compiler-errors-2/compiler-error-c2523.md - - name: Compiler error C2524 - href: compiler-errors-2/compiler-error-c2524.md - - name: Compiler error C2526 - href: compiler-errors-2/compiler-error-c2526.md - - name: Compiler error C2528 - href: compiler-errors-2/compiler-error-c2528.md - - name: Compiler error C2529 - href: compiler-errors-2/compiler-error-c2529.md - - name: Compiler error C2530 - href: compiler-errors-2/compiler-error-c2530.md - - name: Compiler error C2531 - href: compiler-errors-2/compiler-error-c2531.md - - name: Compiler error C2532 - href: compiler-errors-2/compiler-error-c2532.md - - name: Compiler error C2533 - href: compiler-errors-2/compiler-error-c2533.md - - name: Compiler error C2534 - href: compiler-errors-2/compiler-error-c2534.md - - name: Compiler error C2535 - href: compiler-errors-2/compiler-error-c2535.md - - name: Compiler error C2537 - href: compiler-errors-2/compiler-error-c2537.md - - name: Compiler error C2540 - href: compiler-errors-2/compiler-error-c2540.md - - name: Compiler error C2541 - href: compiler-errors-2/compiler-error-c2541.md - - name: Compiler error C2542 - href: compiler-errors-2/compiler-error-c2542.md - - name: Compiler error C2543 - href: compiler-errors-2/compiler-error-c2543.md - - name: Compiler error C2544 - href: compiler-errors-2/compiler-error-c2544.md - - name: Compiler error C2545 - href: compiler-errors-2/compiler-error-c2545.md - - name: Compiler error C2548 - href: compiler-errors-2/compiler-error-c2548.md - - name: Compiler error C2549 - href: compiler-errors-2/compiler-error-c2549.md - - name: Compiler error C2550 - href: compiler-errors-2/compiler-error-c2550.md - - name: Compiler error C2551 - href: compiler-errors-2/compiler-error-c2551.md - - name: Compiler error C2552 - href: compiler-errors-2/compiler-error-c2552.md - - name: Compiler error C2553 - href: compiler-errors-2/compiler-error-c2553.md - - name: Compiler error C2555 - href: compiler-errors-2/compiler-error-c2555.md - - name: Compiler error C2556 - href: compiler-errors-2/compiler-error-c2556.md - - name: Compiler error C2557 - href: compiler-errors-2/compiler-error-c2557.md - - name: Compiler error C2558 - href: compiler-errors-2/compiler-error-c2558.md - - name: Compiler error C2561 - href: compiler-errors-2/compiler-error-c2561.md - - name: Compiler error C2562 - href: compiler-errors-2/compiler-error-c2562.md - - name: Compiler error C2563 - href: compiler-errors-2/compiler-error-c2563.md - - name: Compiler error C2566 - href: compiler-errors-2/compiler-error-c2566.md - - name: Compiler error C2567 - href: compiler-errors-2/compiler-error-c2567.md - - name: Compiler error C2568 - href: compiler-errors-2/compiler-error-c2568.md - - name: Compiler error C2569 - href: compiler-errors-2/compiler-error-c2569.md - - name: Compiler error C2570 - href: compiler-errors-2/compiler-error-c2570.md - - name: Compiler error C2571 - href: compiler-errors-2/compiler-error-c2571.md - - name: Compiler error C2572 - href: compiler-errors-2/compiler-error-c2572.md - - name: Compiler error C2573 - href: compiler-errors-2/compiler-error-c2573.md - - name: Compiler error C2574 - href: compiler-errors-2/compiler-error-c2574.md - - name: Compiler error C2575 - href: compiler-errors-2/compiler-error-c2575.md - - name: Compiler error C2577 - href: compiler-errors-2/compiler-error-c2577.md - - name: Compiler error C2579 - href: compiler-errors-2/compiler-error-c2579.md - - name: Compiler error C2581 - href: compiler-errors-2/compiler-error-c2581.md - - name: Compiler error C2582 - href: compiler-errors-2/compiler-error-c2582.md - - name: Compiler error C2583 - href: compiler-errors-2/compiler-error-c2583.md - - name: Compiler error C2584 - href: compiler-errors-2/compiler-error-c2584.md - - name: Compiler error C2585 - href: compiler-errors-2/compiler-error-c2585.md - - name: Compiler error C2586 - href: compiler-errors-2/compiler-error-c2586.md - - name: Compiler error C2587 - href: compiler-errors-2/compiler-error-c2587.md - - name: Compiler error C2588 - href: compiler-errors-2/compiler-error-c2588.md - - name: Compiler error C2589 - href: compiler-errors-2/compiler-error-c2589.md - - name: Compiler error C2592 - href: compiler-errors-2/compiler-error-c2592.md - - name: Compiler error C2593 - href: compiler-errors-2/compiler-error-c2593.md - - name: Compiler error C2594 - href: compiler-errors-2/compiler-error-c2594.md - - name: Compiler error C2597 - href: compiler-errors-2/compiler-error-c2597.md - - name: Compiler error C2598 - href: compiler-errors-2/compiler-error-c2598.md - - name: Compiler error C2599 - href: compiler-errors-2/compiler-error-c2599.md - - name: Compiler errors C2600 through C2699 - expanded: false - items: - - name: Compiler errors C2600 through C2699 - href: compiler-errors-2/compiler-errors-c2600-through-c2699.md - - name: Compiler error C2600 - href: compiler-errors-2/compiler-error-c2600.md - - name: Compiler error C2601 - href: compiler-errors-2/compiler-error-c2601.md - - name: Compiler error C2602 - href: compiler-errors-2/compiler-error-c2602.md - - name: Compiler error C2603 - href: compiler-errors-2/compiler-error-c2603.md - - name: Compiler error C2605 - href: compiler-errors-2/compiler-error-c2605.md - - name: Compiler error C2611 - href: compiler-errors-2/compiler-error-c2611.md - - name: Compiler error C2612 - href: compiler-errors-2/compiler-error-c2612.md - - name: Compiler error C2613 - href: compiler-errors-2/compiler-error-c2613.md - - name: Compiler error C2614 - href: compiler-errors-2/compiler-error-c2614.md - - name: Compiler error C2616 - href: compiler-errors-2/compiler-error-c2616.md - - name: Compiler error C2617 - href: compiler-errors-2/compiler-error-c2617.md - - name: Compiler error C2619 - href: compiler-errors-2/compiler-error-c2619.md - - name: Compiler error C2624 - href: compiler-errors-2/compiler-error-c2624.md - - name: Compiler error C2626 - href: compiler-errors-2/compiler-error-c2626.md - - name: Compiler error C2627 - href: compiler-errors-2/compiler-error-c2627.md - - name: Compiler error C2628 - href: compiler-errors-2/compiler-error-c2628.md - - name: Compiler error C2630 - href: compiler-errors-2/compiler-error-c2630.md - - name: Compiler error C2632 - href: compiler-errors-2/compiler-error-c2632.md - - name: Compiler error C2633 - href: compiler-errors-2/compiler-error-c2633.md - - name: Compiler error C2634 - href: compiler-errors-2/compiler-error-c2634.md - - name: Compiler error C2635 - href: compiler-errors-2/compiler-error-c2635.md - - name: Compiler error C2636 - href: compiler-errors-2/compiler-error-c2636.md - - name: Compiler error C2637 - href: compiler-errors-2/compiler-error-c2637.md - - name: Compiler error C2638 - href: compiler-errors-2/compiler-error-c2638.md - - name: Compiler error C2640 - href: compiler-errors-2/compiler-error-c2640.md - - name: Compiler error C2645 - href: compiler-errors-2/compiler-error-c2645.md - - name: Compiler error C2646 - href: compiler-errors-2/compiler-error-c2646.md - - name: Compiler error C2647 - href: compiler-errors-2/compiler-error-c2647.md - - name: Compiler error C2648 - href: compiler-errors-2/compiler-error-c2648.md - - name: Compiler error C2649 - href: compiler-errors-2/compiler-error-c2649.md - - name: Compiler error C2650 - href: compiler-errors-2/compiler-error-c2650.md - - name: Compiler error C2651 - href: compiler-errors-2/compiler-error-c2651.md - - name: Compiler error C2652 - href: compiler-errors-2/compiler-error-c2652.md - - name: Compiler error C2653 - href: compiler-errors-2/compiler-error-c2653.md - - name: Compiler error C2654 - href: compiler-errors-2/compiler-error-c2654.md - - name: Compiler error C2655 - href: compiler-errors-2/compiler-error-c2655.md - - name: Compiler error C2656 - href: compiler-errors-2/compiler-error-c2656.md - - name: Compiler error C2657 - href: compiler-errors-2/compiler-error-c2657.md - - name: Compiler error C2658 - href: compiler-errors-2/compiler-error-c2658.md - - name: Compiler error C2659 - href: compiler-errors-2/compiler-error-c2659.md - - name: Compiler error C2660 - href: compiler-errors-2/compiler-error-c2660.md - - name: Compiler error C2661 - href: compiler-errors-2/compiler-error-c2661.md - - name: Compiler error C2662 - href: compiler-errors-2/compiler-error-c2662.md - - name: Compiler error C2663 - href: compiler-errors-2/compiler-error-c2663.md - - name: Compiler error C2664 - href: compiler-errors-2/compiler-error-c2664.md - - name: Compiler error C2665 - href: compiler-errors-2/compiler-error-c2665.md - - name: Compiler error C2666 - href: compiler-errors-2/compiler-error-c2666.md - - name: Compiler error C2667 - href: compiler-errors-2/compiler-error-c2667.md - - name: Compiler error C2668 - href: compiler-errors-2/compiler-error-c2668.md - - name: Compiler error C2669 - href: compiler-errors-2/compiler-error-c2669.md - - name: Compiler error C2670 - href: compiler-errors-2/compiler-error-c2670.md - - name: Compiler error C2671 - href: compiler-errors-2/compiler-error-c2671.md - - name: Compiler error C2672 - href: compiler-errors-2/compiler-error-c2672.md - - name: Compiler error C2673 - href: compiler-errors-2/compiler-error-c2673.md - - name: Compiler error C2674 - href: compiler-errors-2/compiler-error-c2674.md - - name: Compiler error C2675 - href: compiler-errors-2/compiler-error-c2675.md - - name: Compiler error C2676 - href: compiler-errors-2/compiler-error-c2676.md - - name: Compiler error C2677 - href: compiler-errors-2/compiler-error-c2677.md - - name: Compiler error C2678 - href: compiler-errors-2/compiler-error-c2678.md - - name: Compiler error C2679 - href: compiler-errors-2/compiler-error-c2679.md - - name: Compiler error C2680 - href: compiler-errors-2/compiler-error-c2680.md - - name: Compiler error C2681 - href: compiler-errors-2/compiler-error-c2681.md - - name: Compiler error C2682 - href: compiler-errors-2/compiler-error-c2682.md - - name: Compiler error C2683 - href: compiler-errors-2/compiler-error-c2683.md - - name: Compiler error C2687 - href: compiler-errors-2/compiler-error-c2687.md - - name: Compiler error C2688 - href: compiler-errors-2/compiler-error-c2688.md - - name: Compiler error C2689 - href: compiler-errors-2/compiler-error-c2689.md - - name: Compiler error C2690 - href: compiler-errors-2/compiler-error-c2690.md - - name: Compiler error C2691 - href: compiler-errors-2/compiler-error-c2691.md - - name: Compiler error C2692 - href: compiler-errors-2/compiler-error-c2692.md - - name: Compiler error C2693 - href: compiler-errors-2/compiler-error-c2693.md - - name: Compiler error C2694 - href: compiler-errors-2/compiler-error-c2694.md - - name: Compiler error C2695 - href: compiler-errors-2/compiler-error-c2695.md - - name: Compiler error C2696 - href: compiler-errors-2/compiler-error-c2696.md - - name: Compiler error C2698 - href: compiler-errors-2/compiler-error-c2698.md - - name: Compiler errors C2700 through C2799 - expanded: false - items: - - name: Compiler errors C2700 through C2799 - href: compiler-errors-2/compiler-errors-c2700-through-c2799.md - - name: Compiler error C2700 - href: compiler-errors-2/compiler-error-c2700.md - - name: Compiler error C2701 - href: compiler-errors-2/compiler-error-c2701.md - - name: Compiler error C2702 - href: compiler-errors-2/compiler-error-c2702.md - - name: Compiler error C2703 - href: compiler-errors-2/compiler-error-c2703.md - - name: Compiler error C2704 - href: compiler-errors-2/compiler-error-c2704.md - - name: Compiler error C2705 - href: compiler-errors-2/compiler-error-c2705.md - - name: Compiler error C2706 - href: compiler-errors-2/compiler-error-c2706.md - - name: Compiler error C2707 - href: compiler-errors-2/compiler-error-c2707.md - - name: Compiler error C2708 - href: compiler-errors-2/compiler-error-c2708.md - - name: Compiler error C2709 - href: compiler-errors-2/compiler-error-c2709.md - - name: Compiler error C2710 - href: compiler-errors-2/compiler-error-c2710.md - - name: Compiler error C2711 - href: compiler-errors-2/compiler-error-c2711.md - - name: Compiler error C2712 - href: compiler-errors-2/compiler-error-c2712.md - - name: Compiler error C2713 - href: compiler-errors-2/compiler-error-c2713.md - - name: Compiler error C2714 - href: compiler-errors-2/compiler-error-c2714.md - - name: Compiler error C2715 - href: compiler-errors-2/compiler-error-c2715.md - - name: Compiler error C2718 - href: compiler-errors-2/compiler-error-c2718.md - - name: Compiler error C2719 - href: compiler-errors-2/compiler-error-c2719.md - - name: Compiler error C2720 - href: compiler-errors-2/compiler-error-c2720.md - - name: Compiler error C2721 - href: compiler-errors-2/compiler-error-c2721.md - - name: Compiler error C2722 - href: compiler-errors-2/compiler-error-c2722.md - - name: Compiler error C2723 - href: compiler-errors-2/compiler-error-c2723.md - - name: Compiler error C2724 - href: compiler-errors-2/compiler-error-c2724.md - - name: Compiler error C2725 - href: compiler-errors-2/compiler-error-c2725.md - - name: Compiler error C2726 - href: compiler-errors-2/compiler-error-c2726.md - - name: Compiler error C2728 - href: compiler-errors-2/compiler-error-c2728.md - - name: Compiler error C2730 - href: compiler-errors-2/compiler-error-c2730.md - - name: Compiler error C2731 - href: compiler-errors-2/compiler-error-c2731.md - - name: Compiler error C2732 - href: compiler-errors-2/compiler-error-c2732.md - - name: Compiler error C2733 - href: compiler-errors-2/compiler-error-c2733.md - - name: Compiler error C2734 - href: compiler-errors-2/compiler-error-c2734.md - - name: Compiler error C2735 - href: compiler-errors-2/compiler-error-c2735.md - - name: Compiler error C2736 - href: compiler-errors-2/compiler-error-c2736.md - - name: Compiler error C2738 - href: compiler-errors-2/compiler-error-c2738.md - - name: Compiler error C2739 - href: compiler-errors-2/compiler-error-c2739.md - - name: Compiler error C2743 - href: compiler-errors-2/compiler-error-c2743.md - - name: Compiler error C2745 - href: compiler-errors-2/compiler-error-c2745.md - - name: Compiler error C2748 - href: compiler-errors-2/compiler-error-c2748.md - - name: Compiler error C2749 - href: compiler-errors-2/compiler-error-c2749.md - - name: Compiler error C2750 - href: compiler-errors-2/compiler-error-c2750.md - - name: Compiler error C2751 - href: compiler-errors-2/compiler-error-c2751.md - - name: Compiler error C2752 - href: compiler-errors-2/compiler-error-c2752.md - - name: Compiler error C2753 - href: compiler-errors-2/compiler-error-c2753.md - - name: Compiler error C2754 - href: compiler-errors-2/compiler-error-c2754.md - - name: Compiler error C2755 - href: compiler-errors-2/compiler-error-c2755.md - - name: Compiler error C2756 - href: compiler-errors-2/compiler-error-c2756.md - - name: Compiler error C2757 - href: compiler-errors-2/compiler-error-c2757.md - - name: Compiler error C2758 - href: compiler-errors-2/compiler-error-c2758.md - - name: Compiler error C2760 - href: compiler-errors-2/compiler-error-c2760.md - - name: Compiler error C2761 - href: compiler-errors-2/compiler-error-c2761.md - - name: Compiler error C2762 - href: compiler-errors-2/compiler-error-c2762.md - - name: Compiler error C2764 - href: compiler-errors-2/compiler-error-c2764.md - - name: Compiler error C2765 - href: compiler-errors-2/compiler-error-c2765.md - - name: Compiler error C2766 - href: compiler-errors-2/compiler-error-c2766.md - - name: Compiler error C2767 - href: compiler-errors-2/compiler-error-c2767.md - - name: Compiler error C2768 - href: compiler-errors-2/compiler-error-c2768.md - - name: Compiler error C2770 - href: compiler-errors-2/compiler-error-c2770.md - - name: Compiler error C2771 - href: compiler-errors-2/compiler-error-c2771.md - - name: Compiler error C2773 - href: compiler-errors-2/compiler-error-c2773.md - - name: Compiler error C2774 - href: compiler-errors-2/compiler-error-c2774.md - - name: Compiler error C2775 - href: compiler-errors-2/compiler-error-c2775.md - - name: Compiler error C2776 - href: compiler-errors-2/compiler-error-c2776.md - - name: Compiler error C2777 - href: compiler-errors-2/compiler-error-c2777.md - - name: Compiler error C2778 - href: compiler-errors-2/compiler-error-c2778.md - - name: Compiler error C2779 - href: compiler-errors-2/compiler-error-c2779.md - - name: Compiler error C2780 - href: compiler-errors-2/compiler-error-c2780.md - - name: Compiler error C2781 - href: compiler-errors-2/compiler-error-c2781.md - - name: Compiler error C2782 - href: compiler-errors-2/compiler-error-c2782.md - - name: Compiler error C2783 - href: compiler-errors-2/compiler-error-c2783.md - - name: Compiler error C2784 - href: compiler-errors-2/compiler-error-c2784.md - - name: Compiler error C2785 - href: compiler-errors-2/compiler-error-c2785.md - - name: Compiler error C2786 - href: compiler-errors-2/compiler-error-c2786.md - - name: Compiler error C2787 - href: compiler-errors-2/compiler-error-c2787.md - - name: Compiler error C2788 - href: compiler-errors-2/compiler-error-c2788.md - - name: Compiler error C2790 - href: compiler-errors-2/compiler-error-c2790.md - - name: Compiler error C2791 - href: compiler-errors-2/compiler-error-c2791.md - - name: Compiler error C2792 - href: compiler-errors-2/compiler-error-c2792.md - - name: Compiler error C2793 - href: compiler-errors-2/compiler-error-c2793.md - - name: Compiler error C2794 - href: compiler-errors-2/compiler-error-c2794.md - - name: Compiler error C2795 - href: compiler-errors-2/compiler-error-c2795.md - - name: Compiler error C2797 - href: compiler-errors-2/compiler-error-c2797.md - - name: Compiler error C2798 - href: compiler-errors-2/compiler-error-c2798.md - - name: Compiler errors C2800 through C2899 - expanded: false - items: - - name: Compiler errors C2800 through C2899 - href: compiler-errors-2/compiler-errors-c2800-through-c2899.md - - name: Compiler error C2800 - href: compiler-errors-2/compiler-error-c2800.md - - name: Compiler error C2801 - href: compiler-errors-2/compiler-error-c2801.md - - name: Compiler error C2802 - href: compiler-errors-2/compiler-error-c2802.md - - name: Compiler error C2803 - href: compiler-errors-2/compiler-error-c2803.md - - name: Compiler error C2804 - href: compiler-errors-2/compiler-error-c2804.md - - name: Compiler error C2805 - href: compiler-errors-2/compiler-error-c2805.md - - name: Compiler error C2806 - href: compiler-errors-2/compiler-error-c2806.md - - name: Compiler error C2807 - href: compiler-errors-2/compiler-error-c2807.md - - name: Compiler error C2808 - href: compiler-errors-2/compiler-error-c2808.md - - name: Compiler error C2809 - href: compiler-errors-2/compiler-error-c2809.md - - name: Compiler error C2810 - href: compiler-errors-2/compiler-error-c2810.md - - name: Compiler error C2811 - href: compiler-errors-2/compiler-error-c2811.md - - name: Compiler error C2812 - href: compiler-errors-2/compiler-error-c2812.md - - name: Compiler error C2813 - href: compiler-errors-2/compiler-error-c2813.md - - name: Compiler error C2814 - href: compiler-errors-2/compiler-error-c2814.md - - name: Compiler error C2815 - href: compiler-errors-2/compiler-error-c2815.md - - name: Compiler error C2817 - href: compiler-errors-2/compiler-error-c2817.md - - name: Compiler error C2818 - href: compiler-errors-2/compiler-error-c2818.md - - name: Compiler error C2819 - href: compiler-errors-2/compiler-error-c2819.md - - name: Compiler error C2821 - href: compiler-errors-2/compiler-error-c2821.md - - name: Compiler error C2823 - href: compiler-errors-2/compiler-error-c2823.md - - name: Compiler error C2824 - href: compiler-errors-2/compiler-error-c2824.md - - name: Compiler error C2825 - href: compiler-errors-2/compiler-error-c2825.md - - name: Compiler error C2827 - href: compiler-errors-2/compiler-error-c2827.md - - name: Compiler error C2828 - href: compiler-errors-2/compiler-error-c2828.md - - name: Compiler error C2829 - href: compiler-errors-2/compiler-error-c2829.md - - name: Compiler error C2830 - href: compiler-errors-2/compiler-error-c2830.md - - name: Compiler error C2831 - href: compiler-errors-2/compiler-error-c2831.md - - name: Compiler error C2833 - href: compiler-errors-2/compiler-error-c2833.md - - name: Compiler error C2834 - href: compiler-errors-2/compiler-error-c2834.md - - name: Compiler error C2835 - href: compiler-errors-2/compiler-error-c2835.md - - name: Compiler error C2838 - href: compiler-errors-2/compiler-error-c2838.md - - name: Compiler error C2839 - href: compiler-errors-2/compiler-error-c2839.md - - name: Compiler error C2842 - href: compiler-errors-2/compiler-error-c2842.md - - name: Compiler error C2843 - href: compiler-errors-2/compiler-error-c2843.md - - name: Compiler error C2844 - href: compiler-errors-2/compiler-error-c2844.md - - name: Compiler error C2845 - href: compiler-errors-2/compiler-error-c2845.md - - name: Compiler error C2846 - href: compiler-errors-2/compiler-error-c2846.md - - name: Compiler error C2847 - href: compiler-errors-2/compiler-error-c2847.md - - name: Compiler error C2849 - href: compiler-errors-2/compiler-error-c2849.md - - name: Compiler error C2850 - href: compiler-errors-2/compiler-error-c2850.md - - name: Compiler error C2854 - href: compiler-errors-2/compiler-error-c2854.md - - name: Compiler error C2855 - href: compiler-errors-2/compiler-error-c2855.md - - name: Compiler error C2856 - href: compiler-errors-2/compiler-error-c2856.md - - name: Compiler error C2857 - href: compiler-errors-2/compiler-error-c2857.md - - name: Compiler error C2858 - href: compiler-errors-2/compiler-error-c2858.md - - name: Compiler error C2859 - href: compiler-errors-2/compiler-error-c2859.md - - name: Compiler error C2860 - href: compiler-errors-2/compiler-error-c2860.md - - name: Compiler error C2861 - href: compiler-errors-2/compiler-error-c2861.md - - name: Compiler error C2862 - href: compiler-errors-2/compiler-error-c2862.md - - name: Compiler error C2863 - href: compiler-errors-2/compiler-error-c2863.md - - name: Compiler error C2864 - href: compiler-errors-2/compiler-error-c2864.md - - name: Compiler error C2865 - href: compiler-errors-2/compiler-error-c2865.md - - name: Compiler error C2867 - href: compiler-errors-2/compiler-error-c2867.md - - name: Compiler error C2868 - href: compiler-errors-2/compiler-error-c2868.md - - name: Compiler error C2869 - href: compiler-errors-2/compiler-error-c2869.md - - name: Compiler error C2870 - href: compiler-errors-2/compiler-error-c2870.md - - name: Compiler error C2871 - href: compiler-errors-2/compiler-error-c2871.md - - name: Compiler error C2872 - href: compiler-errors-2/compiler-error-c2872.md - - name: Compiler error C2873 - href: compiler-errors-2/compiler-error-c2873.md - - name: Compiler error C2874 - href: compiler-errors-2/compiler-error-c2874.md - - name: Compiler error C2875 - href: compiler-errors-2/compiler-error-c2875.md - - name: Compiler error C2876 - href: compiler-errors-2/compiler-error-c2876.md - - name: Compiler error C2877 - href: compiler-errors-2/compiler-error-c2877.md - - name: Compiler error C2878 - href: compiler-errors-2/compiler-error-c2878.md - - name: Compiler error C2879 - href: compiler-errors-2/compiler-error-c2879.md - - name: Compiler error C2881 - href: compiler-errors-2/compiler-error-c2881.md - - name: Compiler error C2882 - href: compiler-errors-2/compiler-error-c2882.md - - name: Compiler error C2883 - href: compiler-errors-2/compiler-error-c2883.md - - name: Compiler error C2884 - href: compiler-errors-2/compiler-error-c2884.md - - name: Compiler error C2885 - href: compiler-errors-2/compiler-error-c2885.md - - name: Compiler error C2886 - href: compiler-errors-2/compiler-error-c2886.md - - name: Compiler error C2888 - href: compiler-errors-2/compiler-error-c2888.md - - name: Compiler error C2890 - href: compiler-errors-2/compiler-error-c2890.md - - name: Compiler error C2891 - href: compiler-errors-2/compiler-error-c2891.md - - name: Compiler error C2892 - href: compiler-errors-2/compiler-error-c2892.md - - name: Compiler error C2893 - href: compiler-errors-2/compiler-error-c2893.md - - name: Compiler error C2894 - href: compiler-errors-2/compiler-error-c2894.md - - name: Compiler error C2896 - href: compiler-errors-2/compiler-error-c2896.md - - name: Compiler error C2897 - href: compiler-errors-2/compiler-error-c2897.md - - name: Compiler error C2898 - href: compiler-errors-2/compiler-error-c2898.md - - name: Compiler errors C2900 through C2999 - expanded: false - items: - - name: Compiler errors C2900 through C2999 - href: compiler-errors-2/compiler-errors-c2900-through-c3499.md - - name: Compiler error C2902 - href: compiler-errors-2/compiler-error-c2902.md - - name: Compiler error C2903 - href: compiler-errors-2/compiler-error-c2903.md - - name: Compiler error C2904 - href: compiler-errors-2/compiler-error-c2904.md - - name: Compiler error C2906 - href: compiler-errors-2/compiler-error-c2906.md - - name: Compiler error C2908 - href: compiler-errors-2/compiler-error-c2908.md - - name: Compiler error C2909 - href: compiler-errors-2/compiler-error-c2909.md - - name: Compiler error C2910 - href: compiler-errors-2/compiler-error-c2910.md - - name: Compiler error C2911 - href: compiler-errors-2/compiler-error-c2911.md - - name: Compiler error C2912 - href: compiler-errors-2/compiler-error-c2912.md - - name: Compiler error C2913 - href: compiler-errors-2/compiler-error-c2913.md - - name: Compiler error C2914 - href: compiler-errors-2/compiler-error-c2914.md - - name: Compiler error C2917 - href: compiler-errors-2/compiler-error-c2917.md - - name: Compiler error C2918 - href: compiler-errors-2/compiler-error-c2918.md - - name: Compiler error C2919 - href: compiler-errors-2/compiler-error-c2919.md - - name: Compiler error C2920 - href: compiler-errors-2/compiler-error-c2920.md - - name: Compiler error C2921 - href: compiler-errors-2/compiler-error-c2921.md - - name: Compiler error C2923 - href: compiler-errors-2/compiler-error-c2923.md - - name: Compiler error C2927 - href: compiler-errors-2/compiler-error-c2927.md - - name: Compiler error C2928 - href: compiler-errors-2/compiler-error-c2928.md - - name: Compiler error C2929 - href: compiler-errors-2/compiler-error-c2929.md - - name: Compiler error C2930 - href: compiler-errors-2/compiler-error-c2930.md - - name: Compiler error C2931 - href: compiler-errors-2/compiler-error-c2931.md - - name: Compiler error C2932 - href: compiler-errors-2/compiler-error-c2932.md - - name: Compiler error C2933 - href: compiler-errors-2/compiler-error-c2933.md - - name: Compiler error C2934 - href: compiler-errors-2/compiler-error-c2934.md - - name: Compiler error C2935 - href: compiler-errors-2/compiler-error-c2935.md - - name: Compiler error C2936 - href: compiler-errors-2/compiler-error-c2936.md - - name: Compiler error C2937 - href: compiler-errors-2/compiler-error-c2937.md - - name: Compiler error C2939 - href: compiler-errors-2/compiler-error-c2939.md - - name: Compiler error C2940 - href: compiler-errors-2/compiler-error-c2940.md - - name: Compiler error C2941 - href: compiler-errors-2/compiler-error-c2941.md - - name: Compiler error C2942 - href: compiler-errors-2/compiler-error-c2942.md - - name: Compiler error C2943 - href: compiler-errors-2/compiler-error-c2943.md - - name: Compiler error C2944 - href: compiler-errors-2/compiler-error-c2944.md - - name: Compiler error C2945 - href: compiler-errors-2/compiler-error-c2945.md - - name: Compiler error C2946 - href: compiler-errors-2/compiler-error-c2946.md - - name: Compiler error C2947 - href: compiler-errors-2/compiler-error-c2947.md - - name: Compiler error C2948 - href: compiler-errors-2/compiler-error-c2948.md - - name: Compiler error C2951 - href: compiler-errors-2/compiler-error-c2951.md - - name: Compiler error C2952 - href: compiler-errors-2/compiler-error-c2952.md - - name: Compiler error C2953 - href: compiler-errors-2/compiler-error-c2953.md - - name: Compiler error C2955 - href: compiler-errors-2/compiler-error-c2955.md - - name: Compiler error C2956 - href: compiler-errors-2/compiler-error-c2956.md - - name: Compiler error C2957 - href: compiler-errors-2/compiler-error-c2957.md - - name: Compiler error C2958 - href: compiler-errors-2/compiler-error-c2958.md - - name: Compiler error C2959 - href: compiler-errors-2/compiler-error-c2959.md - - name: Compiler error C2962 - href: compiler-errors-2/compiler-error-c2962.md - - name: Compiler error C2969 - href: compiler-errors-2/compiler-error-c2969.md - - name: Compiler error C2970 - href: compiler-errors-2/compiler-error-c2970.md - - name: Compiler error C2971 - href: compiler-errors-2/compiler-error-c2971.md - - name: Compiler error C2973 - href: compiler-errors-2/compiler-error-c2973.md - - name: Compiler error C2974 - href: compiler-errors-2/compiler-error-c2974.md - - name: Compiler error C2975 - href: compiler-errors-2/compiler-error-c2975.md - - name: Compiler error C2976 - href: compiler-errors-2/compiler-error-c2976.md - - name: Compiler error C2977 - href: compiler-errors-2/compiler-error-c2977.md - - name: Compiler error C2978 - href: compiler-errors-2/compiler-error-c2978.md - - name: Compiler error C2979 - href: compiler-errors-2/compiler-error-c2979.md - - name: Compiler error C2988 - href: compiler-errors-2/compiler-error-c2988.md - - name: Compiler error C2989 - href: compiler-errors-2/compiler-error-c2989.md - - name: Compiler error C2990 - href: compiler-errors-2/compiler-error-c2990.md - - name: Compiler error C2991 - href: compiler-errors-2/compiler-error-c2991.md - - name: Compiler error C2992 - href: compiler-errors-2/compiler-error-c2992.md - - name: Compiler error C2993 - href: compiler-errors-2/compiler-error-c2993.md - - name: Compiler error C2994 - href: compiler-errors-2/compiler-error-c2994.md - - name: Compiler error C2995 - href: compiler-errors-2/compiler-error-c2995.md - - name: Compiler error C2996 - href: compiler-errors-2/compiler-error-c2996.md - - name: Compiler error C2998 - href: compiler-errors-2/compiler-error-c2998.md - - name: Compiler errors C3000 through C3099 - expanded: false - items: - - name: Compiler errors C3000 through C3099 - href: compiler-errors-2/compiler-errors-c3000-through-c3099.md - - name: Compiler error C3001 - href: compiler-errors-2/compiler-error-c3001.md - - name: Compiler error C3002 - href: compiler-errors-2/compiler-error-c3002.md - - name: Compiler error C3003 - href: compiler-errors-2/compiler-error-c3003.md - - name: Compiler error C3004 - href: compiler-errors-2/compiler-error-c3004.md - - name: Compiler error C3005 - href: compiler-errors-2/compiler-error-c3005.md - - name: Compiler error C3006 - href: compiler-errors-2/compiler-error-c3006.md - - name: Compiler error C3007 - href: compiler-errors-2/compiler-error-c3007.md - - name: Compiler error C3008 - href: compiler-errors-2/compiler-error-c3008.md - - name: Compiler error C3009 - href: compiler-errors-2/compiler-error-c3009.md - - name: Compiler error C3010 - href: compiler-errors-2/compiler-error-c3010.md - - name: Compiler error C3011 - href: compiler-errors-2/compiler-error-c3011.md - - name: Compiler error C3012 - href: compiler-errors-2/compiler-error-c3012.md - - name: Compiler error C3013 - href: compiler-errors-2/compiler-error-c3013.md - - name: Compiler error C3014 - href: compiler-errors-2/compiler-error-c3014.md - - name: Compiler error C3015 - href: compiler-errors-2/compiler-error-c3015.md - - name: Compiler error C3016 - href: compiler-errors-2/compiler-error-c3016.md - - name: Compiler error C3017 - href: compiler-errors-2/compiler-error-c3017.md - - name: Compiler error C3018 - href: compiler-errors-2/compiler-error-c3018.md - - name: Compiler error C3019 - href: compiler-errors-2/compiler-error-c3019.md - - name: Compiler error C3020 - href: compiler-errors-2/compiler-error-c3020.md - - name: Compiler error C3021 - href: compiler-errors-2/compiler-error-c3021.md - - name: Compiler error C3022 - href: compiler-errors-2/compiler-error-c3022.md - - name: Compiler error C3023 - href: compiler-errors-2/compiler-error-c3023.md - - name: Compiler error C3024 - href: compiler-errors-2/compiler-error-c3024.md - - name: Compiler error C3025 - href: compiler-errors-2/compiler-error-c3025.md - - name: Compiler error C3026 - href: compiler-errors-2/compiler-error-c3026.md - - name: Compiler error C3027 - href: compiler-errors-2/compiler-error-c3027.md - - name: Compiler error C3028 - href: compiler-errors-2/compiler-error-c3028.md - - name: Compiler error C3029 - href: compiler-errors-2/compiler-error-c3029.md - - name: Compiler error C3030 - href: compiler-errors-2/compiler-error-c3030.md - - name: Compiler error C3031 - href: compiler-errors-2/compiler-error-c3031.md - - name: Compiler error C3032 - href: compiler-errors-2/compiler-error-c3032.md - - name: Compiler error C3033 - href: compiler-errors-2/compiler-error-c3033.md - - name: Compiler error C3034 - href: compiler-errors-2/compiler-error-c3034.md - - name: Compiler error C3035 - href: compiler-errors-2/compiler-error-c3035.md - - name: Compiler error C3036 - href: compiler-errors-2/compiler-error-c3036.md - - name: Compiler error C3037 - href: compiler-errors-2/compiler-error-c3037.md - - name: Compiler error C3038 - href: compiler-errors-2/compiler-error-c3038.md - - name: Compiler error C3039 - href: compiler-errors-2/compiler-error-c3039.md - - name: Compiler error C3040 - href: compiler-errors-2/compiler-error-c3040.md - - name: Compiler error C3041 - href: compiler-errors-2/compiler-error-c3041.md - - name: Compiler error C3042 - href: compiler-errors-2/compiler-error-c3042.md - - name: Compiler error C3043 - href: compiler-errors-2/compiler-error-c3043.md - - name: Compiler error C3044 - href: compiler-errors-2/compiler-error-c3044.md - - name: Compiler error C3045 - href: compiler-errors-2/compiler-error-c3045.md - - name: Compiler error C3046 - href: compiler-errors-2/compiler-error-c3046.md - - name: Compiler error C3047 - href: compiler-errors-2/compiler-error-c3047.md - - name: Compiler error C3048 - href: compiler-errors-2/compiler-error-c3048.md - - name: Compiler error C3049 - href: compiler-errors-2/compiler-error-c3049.md - - name: Compiler error C3050 - href: compiler-errors-2/compiler-error-c3050.md - - name: Compiler error C3052 - href: compiler-errors-2/compiler-error-c3052.md - - name: Compiler error C3053 - href: compiler-errors-2/compiler-error-c3053.md - - name: Compiler error C3054 - href: compiler-errors-2/compiler-error-c3054.md - - name: Compiler error C3055 - href: compiler-errors-2/compiler-error-c3055.md - - name: Compiler error C3056 - href: compiler-errors-2/compiler-error-c3056.md - - name: Compiler error C3057 - href: compiler-errors-2/compiler-error-c3057.md - - name: Compiler error C3058 - href: compiler-errors-2/compiler-error-c3058.md - - name: Compiler error C3059 - href: compiler-errors-2/compiler-error-c3059.md - - name: Compiler error C3060 - href: compiler-errors-2/compiler-error-c3060.md - - name: Compiler error C3062 - href: compiler-errors-2/compiler-error-c3062.md - - name: Compiler error C3063 - href: compiler-errors-2/compiler-error-c3063.md - - name: Compiler error C3065 - href: compiler-errors-2/compiler-error-c3065.md - - name: Compiler error C3066 - href: compiler-errors-2/compiler-error-c3066.md - - name: Compiler error C3068 - href: compiler-errors-2/compiler-error-c3068.md - - name: Compiler error C3069 - href: compiler-errors-2/compiler-error-c3069.md - - name: Compiler error C3070 - href: compiler-errors-2/compiler-error-c3070.md - - name: Compiler error C3071 - href: compiler-errors-2/compiler-error-c3071.md - - name: Compiler error C3072 - href: compiler-errors-2/compiler-error-c3072.md - - name: Compiler error C3073 - href: compiler-errors-2/compiler-error-c3073.md - - name: Compiler error C3075 - href: compiler-errors-2/compiler-error-c3075.md - - name: Compiler error C3076 - href: compiler-errors-2/compiler-error-c3076.md - - name: Compiler error C3077 - href: compiler-errors-2/compiler-error-c3077.md - - name: Compiler error C3080 - href: compiler-errors-2/compiler-error-c3080.md - - name: Compiler error C3083 - href: compiler-errors-2/compiler-error-c3083.md - - name: Compiler error C3084 - href: compiler-errors-2/compiler-error-c3084.md - - name: Compiler error C3085 - href: compiler-errors-2/compiler-error-c3085.md - - name: Compiler error C3087 - href: compiler-errors-2/compiler-error-c3087.md - - name: Compiler error C3094 - href: compiler-errors-2/compiler-error-c3094.md - - name: Compiler error C3095 - href: compiler-errors-2/compiler-error-c3095.md - - name: Compiler error C3096 - href: compiler-errors-2/compiler-error-c3096.md - - name: Compiler error C3097 - href: compiler-errors-2/compiler-error-c3097.md - - name: Compiler error C3099 - href: compiler-errors-2/compiler-error-c3099.md - - name: Compiler errors C3100 through C3199 - expanded: false - items: - - name: Compiler errors C3100 through C3199 - href: compiler-errors-2/compiler-errors-c3100-through-c3199.md - - name: Compiler error C3100 - href: compiler-errors-2/compiler-error-c3100.md - - name: Compiler error C3101 - href: compiler-errors-2/compiler-error-c3101.md - - name: Compiler error C3103 - href: compiler-errors-2/compiler-error-c3103.md - - name: Compiler error C3104 - href: compiler-errors-2/compiler-error-c3104.md - - name: Compiler error C3106 - href: compiler-errors-2/compiler-error-c3106.md - - name: Compiler error C3110 - href: compiler-errors-2/compiler-error-c3110.md - - name: Compiler error C3113 - href: compiler-errors-2/compiler-error-c3113.md - - name: Compiler error C3114 - href: compiler-errors-2/compiler-error-c3114.md - - name: Compiler error C3115 - href: compiler-errors-2/compiler-error-c3115.md - - name: Compiler error C3116 - href: compiler-errors-2/compiler-error-c3116.md - - name: Compiler error C3117 - href: compiler-errors-2/compiler-error-c3117.md - - name: Compiler error C3118 - href: compiler-errors-2/compiler-error-c3118.md - - name: Compiler error C3120 - href: compiler-errors-2/compiler-error-c3120.md - - name: Compiler error C3121 - href: compiler-errors-2/compiler-error-c3121.md - - name: Compiler error C3126 - href: compiler-errors-2/compiler-error-c3126.md - - name: Compiler error C3130 - href: compiler-errors-2/compiler-error-c3130.md - - name: Compiler error C3131 - href: compiler-errors-2/compiler-error-c3131.md - - name: Compiler error C3132 - href: compiler-errors-2/compiler-error-c3132.md - - name: Compiler error C3133 - href: compiler-errors-2/compiler-error-c3133.md - - name: Compiler error C3134 - href: compiler-errors-2/compiler-error-c3134.md - - name: Compiler error C3135 - href: compiler-errors-2/compiler-error-c3135.md - - name: Compiler error C3136 - href: compiler-errors-2/compiler-error-c3136.md - - name: Compiler error C3137 - href: compiler-errors-2/compiler-error-c3137.md - - name: Compiler error C3138 - href: compiler-errors-2/compiler-error-c3138.md - - name: Compiler error C3139 - href: compiler-errors-2/compiler-error-c3139.md - - name: Compiler error C3140 - href: compiler-errors-2/compiler-error-c3140.md - - name: Compiler error C3141 - href: compiler-errors-2/compiler-error-c3141.md - - name: Compiler error C3142 - href: compiler-errors-2/compiler-error-c3142.md - - name: Compiler error C3145 - href: compiler-errors-2/compiler-error-c3145.md - - name: Compiler error C3149 - href: compiler-errors-2/compiler-error-c3149.md - - name: Compiler error C3150 - href: compiler-errors-2/compiler-error-c3150.md - - name: Compiler error C3152 - href: compiler-errors-2/compiler-error-c3152.md - - name: Compiler error C3153 - href: compiler-errors-2/compiler-error-c3153.md - - name: Compiler error C3154 - href: compiler-errors-2/compiler-error-c3154.md - - name: Compiler error C3155 - href: compiler-errors-2/compiler-error-c3155.md - - name: Compiler error C3156 - href: compiler-errors-2/compiler-error-c3156.md - - name: Compiler error C3157 - href: compiler-errors-2/compiler-error-c3157.md - - name: Compiler error C3159 - href: compiler-errors-2/compiler-error-c3159.md - - name: Compiler error C3160 - href: compiler-errors-2/compiler-error-c3160.md - - name: Compiler error C3161 - href: compiler-errors-2/compiler-error-c3161.md - - name: Compiler error C3162 - href: compiler-errors-2/compiler-error-c3162.md - - name: Compiler error C3163 - href: compiler-errors-2/compiler-error-c3163.md - - name: Compiler error C3166 - href: compiler-errors-2/compiler-error-c3166.md - - name: Compiler error C3167 - href: compiler-errors-2/compiler-error-c3167.md - - name: Compiler error C3168 - href: compiler-errors-2/compiler-error-c3168.md - - name: Compiler error C3170 - href: compiler-errors-2/compiler-error-c3170.md - - name: Compiler error C3171 - href: compiler-errors-2/compiler-error-c3171.md - - name: Compiler error C3172 - href: compiler-errors-2/compiler-error-c3172.md - - name: Compiler error C3173 - href: compiler-errors-2/compiler-error-c3173.md - - name: Compiler error C3174 - href: compiler-errors-2/compiler-error-c3174.md - - name: Compiler error C3175 - href: compiler-errors-2/compiler-error-c3175.md - - name: Compiler error C3176 - href: compiler-errors-2/compiler-error-c3176.md - - name: Compiler error C3179 - href: compiler-errors-2/compiler-error-c3179.md - - name: Compiler error C3180 - href: compiler-errors-2/compiler-error-c3180.md - - name: Compiler error C3181 - href: compiler-errors-2/compiler-error-c3181.md - - name: Compiler error C3182 - href: compiler-errors-2/compiler-error-c3182.md - - name: Compiler error C3183 - href: compiler-errors-2/compiler-error-c3183.md - - name: Compiler error C3185 - href: compiler-errors-2/compiler-error-c3185.md - - name: Compiler error C3187 - href: compiler-errors-2/compiler-error-c3187.md - - name: Compiler error C3189 - href: compiler-errors-2/compiler-error-c3189.md - - name: Compiler error C3190 - href: compiler-errors-2/compiler-error-c3190.md - - name: Compiler error C3192 - href: compiler-errors-2/compiler-error-c3192.md - - name: Compiler error C3194 - href: compiler-errors-2/compiler-error-c3194.md - - name: Compiler error C3195 - href: compiler-errors-2/compiler-error-c3195.md - - name: Compiler error C3196 - href: compiler-errors-2/compiler-error-c3196.md - - name: Compiler error C3197 - href: compiler-errors-2/compiler-error-c3197.md - - name: Compiler error C3198 - href: compiler-errors-2/compiler-error-c3198.md - - name: Compiler error C3199 - href: compiler-errors-2/compiler-error-c3199.md - - name: Compiler errors C3200 through C3299 - expanded: false - items: - - name: Compiler errors C3200 through C3299 - href: compiler-errors-2/compiler-errors-c3200-through-c3299.md - - name: Compiler error C3200 - href: compiler-errors-2/compiler-error-c3200.md - - name: Compiler error C3201 - href: compiler-errors-2/compiler-error-c3201.md - - name: Compiler error C3202 - href: compiler-errors-2/compiler-error-c3202.md - - name: Compiler error C3203 - href: compiler-errors-2/compiler-error-c3203.md - - name: Compiler error C3204 - href: compiler-errors-2/compiler-error-c3204.md - - name: Compiler error C3205 - href: compiler-errors-2/compiler-error-c3205.md - - name: Compiler error C3206 - href: compiler-errors-2/compiler-error-c3206.md - - name: Compiler error C3207 - href: compiler-errors-2/compiler-error-c3207.md - - name: Compiler error C3208 - href: compiler-errors-2/compiler-error-c3208.md - - name: Compiler error C3209 - href: compiler-errors-2/compiler-error-c3209.md - - name: Compiler error C3210 - href: compiler-errors-2/compiler-error-c3210.md - - name: Compiler error C3211 - href: compiler-errors-2/compiler-error-c3211.md - - name: Compiler error C3212 - href: compiler-errors-2/compiler-error-c3212.md - - name: Compiler error C3213 - href: compiler-errors-2/compiler-error-c3213.md - - name: Compiler error C3214 - href: compiler-errors-2/compiler-error-c3214.md - - name: Compiler error C3215 - href: compiler-errors-2/compiler-error-c3215.md - - name: Compiler error C3216 - href: compiler-errors-2/compiler-error-c3216.md - - name: Compiler error C3217 - href: compiler-errors-2/compiler-error-c3217.md - - name: Compiler error C3218 - href: compiler-errors-2/compiler-error-c3218.md - - name: Compiler error C3219 - href: compiler-errors-2/compiler-error-c3219.md - - name: Compiler error C3222 - href: compiler-errors-2/compiler-error-c3222.md - - name: Compiler error C3223 - href: compiler-errors-2/compiler-error-c3223.md - - name: Compiler error C3224 - href: compiler-errors-2/compiler-error-c3224.md - - name: Compiler error C3225 - href: compiler-errors-2/compiler-error-c3225.md - - name: Compiler error C3226 - href: compiler-errors-2/compiler-error-c3226.md - - name: Compiler error C3227 - href: compiler-errors-2/compiler-error-c3227.md - - name: Compiler error C3228 - href: compiler-errors-2/compiler-error-c3228.md - - name: Compiler error C3229 - href: compiler-errors-2/compiler-error-c3229.md - - name: Compiler error C3230 - href: compiler-errors-2/compiler-error-c3230.md - - name: Compiler error C3231 - href: compiler-errors-2/compiler-error-c3231.md - - name: Compiler error C3232 - href: compiler-errors-2/compiler-error-c3232.md - - name: Compiler error C3233 - href: compiler-errors-2/compiler-error-c3233.md - - name: Compiler error C3234 - href: compiler-errors-2/compiler-error-c3234.md - - name: Compiler error C3235 - href: compiler-errors-2/compiler-error-c3235.md - - name: Compiler error C3236 - href: compiler-errors-2/compiler-error-c3236.md - - name: Compiler error C3237 - href: compiler-errors-2/compiler-error-c3237.md - - name: Compiler error C3238 - href: compiler-errors-2/compiler-error-c3238.md - - name: Compiler error C3239 - href: compiler-errors-2/compiler-error-c3239.md - - name: Compiler error C3240 - href: compiler-errors-2/compiler-error-c3240.md - - name: Compiler error C3241 - href: compiler-errors-2/compiler-error-c3241.md - - name: Compiler error C3242 - href: compiler-errors-2/compiler-error-c3242.md - - name: Compiler error C3243 - href: compiler-errors-2/compiler-error-c3243.md - - name: Compiler error C3244 - href: compiler-errors-2/compiler-error-c3244.md - - name: Compiler error C3246 - href: compiler-errors-2/compiler-error-c3246.md - - name: Compiler error C3247 - href: compiler-errors-2/compiler-error-c3247.md - - name: Compiler error C3248 - href: compiler-errors-2/compiler-error-c3248.md - - name: Compiler error C3251 - href: compiler-errors-2/compiler-error-c3251.md - - name: Compiler error C3252 - href: compiler-errors-2/compiler-error-c3252.md - - name: Compiler error C3253 - href: compiler-errors-2/compiler-error-c3253.md - - name: Compiler error C3254 - href: compiler-errors-2/compiler-error-c3254.md - - name: Compiler error C3255 - href: compiler-errors-2/compiler-error-c3255.md - - name: Compiler error C3262 - href: compiler-errors-2/compiler-error-c3262.md - - name: Compiler error C3264 - href: compiler-errors-2/compiler-error-c3264.md - - name: Compiler error C3265 - href: compiler-errors-2/compiler-error-c3265.md - - name: Compiler error C3266 - href: compiler-errors-2/compiler-error-c3266.md - - name: Compiler error C3268 - href: compiler-errors-2/compiler-error-c3268.md - - name: Compiler error C3269 - href: compiler-errors-2/compiler-error-c3269.md - - name: Compiler error C3270 - href: compiler-errors-2/compiler-error-c3270.md - - name: Compiler error C3271 - href: compiler-errors-2/compiler-error-c3271.md - - name: Compiler error C3272 - href: compiler-errors-2/compiler-error-c3272.md - - name: Compiler error C3273 - href: compiler-errors-2/compiler-error-c3273.md - - name: Compiler error C3274 - href: compiler-errors-2/compiler-error-c3274.md - - name: Compiler error C3275 - href: compiler-errors-2/compiler-error-c3275.md - - name: Compiler error C3276 - href: compiler-errors-2/compiler-error-c3276.md - - name: Compiler error C3277 - href: compiler-errors-2/compiler-error-c3277.md - - name: Compiler error C3278 - href: compiler-errors-2/compiler-error-c3278.md - - name: Compiler error C3279 - href: compiler-errors-2/compiler-error-c3279.md - - name: Compiler error C3280 - href: compiler-errors-2/compiler-error-c3280.md - - name: Compiler error C3282 - href: compiler-errors-2/compiler-error-c3282.md - - name: Compiler error C3283 - href: compiler-errors-2/compiler-error-c3283.md - - name: Compiler error C3284 - href: compiler-errors-2/compiler-error-c3284.md - - name: Compiler error C3285 - href: compiler-errors-2/compiler-error-c3285.md - - name: Compiler error C3286 - href: compiler-errors-2/compiler-error-c3286.md - - name: Compiler error C3287 - href: compiler-errors-2/compiler-error-c3287.md - - name: Compiler error C3288 - href: compiler-errors-2/compiler-error-c3288.md - - name: Compiler error C3289 - href: compiler-errors-2/compiler-error-c3289.md - - name: Compiler error C3290 - href: compiler-errors-2/compiler-error-c3290.md - - name: Compiler error C3291 - href: compiler-errors-2/compiler-error-c3291.md - - name: Compiler error C3292 - href: compiler-errors-2/compiler-error-c3292.md - - name: Compiler error C3293 - href: compiler-errors-2/compiler-error-c3293.md - - name: Compiler error C3295 - href: compiler-errors-2/compiler-error-c3295.md - - name: Compiler error C3296 - href: compiler-errors-2/compiler-error-c3296.md - - name: Compiler error C3297 - href: compiler-errors-2/compiler-error-c3297.md - - name: Compiler error C3298 - href: compiler-errors-2/compiler-error-c3298.md - - name: Compiler error C3299 - href: compiler-errors-2/compiler-error-c3299.md - - name: Compiler errors C3300 through C3399 - expanded: false - items: - - name: Compiler errors C3300 through C3399 - href: compiler-errors-2/compiler-errors-c3300-through-c3399.md - - name: Compiler error C3303 - href: compiler-errors-2/compiler-error-c3303.md - - name: Compiler error C3309 - href: compiler-errors-2/compiler-error-c3309.md - - name: Compiler error C3320 - href: compiler-errors-2/compiler-error-c3320.md - - name: Compiler error C3322 - href: compiler-errors-2/compiler-error-c3322.md - - name: Compiler error C3333 - href: compiler-errors-2/compiler-error-c3333.md - - name: Compiler error C3334 - href: compiler-errors-2/compiler-error-c3334.md - - name: Compiler error C3340 - href: compiler-errors-2/compiler-error-c3340.md - - name: Compiler error C3342 - href: compiler-errors-2/compiler-error-c3342.md - - name: Compiler error C3345 - href: compiler-errors-2/compiler-error-c3345.md - - name: Compiler error C3347 - href: compiler-errors-2/compiler-error-c3347.md - - name: Compiler error C3350 - href: compiler-errors-2/compiler-error-c3350.md - - name: Compiler error C3351 - href: compiler-errors-2/compiler-error-c3351.md - - name: Compiler error C3352 - href: compiler-errors-2/compiler-error-c3352.md - - name: Compiler error C3353 - href: compiler-errors-2/compiler-error-c3353.md - - name: Compiler error C3354 - href: compiler-errors-2/compiler-error-c3354.md - - name: Compiler error C3356 - href: compiler-errors-2/compiler-error-c3356.md - - name: Compiler error C3358 - href: compiler-errors-2/compiler-error-c3358.md - - name: Compiler error C3360 - href: compiler-errors-2/compiler-error-c3360.md - - name: Compiler error C3363 - href: compiler-errors-2/compiler-error-c3363.md - - name: Compiler error C3364 - href: compiler-errors-2/compiler-error-c3364.md - - name: Compiler error C3365 - href: compiler-errors-2/compiler-error-c3365.md - - name: Compiler error C3366 - href: compiler-errors-2/compiler-error-c3366.md - - name: Compiler error C3367 - href: compiler-errors-2/compiler-error-c3367.md - - name: Compiler error C3368 - href: compiler-errors-2/compiler-error-c3368.md - - name: Compiler error C3369 - href: compiler-errors-2/compiler-error-c3369.md - - name: Compiler error C3370 - href: compiler-errors-2/compiler-error-c3370.md - - name: Compiler error C3371 - href: compiler-errors-2/compiler-error-c3371.md - - name: Compiler error C3372 - href: compiler-errors-2/compiler-error-c3372.md - - name: Compiler error C3373 - href: compiler-errors-2/compiler-error-c3373.md - - name: Compiler error C3374 - href: compiler-errors-2/compiler-error-c3374.md - - name: Compiler error C3375 - href: compiler-errors-2/compiler-error-c3375.md - - name: Compiler error C3379 - href: compiler-errors-2/compiler-error-c3379.md - - name: Compiler error C3380 - href: compiler-errors-2/compiler-error-c3380.md - - name: Compiler error C3381 - href: compiler-errors-2/compiler-error-c3381.md - - name: Compiler error C3382 - href: compiler-errors-2/compiler-error-c3382.md - - name: Compiler error C3383 - href: compiler-errors-2/compiler-error-c3383.md - - name: Compiler error C3384 - href: compiler-errors-2/compiler-error-c3384.md - - name: Compiler error C3385 - href: compiler-errors-2/compiler-error-c3385.md - - name: Compiler error C3386 - href: compiler-errors-2/compiler-error-c3386.md - - name: Compiler error C3387 - href: compiler-errors-2/compiler-error-c3387.md - - name: Compiler error C3388 - href: compiler-errors-2/compiler-error-c3388.md - - name: Compiler error C3389 - href: compiler-errors-2/compiler-error-c3389.md - - name: Compiler error C3390 - href: compiler-errors-2/compiler-error-c3390.md - - name: Compiler error C3391 - href: compiler-errors-2/compiler-error-c3391.md - - name: Compiler error C3392 - href: compiler-errors-2/compiler-error-c3392.md - - name: Compiler error C3393 - href: compiler-errors-2/compiler-error-c3393.md - - name: Compiler error C3394 - href: compiler-errors-2/compiler-error-c3394.md - - name: Compiler error C3395 - href: compiler-errors-2/compiler-error-c3395.md - - name: Compiler error C3396 - href: compiler-errors-2/compiler-error-c3396.md - - name: Compiler error C3397 - href: compiler-errors-2/compiler-error-c3397.md - - name: Compiler error C3398 - href: compiler-errors-2/compiler-error-c3398.md - - name: Compiler error C3399 - href: compiler-errors-2/compiler-error-c3399.md - - name: Compiler errors C3400 through C3499 - expanded: false - items: - - name: Compiler errors C3400 through C3499 - href: compiler-errors-2/compiler-errors-c3400-through-c3499.md - - name: Compiler error C3400 - href: compiler-errors-2/compiler-error-c3400.md - - name: Compiler error C3408 - href: compiler-errors-2/compiler-error-c3408.md - - name: Compiler error C3409 - href: compiler-errors-2/compiler-error-c3409.md - - name: Compiler error C3412 - href: compiler-errors-2/compiler-error-c3412.md - - name: Compiler error C3413 - href: compiler-errors-2/compiler-error-c3413.md - - name: Compiler error C3414 - href: compiler-errors-2/compiler-error-c3414.md - - name: Compiler error C3415 - href: compiler-errors-2/compiler-error-c3415.md - - name: Compiler error C3417 - href: compiler-errors-2/compiler-error-c3417.md - - name: Compiler error C3418 - href: compiler-errors-2/compiler-error-c3418.md - - name: Compiler error C3420 - href: compiler-errors-2/compiler-error-c3420.md - - name: Compiler error C3421 - href: compiler-errors-2/compiler-error-c3421.md - - name: Compiler error C3445 - href: compiler-errors-2/compiler-error-c3445.md - - name: Compiler error C3446 - href: compiler-errors-2/compiler-error-c3446.md - - name: Compiler error C3450 - href: compiler-errors-2/compiler-error-c3450.md - - name: Compiler error C3451 - href: compiler-errors-2/compiler-error-c3451.md - - name: Compiler error C3452 - href: compiler-errors-2/compiler-error-c3452.md - - name: Compiler error C3453 - href: compiler-errors-2/compiler-error-c3453.md - - name: Compiler error C3454 - href: compiler-errors-2/compiler-error-c3454.md - - name: Compiler error C3455 - href: compiler-errors-2/compiler-error-c3455.md - - name: Compiler error C3456 - href: compiler-errors-2/compiler-error-c3456.md - - name: Compiler error C3457 - href: compiler-errors-2/compiler-error-c3457.md - - name: Compiler error C3458 - href: compiler-errors-2/compiler-error-c3458.md - - name: Compiler error C3459 - href: compiler-errors-2/compiler-error-c3459.md - - name: Compiler error C3460 - href: compiler-errors-2/compiler-error-c3460.md - - name: Compiler error C3461 - href: compiler-errors-2/compiler-error-c3461.md - - name: Compiler error C3462 - href: compiler-errors-2/compiler-error-c3462.md - - name: Compiler error C3463 - href: compiler-errors-2/compiler-error-c3463.md - - name: Compiler error C3464 - href: compiler-errors-2/compiler-error-c3464.md - - name: Compiler error C3465 - href: compiler-errors-2/compiler-error-c3465.md - - name: Compiler error C3466 - href: compiler-errors-2/compiler-error-c3466.md - - name: Compiler error C3467 - href: compiler-errors-2/compiler-error-c3467.md - - name: Compiler error C3468 - href: compiler-errors-2/compiler-error-c3468.md - - name: Compiler error C3469 - href: compiler-errors-2/compiler-error-c3469.md - - name: Compiler error C3470 - href: compiler-errors-2/compiler-error-c3470.md - - name: Compiler error C3480 - href: compiler-errors-2/compiler-error-c3480.md - - name: Compiler error C3481 - href: compiler-errors-2/compiler-error-c3481.md - - name: Compiler error C3482 - href: compiler-errors-2/compiler-error-c3482.md - - name: Compiler error C3483 - href: compiler-errors-2/compiler-error-c3483.md - - name: Compiler error C3484 - href: compiler-errors-2/compiler-error-c3484.md - - name: Compiler error C3485 - href: compiler-errors-2/compiler-error-c3485.md - - name: Compiler error C3487 - href: compiler-errors-2/compiler-error-c3487.md - - name: Compiler error C3488 - href: compiler-errors-2/compiler-error-c3488.md - - name: Compiler error C3489 - href: compiler-errors-2/compiler-error-c3489.md - - name: Compiler error C3490 - href: compiler-errors-2/compiler-error-c3490.md - - name: Compiler error C3491 - href: compiler-errors-2/compiler-error-c3491.md - - name: Compiler error C3492 - href: compiler-errors-2/compiler-error-c3492.md - - name: Compiler error C3493 - href: compiler-errors-2/compiler-error-c3493.md - - name: Compiler error C3495 - href: compiler-errors-2/compiler-error-c3495.md - - name: Compiler error C3496 - href: compiler-errors-2/compiler-error-c3496.md - - name: Compiler error C3498 - href: compiler-errors-2/compiler-error-c3498.md - - name: Compiler error C3499 - href: compiler-errors-2/compiler-error-c3499.md - - name: Compiler errors C3500 through C3999 - expanded: false - items: - - name: Compiler errors C3500 through C3999 - href: compiler-errors-2/compiler-errors-c3500-through-c3999.md - - name: Compiler error C3500 - href: compiler-errors-2/compiler-error-c3500.md - - name: Compiler error C3501 - href: compiler-errors-2/compiler-error-c3501.md - - name: Compiler error C3505 - href: compiler-errors-2/compiler-error-c3505.md - - name: Compiler error C3506 - href: compiler-errors-2/compiler-error-c3506.md - - name: Compiler error C3507 - href: compiler-errors-2/compiler-error-c3507.md - - name: Compiler error C3508 - href: compiler-errors-2/compiler-error-c3508.md - - name: Compiler error C3509 - href: compiler-errors-2/compiler-error-c3509.md - - name: Compiler error C3510 - href: compiler-errors-2/compiler-error-c3510.md - - name: Compiler error C3519 - href: compiler-errors-2/compiler-error-c3519.md - - name: Compiler error C3530 - href: compiler-errors-2/compiler-error-c3530.md - - name: Compiler error C3531 - href: compiler-errors-2/compiler-error-c3531.md - - name: Compiler error C3532 - href: compiler-errors-2/compiler-error-c3532.md - - name: Compiler error C3533 - href: compiler-errors-2/compiler-error-c3533.md - - name: Compiler error C3535 - href: compiler-errors-2/compiler-error-c3535.md - - name: Compiler error C3536 - href: compiler-errors-2/compiler-error-c3536.md - - name: Compiler error C3537 - href: compiler-errors-2/compiler-error-c3537.md - - name: Compiler error C3538 - href: compiler-errors-2/compiler-error-c3538.md - - name: Compiler error C3539 - href: compiler-errors-2/compiler-error-c3539.md - - name: Compiler error C3540 - href: compiler-errors-2/compiler-error-c3540.md - - name: Compiler error C3541 - href: compiler-errors-2/compiler-error-c3541.md - - name: Compiler error C3550 - href: compiler-errors-2/compiler-error-c3550.md - - name: Compiler error C3551 - href: compiler-errors-2/compiler-error-c3551.md - - name: Compiler error C3552 - href: compiler-errors-2/compiler-error-c3552.md - - name: Compiler error C3553 - href: compiler-errors-2/compiler-error-c3553.md - - name: Compiler error C3554 - href: compiler-errors-2/compiler-error-c3554.md - - name: Compiler error C3555 - href: compiler-errors-2/compiler-error-c3555.md - - name: Compiler error C3556 - href: compiler-errors-2/compiler-error-c3556.md - - name: Compiler error C3603 - href: compiler-errors-2/compiler-error-c3603.md - - name: Compiler error C3609 - href: compiler-errors-2/compiler-error-c3609.md - - name: Compiler error C3610 - href: compiler-errors-2/compiler-error-c3610.md - - name: Compiler error C3611 - href: compiler-errors-2/compiler-error-c3611.md - - name: Compiler error C3612 - href: compiler-errors-2/compiler-error-c3612.md - - name: Compiler error C3615 - href: compiler-errors-2/compiler-error-c3615.md - - name: Compiler error C3618 - href: compiler-errors-2/compiler-error-c3618.md - - name: Compiler error C3619 - href: compiler-errors-2/compiler-error-c3619.md - - name: Compiler error C3622 - href: compiler-errors-2/compiler-error-c3622.md - - name: Compiler error C3623 - href: compiler-errors-2/compiler-error-c3623.md - - name: Compiler error C3624 - href: compiler-errors-2/compiler-error-c3624.md - - name: Compiler error C3625 - href: compiler-errors-2/compiler-error-c3625.md - - name: Compiler error C3626 - href: compiler-errors-2/compiler-error-c3626.md - - name: Compiler error C3627 - href: compiler-errors-2/compiler-error-c3627.md - - name: Compiler error C3628 - href: compiler-errors-2/compiler-error-c3628.md - - name: Compiler error C3630 - href: compiler-errors-2/compiler-error-c3630.md - - name: Compiler error C3631 - href: compiler-errors-2/compiler-error-c3631.md - - name: Compiler error C3632 - href: compiler-errors-2/compiler-error-c3632.md - - name: Compiler error C3633 - href: compiler-errors-2/compiler-error-c3633.md - - name: Compiler error C3634 - href: compiler-errors-2/compiler-error-c3634.md - - name: Compiler error C3637 - href: compiler-errors-2/compiler-error-c3637.md - - name: Compiler error C3638 - href: compiler-errors-2/compiler-error-c3638.md - - name: Compiler error C3640 - href: compiler-errors-2/compiler-error-c3640.md - - name: Compiler error C3641 - href: compiler-errors-2/compiler-error-c3641.md - - name: Compiler error C3642 - href: compiler-errors-2/compiler-error-c3642.md - - name: Compiler error C3644 - href: compiler-errors-2/compiler-error-c3644.md - - name: Compiler error C3645 - href: compiler-errors-2/compiler-error-c3645.md - - name: Compiler error C3646 - href: compiler-errors-2/compiler-error-c3646.md - - name: Compiler error C3648 - href: compiler-errors-2/compiler-error-c3648.md - - name: Compiler error C3650 - href: compiler-errors-2/compiler-error-c3650.md - - name: Compiler error C3651 - href: compiler-errors-2/compiler-error-c3651.md - - name: Compiler error C3652 - href: compiler-errors-2/compiler-error-c3652.md - - name: Compiler error C3653 - href: compiler-errors-2/compiler-error-c3653.md - - name: Compiler error C3654 - href: compiler-errors-2/compiler-error-c3654.md - - name: Compiler error C3655 - href: compiler-errors-2/compiler-error-c3655.md - - name: Compiler error C3656 - href: compiler-errors-2/compiler-error-c3656.md - - name: Compiler error C3657 - href: compiler-errors-2/compiler-error-c3657.md - - name: Compiler error C3661 - href: compiler-errors-2/compiler-error-c3661.md - - name: Compiler error C3662 - href: compiler-errors-2/compiler-error-c3662.md - - name: Compiler error C3665 - href: compiler-errors-2/compiler-error-c3665.md - - name: Compiler error C3666 - href: compiler-errors-2/compiler-error-c3666.md - - name: Compiler error C3668 - href: compiler-errors-2/compiler-error-c3668.md - - name: Compiler error C3669 - href: compiler-errors-2/compiler-error-c3669.md - - name: Compiler error C3670 - href: compiler-errors-2/compiler-error-c3670.md - - name: Compiler error C3671 - href: compiler-errors-2/compiler-error-c3671.md - - name: Compiler error C3672 - href: compiler-errors-2/compiler-error-c3672.md - - name: Compiler error C3673 - href: compiler-errors-2/compiler-error-c3673.md - - name: Compiler error C3675 - href: compiler-errors-2/compiler-error-c3675.md - - name: Compiler error C3697 - href: compiler-errors-2/compiler-error-c3697.md - - name: Compiler error C3698 - href: compiler-errors-2/compiler-error-c3698.md - - name: Compiler error C3699 - href: compiler-errors-2/compiler-error-c3699.md - - name: Compiler error C3701 - href: compiler-errors-2/compiler-error-c3701.md - - name: Compiler error C3702 - href: compiler-errors-2/compiler-error-c3702.md - - name: Compiler error C3703 - href: compiler-errors-2/compiler-error-c3703.md - - name: Compiler error C3704 - href: compiler-errors-2/compiler-error-c3704.md - - name: Compiler error C3705 - href: compiler-errors-2/compiler-error-c3705.md - - name: Compiler error C3706 - href: compiler-errors-2/compiler-error-c3706.md - - name: Compiler error C3707 - href: compiler-errors-2/compiler-error-c3707.md - - name: Compiler error C3708 - href: compiler-errors-2/compiler-error-c3708.md - - name: Compiler error C3709 - href: compiler-errors-2/compiler-error-c3709.md - - name: Compiler error C3710 - href: compiler-errors-2/compiler-error-c3710.md - - name: Compiler error C3711 - href: compiler-errors-2/compiler-error-c3711.md - - name: Compiler error C3712 - href: compiler-errors-2/compiler-error-c3712.md - - name: Compiler error C3713 - href: compiler-errors-2/compiler-error-c3713.md - - name: Compiler error C3714 - href: compiler-errors-2/compiler-error-c3714.md - - name: Compiler error C3715 - href: compiler-errors-2/compiler-error-c3715.md - - name: Compiler error C3717 - href: compiler-errors-2/compiler-error-c3717.md - - name: Compiler error C3718 - href: compiler-errors-2/compiler-error-c3718.md - - name: Compiler error C3719 - href: compiler-errors-2/compiler-error-c3719.md - - name: Compiler error C3721 - href: compiler-errors-2/compiler-error-c3721.md - - name: Compiler error C3722 - href: compiler-errors-2/compiler-error-c3722.md - - name: Compiler error C3723 - href: compiler-errors-2/compiler-error-c3723.md - - name: Compiler error C3724 - href: compiler-errors-2/compiler-error-c3724.md - - name: Compiler error C3727 - href: compiler-errors-2/compiler-error-c3727.md - - name: Compiler error C3728 - href: compiler-errors-2/compiler-error-c3728.md - - name: Compiler error C3731 - href: compiler-errors-2/compiler-error-c3731.md - - name: Compiler error C3732 - href: compiler-errors-2/compiler-error-c3732.md - - name: Compiler error C3733 - href: compiler-errors-2/compiler-error-c3733.md - - name: Compiler error C3734 - href: compiler-errors-2/compiler-error-c3734.md - - name: Compiler error C3736 - href: compiler-errors-2/compiler-error-c3736.md - - name: Compiler error C3737 - href: compiler-errors-2/compiler-error-c3737.md - - name: Compiler error C3738 - href: compiler-errors-2/compiler-error-c3738.md - - name: Compiler error C3739 - href: compiler-errors-2/compiler-error-c3739.md - - name: Compiler error C3740 - href: compiler-errors-2/compiler-error-c3740.md - - name: Compiler error C3741 - href: compiler-errors-2/compiler-error-c3741.md - - name: Compiler error C3743 - href: compiler-errors-2/compiler-error-c3743.md - - name: Compiler error C3744 - href: compiler-errors-2/compiler-error-c3744.md - - name: Compiler error C3745 - href: compiler-errors-2/compiler-error-c3745.md - - name: Compiler error C3747 - href: compiler-errors-2/compiler-error-c3747.md - - name: Compiler error C3748 - href: compiler-errors-2/compiler-error-c3748.md - - name: Compiler error C3749 - href: compiler-errors-2/compiler-error-c3749.md - - name: Compiler error C3752 - href: compiler-errors-2/compiler-error-c3752.md - - name: Compiler error C3753 - href: compiler-errors-2/compiler-error-c3753.md - - name: Compiler error C3754 - href: compiler-errors-2/compiler-error-c3754.md - - name: Compiler error C3755 - href: compiler-errors-2/compiler-error-c3755.md - - name: Compiler error C3761 - href: compiler-errors-2/compiler-error-c3761.md - - name: Compiler error C3762 - href: compiler-errors-2/compiler-error-c3762.md - - name: Compiler error C3763 - href: compiler-errors-2/compiler-error-c3763.md - - name: Compiler error C3764 - href: compiler-errors-2/compiler-error-c3764.md - - name: Compiler error C3765 - href: compiler-errors-2/compiler-error-c3765.md - - name: Compiler error C3766 - href: compiler-errors-2/compiler-error-c3766.md - - name: Compiler error C3767 - href: compiler-errors-2/compiler-error-c3767.md - - name: Compiler error C3768 - href: compiler-errors-2/compiler-error-c3768.md - - name: Compiler error C3769 - href: compiler-errors-2/compiler-error-c3769.md - - name: Compiler error C3771 - href: compiler-errors-2/compiler-error-c3771.md - - name: Compiler error C3772 - href: compiler-errors-2/compiler-error-c3772.md - - name: Compiler error C3779 - href: compiler-errors-2/compiler-error-c3779.md - - name: Compiler error C3797 - href: compiler-errors-2/compiler-error-c3797.md - - name: Compiler error C3798 - href: compiler-errors-2/compiler-error-c3798.md - - name: Compiler error C3799 - href: compiler-errors-2/compiler-error-c3799.md - - name: Compiler error C3800 - href: compiler-errors-2/compiler-error-c3800.md - - name: Compiler error C3803 - href: compiler-errors-2/compiler-error-c3803.md - - name: Compiler error C3804 - href: compiler-errors-2/compiler-error-c3804.md - - name: Compiler error C3805 - href: compiler-errors-2/compiler-error-c3805.md - - name: Compiler error C3807 - href: compiler-errors-2/compiler-error-c3807.md - - name: Compiler error C3808 - href: compiler-errors-2/compiler-error-c3808.md - - name: Compiler error C3809 - href: compiler-errors-2/compiler-error-c3809.md - - name: Compiler error C3812 - href: compiler-errors-2/compiler-error-c3812.md - - name: Compiler error C3813 - href: compiler-errors-2/compiler-error-c3813.md - - name: Compiler error C3815 - href: compiler-errors-2/compiler-error-c3815.md - - name: Compiler error C3816 - href: compiler-errors-2/compiler-error-c3816.md - - name: Compiler error C3817 - href: compiler-errors-2/compiler-error-c3817.md - - name: Compiler error C3818 - href: compiler-errors-2/compiler-error-c3818.md - - name: Compiler error C3820 - href: compiler-errors-2/compiler-error-c3820.md - - name: Compiler error C3821 - href: compiler-errors-2/compiler-error-c3821.md - - name: Compiler error C3824 - href: compiler-errors-2/compiler-error-c3824.md - - name: Compiler error C3825 - href: compiler-errors-2/compiler-error-c3825.md - - name: Compiler error C3828 - href: compiler-errors-2/compiler-error-c3828.md - - name: Compiler error C3830 - href: compiler-errors-2/compiler-error-c3830.md - - name: Compiler error C3831 - href: compiler-errors-2/compiler-error-c3831.md - - name: Compiler error C3832 - href: compiler-errors-2/compiler-error-c3832.md - - name: Compiler error C3833 - href: compiler-errors-2/compiler-error-c3833.md - - name: Compiler error C3834 - href: compiler-errors-2/compiler-error-c3834.md - - name: Compiler error C3836 - href: compiler-errors-2/compiler-error-c3836.md - - name: Compiler error C3838 - href: compiler-errors-2/compiler-error-c3838.md - - name: Compiler error C3839 - href: compiler-errors-2/compiler-error-c3839.md - - name: Compiler error C3842 - href: compiler-errors-2/compiler-error-c3842.md - - name: Compiler error C3846 - href: compiler-errors-2/compiler-error-c3846.md - - name: Compiler error C3848 - href: compiler-errors-2/compiler-error-c3848.md - - name: Compiler error C3849 - href: compiler-errors-2/compiler-error-c3849.md - - name: Compiler error C3850 - href: compiler-errors-2/compiler-error-c3850.md - - name: Compiler error C3851 - href: compiler-errors-2/compiler-error-c3851.md - - name: Compiler error C3852 - href: compiler-errors-2/compiler-error-c3852.md - - name: Compiler error C3853 - href: compiler-errors-2/compiler-error-c3853.md - - name: Compiler error C3854 - href: compiler-errors-2/compiler-error-c3854.md - - name: Compiler error C3855 - href: compiler-errors-2/compiler-error-c3855.md - - name: Compiler error C3856 - href: compiler-errors-2/compiler-error-c3856.md - - name: Compiler error C3857 - href: compiler-errors-2/compiler-error-c3857.md - - name: Compiler error C3858 - href: compiler-errors-2/compiler-error-c3858.md - - name: Compiler error C3859 - href: compiler-errors-2/compiler-error-c3859.md - - name: Compiler error C3860 - href: compiler-errors-2/compiler-error-c3860.md - - name: Compiler error C3861 - href: compiler-errors-2/compiler-error-c3861.md - - name: Compiler error C3862 - href: compiler-errors-2/compiler-error-c3862.md - - name: Compiler error C3865 - href: compiler-errors-2/compiler-error-c3865.md - - name: Compiler error C3866 - href: compiler-errors-2/compiler-error-c3866.md - - name: Compiler error C3867 - href: compiler-errors-2/compiler-error-c3867.md - - name: Compiler error C3868 - href: compiler-errors-2/compiler-error-c3868.md - - name: Compiler error C3869 - href: compiler-errors-2/compiler-error-c3869.md - - name: Compiler error C3872 - href: compiler-errors-2/compiler-error-c3872.md - - name: Compiler error C3873 - href: compiler-errors-2/compiler-error-c3873.md - - name: Compiler error C3874 - href: compiler-errors-2/compiler-error-c3874.md - - name: Compiler error C3880 - href: compiler-errors-2/compiler-error-c3880.md - - name: Compiler error C3883 - href: compiler-errors-2/compiler-error-c3883.md - - name: Compiler error C3886 - href: compiler-errors-2/compiler-error-c3886.md - - name: Compiler error C3887 - href: compiler-errors-2/compiler-error-c3887.md - - name: Compiler error C3888 - href: compiler-errors-2/compiler-error-c3888.md - - name: Compiler error C3890 - href: compiler-errors-2/compiler-error-c3890.md - - name: Compiler error C3891 - href: compiler-errors-2/compiler-error-c3891.md - - name: Compiler error C3892 - href: compiler-errors-2/compiler-error-c3892.md - - name: Compiler error C3893 - href: compiler-errors-2/compiler-error-c3893.md - - name: Compiler error C3894 - href: compiler-errors-2/compiler-error-c3894.md - - name: Compiler error C3895 - href: compiler-errors-2/compiler-error-c3895.md - - name: Compiler error C3896 - href: compiler-errors-2/compiler-error-c3896.md - - name: Compiler error C3898 - href: compiler-errors-2/compiler-error-c3898.md - - name: Compiler error C3899 - href: compiler-errors-2/compiler-error-c3899.md - - name: Compiler error C3900 - href: compiler-errors-2/compiler-error-c3900.md - - name: Compiler error C3901 - href: compiler-errors-2/compiler-error-c3901.md - - name: Compiler error C3902 - href: compiler-errors-2/compiler-error-c3902.md - - name: Compiler error C3903 - href: compiler-errors-2/compiler-error-c3903.md - - name: Compiler error C3904 - href: compiler-errors-2/compiler-error-c3904.md - - name: Compiler error C3908 - href: compiler-errors-2/compiler-error-c3908.md - - name: Compiler error C3909 - href: compiler-errors-2/compiler-error-c3909.md - - name: Compiler error C3910 - href: compiler-errors-2/compiler-error-c3910.md - - name: Compiler error C3911 - href: compiler-errors-2/compiler-error-c3911.md - - name: Compiler error C3912 - href: compiler-errors-2/compiler-error-c3912.md - - name: Compiler error C3913 - href: compiler-errors-2/compiler-error-c3913.md - - name: Compiler error C3914 - href: compiler-errors-2/compiler-error-c3914.md - - name: Compiler error C3915 - href: compiler-errors-2/compiler-error-c3915.md - - name: Compiler error C3917 - href: compiler-errors-2/compiler-error-c3917.md - - name: Compiler error C3918 - href: compiler-errors-2/compiler-error-c3918.md - - name: Compiler error C3919 - href: compiler-errors-2/compiler-error-c3919.md - - name: Compiler error C3920 - href: compiler-errors-2/compiler-error-c3920.md - - name: Compiler error C3923 - href: compiler-errors-2/compiler-error-c3923.md - - name: Compiler errors C7000 through C7499 - expanded: false - items: - - name: Compiler errors C7000 through C7499 - href: compiler-errors-2/compiler-errors-c7000-through-c7499.md - - name: Compiler errors C7500 through C7999 - expanded: false - items: - - name: Compiler errors C7500 through C7999 - href: compiler-errors-2/compiler-errors-c7500-through-c7999.md - - name: Compiler error C7510 - href: compiler-errors-2/compiler-error-c7510.md - - name: Compiler error C7536 - href: compiler-errors-2/compiler-error-c7536.md - - name: Compiler error C7553 - href: compiler-errors-2/compiler-error-c7553.md - - name: Compiler error C7626 - href: compiler-warnings/c5208.md - - name: Compiler error C7688 - href: compiler-errors-2/compiler-error-c7688.md - - name: Compiler error C7742 - href: compiler-errors-2/compiler-error-c7742.md -- name: Compiler warnings C4000 through C5999 - expanded: false - items: - - name: Compiler warnings C4000 through C5999 - href: compiler-warnings/compiler-warnings-c4000-c5999.md - - name: Compiler warnings C4000 through C4199 - expanded: false - items: - - name: Compiler warnings C4000 through C4199 - href: compiler-warnings/compiler-warnings-c4000-through-c4199.md - - name: Compiler warning (level 4, no longer emitted) C4001 - href: compiler-warnings/compiler-warning-level-4-c4001.md - - name: Compiler warning (level 1, Error) C4002 - href: compiler-warnings/compiler-warning-level-1-c4002.md - - name: Compiler warning (level 1, Error) C4003 - href: compiler-warnings/compiler-warning-level-1-c4003.md - - name: Compiler warning (level 1) C4005 - href: compiler-warnings/compiler-warning-level-1-c4005.md - - name: Compiler warning (level 1) C4006 - href: compiler-warnings/compiler-warning-level-1-c4006.md - - name: Compiler warning (level 3) C4007 - href: compiler-warnings/compiler-warning-level-2-c4007.md - - name: Compiler warning (levels 2 and 3) C4008 - href: compiler-warnings/compiler-warning-levels-2-and-3-c4008.md - - name: Compiler warning (level 1) C4010 - href: compiler-warnings/compiler-warning-level-1-c4010.md - - name: Compiler warning (level 3) C4013 - href: compiler-warnings/compiler-warning-level-3-c4013.md - - name: Compiler warning (level 1) C4015 - href: compiler-warnings/compiler-warning-level-1-c4015.md - - name: Compiler warning (level 3) C4018 - href: compiler-warnings/compiler-warning-level-3-c4018.md - - name: Compiler warning (level 4) C4019 - href: compiler-warnings/compiler-warning-level-4-c4019.md - - name: Compiler warning (level 1) C4020 - href: compiler-warnings/compiler-warning-level-1-c4020.md - - name: Compiler warning (level 1) C4022 - href: compiler-warnings/compiler-warning-level-1-c4022.md - - name: Compiler warning (level 3) C4023 - href: compiler-warnings/compiler-warning-level-3-c4023.md - - name: Compiler warning (level 1) C4024 - href: compiler-warnings/compiler-warning-level-1-c4024.md - - name: Compiler warning (level 1) C4025 - href: compiler-warnings/compiler-warning-level-1-c4025.md - - name: Compiler warning (level 1) C4026 - href: compiler-warnings/compiler-warning-level-1-c4026.md - - name: Compiler warning (level 1) C4027 - href: compiler-warnings/compiler-warning-level-1-c4027.md - - name: Compiler warning (level 1) C4028 - href: compiler-warnings/compiler-warning-level-1-c4028.md - - name: Compiler warning (level 1) C4029 - href: compiler-warnings/compiler-warning-level-1-c4029.md - - name: Compiler warning (level 1) C4030 - href: compiler-warnings/compiler-warning-level-1-c4030.md - - name: Compiler warning (level 1) C4031 - href: compiler-warnings/compiler-warning-level-1-c4031.md - - name: Compiler warning (level 4) C4032 - href: compiler-warnings/compiler-warning-level-4-c4032.md - - name: Compiler warning (level 1) C4033 - href: compiler-warnings/compiler-warning-level-1-c4033.md - - name: Compiler warning (level 1) C4034 - href: compiler-warnings/compiler-warning-level-1-c4034.md - - name: Compiler warning (level 1) C4036 - href: compiler-warnings/compiler-warning-level-1-c4036.md - - name: Compiler warning (level 1) C4038 - href: compiler-warnings/compiler-warning-level-1-c4038.md - - name: Compiler warning (level 1) C4041 - href: compiler-warnings/compiler-warning-level-1-c4041.md - - name: Compiler warning (level 1) C4042 - href: compiler-warnings/compiler-warning-level-1-c4042.md - - name: Compiler warning (level 1) C4045 - href: compiler-warnings/compiler-warning-level-1-c4045.md - - name: Compiler warning (level 1) C4047 - href: compiler-warnings/compiler-warning-level-1-c4047.md - - name: Compiler warning (level 1) C4048 - href: compiler-warnings/compiler-warning-level-1-c4048.md - - name: Compiler warning (level 1) C4049 - href: compiler-warnings/compiler-warning-level-1-c4049.md - - name: Compiler warning (level 2) C4051 - href: compiler-warnings/compiler-warning-level-2-c4051.md - - name: Compiler warning (level 1 and level 4) C4052 - href: compiler-warnings/compiler-warning-level-1-c4052.md - - name: Compiler warning (level 4) C4053 - href: compiler-warnings/compiler-warning-level-4-c4053.md - - name: Compiler warning (level 1) C4055 - href: compiler-warnings/compiler-warning-level-1-c4055.md - - name: Compiler warning (level 2) C4056 - href: compiler-warnings/compiler-warning-level-2-c4056.md - - name: Compiler warning (level 4) C4057 - href: compiler-warnings/compiler-warning-level-4-c4057.md - - name: Compiler warning (level 4, off) C4061 - href: compiler-warnings/compiler-warning-level-4-c4061.md - - name: Compiler warning (level 4, off) C4062 - href: compiler-warnings/compiler-warning-level-4-c4062.md - - name: Compiler warning (level 3) C4066 - href: compiler-warnings/compiler-warning-level-3-c4066.md - - name: Compiler warning (level 1) C4067 - href: compiler-warnings/compiler-warning-level-1-c4067.md - - name: Compiler warning (level 1) C4068 - href: compiler-warnings/compiler-warning-level-1-c4068.md - - name: Compiler warning (level 3) C4073 - href: compiler-warnings/compiler-warning-level-3-c4073.md - - name: Compiler warning (level 1) C4074 - href: compiler-warnings/compiler-warning-level-1-c4074.md - - name: Compiler warning (level 1) C4075 - href: compiler-warnings/compiler-warning-level-1-c4075.md - - name: Compiler warning (level 1) C4076 - href: compiler-warnings/compiler-warning-level-1-c4076.md - - name: Compiler warning (level 1) C4077 - href: compiler-warnings/compiler-warning-level-1-c4077.md - - name: Compiler warning (level 1) C4079 - href: compiler-warnings/compiler-warning-level-1-c4079.md - - name: Compiler warning (level 1) C4080 - href: compiler-warnings/compiler-warning-level-1-c4080.md - - name: Compiler warning (level 1) C4081 - href: compiler-warnings/compiler-warning-level-1-c4081.md - - name: Compiler warning (level 1) C4083 - href: compiler-warnings/compiler-warning-level-1-c4083.md - - name: Compiler warning (level 1) C4085 - href: compiler-warnings/compiler-warning-level-1-c4085.md - - name: Compiler warning (level 1) C4086 - href: compiler-warnings/compiler-warning-level-1-c4086.md - - name: Compiler warning (level 1) C4087 - href: compiler-warnings/compiler-warning-level-1-c4087.md - - name: Compiler warning (level 1) C4088 - href: compiler-warnings/compiler-warning-level-1-c4088.md - - name: Compiler warning (level 1) C4089 - href: compiler-warnings/compiler-warning-level-1-c4089.md - - name: Compiler warning (level 1) C4090 - href: compiler-warnings/compiler-warning-level-1-c4090.md - - name: Compiler warning (level 1 and level 2) C4091 - href: compiler-warnings/compiler-warning-level-1-c4091.md - - name: Compiler warning (level 4) C4092 - href: compiler-warnings/compiler-warning-level-4-c4092.md - - name: Compiler warning (level 2) C4094 - href: compiler-warnings/compiler-warning-level-2-c4094.md - - name: Compiler warning (level 1) C4096 - href: compiler-warnings/compiler-warning-level-1-c4096.md - - name: Compiler warning (level 1) C4097 - href: compiler-warnings/compiler-warning-level-1-c4097.md - - name: Compiler warning (level 1) C4098 - href: compiler-warnings/compiler-warning-level-1-c4098.md - - name: Compiler warning (level 2) C4099 - href: compiler-warnings/compiler-warning-level-2-c4099.md - - name: Compiler warning (level 4) C4100 - href: compiler-warnings/compiler-warning-level-4-c4100.md - - name: Compiler warning (level 3 and level 4) C4101 - href: compiler-warnings/compiler-warning-level-3-c4101.md - - name: Compiler warning (level 3) C4102 - href: compiler-warnings/compiler-warning-level-3-c4102.md - - name: Compiler warning (level 1) C4103 - href: compiler-warnings/compiler-warning-level-1-c4103.md - - name: Compiler warning (level 1) C4109 - href: compiler-warnings/compiler-warning-level-1-c4109.md - - name: Compiler warning (level 1 and level 4) C4112 - href: compiler-warnings/compiler-warning-levels-1-and-4-c4112.md - - name: Compiler warning (level 1) C4113 - href: compiler-warnings/compiler-warning-level-1-c4113.md - - name: Compiler warning (level 1) C4114 - href: compiler-warnings/compiler-warning-level-1-c4114.md - - name: Compiler warning (levels 1 and 4) C4115 - href: compiler-warnings/compiler-warning-levels-1-and-4-c4115.md - - name: Compiler warning (level 1) C4116 - href: compiler-warnings/compiler-warning-level-1-c4116.md - - name: Compiler warning (level 1) C4117 - href: compiler-warnings/compiler-warning-level-1-c4117.md - - name: Compiler warning (level 1) C4119 - href: compiler-warnings/compiler-warning-level-1-c4119.md - - name: Compiler warning (level 1) C4120 - href: compiler-warnings/compiler-warning-level-1-c4120.md - - name: Compiler warning (level 4) C4121 - href: compiler-warnings/compiler-warning-level-4-c4121.md - - name: Compiler warning (level 1) C4122 - href: compiler-warnings/compiler-warning-level-1-c4122.md - - name: Compiler warning (level 1) C4124 - href: compiler-warnings/compiler-warning-level-1-c4124.md - - name: Compiler warning (level 4) C4125 - href: compiler-warnings/compiler-warning-level-4-c4125.md - - name: Compiler warning (level 4) C4127 - href: compiler-warnings/compiler-warning-level-4-c4127.md - - name: Compiler warning (level 1) C4129 - href: compiler-warnings/compiler-warning-level-1-c4129.md - - name: Compiler warning (level 4) C4130 - href: compiler-warnings/compiler-warning-level-4-c4130.md - - name: Compiler warning (level 4) C4131 - href: compiler-warnings/compiler-warning-level-4-c4131.md - - name: Compiler warning (level 4) C4132 - href: compiler-warnings/compiler-warning-level-4-c4132.md - - name: Compiler warning (level 1 and level 3) C4133 - href: compiler-warnings/compiler-warning-level-3-c4133.md - - name: Compiler warning (level 1) C4138 - href: compiler-warnings/compiler-warning-level-1-c4138.md - - name: Compiler warning (level 1, Error) C4141 - href: compiler-warnings/compiler-warning-level-1-c4141.md - - name: Compiler warning (level 1) C4142 - href: compiler-warnings/compiler-warning-level-1-c4142.md - - name: Compiler warning (level 1) C4143 - href: compiler-warnings/compiler-warning-level-1-c4143.md - - name: Compiler warning (level 1) C4144 - href: compiler-warnings/compiler-warning-level-1-c4144.md - - name: Compiler warning (level 1) C4145 - href: compiler-warnings/compiler-warning-level-1-c4145.md - - name: Compiler warning (level 2) C4146 - href: compiler-warnings/compiler-warning-level-2-c4146.md - - name: Compiler warning (level 2) C4150 - href: compiler-warnings/compiler-warning-level-2-c4150.md - - name: Compiler warning (level 4) C4152 - href: compiler-warnings/compiler-warning-level-4-c4152.md - - name: Compiler warning (level 1) C4153 - href: compiler-warnings/compiler-warning-level-1-c4153.md - - name: Compiler warning (level 1) C4154 - href: compiler-warnings/compiler-warning-level-1-c4154.md - - name: Compiler warning (level 1) C4155 - href: compiler-warnings/compiler-warning-level-1-c4155.md - - name: Compiler warning (level 2) C4156 - href: compiler-warnings/compiler-warning-level-2-c4156.md - - name: Compiler warning (level 1) C4157 - href: compiler-warnings/compiler-warning-level-1-c4157.md - - name: Compiler warning (level 1) C4158 - href: compiler-warnings/compiler-warning-level-1-c4158.md - - name: Compiler warning (level 3) C4159 - href: compiler-warnings/compiler-warning-level-3-c4159.md - - name: Compiler warning (level 1) C4160 - href: compiler-warnings/compiler-warning-level-1-c4160.md - - name: Compiler warning (level 3) C4161 - href: compiler-warnings/compiler-warning-level-3-c4161.md - - name: Compiler warning (level 1) C4162 - href: compiler-warnings/compiler-warning-level-1-c4162.md - - name: Compiler warning (level 1) C4163 - href: compiler-warnings/compiler-warning-level-1-c4163.md - - name: Compiler warning (level 1) C4164 - href: compiler-warnings/compiler-warning-level-1-c4164.md - - name: Compiler warning (level 3, off) C4165 - href: compiler-warnings/compiler-warning-level-1-c4165.md - - name: Compiler warning (level 1) C4166 - href: compiler-warnings/compiler-warning-level-1-c4166.md - - name: Compiler warning (level 1) C4167 - href: compiler-warnings/compiler-warning-level-1-c4167.md - - name: Compiler warning (level 1) C4168 - href: compiler-warnings/compiler-warning-level-1-c4168.md - - name: Compiler warning (level 1) C4172 - href: compiler-warnings/compiler-warning-level-1-c4172.md - - name: Compiler warning (level 1) C4174 - href: compiler-warnings/compiler-warning-level-1-c4174.md - - name: Compiler warning (level 1) C4175 - href: compiler-warnings/compiler-warning-level-1-c4175.md - - name: Compiler warning (level 1) C4176 - href: compiler-warnings/compiler-warning-level-1-c4176.md - - name: Compiler warning (level 1) C4177 - href: compiler-warnings/compiler-warning-level-1-c4177.md - - name: Compiler warning (level 1) C4178 - href: compiler-warnings/compiler-warning-level-1-c4178.md - - name: Compiler warning (level 1) C4179 - href: compiler-warnings/compiler-warning-level-1-c4179.md - - name: Compiler warning (level 1) C4180 - href: compiler-warnings/compiler-warning-level-1-c4180.md - - name: Compiler warning (level 1) C4182 - href: compiler-warnings/compiler-warning-level-1-c4182.md - - name: Compiler warning (level 1) C4183 - href: compiler-warnings/compiler-warning-level-1-c4183.md - - name: Compiler warning (level 1) C4185 - href: compiler-warnings/compiler-warning-level-1-c4185.md - - name: Compiler warning (level 1) C4186 - href: compiler-warnings/compiler-warning-level-1-c4186.md - - name: Compiler warning (level 1) C4187 - href: compiler-warnings/compiler-warning-level-1-c4187.md - - name: Compiler warning (level 3 and level 4) C4189 - href: compiler-warnings/compiler-warning-level-4-c4189.md - - name: Compiler warning (level 1) C4190 - href: compiler-warnings/compiler-warning-level-1-c4190.md - - name: Compiler warning (level 3, off) C4191 - href: compiler-warnings/compiler-warning-level-3-c4191.md - - name: Compiler warning (level 3) C4192 - href: compiler-warnings/compiler-warning-level-3-c4192.md - - name: Compiler warning (level 3) C4197 - href: compiler-warnings/compiler-warning-level-3-c4197.md - - name: Compiler warnings C4200 through C4399 - expanded: false - items: - - name: Compiler warnings C4200 through C4399 - href: compiler-warnings/compiler-warnings-c4200-through-c4399.md - - name: Compiler warning (levels 2 and 4) C4200 - href: compiler-warnings/compiler-warning-levels-2-and-4-c4200.md - - name: Compiler warning (level 4) C4201 - href: compiler-warnings/compiler-warning-level-4-c4201.md - - name: Compiler warning (level 4) C4202 - href: compiler-warnings/compiler-warning-level-4-c4202.md - - name: Compiler warning (level 4) C4204 - href: compiler-warnings/compiler-warning-level-4-c4204.md - - name: Compiler warning (level 4) C4205 - href: compiler-warnings/compiler-warning-level-4-c4205.md - - name: Compiler warning (level 4) C4206 - href: compiler-warnings/compiler-warning-level-4-c4206.md - - name: Compiler warning (level 4) C4207 - href: compiler-warnings/compiler-warning-level-4-c4207.md - - name: Compiler warning (level 4) C4208 - href: compiler-warnings/compiler-warning-level-4-c4208.md - - name: Compiler warning (level 4) C4210 - href: compiler-warnings/compiler-warning-level-4-c4210.md - - name: Compiler warning (level 4) C4211 - href: compiler-warnings/compiler-warning-level-4-c4211.md - - name: Compiler warning (level 4) C4212 - href: compiler-warnings/compiler-warning-level-4-c4212.md - - name: Compiler warning (level 4) C4213 - href: compiler-warnings/compiler-warning-level-4-c4213.md - - name: Compiler warning (level 4) C4214 - href: compiler-warnings/compiler-warning-level-4-c4214.md - - name: Compiler warning (level 1) C4215 - href: compiler-warnings/compiler-warning-level-1-c4215.md - - name: Compiler warning (level 1) C4216 - href: compiler-warnings/compiler-warning-level-1-c4216.md - - name: Compiler warning (level 1) C4218 - href: compiler-warnings/compiler-warning-level-1-c4218.md - - name: Compiler warning (level 4) C4220 - href: compiler-warnings/compiler-warning-level-4-c4220.md - - name: Compiler warning (level 4) C4221 - href: compiler-warnings/compiler-warning-level-4-c4221.md - - name: Compiler warning (levels 1 and 4) C4223 - href: compiler-warnings/compiler-warning-levels-1-and-4-c4223.md - - name: Compiler warning (level 1) C4224 - href: compiler-warnings/compiler-warning-level-1-c4224.md - - name: Compiler warning (level 1) C4226 - href: compiler-warnings/compiler-warning-level-1-c4226.md - - name: Compiler warning (level 1) C4227 - href: compiler-warnings/compiler-warning-level-1-c4227.md - - name: Compiler warning (level 1) C4228 - href: compiler-warnings/compiler-warning-level-1-c4228.md - - name: Compiler warning (level 1) C4229 - href: compiler-warnings/compiler-warning-level-1-c4229.md - - name: Compiler warning (level 1) C4230 - href: compiler-warnings/compiler-warning-level-1-c4230.md - - name: Compiler warning (level 4) C4232 - href: compiler-warnings/compiler-warning-level-4-c4232.md - - name: Compiler warning (level 4) C4233 - href: compiler-warnings/compiler-warning-level-4-c4233.md - - name: Compiler warning (level 4) C4234 - href: compiler-warnings/compiler-warning-level-4-c4234.md - - name: Compiler warning (level 4) C4235 - href: compiler-warnings/compiler-warning-level-4-c4235.md - - name: Compiler warning (level 1) C4237 - href: compiler-warnings/compiler-warning-level-1-c4237.md - - name: Compiler warning (level 4) C4238 - href: compiler-warnings/compiler-warning-level-4-c4238.md - - name: Compiler warning (level 4) C4239 - href: compiler-warnings/compiler-warning-level-4-c4239.md - - name: Compiler warning (level 3) C4240 - href: compiler-warnings/compiler-warning-level-3-c4240.md - - name: Compiler warning (level 4) C4242 - href: compiler-warnings/compiler-warning-level-4-c4242.md - - name: Compiler warning (level 3) C4243 - href: compiler-warnings/compiler-warning-level-3-c4243.md - - name: Compiler warning (level 2) C4244 - href: compiler-warnings/compiler-warning-level-2-c4244.md - - name: Compiler warning (levels 3 and 4) C4244 - href: compiler-warnings/compiler-warning-levels-3-and-4-c4244.md - - name: Compiler warning (level 4) C4245 - href: compiler-warnings/compiler-warning-level-4-c4245.md - - name: Compiler warning (level 2) C4250 - href: compiler-warnings/compiler-warning-level-2-c4250.md - - name: Compiler warning (level 1) C4251 - href: compiler-warnings/compiler-warning-level-1-c4251.md - - name: Compiler warning (level 4) C4254 - href: compiler-warnings/compiler-warning-level-4-c4254.md - - name: Compiler warning (level 4, off) C4255 - href: compiler-warnings/compiler-warning-level-4-c4255.md - - name: Compiler warning (level 4) C4256 - href: compiler-warnings/compiler-warning-level-4-c4256.md - - name: Compiler warning (level 1) C4258 - href: compiler-warnings/compiler-warning-level-1-c4258.md - - name: Compiler warning (level 4, off) C4263 - href: compiler-warnings/compiler-warning-level-4-c4263.md - - name: Compiler warning (level 4, off) C4264 - href: compiler-warnings/compiler-warning-level-1-c4264.md - - name: Compiler warning (level 3, off) C4265 - href: compiler-warnings/compiler-warning-level-3-c4265.md - - name: Compiler warning (level 4, off) C4266 - href: compiler-warnings/compiler-warning-level-4-c4266.md - - name: Compiler warning (level 3) C4267 - href: compiler-warnings/compiler-warning-level-3-c4267.md - - name: Compiler warning (level 4) C4268 - href: compiler-warnings/compiler-warning-level-4-c4268.md - - name: Compiler warning (level 1) C4269 - href: compiler-warnings/compiler-warning-level-1-c4269.md - - name: Compiler warning (level 1) C4272 - href: compiler-warnings/compiler-warning-level-1-c4272.md - - name: Compiler warning (level 1) C4273 - href: compiler-warnings/compiler-warning-level-1-c4273.md - - name: Compiler warning (level 1) C4274 - href: compiler-warnings/compiler-warning-level-1-c4274.md - - name: Compiler warning (level 2) C4275 - href: compiler-warnings/compiler-warning-level-2-c4275.md - - name: Compiler warning (level 1) C4276 - href: compiler-warnings/compiler-warning-level-1-c4276.md - - name: Compiler warning (level 3 and level 4) C4278 - href: compiler-warnings/compiler-warning-level-3-c4278.md - - name: Compiler warning (level 3) C4280 - href: compiler-warnings/compiler-warning-level-3-c4280.md - - name: Compiler warning (level 3) C4281 - href: compiler-warnings/compiler-warning-level-3-c4281.md - - name: Compiler warning (level 3) C4282 - href: compiler-warnings/compiler-warning-level-3-c4282.md - - name: Compiler warning (level 3) C4283 - href: compiler-warnings/compiler-warning-level-3-c4283.md - - name: Compiler warning (level 2) C4285 - href: compiler-warnings/compiler-warning-level-2-c4285.md - - name: Compiler warning (level 1) C4286 - href: compiler-warnings/compiler-warning-level-1-c4286.md - - name: Compiler warning (level 3, off) C4287 - href: compiler-warnings/compiler-warning-level-3-c4287.md - - name: Compiler warning (level 1) C4288 - href: compiler-warnings/compiler-warning-level-1-c4288.md - - name: Compiler warning (level 4, off) C4289 - href: compiler-warnings/compiler-warning-level-4-c4289.md - - name: Compiler warning (level 3) C4290 - href: compiler-warnings/compiler-warning-level-3-c4290.md - - name: Compiler warning (level 1) C4291 - href: compiler-warnings/compiler-warning-level-1-c4291.md - - name: Compiler warning (level 1) C4293 - href: compiler-warnings/compiler-warning-level-1-c4293.md - - name: Compiler warning (level 4) C4295 - href: compiler-warnings/compiler-warning-level-4-c4295.md - - name: Compiler warning (level 4, off) C4296 - href: compiler-warnings/compiler-warning-level-4-c4296.md - - name: Compiler warning (level 1) C4297 - href: compiler-warnings/compiler-warning-level-1-c4297.md - - name: Compiler warning (level 2) C4302 - href: compiler-warnings/compiler-warning-level-2-c4302.md - - name: Compiler warning (level 1) C4305 - href: compiler-warnings/compiler-warning-level-1-c4305.md - - name: Compiler warning (level 3) C4306 - href: compiler-warnings/compiler-warning-level-3-c4306.md - - name: Compiler warning (level 2) C4307 - href: compiler-warnings/compiler-warning-level-2-c4307.md - - name: Compiler warning (level 2) C4308 - href: compiler-warnings/compiler-warning-level-2-c4308.md - - name: Compiler warning (level 2) C4309 - href: compiler-warnings/compiler-warning-level-2-c4309.md - - name: Compiler warning (level 4) C4310 - href: compiler-warnings/compiler-warning-level-3-c4310.md - - name: Compiler warning (level 1) C4311 - href: compiler-warnings/compiler-warning-level-1-c4311.md - - name: Compiler warning (level 1) C4312 - href: compiler-warnings/compiler-warning-level-1-c4312.md - - name: Compiler warning (level 1) C4313 - href: compiler-warnings/compiler-warning-level-1-c4313.md - - name: Compiler warning (level 3) C4316 - href: compiler-warnings/compiler-warning-level-3-c4316.md - - name: Compiler warning (level 1) C4319 - href: compiler-warnings/compiler-warning-level-1-c4319.md - - name: Compiler warning (level 4) C4324 - href: compiler-warnings/compiler-warning-level-4-c4324.md - - name: Compiler warning (level 1) C4325 - href: compiler-warnings/compiler-warning-level-1-c4325.md - - name: Compiler warning (level 1) C4326 - href: compiler-warnings/compiler-warning-level-1-c4326.md - - name: Compiler warning (level 1) C4329 - href: compiler-warnings/compiler-warning-level-1-c4329.md - - name: Compiler warning (level 1) C4333 - href: compiler-warnings/compiler-warning-level-1-c4333.md - - name: Compiler warning (level 3) C4334 - href: compiler-warnings/compiler-warning-level-3-c4334.md - - name: Compiler warning (level 1) C4335 - href: compiler-warnings/compiler-warning-c4335.md - - name: Compiler warning (level 4) C4336 - href: compiler-warnings/compiler-warning-level-4-c4336.md - - name: Compiler warning (level 4) C4337 - href: compiler-warnings/compiler-warning-level-4-c4337.md - - name: Compiler warning (level 4, off) C4339 - href: compiler-warnings/compiler-warning-level-4-c4339.md - - name: Compiler warning (level 1) C4340 - href: compiler-warnings/compiler-warning-level-1-c4340.md - - name: Compiler warning (level 1, no longer emitted) C4342 - href: compiler-warnings/compiler-warning-level-1-c4342.md - - name: Compiler warning (level 4) C4343 - href: compiler-warnings/compiler-warning-level-4-c4343.md - - name: Compiler warning (level 1) C4344 - href: compiler-warnings/compiler-warning-level-1-c4344.md - - name: Compiler warning (level 1) C4346 - href: compiler-warnings/compiler-warning-level-1-c4346.md - - name: Compiler warning (level 1) C4348 - href: compiler-warnings/compiler-warning-level-1-c4348.md - - name: Compiler warning (level 1, no longer emitted) C4350 - href: compiler-warnings/compiler-warning-level-1-c4350.md - - name: Compiler warning (level 1) C4353 - href: compiler-warnings/compiler-warning-level-1-c4353.md - - name: Compiler warning C4355 - href: compiler-warnings/compiler-warning-c4355.md - - name: Compiler warning (level 2) C4356 - href: compiler-warnings/compiler-warning-level-2-c4356.md - - name: Compiler warning (level 3) C4357 - href: compiler-warnings/compiler-warning-level-3-c4357.md - - name: Compiler warning (level 1) C4358 - href: compiler-warnings/compiler-warning-level-1-c4358.md - - name: Compiler warning (level 1 and level 3) C4359 - href: compiler-warnings/compiler-warning-level-3-c4359.md - - name: Compiler warning (level 1) C4364 - href: compiler-warnings/compiler-warning-level-1-c4364.md - - name: Compiler warning (level 4, off) C4365 - href: compiler-warnings/compiler-warning-level-4-c4365.md - - name: Compiler warning (level 4) C4366 - href: compiler-warnings/compiler-warning-level-4-c4366.md - - name: Compiler warning (level 1, Error) C4368 - href: compiler-warnings/compiler-warning-c4368.md - - name: Compiler warning (level 1) C4369 - href: compiler-warnings/compiler-warning-level-1-c4369.md - - name: Compiler warning (level 3, off) C4371 - href: compiler-warnings/c4371.md - - name: Compiler warning (level 4) C4373 - href: compiler-warnings/compiler-warning-level-3-c4373.md - - name: Compiler warning (level 1) C4374 - href: compiler-warnings/compiler-warning-level-1-c4374.md - - name: Compiler warning (level 1) C4375 - href: compiler-warnings/compiler-warning-level-1-c4375.md - - name: Compiler warning (level 1) C4376 - href: compiler-warnings/compiler-warning-level-1-c4376.md - - name: Compiler warning (level 1) C4377 - href: compiler-warnings/compiler-warning-level-1-c4377.md - - name: Compiler warning (level 1) C4378 - href: compiler-warnings/compiler-warning-level-1-c4378.md - - name: Compiler warning (level 1) C4379 - href: compiler-warnings/compiler-warning-level-1-c4379.md - - name: Compiler warning (level 1) C4381 - href: compiler-warnings/compiler-warning-level-1-c4381.md - - name: Compiler warning (level 1) C4382 - href: compiler-warnings/compiler-warning-level-1-c4382.md - - name: Compiler warning (level 1) C4383 - href: compiler-warnings/compiler-warning-level-1-c4383.md - - name: Compiler warning (level 1) C4384 - href: compiler-warnings/compiler-warning-level-1-c4384.md - - name: Compiler warning (level 4, off) C4388 - href: compiler-warnings/c4388.md - - name: Compiler warning (level 4) C4389 - href: compiler-warnings/compiler-warning-level-4-c4389.md - - name: Compiler warning (level 3) C4390 - href: compiler-warnings/compiler-warning-level-3-c4390.md - - name: Compiler warning (level 1) C4391 - href: compiler-warnings/compiler-warning-level-1-c4391.md - - name: Compiler warning (level 1, Error) C4392 - href: compiler-warnings/compiler-warning-level-1-c4392.md - - name: Compiler warning (level 1) C4393 - href: compiler-warnings/compiler-warning-level-1-c4393.md - - name: Compiler warning (level 1, Error) C4394 - href: compiler-warnings/compiler-warning-c4394.md - - name: Compiler warning (level 1) C4395 - href: compiler-warnings/compiler-warning-level-1-c4395.md - - name: Compiler warning (level 2) C4396 - href: compiler-warnings/compiler-warning-level-2-c4396.md - - name: Compiler warning (level 1) C4397 - href: compiler-warnings/compiler-warning-level-1-c4397.md - - name: Compiler warning (level 3) C4398 - href: compiler-warnings/compiler-warning-level-3-c4398.md - - name: Compiler warning (level 1, Error) C4399 - href: compiler-warnings/compiler-warning-level-1-c4399.md - - name: Compiler warnings C4400 through C4599 - expanded: false - items: - - name: Compiler warnings C4400 through C4599 - href: compiler-warnings/compiler-warnings-c4400-through-c4599.md - - name: Compiler warning (level 4, Error) C4400 - href: compiler-warnings/compiler-warning-level-4-c4400.md - - name: Compiler warning (level 1) C4401 - href: compiler-warnings/compiler-warning-level-1-c4401.md - - name: Compiler warning (level 1) C4402 - href: compiler-warnings/compiler-warning-level-1-c4402.md - - name: Compiler warning (level 1) C4403 - href: compiler-warnings/compiler-warning-level-1-c4403.md - - name: Compiler warning (level 3) C4404 - href: compiler-warnings/compiler-warning-level-3-c4404.md - - name: Compiler warning (level 1) C4405 - href: compiler-warnings/compiler-warning-level-1-c4405.md - - name: Compiler warning (level 1) C4406 - href: compiler-warnings/compiler-warning-level-1-c4406.md - - name: Compiler warning (level 1) C4407 - href: compiler-warnings/compiler-warning-level-1-c4407.md - - name: Compiler warning (level 4) C4408 - href: compiler-warnings/compiler-warning-level-4-c4408.md - - name: Compiler warning (level 1) C4409 - href: compiler-warnings/compiler-warning-level-1-c4409.md - - name: Compiler warning (level 1) C4410 - href: compiler-warnings/compiler-warning-level-1-c4410.md - - name: Compiler warning (level 1) C4411 - href: compiler-warnings/compiler-warning-level-1-c4411.md - - name: Compiler warning (level 2, off) C4412 - href: compiler-warnings/compiler-warning-level-2-c4412.md - - name: Compiler warning (level 3) C4414 - href: compiler-warnings/compiler-warning-level-3-c4414.md - - name: Compiler warning (level 1) C4420 - href: compiler-warnings/compiler-warning-level-1-c4420.md - - name: Compiler warning (level 4) C4429 - href: compiler-warnings/compiler-warning-level-4-c4429.md - - name: Compiler warning (level 1, Error) C4430 - href: compiler-warnings/compiler-warning-c4430.md - - name: Compiler warning (level 4) C4431 - href: compiler-warnings/compiler-warning-level-4-c4431.md - - name: Compiler warning (level 4) C4434 - href: compiler-warnings/compiler-warning-level-4-c4434.md - - name: Compiler warning (level 4, off) C4435 - href: compiler-warnings/compiler-warning-level-4-c4435.md - - name: Compiler warning (level 1 and level 4) C4436 - href: compiler-warnings/compiler-warning-level-1-c4436.md - - name: Compiler warning (level 1 and level 4, off) C4437 - href: compiler-warnings/compiler-warning-level-4-c4437.md - - name: Compiler warning (level 1, Error) C4439 - href: compiler-warnings/compiler-warning-c4439.md - - name: Compiler warning (level 1) C4440 - href: compiler-warnings/compiler-warning-level-1-c4440.md - - name: Compiler warning (level 1) C4441 - href: compiler-warnings/compiler-warning-level-1-c4441.md - - name: Compiler warning (level 1) C4445 - href: compiler-warnings/compiler-warning-level-1-c4445.md - - name: Compiler warning (level 1 and level 4) C4456 - href: compiler-warnings/compiler-warning-level-4-c4456.md - - name: Compiler warning (level 1 and level 4) C4457 - href: compiler-warnings/compiler-warning-level-4-c4457.md - - name: Compiler warning (level 1 and level 4) C4458 - href: compiler-warnings/compiler-warning-level-4-c4458.md - - name: Compiler warning (level 1 and level 4) C4459 - href: compiler-warnings/compiler-warning-level-4-c4459.md - - name: Compiler warning (level 4) C4460 - href: compiler-warnings/compiler-warning-level-4-c4460.md - - name: Compiler warning (level 1) C4461 - href: compiler-warnings/compiler-warning-level-1-c4461.md - - name: Compiler warning (level 1) C4462 - href: compiler-warnings/compiler-warning-level-1-c4462.md - - name: Compiler warning (level 4) C4463 - href: compiler-warnings/compiler-warning-level-4-c4463.md - - name: Compiler warning (level 4, off) C4464 - href: compiler-warnings/compiler-warning-level-4-c4464.md - - name: Compiler warning (level 1) C4470 - href: compiler-warnings/compiler-warning-level-1-c4470.md - - name: Compiler warning (level 4, off) C4471 - href: compiler-warnings/compiler-warning-level-4-c4471.md - - name: Compiler warning (level 1) C4473 - href: compiler-warnings/c4473.md - - name: Compiler warning (level 1) C4477 - href: compiler-warnings/c4477.md - - name: Compiler warning (level 4, Error) C4481 - href: compiler-warnings/compiler-warning-level-4-c4481.md - - name: Compiler warning (level 1, Error) C4484 - href: compiler-warnings/compiler-warning-c4484.md - - name: Compiler warning (level 1, Error) C4485 - href: compiler-warnings/compiler-warning-c4485.md - - name: Compiler warning (level 1) C4486 - href: compiler-warnings/compiler-warning-level-1-c4486.md - - name: Compiler warning (level 4) C4487 - href: compiler-warnings/compiler-warning-level-4-c4487.md - - name: Compiler warning (level 1) C4488 - href: compiler-warnings/compiler-warning-level-1-c4488.md - - name: Compiler warning (level 1) C4489 - href: compiler-warnings/compiler-warning-level-1-c4489.md - - name: Compiler warning (level 1) C4490 - href: compiler-warnings/compiler-warning-level-1-c4490.md - - name: Compiler warning (level 1) C4502 - href: compiler-warnings/compiler-warning-level-1-c4502.md - - name: Compiler warning (level 1) C4503 - href: compiler-warnings/compiler-warning-level-1-c4503.md - - name: Compiler warning (level 4) C4505 - href: compiler-warnings/compiler-warning-level-4-c4505.md - - name: Compiler warning (level 1) C4506 - href: compiler-warnings/compiler-warning-level-1-c4506.md - - name: Compiler warning (level 1) C4508 - href: compiler-warnings/compiler-warning-level-1-c4508.md - - name: Compiler warning (level 4) C4510 - href: compiler-warnings/compiler-warning-level-4-c4510.md - - name: Compiler warning (level 4) C4511 - href: compiler-warnings/compiler-warning-level-3-c4511.md - - name: Compiler warning (level 4) C4512 - href: compiler-warnings/compiler-warning-level-4-c4512.md - - name: Compiler warning (level 4) C4513 - href: compiler-warnings/compiler-warning-level-4-c4513.md - - name: Compiler warning (level 4, off) C4514 - href: compiler-warnings/compiler-warning-level-4-c4514.md - - name: Compiler warning (level 4) C4515 - href: compiler-warnings/compiler-warning-level-4-c4515.md - - name: Compiler warning (level 4) C4516 - href: compiler-warnings/compiler-warning-level-4-c4516.md - - name: Compiler warning (level 4) C4517 - href: compiler-warnings/compiler-warning-level-4-c4517.md - - name: Compiler warning (level 1) C4518 - href: compiler-warnings/compiler-warning-level-1-c4518.md - - name: Compiler warning (level 3) C4521 - href: compiler-warnings/compiler-warning-level-3-c4521.md - - name: Compiler warning (level 3) C4522 - href: compiler-warnings/compiler-warning-level-3-c4522.md - - name: Compiler warning (level 3) C4523 - href: compiler-warnings/compiler-warning-level-3-c4523.md - - name: Compiler warning (level 1) C4526 - href: compiler-warnings/compiler-warning-level-1-c4526.md - - name: Compiler warning (level 1) C4530 - href: compiler-warnings/compiler-warning-level-1-c4530.md - - name: Compiler warning (level 1) C4532 - href: compiler-warnings/compiler-warning-level-1-c4532.md - - name: Compiler warning (level 1) C4533 - href: compiler-warnings/compiler-warning-level-1-c4533.md - - name: Compiler warning (level 3) C4534 - href: compiler-warnings/compiler-warning-level-3-c4534.md - - name: Compiler warning (level 3) C4535 - href: compiler-warnings/compiler-warning-level-3-c4535.md - - name: Compiler warning (level 4, off) C4536 - href: compiler-warnings/compiler-warning-level-4-c4536.md - - name: Compiler warning (level 1) C4537 - href: compiler-warnings/compiler-warning-level-1-c4537.md - - name: Compiler warning (level 3) C4538 - href: compiler-warnings/compiler-warning-level-3-c4538.md - - name: Compiler warning (level 1) C4540 - href: compiler-warnings/compiler-warning-level-1-c4540.md - - name: Compiler warning (level 1) C4541 - href: compiler-warnings/compiler-warning-level-1-c4541.md - - name: Compiler warning (level 3) C4543 - href: compiler-warnings/compiler-warning-level-3-c4543.md - - name: Compiler warning (level 1) C4544 - href: compiler-warnings/compiler-warning-level-1-c4544.md - - name: Compiler warning (level 1, off) C4545 - href: compiler-warnings/compiler-warning-level-1-c4545.md - - name: Compiler warning (level 1, off) C4546 - href: compiler-warnings/compiler-warning-level-1-c4546.md - - name: Compiler warning (level 1, off) C4547 - href: compiler-warnings/compiler-warning-level-1-c4547.md - - name: Compiler warning (level 1, off) C4548 - href: compiler-warnings/compiler-warning-level-1-c4548.md - - name: Compiler warning (level 1, off) C4549 - href: compiler-warnings/compiler-warning-level-1-c4549.md - - name: Compiler warning (level 1) C4550 - href: compiler-warnings/compiler-warning-level-1-c4550.md - - name: Compiler warning (level 1) C4551 - href: compiler-warnings/compiler-warning-level-1-c4551.md - - name: Compiler warning (level 1) C4552 - href: compiler-warnings/compiler-warning-level-1-c4552.md - - name: Compiler warning (level 1) C4553 - href: compiler-warnings/compiler-warning-level-1-c4553.md - - name: Compiler warning (level 3) C4554 - href: compiler-warnings/compiler-warning-level-3-c4554.md - - name: Compiler warning (level 1, off) C4555 - href: compiler-warnings/compiler-warning-level-1-c4555.md - - name: Compiler warning (level 1) C4556 - href: compiler-warnings/compiler-warning-level-1-c4556.md - - name: Compiler warning (level 3, off) C4557 - href: compiler-warnings/compiler-warning-level-3-c4557.md - - name: Compiler warning (level 1) C4558 - href: compiler-warnings/compiler-warning-level-1-c4558.md - - name: Compiler warning (level 4) C4559 - href: compiler-warnings/compiler-warning-level-4-c4559.md - - name: Compiler warning (level 1) C4561 - href: compiler-warnings/compiler-warning-level-1-c4561.md - - name: Compiler warning (level 4) C4564 - href: compiler-warnings/compiler-warning-level-4-c4564.md - - name: Compiler warning (level 4) C4565 - href: compiler-warnings/compiler-warning-level-4-c4565.md - - name: Compiler warning (level 1) C4566 - href: compiler-warnings/compiler-warning-level-1-c4566.md - - name: Compiler warning (level 3) C4570 - href: compiler-warnings/compiler-warning-level-3-c4570.md - - name: Compiler warning (level 4) C4571 - href: compiler-warnings/compiler-warning-level-4-c4571.md - - name: Compiler warning (level 1) C4572 - href: compiler-warnings/compiler-warning-level-1-c4572.md - - name: Compiler warning (level 1) C4577 - href: compiler-warnings/compiler-warning-level-1-c4577.md - - name: Compiler warning (level 3) C4580 - href: compiler-warnings/compiler-warning-level-3-c4580.md - - name: Compiler warning (level 1) C4581 - href: compiler-warnings/compiler-warning-level-1-c4581.md - - name: Compiler warning (level 1) C4584 - href: compiler-warnings/compiler-warning-level-1-c4584.md - - name: Compiler warning (level 4, Error, off) C4596 - href: compiler-warnings/c4596.md - - name: Compiler warning (level 4) C4597 - href: compiler-warnings/c4597.md - - name: Compiler warnings C4600 through C4799 - expanded: false - items: - - name: Compiler warnings C4600 through C4799 - href: compiler-warnings/compiler-warnings-c4600-through-c4799.md - - name: Compiler warning (level 1) C4600 - href: compiler-warnings/compiler-warning-level-1-c4600.md - - name: Compiler warning (level 1) C4602 - href: compiler-warnings/compiler-warning-level-1-c4602.md - - name: Compiler warning (level 1) C4603 - href: compiler-warnings/compiler-warning-level-1-c4603.md - - name: Compiler warning (level 1) C4606 - href: compiler-warnings/compiler-warning-level-1-c4606.md - - name: Compiler warning (level 3) C4608 - href: compiler-warnings/compiler-warning-level-3-c4608.md - - name: Compiler warning (level 4) C4610 - href: compiler-warnings/compiler-warning-level-4-c4610.md - - name: Compiler warning (level 4) C4611 - href: compiler-warnings/compiler-warning-level-4-c4611.md - - name: Compiler warning (level 1) C4612 - href: compiler-warnings/compiler-warning-level-1-c4612.md - - name: Compiler warning (level 1) C4613 - href: compiler-warnings/compiler-warning-level-1-c4613.md - - name: Compiler warning (level 1) C4615 - href: compiler-warnings/compiler-warning-level-1-c4615.md - - name: Compiler warning (level 1) C4616 - href: compiler-warnings/compiler-warning-level-1-c4616.md - - name: Compiler warning (level 1) C4618 - href: compiler-warnings/compiler-warning-level-1-c4618.md - - name: Compiler warning (level 3) C4619 - href: compiler-warnings/compiler-warning-level-3-c4619.md - - name: Compiler warning (level 1) C4620 - href: compiler-warnings/compiler-warning-level-1-c4620.md - - name: Compiler warning (level 1) C4621 - href: compiler-warnings/compiler-warning-level-1-c4621.md - - name: Compiler warning (level 3) C4622 - href: compiler-warnings/compiler-warning-level-3-c4622.md - - name: Compiler warning (level 4) C4623 - href: compiler-warnings/compiler-warning-level-4-c4623.md - - name: Compiler warning (level 1) C4624 - href: compiler-warnings/compiler-warning-level-1-c4624.md - - name: Compiler warning (level 4) C4625 - href: compiler-warnings/compiler-warning-level-4-c4625.md - - name: Compiler warning (level 4) C4626 - href: compiler-warnings/compiler-warning-level-4-c4626.md - - name: Compiler warning (level 1) C4627 - href: compiler-warnings/compiler-warning-level-1-c4627.md - - name: Compiler warning (level 1) C4628 - href: compiler-warnings/compiler-warning-level-1-c4628.md - - name: Compiler warning (level 4) C4629 - href: compiler-warnings/compiler-warning-level-4-c4629.md - - name: Compiler warning (level 1) C4630 - href: compiler-warnings/compiler-warning-level-1-c4630.md - - name: Compiler warning (level 1) C4631 - href: compiler-warnings/compiler-warning-level-1-c4631.md - - name: Compiler warning (level 1) C4632 - href: compiler-warnings/compiler-warning-level-1-c4632.md - - name: Compiler warning (level 3) C4633 - href: compiler-warnings/compiler-warning-level-3-c4633.md - - name: Compiler warning (level 4) C4634 - href: compiler-warnings/compiler-warning-level-4-c4634.md - - name: Compiler warning (level 3) C4635 - href: compiler-warnings/compiler-warning-level-3-c4635.md - - name: Compiler warning (level 3) C4636 - href: compiler-warnings/compiler-warning-level-3-c4636.md - - name: Compiler warning (level 3) C4637 - href: compiler-warnings/compiler-warning-level-3-c4637.md - - name: Compiler warning (level 3) C4638 - href: compiler-warnings/compiler-warning-level-3-c4638.md - - name: Compiler warning (level 4) C4639 - href: compiler-warnings/compiler-warning-level-4-c4639.md - - name: Compiler warning (level 3) C4640 - href: compiler-warnings/compiler-warning-level-3-c4640.md - - name: Compiler warning (level 3) C4641 - href: compiler-warnings/compiler-warning-level-3-c4641.md - - name: Compiler warning (level 3) C4645 - href: compiler-warnings/compiler-warning-level-3-c4645.md - - name: Compiler warning (level 3) C4646 - href: compiler-warnings/compiler-warning-level-3-c4646.md - - name: Compiler warning (level 1) C4650 - href: compiler-warnings/compiler-warning-level-1-c4650.md - - name: Compiler warning (level 1) C4651 - href: compiler-warnings/compiler-warning-level-1-c4651.md - - name: Compiler warning (level 1) C4652 - href: compiler-warnings/compiler-warning-level-1-c4652.md - - name: Compiler warning (level 2) C4653 - href: compiler-warnings/compiler-warning-level-2-c4653.md - - name: Compiler warning (level 1) C4655 - href: compiler-warnings/compiler-warning-level-1-c4655.md - - name: Compiler warning (level 1) C4656 - href: compiler-warnings/compiler-warning-level-1-c4656.md - - name: Compiler warning (level 1) C4657 - href: compiler-warnings/compiler-warning-level-1-c4657.md - - name: Compiler warning (level 1) C4659 - href: compiler-warnings/compiler-warning-level-1-c4659.md - - name: Compiler warning (level 1) C4661 - href: compiler-warnings/compiler-warning-level-1-c4661.md - - name: Compiler warning (level 1) C4662 - href: compiler-warnings/compiler-warning-level-1-c4662.md - - name: Compiler warning (level 1) C4667 - href: compiler-warnings/compiler-warning-level-1-c4667.md - - name: Compiler warning (level 4) C4668 - href: compiler-warnings/compiler-warning-level-4-c4668.md - - name: Compiler warning (level 1) C4669 - href: compiler-warnings/compiler-warning-level-1-c4669.md - - name: Compiler warning (level 4) C4670 - href: compiler-warnings/compiler-warning-level-4-c4670.md - - name: Compiler warning (level 4) C4672 - href: compiler-warnings/compiler-warning-level-4-c4672.md - - name: Compiler warning (level 4) C4673 - href: compiler-warnings/compiler-warning-level-4-c4673.md - - name: Compiler warning (level 1) C4674 - href: compiler-warnings/compiler-warning-level-1-c4674.md - - name: Compiler warning (level 1) C4677 - href: compiler-warnings/compiler-warning-level-1-c4677.md - - name: Compiler warning (level 1) C4678 - href: compiler-warnings/compiler-warning-level-1-c4678.md - - name: Compiler warning (level 1) C4679 - href: compiler-warnings/compiler-warning-level-1-c4679.md - - name: Compiler warning (level 4) C4680 - href: compiler-warnings/compiler-warning-level-4-c4680.md - - name: Compiler warning (level 4) C4681 - href: compiler-warnings/compiler-warning-level-4-c4681.md - - name: Compiler warning (level 4) C4682 - href: compiler-warnings/compiler-warning-level-4-c4682.md - - name: Compiler warning (level 1) C4683 - href: compiler-warnings/compiler-warning-level-1-c4683.md - - name: Compiler warning (level 1) C4684 - href: compiler-warnings/compiler-warning-level-1-c4684.md - - name: Compiler warning (level 1) C4685 - href: compiler-warnings/compiler-warning-level-1-c4685.md - - name: Compiler warning (level 3) C4686 - href: compiler-warnings/compiler-warning-level-3-c4686.md - - name: Compiler warning C4687 - href: compiler-warnings/compiler-warning-c4687.md - - name: Compiler warning (level 1) C4688 - href: compiler-warnings/compiler-warning-level-1-c4688.md - - name: Compiler warning (level 4) C4690 - href: compiler-warnings/compiler-warning-level-4-c4690.md - - name: Compiler warning (level 1) C4691 - href: compiler-warnings/compiler-warning-level-1-c4691.md - - name: Compiler warning (level 1) C4692 - href: compiler-warnings/compiler-warning-level-1-c4692.md - - name: Compiler warning C4693 - href: compiler-warnings/compiler-warning-c4693.md - - name: Compiler warning C4694 - href: compiler-warnings/compiler-warning-c4694.md - - name: Compiler warning (level 3) C4698 - href: compiler-warnings/c4698.md - - name: Compiler warning (level 1 and level 4) C4700 - href: compiler-warnings/compiler-warning-level-1-and-level-4-c4700.md - - name: Compiler warning (level 4) C4701 - href: compiler-warnings/compiler-warning-level-4-c4701.md - - name: Compiler warning (level 4) C4702 - href: compiler-warnings/compiler-warning-level-4-c4702.md - - name: Compiler warning (level 4) C4703 - href: compiler-warnings/compiler-warning-level-4-c4703.md - - name: Compiler warning (level 4) C4706 - href: compiler-warnings/compiler-warning-level-4-c4706.md - - name: Compiler warning (level 4) C4709 - href: compiler-warnings/compiler-warning-level-4-c4709.md - - name: Compiler warning (level 4) C4710 - href: compiler-warnings/compiler-warning-level-4-c4710.md - - name: Compiler warning (level 1) C4711 - href: compiler-warnings/compiler-warning-level-1-c4711.md - - name: Compiler warning (level 4) C4714 - href: compiler-warnings/compiler-warning-level-4-c4714.md - - name: Compiler warning (level 1) C4715 - href: compiler-warnings/compiler-warning-level-1-c4715.md - - name: Compiler warning (level 1) C4716 - href: compiler-warnings/compiler-warning-level-1-c4716.md - - name: Compiler warning (level 1) C4717 - href: compiler-warnings/compiler-warning-level-1-c4717.md - - name: Compiler warning (level 4) C4718 - href: compiler-warnings/compiler-warning-level-4-c4718.md - - name: Compiler warning (level 1) C4722 - href: compiler-warnings/compiler-warning-level-1-c4722.md - - name: Compiler warning (level 3) C4723 - href: compiler-warnings/compiler-warning-level-3-c4723.md - - name: Compiler warning (level 3) C4724 - href: compiler-warnings/compiler-warning-level-3-c4724.md - - name: Compiler warning (level 4) C4725 - href: compiler-warnings/compiler-warning-level-4-c4725.md - - name: Compiler warning (level 1) C4727 - href: compiler-warnings/compiler-warning-level-1-c4727.md - - name: Compiler warning (Level 1) C4729 - href: compiler-warnings/compiler-warning-level-1-c4729.md - - name: Compiler warning (Level 1) C4730 - href: compiler-warnings/compiler-warning-level-1-c4730.md - - name: Compiler warning (Level 1) C4731 - href: compiler-warnings/compiler-warning-level-1-c4731.md - - name: Compiler warning (Level 1) C4733 - href: compiler-warnings/compiler-warning-level-1-c4733.md - - name: Compiler warning (Level 3) C4738 - href: compiler-warnings/compiler-warning-level-3-c4738.md - - name: Compiler warning (Level 1) C4739 - href: compiler-warnings/compiler-warning-level-1-c4739.md - - name: Compiler warning (Level 4) C4740 - href: compiler-warnings/compiler-warning-level-4-c4740.md - - name: Compiler warning (Level 1) C4742 - href: compiler-warnings/compiler-warning-level-1-c4742.md - - name: Compiler warning (Level 1) C4743 - href: compiler-warnings/compiler-warning-level-1-c4743.md - - name: Compiler warning (Level 1) C4744 - href: compiler-warnings/compiler-warning-level-1-c4744.md - - name: Compiler warning C4746 - href: compiler-warnings/compiler-warning-c4746.md - - name: Compiler warning (level 1) C4747 - href: compiler-warnings/compiler-warning-level-1-c4747.md - - name: Compiler warning (level 1) C4750 - href: compiler-warnings/compiler-warning-level-1-c4750.md - - name: Compiler warning (level 4) C4754 - href: compiler-warnings/compiler-warning-level-4-c4754.md - - name: Compiler warning (level 2) C4756 - href: compiler-warnings/compiler-warning-level-2-c4756.md - - name: Compiler warning (level 4) C4764 - href: compiler-warnings/compiler-warning-level-4-c4764.md - - name: Compiler warning (level 4) C4768 - href: compiler-warnings/c4768.md - - name: Compiler warning (level 4) C4770 - href: compiler-warnings/c4770.md - - name: Compiler warning (level 1) C4772 - href: compiler-warnings/compiler-warning-level-1-c4772.md - - name: Compiler warning (Level 1) C4788 - href: compiler-warnings/compiler-warning-level-1-c4788.md - - name: Compiler warning (Level 1) C4789 - href: compiler-warnings/compiler-warning-level-1-c4789.md - - name: Compiler warning (level 3) C4792 - href: compiler-warnings/compiler-warning-level-3-c4792.md - - name: Compiler warning (level 1 and 3) C4793 - href: compiler-warnings/compiler-warning-level-1-and-3-c4793.md - - name: Compiler warning (level 1) C4794 - href: compiler-warnings/compiler-warning-level-1-c4794.md - - name: Compiler warning (level 1) C4799 - href: compiler-warnings/compiler-warning-level-1-c4799.md - - name: Compiler warnings C4800 through C4999 - expanded: false - items: - - name: Compiler warnings C4800 through C4999 - href: compiler-warnings/compiler-warnings-c4800-through-c4999.md - - name: Compiler warning (level 3) C4800 - href: compiler-warnings/compiler-warning-level-3-c4800.md - - name: Compiler warning (level 1) C4803 - href: compiler-warnings/compiler-warning-level-1-c4803.md - - name: Compiler warning (level 1) C4804 - href: compiler-warnings/compiler-warning-level-1-c4804.md - - name: Compiler warning (level 1) C4805 - href: compiler-warnings/compiler-warning-level-1-c4805.md - - name: Compiler warning (level 1) C4806 - href: compiler-warnings/compiler-warning-level-1-c4806.md - - name: Compiler warning (level 1) C4807 - href: compiler-warnings/compiler-warning-level-1-c4807.md - - name: Compiler warning (level 1) C4810 - href: compiler-warnings/compiler-warning-level-1-c4810.md - - name: Compiler warning (level 1) C4811 - href: compiler-warnings/compiler-warning-level-1-c4811.md - - name: Compiler warning (level 1) C4812 - href: compiler-warnings/compiler-warning-level-1-c4812.md - - name: Compiler warning (level 1) C4813 - href: compiler-warnings/compiler-warning-level-1-c4813.md - - name: Compiler warning (level 4) C4816 - href: compiler-warnings/compiler-warning-level-4-c4816.md - - name: Compiler warning (level 1) C4817 - href: compiler-warnings/compiler-warning-level-1-c4817.md - - name: Compiler warning (level 1) C4819 - href: compiler-warnings/compiler-warning-level-1-c4819.md - - name: Compiler warning (level 4) C4820 - href: compiler-warnings/compiler-warning-level-4-c4820.md - - name: Compiler warning (level 1) C4821 - href: compiler-warnings/compiler-warning-level-1-c4821.md - - name: Compiler warning (level 1) C4822 - href: compiler-warnings/compiler-warning-level-1-c4822.md - - name: Compiler warning (level 3) C4823 - href: compiler-warnings/compiler-warning-level-3-c4823.md - - name: Compiler warning (level 1) C4829 - href: compiler-warnings/compiler-warning-level-1-c4829.md - - name: Compiler warning (level 1) C4834 - href: compiler-warnings/c4834.md - - name: Compiler warning (level 1) C4835 - href: compiler-warnings/compiler-warning-level-1-c4835.md - - name: Compiler warning (level 1) C4838 - href: compiler-warnings/compiler-warning-level-1-c4838.md - - name: Compiler warning (level 3) C4839 - href: compiler-warnings/compiler-warning-level-3-c4839.md - - name: Compiler warning (level 4) C4840 - href: compiler-warnings/compiler-warning-level-4-c4840.md - - name: Compiler warning (level 4) C4841 - href: compiler-warnings/c4841.md - - name: Compiler warning (level 4) C4843 - href: compiler-warnings/c4843.md - - name: Compiler warning (level 4) C4866 - href: compiler-warnings/c4866.md - - name: Compiler warning C4867 - href: compiler-warnings/compiler-warning-c4867.md - - name: Compiler warning C4868 - href: compiler-warnings/compiler-warning-c4868.md - - name: Compiler warning (level 1) C4900 - href: compiler-warnings/compiler-warning-level-1-c4900.md - - name: Compiler warning (level 1) C4905 - href: compiler-warnings/compiler-warning-level-1-c4905.md - - name: Compiler warning (level 1) C4906 - href: compiler-warnings/compiler-warning-level-1-c4906.md - - name: Compiler warning (level 1) C4910 - href: compiler-warnings/compiler-warning-level-1-c4910.md - - name: Compiler warning (level 1) C4912 - href: compiler-warnings/compiler-warning-level-1-c4912.md - - name: Compiler warning (level 4) C4913 - href: compiler-warnings/compiler-warning-level-4-c4913.md - - name: Compiler warning (level 1) C4917 - href: compiler-warnings/compiler-warning-level-1-c4917.md - - name: Compiler warning (level 4) C4918 - href: compiler-warnings/compiler-warning-level-4-c4918.md - - name: Compiler warning (level 1) C4920 - href: compiler-warnings/compiler-warning-level-1-c4920.md - - name: Compiler warning (level 1) C4925 - href: compiler-warnings/compiler-warning-level-1-c4925.md - - name: Compiler warning (level 1) C4926 - href: compiler-warnings/compiler-warning-level-1-c4926.md - - name: Compiler warning (level 1) C4927 - href: compiler-warnings/compiler-warning-level-1-c4927.md - - name: Compiler warning (level 1) C4928 - href: compiler-warnings/compiler-warning-level-1-c4928.md - - name: Compiler warning (level 1) C4929 - href: compiler-warnings/compiler-warning-level-1-c4929.md - - name: Compiler warning (level 1) C4930 - href: compiler-warnings/compiler-warning-level-1-c4930.md - - name: Compiler warning (level 4) C4931 - href: compiler-warnings/compiler-warning-level-4-c4931.md - - name: Compiler warning (level 4) C4932 - href: compiler-warnings/compiler-warning-level-4-c4932.md - - name: Compiler warning (level 1) C4935 - href: compiler-warnings/compiler-warning-level-1-c4935.md - - name: Compiler warning C4936 - href: compiler-warnings/compiler-warning-c4936.md - - name: Compiler warning (level 4) C4937 - href: compiler-warnings/compiler-warning-level-4-c4937.md - - name: Compiler warning (level 4) C4938 - href: compiler-warnings/compiler-warning-level-4-c4938.md - - name: Compiler warning (level 1) C4939 - href: compiler-warnings/compiler-warning-level-1-c4939.md - - name: Compiler warning (level 1) C4944 - href: compiler-warnings/compiler-warning-level-1-c4944.md - - name: Compiler warning (level 1) C4945 - href: compiler-warnings/compiler-warning-level-1-c4945.md - - name: Compiler warning (level 1) C4946 - href: compiler-warnings/compiler-warning-level-1-c4946.md - - name: Compiler warning (level 1) C4947 - href: compiler-warnings/compiler-warning-level-1-c4947.md - - name: Compiler warning (level 2) C4948 - href: compiler-warnings/compiler-warning-level-2-c4948.md - - name: Compiler warning (level 1 and level 4) C4949 - href: compiler-warnings/compiler-warning-level-1-and-level-4-c4949.md - - name: Compiler warning C4950 - href: compiler-warnings/compiler-warning-c4950.md - - name: Compiler warning (level 1) C4951 - href: compiler-warnings/compiler-warning-level-1-c4951.md - - name: Compiler warning (level 1) C4952 - href: compiler-warnings/compiler-warning-level-1-c4952.md - - name: Compiler warning (level 1) C4953 - href: compiler-warnings/compiler-warning-level-1-c4953.md - - name: Compiler warning C4956 - href: compiler-warnings/compiler-warning-c4956.md - - name: Compiler warning C4957 - href: compiler-warnings/compiler-warning-c4957.md - - name: Compiler warning C4958 - href: compiler-warnings/compiler-warning-c4958.md - - name: Compiler warning C4959 - href: compiler-warnings/compiler-warning-c4959.md - - name: Compiler warning (level 4) C4960 - href: compiler-warnings/compiler-warning-level-4-c4960.md - - name: Compiler warning C4961 - href: compiler-warnings/compiler-warning-c4961.md - - name: Compiler warning C4962 - href: compiler-warnings/compiler-warning-c4962.md - - name: Compiler warning (level 1) C4964 - href: compiler-warnings/compiler-warning-level-1-c4964.md - - name: Compiler warning (level 1) C4965 - href: compiler-warnings/compiler-warning-level-1-c4965.md - - name: Compiler warning C4972 - href: compiler-warnings/compiler-warning-c4972.md - - name: Compiler warning C4984 - href: compiler-warnings/compiler-warning-c4984.md - - name: Compiler warning (level 4) C4985 - href: compiler-warnings/compiler-warning-level-4-c4985.md - - name: Compiler warning C4986 - href: compiler-warnings/compiler-warning-c4986.md - - name: Compiler warning (level 3) C4995 - href: compiler-warnings/compiler-warning-level-3-c4995.md - - name: Compiler warning (level 3) C4996 - href: compiler-warnings/compiler-warning-level-3-c4996.md - - name: Compiler warning (level 1) C4997 - href: compiler-warnings/compiler-warning-level-1-c4997.md - - name: Compiler warnings C5000 through C5199 - expanded: false - items: - - name: Compiler warnings C5000 through C5199 - href: compiler-warnings/compiler-warnings-c5000-through-c5199.md - - name: Compiler warning (level 1) C5033 - href: compiler-warnings/c5033.md - - name: Compiler warning C5037 - href: compiler-warnings/c5037.md - - name: Compiler warning C5038 - href: compiler-warnings/c5038.md - - name: Compiler warning C5045 - href: compiler-warnings/c5045.md - - name: Compiler warning (level 2) C5046 - href: compiler-warnings/c5046.md - - name: Compiler warning C5050 - href: compiler-warnings/c5050.md - - name: Compiler warning (level 4) C5054 - href: compiler-warnings/c5054.md - - name: Compiler warning (level 1) C5055 - href: compiler-warnings/c5055.md - - name: Compiler warning (level 1) C5056 - href: compiler-warnings/c5056.md - - name: Compiler warning (level 1) C5072 - href: compiler-warnings/compiler-warning-c5072.md - - name: Compiler warning (level 1) C5089 - href: compiler-warnings/compiler-warning-c5089.md - - name: Compiler warning (level 1) C5105 - href: compiler-warnings/c5105.md - - name: Compiler warnings C5200 through C5399 - expanded: false - items: - - name: Compiler warnings C5200 through C5399 - href: compiler-warnings/compiler-warnings-c5200-through-c5399.md - - name: Compiler warning (level 1) C5208 - href: compiler-warnings/c5208.md - - name: Compiler warning (level 1) C5240 - href: compiler-warnings/c5240.md - - name: Compiler warning (level 1) C5243 - href: compiler-warnings/c5243.md - - name: Compiler warning (level 1) C5247 - href: compiler-warnings/c5247.md - - name: Compiler warning (level 1) C5248 - href: compiler-warnings/c5248.md - - name: Compiler warning (level 1, error, off) C5262 - href: compiler-warnings/c5262.md - - name: Compiler warning (level 4) C5266 - href: compiler-warnings/compiler-warning-level-4-c5266.md - - name: Compiler warning (level 4) C5267 - href: compiler-warnings/c5267.md - - name: Compiler warning (level 1) C5301 and C5302 - href: compiler-warnings/c5301-c5302.md -- name: Compiler warnings by compiler version - href: compiler-warnings/compiler-warnings-by-compiler-version.md -- name: Compiler warnings that are off by default - href: ../preprocessor/compiler-warnings-that-are-off-by-default.md -- name: C Runtime errors - expanded: false - items: - - name: C Runtime errors (Rxxxx) - href: tool-errors/c-runtime-errors-r6002-through-r6035.md - - name: C Runtime error R6002 - href: tool-errors/c-runtime-error-r6002.md - - name: C Runtime error R6008 - href: tool-errors/c-runtime-error-r6008.md - - name: C Runtime error R6009 - href: tool-errors/c-runtime-error-r6009.md - - name: C Runtime error R6016 - href: tool-errors/c-runtime-error-r6016.md - - name: C Runtime error R6017 - href: tool-errors/c-runtime-error-r6017.md - - name: C Runtime error R6018 - href: tool-errors/c-runtime-error-r6018.md - - name: C Runtime error R6019 - href: tool-errors/c-runtime-error-r6019.md - - name: C Runtime error R6024 - href: tool-errors/c-runtime-error-r6024.md - - name: C Runtime error R6025 - href: tool-errors/c-runtime-error-r6025.md - - name: C Runtime error R6026 - href: tool-errors/c-runtime-error-r6026.md - - name: C Runtime error R6027 - href: tool-errors/c-runtime-error-r6027.md - - name: C Runtime error R6028 - href: tool-errors/c-runtime-error-r6028.md - - name: C Runtime error R6030 - href: tool-errors/c-runtime-error-r6030.md - - name: C Runtime error R6031 - href: tool-errors/c-runtime-error-r6031.md - - name: C Runtime error R6032 - href: tool-errors/c-runtime-error-r6032.md - - name: C Runtime error R6033 - href: tool-errors/c-runtime-error-r6033.md - - name: C Runtime error R6035 - href: tool-errors/c-runtime-error-r6035.md -- name: CVTRES errors and warnings - expanded: false - items: - - name: CVTRES errors and warnings (CVTxxxx) - href: tool-errors/cvtres-errors-cvt1100-through-cvt4001.md - - name: CVTRES fatal error CVT1100 - href: tool-errors/cvtres-fatal-error-cvt1100.md - - name: CVTRES fatal error CVT1103 - href: tool-errors/cvtres-fatal-error-cvt1103.md - - name: CVTRES fatal error CVT1105 - href: tool-errors/cvtres-fatal-error-cvt1105.md - - name: CVTRES warning CVT4001 - href: tool-errors/cvtres-warning-cvt4001.md -- name: Expression evaluator errors - expanded: false - items: - - name: Expression evaluator errors (CXXxxxx) - href: tool-errors/expression-evaluator-errors-cxx0000-through-cxx0072.md - - name: Expression Evaluator error CXX0000 - href: tool-errors/expression-evaluator-error-cxx0000.md - - name: Expression Evaluator error CXX0001 - href: tool-errors/expression-evaluator-error-cxx0001.md - - name: Expression Evaluator error CXX0002 - href: tool-errors/expression-evaluator-error-cxx0002.md - - name: Expression Evaluator error CXX0004 - href: tool-errors/expression-evaluator-error-cxx0004.md - - name: Expression Evaluator error CXX0005 - href: tool-errors/expression-evaluator-error-cxx0005.md - - name: Expression Evaluator error CXX0006 - href: tool-errors/expression-evaluator-error-cxx0006.md - - name: Expression Evaluator error CXX0007 - href: tool-errors/expression-evaluator-error-cxx0007.md - - name: Expression Evaluator error CXX0008 - href: tool-errors/expression-evaluator-error-cxx0008.md - - name: Expression Evaluator error CXX0009 - href: tool-errors/expression-evaluator-error-cxx0009.md - - name: Expression Evaluator error CXX0010 - href: tool-errors/expression-evaluator-error-cxx0010.md - - name: Expression Evaluator error CXX0011 - href: tool-errors/expression-evaluator-error-cxx0011.md - - name: Expression Evaluator error CXX0012 - href: tool-errors/expression-evaluator-error-cxx0012.md - - name: Expression Evaluator error CXX0013 - href: tool-errors/expression-evaluator-error-cxx0013.md - - name: Expression Evaluator error CXX0014 - href: tool-errors/expression-evaluator-error-cxx0014.md - - name: Expression Evaluator error CXX0015 - href: tool-errors/expression-evaluator-error-cxx0015.md - - name: Expression Evaluator error CXX0016 - href: tool-errors/expression-evaluator-error-cxx0016.md - - name: Expression Evaluator error CXX0017 - href: tool-errors/expression-evaluator-error-cxx0017.md - - name: Expression Evaluator error CXX0018 - href: tool-errors/expression-evaluator-error-cxx0018.md - - name: Expression Evaluator error CXX0019 - href: tool-errors/expression-evaluator-error-cxx0019.md - - name: Expression Evaluator error CXX0020 - href: tool-errors/expression-evaluator-error-cxx0020.md - - name: Expression Evaluator error CXX0021 - href: tool-errors/expression-evaluator-error-cxx0021.md - - name: Expression Evaluator error CXX0022 - href: tool-errors/expression-evaluator-error-cxx0022.md - - name: Expression Evaluator error CXX0023 - href: tool-errors/expression-evaluator-error-cxx0023.md - - name: Expression Evaluator error CXX0024 - href: tool-errors/expression-evaluator-error-cxx0024.md - - name: Expression Evaluator error CXX0025 - href: tool-errors/expression-evaluator-error-cxx0025.md - - name: Expression Evaluator error CXX0026 - href: tool-errors/expression-evaluator-error-cxx0026.md - - name: Expression Evaluator error CXX0027 - href: tool-errors/expression-evaluator-error-cxx0027.md - - name: Expression Evaluator error CXX0028 - href: tool-errors/expression-evaluator-error-cxx0028.md - - name: Expression Evaluator error CXX0029 - href: tool-errors/expression-evaluator-error-cxx0029.md - - name: Expression Evaluator error CXX0030 - href: tool-errors/expression-evaluator-error-cxx0030.md - - name: Expression Evaluator error CXX0031 - href: tool-errors/expression-evaluator-error-cxx0031.md - - name: Expression Evaluator error CXX0032 - href: tool-errors/expression-evaluator-error-cxx0032.md - - name: Expression Evaluator error CXX0033 - href: tool-errors/expression-evaluator-error-cxx0033.md - - name: Expression Evaluator error CXX0034 - href: tool-errors/expression-evaluator-error-cxx0034.md - - name: Expression Evaluator error CXX0036 - href: tool-errors/expression-evaluator-error-cxx0036.md - - name: Expression Evaluator error CXX0037 - href: tool-errors/expression-evaluator-error-cxx0037.md - - name: Expression Evaluator error CXX0038 - href: tool-errors/expression-evaluator-error-cxx0038.md - - name: Expression Evaluator error CXX0039 - href: tool-errors/expression-evaluator-error-cxx0039.md - - name: Expression Evaluator error CXX0040 - href: tool-errors/expression-evaluator-error-cxx0040.md - - name: Expression Evaluator error CXX0041 - href: tool-errors/expression-evaluator-error-cxx0041.md - - name: Expression Evaluator error CXX0043 - href: tool-errors/expression-evaluator-error-cxx0043.md - - name: Expression Evaluator error CXX0044 - href: tool-errors/expression-evaluator-error-cxx0044.md - - name: Expression Evaluator error CXX0045 - href: tool-errors/expression-evaluator-error-cxx0045.md - - name: Expression Evaluator error CXX0046 - href: tool-errors/expression-evaluator-error-cxx0046.md - - name: Expression Evaluator error CXX0047 - href: tool-errors/expression-evaluator-error-cxx0047.md - - name: Expression Evaluator error CXX0048 - href: tool-errors/expression-evaluator-error-cxx0048.md - - name: Expression Evaluator error CXX0049 - href: tool-errors/expression-evaluator-error-cxx0049.md - - name: Expression Evaluator error CXX0050 - href: tool-errors/expression-evaluator-error-cxx0050.md - - name: Expression Evaluator error CXX0051 - href: tool-errors/expression-evaluator-error-cxx0051.md - - name: Expression Evaluator error CXX0052 - href: tool-errors/expression-evaluator-error-cxx0052.md - - name: Expression Evaluator error CXX0053 - href: tool-errors/expression-evaluator-error-cxx0053.md - - name: Expression Evaluator error CXX0054 - href: tool-errors/expression-evaluator-error-cxx0054.md - - name: Expression Evaluator error CXX0055 - href: tool-errors/expression-evaluator-error-cxx0055.md - - name: Expression Evaluator error CXX0056 - href: tool-errors/expression-evaluator-error-cxx0056.md - - name: Expression Evaluator error CXX0057 - href: tool-errors/expression-evaluator-error-cxx0057.md - - name: Expression Evaluator error CXX0058 - href: tool-errors/expression-evaluator-error-cxx0058.md - - name: Expression Evaluator error CXX0059 - href: tool-errors/expression-evaluator-error-cxx0059.md - - name: Expression Evaluator error CXX0060 - href: tool-errors/expression-evaluator-error-cxx0060.md - - name: Expression Evaluator error CXX0061 - href: tool-errors/expression-evaluator-error-cxx0061.md - - name: Expression Evaluator error CXX0062 - href: tool-errors/expression-evaluator-error-cxx0062.md - - name: Expression Evaluator error CXX0063 - href: tool-errors/expression-evaluator-error-cxx0063.md - - name: Expression Evaluator error CXX0064 - href: tool-errors/expression-evaluator-error-cxx0064.md - - name: Expression Evaluator error CXX0065 - href: tool-errors/expression-evaluator-error-cxx0065.md - - name: Expression Evaluator error CXX0066 - href: tool-errors/expression-evaluator-error-cxx0066.md - - name: Expression Evaluator error CXX0067 - href: tool-errors/expression-evaluator-error-cxx0067.md - - name: Expression Evaluator error CXX0069 - href: tool-errors/expression-evaluator-error-cxx0069.md - - name: Expression Evaluator error CXX0072 - href: tool-errors/expression-evaluator-error-cxx0072.md -- name: Linker tools errors and warnings - expanded: false - items: - - name: Linker tools errors and warnings (LNKxxxx) - href: tool-errors/linker-tools-errors-and-warnings.md - - name: Linker tools error LNK1000 - href: tool-errors/linker-tools-error-lnk1000.md - - name: Linker tools error LNK1103 - href: tool-errors/linker-tools-error-lnk1103.md - - name: Linker tools error LNK1104 - href: tool-errors/linker-tools-error-lnk1104.md - - name: Linker tools error LNK1106 - href: tool-errors/linker-tools-error-lnk1106.md - - name: Linker tools error LNK1107 - href: tool-errors/linker-tools-error-lnk1107.md - - name: Linker tools error LNK1112 - href: tool-errors/linker-tools-error-lnk1112.md - - name: Linker tools error LNK1113 - href: tool-errors/linker-tools-error-lnk1113.md - - name: Linker tools error LNK1120 - href: tool-errors/linker-tools-error-lnk1120.md - - name: Linker tools error LNK1123 - href: tool-errors/linker-tools-error-lnk1123.md - - name: Linker tools error LNK1127 - href: tool-errors/linker-tools-error-lnk1127.md - - name: Linker tools error LNK1136 - href: tool-errors/linker-tools-error-lnk1136.md - - name: Linker tools error LNK1140 - href: tool-errors/linker-tools-error-lnk1140.md - - name: Linker tools error LNK1141 - href: tool-errors/linker-tools-error-lnk1141.md - - name: Linker tools error LNK1143 - href: tool-errors/linker-tools-error-lnk1143.md - - name: Linker tools error LNK1152 - href: tool-errors/linker-tools-error-lnk1152.md - - name: Linker tools error LNK1158 - href: tool-errors/linker-tools-error-lnk1158.md - - name: Linker tools error LNK1164 - href: tool-errors/linker-tools-error-lnk1164.md - - name: Linker tools error LNK1166 - href: tool-errors/linker-tools-error-lnk1166.md - - name: Linker tools error LNK1168 - href: tool-errors/linker-tools-error-lnk1168.md - - name: Linker tools error LNK1169 - href: tool-errors/linker-tools-error-lnk1169.md - - name: Linker tools error LNK1170 - href: tool-errors/linker-tools-error-lnk1170.md - - name: Linker tools error LNK1179 - href: tool-errors/linker-tools-error-lnk1179.md - - name: Linker tools error LNK1181 - href: tool-errors/linker-tools-error-lnk1181.md - - name: Linker tools error LNK1188 - href: tool-errors/linker-tools-error-lnk1188.md - - name: Linker tools error LNK1189 - href: tool-errors/linker-tools-error-lnk1189.md - - name: Linker tools error LNK1196 - href: tool-errors/linker-tools-error-lnk1196.md - - name: Linker tools error LNK1200 - href: tool-errors/linker-tools-error-lnk1200.md - - name: Linker tools error LNK1201 - href: tool-errors/linker-tools-error-lnk1201.md - - name: Linker tools error LNK1211 - href: tool-errors/linker-tools-error-lnk1211.md - - name: Linker tools error LNK1215 - href: tool-errors/linker-tools-error-lnk1215.md - - name: Linker tools error LNK1218 - href: tool-errors/linker-tools-error-lnk1218.md - - name: Linker tools error LNK1221 - href: tool-errors/linker-tools-error-lnk1221.md - - name: Linker tools error LNK1223 - href: tool-errors/linker-tools-error-lnk1223.md - - name: Linker tools error LNK1224 - href: tool-errors/linker-tools-error-lnk1224.md - - name: Linker tools error LNK1237 - href: tool-errors/linker-tools-error-lnk1237.md - - name: Linker tools error LNK1240 - href: tool-errors/linker-tools-error-lnk1240.md - - name: Linker tools error LNK1241 - href: tool-errors/linker-tools-error-lnk1241.md - - name: Linker tools error LNK1245 - href: tool-errors/linker-tools-error-lnk1245.md - - name: Linker tools error LNK1248 - href: tool-errors/linker-tools-error-lnk1248.md - - name: Linker tools error LNK1256 - href: tool-errors/linker-tools-error-lnk1256.md - - name: Linker tools error LNK1264 - href: tool-errors/linker-tools-error-lnk1264.md - - name: Linker tools error LNK1277 - href: tool-errors/linker-tools-error-lnk1277.md - - name: Linker tools error LNK1282 - href: tool-errors/linker-tools-error-lnk1282.md - - name: Linker tools error LNK1287 - href: tool-errors/linker-tools-error-lnk1287.md - - name: Linker tools error LNK1296 - href: tool-errors/linker-tools-error-lnk1296.md - - name: Linker tools error LNK1301 - href: tool-errors/linker-tools-error-lnk1301.md - - name: Linker tools error LNK1302 - href: tool-errors/linker-tools-error-lnk1302.md - - name: Linker tools error LNK1306 - href: tool-errors/linker-tools-error-lnk1306.md - - name: Linker tools error LNK1309 - href: tool-errors/linker-tools-error-lnk1309.md - - name: Linker tools error LNK1312 - href: tool-errors/linker-tools-error-lnk1312.md - - name: Linker tools error LNK1313 - href: tool-errors/linker-tools-error-lnk1313.md - - name: Linker tools error LNK1314 - href: tool-errors/linker-tools-error-lnk1314.md - - name: Linker tools error LNK1318 - href: tool-errors/linker-tools-error-lnk1318.md - - name: Linker tools error LNK1332 - href: tool-errors/linker-tools-error-lnk1332.md - - name: Linker tools error LNK1352 - href: tool-errors/linker-tools-error-lnk1352.md - - name: Linker tools error LNK1561 - href: tool-errors/linker-tools-error-lnk1561.md - - name: Linker tools error LNK2001 - href: tool-errors/linker-tools-error-lnk2001.md - expanded: false - items: - - name: Name Decoration - href: tool-errors/name-decoration.md - - name: Linker tools error LNK2004 - href: tool-errors/linker-tools-error-lnk2004.md - - name: Linker tools error LNK2005 - href: tool-errors/linker-tools-error-lnk2005.md - - name: Linker tools error LNK2008 - href: tool-errors/linker-tools-error-lnk2008.md - - name: Linker tools error LNK2011 - href: tool-errors/linker-tools-error-lnk2011.md - - name: Linker tools error LNK2013 - href: tool-errors/linker-tools-error-lnk2013.md - - name: Linker tools error LNK2017 - href: tool-errors/linker-tools-error-lnk2017.md - - name: Linker tools error LNK2019 - href: tool-errors/linker-tools-error-lnk2019.md - expanded: false - items: - - name: Global Constants in C++ - href: tool-errors/global-constants-in-cpp.md - - name: Function Inlining Problems - href: tool-errors/function-inlining-problems.md - - name: Automatic (Function Scope) Variables - href: tool-errors/automatic-function-scope-variables.md - - name: Missing Function Body or Variable - href: tool-errors/missing-function-body-or-variable.md - - name: Linker tools error LNK2020 - href: tool-errors/linker-tools-error-lnk2020.md - - name: Linker tools error LNK2022 - href: tool-errors/linker-tools-error-lnk2022.md - - name: Linker tools error LNK2023 - href: tool-errors/linker-tools-error-lnk2023.md - - name: Linker tools error LNK2026 - href: tool-errors/linker-tools-error-lnk2026.md - - name: Linker tools error LNK2027 - href: tool-errors/linker-tools-error-lnk2027.md - - name: Linker tools error LNK2028 - href: tool-errors/linker-tools-error-lnk2028.md - - name: Linker tools error LNK2031 - href: tool-errors/linker-tools-error-lnk2031.md - - name: Linker tools error LNK2033 - href: tool-errors/linker-tools-error-lnk2033.md - - name: Linker tools error LNK2038 - href: tool-errors/linker-tools-error-lnk2038.md - - name: Linker tools error LNK2039 - href: tool-errors/linker-tools-error-lnk2039.md - - name: Linker tools warning LNK4001 - href: tool-errors/linker-tools-warning-lnk4001.md - - name: Linker tools warning LNK4002 - href: tool-errors/linker-tools-warning-lnk4002.md - - name: Linker tools warning LNK4006 - href: tool-errors/linker-tools-warning-lnk4006.md - - name: Linker tools warning LNK4010 - href: tool-errors/linker-tools-warning-lnk4010.md - - name: Linker tools warning LNK4014 - href: tool-errors/linker-tools-warning-lnk4014.md - - name: Linker tools warning LNK4020 - href: tool-errors/linker-tools-warning-lnk4020.md - - name: Linker tools warning LNK4022 - href: tool-errors/linker-tools-warning-lnk4022.md - - name: Linker tools warning LNK4037 - href: tool-errors/linker-tools-warning-lnk4037.md - - name: Linker tools warning LNK4039 - href: tool-errors/linker-tools-warning-lnk4039.md - - name: Linker tools warning LNK4044 - href: tool-errors/linker-tools-warning-lnk4044.md - - name: Linker tools warning LNK4049 - href: tool-errors/linker-tools-warning-lnk4049.md - - name: Linker tools warning LNK4065 - href: tool-errors/linker-tools-warning-lnk4065.md - - name: Linker tools warning LNK4070 - href: tool-errors/linker-tools-warning-lnk4070.md - - name: Linker tools warning LNK4071 - href: tool-errors/linker-tools-warning-lnk4071.md - - name: Linker tools warning LNK4073 - href: tool-errors/linker-tools-warning-lnk4073.md - - name: Linker tools warning LNK4075 - href: tool-errors/linker-tools-warning-lnk4075.md - - name: Linker tools warning LNK4076 - href: tool-errors/linker-tools-warning-lnk4076.md - - name: Linker tools warning LNK4078 - href: tool-errors/linker-tools-warning-lnk4078.md - - name: Linker tools warning LNK4086 - href: tool-errors/linker-tools-warning-lnk4086.md - - name: Linker tools warning LNK4092 - href: tool-errors/linker-tools-warning-lnk4092.md - - name: Linker tools warning LNK4096 - href: tool-errors/linker-tools-warning-lnk4096.md - - name: Linker tools warning LNK4098 - href: tool-errors/linker-tools-warning-lnk4098.md - - name: Linker tools warning LNK4099 - href: tool-errors/linker-tools-warning-lnk4099.md - - name: Linker tools warning LNK4102 - href: tool-errors/linker-tools-warning-lnk4102.md - - name: Linker tools warning LNK4104 - href: tool-errors/linker-tools-warning-lnk4104.md - - name: Linker tools warning LNK4105 - href: tool-errors/linker-tools-warning-lnk4105.md - - name: Linker tools warning LNK4194 - href: tool-errors/linker-tools-warning-lnk4194.md - - name: Linker tools warning LNK4197 - href: tool-errors/linker-tools-warning-lnk4197.md - - name: Linker tools warning LNK4199 - href: tool-errors/linker-tools-warning-lnk4199.md - - name: Linker tools warning LNK4200 - href: tool-errors/linker-tools-warning-lnk4200.md - - name: Linker tools warning LNK4204 - href: tool-errors/linker-tools-warning-lnk4204.md - - name: Linker tools warning LNK4205 - href: tool-errors/linker-tools-warning-lnk4205.md - - name: Linker tools warning LNK4206 - href: tool-errors/linker-tools-warning-lnk4206.md - - name: Linker tools warning LNK4210 - href: tool-errors/linker-tools-warning-lnk4210.md - - name: Linker tools warning LNK4216 - href: tool-errors/linker-tools-warning-lnk4216.md - - name: Linker tools warning LNK4217 - href: tool-errors/linker-tools-warning-lnk4217.md - - name: Linker tools warning LNK4219 - href: tool-errors/linker-tools-warning-lnk4219.md - - name: Linker tools warning LNK4220 - href: tool-errors/linker-tools-warning-lnk4220.md - - name: Linker tools warning LNK4221 - href: tool-errors/linker-tools-warning-lnk4221.md - - name: Linker tools warning LNK4222 - href: tool-errors/linker-tools-warning-lnk4222.md - - name: Linker tools warning LNK4224 - href: tool-errors/linker-tools-warning-lnk4224.md - - name: Linker tools warning LNK4227 - href: tool-errors/linker-tools-warning-lnk4227.md - - name: Linker tools warning LNK4229 - href: tool-errors/linker-tools-warning-lnk4229.md - - name: Linker tools warning LNK4237 - href: tool-errors/linker-tools-warning-lnk4237.md - - name: Linker tools warning LNK4247 - href: tool-errors/linker-tools-warning-lnk4247.md - - name: Linker tools warning LNK4248 - href: tool-errors/linker-tools-warning-lnk4248.md - - name: Linker tools warning LNK4253 - href: tool-errors/linker-tools-warning-lnk4253.md - - name: Linker tools warning LNK4254 - href: tool-errors/linker-tools-warning-lnk4254.md - - name: Linker tools warning LNK4286 - href: tool-errors/linker-tools-warning-lnk4286.md - - name: Linker tools warning LNK4306 - href: tool-errors/linker-tools-warning-lnk4306.md - - name: Linker tools warning LNK4307 - href: tool-errors/linker-tools-warning-lnk4307.md -- name: Math errors - expanded: false - items: - - name: Math errors (M6101 through M6205) - href: tool-errors/math-errors-m6101-through-m6205.md - - name: Math error M6101 - href: tool-errors/math-error-m6101.md - - name: Math error M6102 - href: tool-errors/math-error-m6102.md - - name: Math error M6107 - href: tool-errors/math-error-m6107.md - - name: Math error M6108 - href: tool-errors/math-error-m6108.md - - name: Math error M6110 - href: tool-errors/math-error-m6110.md - - name: Math error M6111 - href: tool-errors/math-error-m6111.md - - name: Math error M6201 - href: tool-errors/math-error-m6201.md - - name: Math error M6202 - href: tool-errors/math-error-m6202.md - - name: Math error M6203 - href: tool-errors/math-error-m6203.md - - name: Math error M6205 - href: tool-errors/math-error-m6205.md -- name: NMAKE errors and warnings - expanded: false - items: - - name: NMAKE errors and warnings (Uxxxx) - href: tool-errors/nmake-errors-u1000-through-u4011.md - - name: NMAKE fatal error U1000 - href: tool-errors/nmake-fatal-error-u1000.md - - name: NMAKE fatal error U1001 - href: tool-errors/nmake-fatal-error-u1001.md - - name: NMAKE fatal error U1007 - href: tool-errors/nmake-fatal-error-u1007.md - - name: NMAKE fatal error U1023 - href: tool-errors/nmake-fatal-error-u1023.md - - name: NMAKE fatal error U1033 - href: tool-errors/nmake-fatal-error-u1033.md - - name: NMAKE fatal error U1034 - href: tool-errors/nmake-fatal-error-u1034.md - - name: NMAKE fatal error U1035 - href: tool-errors/nmake-fatal-error-u1035.md - - name: NMAKE fatal error U1036 - href: tool-errors/nmake-fatal-error-u1036.md - - name: NMAKE fatal error U1045 - href: tool-errors/nmake-fatal-error-u1045.md - - name: NMAKE fatal error U1050 - href: tool-errors/nmake-fatal-error-u1050.md - - name: NMAKE fatal error U1051 - href: tool-errors/nmake-fatal-error-u1051.md - - name: NMAKE fatal error U1052 - href: tool-errors/nmake-fatal-error-u1052.md - - name: NMAKE fatal error U1055 - href: tool-errors/nmake-fatal-error-u1055.md - - name: NMAKE fatal error U1056 - href: tool-errors/nmake-fatal-error-u1056.md - - name: NMAKE fatal error U1059 - href: tool-errors/nmake-fatal-error-u1059.md - - name: NMAKE fatal error U1064 - href: tool-errors/nmake-fatal-error-u1064.md - - name: NMAKE fatal error U1065 - href: tool-errors/nmake-fatal-error-u1065.md - - name: NMAKE fatal error U1070 - href: tool-errors/nmake-fatal-error-u1070.md - - name: NMAKE fatal error U1071 - href: tool-errors/nmake-fatal-error-u1071.md - - name: NMAKE fatal error U1073 - href: tool-errors/nmake-fatal-error-u1073.md - - name: NMAKE fatal error U1076 - href: tool-errors/nmake-fatal-error-u1076.md - - name: NMAKE fatal error U1077 - href: tool-errors/nmake-fatal-error-u1077.md - - name: NMAKE fatal error U1078 - href: tool-errors/nmake-fatal-error-u1078.md - - name: NMAKE fatal error U1083 - href: tool-errors/nmake-fatal-error-u1083.md - - name: NMAKE fatal error U1086 - href: tool-errors/nmake-fatal-error-u1086.md - - name: NMAKE fatal error U1087 - href: tool-errors/nmake-fatal-error-u1087.md - - name: NMAKE fatal error U1088 - href: tool-errors/nmake-fatal-error-u1088.md - - name: NMAKE fatal error U1095 - href: tool-errors/nmake-fatal-error-u1095.md - - name: NMAKE fatal error U1097 - href: tool-errors/nmake-fatal-error-u1097.md - - name: NMAKE fatal error U1099 - href: tool-errors/nmake-fatal-error-u1099.md - - name: NMAKE fatal error U1100 - href: tool-errors/nmake-fatal-error-u1100.md - - name: NMAKE warning U4001 - href: tool-errors/nmake-warning-u4001.md - - name: NMAKE warning U4004 - href: tool-errors/nmake-warning-u4004.md - - name: NMAKE warning U4006 - href: tool-errors/nmake-warning-u4006.md - - name: NMAKE warning U4007 - href: tool-errors/nmake-warning-u4007.md - - name: NMAKE warning U4010 - href: tool-errors/nmake-warning-u4010.md - - name: NMAKE warning U4011 - href: tool-errors/nmake-warning-u4011.md -- name: Profile-Guided Optimization errors and warnings - expanded: false - items: - - name: Profile-Guided Optimization errors and warnings - href: tool-errors/profile-guided-optimization-errors-and-warnings.md - - name: Profile-Guided Optimization warning PG1039 - href: tool-errors/profile-guided-optimization-warning-pg1039.md - - name: Profile-Guided Optimization warning PG1087 - href: tool-errors/profile-guided-optimization-warning-pg1087.md - - name: Profile-Guided Optimization error PG0165 - href: tool-errors/profile-guided-optimization-error-pg0165.md -- name: Project build errors and warnings - expanded: false - items: - - name: Project build errors and warnings (PRJxxxx) - href: tool-errors/project-build-errors-and-warnings-prjxxxx.md - - name: Project Build error PRJ0002 - href: tool-errors/project-build-error-prj0002.md - - name: Project Build error PRJ0003 - href: tool-errors/project-build-error-prj0003.md - - name: Project Build error PRJ0004 - href: tool-errors/project-build-error-prj0004.md - - name: Project Build error PRJ0005 - href: tool-errors/project-build-error-prj0005.md - - name: Project Build error PRJ0006 - href: tool-errors/project-build-error-prj0006.md - - name: Project Build error PRJ0007 - href: tool-errors/project-build-error-prj0007.md - - name: Project Build error PRJ0008 - href: tool-errors/project-build-error-prj0008.md - - name: Project Build error PRJ0009 - href: tool-errors/project-build-error-prj0009.md - - name: Project Build error PRJ0013 - href: tool-errors/project-build-error-prj0013.md - - name: Project Build error PRJ0014 - href: tool-errors/project-build-error-prj0014.md - - name: Project Build error PRJ0015 - href: tool-errors/project-build-error-prj0015.md - - name: Project Build error PRJ0016 - href: tool-errors/project-build-error-prj0016.md - - name: Project Build error PRJ0017 - href: tool-errors/project-build-error-prj0017.md - - name: Project Build warning PRJ0018 - href: tool-errors/project-build-warning-prj0018.md - - name: Project Build error PRJ0019 - href: tool-errors/project-build-error-prj0019.md - - name: Project Build error PRJ0020 - href: tool-errors/project-build-error-prj0020.md - - name: Project Build error PRJ0021 - href: tool-errors/project-build-error-prj0021.md - - name: Project Build error PRJ0022 - href: tool-errors/project-build-error-prj0022.md - - name: Project Build error PRJ0023 - href: tool-errors/project-build-error-prj0023.md - - name: Project Build error PRJ0024 - href: tool-errors/project-build-error-prj0024.md - - name: Project Build error PRJ0025 - href: tool-errors/project-build-error-prj0025.md - - name: Project Build error PRJ0026 - href: tool-errors/project-build-error-prj0026.md - - name: Project Build error PRJ0027 - href: tool-errors/project-build-error-prj0027.md - - name: Project Build error PRJ0028 - href: tool-errors/project-build-error-prj0028.md - - name: Project Build warning PRJ0029 - href: tool-errors/project-build-warning-prj0029.md - - name: Project Build error PRJ0030 - href: tool-errors/project-build-error-prj0030.md - - name: Project Build error PRJ0031 - href: tool-errors/project-build-error-prj0031.md - - name: Project Build error PRJ0032 - href: tool-errors/project-build-error-prj0032.md - - name: Project Build error PRJ0033 - href: tool-errors/project-build-error-prj0033.md - - name: Project Build error PRJ0034 - href: tool-errors/project-build-error-prj0034.md - - name: Project Build error PRJ0035 - href: tool-errors/project-build-error-prj0035.md - - name: Project Build error PRJ0036 - href: tool-errors/project-build-error-prj0036.md - - name: Project Build error PRJ0040 - href: tool-errors/project-build-error-prj0040.md - - name: Project Build warning PRJ0041 - href: tool-errors/project-build-warning-prj0041.md - - name: Project Build warning PRJ0042 - href: tool-errors/project-build-warning-prj0042.md - - name: Project Build error PRJ0044 - href: tool-errors/project-build-error-prj0044.md - - name: Project Build error PRJ0046 - href: tool-errors/project-build-error-prj0046.md - - name: Project Build error PRJ0047 - href: tool-errors/project-build-error-prj0047.md - - name: Project Build warning PRJ0049 - href: tool-errors/project-build-warning-prj0049.md - - name: Project Build error PRJ0050 - href: tool-errors/project-build-error-prj0050.md -- name: Resource compiler errors and warnings - expanded: false - items: - - name: Resource compiler errors and warnings (RCxxxx, RWxxxx) - href: tool-errors/resource-compiler-errors-rc1000-through-rc4413.md - - name: Resource Compiler fatal error RC1002 - href: tool-errors/resource-compiler-fatal-error-rc1002.md - - name: Resource Compiler fatal error RC1004 - href: tool-errors/resource-compiler-fatal-error-rc1004.md - - name: Resource Compiler fatal error RC1009 - href: tool-errors/resource-compiler-fatal-error-rc1009.md - - name: Resource Compiler fatal error RC1011 - href: tool-errors/resource-compiler-fatal-error-rc1011.md - - name: Resource Compiler fatal error RC1015 - href: tool-errors/resource-compiler-fatal-error-rc1015.md - - name: Resource Compiler fatal error RC1017 - href: tool-errors/resource-compiler-fatal-error-rc1017.md - - name: Resource Compiler fatal error RC1018 - href: tool-errors/resource-compiler-fatal-error-rc1018.md - - name: Resource Compiler fatal error RC1019 - href: tool-errors/resource-compiler-fatal-error-rc1019.md - - name: Resource Compiler fatal error RC1020 - href: tool-errors/resource-compiler-fatal-error-rc1020.md - - name: Resource Compiler fatal error RC1021 - href: tool-errors/resource-compiler-fatal-error-rc1021.md - - name: Resource Compiler fatal error RC1022 - href: tool-errors/resource-compiler-fatal-error-rc1022.md - - name: Resource Compiler fatal error RC1047 - href: tool-errors/resource-compiler-fatal-error-rc1047.md - - name: Resource Compiler fatal error RC1052 - href: tool-errors/resource-compiler-fatal-error-rc1052.md - - name: Resource Compiler fatal error RC1067 - href: tool-errors/resource-compiler-fatal-error-rc1067.md - - name: Resource Compiler fatal error RC1101 - href: tool-errors/resource-compiler-fatal-error-rc1101.md - - name: Resource Compiler fatal error RC1102 - href: tool-errors/resource-compiler-fatal-error-rc1102.md - - name: Resource Compiler fatal error RC1105 - href: tool-errors/resource-compiler-fatal-error-rc1105.md - - name: Resource Compiler fatal error RC1109 - href: tool-errors/resource-compiler-fatal-error-rc1109.md - - name: Resource Compiler fatal error RC1116 - href: tool-errors/resource-compiler-fatal-error-rc1116.md - - name: Resource Compiler fatal error RC1120 - href: tool-errors/resource-compiler-fatal-error-rc1120.md - - name: Resource Compiler fatal error RC1121 - href: tool-errors/resource-compiler-fatal-error-rc1121.md - - name: Resource Compiler fatal error RC1203 - href: tool-errors/resource-compiler-fatal-error-rc1203.md - - name: Resource Compiler fatal error RC1205 - href: tool-errors/resource-compiler-fatal-error-rc1205.md - - name: Resource Compiler fatal error RC1208 - href: tool-errors/resource-compiler-fatal-error-rc1208.md - - name: Resource Compiler fatal error RW1004 - href: tool-errors/resource-compiler-fatal-error-rw1004.md - - name: Resource Compiler fatal error RW1009 - href: tool-errors/resource-compiler-fatal-error-rw1009.md - - name: Resource Compiler fatal error RW1016 - href: tool-errors/resource-compiler-fatal-error-rw1016.md - - name: Resource Compiler fatal error RW1022 - href: tool-errors/resource-compiler-fatal-error-rw1022.md - - name: Resource Compiler fatal error RW1023 - href: tool-errors/resource-compiler-fatal-error-rw1023.md - - name: Resource Compiler fatal error RW1025 - href: tool-errors/resource-compiler-fatal-error-rw1025.md - - name: Resource Compiler fatal error RW1030 - href: tool-errors/resource-compiler-fatal-error-rw1030.md - - name: Resource Compiler error RC2001 - href: tool-errors/resource-compiler-error-rc2001.md - - name: Resource Compiler error RC2007 - href: tool-errors/resource-compiler-error-rc2007.md - - name: Resource Compiler error RC2015 - href: tool-errors/resource-compiler-error-rc2015.md - - name: Resource Compiler error RC2017 - href: tool-errors/resource-compiler-error-rc2017.md - - name: Resource Compiler error RC2101 - href: tool-errors/resource-compiler-error-rc2101.md - - name: Resource Compiler error RC2103 - href: tool-errors/resource-compiler-error-rc2103.md - - name: Resource Compiler error RC2104 - href: tool-errors/resource-compiler-error-rc2104.md - - name: Resource Compiler error RC2107 - href: tool-errors/resource-compiler-error-rc2107.md - - name: Resource Compiler error RC2109 - href: tool-errors/resource-compiler-error-rc2109.md - - name: Resource Compiler error RC2111 - href: tool-errors/resource-compiler-error-rc2111.md - - name: Resource Compiler error RC2112 - href: tool-errors/resource-compiler-error-rc2112.md - - name: Resource Compiler error RC2113 - href: tool-errors/resource-compiler-error-rc2113.md - - name: Resource Compiler error RC2114 - href: tool-errors/resource-compiler-error-rc2114.md - - name: Resource Compiler error RC2116 - href: tool-errors/resource-compiler-error-rc2116.md - - name: Resource Compiler error RC2122 - href: tool-errors/resource-compiler-error-rc2122.md - - name: Resource Compiler error RC2124 - href: tool-errors/resource-compiler-error-rc2124.md - - name: Resource Compiler error RC2127 - href: tool-errors/resource-compiler-error-rc2127.md - - name: Resource Compiler error RC2135 - href: tool-errors/resource-compiler-error-rc2135.md - - name: Resource Compiler error RC2144 - href: tool-errors/resource-compiler-error-rc2144.md - - name: Resource Compiler error RC2147 - href: tool-errors/resource-compiler-error-rc2147.md - - name: Resource Compiler error RC2148 - href: tool-errors/resource-compiler-error-rc2148.md - - name: Resource Compiler error RC2151 - href: tool-errors/resource-compiler-error-rc2151.md - - name: Resource Compiler error RC2152 - href: tool-errors/resource-compiler-error-rc2152.md - - name: Resource Compiler error RC2162 - href: tool-errors/resource-compiler-error-rc2162.md - - name: Resource Compiler error RC2163 - href: tool-errors/resource-compiler-error-rc2163.md - - name: Resource Compiler error RC2164 - href: tool-errors/resource-compiler-error-rc2164.md - - name: Resource Compiler error RC2165 - href: tool-errors/resource-compiler-error-rc2165.md - - name: Resource Compiler error RC2167 - href: tool-errors/resource-compiler-error-rc2167.md - - name: Resource Compiler error RC2169 - href: tool-errors/resource-compiler-error-rc2169.md - - name: Resource Compiler error RC2170 - href: tool-errors/resource-compiler-error-rc2170.md - - name: Resource Compiler error RC2171 - href: tool-errors/resource-compiler-error-rc2171.md - - name: Resource Compiler error RC2175 - href: tool-errors/resource-compiler-error-rc2175.md - - name: Resource Compiler error RW2001 - href: tool-errors/resource-compiler-error-rw2001.md - - name: Resource Compiler error RW2002 - href: tool-errors/resource-compiler-error-rw2002.md - - name: Resource Compiler error RW2003 - href: tool-errors/resource-compiler-error-rw2003.md - - name: Resource Compiler warning RC4002 - href: tool-errors/resource-compiler-warning-rc4002.md - - name: Resource Compiler warning RC4005 - href: tool-errors/resource-compiler-warning-rc4005.md - - name: Resource Compiler warning RC4093 - href: tool-errors/resource-compiler-warning-rc4093.md - - name: Resource Compiler warning RC4214 - href: tool-errors/resource-compiler-warning-rc4214.md - - name: Resource Compiler warning RW4001 - href: tool-errors/resource-compiler-warning-rw4001.md - - name: Resource Compiler warning RW4003 - href: tool-errors/resource-compiler-warning-rw4003.md - - name: Resource Compiler warning RW4004 - href: tool-errors/resource-compiler-warning-rw4004.md -- name: Vectorizer and parallelizer messages - href: tool-errors/vectorizer-and-parallelizer-messages.md diff --git a/docs/error-messages/toc.yml b/docs/error-messages/toc.yml index fe34e4d9634..71c6190ca58 100644 --- a/docs/error-messages/toc.yml +++ b/docs/error-messages/toc.yml @@ -4358,6 +4358,8 @@ items: href: compiler-warnings/c5056.md - name: Compiler warning (level 1) C5072 href: compiler-warnings/compiler-warning-c5072.md + - name: Compiler warning (level 1) C5089 + href: compiler-warnings/compiler-warning-c5089.md - name: Compiler warning (level 1) C5105 href: compiler-warnings/c5105.md - name: Compiler warnings C5200 through C5399 From 8c10ba44ad09b39449ba78f81ca4ed3b1765e81d Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Fri, 31 Jul 2026 10:02:36 -0700 Subject: [PATCH 586/619] Improve metadata. --- docs/windows/latest-supported-vc-redist.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 9e2e4b234e0..d3d4394bb6a 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -1,6 +1,6 @@ --- title: Latest Supported Visual C++ Redistributable Downloads -description: This article provides download links for the latest Visual C++ Redistributable packages. +description: If you need to install Visual C++ Runtime libraries with you app, this article includes downloads for ARM64, x86, and x64, plus legacy packages. ms.date: 12/03/2025 helpviewer_keywords: [ From 5fa3329078d09f1005b958a0d545ba5a94343748 Mon Sep 17 00:00:00 2001 From: Bowen Yang <160521015+Albertyang0@users.noreply.github.com> Date: Fri, 7 Aug 2026 14:01:20 -0700 Subject: [PATCH 587/619] Delete .acrolinx-config.edn (#6786) --- .acrolinx-config.edn | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 .acrolinx-config.edn diff --git a/.acrolinx-config.edn b/.acrolinx-config.edn deleted file mode 100644 index 78cdd0e4df0..00000000000 --- a/.acrolinx-config.edn +++ /dev/null @@ -1,27 +0,0 @@ -{:allowed-branchname-matches ["main" "release-.*"] - :allowed-filename-matches ["docs" "styleguide"] - - :template-header - " -## Acrolinx Scorecards - - Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology: - -| Article | Score | Issues | Scorecard | -| ------- | ----- | ------ | --------- | -" - - ;; do not remove the spaces at the end of lines! That is markdown for - ;; linebreak - :template-change - "| **${github/filename}** | ${acrolinx/qualityscore} | ${acrolinx/flags/issues} | [link](${acrolinx/scorecard}) | -" - - :template-footer -" -**More info about Acrolinx** - -- [Install Acrolinx locally for VS Code](https://review.docs.microsoft.com/en-us/help/contribute/contribute-acrolinx-vscode) -- [Report false positives or issues](https://aka.ms/acrolinxbug) - -"} From 8a7aa709d276db7e1a6b50766babf340e707f7d1 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 18 Aug 2026 16:25:25 -0700 Subject: [PATCH 588/619] Revise ASan known issues and update documentation date Revised the section on ASan support for C++/CLI to clarify limitations and diagnostics. --- docs/sanitizers/asan-known-issues.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index cbb610e233c..76cf34d7a15 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -1,7 +1,7 @@ --- title: "AddressSanitizer known issues and limitations" description: "Technical description of the AddressSanitizer for Microsoft C/C++ known issues." -ms.date: 11/19/2025 +ms.date: 8/18/2026 helpviewer_keywords: ["AddressSanitizer known issues"] --- @@ -105,19 +105,18 @@ On x64, MSVC ASan's [shadow bytes](./asan-shadow-bytes.md) region occupies sever The Visual Studio debugger handles this gracefully, and doesn't show these traces. However, debuggers like WinDbgX may break on every exception by default. Disabling breaking on first-chance exceptions is recommended. For example, in WinDbgX, this corresponds to the [`sxd av`](/windows-hardware/drivers/debuggercmds/sx--sxd--sxe--sxi--sxn--sxr--sx---set-exceptions-) command. -## Managed C++ isn't fully supported +## ASan support for C++/CLI is experimental -An image built with both `/fsanitize=address` and `/clr` might link and start. Native code that is compiled with ASan can still report memory-safety errors when C++/CLI code calls it. +For reliable AddressSanitizer (ASan) diagnostics, isolate memory-unsafe code in native translation units or DLLs compiled without `/clr` and with `/fsanitize=address`. Call the native code from C++/CLI wrappers. -However, ASan support for C++/CLI is limited to native code compiled without `/clr`. The CLR is responsible for memory mutating operations in C++/CLI methods, managed objects, JIT-generated code, garbage-collected memory, managed thread startup, finalizers, and CLR shutdown or unload behavior. These components aren't guaranteed to have ASan load or store instrumentation. For reliable ASan diagnostics, put memory-unsafe implementation code in native translation units or native DLLs that are compiled normally with `/fsanitize=address`. Call that code from C++/CLI wrapper code. +The CLR manages memory and JIT-generated code, so C++/CLI code isn't guaranteed to receive ASan load and store instrumentation. As a result: -For applications that run, you might see misleading ASan reports or missed coverage: +• C++/CLI and STL code: Memory accesses within C++/CLI methods might not be instrumented, including accesses performed by STL code. +• Managed arrays: Out-of-range access produces CLR behavior, such as `IndexOutOfRangeException`, rather than an ERROR: AddressSanitizer report. +• Managed threads: Native memory accesses emitted within C++/CLI method bodies might not produce ASan diagnostics. +• Finalization and shutdown: Reports during finalization, process shutdown, or mixed-mode unloading might not reliably indicate user-code memory bugs. +• Native hosts: Loading an ASan-enabled C++/CLI wrapper DLL from a native host might produce misleading runtime failures, such as access-violation reports for unknown addresses. -- STL code compiled as C++/CLI might miss coverage. Even though the source looks identical to native C++, accesses emitted in the C++/CLI method body might not have native ASan load or store checks. -- The CLR, not ASan, reports managed array bounds errors. A managed out-of-range access produces CLR behavior such as `IndexOutOfRangeException`, not an `ERROR: AddressSanitizer` report. -- Code running on managed threads might miss ASan diagnostics for memory accesses emitted inside C++/CLI method bodies. Even if the CLR thread transition works, it doesn't prove the method body is ASan aware. -- C++/CLI finalizers and normal C++/CLI process teardown are managed by the CLR and order-dependent. Don't interpret failures or reports during finalization, shutdown, or mixed-mode unload as reliable ASan diagnostics for user memory bugs. -- Loading an ASan-enabled C++/CLI wrapper DLL from a native host can produce misleading runtime failures, such as ASan access-violation reports on unknown addresses. ## See also [AddressSanitizer overview](asan.md)\ From dd1413624a987c09071059cb6c9cc3be1748e723 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 18 Aug 2026 17:17:07 -0700 Subject: [PATCH 589/619] Update docs/sanitizers/asan-known-issues.md Co-authored-by: learn-build-service-prod-02[bot] <274428175+learn-build-service-prod-02[bot]@users.noreply.github.com> --- docs/sanitizers/asan-known-issues.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 76cf34d7a15..15c9243f84a 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -107,7 +107,8 @@ The Visual Studio debugger handles this gracefully, and doesn't show these trace ## ASan support for C++/CLI is experimental -For reliable AddressSanitizer (ASan) diagnostics, isolate memory-unsafe code in native translation units or DLLs compiled without `/clr` and with `/fsanitize=address`. Call the native code from C++/CLI wrappers. +For reliable AddressSanitizer (ASan) diagnostics, isolate memory-unsafe code in native translation units or DLLs compiled without `/clr` and with `/fsanitize=address`. Call the native code from C++/CLI wrappers. + The CLR manages memory and JIT-generated code, so C++/CLI code isn't guaranteed to receive ASan load and store instrumentation. As a result: From 15ff2437d704b823f4bbed90d9fb9ab9f26fc347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Knobloch?= <67308900+vitknobloch@users.noreply.github.com> Date: Wed, 19 Aug 2026 16:30:00 +0200 Subject: [PATCH 590/619] Add new ARM64 feature arguments to documentation (#5950) Add new extensions `cssc` and `faminmax` to the `/feature` flag arguments documentation --- docs/build/reference/feature-arm64.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/build/reference/feature-arm64.md b/docs/build/reference/feature-arm64.md index 2954b4fed11..63869f6bbc4 100644 --- a/docs/build/reference/feature-arm64.md +++ b/docs/build/reference/feature-arm64.md @@ -16,6 +16,8 @@ To enable one or more features the targeted ARM64 extension supports, specify on | Feature argument | Feature identifier | Optional from | Enabled by default | Description | Supported in version |--|--|--|--|--|--| +|**`cssc`** | `FEAT_CSSC` | Armv8.7 | Armv8.9 | Common Short Sequence Compression instructions. | Visual Studio 2026 18.10 (14.52) +|**`faminmax`** | `FEAT_FAMINMAX` | Armv9.2 | Armv9.5 | Floating-point maximum and minimum absolute value instructions. | Visual Studio 2026 18.10 (14.52) |**`lse`** | `FEAT_LSE` | Armv8.0 | Armv8.1 | Large System Extensions. | Visual Studio 2022 17.10 |**`rcpc`** | `FEAT_LRCPC` | Armv8.2 | Armv8.3 | Load-Acquire RCpc instructions. | Visual Studio 2022 17.10 |**`rcpc2`** | `FEAT_LRCPC2` | Armv8.2 | Armv8.4 | Load-Acquire RCpc instructions v2. | Visual Studio 2022 17.11 From 58ed50da5659b1fb5fb01f9701db8e86e89ee798 Mon Sep 17 00:00:00 2001 From: Jay Satiro Date: Wed, 19 Aug 2026 10:39:46 -0400 Subject: [PATCH 591/619] atexit: Clarify DLL behavior is the same as _onexit (#5952) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * atexit: Clarify DLL behavior is the same as _onexit - Document that atexit called from within a DLL will register the routine to run when the DLL is unloaded. atexit is a wrapper around _onexit which already documents this behavior. Ref: https://github.com/curl/curl/pull/22383#discussion_r3753438017 Reported-by: Michał Petryka Closes #xxxx * Revise atexit documentation for accuracy Update the date and clarify DLL behavior for atexit. --------- Co-authored-by: Tyler Whitney --- docs/c-runtime-library/reference/atexit.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/c-runtime-library/reference/atexit.md b/docs/c-runtime-library/reference/atexit.md index 1264498d49f..f3fa82b4a7d 100644 --- a/docs/c-runtime-library/reference/atexit.md +++ b/docs/c-runtime-library/reference/atexit.md @@ -1,7 +1,7 @@ --- description: "Learn more about: atexit" title: "atexit" -ms.date: "11/04/2016" +ms.date: "8/18/2026" api_name: ["atexit"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] @@ -36,6 +36,8 @@ The **`atexit`** function is passed the address of a function *`func`* to be cal The code in the **`atexit`** function shouldn't contain any dependency on any DLL that could have already been unloaded when the **`atexit`** function is called. +**Microsoft-specific DLL behavior**: When a DLL unloads, after `DLLMain` receives `DLL_PROCESS_DETACH`, the DLL's `atexit` callbacks run in reverse registration order, with the last callback registered running first. + To generate an ANSI-conformant application, use the ANSI-standard **`atexit`** function (rather than the similar **`_onexit`** function). ## Requirements From 8b96415f84c8cf794bca739c9bba74d179b11248 Mon Sep 17 00:00:00 2001 From: "learn-build-service-prod[bot]" <113403604+learn-build-service-prod[bot]@users.noreply.github.com> Date: Thu, 20 Aug 2026 00:52:19 +0700 Subject: [PATCH 592/619] Confirm merge from FromPublicMasterBranch to main to sync with https://github.com/MicrosoftDocs/cpp-docs (branch main) (#6788) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update Vectorized STL algorithm documentation to reflect the current stae (#5937) Since the last update: * ARM64 and ARM64EC vectorization was added. Mention of x64 and x86 is removed, as vectorization is now supported on any target, except deprecated `/clr:pure` and `/clr:safe` modes. * `includes` is now manually vectorized too * `replace_copy` is now manually vectorized too Also moved `find_end` to `search` / `search_n` group, where it fits better. * Update header-files-cpp.md (#5938) Clarify intent of section * Update documentation on accessing System.String characters (#5940) * Update documentation on accessing System.String characters Added important note about treating interior pointers as const and linked to unsafe code best practices. * Update docs/dotnet/how-to-access-characters-in-a-system-string.md Co-authored-by: Jan Kotas * Apply suggestions from code review Co-authored-by: Aaron R Robinson * Apply suggestions from code review Co-authored-by: Aaron R Robinson --------- Co-authored-by: Jan Kotas * Clarify version prefix for Visual Studio Command Prompt (#5946) Updated instructions for starting Visual Studio Command Prompt to reflect changes in version specification. * Add new ARM64 feature arguments to documentation (#5950) Add new extensions `cssc` and `faminmax` to the `/feature` flag arguments documentation * atexit: Clarify DLL behavior is the same as _onexit (#5952) * atexit: Clarify DLL behavior is the same as _onexit - Document that atexit called from within a DLL will register the routine to run when the DLL is unloaded. atexit is a wrapper around _onexit which already documents this behavior. Ref: https://github.com/curl/curl/pull/22383#discussion_r3753438017 Reported-by: Michał Petryka Closes #xxxx * Revise atexit documentation for accuracy Update the date and clarify DLL behavior for atexit. --------- Co-authored-by: Tyler Whitney --------- Co-authored-by: learn-build-service-prod[bot] <113403604+learn-build-service-prod[bot]@users.noreply.github.com> Co-authored-by: Learn Build Service GitHub App Co-authored-by: Alex Guteniev Co-authored-by: veganaiZe <7102064+veganaiZe@users.noreply.github.com> Co-authored-by: Aaron R Robinson Co-authored-by: Jan Kotas Co-authored-by: Eric Brumer Co-authored-by: Vít Knobloch <67308900+vitknobloch@users.noreply.github.com> Co-authored-by: Jay Satiro Co-authored-by: Tyler Whitney --- docs/build/reference/feature-arm64.md | 2 ++ docs/c-runtime-library/reference/atexit.md | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/build/reference/feature-arm64.md b/docs/build/reference/feature-arm64.md index 2954b4fed11..63869f6bbc4 100644 --- a/docs/build/reference/feature-arm64.md +++ b/docs/build/reference/feature-arm64.md @@ -16,6 +16,8 @@ To enable one or more features the targeted ARM64 extension supports, specify on | Feature argument | Feature identifier | Optional from | Enabled by default | Description | Supported in version |--|--|--|--|--|--| +|**`cssc`** | `FEAT_CSSC` | Armv8.7 | Armv8.9 | Common Short Sequence Compression instructions. | Visual Studio 2026 18.10 (14.52) +|**`faminmax`** | `FEAT_FAMINMAX` | Armv9.2 | Armv9.5 | Floating-point maximum and minimum absolute value instructions. | Visual Studio 2026 18.10 (14.52) |**`lse`** | `FEAT_LSE` | Armv8.0 | Armv8.1 | Large System Extensions. | Visual Studio 2022 17.10 |**`rcpc`** | `FEAT_LRCPC` | Armv8.2 | Armv8.3 | Load-Acquire RCpc instructions. | Visual Studio 2022 17.10 |**`rcpc2`** | `FEAT_LRCPC2` | Armv8.2 | Armv8.4 | Load-Acquire RCpc instructions v2. | Visual Studio 2022 17.11 diff --git a/docs/c-runtime-library/reference/atexit.md b/docs/c-runtime-library/reference/atexit.md index 1264498d49f..f3fa82b4a7d 100644 --- a/docs/c-runtime-library/reference/atexit.md +++ b/docs/c-runtime-library/reference/atexit.md @@ -1,7 +1,7 @@ --- description: "Learn more about: atexit" title: "atexit" -ms.date: "11/04/2016" +ms.date: "8/18/2026" api_name: ["atexit"] api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"] api_type: ["DLLExport"] @@ -36,6 +36,8 @@ The **`atexit`** function is passed the address of a function *`func`* to be cal The code in the **`atexit`** function shouldn't contain any dependency on any DLL that could have already been unloaded when the **`atexit`** function is called. +**Microsoft-specific DLL behavior**: When a DLL unloads, after `DLLMain` receives `DLL_PROCESS_DETACH`, the DLL's `atexit` callbacks run in reverse registration order, with the last callback registered running first. + To generate an ANSI-conformant application, use the ANSI-standard **`atexit`** function (rather than the similar **`_onexit`** function). ## Requirements From fda2706c26008425ec6e4cbc615c9865c9f79092 Mon Sep 17 00:00:00 2001 From: Tim Sherer <28902327+TimShererWithAquent@users.noreply.github.com> Date: Wed, 19 Aug 2026 10:58:04 -0700 Subject: [PATCH 593/619] UUF Fix for "Walkthrough: Create and use a static library" (5 of 10) (#6769) * UUF Fix. * Remove duplicate customer intent from documentation Removed duplicate customer intent line from the metadata section. * Apply suggestions from code review Co-authored-by: learn-build-service-prod-02[bot] <274428175+learn-build-service-prod-02[bot]@users.noreply.github.com> * Update per comment. * Apply suggestions from code review Co-authored-by: learn-build-service-prod-02[bot] <274428175+learn-build-service-prod-02[bot]@users.noreply.github.com> --------- Co-authored-by: learn-build-service-prod-02[bot] <274428175+learn-build-service-prod-02[bot]@users.noreply.github.com> --- ...creating-and-using-a-static-library-cpp.md | 104 +++++++++--------- 1 file changed, 54 insertions(+), 50 deletions(-) diff --git a/docs/build/walkthrough-creating-and-using-a-static-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-static-library-cpp.md index 6ca15699093..80c6daafcfe 100644 --- a/docs/build/walkthrough-creating-and-using-a-static-library-cpp.md +++ b/docs/build/walkthrough-creating-and-using-a-static-library-cpp.md @@ -1,14 +1,15 @@ --- title: "Walkthrough: Create and use a static library (C++)" -description: "Use C++ to create a static library (.lib) in Visual Studio." +description: Learn to create and use a static library in C++ using Visual Studio. This walkthrough covers building a .lib file, adding a class, and referencing it in an app. ms.custom: "get-started-article" -ms.date: 10/28/2021 +ms.date: 07/14/2026 helpviewer_keywords: ["libraries [C++], static", "static libraries [C++]"] ms.assetid: 3cc36411-7d66-4240-851e-dacb9a8fd6ac +#customer intent: As a C++ developer, I want to create a static library in Visual Studio, so that I can reuse common code across multiple apps. --- # Walkthrough: Create and use a static library -This step-by-step walkthrough shows how to create a static library (.lib file) for use with C++ apps. Using a static library is a great way to reuse code. Rather than reimplementing the same routines in every app that requires the functionality, you write them one time in a static library and then reference it from the apps. Code linked from a static library becomes part of your app—you don't have to install another file to use the code. +This step-by-step walkthrough shows how to create a static library (.lib file) for use with C++ apps. Using a static library is a great way to reuse code. Rather than reimplementing the same routines in every app that requires the functionality, write them one time in a static library and then reference it from the apps. Code linked from a static library becomes part of your app. You don't have to install another file to use the code. This walkthrough covers these tasks: @@ -32,19 +33,19 @@ The instructions for how to create the project vary depending on your version of ::: moniker range=">=msvc-160" -### To create a static library project in Visual Studio +To create a static library project in Visual Studio: -1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a New Project** dialog. +1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a new project** dialog. 1. At the top of the dialog, set **Language** to **C++**, set **Platform** to **Windows**, and set **Project type** to **Library**. -1. From the filtered list of project types, select **Windows Desktop Wizard**, then choose **Next**. +1. From the filtered list of project types, select **Windows Desktop Wizard**, and then choose **Next**. 1. In the **Configure your new project** page, enter *MathLibrary* in the **Project name** box to specify a name for the project. Enter *StaticMath* in the **Solution name** box. Choose the **Create** button to open the **Windows Desktop Project** dialog. 1. In the **Windows Desktop Project** dialog, under **Application type**, select **Static Library (.lib)**. -1. Under **Additional options**, uncheck the **Precompiled header** check box if it's checked. Check the **Empty project** box. +1. Under **Additional options**, clear the **Precompiled header** check box if it's selected. Select **Empty project**. 1. Choose **OK** to create the project. @@ -52,17 +53,17 @@ The instructions for how to create the project vary depending on your version of ::: moniker range="msvc-150" -### To create a static library project in Visual Studio 2017 +To create a static library project in Visual Studio 2017: 1. On the menu bar, choose **File** > **New** > **Project**. -1. In the **New Project** dialog box, select **Installed** > **Visual C++** > **Windows Desktop**. In the center pane, select **Windows Desktop Wizard**. +1. In the **New Project** dialog, select **Installed** > **Visual C++** > **Windows Desktop**. In the center pane, select **Windows Desktop Wizard**. -1. Specify a name for the project—for example, *MathLibrary*—in the **Name** box. Specify a name for the solution—for example, *StaticMath*—in the **Solution Name** box. Choose the **OK** button. +1. Specify a name for the project, such as *MathLibrary*, in the **Name** box. Specify a name for the solution, such as *StaticMath*, in the **Solution Name** box. Choose **OK**. 1. In the **Windows Desktop Project** dialog, under **Application type**, select **Static Library (.lib)**. -1. Under **Additional Options**, uncheck the **Precompiled header** check box if it's checked. Check the **Empty project** box. +1. Under **Additional Options**, clear the **Precompiled header** check box if it's selected. Select **Empty project**. 1. Choose **OK** to create the project. @@ -70,27 +71,27 @@ The instructions for how to create the project vary depending on your version of ::: moniker range="msvc-140" -### To create a static library project in Visual Studio 2015 +To create a static library project in Visual Studio 2015: 1. On the menu bar, choose **File** > **New** > **Project**. -1. In the **New Project** dialog box, select **Installed** > **Templates** > **Visual C++** > **Win32**. In the center pane, select **Win32 Console Application**. +1. In the **New Project** dialog, select **Installed** > **Templates** > **Visual C++** > **Win32**. In the center pane, select **Win32 Console Application**. -1. Specify a name for the project—for example, *MathLibrary*—in the **Name** box. Specify a name for the solution—for example, *StaticMath*—in the **Solution Name** box. Choose the **OK** button. +1. Specify a name for the project, such as *MathLibrary*, in the **Name** box. Specify a name for the solution, such as *StaticMath*, in the **Solution Name** box. Choose **OK**. 1. In the **Win32 Application Wizard**, choose **Next**. -1. In the **Application Settings** page, under **Application type**, select **Static library**. Under **Additional options**, uncheck the **Precompiled header** checkbox. Choose **Finish** to create the project. +1. In the **Application Settings** page, under **Application type**, select **Static library**. Under **Additional options**, clear the **Precompiled header** checkbox. Choose **Finish** to create the project. ::: moniker-end ## Add a class to the static library -### To add a class to the static library +To add a class to the static library: -1. To create a header file for a new class, right-click to open the shortcut menu for the **MathLibrary** project in **Solution Explorer**, and then choose **Add** > **New Item**. +1. Create a header file for a new class. In **Solution Explorer**, right-click **MathLibrary** to open the context menu for the project. Select **Add** > **New Item**. -1. In the **Add New Item** dialog box, select **Visual C++** > **Code**. In the center pane, select **Header File (.h)**. Specify a name for the header file—for example, *MathLibrary.h*—and then choose the **Add** button. A nearly blank header file is displayed. +1. In the **Add New Item** dialog, select **Visual C++** > **Code**. In the center pane, select **Header File (.h)**. Specify a name for the header file, such as *MathLibrary.h*, and then select **Add**. A nearly blank header file is displayed. 1. Add a declaration for a class named `Arithmetic` to do common mathematical operations such as addition, subtraction, multiplication, and division. The code should resemble: @@ -118,9 +119,9 @@ The instructions for how to create the project vary depending on your version of } ``` -1. To create a source file for the new class, open the shortcut menu for the **MathLibrary** project in **Solution Explorer**, and then choose **Add** > **New Item**. +1. To create a source file for the new class, open the context menu for the **MathLibrary** project in **Solution Explorer**, and then choose **Add** > **New Item**. -1. In the **Add New Item** dialog box, in the center pane, select **C++ File (.cpp)**. Specify a name for the source file—for example, *MathLibrary.cpp*—and then choose the **Add** button. A blank source file is displayed. +1. In the **Add New Item** dialog, in the center pane, select **C++ File (.cpp)**. Specify a name for the source file, such as *MathLibrary.cpp*. Then select **Add**. A blank source file is displayed. 1. Use this source file to implement the functionality for class `Arithmetic`. The code should resemble: @@ -155,42 +156,45 @@ The instructions for how to create the project vary depending on your version of } ``` -1. To build the static library, select **Build** > **Build Solution** on the menu bar. The build creates a static library, *MathLibrary.lib*, that can be used by other programs. +1. To build the static library, select **Build** > **Build Solution** on the menu bar. The build creates a static library, *MathLibrary.lib*, that other programs can use. > [!NOTE] - > When you build on the Visual Studio command line, you must build the program in two steps. First, run `cl /c /EHsc MathLibrary.cpp` to compile the code and create an object file that's named *MathLibrary.obj*. (The `cl` command invokes the compiler, Cl.exe, and the `/c` option specifies compile without linking. For more information, see [/c (Compile Without Linking)](../build/reference/c-compile-without-linking.md).) Second, run `lib MathLibrary.obj` to link the code and create the static library *MathLibrary.lib*. (The `lib` command invokes the Library Manager, Lib.exe. For more information, see [LIB Reference](../build/reference/lib-reference.md).) + > When you build on the Visual Studio command line, you must build the program in two steps. + > + > 1. Run `cl /c /EHsc MathLibrary.cpp` to compile the code and create an object file named *MathLibrary.obj*. The `cl` command invokes the compiler, Cl.exe, and the `/c` option specifies compile without linking. For more information, see [/c (Compile Without Linking)](../build/reference/c-compile-without-linking.md). + > 1. Run `lib MathLibrary.obj` to link the code and create the static library *MathLibrary.lib*. The `lib` command invokes the Library Manager, Lib.exe. For more information, see [LIB Reference](../build/reference/lib-reference.md). ## Create a C++ console app that references the static library ::: moniker range=">=msvc-160" -### To create a C++ console app that references the static library in Visual Studio +To create a C++ console app that references the static library in Visual Studio: -1. In **Solution Explorer**, right-click on the top node, **Solution 'StaticMath'**, to open the shortcut menu. Choose **Add** > **New Project** to open the **Add a New Project** dialog. +1. In **Solution Explorer**, right-click on the top node, **Solution 'StaticMath'**, to open the context menu. Choose **Add** > **New Project** to open the **Add a New Project** dialog. 1. At the top of the dialog, set the **Project type** filter to **Console**. -1. From the filtered list of project types, choose **Console App** then choose **Next**. In the next page, enter *MathClient* in the **Name** box to specify a name for the project. +1. From the filtered list of project types, choose **Console App** then choose **Next**. In the next page, enter *MathClient* as the name for the project. -1. Choose the **Create** button to create the client project. +1. Choose **Create** to create the client project. -1. After you create a console app, an empty program is created for you. The name for the source file is the same as the name that you chose earlier. In the example, it's named `MathClient.cpp`. + After you create a console app, an empty program is created for you. The name for the source file is the same as the name that you chose earlier. In the example, it's named `MathClient.cpp`. ::: moniker-end ::: moniker range="msvc-150" -### To create a C++ console app that references the static library in Visual Studio 2017 +To create a C++ console app that references the static library in Visual Studio 2017: -1. In **Solution Explorer**, right-click on the top node, **Solution 'StaticMath'**, to open the shortcut menu. Choose **Add** > **New Project** to open the **Add a New Project** dialog box. +1. In **Solution Explorer**, right-click on the top node, **Solution 'StaticMath'**, to open the context menu. Choose **Add** > **New Project** to open the **Add a New Project** dialog. -1. In the **Add New Project** dialog box, select **Installed** > **Visual C++** > **Windows Desktop**. In the center pane, select **Windows Desktop Wizard**. +1. In the **Add New Project** dialog, select **Installed** > **Visual C++** > **Windows Desktop**. In the center pane, select **Windows Desktop Wizard**. 1. Specify a name for the project—for example, *MathClient*—in the **Name** box. Choose the **OK** button. 1. In the **Windows Desktop Project** dialog, under **Application type**, select **Console Application (.exe)**. -1. Under **Additional Options**, uncheck the **Precompiled header** check box if it's checked. +1. Under **Additional Options**, clear the **Precompiled header** check box if it's selected. 1. Choose **OK** to create the project. @@ -200,35 +204,35 @@ The instructions for how to create the project vary depending on your version of ::: moniker range="msvc-140" -### To create a C++ console app that references the static library in Visual Studio 2015 +To create a C++ console app that references the static library in Visual Studio 2015: -1. In **Solution Explorer**, right-click on the top node, **Solution 'StaticMath'**, to open the shortcut menu. Choose **Add** > **New Project** to open the **Add a New Project** dialog box. +1. In **Solution Explorer**, right-click on the top node, **Solution 'StaticMath'**, to open the context menu. Choose **Add** > **New Project** to open the **Add a New Project** dialog. -1. In the **Add New Project** dialog box, select **Installed** > **Visual C++** > **Win32**. In the center pane, select **Win32 Console Application**. +1. In the **Add New Project** dialog, select **Installed** > **Visual C++** > **Win32**. In the center pane, select **Win32 Console Application**. 1. Specify a name for the project—for example, *MathClient*—in the **Name** box. Choose the **OK** button. 1. In the **Win32 Application Wizard** dialog, choose **Next**. -1. On the **Application Settings** page, under **Application type**, make sure **Console application** is selected. Under **Additional options**, uncheck **Precompiled header**, then check the **Empty Project** checkbox. Choose **Finish** to create the project. +1. On the **Application Settings** page, under **Application type**, make sure **Console application** is selected. Under **Additional options**, clear **Precompiled header**, and then select **Empty Project**. Choose **Finish** to create the project. -1. To add a source file to the empty project, right-click to open the shortcut menu for the **MathClient** project in **Solution Explorer**, and then choose **Add** > **New Item**. +1. To add a source file to the empty project, right-click to open the context menu for the **MathClient** project in **Solution Explorer**, and then choose **Add** > **New Item**. -1. In the **Add New Item** dialog box, select **Visual C++** > **Code**. In the center pane, select **C++ File (.cpp)**. Specify a name for the source file—for example, *MathClient.cpp*—and then choose the **Add** button. A blank source file is displayed. +1. In the **Add New Item** dialog, select **Visual C++** > **Code**. In the center pane, select **C++ File (.cpp)**. Specify a name for the source file—for example, *MathClient.cpp*—and then choose the **Add** button. A blank source file is displayed. ::: moniker-end ## Use the functionality from the static library in the app -### To use the functionality from the static library in the app +To use the functionality from the static library in the app: -1. Before you can use the math routines in the static library, you must reference it. Open the shortcut menu for the **MathClient** project in **Solution Explorer**, and then choose **Add** > **Reference**. +1. Reference the static library before using the math routines in it. Open the context menu for the **MathClient** project in **Solution Explorer**, and then choose **Add** > **Reference**. -1. The **Add Reference** dialog box lists the libraries that you can reference. The **Projects** tab lists the projects in the current solution and any libraries they reference. Open the **Projects** tab, select the **MathLibrary** check box, and then choose the **OK** button. +1. The **Add Reference** dialog lists the libraries that you can reference. The **Projects** tab lists the projects in the current solution and any libraries they reference. Open the **Projects** tab, select **MathLibrary**, and then select **OK**. -1. To reference the `MathLibrary.h` header file, you must modify the included directories path. In **Solution Explorer**, right-click on **MathClient** to open the shortcut menu. Choose **Properties** to open the **MathClient Property Pages** dialog box. +1. Modify the included directories path to reference the `MathLibrary.h` header file. In **Solution Explorer**, right-click on **MathClient** to open the context menu. Choose **Properties** to open the **MathClient Property Pages** dialog. -1. In the **MathClient Property Pages** dialog box, set the **Configuration** drop-down to **All Configurations**. Set the **Platform** drop-down to **All Platforms**. +1. In the **MathClient Property Pages** dialog, set the **Configuration** value to **All Configurations**. Set **Platform** to **All Platforms**. 1. Select the **Configuration Properties** > **C/C++** > **General** property page. In the **Additional Include Directories** property, specify the path of the **MathLibrary** directory, or browse for it. @@ -236,13 +240,13 @@ The instructions for how to create the project vary depending on your version of 1. Open the **Additional Include Directories** property value drop-down list, and then choose **Edit**. - 1. In the **Additional Include Directories** dialog box, double-click in the top of the text box. Then choose the ellipsis button (**...**) at the end of the line. + 1. In the **Additional Include Directories** dialog, double-click in the top of the text box. Then choose the ellipsis button (**...**) at the end of the line. - 1. In the **Select Directory** dialog box, navigate up a level, and then select the **MathLibrary** directory. Then choose the **Select Folder** button to save your selection. + 1. In the **Select Directory** dialog, navigate up a level, and then select the **MathLibrary** directory. Then choose the **Select Folder** button to save your selection. - 1. In the **Additional Include Directories** dialog box, choose the **OK** button. + 1. In the **Additional Include Directories** dialog, choose the **OK** button. - 1. In the **Property Pages** dialog box, choose the **OK** button to save your changes to the project. + 1. In the **Property Pages** dialog, choose the **OK** button to save your changes to the project. 1. You can now use the `Arithmetic` class in this app by including the `#include "MathLibrary.h"` header in your code. Replace the contents of `MathClient.cpp` with this code: @@ -275,11 +279,11 @@ The instructions for how to create the project vary depending on your version of ## Run the app -### To run the app +To run the app: -1. Make sure that **MathClient** is selected as the default project. To select it, right-click to open the shortcut menu for **MathClient** in **Solution Explorer**, and then choose **Set as StartUp Project**. +1. Make sure that **MathClient** is selected as the default project. To select it, right-click **MathClient** in **Solution Explorer** to open the context menu, and then choose **Set as StartUp Project**. -1. To run the project, on the menu bar, choose **Debug** > **Start Without Debugging**. The output should resemble: +1. On the menu bar, choose **Debug** > **Start Without Debugging** to run the project. The output should resemble: ```Output a + b = 106.4 @@ -290,4 +294,4 @@ The instructions for how to create the project vary depending on your version of ## See also -[Walkthrough: Creating and Using a Dynamic Link Library (C++)](../build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md) \ No newline at end of file +[Walkthrough: Creating and Using a Dynamic Link Library (C++)](../build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md) From 9b55438a31b3d5879798851a603eaa29838b399a Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Wed, 19 Aug 2026 13:50:07 -0700 Subject: [PATCH 594/619] minor fixes --- docs/c-runtime-library/reference/atexit.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/c-runtime-library/reference/atexit.md b/docs/c-runtime-library/reference/atexit.md index f3fa82b4a7d..bc23f551d51 100644 --- a/docs/c-runtime-library/reference/atexit.md +++ b/docs/c-runtime-library/reference/atexit.md @@ -28,27 +28,27 @@ Function to be called. ## Return value -**`atexit`** returns 0 if successful, or a nonzero value if an error occurs. +`atexit` returns 0 if successful, or a nonzero value if an error occurs. ## Remarks -The **`atexit`** function is passed the address of a function *`func`* to be called when the program terminates normally. Successive calls to **`atexit`** create a register of functions that are executed in last-in, first-out (LIFO) order. The functions passed to **`atexit`** can't take parameters. **`atexit`** and **`_onexit`** use the heap to hold the register of functions. Thus, the number of functions that can be registered is limited only by heap memory. +The `atexit` function is passed the address of a function *`func`* to be called when the program terminates normally. Successive calls to `atexit` create a register of functions that are executed in last-in, first-out (LIFO) order. The functions passed to `atexit` can't take parameters. `atexit` and `_onexit` use the heap to hold the register of functions. Thus, the number of functions that can be registered is limited only by heap memory. -The code in the **`atexit`** function shouldn't contain any dependency on any DLL that could have already been unloaded when the **`atexit`** function is called. +The code in the `atexit` function shouldn't contain any dependency on any DLL that could have already been unloaded when the `atexit` function is called. -**Microsoft-specific DLL behavior**: When a DLL unloads, after `DLLMain` receives `DLL_PROCESS_DETACH`, the DLL's `atexit` callbacks run in reverse registration order, with the last callback registered running first. +**Microsoft-specific DLL behavior**: When a DLL unloads, after `DllMain` receives `DLL_PROCESS_DETACH`, the DLL's `atexit` callbacks run in reverse registration order, with the last callback registered running first. -To generate an ANSI-conformant application, use the ANSI-standard **`atexit`** function (rather than the similar **`_onexit`** function). +To generate an ANSI-conformant application, use the ANSI-standard `atexit` function (rather than the similar `_onexit` function). ## Requirements | Routine | Required header | |---|---| -| **`atexit`** | `` | +| `atexit` | `` | ## Example -This program pushes four functions onto the stack of functions to be executed when **`atexit`** is called. When the program exits, these programs are executed on a last in, first out basis. +This program pushes four functions onto the stack of functions to be executed when `atexit` is called. When the program exits, these programs are executed on a last in, first out basis. ```C // crt_atexit.c From 81a8cada67597d9384f1669558772e8307067ff9 Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Wed, 19 Aug 2026 13:57:17 -0700 Subject: [PATCH 595/619] note msvc version --- docs/build/reference/feature-arm64.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/feature-arm64.md b/docs/build/reference/feature-arm64.md index 63869f6bbc4..b4a81178d93 100644 --- a/docs/build/reference/feature-arm64.md +++ b/docs/build/reference/feature-arm64.md @@ -16,8 +16,8 @@ To enable one or more features the targeted ARM64 extension supports, specify on | Feature argument | Feature identifier | Optional from | Enabled by default | Description | Supported in version |--|--|--|--|--|--| -|**`cssc`** | `FEAT_CSSC` | Armv8.7 | Armv8.9 | Common Short Sequence Compression instructions. | Visual Studio 2026 18.10 (14.52) -|**`faminmax`** | `FEAT_FAMINMAX` | Armv9.2 | Armv9.5 | Floating-point maximum and minimum absolute value instructions. | Visual Studio 2026 18.10 (14.52) +|**`cssc`** | `FEAT_CSSC` | Armv8.7 | Armv8.9 | Common Short Sequence Compression instructions. | Visual Studio 2026 18.10 (MSVC 14.52) +|**`faminmax`** | `FEAT_FAMINMAX` | Armv9.2 | Armv9.5 | Floating-point maximum and minimum absolute value instructions. | Visual Studio 2026 18.10 (MSVC 14.52) |**`lse`** | `FEAT_LSE` | Armv8.0 | Armv8.1 | Large System Extensions. | Visual Studio 2022 17.10 |**`rcpc`** | `FEAT_LRCPC` | Armv8.2 | Armv8.3 | Load-Acquire RCpc instructions. | Visual Studio 2022 17.10 |**`rcpc2`** | `FEAT_LRCPC2` | Armv8.2 | Armv8.4 | Load-Acquire RCpc instructions v2. | Visual Studio 2022 17.11 From 136a5f5ddb3aa8295fa17ab919bee6d1d86b30ea Mon Sep 17 00:00:00 2001 From: chcomley Date: Wed, 19 Aug 2026 13:58:33 -0700 Subject: [PATCH 596/619] Document cross-install MSVC toolset discovery --- docs/overview/acquire-msvc.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/docs/overview/acquire-msvc.md b/docs/overview/acquire-msvc.md index b70d02b277e..a919b5f4808 100644 --- a/docs/overview/acquire-msvc.md +++ b/docs/overview/acquire-msvc.md @@ -1,8 +1,9 @@ --- title: "Install the Microsoft C++ (MSVC) Build Tools" description: "Install the MSVC Build Tools using the Visual Studio Installer UI, command line, winget, or a .vsconfig file. Choose Preview, latest release, or an older in-support toolset, and target it from MSBuild, CMake, or the Visual Studio Command Prompt." -ms.date: 07/13/2026 +ms.date: 08/19/2026 ms.topic: how-to +ai-usage: ai-assisted ms.service: "visual-cpp" ms.subservice: "tools" ms.custom: intro-installation @@ -164,6 +165,22 @@ msbuild /p:Platform= /p:Configuration= / `` matches the folder name under `\VC\Tools\MSVC\`. +#### Discover an MSVC toolset in another installation + +> [!NOTE] +> Cross-install discovery requires Visual Studio version 18.8 or later. + +Visual Studio might find the requested `PlatformToolset` in the current installation even when that installation doesn't contain the exact `VCToolsVersion` you specified. To search all Visual Studio and Visual Studio Build Tools installations for the exact version, add the following properties to your `.vcxproj` file or a `Directory.Build.props` file: + +```xml + + true + 14.43.34604 + +``` + +With discovery enabled, Visual Studio selects a pinned version from another installation even when the current installation contains a different version of the same `PlatformToolset`. This behavior supports reproducible builds without manually setting `VCToolsInstallDir`. The requested MSVC toolset must already be installed on the machine. + To build with the MSVC preview tools, add `/p:MSVCPreviewEnabled=true`: ```cmd From aa72bb6302681adfae51dbed557c48a8b3769e36 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 19 Aug 2026 14:00:03 -0700 Subject: [PATCH 597/619] Apply suggestions from code review Co-authored-by: learn-build-service-prod-04[bot] <274428985+learn-build-service-prod-04[bot]@users.noreply.github.com> --- docs/c-runtime-library/reference/atexit.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/c-runtime-library/reference/atexit.md b/docs/c-runtime-library/reference/atexit.md index bc23f551d51..392566beb4d 100644 --- a/docs/c-runtime-library/reference/atexit.md +++ b/docs/c-runtime-library/reference/atexit.md @@ -32,9 +32,9 @@ Function to be called. ## Remarks -The `atexit` function is passed the address of a function *`func`* to be called when the program terminates normally. Successive calls to `atexit` create a register of functions that are executed in last-in, first-out (LIFO) order. The functions passed to `atexit` can't take parameters. `atexit` and `_onexit` use the heap to hold the register of functions. Thus, the number of functions that can be registered is limited only by heap memory. +The `atexit` function gets the address of a function *`func`* to call when the program terminates normally. Successive calls to `atexit` create a register of functions that execute in last-in, first-out (LIFO) order. The functions passed to `atexit` can't take parameters. `atexit` and `_onexit` use the heap to hold the register of functions. Thus, the number of functions you can register is limited only by heap memory. -The code in the `atexit` function shouldn't contain any dependency on any DLL that could have already been unloaded when the `atexit` function is called. +The code in the `atexit` function shouldn't contain any dependency on any DLL that could already be unloaded when the `atexit` function is called. **Microsoft-specific DLL behavior**: When a DLL unloads, after `DllMain` receives `DLL_PROCESS_DETACH`, the DLL's `atexit` callbacks run in reverse registration order, with the last callback registered running first. @@ -48,7 +48,7 @@ To generate an ANSI-conformant application, use the ANSI-standard `atexit` funct ## Example -This program pushes four functions onto the stack of functions to be executed when `atexit` is called. When the program exits, these programs are executed on a last in, first out basis. +This program pushes four functions onto the stack of functions to execute when `atexit` is called. When the program exits, it executes these functions in last-in, first-out order. ```C // crt_atexit.c From 8dd9d5e03c4f247a4a1ac8dce576a1d8a9a49853 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 19 Aug 2026 14:16:53 -0700 Subject: [PATCH 598/619] fix formatting --- docs/sanitizers/asan-known-issues.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 15c9243f84a..8a1f9c387b7 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -112,11 +112,11 @@ For reliable AddressSanitizer (ASan) diagnostics, isolate memory-unsafe code in The CLR manages memory and JIT-generated code, so C++/CLI code isn't guaranteed to receive ASan load and store instrumentation. As a result: -• C++/CLI and STL code: Memory accesses within C++/CLI methods might not be instrumented, including accesses performed by STL code. -• Managed arrays: Out-of-range access produces CLR behavior, such as `IndexOutOfRangeException`, rather than an ERROR: AddressSanitizer report. -• Managed threads: Native memory accesses emitted within C++/CLI method bodies might not produce ASan diagnostics. -• Finalization and shutdown: Reports during finalization, process shutdown, or mixed-mode unloading might not reliably indicate user-code memory bugs. -• Native hosts: Loading an ASan-enabled C++/CLI wrapper DLL from a native host might produce misleading runtime failures, such as access-violation reports for unknown addresses. +- C++/CLI and STL code: Memory accesses within C++/CLI methods might not be instrumented, including accesses performed by STL code. +- Managed arrays: Out-of-range access produces CLR behavior, such as `IndexOutOfRangeException`, rather than an ERROR: AddressSanitizer report. +- Managed threads: Native memory accesses emitted within C++/CLI method bodies might not produce ASan diagnostics. +- Finalization and shutdown: Reports during finalization, process shutdown, or mixed-mode unloading might not reliably indicate user-code memory bugs. +- Native hosts: Loading an ASan-enabled C++/CLI wrapper DLL from a native host might produce misleading runtime failures, such as access-violation reports for unknown addresses. ## See also From 7e440a408efdb780cf530d7b65046b92d968ffc2 Mon Sep 17 00:00:00 2001 From: chcomley <35748196+chcomley@users.noreply.github.com> Date: Thu, 20 Aug 2026 12:25:31 -0700 Subject: [PATCH 599/619] Revise MSVC installation guide for clarity and date Updated the date and clarified the note about VCToolsVersion discovery in the MSVC installation guide. --- docs/overview/acquire-msvc.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/overview/acquire-msvc.md b/docs/overview/acquire-msvc.md index a919b5f4808..a8d5d03fa3f 100644 --- a/docs/overview/acquire-msvc.md +++ b/docs/overview/acquire-msvc.md @@ -1,7 +1,7 @@ --- title: "Install the Microsoft C++ (MSVC) Build Tools" description: "Install the MSVC Build Tools using the Visual Studio Installer UI, command line, winget, or a .vsconfig file. Choose Preview, latest release, or an older in-support toolset, and target it from MSBuild, CMake, or the Visual Studio Command Prompt." -ms.date: 08/19/2026 +ms.date: 08/20/2026 ms.topic: how-to ai-usage: ai-assisted ms.service: "visual-cpp" @@ -170,7 +170,7 @@ msbuild /p:Platform= /p:Configuration= / > [!NOTE] > Cross-install discovery requires Visual Studio version 18.8 or later. -Visual Studio might find the requested `PlatformToolset` in the current installation even when that installation doesn't contain the exact `VCToolsVersion` you specified. To search all Visual Studio and Visual Studio Build Tools installations for the exact version, add the following properties to your `.vcxproj` file or a `Directory.Build.props` file: +The current Visual Studio installation might not find the exact `VCToolsVersion` you specify. To search all Visaul Studio Build Tools installations, add the following properties to your `.vcxproj` file or a `Directory.Build.props` file: ```xml @@ -179,7 +179,7 @@ Visual Studio might find the requested `PlatformToolset` in the current installa ``` -With discovery enabled, Visual Studio selects a pinned version from another installation even when the current installation contains a different version of the same `PlatformToolset`. This behavior supports reproducible builds without manually setting `VCToolsInstallDir`. The requested MSVC toolset must already be installed on the machine. +With discovery enabled, Visual Studio finds the specified version, potentially from a different installation. This behavior supports reproducible builds without manually setting `VCToolsInstallDir`. The requested MSVC toolset must already be installed on the machine. To build with the MSVC preview tools, add `/p:MSVCPreviewEnabled=true`: From 783fc811726d08e6c84e22ecdb62ef9bfecba3bd Mon Sep 17 00:00:00 2001 From: chcomley <35748196+chcomley@users.noreply.github.com> Date: Thu, 20 Aug 2026 12:26:46 -0700 Subject: [PATCH 600/619] Update docs/overview/acquire-msvc.md Co-authored-by: learn-build-service-prod-05[bot] <274429479+learn-build-service-prod-05[bot]@users.noreply.github.com> --- docs/overview/acquire-msvc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/acquire-msvc.md b/docs/overview/acquire-msvc.md index a8d5d03fa3f..7de9d38d2e9 100644 --- a/docs/overview/acquire-msvc.md +++ b/docs/overview/acquire-msvc.md @@ -170,7 +170,7 @@ msbuild /p:Platform= /p:Configuration= / > [!NOTE] > Cross-install discovery requires Visual Studio version 18.8 or later. -The current Visual Studio installation might not find the exact `VCToolsVersion` you specify. To search all Visaul Studio Build Tools installations, add the following properties to your `.vcxproj` file or a `Directory.Build.props` file: +The current Visual Studio installation might not find the exact `VCToolsVersion` you specify. To search all Visual Studio Build Tools installations, add the following properties to your `.vcxproj` file or a `Directory.Build.props` file: ```xml From 868aa4763ca09f605a424e59af364183f862c1f6 Mon Sep 17 00:00:00 2001 From: chcomley <35748196+chcomley@users.noreply.github.com> Date: Thu, 20 Aug 2026 12:48:07 -0700 Subject: [PATCH 601/619] Update acquire-msvc.md --- docs/overview/acquire-msvc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/overview/acquire-msvc.md b/docs/overview/acquire-msvc.md index 7de9d38d2e9..0acc6adb724 100644 --- a/docs/overview/acquire-msvc.md +++ b/docs/overview/acquire-msvc.md @@ -170,7 +170,7 @@ msbuild /p:Platform= /p:Configuration= / > [!NOTE] > Cross-install discovery requires Visual Studio version 18.8 or later. -The current Visual Studio installation might not find the exact `VCToolsVersion` you specify. To search all Visual Studio Build Tools installations, add the following properties to your `.vcxproj` file or a `Directory.Build.props` file: +The current Visual Studio installation might not find the exact `VCToolsVersion` you specify. To search all Visual Studio and Visual Studio Build Tools installations, add the following properties to your `.vcxproj` file or a `Directory.Build.props` file: ```xml From e870f554be98dcb5e27e8d080b686ddf5baa5bd7 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 20 Aug 2026 14:20:58 -0700 Subject: [PATCH 602/619] Document C++23 static call and subscript operators (#6791) * operator () * add static operator[] * Refine static subscript example * Apply suggestions from code review Co-authored-by: learn-build-service-prod-09[bot] <274431102+learn-build-service-prod-09[bot]@users.noreply.github.com> * Clarify static operator qualifiers --------- Co-authored-by: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Co-authored-by: learn-build-service-prod-09[bot] <274431102+learn-build-service-prod-09[bot]@users.noreply.github.com> --- docs/cpp/function-call-cpp.md | 3 +- docs/cpp/static-function-call-operator.md | 88 +++++++++++++++++++++++ docs/cpp/static-subscript-operator.md | 70 ++++++++++++++++++ docs/cpp/subscripting.md | 5 +- docs/cpp/toc.yml | 4 ++ 5 files changed, 168 insertions(+), 2 deletions(-) create mode 100644 docs/cpp/static-function-call-operator.md create mode 100644 docs/cpp/static-subscript-operator.md diff --git a/docs/cpp/function-call-cpp.md b/docs/cpp/function-call-cpp.md index 804b63b3b5e..8c0cd68810a 100644 --- a/docs/cpp/function-call-cpp.md +++ b/docs/cpp/function-call-cpp.md @@ -17,7 +17,7 @@ primary-expression ( expression-list ) ## Remarks -In this context, `primary-expression` is the first operand, and `expression-list`, a possibly empty list of arguments, is the second operand. The function-call operator is used for operations that require a number of parameters. This works because `expression-list` is a list instead of a single operand. The function-call operator must be a nonstatic member function. +In this context, `primary-expression` is the first operand, and `expression-list`, a possibly empty list of arguments, is the second operand. The function-call operator is useful for operations that require a number of parameters. This usefulness comes from the fact that `expression-list` is a list instead of a single operand. Before C++23, the function-call operator had to be a nonstatic member function. In C++23 and later, it can be a static member function. For more information, see [Static function call operator](static-function-call-operator.md). The function-call operator, when overloaded, does not modify how functions are called; rather, it modifies how the operator is to be interpreted when applied to objects of a given class type. For example, the following code would usually be meaningless: @@ -73,4 +73,5 @@ int main() ## See also +[Static function call operator](static-function-call-operator.md)\ [Operator Overloading](../cpp/operator-overloading.md) diff --git a/docs/cpp/static-function-call-operator.md b/docs/cpp/static-function-call-operator.md new file mode 100644 index 00000000000..b1fbb12d625 --- /dev/null +++ b/docs/cpp/static-function-call-operator.md @@ -0,0 +1,88 @@ +--- +description: "Learn how to declare and use the static function call operator in C++." +title: "Static function call operator (C++)" +ms.date: 08/19/2026 +ai-usage: ai-assisted +helpviewer_keywords: ["static function call operator [C++]", "static operator() [C++]", "operator overloading [C++]"] +--- + +# Static function call operator (C++) + +In C++23, you can declare the function call operator (`operator()`) as a static member function. A static function call operator doesn't have an implicit object parameter. Use it when a callable type doesn't need to access instance data. + +Support for this feature was introduced in Visual Studio 2022 version 17.14 (MSVC 14.44). Use the `/std:c++latest` compiler option. + +## Syntax + +```cpp +static return-type operator()(parameter-list); +``` + +You can also declare the function call operator generated for a lambda expression as static: + +```cpp +[](parameter-list) static { function-body } +``` + +## Remarks + +A static function call operator doesn't have a `this` pointer. It can't be `virtual` or have a cv-qualifier (`const` or `volatile`) or ref-qualifier (`&`, `&&`). + +You can call a static function call operator by using an object of its class, which allows the object to work as a function object. You can also call it by using its qualified name. Taking its address produces a regular function pointer instead of a pointer-to-member function. + +A lambda expression can specify `static` after its parameter list. A static lambda can't have captures or be declared `mutable`. Declaring a captureless lambda doesn't make it static automatically; you must specify `static` to opt in to this behavior. + +The feature-test macro `__cpp_static_call_operator` is defined when the static function call operator is available. + +## Example + +The following example defines a stateless function object and calls its static function call operator in three ways: + +```cpp +// Compile with: /std:c++latest + +#include + +struct Multiply +{ + static constexpr int operator()(int left, int right) noexcept + { + return left * right; + } +}; + +int main() +{ + Multiply multiply; + + std::cout << "multiply(6, 7) = " << multiply(6, 7) << std::endl; + std::cout << "Multiply::operator()(3, 4) = " + << Multiply::operator()(3, 4) << std::endl; + + auto multiply_function = &Multiply::operator(); + std::cout << "multiply_function(5, 5) = " + << multiply_function(5, 5) << std::endl; + + auto twice = [](int value) static noexcept + { + return value * 2; + }; + + std::cout << "twice(21) = " << twice(21) << std::endl; +} +``` + +```output +multiply(6, 7) = 42 +Multiply::operator()(3, 4) = 12 +multiply_function(5, 5) = 25 +twice(21) = 42 +``` + +## See also + +[Function call](function-call-cpp.md)\ +[Function-call operator](function-call-operator-parens.md)\ +[Operator overloading](operator-overloading.md)\ +[`static` members](static-members-cpp.md)\ +[Proposal P1169R4: static `operator()`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1169r4.html) \ No newline at end of file diff --git a/docs/cpp/static-subscript-operator.md b/docs/cpp/static-subscript-operator.md new file mode 100644 index 00000000000..fd0498a3bf3 --- /dev/null +++ b/docs/cpp/static-subscript-operator.md @@ -0,0 +1,70 @@ +--- +description: "Learn how to declare and use the static subscript operator in C++." +title: "Static subscript operator (C++)" +ms.date: 08/19/2026 +ai-usage: ai-assisted +helpviewer_keywords: ["static subscript operator [C++]", "static operator[] [C++]", "operator overloading [C++]"] +--- + +# Static subscript operator (C++) + +In C++23, you can declare the subscript operator (`operator[]`) as a static member function. A static subscript operator doesn't have an implicit object parameter. Use it when a subscript operation doesn't need to access instance data. + +Support for this feature was introduced in Visual Studio 2022 version 17.14 (MSVC 14.44). Use the `/std:c++latest` compiler option. + +## Syntax + +```cpp +static return-type operator[](parameter-list); +``` + +## Remarks + +A static subscript operator doesn't have a `this` pointer. It can't be `virtual` or have a cv-qualifier (`const` or `volatile`) or ref-qualifier (`&`, `&&`). + +You can call a static subscript operator by using an object of its class, which allows the object to use subscript syntax. You can also call it by using its qualified name. Taking its address produces a regular function pointer instead of a pointer-to-member function. + +The feature-test macro `__cpp_static_call_operator` is defined when the static subscript operator is available. + +## Example + +The following example defines a stateless type that calculates powers of two and calls its static subscript operator in three ways: + +```cpp +// Compile with: /std:c++latest + +#include + +struct PowersOfTwo +{ + static constexpr unsigned int operator[](unsigned int exponent) noexcept + { + return 1U << exponent; + } +}; + +int main() +{ + PowersOfTwo powers_of_two; + + std::cout << "powers_of_two[6] = " << powers_of_two[6] << std::endl; + std::cout << "PowersOfTwo::operator[](4) = " + << PowersOfTwo::operator[](4) << std::endl; + + auto power_function = &PowersOfTwo::operator[]; + std::cout << "power_function(5) = " << power_function(5) << std::endl; +} +``` + +```output +powers_of_two[6] = 64 +PowersOfTwo::operator[](4) = 16 +power_function(5) = 32 +``` + +## See also + +[Subscripting](subscripting.md)\ +[Operator overloading](operator-overloading.md)\ +[`static` members](static-members-cpp.md)\ +[Proposal P2589R1: static `operator[]`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2589r1.pdf) \ No newline at end of file diff --git a/docs/cpp/subscripting.md b/docs/cpp/subscripting.md index 62fc228c211..fca0cb6b2a8 100644 --- a/docs/cpp/subscripting.md +++ b/docs/cpp/subscripting.md @@ -7,7 +7,9 @@ ms.assetid: eb151281-6733-401d-9787-39ab6754c62c --- # Subscripting -The subscript operator (**[ ]**), like the function-call operator, is considered a binary operator. The subscript operator must be a nonstatic member function that takes a single argument. This argument can be of any type and designates the desired array subscript. +The subscript operator (**[ ]**), like the function-call operator, is a binary operator. Before C++23, the subscript operator must be a nonstatic member function. In C++23 and later, it can be a static member function. For more information, see [Static subscript operator](static-subscript-operator.md). + +The argument can be any type and designates the desired array subscript. ## Example @@ -86,4 +88,5 @@ Note that the function **operator[]** returns a reference type. This causes it t ## See also +[Static subscript operator](static-subscript-operator.md)\ [Operator Overloading](../cpp/operator-overloading.md) diff --git a/docs/cpp/toc.yml b/docs/cpp/toc.yml index 1f17ade4e51..111d9c465ec 100644 --- a/docs/cpp/toc.yml +++ b/docs/cpp/toc.yml @@ -336,8 +336,12 @@ items: href: ../cpp/assignment.md - name: Function call href: ../cpp/function-call-cpp.md + - name: Static function call operator + href: ../cpp/static-function-call-operator.md - name: Subscripting href: ../cpp/subscripting.md + - name: Static subscript operator + href: ../cpp/static-subscript-operator.md - name: Member access href: ../cpp/member-access.md - name: Classes and structs From cbcf77b30fb07a9f79af4b9a90d5ac438647f59e Mon Sep 17 00:00:00 2001 From: b-wkl <152566623+b-wkl@users.noreply.github.com> Date: Thu, 20 Aug 2026 15:54:39 -0700 Subject: [PATCH 603/619] Update SSE and AVX descriptions to x64 Change comment from Intel to x64 for /arch (x64) flag description consistency. --- docs/build/reference/arch-x64.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index da9e57733f8..435d925bc94 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -16,25 +16,25 @@ Specifies the architecture for code generation on x64. These switches apply to t ## Arguments **`/arch:SSE2`**\ -Enables Intel Streaming SIMD Extensions 2. The default instruction set is SSE2 if no **`/arch`** option is specified. +Enables x64 Streaming SIMD Extensions 2. The default instruction set is SSE2 if no **`/arch`** option is specified. **`/arch:SSE4.2`**\ -Enables Intel Streaming SIMD Extensions 4.2. +Enables x64 Streaming SIMD Extensions 4.2. **`/arch:AVX`**\ -Enables Intel Advanced Vector Extensions. +Enables x64 Advanced Vector Extensions. **`/arch:AVX2`**\ -Enables Intel Advanced Vector Extensions 2. +Enables x64 Advanced Vector Extensions 2. **`/arch:AVX512`**\ -Enables Intel Advanced Vector Extensions 512. +Enables x64 Advanced Vector Extensions 512. **`/arch:AVX10.1`**\ -Enables Intel Advanced Vector Extensions 10 version 1. +Enables x64 Advanced Vector Extensions 10 version 1. **`/arch:AVX10.2`**\ -Enables Intel Advanced Vector Extensions 10 version 2. +Enables x64 Advanced Vector Extensions 10 version 2. ## Remarks From 952d9e63e2b157456f1a9e8f7c184d0fc06fa212 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 20 Aug 2026 16:06:21 -0700 Subject: [PATCH 604/619] Apply suggestions from code review Co-authored-by: learn-build-service-prod-10[bot] <274431553+learn-build-service-prod-10[bot]@users.noreply.github.com> --- docs/build/reference/arch-x64.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index 435d925bc94..f75dd9acbee 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -16,7 +16,7 @@ Specifies the architecture for code generation on x64. These switches apply to t ## Arguments **`/arch:SSE2`**\ -Enables x64 Streaming SIMD Extensions 2. The default instruction set is SSE2 if no **`/arch`** option is specified. +Enables x64 Streaming SIMD Extensions 2. If you don't specify a **`/arch`** option, the default instruction set is SSE2. **`/arch:SSE4.2`**\ Enables x64 Streaming SIMD Extensions 4.2. From a1bfa0ef7ff6fba87db87f12810d3cf67471264c Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Mon, 24 Aug 2026 13:36:35 -0700 Subject: [PATCH 605/619] update to clarify that applies to AMD and INTEL --- docs/build/reference/arch-x64.md | 16 ++++++++-------- docs/build/reference/arch-x86.md | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index f75dd9acbee..861f0fe9097 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["/arch:SSE2 compiler option [C++]", "/arch:SSE4.2 compiler --- # `/arch` (x64) -Specifies the architecture for code generation on x64. These switches apply to the x64 targeting version of the compiler. For more information on **`/arch`** for other target architectures, see [`/arch` (x86)](arch-x86.md), [`/arch` (ARM64)](arch-arm64.md), and [`/arch` (ARM)](arch-arm.md). +Specifies the architecture for code generation on x64. These switches apply to version of the compiler that targets x64. For more information about **`/arch`** for other target architectures, see [`/arch` (x86)](arch-x86.md), [`/arch` (ARM64)](arch-arm64.md), and [`/arch` (ARM)](arch-arm.md). ## Syntax @@ -16,25 +16,25 @@ Specifies the architecture for code generation on x64. These switches apply to t ## Arguments **`/arch:SSE2`**\ -Enables x64 Streaming SIMD Extensions 2. If you don't specify a **`/arch`** option, the default instruction set is SSE2. +Enables Streaming SIMD Extensions 2. If you don't specify a **`/arch`** option, the default instruction set is SSE2. **`/arch:SSE4.2`**\ -Enables x64 Streaming SIMD Extensions 4.2. +Enables Streaming SIMD Extensions 4.2. **`/arch:AVX`**\ -Enables x64 Advanced Vector Extensions. +Enables Advanced Vector Extensions. **`/arch:AVX2`**\ -Enables x64 Advanced Vector Extensions 2. +Enables Advanced Vector Extensions 2. **`/arch:AVX512`**\ -Enables x64 Advanced Vector Extensions 512. +Enables Advanced Vector Extensions 512. **`/arch:AVX10.1`**\ -Enables x64 Advanced Vector Extensions 10 version 1. +Enables Advanced Vector Extensions 10 version 1. **`/arch:AVX10.2`**\ -Enables x64 Advanced Vector Extensions 10 version 2. +Enables Advanced Vector Extensions 10 version 2. ## Remarks diff --git a/docs/build/reference/arch-x86.md b/docs/build/reference/arch-x86.md index a133eda92db..54a91f10e76 100644 --- a/docs/build/reference/arch-x86.md +++ b/docs/build/reference/arch-x86.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["/arch:IA32 compiler option [C++]", "/arch:SSE compiler op --- # `/arch` (x86) -Specifies the architecture for code generation on x86. These switches apply to the x86 (32-bit) targeting version of the compiler. For more information on **`/arch`** for other target architectures, see [`/arch` (ARM64)](arch-arm64.md), [`/arch` (x64)](arch-x64.md), and [`/arch` (ARM)](arch-arm.md). +Specifies the architecture for code generation on x86. These switches apply to the version of the compiler that targets x86 (32-bit). For more information on **`/arch`** for other target architectures, see [`/arch` (ARM64)](arch-arm64.md), [`/arch` (x64)](arch-x64.md), and [`/arch` (ARM)](arch-arm.md). ## Syntax @@ -19,25 +19,25 @@ Specifies the architecture for code generation on x86. These switches apply to t Specifies no enhanced instructions and also specifies x87 for floating-point calculations. **`/arch:SSE`**\ -Enables Intel Streaming SIMD Extensions. +Enables Streaming SIMD Extensions. **`/arch:SSE2`**\ -Enables Intel Streaming SIMD Extensions 2. The default instruction set is SSE2 if no **`/arch`** option is specified. +Enables Streaming SIMD Extensions 2. The default instruction set is SSE2 if no **`/arch`** option is specified. **`/arch:AVX`**\ -Enables Intel Advanced Vector Extensions. +Enables Advanced Vector Extensions. **`/arch:AVX2`**\ -Enables Intel Advanced Vector Extensions 2. +Enables Advanced Vector Extensions 2. **`/arch:AVX512`**\ -Enables Intel Advanced Vector Extensions 512. +Enables Advanced Vector Extensions 512. **`/arch:AVX10.1`**\ -Enables Intel Advanced Vector Extensions 10 version 1. +Enables Advanced Vector Extensions 10 version 1. **`/arch:AVX10.2`**\ -Enables Intel Advanced Vector Extensions 10 version 2. +Enables Advanced Vector Extensions 10 version 2. ## Remarks From 5773f68be7ea1053a88ef4275969e470dc6b1f99 Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Mon, 24 Aug 2026 13:38:32 -0700 Subject: [PATCH 606/619] edit --- docs/build/reference/arch-x86.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/arch-x86.md b/docs/build/reference/arch-x86.md index 54a91f10e76..98dcdf12f64 100644 --- a/docs/build/reference/arch-x86.md +++ b/docs/build/reference/arch-x86.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["/arch:IA32 compiler option [C++]", "/arch:SSE compiler op --- # `/arch` (x86) -Specifies the architecture for code generation on x86. These switches apply to the version of the compiler that targets x86 (32-bit). For more information on **`/arch`** for other target architectures, see [`/arch` (ARM64)](arch-arm64.md), [`/arch` (x64)](arch-x64.md), and [`/arch` (ARM)](arch-arm.md). +Specifies the architecture for code generation on x86. These switches apply to the version of the compiler that targets x86 (32-bit). For more information about **`/arch`** for other target architectures, see [`/arch` (ARM64)](arch-arm64.md), [`/arch` (x64)](arch-x64.md), and [`/arch` (ARM)](arch-arm.md). ## Syntax From 46b4a7892102443c94925d988e9a7a44efdd2743 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 24 Aug 2026 13:55:36 -0700 Subject: [PATCH 607/619] Apply suggestions from code review Co-authored-by: learn-build-service-prod-05[bot] <274429479+learn-build-service-prod-05[bot]@users.noreply.github.com> --- docs/build/reference/arch-x86.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/arch-x86.md b/docs/build/reference/arch-x86.md index 98dcdf12f64..411c90f5e4d 100644 --- a/docs/build/reference/arch-x86.md +++ b/docs/build/reference/arch-x86.md @@ -22,7 +22,7 @@ Specifies no enhanced instructions and also specifies x87 for floating-point cal Enables Streaming SIMD Extensions. **`/arch:SSE2`**\ -Enables Streaming SIMD Extensions 2. The default instruction set is SSE2 if no **`/arch`** option is specified. +Enables Streaming SIMD Extensions 2. If you don't specify an **`/arch`** option, the default instruction set is SSE2. **`/arch:AVX`**\ Enables Advanced Vector Extensions. From 3674f392688163c76bf2c738614d6d93a0290bf4 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 24 Aug 2026 14:55:00 -0700 Subject: [PATCH 608/619] add link preview to PRs (#6795) Co-authored-by: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> --- .github/workflows/generate-preview-links.yml | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/generate-preview-links.yml diff --git a/.github/workflows/generate-preview-links.yml b/.github/workflows/generate-preview-links.yml new file mode 100644 index 00000000000..784d2be5b6e --- /dev/null +++ b/.github/workflows/generate-preview-links.yml @@ -0,0 +1,25 @@ +name: 'Preview link generator' + +on: + pull_request_target: + types: [opened, synchronize, reopened] + +permissions: + contents: read + +jobs: + preview_link_generator_job: + name: Generate preview link table + runs-on: ubuntu-latest + permissions: + statuses: read + pull-requests: write + steps: + - name: Harden Runner + uses: step-security/harden-runner@b09bb98e06d4d774595224525879c09bc6e98c40 # v2.20.1 + with: + egress-policy: audit + + - uses: dotnet/docs-tools/actions/preview-link-generator@main + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From f0c81b71ff4a4ba61e5c02fa60255278d93913c8 Mon Sep 17 00:00:00 2001 From: "learn-build-service-prod[bot]" <113403604+learn-build-service-prod[bot]@users.noreply.github.com> Date: Mon, 24 Aug 2026 16:28:09 -0700 Subject: [PATCH 609/619] Resolve syncing conflicts from FromPrivateLiveToMaster to main (#5953) --- docs/build/reference/arch-x64.md | 14 +-- docs/build/reference/feature-arm64.md | 4 +- ...creating-and-using-a-static-library-cpp.md | 104 +++++++++--------- docs/c-runtime-library/reference/atexit.md | 14 +-- docs/cpp/function-call-cpp.md | 3 +- docs/cpp/static-function-call-operator.md | 88 +++++++++++++++ docs/cpp/static-subscript-operator.md | 70 ++++++++++++ docs/cpp/subscripting.md | 5 +- docs/cpp/toc.yml | 4 + docs/overview/acquire-msvc.md | 19 +++- docs/sanitizers/asan-known-issues.md | 15 ++- 11 files changed, 270 insertions(+), 70 deletions(-) create mode 100644 docs/cpp/static-function-call-operator.md create mode 100644 docs/cpp/static-subscript-operator.md diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index da9e57733f8..f75dd9acbee 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -16,25 +16,25 @@ Specifies the architecture for code generation on x64. These switches apply to t ## Arguments **`/arch:SSE2`**\ -Enables Intel Streaming SIMD Extensions 2. The default instruction set is SSE2 if no **`/arch`** option is specified. +Enables x64 Streaming SIMD Extensions 2. If you don't specify a **`/arch`** option, the default instruction set is SSE2. **`/arch:SSE4.2`**\ -Enables Intel Streaming SIMD Extensions 4.2. +Enables x64 Streaming SIMD Extensions 4.2. **`/arch:AVX`**\ -Enables Intel Advanced Vector Extensions. +Enables x64 Advanced Vector Extensions. **`/arch:AVX2`**\ -Enables Intel Advanced Vector Extensions 2. +Enables x64 Advanced Vector Extensions 2. **`/arch:AVX512`**\ -Enables Intel Advanced Vector Extensions 512. +Enables x64 Advanced Vector Extensions 512. **`/arch:AVX10.1`**\ -Enables Intel Advanced Vector Extensions 10 version 1. +Enables x64 Advanced Vector Extensions 10 version 1. **`/arch:AVX10.2`**\ -Enables Intel Advanced Vector Extensions 10 version 2. +Enables x64 Advanced Vector Extensions 10 version 2. ## Remarks diff --git a/docs/build/reference/feature-arm64.md b/docs/build/reference/feature-arm64.md index 63869f6bbc4..b4a81178d93 100644 --- a/docs/build/reference/feature-arm64.md +++ b/docs/build/reference/feature-arm64.md @@ -16,8 +16,8 @@ To enable one or more features the targeted ARM64 extension supports, specify on | Feature argument | Feature identifier | Optional from | Enabled by default | Description | Supported in version |--|--|--|--|--|--| -|**`cssc`** | `FEAT_CSSC` | Armv8.7 | Armv8.9 | Common Short Sequence Compression instructions. | Visual Studio 2026 18.10 (14.52) -|**`faminmax`** | `FEAT_FAMINMAX` | Armv9.2 | Armv9.5 | Floating-point maximum and minimum absolute value instructions. | Visual Studio 2026 18.10 (14.52) +|**`cssc`** | `FEAT_CSSC` | Armv8.7 | Armv8.9 | Common Short Sequence Compression instructions. | Visual Studio 2026 18.10 (MSVC 14.52) +|**`faminmax`** | `FEAT_FAMINMAX` | Armv9.2 | Armv9.5 | Floating-point maximum and minimum absolute value instructions. | Visual Studio 2026 18.10 (MSVC 14.52) |**`lse`** | `FEAT_LSE` | Armv8.0 | Armv8.1 | Large System Extensions. | Visual Studio 2022 17.10 |**`rcpc`** | `FEAT_LRCPC` | Armv8.2 | Armv8.3 | Load-Acquire RCpc instructions. | Visual Studio 2022 17.10 |**`rcpc2`** | `FEAT_LRCPC2` | Armv8.2 | Armv8.4 | Load-Acquire RCpc instructions v2. | Visual Studio 2022 17.11 diff --git a/docs/build/walkthrough-creating-and-using-a-static-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-static-library-cpp.md index 6ca15699093..80c6daafcfe 100644 --- a/docs/build/walkthrough-creating-and-using-a-static-library-cpp.md +++ b/docs/build/walkthrough-creating-and-using-a-static-library-cpp.md @@ -1,14 +1,15 @@ --- title: "Walkthrough: Create and use a static library (C++)" -description: "Use C++ to create a static library (.lib) in Visual Studio." +description: Learn to create and use a static library in C++ using Visual Studio. This walkthrough covers building a .lib file, adding a class, and referencing it in an app. ms.custom: "get-started-article" -ms.date: 10/28/2021 +ms.date: 07/14/2026 helpviewer_keywords: ["libraries [C++], static", "static libraries [C++]"] ms.assetid: 3cc36411-7d66-4240-851e-dacb9a8fd6ac +#customer intent: As a C++ developer, I want to create a static library in Visual Studio, so that I can reuse common code across multiple apps. --- # Walkthrough: Create and use a static library -This step-by-step walkthrough shows how to create a static library (.lib file) for use with C++ apps. Using a static library is a great way to reuse code. Rather than reimplementing the same routines in every app that requires the functionality, you write them one time in a static library and then reference it from the apps. Code linked from a static library becomes part of your app—you don't have to install another file to use the code. +This step-by-step walkthrough shows how to create a static library (.lib file) for use with C++ apps. Using a static library is a great way to reuse code. Rather than reimplementing the same routines in every app that requires the functionality, write them one time in a static library and then reference it from the apps. Code linked from a static library becomes part of your app. You don't have to install another file to use the code. This walkthrough covers these tasks: @@ -32,19 +33,19 @@ The instructions for how to create the project vary depending on your version of ::: moniker range=">=msvc-160" -### To create a static library project in Visual Studio +To create a static library project in Visual Studio: -1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a New Project** dialog. +1. On the menu bar, choose **File** > **New** > **Project** to open the **Create a new project** dialog. 1. At the top of the dialog, set **Language** to **C++**, set **Platform** to **Windows**, and set **Project type** to **Library**. -1. From the filtered list of project types, select **Windows Desktop Wizard**, then choose **Next**. +1. From the filtered list of project types, select **Windows Desktop Wizard**, and then choose **Next**. 1. In the **Configure your new project** page, enter *MathLibrary* in the **Project name** box to specify a name for the project. Enter *StaticMath* in the **Solution name** box. Choose the **Create** button to open the **Windows Desktop Project** dialog. 1. In the **Windows Desktop Project** dialog, under **Application type**, select **Static Library (.lib)**. -1. Under **Additional options**, uncheck the **Precompiled header** check box if it's checked. Check the **Empty project** box. +1. Under **Additional options**, clear the **Precompiled header** check box if it's selected. Select **Empty project**. 1. Choose **OK** to create the project. @@ -52,17 +53,17 @@ The instructions for how to create the project vary depending on your version of ::: moniker range="msvc-150" -### To create a static library project in Visual Studio 2017 +To create a static library project in Visual Studio 2017: 1. On the menu bar, choose **File** > **New** > **Project**. -1. In the **New Project** dialog box, select **Installed** > **Visual C++** > **Windows Desktop**. In the center pane, select **Windows Desktop Wizard**. +1. In the **New Project** dialog, select **Installed** > **Visual C++** > **Windows Desktop**. In the center pane, select **Windows Desktop Wizard**. -1. Specify a name for the project—for example, *MathLibrary*—in the **Name** box. Specify a name for the solution—for example, *StaticMath*—in the **Solution Name** box. Choose the **OK** button. +1. Specify a name for the project, such as *MathLibrary*, in the **Name** box. Specify a name for the solution, such as *StaticMath*, in the **Solution Name** box. Choose **OK**. 1. In the **Windows Desktop Project** dialog, under **Application type**, select **Static Library (.lib)**. -1. Under **Additional Options**, uncheck the **Precompiled header** check box if it's checked. Check the **Empty project** box. +1. Under **Additional Options**, clear the **Precompiled header** check box if it's selected. Select **Empty project**. 1. Choose **OK** to create the project. @@ -70,27 +71,27 @@ The instructions for how to create the project vary depending on your version of ::: moniker range="msvc-140" -### To create a static library project in Visual Studio 2015 +To create a static library project in Visual Studio 2015: 1. On the menu bar, choose **File** > **New** > **Project**. -1. In the **New Project** dialog box, select **Installed** > **Templates** > **Visual C++** > **Win32**. In the center pane, select **Win32 Console Application**. +1. In the **New Project** dialog, select **Installed** > **Templates** > **Visual C++** > **Win32**. In the center pane, select **Win32 Console Application**. -1. Specify a name for the project—for example, *MathLibrary*—in the **Name** box. Specify a name for the solution—for example, *StaticMath*—in the **Solution Name** box. Choose the **OK** button. +1. Specify a name for the project, such as *MathLibrary*, in the **Name** box. Specify a name for the solution, such as *StaticMath*, in the **Solution Name** box. Choose **OK**. 1. In the **Win32 Application Wizard**, choose **Next**. -1. In the **Application Settings** page, under **Application type**, select **Static library**. Under **Additional options**, uncheck the **Precompiled header** checkbox. Choose **Finish** to create the project. +1. In the **Application Settings** page, under **Application type**, select **Static library**. Under **Additional options**, clear the **Precompiled header** checkbox. Choose **Finish** to create the project. ::: moniker-end ## Add a class to the static library -### To add a class to the static library +To add a class to the static library: -1. To create a header file for a new class, right-click to open the shortcut menu for the **MathLibrary** project in **Solution Explorer**, and then choose **Add** > **New Item**. +1. Create a header file for a new class. In **Solution Explorer**, right-click **MathLibrary** to open the context menu for the project. Select **Add** > **New Item**. -1. In the **Add New Item** dialog box, select **Visual C++** > **Code**. In the center pane, select **Header File (.h)**. Specify a name for the header file—for example, *MathLibrary.h*—and then choose the **Add** button. A nearly blank header file is displayed. +1. In the **Add New Item** dialog, select **Visual C++** > **Code**. In the center pane, select **Header File (.h)**. Specify a name for the header file, such as *MathLibrary.h*, and then select **Add**. A nearly blank header file is displayed. 1. Add a declaration for a class named `Arithmetic` to do common mathematical operations such as addition, subtraction, multiplication, and division. The code should resemble: @@ -118,9 +119,9 @@ The instructions for how to create the project vary depending on your version of } ``` -1. To create a source file for the new class, open the shortcut menu for the **MathLibrary** project in **Solution Explorer**, and then choose **Add** > **New Item**. +1. To create a source file for the new class, open the context menu for the **MathLibrary** project in **Solution Explorer**, and then choose **Add** > **New Item**. -1. In the **Add New Item** dialog box, in the center pane, select **C++ File (.cpp)**. Specify a name for the source file—for example, *MathLibrary.cpp*—and then choose the **Add** button. A blank source file is displayed. +1. In the **Add New Item** dialog, in the center pane, select **C++ File (.cpp)**. Specify a name for the source file, such as *MathLibrary.cpp*. Then select **Add**. A blank source file is displayed. 1. Use this source file to implement the functionality for class `Arithmetic`. The code should resemble: @@ -155,42 +156,45 @@ The instructions for how to create the project vary depending on your version of } ``` -1. To build the static library, select **Build** > **Build Solution** on the menu bar. The build creates a static library, *MathLibrary.lib*, that can be used by other programs. +1. To build the static library, select **Build** > **Build Solution** on the menu bar. The build creates a static library, *MathLibrary.lib*, that other programs can use. > [!NOTE] - > When you build on the Visual Studio command line, you must build the program in two steps. First, run `cl /c /EHsc MathLibrary.cpp` to compile the code and create an object file that's named *MathLibrary.obj*. (The `cl` command invokes the compiler, Cl.exe, and the `/c` option specifies compile without linking. For more information, see [/c (Compile Without Linking)](../build/reference/c-compile-without-linking.md).) Second, run `lib MathLibrary.obj` to link the code and create the static library *MathLibrary.lib*. (The `lib` command invokes the Library Manager, Lib.exe. For more information, see [LIB Reference](../build/reference/lib-reference.md).) + > When you build on the Visual Studio command line, you must build the program in two steps. + > + > 1. Run `cl /c /EHsc MathLibrary.cpp` to compile the code and create an object file named *MathLibrary.obj*. The `cl` command invokes the compiler, Cl.exe, and the `/c` option specifies compile without linking. For more information, see [/c (Compile Without Linking)](../build/reference/c-compile-without-linking.md). + > 1. Run `lib MathLibrary.obj` to link the code and create the static library *MathLibrary.lib*. The `lib` command invokes the Library Manager, Lib.exe. For more information, see [LIB Reference](../build/reference/lib-reference.md). ## Create a C++ console app that references the static library ::: moniker range=">=msvc-160" -### To create a C++ console app that references the static library in Visual Studio +To create a C++ console app that references the static library in Visual Studio: -1. In **Solution Explorer**, right-click on the top node, **Solution 'StaticMath'**, to open the shortcut menu. Choose **Add** > **New Project** to open the **Add a New Project** dialog. +1. In **Solution Explorer**, right-click on the top node, **Solution 'StaticMath'**, to open the context menu. Choose **Add** > **New Project** to open the **Add a New Project** dialog. 1. At the top of the dialog, set the **Project type** filter to **Console**. -1. From the filtered list of project types, choose **Console App** then choose **Next**. In the next page, enter *MathClient* in the **Name** box to specify a name for the project. +1. From the filtered list of project types, choose **Console App** then choose **Next**. In the next page, enter *MathClient* as the name for the project. -1. Choose the **Create** button to create the client project. +1. Choose **Create** to create the client project. -1. After you create a console app, an empty program is created for you. The name for the source file is the same as the name that you chose earlier. In the example, it's named `MathClient.cpp`. + After you create a console app, an empty program is created for you. The name for the source file is the same as the name that you chose earlier. In the example, it's named `MathClient.cpp`. ::: moniker-end ::: moniker range="msvc-150" -### To create a C++ console app that references the static library in Visual Studio 2017 +To create a C++ console app that references the static library in Visual Studio 2017: -1. In **Solution Explorer**, right-click on the top node, **Solution 'StaticMath'**, to open the shortcut menu. Choose **Add** > **New Project** to open the **Add a New Project** dialog box. +1. In **Solution Explorer**, right-click on the top node, **Solution 'StaticMath'**, to open the context menu. Choose **Add** > **New Project** to open the **Add a New Project** dialog. -1. In the **Add New Project** dialog box, select **Installed** > **Visual C++** > **Windows Desktop**. In the center pane, select **Windows Desktop Wizard**. +1. In the **Add New Project** dialog, select **Installed** > **Visual C++** > **Windows Desktop**. In the center pane, select **Windows Desktop Wizard**. 1. Specify a name for the project—for example, *MathClient*—in the **Name** box. Choose the **OK** button. 1. In the **Windows Desktop Project** dialog, under **Application type**, select **Console Application (.exe)**. -1. Under **Additional Options**, uncheck the **Precompiled header** check box if it's checked. +1. Under **Additional Options**, clear the **Precompiled header** check box if it's selected. 1. Choose **OK** to create the project. @@ -200,35 +204,35 @@ The instructions for how to create the project vary depending on your version of ::: moniker range="msvc-140" -### To create a C++ console app that references the static library in Visual Studio 2015 +To create a C++ console app that references the static library in Visual Studio 2015: -1. In **Solution Explorer**, right-click on the top node, **Solution 'StaticMath'**, to open the shortcut menu. Choose **Add** > **New Project** to open the **Add a New Project** dialog box. +1. In **Solution Explorer**, right-click on the top node, **Solution 'StaticMath'**, to open the context menu. Choose **Add** > **New Project** to open the **Add a New Project** dialog. -1. In the **Add New Project** dialog box, select **Installed** > **Visual C++** > **Win32**. In the center pane, select **Win32 Console Application**. +1. In the **Add New Project** dialog, select **Installed** > **Visual C++** > **Win32**. In the center pane, select **Win32 Console Application**. 1. Specify a name for the project—for example, *MathClient*—in the **Name** box. Choose the **OK** button. 1. In the **Win32 Application Wizard** dialog, choose **Next**. -1. On the **Application Settings** page, under **Application type**, make sure **Console application** is selected. Under **Additional options**, uncheck **Precompiled header**, then check the **Empty Project** checkbox. Choose **Finish** to create the project. +1. On the **Application Settings** page, under **Application type**, make sure **Console application** is selected. Under **Additional options**, clear **Precompiled header**, and then select **Empty Project**. Choose **Finish** to create the project. -1. To add a source file to the empty project, right-click to open the shortcut menu for the **MathClient** project in **Solution Explorer**, and then choose **Add** > **New Item**. +1. To add a source file to the empty project, right-click to open the context menu for the **MathClient** project in **Solution Explorer**, and then choose **Add** > **New Item**. -1. In the **Add New Item** dialog box, select **Visual C++** > **Code**. In the center pane, select **C++ File (.cpp)**. Specify a name for the source file—for example, *MathClient.cpp*—and then choose the **Add** button. A blank source file is displayed. +1. In the **Add New Item** dialog, select **Visual C++** > **Code**. In the center pane, select **C++ File (.cpp)**. Specify a name for the source file—for example, *MathClient.cpp*—and then choose the **Add** button. A blank source file is displayed. ::: moniker-end ## Use the functionality from the static library in the app -### To use the functionality from the static library in the app +To use the functionality from the static library in the app: -1. Before you can use the math routines in the static library, you must reference it. Open the shortcut menu for the **MathClient** project in **Solution Explorer**, and then choose **Add** > **Reference**. +1. Reference the static library before using the math routines in it. Open the context menu for the **MathClient** project in **Solution Explorer**, and then choose **Add** > **Reference**. -1. The **Add Reference** dialog box lists the libraries that you can reference. The **Projects** tab lists the projects in the current solution and any libraries they reference. Open the **Projects** tab, select the **MathLibrary** check box, and then choose the **OK** button. +1. The **Add Reference** dialog lists the libraries that you can reference. The **Projects** tab lists the projects in the current solution and any libraries they reference. Open the **Projects** tab, select **MathLibrary**, and then select **OK**. -1. To reference the `MathLibrary.h` header file, you must modify the included directories path. In **Solution Explorer**, right-click on **MathClient** to open the shortcut menu. Choose **Properties** to open the **MathClient Property Pages** dialog box. +1. Modify the included directories path to reference the `MathLibrary.h` header file. In **Solution Explorer**, right-click on **MathClient** to open the context menu. Choose **Properties** to open the **MathClient Property Pages** dialog. -1. In the **MathClient Property Pages** dialog box, set the **Configuration** drop-down to **All Configurations**. Set the **Platform** drop-down to **All Platforms**. +1. In the **MathClient Property Pages** dialog, set the **Configuration** value to **All Configurations**. Set **Platform** to **All Platforms**. 1. Select the **Configuration Properties** > **C/C++** > **General** property page. In the **Additional Include Directories** property, specify the path of the **MathLibrary** directory, or browse for it. @@ -236,13 +240,13 @@ The instructions for how to create the project vary depending on your version of 1. Open the **Additional Include Directories** property value drop-down list, and then choose **Edit**. - 1. In the **Additional Include Directories** dialog box, double-click in the top of the text box. Then choose the ellipsis button (**...**) at the end of the line. + 1. In the **Additional Include Directories** dialog, double-click in the top of the text box. Then choose the ellipsis button (**...**) at the end of the line. - 1. In the **Select Directory** dialog box, navigate up a level, and then select the **MathLibrary** directory. Then choose the **Select Folder** button to save your selection. + 1. In the **Select Directory** dialog, navigate up a level, and then select the **MathLibrary** directory. Then choose the **Select Folder** button to save your selection. - 1. In the **Additional Include Directories** dialog box, choose the **OK** button. + 1. In the **Additional Include Directories** dialog, choose the **OK** button. - 1. In the **Property Pages** dialog box, choose the **OK** button to save your changes to the project. + 1. In the **Property Pages** dialog, choose the **OK** button to save your changes to the project. 1. You can now use the `Arithmetic` class in this app by including the `#include "MathLibrary.h"` header in your code. Replace the contents of `MathClient.cpp` with this code: @@ -275,11 +279,11 @@ The instructions for how to create the project vary depending on your version of ## Run the app -### To run the app +To run the app: -1. Make sure that **MathClient** is selected as the default project. To select it, right-click to open the shortcut menu for **MathClient** in **Solution Explorer**, and then choose **Set as StartUp Project**. +1. Make sure that **MathClient** is selected as the default project. To select it, right-click **MathClient** in **Solution Explorer** to open the context menu, and then choose **Set as StartUp Project**. -1. To run the project, on the menu bar, choose **Debug** > **Start Without Debugging**. The output should resemble: +1. On the menu bar, choose **Debug** > **Start Without Debugging** to run the project. The output should resemble: ```Output a + b = 106.4 @@ -290,4 +294,4 @@ The instructions for how to create the project vary depending on your version of ## See also -[Walkthrough: Creating and Using a Dynamic Link Library (C++)](../build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md) \ No newline at end of file +[Walkthrough: Creating and Using a Dynamic Link Library (C++)](../build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md) diff --git a/docs/c-runtime-library/reference/atexit.md b/docs/c-runtime-library/reference/atexit.md index f3fa82b4a7d..392566beb4d 100644 --- a/docs/c-runtime-library/reference/atexit.md +++ b/docs/c-runtime-library/reference/atexit.md @@ -28,27 +28,27 @@ Function to be called. ## Return value -**`atexit`** returns 0 if successful, or a nonzero value if an error occurs. +`atexit` returns 0 if successful, or a nonzero value if an error occurs. ## Remarks -The **`atexit`** function is passed the address of a function *`func`* to be called when the program terminates normally. Successive calls to **`atexit`** create a register of functions that are executed in last-in, first-out (LIFO) order. The functions passed to **`atexit`** can't take parameters. **`atexit`** and **`_onexit`** use the heap to hold the register of functions. Thus, the number of functions that can be registered is limited only by heap memory. +The `atexit` function gets the address of a function *`func`* to call when the program terminates normally. Successive calls to `atexit` create a register of functions that execute in last-in, first-out (LIFO) order. The functions passed to `atexit` can't take parameters. `atexit` and `_onexit` use the heap to hold the register of functions. Thus, the number of functions you can register is limited only by heap memory. -The code in the **`atexit`** function shouldn't contain any dependency on any DLL that could have already been unloaded when the **`atexit`** function is called. +The code in the `atexit` function shouldn't contain any dependency on any DLL that could already be unloaded when the `atexit` function is called. -**Microsoft-specific DLL behavior**: When a DLL unloads, after `DLLMain` receives `DLL_PROCESS_DETACH`, the DLL's `atexit` callbacks run in reverse registration order, with the last callback registered running first. +**Microsoft-specific DLL behavior**: When a DLL unloads, after `DllMain` receives `DLL_PROCESS_DETACH`, the DLL's `atexit` callbacks run in reverse registration order, with the last callback registered running first. -To generate an ANSI-conformant application, use the ANSI-standard **`atexit`** function (rather than the similar **`_onexit`** function). +To generate an ANSI-conformant application, use the ANSI-standard `atexit` function (rather than the similar `_onexit` function). ## Requirements | Routine | Required header | |---|---| -| **`atexit`** | `` | +| `atexit` | `` | ## Example -This program pushes four functions onto the stack of functions to be executed when **`atexit`** is called. When the program exits, these programs are executed on a last in, first out basis. +This program pushes four functions onto the stack of functions to execute when `atexit` is called. When the program exits, it executes these functions in last-in, first-out order. ```C // crt_atexit.c diff --git a/docs/cpp/function-call-cpp.md b/docs/cpp/function-call-cpp.md index 804b63b3b5e..8c0cd68810a 100644 --- a/docs/cpp/function-call-cpp.md +++ b/docs/cpp/function-call-cpp.md @@ -17,7 +17,7 @@ primary-expression ( expression-list ) ## Remarks -In this context, `primary-expression` is the first operand, and `expression-list`, a possibly empty list of arguments, is the second operand. The function-call operator is used for operations that require a number of parameters. This works because `expression-list` is a list instead of a single operand. The function-call operator must be a nonstatic member function. +In this context, `primary-expression` is the first operand, and `expression-list`, a possibly empty list of arguments, is the second operand. The function-call operator is useful for operations that require a number of parameters. This usefulness comes from the fact that `expression-list` is a list instead of a single operand. Before C++23, the function-call operator had to be a nonstatic member function. In C++23 and later, it can be a static member function. For more information, see [Static function call operator](static-function-call-operator.md). The function-call operator, when overloaded, does not modify how functions are called; rather, it modifies how the operator is to be interpreted when applied to objects of a given class type. For example, the following code would usually be meaningless: @@ -73,4 +73,5 @@ int main() ## See also +[Static function call operator](static-function-call-operator.md)\ [Operator Overloading](../cpp/operator-overloading.md) diff --git a/docs/cpp/static-function-call-operator.md b/docs/cpp/static-function-call-operator.md new file mode 100644 index 00000000000..b1fbb12d625 --- /dev/null +++ b/docs/cpp/static-function-call-operator.md @@ -0,0 +1,88 @@ +--- +description: "Learn how to declare and use the static function call operator in C++." +title: "Static function call operator (C++)" +ms.date: 08/19/2026 +ai-usage: ai-assisted +helpviewer_keywords: ["static function call operator [C++]", "static operator() [C++]", "operator overloading [C++]"] +--- + +# Static function call operator (C++) + +In C++23, you can declare the function call operator (`operator()`) as a static member function. A static function call operator doesn't have an implicit object parameter. Use it when a callable type doesn't need to access instance data. + +Support for this feature was introduced in Visual Studio 2022 version 17.14 (MSVC 14.44). Use the `/std:c++latest` compiler option. + +## Syntax + +```cpp +static return-type operator()(parameter-list); +``` + +You can also declare the function call operator generated for a lambda expression as static: + +```cpp +[](parameter-list) static { function-body } +``` + +## Remarks + +A static function call operator doesn't have a `this` pointer. It can't be `virtual` or have a cv-qualifier (`const` or `volatile`) or ref-qualifier (`&`, `&&`). + +You can call a static function call operator by using an object of its class, which allows the object to work as a function object. You can also call it by using its qualified name. Taking its address produces a regular function pointer instead of a pointer-to-member function. + +A lambda expression can specify `static` after its parameter list. A static lambda can't have captures or be declared `mutable`. Declaring a captureless lambda doesn't make it static automatically; you must specify `static` to opt in to this behavior. + +The feature-test macro `__cpp_static_call_operator` is defined when the static function call operator is available. + +## Example + +The following example defines a stateless function object and calls its static function call operator in three ways: + +```cpp +// Compile with: /std:c++latest + +#include + +struct Multiply +{ + static constexpr int operator()(int left, int right) noexcept + { + return left * right; + } +}; + +int main() +{ + Multiply multiply; + + std::cout << "multiply(6, 7) = " << multiply(6, 7) << std::endl; + std::cout << "Multiply::operator()(3, 4) = " + << Multiply::operator()(3, 4) << std::endl; + + auto multiply_function = &Multiply::operator(); + std::cout << "multiply_function(5, 5) = " + << multiply_function(5, 5) << std::endl; + + auto twice = [](int value) static noexcept + { + return value * 2; + }; + + std::cout << "twice(21) = " << twice(21) << std::endl; +} +``` + +```output +multiply(6, 7) = 42 +Multiply::operator()(3, 4) = 12 +multiply_function(5, 5) = 25 +twice(21) = 42 +``` + +## See also + +[Function call](function-call-cpp.md)\ +[Function-call operator](function-call-operator-parens.md)\ +[Operator overloading](operator-overloading.md)\ +[`static` members](static-members-cpp.md)\ +[Proposal P1169R4: static `operator()`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1169r4.html) \ No newline at end of file diff --git a/docs/cpp/static-subscript-operator.md b/docs/cpp/static-subscript-operator.md new file mode 100644 index 00000000000..fd0498a3bf3 --- /dev/null +++ b/docs/cpp/static-subscript-operator.md @@ -0,0 +1,70 @@ +--- +description: "Learn how to declare and use the static subscript operator in C++." +title: "Static subscript operator (C++)" +ms.date: 08/19/2026 +ai-usage: ai-assisted +helpviewer_keywords: ["static subscript operator [C++]", "static operator[] [C++]", "operator overloading [C++]"] +--- + +# Static subscript operator (C++) + +In C++23, you can declare the subscript operator (`operator[]`) as a static member function. A static subscript operator doesn't have an implicit object parameter. Use it when a subscript operation doesn't need to access instance data. + +Support for this feature was introduced in Visual Studio 2022 version 17.14 (MSVC 14.44). Use the `/std:c++latest` compiler option. + +## Syntax + +```cpp +static return-type operator[](parameter-list); +``` + +## Remarks + +A static subscript operator doesn't have a `this` pointer. It can't be `virtual` or have a cv-qualifier (`const` or `volatile`) or ref-qualifier (`&`, `&&`). + +You can call a static subscript operator by using an object of its class, which allows the object to use subscript syntax. You can also call it by using its qualified name. Taking its address produces a regular function pointer instead of a pointer-to-member function. + +The feature-test macro `__cpp_static_call_operator` is defined when the static subscript operator is available. + +## Example + +The following example defines a stateless type that calculates powers of two and calls its static subscript operator in three ways: + +```cpp +// Compile with: /std:c++latest + +#include + +struct PowersOfTwo +{ + static constexpr unsigned int operator[](unsigned int exponent) noexcept + { + return 1U << exponent; + } +}; + +int main() +{ + PowersOfTwo powers_of_two; + + std::cout << "powers_of_two[6] = " << powers_of_two[6] << std::endl; + std::cout << "PowersOfTwo::operator[](4) = " + << PowersOfTwo::operator[](4) << std::endl; + + auto power_function = &PowersOfTwo::operator[]; + std::cout << "power_function(5) = " << power_function(5) << std::endl; +} +``` + +```output +powers_of_two[6] = 64 +PowersOfTwo::operator[](4) = 16 +power_function(5) = 32 +``` + +## See also + +[Subscripting](subscripting.md)\ +[Operator overloading](operator-overloading.md)\ +[`static` members](static-members-cpp.md)\ +[Proposal P2589R1: static `operator[]`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2589r1.pdf) \ No newline at end of file diff --git a/docs/cpp/subscripting.md b/docs/cpp/subscripting.md index 62fc228c211..fca0cb6b2a8 100644 --- a/docs/cpp/subscripting.md +++ b/docs/cpp/subscripting.md @@ -7,7 +7,9 @@ ms.assetid: eb151281-6733-401d-9787-39ab6754c62c --- # Subscripting -The subscript operator (**[ ]**), like the function-call operator, is considered a binary operator. The subscript operator must be a nonstatic member function that takes a single argument. This argument can be of any type and designates the desired array subscript. +The subscript operator (**[ ]**), like the function-call operator, is a binary operator. Before C++23, the subscript operator must be a nonstatic member function. In C++23 and later, it can be a static member function. For more information, see [Static subscript operator](static-subscript-operator.md). + +The argument can be any type and designates the desired array subscript. ## Example @@ -86,4 +88,5 @@ Note that the function **operator[]** returns a reference type. This causes it t ## See also +[Static subscript operator](static-subscript-operator.md)\ [Operator Overloading](../cpp/operator-overloading.md) diff --git a/docs/cpp/toc.yml b/docs/cpp/toc.yml index 1f17ade4e51..111d9c465ec 100644 --- a/docs/cpp/toc.yml +++ b/docs/cpp/toc.yml @@ -336,8 +336,12 @@ items: href: ../cpp/assignment.md - name: Function call href: ../cpp/function-call-cpp.md + - name: Static function call operator + href: ../cpp/static-function-call-operator.md - name: Subscripting href: ../cpp/subscripting.md + - name: Static subscript operator + href: ../cpp/static-subscript-operator.md - name: Member access href: ../cpp/member-access.md - name: Classes and structs diff --git a/docs/overview/acquire-msvc.md b/docs/overview/acquire-msvc.md index b70d02b277e..0acc6adb724 100644 --- a/docs/overview/acquire-msvc.md +++ b/docs/overview/acquire-msvc.md @@ -1,8 +1,9 @@ --- title: "Install the Microsoft C++ (MSVC) Build Tools" description: "Install the MSVC Build Tools using the Visual Studio Installer UI, command line, winget, or a .vsconfig file. Choose Preview, latest release, or an older in-support toolset, and target it from MSBuild, CMake, or the Visual Studio Command Prompt." -ms.date: 07/13/2026 +ms.date: 08/20/2026 ms.topic: how-to +ai-usage: ai-assisted ms.service: "visual-cpp" ms.subservice: "tools" ms.custom: intro-installation @@ -164,6 +165,22 @@ msbuild /p:Platform= /p:Configuration= / `` matches the folder name under `\VC\Tools\MSVC\`. +#### Discover an MSVC toolset in another installation + +> [!NOTE] +> Cross-install discovery requires Visual Studio version 18.8 or later. + +The current Visual Studio installation might not find the exact `VCToolsVersion` you specify. To search all Visual Studio and Visual Studio Build Tools installations, add the following properties to your `.vcxproj` file or a `Directory.Build.props` file: + +```xml + + true + 14.43.34604 + +``` + +With discovery enabled, Visual Studio finds the specified version, potentially from a different installation. This behavior supports reproducible builds without manually setting `VCToolsInstallDir`. The requested MSVC toolset must already be installed on the machine. + To build with the MSVC preview tools, add `/p:MSVCPreviewEnabled=true`: ```cmd diff --git a/docs/sanitizers/asan-known-issues.md b/docs/sanitizers/asan-known-issues.md index 6b43a47598c..20608c02b2d 100644 --- a/docs/sanitizers/asan-known-issues.md +++ b/docs/sanitizers/asan-known-issues.md @@ -1,7 +1,7 @@ --- title: "AddressSanitizer known issues and limitations" description: "Technical description of the AddressSanitizer for Microsoft C/C++ known issues." -ms.date: 11/19/2025 +ms.date: 8/18/2026 helpviewer_keywords: ["AddressSanitizer known issues"] --- @@ -105,6 +105,19 @@ On x64, MSVC ASan's [shadow bytes](./asan-shadow-bytes.md) region occupies sever The Visual Studio debugger handles this gracefully, and doesn't show these traces. However, debuggers like WinDbgX may break on every exception by default. Disabling breaking on first-chance exceptions is recommended. For example, in WinDbgX, this corresponds to the [`sxd av`](/windows-hardware/drivers/debuggercmds/sx--sxd--sxe--sxi--sxn--sxr--sx---set-exceptions-) command. +## ASan support for C++/CLI is experimental + +For reliable AddressSanitizer (ASan) diagnostics, isolate memory-unsafe code in native translation units or DLLs compiled without `/clr` and with `/fsanitize=address`. Call the native code from C++/CLI wrappers. + + +The CLR manages memory and JIT-generated code, so C++/CLI code isn't guaranteed to receive ASan load and store instrumentation. As a result: + +- C++/CLI and STL code: Memory accesses within C++/CLI methods might not be instrumented, including accesses performed by STL code. +- Managed arrays: Out-of-range access produces CLR behavior, such as `IndexOutOfRangeException`, rather than an ERROR: AddressSanitizer report. +- Managed threads: Native memory accesses emitted within C++/CLI method bodies might not produce ASan diagnostics. +- Finalization and shutdown: Reports during finalization, process shutdown, or mixed-mode unloading might not reliably indicate user-code memory bugs. +- Native hosts: Loading an ASan-enabled C++/CLI wrapper DLL from a native host might produce misleading runtime failures, such as access-violation reports for unknown addresses. + ## See also [AddressSanitizer overview](asan.md)\ From 6a9d133052b3600c905b5afaa152aea5a87c81c1 Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Tue, 25 Aug 2026 10:54:34 -0700 Subject: [PATCH 610/619] tech review --- docs/cpp/static-function-call-operator.md | 3 ++- docs/cpp/subscripting.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/cpp/static-function-call-operator.md b/docs/cpp/static-function-call-operator.md index b1fbb12d625..e17160d1425 100644 --- a/docs/cpp/static-function-call-operator.md +++ b/docs/cpp/static-function-call-operator.md @@ -22,6 +22,7 @@ You can also declare the function call operator generated for a lambda expressio ```cpp [](parameter-list) static { function-body } +[] static { function-body } ``` ## Remarks @@ -30,7 +31,7 @@ A static function call operator doesn't have a `this` pointer. It can't be `virt You can call a static function call operator by using an object of its class, which allows the object to work as a function object. You can also call it by using its qualified name. Taking its address produces a regular function pointer instead of a pointer-to-member function. -A lambda expression can specify `static` after its parameter list. A static lambda can't have captures or be declared `mutable`. Declaring a captureless lambda doesn't make it static automatically; you must specify `static` to opt in to this behavior. +A lambda expression can specify `static` after its parameter list. When the lambda has no parameters, you can omit the empty parameter list and specify `static` after the lambda introducer (`[]`). A static lambda can't have captures or be declared `mutable`. Declaring a captureless lambda doesn't make it static automatically; you must specify `static` to opt in to this behavior. The feature-test macro `__cpp_static_call_operator` is defined when the static function call operator is available. diff --git a/docs/cpp/subscripting.md b/docs/cpp/subscripting.md index fca0cb6b2a8..ddf1ecd0714 100644 --- a/docs/cpp/subscripting.md +++ b/docs/cpp/subscripting.md @@ -7,7 +7,7 @@ ms.assetid: eb151281-6733-401d-9787-39ab6754c62c --- # Subscripting -The subscript operator (**[ ]**), like the function-call operator, is a binary operator. Before C++23, the subscript operator must be a nonstatic member function. In C++23 and later, it can be a static member function. For more information, see [Static subscript operator](static-subscript-operator.md). +The built-in subscript operator (**[ ]**) is a binary operator. Before C++23, an overloaded subscript operator (`operator[]`) had to be a nonstatic member function. In C++23 and later, it can also be a static member function. For more information, see [Static subscript operator](static-subscript-operator.md). The argument can be any type and designates the desired array subscript. From 3eb970a74002a8eca32ebf30a98e51de1c80986e Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 25 Aug 2026 11:03:03 -0700 Subject: [PATCH 611/619] Update subscripting.md for C++23 clarification Clarified the explanation of the subscript operator in C++23. --- docs/cpp/subscripting.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/cpp/subscripting.md b/docs/cpp/subscripting.md index ddf1ecd0714..a84540e8375 100644 --- a/docs/cpp/subscripting.md +++ b/docs/cpp/subscripting.md @@ -9,6 +9,8 @@ ms.assetid: eb151281-6733-401d-9787-39ab6754c62c The built-in subscript operator (**[ ]**) is a binary operator. Before C++23, an overloaded subscript operator (`operator[]`) had to be a nonstatic member function. In C++23 and later, it can also be a static member function. For more information, see [Static subscript operator](static-subscript-operator.md). +The built-in subscript operator (**[ ]**) is a binary operator. Before C++23, subscript operator (`operator[]`) overloads had to be nonstatic member functions. In C++23 and later, you can also overload using a static member function. For more information, see [Static subscript operator](static-subscript-operator.md). + The argument can be any type and designates the desired array subscript. ## Example From 3e06ef8f6952899620f70c610758cd7b42c0cbd1 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 25 Aug 2026 11:09:58 -0700 Subject: [PATCH 612/619] Update subscripting.md --- docs/cpp/subscripting.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/cpp/subscripting.md b/docs/cpp/subscripting.md index a84540e8375..07f12b7bc6f 100644 --- a/docs/cpp/subscripting.md +++ b/docs/cpp/subscripting.md @@ -7,9 +7,7 @@ ms.assetid: eb151281-6733-401d-9787-39ab6754c62c --- # Subscripting -The built-in subscript operator (**[ ]**) is a binary operator. Before C++23, an overloaded subscript operator (`operator[]`) had to be a nonstatic member function. In C++23 and later, it can also be a static member function. For more information, see [Static subscript operator](static-subscript-operator.md). - -The built-in subscript operator (**[ ]**) is a binary operator. Before C++23, subscript operator (`operator[]`) overloads had to be nonstatic member functions. In C++23 and later, you can also overload using a static member function. For more information, see [Static subscript operator](static-subscript-operator.md). +The built-in subscript operator (**[ ]**) is a binary operator. Before C++23, you had to overload the subscript operator (`operator[]`) with a nonstatic subscript operator member function. In C++23 and later, you can also overload it with a static subscript operator member function. For more information, see [Static subscript operator](static-subscript-operator.md). The argument can be any type and designates the desired array subscript. From d6e948e531d98c308f36f3079b75e25cdd39d5fe Mon Sep 17 00:00:00 2001 From: "learn-build-service-prod[bot]" <113403604+learn-build-service-prod[bot]@users.noreply.github.com> Date: Wed, 26 Aug 2026 02:53:13 +0700 Subject: [PATCH 613/619] Confirm merge from FromPublicMasterBranch to main to sync with https://github.com/MicrosoftDocs/cpp-docs (branch main) (#6797) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update Vectorized STL algorithm documentation to reflect the current stae (#5937) Since the last update: * ARM64 and ARM64EC vectorization was added. Mention of x64 and x86 is removed, as vectorization is now supported on any target, except deprecated `/clr:pure` and `/clr:safe` modes. * `includes` is now manually vectorized too * `replace_copy` is now manually vectorized too Also moved `find_end` to `search` / `search_n` group, where it fits better. * Update header-files-cpp.md (#5938) Clarify intent of section * Update documentation on accessing System.String characters (#5940) * Update documentation on accessing System.String characters Added important note about treating interior pointers as const and linked to unsafe code best practices. * Update docs/dotnet/how-to-access-characters-in-a-system-string.md Co-authored-by: Jan Kotas * Apply suggestions from code review Co-authored-by: Aaron R Robinson * Apply suggestions from code review Co-authored-by: Aaron R Robinson --------- Co-authored-by: Jan Kotas * Clarify version prefix for Visual Studio Command Prompt (#5946) Updated instructions for starting Visual Studio Command Prompt to reflect changes in version specification. * Add new ARM64 feature arguments to documentation (#5950) Add new extensions `cssc` and `faminmax` to the `/feature` flag arguments documentation * atexit: Clarify DLL behavior is the same as _onexit (#5952) * atexit: Clarify DLL behavior is the same as _onexit - Document that atexit called from within a DLL will register the routine to run when the DLL is unloaded. atexit is a wrapper around _onexit which already documents this behavior. Ref: https://github.com/curl/curl/pull/22383#discussion_r3753438017 Reported-by: Michał Petryka Closes #xxxx * Revise atexit documentation for accuracy Update the date and clarify DLL behavior for atexit. --------- Co-authored-by: Tyler Whitney * Resolve syncing conflicts from FromPrivateLiveToMaster to main (#5953) --------- Co-authored-by: learn-build-service-prod[bot] <113403604+learn-build-service-prod[bot]@users.noreply.github.com> Co-authored-by: Learn Build Service GitHub App Co-authored-by: Alex Guteniev Co-authored-by: veganaiZe <7102064+veganaiZe@users.noreply.github.com> Co-authored-by: Aaron R Robinson Co-authored-by: Jan Kotas Co-authored-by: Eric Brumer Co-authored-by: Vít Knobloch <67308900+vitknobloch@users.noreply.github.com> Co-authored-by: Jay Satiro Co-authored-by: Tyler Whitney Co-authored-by: Hector --- docs/build/reference/arch-x64.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md index 861f0fe9097..a48dc2984cc 100644 --- a/docs/build/reference/arch-x64.md +++ b/docs/build/reference/arch-x64.md @@ -16,25 +16,25 @@ Specifies the architecture for code generation on x64. These switches apply to v ## Arguments **`/arch:SSE2`**\ -Enables Streaming SIMD Extensions 2. If you don't specify a **`/arch`** option, the default instruction set is SSE2. +Enables x64 Streaming SIMD Extensions 2. If you don't specify a **`/arch`** option, the default instruction set is SSE2. **`/arch:SSE4.2`**\ -Enables Streaming SIMD Extensions 4.2. +Enables x64 Streaming SIMD Extensions 4.2. **`/arch:AVX`**\ -Enables Advanced Vector Extensions. +Enables x64 Advanced Vector Extensions. **`/arch:AVX2`**\ -Enables Advanced Vector Extensions 2. +Enables x64 Advanced Vector Extensions 2. **`/arch:AVX512`**\ -Enables Advanced Vector Extensions 512. +Enables x64 Advanced Vector Extensions 512. **`/arch:AVX10.1`**\ -Enables Advanced Vector Extensions 10 version 1. +Enables x64 Advanced Vector Extensions 10 version 1. **`/arch:AVX10.2`**\ -Enables Advanced Vector Extensions 10 version 2. +Enables x64 Advanced Vector Extensions 10 version 2. ## Remarks From 09b01e696021e4b46b2bac463a6b5eaedd22cf54 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 25 Aug 2026 13:31:40 -0700 Subject: [PATCH 614/619] Apply suggestion from @learn-build-service-prod-03[bot] Co-authored-by: learn-build-service-prod-03[bot] <274428581+learn-build-service-prod-03[bot]@users.noreply.github.com> --- docs/cpp/subscripting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/subscripting.md b/docs/cpp/subscripting.md index 07f12b7bc6f..bb36ccb61a5 100644 --- a/docs/cpp/subscripting.md +++ b/docs/cpp/subscripting.md @@ -7,7 +7,7 @@ ms.assetid: eb151281-6733-401d-9787-39ab6754c62c --- # Subscripting -The built-in subscript operator (**[ ]**) is a binary operator. Before C++23, you had to overload the subscript operator (`operator[]`) with a nonstatic subscript operator member function. In C++23 and later, you can also overload it with a static subscript operator member function. For more information, see [Static subscript operator](static-subscript-operator.md). +The built-in subscript operator (**[ ]**) is a binary operator. Before C++23, you had to overload the subscript operator (`operator[]`) by using a nonstatic subscript operator member function. In C++23 and later, you can also overload it by using a static subscript operator member function. For more information, see [Static subscript operator](static-subscript-operator.md). The argument can be any type and designates the desired array subscript. From 9b9329f808c2bc858f184022ba50984219ecfadb Mon Sep 17 00:00:00 2001 From: Daniel Nikolov <114946180+danikolovv@users.noreply.github.com> Date: Wed, 26 Aug 2026 23:23:57 +0300 Subject: [PATCH 615/619] Clarify sentence about updating UI item states (#5955) Added a question mark to clarify the sentence about updating the state of user-interface items. --- docs/mfc/how-to-update-user-interface-objects.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/mfc/how-to-update-user-interface-objects.md b/docs/mfc/how-to-update-user-interface-objects.md index 0a9e902847d..11d935d65cb 100644 --- a/docs/mfc/how-to-update-user-interface-objects.md +++ b/docs/mfc/how-to-update-user-interface-objects.md @@ -11,7 +11,7 @@ helpviewer_keywords: ["menus [MFC], updating as context changes", "user interfac Typically, menu items and toolbar buttons have more than one state. For example, a menu item is grayed (dimmed) if it is unavailable in the present context. Menu items can also be checked or unchecked. A toolbar button can also be disabled if unavailable, or it can be checked. -Who updates the state of these items as program conditions change Logically, if a menu item generates a command that is handled by, say, a document, it makes sense to have the document update the menu item. The document probably contains the information on which the update is based. +Who updates the state of these items as program conditions change? Logically, if a menu item generates a command that is handled by, say, a document, it makes sense to have the document update the menu item. The document probably contains the information on which the update is based. If a command has multiple user-interface objects (perhaps a menu item and a toolbar button), both are routed to the same handler function. This encapsulates your user-interface update code for all of the equivalent user-interface objects in a single place. From aff91061551e6a741cfe354c514646b0dcd8c5b0 Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Wed, 26 Aug 2026 14:20:38 -0700 Subject: [PATCH 616/619] last edits --- docs/cpp/static-function-call-operator.md | 9 +++++---- docs/cpp/static-subscript-operator.md | 12 +++++++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/cpp/static-function-call-operator.md b/docs/cpp/static-function-call-operator.md index e17160d1425..e8ad181f345 100644 --- a/docs/cpp/static-function-call-operator.md +++ b/docs/cpp/static-function-call-operator.md @@ -1,7 +1,7 @@ --- description: "Learn how to declare and use the static function call operator in C++." -title: "Static function call operator (C++)" -ms.date: 08/19/2026 +title: "Static function call operator (C++23)" +ms.date: 08/26/2026 ai-usage: ai-assisted helpviewer_keywords: ["static function call operator [C++]", "static operator() [C++]", "operator overloading [C++]"] --- @@ -10,7 +10,7 @@ helpviewer_keywords: ["static function call operator [C++]", "static operator() In C++23, you can declare the function call operator (`operator()`) as a static member function. A static function call operator doesn't have an implicit object parameter. Use it when a callable type doesn't need to access instance data. -Support for this feature was introduced in Visual Studio 2022 version 17.14 (MSVC 14.44). Use the `/std:c++latest` compiler option. +Support for this feature was introduced in Visual Studio 2022 version 17.14 (MSVC 14.44). Use the `/std:c++latest` or `/std:c++23preview` compiler option. ## Syntax @@ -37,7 +37,7 @@ The feature-test macro `__cpp_static_call_operator` is defined when the static f ## Example -The following example defines a stateless function object and calls its static function call operator in three ways: +The following example defines a stateless function object and calls its static function call operator in three ways. It also defines a static lambda expression and calls it: ```cpp // Compile with: /std:c++latest @@ -64,6 +64,7 @@ int main() std::cout << "multiply_function(5, 5) = " << multiply_function(5, 5) << std::endl; + // A static lambda expression that doubles its argument auto twice = [](int value) static noexcept { return value * 2; diff --git a/docs/cpp/static-subscript-operator.md b/docs/cpp/static-subscript-operator.md index fd0498a3bf3..478e97bdb5b 100644 --- a/docs/cpp/static-subscript-operator.md +++ b/docs/cpp/static-subscript-operator.md @@ -1,7 +1,7 @@ --- description: "Learn how to declare and use the static subscript operator in C++." title: "Static subscript operator (C++)" -ms.date: 08/19/2026 +ms.date: 08/26/2026 ai-usage: ai-assisted helpviewer_keywords: ["static subscript operator [C++]", "static operator[] [C++]", "operator overloading [C++]"] --- @@ -22,9 +22,15 @@ static return-type operator[](parameter-list); A static subscript operator doesn't have a `this` pointer. It can't be `virtual` or have a cv-qualifier (`const` or `volatile`) or ref-qualifier (`&`, `&&`). -You can call a static subscript operator by using an object of its class, which allows the object to use subscript syntax. You can also call it by using its qualified name. Taking its address produces a regular function pointer instead of a pointer-to-member function. +You can call a static subscript operator through an object or by using its qualified name. Taking its address produces a regular function pointer instead of a pointer-to-member function. -The feature-test macro `__cpp_static_call_operator` is defined when the static subscript operator is available. +The feature-test macro `__cpp_multidimensional_subscript` has a value of at least `202211L` when the static subscript operator is available. Simply checking whether the macro is defined is insufficient because its earlier value of `202110L` covers multidimensional subscripting but not `static operator[]`: + +```cpp +#if defined(__cpp_multidimensional_subscript) && __cpp_multidimensional_subscript >= 202211L +// static subscript operator is available +#endif +``` ## Example From 3f167b95f4905b1a3b3a0291406f0ef566e09838 Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Wed, 26 Aug 2026 14:32:33 -0700 Subject: [PATCH 617/619] aesethic edits --- docs/cpp/static-function-call-operator.md | 2 +- docs/cpp/static-subscript-operator.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/cpp/static-function-call-operator.md b/docs/cpp/static-function-call-operator.md index e8ad181f345..31e75adc80c 100644 --- a/docs/cpp/static-function-call-operator.md +++ b/docs/cpp/static-function-call-operator.md @@ -8,7 +8,7 @@ helpviewer_keywords: ["static function call operator [C++]", "static operator() # Static function call operator (C++) -In C++23, you can declare the function call operator (`operator()`) as a static member function. A static function call operator doesn't have an implicit object parameter. Use it when a callable type doesn't need to access instance data. +In C++23, you can declare the function call operator, `operator()`, as a static member function. A static function call operator doesn't have an implicit object parameter. Use it when a callable type doesn't need to access instance data. Support for this feature was introduced in Visual Studio 2022 version 17.14 (MSVC 14.44). Use the `/std:c++latest` or `/std:c++23preview` compiler option. diff --git a/docs/cpp/static-subscript-operator.md b/docs/cpp/static-subscript-operator.md index 478e97bdb5b..3ff87620374 100644 --- a/docs/cpp/static-subscript-operator.md +++ b/docs/cpp/static-subscript-operator.md @@ -8,7 +8,7 @@ helpviewer_keywords: ["static subscript operator [C++]", "static operator[] [C++ # Static subscript operator (C++) -In C++23, you can declare the subscript operator (`operator[]`) as a static member function. A static subscript operator doesn't have an implicit object parameter. Use it when a subscript operation doesn't need to access instance data. +In C++23, you can declare the subscript operator, `operator[]`, as a static member function. A static subscript operator doesn't have an implicit object parameter. Use it when a subscript operation doesn't need to access instance data. Support for this feature was introduced in Visual Studio 2022 version 17.14 (MSVC 14.44). Use the `/std:c++latest` compiler option. From 34b40a4d08e3ee3071b5110f7bd054ac43985813 Mon Sep 17 00:00:00 2001 From: TylerMSFT <12305055+TylerMSFT@users.noreply.github.com> Date: Wed, 26 Aug 2026 14:40:28 -0700 Subject: [PATCH 618/619] clarify example title to hopefully make it easier for search/AI to find it --- docs/cpp/static-function-call-operator.md | 2 +- docs/cpp/static-subscript-operator.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/cpp/static-function-call-operator.md b/docs/cpp/static-function-call-operator.md index 31e75adc80c..2d81842a941 100644 --- a/docs/cpp/static-function-call-operator.md +++ b/docs/cpp/static-function-call-operator.md @@ -35,7 +35,7 @@ A lambda expression can specify `static` after its parameter list. When the lamb The feature-test macro `__cpp_static_call_operator` is defined when the static function call operator is available. -## Example +## Static function call operator example The following example defines a stateless function object and calls its static function call operator in three ways. It also defines a static lambda expression and calls it: diff --git a/docs/cpp/static-subscript-operator.md b/docs/cpp/static-subscript-operator.md index 3ff87620374..2498d9490b6 100644 --- a/docs/cpp/static-subscript-operator.md +++ b/docs/cpp/static-subscript-operator.md @@ -32,7 +32,7 @@ The feature-test macro `__cpp_multidimensional_subscript` has a value of at leas #endif ``` -## Example +## Static subscript operator example The following example defines a stateless type that calculates powers of two and calls its static subscript operator in three ways: From 186f69d07d68c55f5dcc2dbd55fb3a954398b06e Mon Sep 17 00:00:00 2001 From: Eric Brumer Date: Thu, 27 Aug 2026 13:03:16 -0700 Subject: [PATCH 619/619] Update acquisition doc for vcpkg (#5957) * Update acquisition doc for vcpkg * remove en-us from URL * use relative link to vcpkg docs --- docs/overview/acquire-msvc.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/overview/acquire-msvc.md b/docs/overview/acquire-msvc.md index 0acc6adb724..e26f0ab46b2 100644 --- a/docs/overview/acquire-msvc.md +++ b/docs/overview/acquire-msvc.md @@ -197,6 +197,20 @@ cmake -G "Visual Studio 18 2026" -T "version=14.51" ..\ cmake -G "Visual Studio 18 2026" -T "version=14.52" ..\ ``` +### vcpkg + +Configure vcpkg with the [VCPKG_PLATFORM_TOOLSET_VERSION](/vcpkg/users/triplets#vcpkg_platform_toolset_version) triplet. For example: + +``` +set(VCPKG_PLATFORM_TOOLSET_VERSION "14.50") +``` + +or + +``` +set(VCPKG_PLATFORM_TOOLSET_VERSION "14.51") +``` + ### Visual Studio Command Prompt Some build systems need the command prompt to have the `PATH`, `LIB`, `INCLUDE`, and related environment variables set before you run them.

    2. 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�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 W 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≷VEJXV}$1{E9l72DUZv5!e*J&vM0Rnm7Oe1v{C`PC< zQM1+LDD;Ai{PG6O@;5)_um0=$A;wjo`Uef1{gWz!ax5+e3tGAG&Y9ebi1A~rtI29T zv(vtgA(zYj@|PFHkh)bomOs~R5?+iwLpc5Tg+kCwE@7zn@df<#BMI1;PesKh2s3mf zFM5=ozBpitpuf$zZSX3!9RdG2s1salt?gRyey<=9)m2P^w;-h_KU07Cz5(E5KVQf% zzL~s{KRDj(B0hEtr;>gd-pTWbRwR(l7LHnl$$(}x{^i}<{%t@3j zP9qiG%cXlh@Vm95RK5(lywXB0fV8a@xIEHt47E}Q-B z!hCWJcwXZ@fC%MD7um9BR)C~_;{wR#ExPq$Lfwb9ISj&wQOiDNR-VV{0hYJ81>5p? zpVDNx!_;>N;rwpVauR_3y{z;de9ZU7pz0#GxVZRzlgcy+=#cxM!W2If@=?@<0T_7h zRA?IOxzyAI3)O_lR=<5*sHJ`Lef!ieJt8@YyNr@h96wd^OsW>ISbXA9vMjoV6) z6#4PI_&gmX=5_IoY`Cp}92hqa)%~DMp#pO7{i}N^3||b0Zw!Ua>-EP4Gh~F!2}))4 zCx}>8On*Lwm*MJV|JfsnG|?XP++|QSTA{a#t*wtEfC~?1iJciVXD>(_Ibo69TAA(r z0#JCM#9xduIah_<34e6L2C1n6G}al=8{RqFB-2btfErA%A`3{ z>SgN4opA{k1N5KHiBCoOWB}hDCS*iu>E*eoz~+AW1Mvbdw&u;EuD3$61j!$69n~D! z!DMUDm%1ZGr~I4fO5YX5h4Vi=d=a#w?>9NOZ~Xh_eBwu*FPyUky97dv?80Pf_ikpb zVIvx4nU?&4*5PR;C48;7OMnVGf&!up0BFs|1%|Xkba7%bQmg}cyVOh?=h4fLKru>> z#~i|KBMb1HUy2-sUAgb}T>^;b6d~F*8{yI))cL}1-GD1#w$@>%kT@^X?_i{ha%$PD1Qd?G$UHuXSw^nBvyHW_=3O`HCL|f1bmzSzb#Xuom}eO;z9~Ws6n)tIH6beROV8Q{ zQF4iaq}J{Sa-67ee!`2WA1GvmYeb-!ni>tw+zzEXJ=)yX ztD(3)ec61%E(&gucUL=MdQwCb@o`Y!1M&4ogK1J9vhvFE7W%yi=OZHap1Uh2`xm18 z{Ac68Hn#Dd8s2DgQ(j7de&Za!qG6R~xWikF&7U6W?nXi6tLm9|h%WLV6XF59xN~zf zeG3`$Ow0m!v+VoLhoF?0e#b{53F@8y@`rLH(xGws>eY^k_j3cWuzu|^Ep%2t_ zLH)x0onl&)vViY%YK$_RAi%AIzu!4IJlr=8_x(nkhVC^SxlP-%E)RX(?zR_8D|dKF zQ);A0_EGJ_A)jRSqaqRx{*v<*Bvj2clw}LNn*c!w%@_8WMO`gCutk}hy%A0?>gf{4 z3#JS9)&%wKNSKW5dNJ(;i?C(5Z5bR)5tcr4;(kOi& zCJd&W4L4nVHGH4z9>^y_#l$T5ikBSz9QFXHPw7J1YiQKc)m4~2KY@r@l%D_j*jlz& z7ENX?KdM**60l%R7C|T}F%`OZn_-$dpV=B;?5MOZL~P<`QZg1;+Oje!`Dn@g0yZt) zLM+>;yPjF}zPtw{KG~7}Zj7@0XU*?GxH5c>Lgq;yk&+dEy-`hDT1Ui!0$Xw0ih^e0 zX+(bRy?qizVr83)!@D6U@w0*QfCq=M{b{t)AUV!x}%Fi1)D{~M|6 z6zwBN(;st??GChXXv)egWH&PoTb-JJWJ}A+%DS6et~c{*FAXzODR*F=7wO^QeFZ%A znpM9+a|PROu;qgKc*QUqwU5-lE=)yp%Jnek#!cu7N38CFDNYVGTAugZ zS7AN~Q{4^NEIqL$@w2~#U}n7=+Rlnak!4De!=OkA5B4bhpRRDgjOh2?uwuEYoLYvf z2bQ&(V@T5-2tnjzkI!Pas`6Wy7}mX2B%8JM$%PfG1nuKvL;&_jC!NsTc;X6Q9zNdE z?YGWO#LB8FTwd>F$)NLY-KPvVc5@#yCaSz*emU0C-H(*5F-@9>o-oSvPBw+|D zviJxfP9k^wHQfI@w&JA39JZ9h!y_Y4zKa{>cX(X<4y*bbP8T9gll-~F#KiwK?mESV z$uQ%47sFn`4k=^0MwI_Qcd4Sw9z|~YkCgnLC@n4R(lI0Y+`Ucid_59Yu} zh$%6}p!?S-|Lan#*`w*4bnLd43&9bC!+*QB4_&Go5i`H=ubvWz-+}Ke?JAP$R#Cb{ zz1Z|OB8%9!JP!N&8IE+^f)1bQC}pWaw*UHax^f4~zZ2#^k2v7A|Ks=@D*xm78vB)QU=2De>7EOY6Ho|S0 zlW}lhmZe`Pl|BzU6b5FpU$Hn}D;GXX(v^QyMqXaoQO(V%#ApAAoxVNH{of7uj2s>) zwyJiEn{&NI%EgQR+p5fDM&yvau*8Cl_lRGh%wAIb4iU4nob|TVww8`j^mw@M0_<6j zi2fT;C5wSM-9a;2G1p9+u-+ z7q6!+20EO7{1<@XX@9c`bV&C!5Wa1f4MTk&1l>}CP-TPH($N{SwYLU~S0etZK%B|+ z`l`Q;L`MgF;Ejgt8)<}6NQ=_0rRVI>(?VRE8NVuCT0WN%8 z?TgC@PLcoJ^W_&LaA>1y!GRMXw!h8bIe$P_cfr!1(&hcBBy4?Wg`zE^WewZt4%Z)- zDEKj5(|Vr{cy~(?gW_5F7O5)?%fx7pwX}r{=P7A7_Zj+j>H`G}*$VCF-TO4z1!n&+OH1H_^Zl19SZj zndXZfA`B!!EggN}hweYlSYIDtu9hByzhbFDg-wF#Zb8U%1?Pr4gQ*FAqmjBT0H&1M zN5?-tK>rGNAUX3M`TSvsoU+I%{Zr&G_)22pA&{P_KcXjY*#U^6OlIiBDM1I*Ogs{U zpyc%$!G5AYHYS-Mpy6T#00qrSc$tVpB6%NQQ7>Frs@z`jJJ-)093`YgWO@+G*2d`vD-v%4>Wb~Q9}_HdZ1HcL z#H(IWA|2xxADlP(q&I@)2Mb!*Me4H_lLzxk(9WadDOXMAEUvT^1@girIG-{qr z{C!z}rAMUn33pu2VfI`y44}u2S2Pcat=?5nurAGqof`f(++9LOO3Xy22TdGS8ws@4 zL|wLNUMz^WEf(LGbxA#wNHcsZ+;F%nMp-?mImSq(;Mfb7ILb~Bm+QsxnOKEQzl_4^jW8rsP9$8sqQ@zxjM?1gj!e+DL- z^Vz6Q%j70Xx!I4HUSQ{YYvn@*cJ1^7cxpeu^M!vT=-cz-(PD+a9aZmc^rNl^jk};X zJj*lTG38g+@t&?3a4bHT^Qm7=@ftsyh0fhD>PA?5X24Mo47-Sw{?gM09vWOHO2ZHSiu&Ajfx1>ZkA!@>TpK*X;O+aLUsa?%4yt^O1>1N8|+UoE_bdPO&v(L^PfylF3`s#WLHI#Xemz?mhiuXpg&amUq z9094g(6)m&Yu7M!4secjIC0^PEGkp|H&D5CC0QNslrO)Vws8ywzw8oPF{=2s2cS}U zZ`W&;c2glhW`sv7dN8jBPrnv#W-#yDJWiJUC@}6j3M>*tN!^s`X$o(;M7`|!;$>{r z!@F-zx&2h_WT~^H^p%*+u9Zl_)+_wD5*g39r4RX+l&3cYytigZCvE^t(b*~FJ3PTZdCNA(vb`m5AFnla_?n}=e1*Y!Edli~14Pj(;ko=oIPQk{pS?@uTgIT>Ow&^NF`dUIQ$5i#+)uYOCj9;T0gr7!)DtNh7tw z%Avdgf$O>fCS;y6)Ygtl>~d|#!Mh}W35`ilK_Ryi2oIpkY`h!%)oxXuv7iTAeaX6-iGA$vcPE_Xbnyw=!`b$W=i zoNtGW2?ABCCJ-GTG=d(^NVKS}O-^*H3jlV@(636GpNp^?lS@?flFE>6-OIc+{#A>Z z{nj;vI4HStG>Q_Wrux(kU7v zN&l351d4_CABOHi>KRncA=bO=e#g6{23X?VfwJZeTBKt{8SC_51o;9p2ZdwR( zC|YC3pdD&N7z*vKCq5kf*w_@oMfM7)#Zs6tuLr*O3Ai{4l4CoiQs==b5)U2D?P>L{ z4}1$?)9QfI!n{t||bj)V>lt2b*&8MtY!70g5@6tjip+PL>^a;JYr%nw0DLYB=G2gNhwAWC?cJg%a7 zr5Xfn(m&j%0#J(H9C)=X@Wrb zV4&Mpkd$%(4~9_w6SAX&I{HfFL}OAF+r4DB=1(YydYQHc5VyNF0B%dlsw&V`mPaIq zSJm?_I2QC!L^3Q^Ecjhs@K3<-EEpPQm*~U+Z7KDq zk`NJ|DkFP3h#XrRJ>pO2W;6jdToMrj-&DTaNqv+e8GrR=Mx6Qz1`*+(SPb$jTs^#G zKC}0zu9w&qmALRW2uzCoqnEJK-Wb}HZIIIzDi5NZ?Ytd1Ue1*S(%1X@u+5L&gyDef zJX(6QGZj6ip-}H*-`!4byotLjNB72{rY6WJ&s|^Vki+ZGwbfy6y>lZva3r%GFReF{ zh&VrVN7mj-Wv^XG?!3QHj9s_=MSOiB?e=Gwj2dt|`3w>!>XPeiLqYfl+Cl)E&lh!q ze*aA3>qX?amhZW0hce_XKqtyG(dGj0@+YHDWJyrFw@=FuAq&T&?|epXAHrTz6Q5M9 zc+RF;i8F;GG)Hb3hVCQ*0qpq+CEtIiPa z{SrX;yBiU}mW^_#alN;wPZ;GB zK;M+Sh+90wjAaA5Hr@9X*0_-hvaeC=Gj4C>X3~}+uM00)tE&jlav1Oy2+vLMa(D88 zh=%~gk<8c?CjvILMwk?sM&m|$Q9@q{4Dl{fK^PA}i9u_~MBjlG_@F|zt16&kNZ41{ zu7Scbqar@xmsSEMHzJ&0&+sEJY6Q&A!XQ4CR1ota)#F=89?l~Rku#>lBG#Ypvmw3A z&9xGPIoP}9{#XK1%62bKOR%S=2#6AYK91aTP@CVDCM6Ykl*2!cD$piQF3`mc zF>Z?m;o~IELh1~N5(mg@h%A@#5u)tYOqLFWIvC;_cN$-`HfP}^AbL!2O}9e`ieTtN znEWKQ!I*#J=3RB*hiiiDTqlA#dfHP@bZX?HHHq`A#vR@&U2l21oLiO!q1owzX*KH0B@Ji!QZq8Su}!LD#%nO49V znQY+Q*bk7#(h|_FalW21qCF7DpkHz;-nE~kAb?rV!Ddy;8L3;)D|E>W^GX+tD#G_{ z&Mq3;QG`a&O?U^|Vjhb(#~xc!+Jekv(?&Wz3?^h8i9x?l&>WLq2`K32t9;$%ikE!xBjrY*uw z2oj@j2F0s{AD~`zCL`vO(2XegUHiPV0Ii;ui?g8@hU;G@q6Fw!1{h=UQF$lbB@I88 z-jV}q@JV)dxno-qQokxGmve~~x;`ijZ$C1l^$DN0omQ9~vm<|4qXcUi|IqCTW|G!b z*8w;sWaZqBg2tDEl*6iEmbJKeT3I&r!PYH7BFtX4`$~U%Lv$=RA{PtqVf%;{3q(O1 zN>pR0Nb!cph^T}urFs70Pr@mhHrA3LA$?o2T#JK7lKe)Rx<%K|tNk(~kqeDfgXunm zIZ~4d*f79OiTDo~#yi#G+7BG_Pbh{30@Rlp#>2w0pM-@-T32mQ^m7j~7t}rj3GDZ0 zo7cFS-yXz!5xngvK48~Le^kqlCrfQ8 zV!W43EIwaj&QAi;-&n0*f}B{zJ2%0wG!uIaDKIr4Cwy;(84xwz(}kGXw@{6llC((WuVjA?-Rg>%sOR1af%Vu}oE+IAnOjg(&iUKO>3uJjZKhG`~I~>2^J- zBVHu@=*iJoDKi274_zUl?TYpf(~HWzAFW&5+3c&FcbslC1_V$+h@7EOJ5x{yxJdZt z2%-H@;GxLNy+*D5j>L>bMdv9Cx|Ldj-OCST(Ol*|D}K{ImXC`vot=T!CoyA57~{X&EJNm{RoYPV-t}VB{ zqIiW{b1OGGcCKyF>D$)qX?%IUv4P3ZfCHnFhj) zAQ}z=qz(}<2}o;>-qzX*r^fS^=J3t0zWSt?uq2P$*kZ?HWS`06=V#`J&Q=!mh>t*7 z5{1AlNV&Uf%crBSoEJa*neiW-ucOTn<}p+$oC!izi}%r*4XB~|wdp~o%dlh2aK=gK zuIqkQAeew6U(cpSDhpGA!CRMAkWIqSRe}x8phk?zw}q92^3S(gVeN|EvFA_e#uw=# zN%j|PJgQLbtWvwL$Cqfbl+ZMy#gU+>+H0d&s&M6p6nNvVx!k2FKjIV|9Kiz$iuR%4pw4vhmBy0E>`!Zj$KElKk^Iz17>^_9dqkY4gyZ~Jb!uRR(= z;wrw(BSITuL=s6?;5#k4dm{Ba{+j3r$?R!S0i|aAdT-OAkenw)T$tQZk+j#jPYEw+A%P2wF;pAs7o?zDa~XF~)j9NH{%7;6(sY2W2|%etE7f(_Kz zB1A|9ezDoRIvwNoj11Xc)Qt-NI?2xDfCXD;HL1_=oGUJ*kXiRyQwahCSL#$YrkkXnkEmyhkJT1R&-a-ULh!cY#r(0(~`gf+e2n zL6K+?D4fK^ZNHq42tFK^_6#b)w7nE3as*-jJp=}lAdtjMwZTr>K4ykrk6yO|lhnB- zACmf9E6&Gt7EW}-aimbn?DC`CQanHMk!NCpoja09JVJ~gX*VPtdO|0@bZk1DohwF^ zUp`W-rRzai{o1MnY4nRhcbwL%ifB(X^<@c6*1dTMS^WD4zB2|tN4G1$#WpPHc7TK)q>AOxJEQ6dYt7e^Kf1LnYa%CYk8vjtUd*vGz^1Ub%#uJ{cez&pR z$V&V9C{vQp`INAi0<(2gQ`z+5oETAaV~PmHJ3{x6K>s*)2}_SM0%#4(Qeo*Q;!e1} zi80$JN|uB2fc*l@2rw3|l|T^JM|`PtITI4J9dQbcmYWdZ`M(p0Q9H~iQcq;tEY1FaK3Cb$!zAWqpaCTXC7heqbGI}szV#o-I%eQzCk z;rU2D#-K$b#kLq;4#@dYUWBJeGd%2jw0nGpL&J81Kv#hZ zA&l~GFC0-a)N0eD2ANhCYc>sne5^b?>hq-Gb!ZJ3;=^E4myeopA4W97ivs(XMLWUl zbgws&cUoY9z0Qv{`hriz4@=UV+&lXV)BgPY@-j}8F|~hEyEFl0vsTKrGPWH|sl`_u z?lTL#fh0xbV7`tCOj{&Np7?oC0hM^Z7JXTjceHZ@G2quP;$-VRo{ChkSC@C^lI3=n zo`UT%;wV!NlcGHWp$FfVV)>ei@xBgh z-pkJ4W+Y(hvJe!esvVbk?6b`2SgyAi&^ia=1s~=UKRL7Kd2@PH7NAD6GE9t~jDj(b$rmS+5I~EO6RL0)i2M23IXQjh zisYkKP{Tl891tRU!2Tcnfb!uVCpAD3N_1blLzj5l`+qol3!pfgC{Z*)f&>`cbr>WN zLU8xN-66P3aCbt`!3Tm{kl^m_4uJ%BcL)p++}`|m_if#~`@ecsw~8tlrcZxIy1zc& zohNyv+NokKI6rxvrN0IhWfSQ_4`zd^H1lE=0pxda5U{qiKnWA>tWgjzN5wQcr1!Cu z30izHsd}aW^0|V6-ZZ0`^riHUl%exS>&F@}oY5%dicZkZa{j(7E1o;U{D+9;QgEIn zS-fV5OhJXA#(OB^>oL+|bGo~OG0P=&8!yP}s>W>8U&*}QWUGXrB3MC$^VTfR-yJZJ z%&()Wx`AYSikOc9ZA4nXKamL8tFwx^00=c4W8ZbOH({*}^6N(y3^+&k?rQj=VUFm0 zMmw0~zXpHQrlc@%vV8ED<&TX++p5y7tp&;qpbMtqJgMw(x()nvQ5$VINr-DLp06Dv z&6a*IfmedcE$-WV&n2F+_}OX0k5O&G`Jw*R$$CwvN9ml+S)GhV!3JJvDAlsd@`&RW zmta64?Tro%t^pORwkF7wFM@W9Q;Nk5C5-4M^_n@L0ht_RaKKE zxf9g{=iLu}TxwB#RqjA&m>=WWQ_!Np=N|1-q<1$hY9xtDMVmE?u7v+8yEC}#nmH*c zk0L?4g)6;%rh>$*JNTV->JWjP_p$7k@rHfO{U08p@!W6eindSXuWyZh28x0rUm7U; z?F?n9GQCVK4KXJtjK6fe;ud6EI`fJUKRfsn2}WZkD;+$YAwywTK;y4+@^7z_yY=n^ zsy-$xVb@vsM)!s?6ed>`ZoF#@EUElQgs8lHGKKKy=p8Ae;xaXp;mSb0oayZOcLvP-yOPNuKO!3Zz}E8u~R@I=5qQq8aL7P=?s zGZqQ*8yHAJ-jRqMKd{mIt#5p>v~y+Rc;4Y2#{2%U;&g|)JVedg3bFrf%-~9h=bC<1 z6wY4)&Y9GvnTmYd7GN|;9;QNX~E=ZK@m(j$cq&kS3<-4uVjD;2 zeg|tG7l`heV8S`*AcT1Rtl?xLqHnV!5FEz#i062LE-OzdL3rU`*m;T$?cK(6@0h0o?^B_?a zNSO*62>y+s5>RN2v~udJ3-qcP?>j-NxXW5-wi6;*S9TC>m0KyAK~{vChXVFS?&!Bm znKAD?h9i79*>%#35lb^99^8JY7Vb5IqoPxHtPx<9ts5+*cqjWj{*5M>!Va4aSOBhd zcX&k#?$Rk#0>8w>;9v9%ovS#$chrVohSzOKhs*UTqIjh!^pc>xH;RETVr>aITftmK zUeHkkZr!1+KNQC`9H~2T(@87yzw^4nh;z-W>Bt~Dv41nyk-*F8q@E;~ zBo3x;MMl^@E}ebBZaM4zr6YvmauA4PxYAuvi&g4jG+VTxphie3GQWt0jO=xHf>WE% zlN%L`%?%_udLPSKBlK-yPHWKqEOuQPjGT)-LHps5^=a5 zzB6|`S{_GTXR#l4qYv7;+?+9?6`!IyB4#CL)pScI$sY511Vfy$YX3zW8-TZMNh>17U_xkJb6B>0mS3^d7f7yNQ6W}Q{qv` zWF5(;eT_4s)FsCH2DIq#;Mv>Q430w*B^oZW5$z%CL!4hYasbedx1=m@xdNOXa8b@HCG6|+XSWd(9ACnfghye*ts{}f}Gw9p$^3?MRgd!?Sux}%pZ1S z{CUp+0cQp!p~jF0UZE})Io{+!t1JKR{W^OX{4Le^Xm8Zp7o>@@8KnIgyD>9PvQ*qZ z6X|SVob}Q8Yzq6SRr@Pu6IJ9p+}F))KM+=C)FACwcH~`TZ$m9fQh0K;;eKj)OwqGs z1k~mug*QMPfjng_Nl8!Nq`w-C%zIQV!3&_DjgkGk6lTAEDZV0uQeq6AjEso^>zgk2YvGCaWMMwS;;5e|q*G&mxw*>8@`uwz<0K# zeq1}%7e;8R=DtQ2I4(6mT3)N=c@k*-tM|Pv%cuKh(b19QtB>Z}hrKm5f1HjnlCLXb zXizAR8$R`wFtgXQria(%!|e)lMDKl;2=2uXasT3Li+Ev>0kKnySdw*CybEt*E}H>r$dc

    i66vLaQS0FWrb}kuu(UjkYI1>d;Dk&M(+_f@0%rca|X; zFyAq7BQ(la=4hBmm~mzCXCoG0=PTDbj+GejO4%KsYX1y;9cS7W%XsMxkm6o7AAT~f zwwXacYt`K8*>_V|a+`9l12P|PUV%^4`dD(t0D3NuDZZ)p=Paosy7fHA4Q!_nvA zRUf#(t4yIpp&&}+xWqRbzBH+`ExPzhyJ})VrB^l*{PbH7?4Fx2{U7&yYL1S6SSDk0 zZ16(|Kul=Z0f+6307anIwe2Fr;aa8iz>ahaKoezZ=>M5Y3)3hVUiF*{*as@=3~YJU zgKv91l)$N^7pW;_>3Zini*aW9CNsM+GBFReA%G!V{oxnfR^|u6M3tsQ0}f<6(y@kY z^2Gj4KbqCE%q9(x3&dO%O<%W)5NfZpdUD}0&~{z^X?K?trgzH&C$p_Rn!?#XHut0Q zsKE<4f)YG$SH=KdI}VODX9s6D{LvktCvw*B zr-ZeEvmcn%SpH@ixfXN5a!Xt|u^}YR05gD4JnvA9OpTH1{5PId@n8Sbz3--Q-iA0~ Z?wL*=0w2NO00lir<%xzuiM;u{{{e7VP^ka_ literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-debug-infinite.png b/docs/get-started/media/vs-2026/calculator-debug-infinite.png new file mode 100644 index 0000000000000000000000000000000000000000..ad1be8e0521942003202388318cb88ceaac93b94 GIT binary patch literal 54304 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 literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-debug-locals.png b/docs/get-started/media/vs-2026/calculator-debug-locals.png new file mode 100644 index 0000000000000000000000000000000000000000..fb54d5c544cbce7f7457c09586a86665596a3ccb GIT binary patch literal 12608 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 z zzKon4qcEZ2eCVqboY60SrP^1nrtx6>v^5X%q1odeM+wo}xRNI@`%E@NnLGxA{+Fw) zsX<-FC5Umgmg}ifz*vm+2D~m;0|w$*4i!-hJhro2TU&wcR7~Qe8^wgV79^n(K7RNa|bmEJ$n}ymxmlxhE8pm1}EV8u>;twnvXvL>PV+3L4fAsY_s3u%R3M&wAf8<@%nHh-r)XnEdo|*;CsHK zChRblAr7Fs=YADzy42uMj+#Ne=*w<#O^JR}y>VA?p+@QE=4SKNCKQ54L{w`%%MN`) zH|i%W^xlwm(ZzZ=F7V0}oZ&QG(|6fMmn)TA`_}unj5Ngba&xbk3Hx+ArVz1;28dQR z2vEdzo@vBfJ1U@jnpX2n$jV;-+s8K>_XlPFaB_j6+b#y*pqIK|8(q9Mtls=bjM)fr{2!Nd1F4k|H z*dNv34o2mDU~{a8K)Cq4qC@$Sb1iATOw7bYWcH;VX=%5&3uM)`hicbfs}{o9Dp~Eq zYa;7xQ~6^n1B$u++zn7DVDaXrruO@+%)LK<{>;wK#vbdT^z}Me;DcAlC@4Gvt%#48 zrluyay|%W@h!4?L^-X}NxS7Q5dt>7kZXvRW%*!yoCpET7z4n=r`~p-#MM$}U%LyjS z%sgIB7wWKmPou>W_L#UdXv+A;r|+FlDBprHP#j0;UIE@SGeY=!3veT|v$Go;8#*<% z-au!LJaozT!Mm)Mg~^~Kj+nKHG&eRlXeuYX@?`L}%KmZph_$~%pa(Xpx-@FdfO-+VL&?EiUaIk+$G?CiU z=?ytpba&NyDB5l-4+QpSkJ&BM>L1>w9&Chj{Bkqln#g_+!hAAD1qvTvu33P}bJ&XG&vGVC2FgR)xNIwVqWb zv6EK)6i)T{O0i}*rNJ!iXS%cZag6fmh2H#E4B}=!*=@T(*}6BFxvD`qo#Z+)vMPar zThnFoyFpv3`*krfOxefqU|cmJGqw699~aTa?7fZng zy2y1xHZd8Z6}J%wQ1V;;jC!sCs@O-e9@oj$Afryn-w7yVPIntiQT^=<8JpG8QV!E} z*r@60Cg8zCv+X{bxaoq~iMw7flJ-+s1_pBWSUEajmi29-Ul$8otJyHYmLAMyJ83@r zChl?SA(ny|85sd?5>UCix;jeV+heF*b7ETBGJJsmAXRXYhpR_d5x~=OdolnyTWRzA zMprT#_6h}MH7>?#k8dvwe^!X%|F5oO{CI`NRgZvtVR9RW=O=3jbVsYtlu@3LR+rT_-TigDc6{ zBc{+=VGjEG(;S_HwbW27jP3PYYGtTjISaXkFJTqBZJP`f>;Ta0``yXO3AV|m|{MZh{aSdB7i~e)q zm^d;6&sd&W7kJY<FGn|6#1Q=S=~E)F!{1tmwLJrqS1V8U z_xAxpfjC^I-247jg+j<<9q0l2vPd$UnwqMrrc6XC`1$8BHJU^av1-SMdAj>GjSs(9 z=McI5^mw;SLMzUs>#4%t9)|#)AP(HiIYF#m?(7sV)g&cvwolViC9JGhUe=M4gFq6z z&-p+gtRm*cSRWssTTgIN{1XrViWk4r?6LVKAL5HMACn~immJc+`J@fyU(xtwj5_aj zla$kAFzgdWLDnN^S|4E?x%22xzP@EJwpmf$ex{-0D3QrK;$Zf|P~20O21gMt(r=vM z+*9SJN%7T4657v-*1{@FX*iD^(oY4Xe4cVt)%X!YoI+BE)5mklNI!s5Tt%uQO~u)=1` z!~c?cfW=?gtc;(`>{ou%VNuTN3k)8#NNxAJD+XYId5)aA#Hm7`=jB|7kB3;a&AJb9%-)|L@E z8Oe+iMa-NJ9>7C9)Y#m3bOT`uZpTG%Uf4e4^QKXP0u@g2a_dvc{Bm$aIkAMSvRRjF zuG5$qM}Do!TTNiumO<7{H^eGeMT7zgR>++fwrOUQo`gpd zXI2w}-c4~)mLnevb;DUm`N%p!S;&1NG&OnZo&g9p<3uygY?f$T%e7VdsiABsJvT(0 zIJlUCmX)M)UMtRw>(vKtm`6vI2{-+_cRzHLON4xnq{z(Qd=+k;eLAYhtOqFvb8qr4 z6VfpltDrd=2}583S}%PNyV3tZ*|9bY=&O-=!i4F{Cy@C@ze?L z8}9jqr(zf&!`jipzeKS%8QihN*hBUCD!HyTJJ;vCi^cEVsDONAoQ>@8$jHblyXc60 zHRueN8SDvI@!ep$>@S_NtakJBhpXH8J3%0^(`vX~-EguJ$*UOm%%6*erL>LtY3q@H zNUyxTA_fTb92IyP==nfq1lE_U%j-Zm)>uafjgY%82t<@9I2lDslX_}=dp(LdaCd)E zbD!ee%O;zdZxOaY^}zog7_R*RMD=>3mzTFii-6Cj*WvH&q2>FoGwJu91JA%7-7J=WS>m4Gxq9A=U>@vT2$?F@ zR}rl^gs4PWKJ*V}Hd(v6!^(#;Cg?)k&g-dKdpX`V?TJP?oHn{k4pB}JPM9I|=|fNz z7(yB1_v`njGrz=;`YmMTP2pOwT;*?{q(t9nqgfPd2z|2ka^7Ai*DH(oqOjsg|D5j) zyFTuy%hMGHj`7o|P$=Bx9@N++Y)f#;Kbyxh&kYun{U#<1v8f^g80Zolgo^Rrx#*`06e;yJ-+4b>CuUl@) zWVX*Pg%WR@y)rrcpbC;m7%)iT6qgX#i&&6@!iS(db{jq_4;XA;wa|@h(H!?hgotQT zJAA#q9A}-cIjnU$JzZA$Nqez0wqLP$dZIxi9~m6U(W&-@*?_~@Fx{l%;0FQ1kfYO z(0s|U2*>afFDNo(h*7pp4*_ez)yp$pWlwtWXkqKTbNYqBn$Z`msf)wxWG6d3(Bn2P zm}qeMG!1JrK;?#IlX*qo?eCq}QP#`EFH;8>X_TDabq#eG=mKI<*>n)oci{0y0OnIG zD4J3DIcJNAqF3qMLDvRr)j&ZY-kvZqW>#*Saa}Fhwd|bISCrE*?b6Rp^P{>NQ>t~I z-`~A2n(=-k(C*#!wGFJ6^Gn+%v|2hYn+~ljwE1T7Zzg(|!(u5i$Uc>{f#I16Y>JSI zbaJ=58Efy(i#2|0V~vyudLg54WB;B2Td1h?5oy|n)faW*!kK`zrN<;r2$1fl=s1%0 z2hRj&WCWLx8?QJhZ@4-*?65UBYlUjsOoUG4bmw3GrVfkXCWFo8J_{ABt|G-AbDrl{ zQa4r6$iUcZZ$hkVA97=jRj8QDD9hIRRyZnr34>ZHl@_wd9QcT6MM@a;ngc1u_0J9z z4=_ABWy@zBtd3lC)ePASabr`CK=P3qsysL!)aj3o7Cq-3KvWA=trM!B6N}GMO$3(+ zPk&ekgvrQ;VF-z)XSkdTD;;KZF|1a|l3FuP;EtVtr$ZRqt`VE}%srJzZ}#`%^zTK2 z>m}|CjE2CO9JWe$=(*Tc9F8TENfW z@sZ4D7uRiiLP+y*vAJZFd)z&A7<2RI7<$2xh!kWhby&Z%Gu+UcXU?zrS_!|9lokrR?#Pk88s z!akgdhXp$_KBCmuH0t4YJ&x4+^e1l4NIBWL{%4hqs8{F%o7j;bnIbAUCqt2rUE}bv zBblLNuC|{(ac-3-sv_;~0q@kueb|6lMVR2K)0mrFCl zjs)x$?D3_l8u5*W73Y)6n#b}>P%Bj`>6h=YB;dR^!2RsS&|Rjy8EZ8e2&DTp-xUNB z{Zn7L4&?tmE?i;8PgOjUt0Bia z?Zo6Bc&CAJk9JY`>+ey>Q`X%NKR4~;BQ@FTd3qh}3SzS20`VH=DMe}%8h$s^Cf>k2 z;5h*H5R+CeK$RBE-`#%<0BL=sFyjDHex!pO59fbg(P6aEf`~x2Da3*{-5&eTr6Cg< zKMBj;bRmu5~lz|#8!-5_rN z&g$#8mFd?tCC#+6zx8=8ej55L@v=}Zx6V{*oP74fEf3r>@-Bu|G`lvqrZg|QzWM?k znYQ7Ax{~rF{+3E_gB(#%#Ri7O@wuFxBSn7k!2Ea6mBRX0*`30X`$bdrrO$Ft`DX5X z%8NB#3^YActW88tO=0ISG)g*We2#QpzhwRfD+t|@T21jC!#G4^fH*c)N?kQQ=JW0Z zp1(EqaH59SCl%uMg%==Jw7y`@%>spjqERg3dg>@ut@L~){q1x|Tsmc`VO9@-HCO1l z4|>Qpc&OE?Wzis|a$45tE!6)xKNy;BKqqt}1m5$pjf9(By8@QY)ukCX6oM0!JAv=V zMvsY@1&Q`%;go&U%cBCoKG?+ztVJC;4ZINIxeo(Erlt<2{av-ylLaS78#mIqgQdzu zi-5!KJ-}qrKJlx`dZ>|gSpVK{w=>7onHI8}7IMVUc+<5?_=43Q7}nbu2Fz-KXnoGt zV}&7TMPy09z~#^j|6xo6=Z*SaTvi;X8o@wPFw|@cbd}TDMxH3vTW@|rgA$ru{iXq{m4y$P%nE{26fA0P00>R>S92Ed z6s-NGj~}ns>F676og-`4;-@C%a3b`sI!`21NqiUhi^qMgwur{EXQone=cpC{| z5UhfTgZ@qa#!|qz1z%MFN8Miy-}F8Kt}fdpm5E;DPGx?l|Mw88f@0n;U3f+CzhL9d z?pUn%+L*KoaMFFv$j?ZVs~x_juuTj=j471E3Jq%<6v?7xtzQw$&GWLJI|)@ci$YrE~TQ z1Fk3)km2h(7xSY^;@v7>Uh)R``n}A+Zn&OZZ*)^YU~15|)J4;JSACLxUnAW=N5-21VOb1Od> z!5*3hyXQrAusdKnvLPPts*8X2d6aYRN>7rNko3{rU51O<10OkQRCfxGeSR;$8(eOc z&6hILRzk5qD7kX#SYOi+1$AGUrQ-mc z(?5&d?5dY+9x+#}p}5A~wK9J;rf2hGwLP5oDQN4PDww+f_3G;HC8S)=w*X)o9=5ln zQ>3aM0Xi~N#yE7Gj05G?`Z0eRumlmwy7PC2>&S|A}%4X|o0Q(&6Q0v45SpGDvYBMzAO zmm`X{b#2@RybkctX&z&Fzj1whY7T>Nu81(VrdzSPcs6g;)kgE zf@koaAz)Q{T;(c;5J!7#tzq;`Z5t&Bl!f4*tOYhU@s!twG#NdH7(PH8=F)U7Fv)_p|iWA&&7HZK+#q!)Bg|FoGu(%Qu*yb25_B>|KuYX z0TL(*`TuOlqUxQlJdv>gBJnof9(gi}S>N^%4~kY~ycKj(&lwHCysNxP#>tsGgRw(iiHhxJ_0w zjF!r6(&YO6UB-4{JL)X9d~CxNp-0t{jb%w;eXWa82Ymj$hP9Icv7vph@nESW4Upg( zEPa1yi?2-P^ATj&Bb<6pw%R)+W~=A@v0SXlb`Q1fw$TAt=(n;@rR!5jG^W^N9oO2W z7Tyg9G-~RaLp{QcP}tj;^GVBTl^j0ZpLhWVcp&Lm{LK>UAaC%%$$6Fw(`;3D@-W;` zBgl1=W6+$lBK&ic1h1o;8x_xK>;E>8FsErM(6mTo3o>Q^$hejtVk-8)fBK* z>)%_n4G@VE0{HpDQ>_047_-Y?oASf`m7Dr1Hf(@nliVPwW1AOn8?#;GZ7r$^M<3!qyT33B4>4U^MQtZ-d zoN`bC1Yp7Cj8H-@vIeZ=Q2X^h`1;%dcjaQ!Cyo(}<*?bEQsM~Y106cX@%_fe2^3ZA zeIWzIPjA$uwok;LU|}OXl_IGDCr_`E0f5lLU?jcDU`JdDQD_{cY!%3gv#k4gF`lGb81xG)?rv45S+qgO9 z0r8mwNAAIHdoYug}4slb}LiAwE(~Y-k>Xvvw z)ktQNY}wrZ)}}lDwdse%wnd_KUSSpU>k-9NRvQY!_5Vru&m48arPMpS$tcU01)cw= z@4lv7U%1yU{V!6FjTl9A6jm*AE!O|~C$2Z2U0^|T%RbYk=u?-@Mrx?vW(7jDj# zn66s7Si&Ee6YF0CbzXjYSfH=iZ4Pc5z##@wzM#T!3Kr+|Ji^W*H}w4C?r$fu;+zh0 z14QADz_@1k3-uJrhs;#5DjTr;<^+?F)Ho@TH-{Mj8!2~h-2o-G|N@3fp-3JaY zeBP@m(FYA%&I?CbJKC3NZx9q5s|gBMwHrOt(*b^ZWWb}-i;KeyD11))?v@{xaJL@% z4ddJCSVD|gD$-G|$sF!qZ^KURkLV^$Rf1`=#)`Z}RH^&@ECg~RHivel>; zZP+Ux3_+l0C8c5t8NZOz_;48yvyEMHPRQL0nuRzJF0!?eKaf2yfzWik(Hx_CUl!c$RcQaUvatVFmd?f-bMyCIBsTiS1|DO%SH@h@ z^*3StCJ&qU?+({* zSwzv)j|26V+UDWQ|GgyDd-AGF8vHgdy?fHob~fm{ABo&KL>F!hM;IgI`EQpXo1B#? zPe8oh9%2>m*uQ_Sf#H6XXR-;5$=fBb5h`%RrOnk{`cx-0j-tK5 z+xtiaD-b`_iV_rUMktlD1q4lD{j@6*RINK!w)WAx?C$^Yv3^6&hrA`l96fWj+Csw) z4dz@DnX7YgnCqePVRRRq;qj4m%17ORivKNUELM_E#IjD_@cE$ID-dhUc{Y{BRIa*#iY&?@AMAPb z52T4iySjoJ{bD{`JVr1(H|MZCLTTWwE;u7;P4`E^z_JD|eX2Cxy{)R{kZ|Ek$xfaP z$G0|)wWh4%n;5-Vc&9dXKTAh!Sf_A_Nom2#;{a!8PJ+uK_BDQU5q)(^Bg2$3K_hUx;S<6kAT{kyJybpP`aE;1c$DE zSGnw-isb6yf;`p{L>3m4T5xowQ+H7PC2*X;=%rZrg-!DOZmT*7WPg>q&<=xhPy3ipsQ}`h*F3s@Ur?ZIH5`*0 zAD@ex!e>HUtbe|rcy{*vVdf6(SbZkN1z)Des4b^Tr^&|E8k}p@HU9oB_>E*F`P1IQ*9Yn;E4LT%gfTQ& z*eSEIUvKPy3V(Fy)p}7j)g6oyvyp8kdutJ>s#U3dI7Dgy;`+BC=U$FqiV1-@gW&sP zv@vau?r74ZK(+@y`#bx_;60E!-9>W*svF5W9c#0;15nqz^~v^>&oY1_OyHfL-Yd}8 z$S&$Q^nurIO{-9#bl&`r>{tlQx9nh8sN)|%GTq+V`g1=+ygoNK=P#Qq;A!;Wg!{o{ z=^Ad)Bg`{n=3rPzeTw}QOafHr0);d{@rh&@ z$;NSc-6k>1Vc@KlK0%Kh5s&+y0pnc&@boyQyqsKNBgL3V4UE9j-b+gM02KuLI#zm* oOZ)l@4K@}Fitq#6^5V6`k%!=Jp1NuPH;tG(G_lDp92mM3Ixc~qF literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-divide-zero-fail.png b/docs/get-started/media/vs-2026/calculator-divide-zero-fail.png new file mode 100644 index 0000000000000000000000000000000000000000..328fe304fa54717450fcccfdf1252f7d7b32399c GIT binary patch literal 11166 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 literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-five-plus-five.png b/docs/get-started/media/vs-2026/calculator-five-plus-five.png new file mode 100644 index 0000000000000000000000000000000000000000..a06f85c40e04cec44ff618bae82e79fa17dd0da1 GIT binary patch literal 11637 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 literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-hello-world-console.png b/docs/get-started/media/vs-2026/calculator-hello-world-console.png new file mode 100644 index 0000000000000000000000000000000000000000..3248255fa596d30e029cfd5c1414b46bba76adeb GIT binary patch literal 16110 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 MQI`H9W%BfY0c))`EdT%j literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-hover-tooltip.png b/docs/get-started/media/vs-2026/calculator-hover-tooltip.png new file mode 100644 index 0000000000000000000000000000000000000000..7f65a54b48fdc09f1122418f2a5d98bf7cea1c25 GIT binary patch literal 24295 zcmaI81yo!?*DctDCcvDcI~szxsCWDBZ`4Whz0_IFvP{6@*ohZ5eS4L`1}!Y<=bBf z0r2OAt(ckv2!z@4@DC-59+L>T_zWg4E&Ocj@!L0iG|zji3PGTEAaUqNMVG{#Sy#=G z(L137uCxXDcsB6!036i7Mf+itT#%gohq^Et+5x4ON6>;EUk%zfOj??(4*GS7HDsEf z{)uC=7R?)~YcqRcJ+VpHD}v!6&BOC{6XRI;S3P6z@#Dqi#h$qS^+dMjb!MBsvl4qJ zCn}&XK;LU)>mGUx(j9ySdH9bvr`BqUs+yYP?$qeiRIMa_OBe_(8GbgYjdYuwnu@Oj z>l$N`3D!IB&+SfE^=e^*K;#zY55?_dV{kZIHcHz(1i!GLz|zVJoAyyoX<6C!RK<3o zMpb-#JgJbU<=&R}By4x8LNbO4>3;5HYnxMCta2NL1{&~m40AhJ_&T)DwLOP)XA7-$ z+#aj2P;tygg_-vYUKdnUoc1PgrSQ8Bjf@xq&G2w=a0s{_tpJrP|CRIoc`oN*5a>rw z*F)LrjG#V3^db>sV`EgsI3M^1@>Pn3?r(-?DnQ*w*ZYkI_K!d?#k}-ht@8S(AgG~* zMG%YW7he}_5HFq8AsA%(P0#epH_1mJ-Zw2l4@OGGSQ37)k&Is34}$g(5RFc@2E}rw=B5P=AON8+bw#8 z5!kGhYa|w3o!lHYC3~}V5Y^whgK5GcAt8Rr*OMkG7$m%k9J7OiEF2u8Z!1ti%tAs! zjXOI#O8Lst@$8+cxTgX5JS+s4+lfxT5(Sj^sd!`ZHYBXSP1!C`;)14kP6RBHoTS54 zCGT*jYQ<0=m8R3jnjiLuZ}Uc*BH{ElZ}v z(s9+A;V_wu*L%ZFP$6%s#VJ4O);r*-B&PLwN_|3ORr93Q)}xjelIIj5RN%C-qs5Gs z^2tpL9p|4&ZoSQ9GsmFVJ>JW9^D^+-7taW+}gnO z2AgX6M{K^-6)3yb_gD97&=-w8?*X%NW_HC6M5k&MP1YCtqFTT66<{8uB%bsj-&^?}^SwaYj90sbaAb&((ViUD z^2wx19PC+kt+0af2AK^B2lMochT8euv#OngD|U5uBZ*94VOInh<4YW=#N;IS_%uh- zD%2y9z%bn}4)oOAVwkj&-S>EqLXTglbzH1;;yw-n={j{sGdkGX#&X#tN4N7@%~TJz zwHc2UsBMoGy5HZP%O-Na$3a9hYT)7Euo|@eNZ_(z(rM5%p>k^pLQQ;%n~PwG=SwOY z@62Ws(0=Nx8(#_rhXmn@U-y5XtnH{Jp9LYL&( zUdckezQcV&uFtZYpyp}uYt~$0f7@GO;)Ej(S+w+Edj~tP*)x;XH7ygJ^QaLKMfr)q zN#CbN`I&CvGb0T~gIE?^DtRl#OmbBK1P23{)9i=Qcyojv!D>12yK2rYKQ}kmXj^e_ zrsfzJu!Y6;yw^SQNj56zZCFG^gpZHUS^HJB>v2|H9Ur#9^-h_iqa!#h2iR{9faktF z#+a#bpPOlMm-hSj%GFz)(No;S*dLeWEbQ#;Fugm+Tl#_!?6M*CA3+hxh+T>HOOy(( zC|}C7!G=6^%^BltY85Lh->V7CNaVcxz5uYrHTS_ibEn6#mzUj!*e|H5r~*uX4}*-~MgklE!{(2_ z;oAmTv<1mXb!WKuur3&kc0`h{_$|61KulFjbjT$Dm(8lDKRe2wIn%;%G*S|ZT7Sz! z(W&WF1nlv=+Z%7*_^#f%z7Uz2GDSSr+TLV=ucp5vP}yX5*Y*ofs&tI>5T+;WzK$I# z+fdAKSi30iJ^kBl177LR6!;2NP`M2mo%Iv;7%O-+U(98*D>OWYvcW$yS)6+>Gn81 zy#_0BaV?>`=Vf=MWQ_VxYLGYO#iBo%aZjw>!k@20L-N$r**|~20(W(Eyh~e8@w)3v z;`6${o_93XU)|a1;nx=_<-_BUgmX|lGG#X%NR5vtbQn)-{!;c*^K+W^Sdmtp#W)jH z2N5r9BZ69%j*d?KOChA;VySMwK|yPQ6}B<(1RbxXwKX@H)pp@eUS1wv4AmG$ zzi4_!mLuH=+YF!5#RjF4gb9BKc6Yam4qO;I?|IFLEdU&|O+L@AR=fdX0&oxoG0BHw z(S#sz=O_I0oS78ET#ug+#LJv{XezKrhB1I}-2BG*h;Z=;U@DIqcR;WK2kU1rPApRX z-<6e|&Ws?C6v`pkn-hM02EVx|sj)zb-T-H4jQ(PPzadk|(zX}Qpu1+?Gfu&odRWkk< z1fwxBGCGod3P6y%zI3hqAtYwq=YuwL^h9pfT zKu7W#igtQ$n&H>(cytz(}OJ z_3fe?$vB zjnQZ9vF__UX+*%MPoL)C=d&ist|GKr6gWmECS=^UA0++I4#8{KsBfRd<9L^(a-h7G zl#=QJj%ZN%9^33)Z>I~6g?b$@<6OSD$>+FRJx z*7geq9zu))C)bIW?qmIP5QwA+s94WRG1Jh$fL=lES)V8gC4U->?xv?a+It^0mR#>q z*fR6xv1$9u5d3+U<=~v09N-8s6JnsJ-v*{@{HAt1{FcwS_7%3==@>zTa!ei%6$A2Q zm!42tp?zSPV=a6s`)69ox2K2drC#mTxLXdaGQGcWkAP49+g#cX#~HE|g%WO~=8fei z^#>y)V>2>=;gqdJ7*nWk&3ld`9{Dw>d981)ZhzCF%qQay-w9B2Joc)bb;GnfSrim9 z`-{%@q><#6;vSn!*pz2xH_6hKG;8L9n;+(%1s4`hPN%b-$$g#; z{pQ|lc?nrFe<>+@{?0rfLIbp-AU5<38O`v5oYnlgH-XQm%^V@p@%SCYaDhExSEMUtC`w{}%I>ksvhsNe~(G zxB2M3puD^H8m3q=Wxk1W=eby9kqG@GNjAN|-*KsBXm*#dU%j$DS`l|p5|0|su!HG~ z(}oqOb;irj&D2<_{`Sw8JdLtnvr8zS9~zxkjOs(zuv!U`WX2jUr=n7oa*5J$JYJGr zt&8Oe^0`9(v0K30;$paN37>W*vaCC0*GEisa>#1->k=25Nz~NTU}9qOV&Nj7i;Iiq zI$LR+O0t&Io=;PjIm{9z2lX5afw@)$3rL-oQ(mv?yp)8@HnvDQCGV6>6~u(bF*?VP0-mo)t#1&#mie2cbnQD>-uaS$=)U#!rh?Wwt!CV&UT;jsn$!F1DAH){ zTCdJ1vD(I^I@MX-7s}xi08@QJV%Hz_Fyf3S#-m1iRhg1&eG%; z!mbX;`iBx8bTg-XLlquU?h2Gm4kZbe{Q4U0PGLo)<5LHFRbDp2z139?gYDGUlQyU^ zA623^Vvq$t@r?5?lfGqMEcjquoo-WG#EFZGL+TIyJ|pwc-E-?awsp+K>AE`0=VXV`)hh+Pl=sESQxaN%vr?)8Qv(@RJ*<1 zZ+^taYGhFhuUZ6_-KIb8{)|oaVf!fLOcYN_poB|WzE0_7SjPq1!d?;D*<#UITl!VuRF~ZW^bx=(ceZEMsIyJ0+3kS!-IdA zHI9>jjLd64S#X}$7>rz!P?0@4l2Eojk1y^olvIwPqug?YM;9fxJpPusskcR#dq?SJ z_mt)KBr`LU)^lii;Qg>&Y$nI8=Xu+$|I=B16*r?b5~lFmxjsHk=+O2Tjk=t#G)yMFU z@{V-e)l0!^2})N_)+<)5gtW>UPG|>HEh|*87+wssGM;WrH?)KIw+q=F{MRmj6Bf(H z*hSO_tQddTa)A3WhH;8Mm_DyKGT$uYDn^yA033xa2`@gX|KD>>?tKk{Mli&NzZMq(QGj9O7AJ1PN|ounHd^33sEcf;JC*8 zTuC~NN(uiB?ft28t($zQ#b(G*95j4(PC~^?K`~xlJwDC4LqL`zAJ~wzw0sgKc$DtF z4;Va0Xn4wao1o>zkRD70VUE<8)1lSY2Kla`Z4Eu})FK|$H7e~!_jqp2^xL0X6Yqhy@+wNY!WU5WHD8I#b zG;avB6Yz1R;h^++Nx+%`FciVog}YX(=}N1)dbMj7fK2pub+NLWfS9E=wm#1LsSM5QteYx?dM;K?l1PC6gMz$51ob&#YaF}>=r`o2~@n+%?C4Q@)GXZ z%#t#C+2Z7F1wKDZ9cZM%K>&oKN8`Qsnb>B3wIKW|l{VK$#`JuU{STVIvH!Q|BpdMNk0!VYQfw%|~5R|Y)Gep>5D{=>-)axeSC8+~$R-{!^V zzMsgACtO`x82emm*ge<2+OHkL+`-`5pS*X|kJwataVn%09&P*>hzIp_Q+VaqJfl8R zef0IG>QSy`iWsTn?4t~VK9Y@IEywDoI_(0Nmgg22M)~`rz;ZR&K!z% z!PBar2~*a=L$rop{FY;&Qr3y?>P(Gxwp6#zDZASQDuWn}zumP4`rM#ZY(7Ha`i8$r z-bZT9H=*YN z8i|MYMD-A$-QT)vKkz37!>~1REZ6bNzTvte!U}d{8*+UAHSO=9fm14RA~C)o>@|Ot zblAu&i`F1O7`6Cj!!ETxF<=9hmmyn{dhkj9H8!^EcW5U`aaDN1W28AM&~|kHkHa*+ zm~I@rgCHUVA=VKscbNYZh&p#D>87q&?Nib-)Xq6BgWZ$03^%RynQHZ-?N`9pHmZB@ zA*E^zI4WIuO#wED7u{OrIlZ#t9nP52cQlNy-Z$kRq&L-RdZb4_-#3v$pA!HE;-x>{ zjh&~#!wu?oG)b;;sIkw_{OB`v6ZxGHJSW z2wF>!uH}R~;18x6G`X+?4S-C2?*3`hm>sk&ov!l7g6kN!(Jda^T6A>2EsIyb5di_a&C8{*#D^OoW8JpfT6#=t6JZf3 zg*`%yf#y|!tMyv`%ZHmeCS%ui?0D-3L6o7hJ~b40y3B;Y5#KCo?_y;_Of1zM7u!cvAem#Bok^|evdKw`~ zxvze~P7j~|d{b@tk9}1c{*M>{Xy7RjApnZ0&p)>uRQ}H=1H8C*+Q6KFKvw?~PobJ9 zP7vFZVWMDI=$<_?VI~B0%m$O=y=I072Dd(XZ&xk2Q&}vdVONSpbUA*Wt3*xNzi%@gR3r%W zYy%|4Mp_tBN95n~Bplnc5-a926s`u{g-K1F+Vt~`-Fr&hf?z3>IyLrj{#O_T-N6>a z6`y0~rrlE#cep4V``uM=LZ9{!yiqPL^Z8PtS<|$Q`0PN9gDrP^N=d(6{3Zq_;1#QGLf5V#Q8O^<7ng?y#`^uiw2{o@!)Jj)o3p}$K(yJ!?^|ybi-O=-zU$-rI_Z0*Cf|;S zSWZ&%|5l7!eV_e6H(fdWrxpkhdats|{bxk4t9r2Kac~h&h8}YU34i){twjnyx+!c4 z>qo9AdI_6Z&&Phurye@bU61AQLU9n;+|r>)+v}5o)~-F@8VI*veYvqWaa4MZLHhB; zqPzbY&~-`uz}wo%@Q)^~w{PA=L(AYUn$f>YZ~cOxLgQXK^UJ{*A5p^BXVbN}(>;1( zKO)E-R~4M=G8)>62G5GjwYRs~`~o^oE8f>04=V57s$=tn?2zlUbRJikW^9ME^ppuo z8lNGZavCTNmKwEha=War+CE@a6uY%&0X|BrTh%)QpcBlvxF?WWhZ+X(k_bf?6%A{G zlM3-nU*M0Q6!d$`v!t{0l}9*me)hxs1_ZQ+S09{~vfa3j0Vg*bA%ZG;-CiG4Afi_A z$s;WGR7xGY!abC|IJ{k@O9g9-?z%ts7bf%2Ia3W@(%&2x=}jFEDl%bXC(XcG*XdQn zvBQ`1|03+;Zj5{@p>X35R7pR&tGC+uRaD8~h1$>+X7fm{C|y!=5a@mT)L<73F*M2eA5}VUK2KpS;50u3pzz zx#z82HtYA2KwepyD&^a?s1GfV|I<*gT$3jdGy#Ej{V&h9{rcMYI2qku>y=ppQ-20P zUM$+#1HPH20J0-c>;DaR|ND?h`uZOhwYU63g?MiPSUdxEu~gbHESX3&ClwFGE^aPW z1?r)T$z5l^h^hPOm#+2VF3K9&i~V1b5&rU#!x~*Y>^xJy-c5gZpNQOn*anDnJRGKS zvG24Euc1dd-u-|obo1!FKYr&7YkVwoxM)=MXyCWNbQ@_Y%-HJfNI824%;3c^`|=6$ zgM<=?^%G_Zl&z696Z`-XVRC(77#pvoUO_nV);p{*wB%?hqKW*ap(~_4>5n{RN~(AB zb!)orku19UNB;iPH0~9HX|&AP2ESiCYXZ*T)WTT1#=QqxcpPP|NxI*2U$x)rtRE8H z9X>;SbH1%7)I05>==7nQ1bcKP3wdf2cH-^*6+n0MV9)o<`D`*wq#{r#2H%>M)cEBg zPpE*sWb^;z0+4RL<4s}2XFPj;W1K;T+u|E4g-H!gn~LwL+TO|)UEm_W-sM*~JDT`i z0)-XR9F8x40*4H1dWNRy>d^vR4bD4OyykJ0)ff;E@WykXIU-lKh(RvxY{wPbX2o>< zMt!E|2`~aU+o2o2GZ!X;-Zwalv0^t$$LgI4AJ^)NU%r&sI^XVmA2li!)w6;cZf1TD zCN{O<0lRe-lSECa`}kO5W)>b@>E<8B>;0oVo5O>1A7OU|9`$GAhgJOC#jDAsyvRFe@T|h|3}OHtiGdZ zPOjhi0T1xHBM-sT)Zy*#f2CG8`vyT(h|FW3758zwnu97H=Enb66+=t3znph?XB8jPRZJlrY?h&OuFK%|6Xmmugo;dbcYp}@>^J- zQ6kfp{?52NH86}`4C#SHGJu(#;u{VYt$QYFtES&{=0jrqN?lv{GX@6Hj?DYwi6ma> zyJGoOUB0{;RhbpN#7D$Wu`<3kyr6DQh%o;VQC44?l2Im(g|1K@@^iZGgks&(?%6X= z>QSdZjSt}b$M8P`!bY!LhqW{a11^o6mc=^j#Mh0bHL~5i+pd7#3PlC?=4vDMet7xI za75@-K#{@O!|ruA2|P5dlr?-D!)yOr44RhD0rkoOT=22N|GrN)=6#p1|}xp!aYW51vGm%pQRl@6sGsxavfa;X=e zyHukLghYC(@3{_qW{odECVWwiiRli};O2CFKNxpZ&qnGwbaDcX?Q$t1-LfLT+&bd>@TRk|?1 zuP|M4jlf3-tS>L~UZyW1UX;M%e0+=~XL!Bk{b#?(sHo2Dg}Xr#P4Th3M@w+SDUHHd zs{~u1zA0(|K3_fHXfUozx#hpv7v~?ugE0a?277H>--sS7^>FI$rB7Md0hI?T2O0r* z`u~B%0%sQ9e=G$G9=36Ns5|gf3KvofIIrA2pC8;}-=Y)1qMU9cHHD^ir=h|7&==KL z1dOVw$vy1dd~ob9>xVd;wd0NMGxlnK8&ULhs@mi zO-`#%9%|)Jm8}b7o`tLxJ`~Q1#f)WX|Ma^tB5aSR# zESZ%jbt>;3jvCN!cB;3b)(m}NjwH&8Xo%G|J$f>7z$3zwq$D_TG@8D)X_)Nl69yJY zxhh9h)?lPH!y4VV>XiE}FoCd=AD2OvAw-gzw3h770u0F(BQf*haDvsm#L5Ys!-3Yj zyP&9$u}}6Egi%DprV=XM29q-eDiJC&G5o7mGJ;Ny)-wT|keC2d=)zcjXM3zy0&)eX z*>$*?a#N+*wU^qZFp{*!>m(c3Kt6N2_82jwdbpQtr%PO#lpJ z&0xu8a5nh!(br$@w)zj{am?czz2l(u>`td`fG&;$ojk!%+9EqaP;pT`(L{1IK$(I%hF_Pqus_qt4 zA|hEmZM!a-;`maqBG4Q8BjjnL#EXxl!ZX|p>j_1|mygZYS~`7ytR%z}pK7dKG|?U= zm_ATC5~HeyyVE!`qt_d>K}N1k$rTAlFgQSAKv{ZSE@8X4oy$MJyu*L1OuTY@=^^Ol zo~Z%V|6TWje)#U<+E)AzmuZLEpP0u{zOCkI;uYq{3OLGdxN~4ZfDDuF;X2nx*Pmnb zm0m$WmU{CgUa&%u=*E}zWmmF&!(>`t9ivD{%O}&gD~0oyfhoi_88B)+$J7V zRR>KMew(!;H!vNfQQYTh^JRJPLCr1$pLFt_RO3#-pPWB_DM#B0I*gqXVq#*Q#iI}T zb)aQ7t@;g8;wB@+lj+eSGcyLf=ZIxLZ#lN{uQC)goU>ad&*ms9k^qygj+*pA(s(=@ zdQmhJVz#g9ll~r;CJ-9rf4tR1@bg~{zH5BB=>lsb_8pcbV~FCPisRG9vDnIOP0`q_ zN+9&`L5ksAw^=@fymv9<#+u4B+|`AlUi{6;(@9Ghkz?!h%{Ru^Ncy_LWHuHUj?BkA?6t z-9dra_NH(6g++-tn!^@2`t$(1%@pQ)T_DjxH%PA~Ft=8{*|-X?FFRSzU|r|Y;~fur zn>q8%$LRH2DlL=c3f9pwCxu@Ujj7`WJWkoeAu()ClkXbUhND7Fv6nrpPqq)O+IO|J z7w%cLc#B4AHb@ep{YJ+C43gmF98;dvG)3b?2+g;&zh;84a(W#Krc3C_fauz+gIV)#%7AS6*7-n(Na}bt|%nCuEi}ZEX>Sk?otDKyJXugptl1O)r|5R_MiPC zWS7~k$3eldJpRqtXucvn11*<6??oP4-~O8CY+id8-+yvokQn7YzCM_%fRb2?mVBf2wQ(4YQT2+-_p!*z2Ft2Z2$NpiaPr2+xBs()3CQCQhK=2Ix$2J z`}#n#NNp`Ixv}Ze4T`rM%`97iXejAg;R`^GE2*g9(6`>uc>wMWQ&N5x-If{He&a-b zkfSMC-6GNr>&_Mho5R@Z_DJb% zu6wI~cX7o4G2IxmkBA$n2l1j{Z`8Pm>ETBcCXl=On53J*wwjN(byz6Xq(zb zXlRKwI5Lz;CL$cX8|qn-dEDm>WYd`rJljq)TZ}HN#R5)lg#kQ>vDJ#R$tjW??si}7 z4uzc#$@<^b?s9D+Kic^APc%409C+0R+6HS9iN?vv`L;X`u^_itLH#`5;To}dbvjo6 zg4xf{axUI7Ew!f=JyNGMh&F)K-9vJxk+4UO#pomUHQq~l?M8;P=h)cPR5Srl^)xQM zGnI(4xH5GmOZ20~mijuqoz`>x&<(FDvTSi1>C|+co&EYjF!t!~{r=!08B`=xFem^U z^oP|n2;aTrs_5P}&HSn&ZzySV-^Fg8;NJ7oU3SV$y{m!+wu(KTus9h$nkOR2eQ=y( zJ&;}Z1S>)6I{J=Tw{@E_M*t>>$zp?DtLwv%|6GH|;pzb^eGm8#k)>yhrF0RJ+)4wY1TI6!(b{ljm_@bjatLk6UVk z*T&dDg2v{#ix44~$np)FaWeyFt}8m7s9Uh3Ik!TNCy1BE_3}~Y^{7pUsH|JQPNx2k#O950{U{(HNAKKS#|ZsRXv}N6MRt3adm{Y4Zc(uw zYK3~3beAwH}2PSoaku}Y~uoN`~8bJe?sGY{Q@|En@!c*$-` z)>F+R1919@Bel__Mq7iw2VpYTZz{70NsvtT7s2T|8Q>p}LCm?)?Lko3eR18>r7a13jH6T!4%nuNfMta173b?Me`3D0_rS?Q4G zXYRO2M7=f}Bg2@G_^IWwq1s24igwq)2r(Ul{M&ov#s@93kY z;TyVV=nvfl-a}4-I=ka zPY-ehlgbiYYZ%t2MY8|AC*E8<3YA{jiT3R(m;H3?(U}q$vsUGH8^C-`Kl$!7Oab4K zl5_;(e4<5oN>0F9A=zYxU1qcCI_7-lqaDRhMV%w)^zUu#?Rd86HKH zq*+3hnK|f((r2w^dJwN%8H69^x%f9Ms1-dc_|&-rk4{>TIIjM^x09DZ+@uCIjsAQ> zEt`Xr-MgVm{7_Q$FV@FU5rN6pg5yH1+A6133$^=tv&3qz=Nh|rA;iv{N-;V{$>mK@ zCD*^mRmYkJ7HuxtpH2|PMlS`pKrIfCl=!vsaHCFIR4?jw_{qa(02;QM(kz5QU5TI>TeC zW93OREQ+3ve|UlYwD+y!>Qy~^ct8MdWF{Y()hb#(QI2bMoH(6;f(aLgeMar@cArl5 zpx1@i>IWtoHn*)&ByC-{d~`Hl@0I(Hm>G-o^e7=Rj1Xcv>ih9<%5j9r5n5=ijco3Z zR(Fv;eSDK!nvvsL`AlbcK!AkTP0>#Qr#nf5-1;x4#ZR)sny=@pf4%M{iWCBY-Uf%9 zGI5a##XGG2{XVxd(17XGIPYq3G!lPGaKEpy#8(r`Kd}Ox996tJ98yozy=`@>_4K9w&>*gvM89-RI;x@g$#pd3r_;XpQ5Xh>WHen+sY(iQo!(Rfd^muqNXN^rDdE53 zGs$GbUFIq}g)nn_P^m#ii8XZiZaM$*wZhvH%kMYCIx+X=Ej>wziCbG! zwz2tz$Nrd>08J8eM?DL&i;p~MdTieMlr8X@z9RnXX&hm#&67eE##uA@p=ZsIoNgna zYR6(JL5Z(3r3U-O`POJxJSqsrUtq_uF5Xv~4FpEhb$%$juXIJxuclx=qnpT}#Jn1&6ER;pH)^9tjvpf=2w$_orb}(O-nx1g=J3obsS6%?U&Zac(~aF+T(1 zh|waA9BYhfh@!lccGdo|^-qSX@Gg1&QAog8c$nQBz-3MJEG+UlZ;N}US5wYnNq)&% z_Z|aDqEoci_)>)^pf6546D83}+|GNNJ^x552vrxz0R}iI>Q#HZS58r=G9PJSt)Mz> zeo?7oY;tmP3`ED;XR7l1|AW;}?^V9BdYBK8H|;|fF;L1`dV$!kEm+oGf&Iaod2;-7 z7l>OKbz7Wd3ERl$ajcqAKpa- zY<$|futD$9tmu>Je=;cXf9Pf0fL@lc{Hf-kgl&W4*Elj|k7HJ;AxgjhPqK4Eok6L2 zwFo?}>kS36aW`Y^p|}`Wyl=B^ zaHyFR_g#hOpDQ`sPAf}x8TH2T#-lm-RD4Gic9HRtN!H0Q6bg#Srx5%M7jKzPOw70m zhtG6Y$AlX8X=>Yq1XjqquEih5LF?7p73c8F@&Bs~wSIpS^+~_RZo*0@&uHsNGe*1k zY|DIJJBGluJ&V#mZ_-;_p*C<^X;h+dV-+DAjp!_bWGgvZDokw`%Mp25=UrizKa zERD@IE=BuYmW{nG_HnGK%fQFR`3e|u7lwSXVOo$JA>T7XT5&Tos!ffy**pHm0V!V0GPkypGhhC% z_x%VyPXB;_yuc;YkeI5=YfA83SA}@^xnm@OCYAk<>8r2ZmBbQ(CzRm4d4fi&GR;*N zaNej1RO`Q)K*ub0^&5L_?@K;R@Jog@OG>R^JBCaK$t!azS87)(BMV5iJtttIu9oWL z_pS4k_D^oO<{^=?j=@)~9OW|MTZE@ZTh2k^gp_%;rMtIWRRn^hyTtJ~*r903lr$VB z(wk51&#;6xWHY#j_eKw@ePI+AWfE&FLSJKTuw`^FKGl^WQYy^j$pJb&;Q~W1UtDhk zHUR0IEd_UBc%>cWv5$=g?;(jUmgygNxbb0Ya>>af_+TqtJ z2~F(1s4NoKR__hqm|LEE@kO}T)e(BATt*=_|M3eBT*_JIAU3O06kP;Dclc{|ZOY+( zfMCe3XL6Gk+Km8`s)mMsF0)}p(v$8#;EGZ69IYy=LR-*()$pO;ze~9NA(PbYKvE1o zws;b?AqAL7g=jl@%vpAB^w`CVjOoQiS6J${q^2l}4&f*5$!O~5(kF-6pQKUJ7ZX26 z2rcm>PKWgz|AHiE|fG4g|e81+*u0irkB__O&>u{+)*g0_-2VJN5_Si`9)wDTUpSFMSBC}Q`GHISB*{()xoK?s zk()T6N`_t@F#(#S!&MEASqOgc$%87HM7SoDgyw`3{QL)+<%JpYjI8v%!EKH}%5omuUeb&{D2$0E^xO$C_ z2B8qf#tst|i<~)hqwkbpzEyhu^#87HGTG#Et1d)$Y9NSPJ#)?%i%^rq zerDr5#e~5WU9=r`33=$qMhN@TMS0(b&*?8o3r8(__B(_G`9cln$KzCoNLf2kdc6KF z*C1Z^nP{8)oQ{YLwWVm>ufNVFnawjx{VLL-LT%7ceARO)47p!ecjvdck-?4nAHB3< zME3TV4`7KfQ6a*WIJ?ne9^_W|&f=!eP*Y`64e#8yLBXma8?H;E$L@oD^8aid1Z$b3 zvS_?wRk-HZT2H-lI3I9H8ZmilIMm6#M%ik&RcV;<5ETBo17{nPv5^^4yCqVQCL-|Z zj5WO%u9T$+O}FZZ>($To`bF+`bpSl-+4=oE9QA2BBA~-8HNWU{i`H$lvmH_wHQ3mvB&ONd z?+lpNu1o(T)jIPsTW+(u<3`iBm!(Wa0MfABsB|YR7|>~(XqS!dPvY3eqE8|HjfzAY z_*{PlnFE}P#yR+UTE>5A_Y8VUAMlvg%WScs%C}+35Zt?A_aZcSv@EFF^jpp~8iB0D zi^Ec{-s9IC8$uK5t)owai~}EJcOd!2>KJ!Yke^AC;T6m;$uU{b)$M-f_8C5g){gyZ ziu#?n(0c$j1Gz zB)~=k_ROlE7lv^z1@mt)u}ANnYQMhOE55CRYR;w}cq z+~&_6pI=-w?&pqiY27wDn9#D%K3W+7C!i7&dX1{;t4CsK&jDdBk+Ec8`6;40a= zx8C|75UKUU?*a%R_+pu}3Z2AE>&{dG<=pA#Ji~6uLNP`ldX2zsHZHa+Lqfvq9NG7$ zDqiI4sd`tU28CXYtLt8Q6)A$-!f;83;^Oz$F{mVn0GF~1BBresK-Z3r#@jBmVbLX3 z?&}Lj&+6TKMpLC$^}1|3?FL=qn%QaO8b$E>++_dOWxunKT4ED9zf;(M7j%UFYc-nV z8geH?h}Bi>Xf3GzXI(*mg5&ZD6Jg(A6A*T-*6sy!N^iR9_KH70XN+KSC?PwRzA+7- z4v}-Dx4CSMLR(hrQ46!KOGE=dqrF56WuL6ezl=&>eC-g5hNbx-?i*!#qA}h z-8~<(^v%@xGW#ZcrIIctKuw{C;afBjS)>lTG=)aBbOz4qhi=&;2qWNbp)C*g;GsOQM|oPQQbBbVTyUo2fPKwojbLrXevBHL0P+&f zBAF3)Iv6AvT~HVA$gt&SNb*CpW9-L^zMin@D-*GyH*D|aHRXGy@+gjbvUWEBjazY_ ztnf^1^jb9LA$klXq*x+C2qEf|>H_cqwf+4^x;3xQxx##01_P?KY@exrY5$i-v(#Ft z+v0+K4T+DO(hUoE#qda#yBpzHudIzhWLg@9E8-nXRBn%nK`NZ~?e;kyBhivDkahEs zmDsG-s1jraM27$6;_RJ)fOMWefas4ocE16na0>x%tsNRDV4=Tmv@z+)<*`b)7%u{T z^+2m`sr$)^Hxhpui`@(af(yW}PJlNeKl@|C7k%*`#DCzO{e(J^=v5%B0lZ#d;_7+{ z=rzC%0t*WZhwP zNt64tszwY#b{gPk3T);Zl$Di%*VaI9zh?F1^Va-JW^9j3!+`Gs-qLCD>n+f zZ@9I+4biF{0e(CnM#uAV@$;>X-V+cW1~58rZQwn>mCa4psjM#VLAZIzFE&tl_=}}~SdDgZgQoweU5u=Roe9WiS}A!veaW-SEu|=L zzo!X10GWU-DW43KxR@eFRga3cx1{a<~|32N*wT zdvG(8wIzi;kW>Es$<5hJ_H$5Dw7l+!#X*P34E*{>tV?4!omkD4l)}`+HgN)>wN(e*mISK?r`d(4XLY zf0;h>sTN4_lwHSp5lbDzmPT#dp*?Z*-bx_#5W1$BUEh!O%D3E(66McQEVnkydHJX6 zJ4=fHtB&&yYpQA2eXxMY3rLYFAVpCrkzNJGAWcMi2kA{g={2At#TcserXV7Q79b!} z6_74X2-16p7(#E^6MVmO&c4px`6pMB$y#gHGv!$`zx(E~-m;5yi`BBVZb`1Y=2d7h zd(*w#11?1VflO9bju^bjs(?R6w*SZ`ju*;8iG4XETfqkDUyV1jEMDG|)jXJu_OhD) z{NY7RicR+{<##>ox6saiP$M$hn3jh>V;az2ayb~zQxJ}X>oX@2x%>Up)f={DMorUC z1u6-9$j;KFh)3vYlVtCF5Y?&2j_xL@jex2!+CJ42yG1w%k0C~@RIX&P%b-Va+tIFA zhFGs12cvP_efPZ4;^Km1+;p}6LSeOH&T(KB{?U@^)7JL8#fM)qnFJ@>^V&Ju_+Ayr zZ>no%>Kd`kbs0+CEU;*8KU?l$Js|KI4_GW8(L-iLb&R}P^N?yw6vm=fyhs5afb{DIw-X`+g z=5J_<7+V|Luic0auT<`wkz=O8uI=B?Z_)l8vn#~jl9{3?G9yX{uBrUWvDDR#8DU?$ zqoznMF)?bxuuHqUmAgV*eG3fy>NIAo?vpk=(^0v5449pBH_jVZg$!!R-{vm1e{cW+U+xb8c1{U#RM3dPjX`wucnlNB;{Y}Jatzj zHNA%8a%x{L21>qA4*3c5yp}&dwK)|;AhC{^mHv4NX4 zDN?n>qI7rDK$l-zx0yJh z9|ce(12iY&Vt@T7MnUft8@JGc1SVnjnrS{;`{W#6iI()yyQbu76s2?IsS>?;r|BVr zKe@gu9$z?q|28=zgM*%adU{$3hAlFe3*0Sv^+u)oUpy4>DxDw406%>;h~Y{bhg}sF z#FJBNo%kE{+-k!sGe6Y>gtyt`OQAmMJIAinuZY?n8*UO+t>Pp(QY8EZ!B@KxdOeQix7{bxY6?}*v^O<1vPy7qSAU)_Y zwd9aTzl(?y!^d~Y%yZc4Lu2^AajMQBpD}OoHQ^jo| z&bH7q8|_O2Td3fB#LN-$U=|)^H%2Vv&UUzE!IK>@P``{B&mC)6mw|-%_WF`Ai;XUG zO2|zvL{%i>H$bu=92db12JV0j;=~mqc2Zq>u9ObNJEz02b@B z_WHUOgyRh9M71PiqEDX|ry9e7>Zt;a7V+^Ce2YXP5eNhl*@d=g0iHzm>&uXkXUX%? zBp#nL+^=5PE^x zG?~PDUA1G4kNvG+Mng$;laU(2q}~I(lx{#E$;e3lq%VH~vE_TV9-~Iq&mmI)I|RhH z$bT62Yu5~_@kQ5&&tCamEVda}SM74bu!)?E6Rj@I19rD%$5_8E)ka9?ka zGbm+A`Q(C2YIu=iFK<$K{&@&H_tKMp#b|5$_I;#lz>HNyG9S@u21G_UYt=D$l&AYG z4Y2Yv)AI6UhjH9@%RUGt!Z~inL`2vJW{3g}inDwF_cirWKzi+$9_6 z%KOxoC39>k4*1Tl6vraFci3y6Cl1*OO(LGdPkG!~V0>!$C`|px=Q-da%L>wEtr02;5^K4`=>8CM~0OYRb=TlQ2 zV;Bb=?9+^hOxokwgB=dZW$m|~D~UbEm_cqc@4n!wK^TdP6u!dd65o@GYfY4-N` z6}E~t(U#NDKbKE{o0}{H3@?z&E&orKsE{271T7`iZZi^wq}XFjZ*?J3SqL+6Cd$kH zQQIKn;R*kC+UcF!_qIRtFHO*wj3tOnPuUbl!i{lCux*+LLd7)Tke=jMUy~$!@=?=K zG9Z0xO0Zti#S4je{hAa0I?tG@qyI8OwOr$C_)o$%jptN|JCuY?-WJn+qf$l!c0bhA zTIU$u7Zf%W#s19bNH7%|dma&$>B_>QAPieW5bJBJX`N?k2$17=yEZ;)Zl=xq^7IuV z=>ih9H>=JHCr~&%l^v?h39xm4PfpvI&R*Sep(NdNn!JB#a1veIc`aMG_7^%_RQu9G zQDc54;%>&H@U}q;1KemD>@zhv^PX9snD6wTxH}>1(E|q^%NK>96Wx}>0}9oOl%4P+ z`GZxO!>kM?YAwaW-^#GJM_LY9M1!~$*8NFq#f$Rwy2`Nf=RsBC)x>@{ZbbQDcw}T` z=i-&UPoRz^p}FsZMe0i)-hsWUUZEO8kymR4-MraAtAxcS`C)|uC9eArHnl82Bt0O` z4{>A9?=S)~nYh=hCC)|ckud4( zusGP!;mJPsIF_=kIoP|V?S1DC-PTUH6D>Hqz#CY;-bV2+=Pe|=R8!%PoZY&mkQ;3xoGm()h5N_EPMYbz%GRmPw(B!drw55THq__5@KgfCotSEp2t%CY<)C=^UQ zkf#iI_*h9R0f-4Siusgf90Kl1Sk@|LQH246H4hY)MkRkj26#k_`w1 z(tG!>l z)9tO>9u87IQa#b*^{U;m=oBovk+ZIwM;<{NrQbY*+eG56o^=#@HuX z*8|PeLQVf6jlwYAvsh@Ufs;`CoQebaWDwRciyDna6*)O8Lah{66Tz4|) zM@0G(%o$f0>ku;;lo86qh7xMWi&_y*fYjvCVyl z(7Vb{G)YN)NrIRK{qj2zDb4zJezUAEId>;VC2owGTasS)utmtckFVwCZM+FH!5Q*M1~kW)`?-JP&gNVwy};> zDF`CWcgK=ZP5TZR@|ZH|M5+n9?nTH^&a(|ZG%=R!-HMWxKiQePY$9+CI!=ll!kh%A zHRzO0|HvU7Hs0O_t0ttviJ1*G$%%A|Qz_||71 zO}`ax+4ln$?=}q9RU32LB~AaZ;eG^QMt3kzByYIgns`^&W3MZ<`ko2`djEz$BUxrX?&R4M_60#f`wpV$o^FMxnbOl+2 z>L*ar-_UwjwPMu7CZxn4xMSb;$aNO=2$?uMGCnr1B75HD@lTO~o8&GHT9W0C>-CN< zs9(;OdqdUPfd~DDigmYPo>QHEeQ;9_YfYo&FkTtA`qJ5cYk%*rZbq9ig$b0KqTAld z?#|3=KBhMh*2vHrs+r5U2Z=L9&(AV?xoKf!X%qx4D5vuWNHn_D4 z`q-*)-6!qQC4TZdD+X=`W2~&RmLp+n?ddg>5(;US(v40N)6!9LFtHdaThn?eP7zv#m=($u%oAo{2vb90ikb^y?KUmp9o|9#MQCZR&waR zx9&j=&Cm_U-?c$yiFyMW>-OBslvTllj!S(@FJ#Ndx~e^^v;&jWwpI62ZK&mj`rHl) zrnLcSaIaiq#c^)EU-u^TS$H#WNpl@4xg(qeY+2pu?)?Bh8P^%lgU%SC>+io098#N# ztnJQkQJ6V?kq(Y`wvE8O=vy?A^b+?DpQ!v;0Bha~)p)d*=>hAs`9+r;Ag%u?{_*`e zWkyYp3cVF|8$<%8I%#*aGtrqhm_6UO4pCUBgBozg3>yl+#SOSS#9=F2OILeyRD!go zsHv&J+Mih;&4uy(yg>qVeRF)yGSGW)dx>?WGxTMIF6nU7LkFc_P;h8iv{c0+lHTR`7S zNJ81CXDEd|C3QUR=fe!>hu#5yF|!xE&Zn}9`mNDMg1NWe^gxOO%6yA@-emsKE(p7N zjB>sjG>hof*_UtF7`(-+GJMT(Ut^SpOCdcaWhwFvxJk~KeXv}j_DLcRi~*6YB2&A# zij}NPOpy1W_ljbe&*3U7Jm@Jlht?wp-h`WoxGEJs+B@#Ncn&Kh|8%5itId@R!R_Sk zAzv@tWis&b@RO;sb~Ivai=wH2r>L##S#cSgtaaT!9~q9-a_Fnf%B#~0mePOL*)^*x zT)mOqsfzoJVO#ire3!QT6$Bq>YIb#X;bXOnvHWF@AeA|DL?$H_rY^%~p0v|0jV#Lj zPkNi7Fg{C+Ripk13$dHygY^x7rjdiG(2&I2??40_Pa+`6F_+vpYwt?PNd$c-6?9X zp3&eg=-=9i6%~#W7N&*e2eZMJ*-tQh9FA4HTS6((A3EIrnUL#o?`2@+QcDV!q3iCy z3<&$qaAkOG^cybtu9Ya_!O-I3r=cqlzB2@KCMm;$rxZfo!I<{=dcDufKVxoP7+fD$ zjdZdyrq&$qoR8F8f1LQpk1oxWT9ZoD^c#*|r*C#X=HUEuM=)^LEujlSM>7iNIfbXO zbcV#~$<~a#$|MH51Y9BCdYn*G>TN2Cu2<1-Xm4%y{6MnnGBHIu?oM;3=Dzz)e(QG{a8>;}YvUz(;_vjYaj&4mhJ%ym_jTYJ)oo4M zYN5qE`SK$8+a1b4vy}L{BdAeP5u4R6s^jGD-e)UH@@!Sl)e%lYnA6-Yx3{;yr=n79 zR^^TxzlC-&=GGfnFMB?wr%N}692T#V`7lS^3}7SAkUQl%`&~>*^t9|weyCf@!!2zQ z+9#z(f`={-x>*WfRzHvof>3u4LfXgSpG@XH%?|@70+So}(|>r(Ce>|4ntnvfO z@9?u+Z`B{4bc)@<)|L-nc?$9<*9w`~m#H^VCp8`Uh?2t&e+g>?tcxYnEVD8#iPNHR zmPw_OopIKBKVn)yJ)T)BNa)sqRZFN1Xqs;6^)h(=e`sEJ_ILR15F#yi_;Q)S6Oxj( z2F6S)XGp){6rlqFvd*pLfer}?bw2v=#@NxI2T>1>9Xd)m7R~z1V)2-IvEa?vAq;qm zuvu?GG?X$WGtas2iE_qeW*{Bn1O>IF!fB4*l*P5p+2Tge6lo7@` z0megz{`est_%BA#P6Q{~|{uK`|uT58~M1CR3 zVF%JAE+$3*!x$Qko-Dds|2MV2aJgtfg>?Le*U$gwWPdMs_F^c@Ew-@}HyJhM2e2Zg HM=$;hLSK+_ literal 0 HcmV?d00001 diff --git a/docs/get-started/media/vs-2026/calculator-initial-dialog.png b/docs/get-started/media/vs-2026/calculator-initial-dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..ac835a41c1a52c0cc6fb0ad768808885ff79d49f GIT binary patch literal 16538 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

asdcExIwmHsGlmTd0K_A5Z+ z;9y3IPA~<4yr1>sYlIm|+Y(}NJUss95*D#G5aqhE31wwIZEjyMkaco@azz=Y9k-Q! z?}mALIx?oS$F{#_ag|yGBt?5;nYPOATuj!NMn1Y9O7N_} z-XS>n1=oH~uB;5hFL$mm;vUW>^~V#EzrS|g8{u-)n)#4IFBfGmLiYVsrSP>5()bok zaB16EdPra65d<7kzS%UmCR*c3dJbII)PBnK+ERWCC>g?Ht#lJPKG%?~miU^rbb)VT zdv-JdMpbR0vAa{>s&#N&%f=~wfm`WE>$!JyD|=l!afl8xEFdq^YBzB7i90fQ^JI{@ z{Vl8Uw25f6)Pg5@`>*0I*2U4Gabz;kxzEy5MDRl{E4*c~_!uTrso-XYt5vh#8cL1E z3W`b;{a_7Gh^e8YoQ!U~X^8KLlU<(~+9uMNveNo|tZjUTL?&74?o#wWN zE}K{M$kMi3Tv(VB1tf6=@Tev_@XQvSWPgKRB=D6Tl*C?gc1QW%>=}aTcmoHye@M(% z;io{ryL+11=oq_5td1Mnh=!}?7F{LYUxvCC7Hz7X%|55s9jDQ^@Lo z@KkH-?SSNwcSmbprk%DTqIBzY~KBPE!znv$7L5<_*M-u+BTx z~nT9^;n$21GBLi_RVeASFsys6^t=Bjn7`IS7i71c4Q6~7P^SH zUaH8;^mD*hY{b=`py>}5572j2`{{dCUM{`hdd6K2I0Co6;x8<0cXH)SjP|RAR5>gi zhM5&v=61Ax@mJSqei4$07VB|TwyLE{VJ03ofRUiHQIy0V`-Y@$!qBg|$UIYF3r zO{F>Ya=cSsD%)hY61;=q!cWm}koR2fqme|dI9yV&TpfQ{VaqCNFuJk(;$-si$q=`QZNfN7Q=6AC1Y&C5 zkC3wZtC(^x=ty{?YCLq^QU?DKMfqG{7PB5!nUGp@!#77m_2roSBF8EtmjV_Y*)`h!n^Sd(sQ!XF3MKNyDdMKyAcM-KqXk zShT8E$E)r@!ZUeX?f(|Wi~aohaH%g&&E5^QyHDSnzQ^?)u6%Ib`gw>Q z&o6On#du6pXT7YA?(||VX~};~Z5bf;zvaorNb)sq8$GD{WY3-+qS$n7VdgZ;n>Nq$ zZ8~cCuf*%qu6SU5FtK3ST+OOov0=PXoZE|%{C(mB-=p?F=r}g|69^Pw!(UL9$5(Z5{=y9?nXh+Od19`auZKq;1JUorBy9CB6MMo&YT9Hw5j?wQ z%wCFiFMVIwbrNM7`voT!#_-aoGDKoykuPsL#JPLg+VTx_j1hTym=*|~qdQ&6wP$05 ze@>!%m}A!szwpY>$OOUPL&ZO1v`s(O|EvaAv61m&{!NR&8Mab}<`Ovfz3s?~AH2887CJU+vK*G+U zX8(Ai?e?Z2et=mjaU%*ej+3k@H<~9cI5GGGQJ0=?|0o^CJ=JAJo-q-Z;<41b%tzeN zOp(G&T6AkyoO|z34$ZZ3G@zvP`*?c-xP5}ua$z?XiKpOJYvWQ-uRXp;CUs@7XqbH1BS&qmew~vjG28-|=t8S`$)S7_IW-~a3e0npaEe2&`ifJ3_0!TG zZY#rCqBq)#>aaGik*bo0jsAvuWg}fIo9-ySJgeD+XE}ydw`5ckRXcWn| zV|Xt!iG96KbV1vtyN_bo7l;m$qegMIeOlI6=Vx!Do(}#_ax8sSxM*JRn>qc4lf#kpYoQ4mAEL2WTNy`FnRRT3V(?9e^BVv>>lAyri)HqOo|=$Q=PJT!uC}E zk+Uh!H)Xrp!2_`zi5FRJ!peymiyZeu!CK4@IEwX*K0>u-WrdCR_Hc9TB7)BezFA`; zYwkCI)gsyZ;d9+}VH?zucIho$ve=5&#kqfV_7iy_k1;3i_ku$XP7&C{>3U-E;2rN` zvTNP2c|dsa`?R7>Bn1HDglez2i z?QZ^&#)$@dbhD`EQd1MY-E2!ieW^6(C>6=(B}ceo!&+ki`Kq$v9@2R$~+NF2O zBd_6V4B_$65Zk>)b^Wf>9D(NTejeU$*=n(pQkfPQc(N_Z$Du@CMiHl0|OJQ?$o zS=h0pGlnU>`A2%;iqoj8>W0hl81SB945i`yA+QSePGdnX+*EIz{zaT)=!g0RlY_(yXadH60w2<1U zt`$(;c}`WoX;$A{YIc1qdW^rc+>GraP3@MPybWpA;oa|`v|Oy4@Aw(`u(5L%kJ;XS z%(hc?ZZE5+md;8Z0gtjs12ZlC{h!IlK@^XdI4nM`i=*=U(IXsmqSP}hyO|h`*bG+k zR75LZGMU39#iL9d8*{DwDc^kqBI2{pB5Cyd#gc~E9-DhvJ2cN zZ#3d<9jXJlxvRA|dVb{J?^CH_jUAUU*OPd6NflXqEJRUlu@;u^a4T$*rH9iW*OTw= zoxRCDF)q-g_#eo-eX$OI?CN*R5AS00+xTwczt3pQf7}4^IA@pxEsCxTLZP zi={V<|3S}BNcwEN(Mq^h*_p*jIwSOWD?NYx_-qS9&DBz+GIwx~XrX$(lH#sJv_x2c z*>Snu`e8xeF+->i2M@bCWL538HsTX7jW`_~RP?_!<@2m-h0NvO4BV*=d*S9Tnh;7xkG8XzsxF|?SMmLR=5D7y4<@P(B zEW_a0-GDC*8_d{886#wC*qK(HyzktoA`uOP8X2Ublk7M8^ieF_3Pv~nm`({cI~ZoM z3JhSJShAakIE%8B4-4-Rg_pgV9qnamas@8%oSYn}`Q`-AwYyzL61@w=97~@#KZ(j zQKLrwhxl+_hZBGbetVbt=0nQcGGq@a>y@2>jt{hae}1)@Y=O*^+{d&2eB3-dgew`cnYjJx3W~EIfGS`uf32&_ z<;LGrr)A7D!$Vc1qif$yH;Fu?!cm`M`2ud_N23nzqLD1=%B4963qTw?+!(jpn);*6 zomARcP~Q=;P8UlQQ5skobMHo#9r5i&|DA+zU$X-lx4Vz0ez^iLuas>rkT1Oshd$Q# zEqPyIsVDgU9iL2spA0eCeAv|jfW1a7GURO`JUDaIQKvWqyde^$*pBCb|adAJIXX9tD zG)rQ8-q_|@Ai%i*v8D>ho#`_A`uc61VDo7SBBG+nKqRG}*Lin^%%{@Q)df*3z&F2+ zVuffL7|>#SUIDW4|3-D5qBjCXkRK9IT+I3@^yZDYjG5hIkbD9fHb^l&7tM+KUlJ{+ z5YU{Rjt+pbncHZCT4ku8UFVDLf2PGHeE$5+E=GTUKNg-`+<)r--PQuysngozSAzp&=I{5Yu3Pr#A6Bw}(B611}EuD^pO%J^w3CV=jW%$smHuqD}0Cx^jtHAaF zVm|3}rsY?TgIhNs5Fj#ti2vO@ixnX9y1lj4X7v!`N@q`d156H}lf%m=bBl|@$$h04 z?yAYcrWauMgB82FKrR||4yes+nco5Foe&}NfX`(%n-8xJ!J5M5 zLwtPvR{(*Z`S1e?{2M#FyP!D*=EH|zm3x0zdHC?547IG98ZrCr8*Pbkaqp6)KtRo? zsS@~Zz%vUCT$QXpe>!jc*!e=dB5<{D5;o^|allNHenY|$TsAUn6X{9JtMR`j2K09B zz=vCMAn&G=Tz`1uznxI4b#I81L;m@7|8R$CL8pp1UcMI4?Csc@7j>!xZiOA(ra5^Y z2VLm2eN4=qSKWSU=V=1e>#Kvo7TgU0=y~GFAuss0?L(AEIFH>yQqH3>pTo~RU$(Nm zc<)h478?cWbjNU%-Ml*IA3}B9UzDNHhKuRJGW;7MYLy{a{0pozI`X_%-*jAHAt7^m zd30m{ZRHpfvv(vh4S&YR-|xiWes+^OS}$|3D=w`-NPf{rvL9JCJQk&+w%C(Re+;66 zwZpIv6ohTu)hiF!@9!~P+P4kOHsh7ri08`w>eHIwwEJS@&-U<=Kfbh}#j&Z>j=SsEKTPmI8mZ#^$H911>mN-E?_KI64egW?7#MvHUI zQ$M@9-V&aIC*lUL;>$=^H=lhkyg^;*vU+HN%KqFy8p!LA6r|Al62xP?(=8_8UpOL z_fIJH{pb@;j{JdRKl=WzODk|FqK0Ki9}juMfmT%MWo5;?-Ih<=yEP7{bI`~BD=DKW z&&rLn&4cw_zM)>RfuzZaUe_QspPtdq#QlNAt+0j*x3~b;zLYcI$0#H|vm{^Uf!>j}*;cYPtA~Gp+3~2j#4a zyJbD^7oi~NJ$OU577=K`iD}j=^t5DU@~1~jv9eY6@801>X1fF*vsa8t{JwldB{Rd3 z1jz8m+<3WfmQGe%F-eR42Thg^f+%!H(z_|ZMxBvaiIs@MVseNSnJOA^LRCIdf0rau zeL*4pdL@5I_xp3ZeS*rF;npd}gG186(}$Htqp7JbbW@C9H(P^9?=G^~qz4Xp`x{4` zaadt~s&S}{Q1)I~wWYT4>6I5F{o1|)zYC>vI~p-9TzRxMEwtkfADZ~$SOVj*-*yIv z!Ro=l+0x#v(iFvAZl`t`m@8lt!G5aWxE+MBlzlqLFVr1`U|8AsT1%(DHqU3bdiD36 zH8~s!EvH^ah-mH-jjY^*edJ7^PkPH!M*gEE~-;0B0A?d9ovla4Np6vP7WU;xVgxqNs$`LPY(? zOdf^No%ZaNWo<(?)yW{qcFNbas>>wpBW& znSVnehgYs&2M3u=(%(VGXWEgP2pL|FLMU=jp06BBSB5jK?Bb58_vWAGt}K?Wo>^af z=JR%{G2~{EX?nd(aiq2Khpv8ADCRQXe*d7_UDGr|E9~GVF4me2^4Q2G)rAJnKW|@z zJ{s5HjJ#I$Vl&F}+)1~q_ZYsF*XuXJfNe}Ne&k(IGcZ4cylbwOi708Q8qCO>*aBY zX9e%zz9nq24%5!kwa~DCI1~9J&QrSLZPLZ=ugjia9e4ZQtT7p{uGPfqxOONPQHNLC z&VL27OFg~tK&cD5efQgI}OzlMHAT^n zqUX6=ge064{j)-%z~kuR8ouSpR-dK1(QyV3j~4ACE22y^s-5NtRFU7W!0x-b(IwQM zUVYyu8IXgmBFUHe3f(hrjw^85RLiL*MWOP)A2=?&^GaJa>@dAT;g&PHmv)_BXx$rO zIjsn*K!(T~9{JhajE#&rvOTIpdSXm6U;k?1qw$S&N4 z_(<(xF>q&T_QgA%W_-;@3>uYb2t#E}=qYpe5_Nj1FS&DiZIhEUJ> z$RvkIgr9Aa-o;XP5P~MPw0!9vE#fre9VD}dVC#iY(Y*Ip^To8za7l#6>VzF_SxvW# zydIrZF0;N`%24=Q9-m)M4ZNRlTC`XZCa=Z;A+!%)Tbz1m;vlAX z@LdE6amSFW>?A|>-QWVFAC$Uun&q+J!1DxQ(INK1z|coZ}53q`Y38(oMl$9 z%IGKW-$|G?cp2WcWY#q^4@JV7`2CCqJ<_ITVv|47lw{w&4`ylBTY3BlW|HUJZvE;l zpS`+gUWfcaz?>Y&DE#AR2UgD_tX5>jol;2%h(3-~P&39i#nqSbKtj&w&pZ2S*B!9pL`fMgU zfrsT_?R{To$9?+Ck9KNPa9d03_GcUs#rPfEJ}R0m9w+zAVcip^bQ^(6%O^9YfyFd} zF;O`$nTjtZCIWn~rqsZB?% zH|bQLE$Wy9=j~>PZ->pAukCm`Owd0Tbly(>Lp zl9nOwWZ$d33b25y6&Gbfzx37!IGkI^ByF8!KYSKZ@_aZ@l~l^tcp6#hDi%1iH2wT8 zS~Z1l{(P6VbYWfrOF*4_Y(zupOMJk4!mbJF7Pj`E8HyMO8DF8&GX0Dogr*h9=!pn=68HXq= zBh(OJBN1n%gPVC3JSb|pwkuW%l=ergEH5YyLoHVj#d<3F4+?X>_BHv{WX1%?7)=;# zjgc2tzLgltE)0t)xan(CZy75ujOxkiTzQcYh-B?JvTJYTtiPC?h<4|fJ$Jfs+0oRI zhxumhl=|g^&o8Mrlx;faH%r47c0D?h;6H@Q-*WUP%T&F$v zKb#D#X7-w>iMM>j>C&@ym|02%;!O7E@eH?Qs0$M&-S^bK7q3(=gN}+{d3a~n0}o=2 zRal$6!|WUn%U?hsG4go1!7hD&W=FTg9G)JHB0^5@+MjKPda7mkXu9Wwn67t-`NZs1 zPJhK5wum`uWGAsICOc>JY@z4ggCdNCgAQ_fj2? z#-eH30U16aCkQ8&6k8ESI2*DVGf91V(R8(*LF3Q(dL`pzO0g;kUX=MmW zk#6Y*=@=MP1cnw6knZk|Aykm=&LM{yI);Yx;&+|9?)shI`Q3ZgS$C~_*M0wjnb~{4 zd+#?s^*j%q0EHqS!cXnj$?cH&HR@_7Sj6-9r z|3ibg5BkO4`tYAVZmX4ZM#s@a-Z;TO*zu)Si{|Qe`)4_@{RqqBq@tSz*K|gG%+>d| zs|`ZH5QFul8-FMU(|&fYMs!&Fsw5T_=O^#UJB z=lJI8WZC`gEe1Rf$kEzRc1%-R^nJcpQloNElb<^{wWmgywITmAE=Mm1OivKSfok9+ zqm25h7QfvbP!331svMK?f;Lli7_WU`7AI zxkLSHU>pv9Pkw>xVJ7vtKRvQYbG2uUc2P~Qplb#?Q^{W6D9pn5km5=8i`-LD_ug>* z6-77qes#uC)v>~$+1T8hcUpQUKO|rWNIPCYNbv^>Bgd#FpeNj7#nf0>+=2A#JdbM> zW}E1vn{4F#b5|xRvr^GK1xV)mA=2D0=g;f=_nNP)j+PsvIcbV5{#x5fvMy|WREDyg z7&k7rtlep;u!nS=GfkJb9Ojj=2EdM(MEMFD-J2}x`iJmQ`xj!y(~JABGioYKJHpqi zZBy5%uP3fD?Mi!{vtQpmKeHs`@i>WwOr1YlY<$Bz1=i+w;MYOe{-v~NomvM}XB6Q+ z%`0DZb)0yIMpj3Ol>5)FO@#D!`6EKe^k`DpsmioKBlKuXe9YdiJRFrYTUc%}nnFD* z@=GABUz%MUAk9d9AvE(2wZNP)R1(B;dv0ZA6(Xsu(XRJorQ?Gi2;Otw{L9L8>?wl4 z!V2^0TiJILipon(7T?Fa?o2-e6B83ZdFZ=#SpQ2bA>z+sKj%LVufK?^4!aIsg}ljC ziH?a0g3x4$f1)=vGz9W^T6&-%A%xC&*RiNl5R!c4Z)9pZO0bfS#Vtq~W(I=gC;B2VW_bMI){U8MAt$OE z!*2@Jn4@H7%ynG~sjn{#S~|uYUV8n|v3`pEtMGa!4Ga$~EcWZ(gHYS&>(gLiJ%oU` z8y41w|9;r#F`n--nOj?1fT9e8!MxA?u6qZ3|EVn|IXO8dCMGtPF|q>$NP+tE00d1s zIWcj#I$*RhUJ8&j*bg5<08|T9iZk%?@&dGoZkK#`U08Y$S7Fwv^BqA)_0NBN9!RW+F`6ntWYNpoF44?(tLMecD>*{o^qtO8cuNXIo zqB=P^T!+Fct;U8ec@O}hhlPa$DO9@_3jFPh4L~tUN=h3J4I_M{Ae0NJXaI}i#o3V~ zKe@{_q!EjB5-bM*!UrN3AY(OAd75j-?d0mZ@{u3#(X~++gP(lL`ZfQNfRHd?H8;qQ zm6a8u()V`w`q&)}Kxh`wK0TeFo0EJhDLzBPgF>M;{=On^Qr%O_9n=jp8IFy$^?3aC z?^E7#yAkBu{e5Gf%>Mf;TR-FeUQ@$Qqg8H-gV^~fbW?}5Y;9jQeIRGVa>iSgiRkZ5 zRg#Lrgz*2gwUuL6=3Q7Y$dlr{A`b;>yZ3I@X#kXB2?Vnr+=U8+(99&?Ws1tHuh&T* zC?Nx*;iq`ThB?Tdv>0;4bg?ioy}5@a{K%j7@dG-70Nb*t_qoQ^pl_ezxFxx*)6Qzi z9|3TfRplhWCDrPL>fH0tDy*un7ow+^%2inx#0Mu#(d7P9Y%t?x93r_t_v_|EMjuiO z?zprxKwVGw_`z&ja{ow)a|v>_;oapDRCc+ZXIPZVL1BOAVgEZkocIXc z17={*QVM$<%zY3+Tu-h34elI2F!Ay7;}X8>z6wcb ziE%%kg3qMS+_-yp_;~)wx-?`oNo_>74tEwQf`ch|Jn~1`72ZB9x*E_%etkxv25?Bl z-nR-bmV*7^RZ`LO(^I@~qaQ|x5nJgOh|TFKL>aCYn`PAG9CJ}^xq7>xH@&(hUu)Nl ziQWoT}Cw*JPc zqhH&uL-ikPFeX2lNnpeMP`6R83eyc`hn68!nr}5h#fILyhK#eCQohY!n|DYTR*now z_|nn{n>NR&-VtzEj!qV$k?e|-`Q@UFY;K*SUnT4ytETzJ3F82A@vBP$)Jxk##+D&| zWeR6%rCUcmb*}Q5t(ogDGlW1E>-5n3>WoFZ$#WhFGd*gVBIda7U6?S~6;jDJmO9lY zN+1&JZ z)~IQUB(7mvM_Fc@NNlV=J_9eqyq3SHNG@!W-YyewVDFG(Lf(>yghUErHCkXm@=!xd zEBgC&E5XL0{`gUBC3ir*N>6z2ki%uOLo;l`;bWlwa^J<-2gJ*#Yf{?9-^( zrsOIk43PUkscp$43B4~48`zPt`oyhlQyxm-aRod%ZIvoF)Lz;0fX)pYWoDpxrg!U< zJG>@FykUdYj%eXCe_wH-sA~0=`uYTSUxntFi%Y<0veC`9o6l!mBoyY}(%yd{8j2#o zXXCbA479%_l8R>2s5i{sx|ot^+Uxz^=kJD`IbQ#HyTea6SFv~cy4C08z;(fM!ZKQH z3!_gvK6Z0SRf{wVBOFL0qTaZn)V0cEErLmh*xHyq9?8SDEZY8-id1dOTQ0>A#U@<1)B@vh9dk)W9lid2JDbgH zj}o6K>7*%hcI)M{Dckh)hud!>`K=NS5Q0z=R$+zbPTQnP6LwEdN2Mq-bpA9^!OC=! zL7o3nFe?ecz)xJMO3o;%_^XpXIbd@p7{!yoyyX;FFCjVn=M> zoe(_-9@-{OgYdbin1)-=o1C6^^)`2Xi`pm(tWo$3Yn9?Sa65}mkmgTkKaQKSm*&Hd zu}!WqUbn2Mc0?xLpi#;fBlHHPp{>yw>BTq-;LlT8($V)%1CRtQATuE1!!;SfiWW6Uxn`S&a#>_svbbV~G}HS@M2)x>EJ!jff8S?-)44+S!OY z%6P=Cx7*(5VN(9ffF}YTd*}9*#pSxmUICnAFOf0X^S&N`pS9l0xZ{w0)oYuRtivrVX zZlZr7J@tLj_m$2llT(Z4ki3KOh2qf1;m-{BNQ@c+7+lfyzTTNuq{Hwvt1f597UcqD*lcx=m%q&ivEK6%JjxrM$0Ypn(LdQ`h3ZG2ZpdcT zmV2YxIDBSjH5VS|&LZOZ4ZsFH6jnku_IZ6_)YtAIWj%w$(v-Nj(A8o(iOvU7hWA&x zds{odk|~rCuETt*FR!kTIOV+_1Z9=S*{MId?kI|buI11QU7Ih!7RCR+W5wV6FKruO zR#|eBKJsryf_fkJf?Fkj1lZBj)8y4rsl=Wlvw&1P zS7qVaClhnD2s8&aE7617VQu9V6)iRQw3L(Sga9#Uc2L+X_6_EfF_QyC z;eWC0Hh^FLtH~3D$o0K~=Auh`YmC z1S1t$+&*++&B~n=BZBj`6pC!4@+S9AXt=l^dxCqi+T~6t?)KM+|7m1VWNv=>``bsZ z_qr$BIvnAS)t5;5lQ;Exq@q>vvVRJ7(W93Yd)eND!A2kEOI1gzgl7t9(h}nLPQgq0 zS)Lb5;HxzudK~7N?Cu*j zOi0{m>d8U!zL=cW6+Ms4H72oY}nD`jV7hJTWJB=qnA5QHdmGQ%r; z#}v_8y4|K!*r1as3URcg0xsLn=sIPm-DBbK2ZXp?@OFe%jZ#zUGtc9c(SPK&eB zMZY`v_!hP{R~8_^6<_=v-@^Fpho3fUY1p-w_l~{?564E(wTh-w)KR5X?vO#~qnu>R z;nrkt$+oDSyuu{YIo{Op z%+Oj;o09IT&LeEz9-EB<*=XsQ=Z7BlZQxC9&pl37oeIm&$CIbYGqZ_GKm|Yg_kT|~1DY>X5cK42s`bh@^BFgR5HZEgiX8KoIT+F$B zmdcgk)4VT3ZCvnUgG6mI3K>U-{m*xqnpq%$*#62REv1JC1&gR6q3x`?5 zZ0^BA+_nqz_@DJo6bjPfdQ>Q~mU*WaLqo&VTeQ37XtC@?LnA1~)m(UTg#EB-Sjhyb zP8dG?3z+m1gbDv%JC2|9fwt@Y$AsYl>a!Z+w3D&{@C=I6$|6f02bbo~ktPsof_WLb zPyGOkU+LnkXJusNuXzBmG+wfVx2M@?=#KWVzVZgBOEmdM)y) zLU4Qdez)(#8Q27qb#pa!dztw}t}Bqi9%aG(*kya^H+@e?^I3TwqJh5jE1YVyQ2ubG zAqr(;GK1v5+9qEJ^lZ@V6H*hZDOnHlE?e?^I}A<6IB`Q;w3*IbyHE}|vn-~|46Yrt zw#+f)B1&(JXQ0NA%FUT;8~KPF%THEkRVT3571xf%$8Q^5;UMm~-iO(L0<&e9>PDutm%9RUn0lOZ~v)y?01c*o2) z-{2VIc+l0Rq6|Cx9WrfLB>QfvDwVphAz|ibb8I98v?ci8L@p3+-zY^Af9 z`4q_;Pu;}xA0$JK(57BWC#$hZeODdkB2TuuG3A7ceYLqAz0bW#ui3880CD!>m`qgn zfX(cEUAh~^7C_Z+CiY3g9{tms@ec%IOu6@7(JtwHGO1x~2~x0Mry{zo<+D!^6{7)h zv7vL`ad6(n4heoVNGZJgZG;Luskw=PDjRJY0sFMAL`4WBoEpSNk7GgPQz;Td>fy5e zK}sdTbEj3jtsO-s(KZGn<~{ z_wnZRY42N6x#rZlddyPI!g#$-JD+nEljJE7fCwSca!W%An*`O%?ZivhLy{qqE%&*{ zd3FTP$3>y1-I?Br(W+3kz+hT5are2uvU@)s{Ylcq&`NvJD$ykP!s6nDua-EbWt#ad6b*i%jaH&J39@c+4I2cmjKb$uf4%)apG;_Y^@Wc?qxg#LC9 z*8@)@H*NL1*e;*p@Xp71=_^~Fl}x1tI)945G!~0obf^{gdw3rg*VWm%r>hI$j8@aq znw%&%D+fs+`S`C54Gq%Ifj$$+rx}iEg#xJ^LM2a6A;i1I6Q|<5FfZLS_VST zHf=-#hr`=Y2k0d!NL!@w1}PW-+|__>j$Fv?Hy*Cvw(rl!HGG z83q-je|d^71{kdw#CD_Lho4wdQc_+%jw`(^di6ixevc^DmzPZ|9BBcoCGbC=;XNiH z0Rn?J|4}MNNi?@VqbC$OGPG3Cd;Jsvux}TFX9NSi&1)MsgwCv|!k%y#LhS4aT~h61 zj}M-57`A*G%>qltPsc*mMQk8!Q~^D*r3?dEdv(lZh@7k91n|?-2bNGM>SyZ}_2%Oo z)3I;`y>?^pJlZ?o46ohhtBiJ`Ky(!SD(^G;0Mc{QR`~J>19G%_Awfa$;~jw@HtJTC zDC({EBJvt>5f7eOb1O-bh*umOu>6gm@o~-wn>ac;&cxh<3$U<}x>%x>x@MO2D1_vX zr@>-9(-&E8rP#?-0L&tgf7?NoGxr}%%AFaJP3h~q5Im_GAcYOQxi8>-5;G5-7Mk## zS$evRhp@aB{!$CWFK2$4WOrri7R7YII}tfUfE6chZ@&x5#7sD2gMzwR0th1`A}q=E z-7Zd@Y4#2eO}1y-Wn^S3vvXhmQ z)0t2-)R~W)n$!|zdR_5M$1xigbVN_7*RNz;qO@_a9^Jy$j6+t1rQ=AC%co5Z-A}*Q zaJP{hK&#B?d7#65Rr)2#iHT9GNMr za&o}>Z#6Rbc`0YPo$34$Tl(7uI78%O^>U&=g$mys|j&8t~M8`Z{mb#mmT%j%Hcqh zqdTk6Qp~230sE{Qmlh5q@#JTRRX5v)EGc!)4$3w$1A$+8sP2?ji+<_ad0M))5mMQq z!85ueXgK%tb1`e%JEKpgLqG>!QS{;El)>TyA-}qZmmArFX`=OjIG||N2p2Np!b#{Oe=`5=G2Rp4Gj*&DXMsSNFDOL zLdCF+3I#62?hQ^KH9sd&@0Kx+PAg2z^<~7L=`t_z*YP?SkdlpIjgraS_`*@DaSj$C z*u~)(SQ_vqrl!!#iK{~ZeRY1m-*@xI4W~#Yr=EvxB%P=|kUl3E0HW@3{1kaAdEky8 z`KKob@3HqOidnxMDDi@0<0m2#RAcCA!!}69t0P@w-|+BUet2#F3ZcXIf>n=~d~g~O zTj>7Hsq%;P>JoF|ZiKz>@^aBYbH39)FA27F`W+l95r)pu97d^UywwjjjHXA2TXssS zlzjYgsUDkj;s1yus|t1j+z@0uZpSfqj-5M>TOkCOGv_%{1E%LpiGYQZUH=Z(S zp`FBc^h_U%06Km9(zv+L#qgNZBYKyeRTBLX?s;cdXsJQQVf?9`;X*hS6uUc7NV14i z$P{Pswr`a!gGEG681Lg;re7%)K2ciX6}-ueR$WD$`@kXSyw+kf*Db)}X(MD*&s zT!doX@p`Q|bPds5#CF{nPgV2>yDNu)A??tirpQJTXV*R+9@PnYg^^%pGz9)A*=toy zykSSo-?a@wFz|aMAouCXhJ$Wwm8DHr>YgB9S%9>cU?F&a_zRZYPon|zo{pB((dHB~ zm*#4V!mrACcFQ2tbflxS4DGqa)%7iWB~rfYRz5{4tzWtD zjyJpw{BI;xatTVf$wdw7z2Yt#DC)k=p89FBq>z<@ib1;eJj%SrC;$(4R;X&8(-7>+p<-X$aeJc60SC zOxsnx&SG_oQCm~i!?6Arjq#KJW!Sc0g2ugR_-s= zQdO1gTmiOd0Sk?st@NmDC%Xj}H7;oG+Jc2wH{@K@MOU-wf*}9&N%zIn?a4h^y9Alq z;%79@jAMUhm7Wt5>B_Qk>rnn_c~vH>4b}V8kWs$EruP=X4B)wC2{f6pb|sPDq?NzJ z4;tX#VF%ED973Kftk`)InjOWSelRc;dr zD*5=LSXNH4)G@fMl@op=q6X0t~wglhf;+vL| zs@8RO?kaA3;H+KW`tsN^qnh1lifhO_sbK^6cuc?7W~Xhs(9IQTF@o%k?Y&5l_qUmbh}zMU3LsqvKsqd@CM%U zHX*4=wC9f2q3;i;wwUQzva7|g)1#`Zgo1ZyQhbV;RGgKKE7j1^p$6Q~k;M+%Wp*SS zHhm_qDz+)-2J+5K=n4v+}c}lWQ|Qfz7Ym`ebzfB;Mwoe zKc*kHS95ig&Bbe?igz0~aTuA!y;l9TT*jq~Da(LXAHDv}0eAZyV_8VD_t%5v#vn!h zAHt%dK(IxeDavJQdZM>?3s5T8)~Z(T0;x)R`8ZG@lilo(TdY;d#KSXUZie-2(D!$L z|GUih?$;GD^a{6b-;Roo?v3U0=jm$c?92lOC13z&jX_`8$;iv|aB=M)9fbu30_=E= zYw3+Yz`!IJ2q2^%_tlc{lY5@F zXck?L4Phx5`-r|Aeh{Tptl^g8GamynrkP_oPKj5c5pbnLpUw7_4zzus>V1`ecoKAshYCDE)#ad75nwai5SQJTtq5auC|z5IYZ4hP<#% zoFr``F6sy&(l3~aR69BB*~Er5fVf@2qoR$`Eg^T$65rE>K+QXC%mPg|Cr8i+ZzoTp z?ztSf>bf;HEM2h2*Rv=$dME5=prlOyJb8jxiU@FR+nSlxXgr{E8LE?&m)EVd9GP$S z2NHYq3JFi1Jjt1&eDZ|fexU`_6)wH`G?^$2Rm)Y8l#=rI_a}M$7_f+MHsgvGB*g*? z4)_N(E}N4Sf-XC5^+!l(acl3{ooqyuj*5!YnvyNDz$4BNRH*?k6!@aj&j*F!uV`tT zS8G_*WCQ)0Y!Lm2m4|f`ZTm0*8HiM0sU53gY(H!N6b9Dlxr{3{99MV1C46g)x?5dZ z#Y34&0CQlc){O<0{M6^Uzf@j8H2ZLe@fSO~Of>thH+=n^nYk{vpj;l~tR?Csl((r|X3 z(HB3t!2h{RHZ0Yhd6pf?9ZKn^)47GDUpP4~Z{r~ydfdrb1mj8(_g5e7aFCTR*tl_3 zebt}9KyrVdt&jX_tGKIIwM!|m!Ukaic_Dn~^hv|7J!X2xhi9`DCS%1W`1pz+&bh?2 zKkjOz8uX8R*OB%TgLuB!S*tVq(Z|9q{Pfz_>H#0rk>XBD`&c3US zsVq#)dd}7SGvw>rM32jlYNmNrll3}g)eLOFX(fYy?4Y*q|829l=IT1J^O@Gn=GDiA(AJE;1=Zvu$NBdoyXAIc{K}$d7%!TIS~s!~zV3SMYATQQ zZo$evEQ2DSwy(((+bjn4g828lt@;|Qmu=d5l4rHQIe+}MG;8H48YXplcHUqD!RR7{ zU5ZP>f!ptjbf*V1q`7$!WMP527cLG?PkX!DN}}uD-rjiOKR?I8E()R%&!c3_`jRd{ zG{oQ6cP%R(jAP*OV&78rel23{IX_uxMMy{}K{Jq@46`&cN}ol}0ZInIB%+pID9i1+ zES{<`0}~fEann)oXD6W%2-i7$j`|>qU?dd817>U+6{g_3z~Yqq6gC`gwn$~mFx>nd z-rhZQ6)<=kA76D^RzSU6#l;n>tjzHE?c29?nv8Ys^x%)480>)6U%!-(0%|A|X~v`K zc1eZ3M?o^Vp>m^~_tlh!z=fY-veEnld@Rx|*I8pD*b0ufk7zDDW z&INCutU@ZbcXV~da~S#Ass-92JAe@6H|&4b-=q(81126&@@!dIrTxPx8I)tEHnxamyoyv3PwXtyq>}=srP+yX;70_?67<_)wddJMb02D8S zGG%ANe5&PF_k9IeI7$6Zr-FRXGtjZ8sume)3%BiO+{q`)&elW4Pwn3;2Cfiow9|JA zSLfFWk97q=Y#XD}$+3e}A6^(3%wv*Z!)lXJvt8FVEf zOAAWP{I6xzrJC7P*Eo6bcgt|sdfTf|-!^t((ccsF0ciqFQKk=(D#h%thE}VEIa~d{ z-PlUQqMLk1Bxg2jPlB5ZuyczEW8m$(zFU$vfbihb4B(;On(?8^Z~pl^PXYVgaKKjY zUKF$X;Naj#s;6_Mpgvt52u#HD+JFZLlIkpMY@iIEGqxZnhvC_?x&1y-J~@A$P_|)n z?xw3tL42_6X06xY$h-1s9@W&73WEaWYzfKcM>dH8t11s1&jQ*|tJz5}^<3j-PIq_f zh3Rw#moqb?RMg#QbziqQW9<8N1)VQ%5`~YCv<33q`ewDTX>rah9~q;r@ciRJX}*Y4 zsMT-M{X>5KY0I|!yS{Ji&yROOEitc^w?XEamD=+ti(4XBXDC|lskZt;Yl2lf$?x9h z+gwkdR&U2x1i<+h)Gj4og{q();DoCe_nP`?`yww8WR*i1`n~;lCzx%cHc~ly%#(p; z^NzM&u@;`L8}Yyms8(-3edFJ>fEac#8c`l9-3bDVX_Y-9I=$+!px9xFW|N zmb+ttln<_~f5EP=Oy>I-{QS`I6acA!J$it^==i-!qz|L*$x*Ih#!r+sU9RxvF48SY z*1ahwY;dnZm<~cTk;@~hrS1obQ#|%s^f68jw7h`lU^NYurc{kW{Qz8);$88 z)j7pV+D3^YXAb9ZeDO&#P{}gkGFM|yK?ga)T+R~BWCeNKN;A_(ig0Czvb(Y9#1u8t z_raaVfIL9m`tIl*&xaG}7>drZoxj)HagGB~Vtm2P26LZiUpgk5Qtz;{b{L^x_{#;3`Q#+}Cj`p+d^OJo^e{+5i#n)l2 z2JnKI*M~_{?{bDBMtO$qol8KXVe0H;Z<{ZHI_)3bhFMR#`Zt*;AATXHVsUn+K3P#b ze#*e3H2um;Aq#D0n9raj=ph&z7ax8CEv zuf_(Z28O36JKwJ_t#8qMGg%ULoUO?mBVaQn!Snyw_jWmSic3_~=8*YjpFrqfyy4En zu$r?ri?=oQh~ap57aPQ_yI-rU7SU7#>0rMThCXsL`EIpPeYYF&RfDX^%1x9vD8s`9KD+QX{aEeRzid_!65Yxm;)+j12a#Qr`qqKhxyLVH+g6j6irJoYdKdm78}nKGO_=;*KE1)df?}^3NuSNXuHHQ^-19s{ zw8uzQS5en-p+JQdnZ>aH6z7RZnZDS-XZ_0&+*JmqeYae1=DSC{uuJ?I51f09r%?UG zyHFMVvHrTTg5$MjMAd%hOyz|oBR+o9#W0b*uGgWu%+ck^)2YVGg|_tCzUiyGSbf33 zJ_T8gO1oL)$VjC#dbBN!YAkGD(0wlhsC)oBJUxA})Tj+Yqa-bTt+`5S;S{L?oI4(` zow?6jpBd`jt*)sH!>t?a9g&hePKOv{;hMhIC#+zF@gx5)rEr}N70l$27H;* zgy6R?^e;?z=^6*x5e)u5R4pyR$%x&IU)441 zdl=QBwm)(c>HSU7Te?$^i$emQ9!50@{pf;o)y_vqoSc9Qro&@ zlom@UigMHytO0JQPNErFRgmhz)7}2DWxMByR5pjFdp}(LPt)b3J%fr+sXKyRRR{0( zD$nwpo_w$~Iz9Sjg$)zwuswP_cZ#7TeW7H!adzf3vakjcabl1<`j;SlrQ6`)jI4LB z`)3OX&&+yXHN4Ly7xv(W`riSFB~MRJC&vEXUWMlbYm$7+D3q|XZevaZ2&&dTJ9FD_`dHclXFB`WrzUg*& z7Bw}4yP#}kr(o5pFrO$h2@emqtUQg;r?gvcChV6G*Hxqj#9+}RIA&~up2r(AoWASR zQ3ch@8+j|rilkr0tD#p4TYlO#kCZM>CFFFk8k*Q7)zZ|AeUmE2P*8*l;qg3$dm)Yaw>wasbPPVG~7eyz3_rEMO{(mY{ zp58dX4ix|3{N#`R#a)HS#k7#V^8&@&dX#{{{ms9~E7B0)pwpM$QJFOd>V0n^Aa4A( zWC9BS@3;Zcpb5!(cH_W1kgZe#Da47t_0{I&q#-Yum;&Jdf74bpq6p3jNDCbt%2b$a zM)IQ6@=ao{%Yaf|TU1U0_u9;CWoc;%P&Jfx9V*Y7OG8Llb=m>YGc*))bhNVT2BNW` zaRXJlmF;aR3W`MFu|!1tW*yVM326odNx*!Ij*0@(Rk#!aDojy(C!Q{}*GIU$2gL_% zi<+96hnrJ;0s>mODqyeR<>QN)DMJ1a`FuWbXEu`+zzO{I=DKzqD+H21l9iF6Q}dCU zp59+KKmPxeiZ}4UaRxk%nC;mnunzC9^mQ3?X1?#Ry}m6hMM&m*6OetRquT@kN|1(C zOu(kf{q+}2hc&l02Kl#UrGM}m@eA7j`%6WFukMER+$->Go5{WI@LLH5NYR@QU;Z07 CF2vXX literal 0 HcmV?d00001 diff --git a/docs/porting/media/copilot-app-modernization-context-menu.png b/docs/porting/media/copilot-app-modernization-context-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..9b671eadc33867a4b2f65614715465e5c37b06bc GIT binary patch literal 50329 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 literal 0 HcmV?d00001 diff --git a/docs/porting/media/enable-copilot-app-modernization-cpp.png b/docs/porting/media/enable-copilot-app-modernization-cpp.png new file mode 100644 index 0000000000000000000000000000000000000000..3e0047e42ccd7aa583274f07eae9a1ae0534886b GIT binary patch literal 59288 zcmeFZWmHw&-!{4tK?Er&X#oLg=?;-lI;2ZQy1PTA1OWrs($XL$x#>+KE#1wgyV=y4 z`}Y1n&oj<>&xbR{`S5;t=NKCnYpp%kTyy^N`dyQcYAW)$*c8|h2n6@Va~TZ?n7??z3c&(@ zU_dC)Fd%5)NCA8(|2+o7fjmY-|K~hvK-_4zAcWwzKKNLL-u~yjEjUKCSKx#C{(pY| z-=7MBphF;^??7&Yd!F#{K0*8Ow_ntEFn;{)D-Il^+AYx2t$*&+5EcSQ|9*@6$rIF7 zO#We)(r9N<2xLX(h0N2Jp2k}xnVH%XKgA6EVDb z9{$+pnWUzPB3;67FXl8@6bU=|=rt+Q$W0#{UMx-ftWK{cxs16$GcNt&t110{eTPBAx$4hQPe-*|bT2vo9zh^yID{Pk9^bzAzdTe58(L^qh-E!2 zR)CGvoflbaB@P!&XcS?FfBxhmdF`~*@d@sKxilTU%9YtU^0%+R2`brgM#Z=qei6={ zS+Z`qmvNhc^c-v#{m&$`sIFNM3OkI|cz^GG68&1n$28d5qvO%6*9DPu7%%xn!1eJE z=sc-gj7jwlF`b}RRhB|lNQHG}SkZt6meUq=JJer6_+s^`m&o5v8XqAE?bZhg>uUXJyLgbDv4){Tt0_$U9&1fh`lDDHzNMdQ;{V0c^dmCVSB%aEa1J}-LcFlnF6gY zn`mIP_|UQ2C*66m^=lOW6PYv>a{VfxlqXaFhweEu+fu+>eSB)_*iqlLpvgwuf{m-8MXL)Yr2+5X5$~j1; zk4w~iF}$0oU8rASIUtQy;&*WpMJ-ySS0;z0o~MxoI)z^zC^|bItPkaYVP`AF4_3Qa zcww6+i+ZH+m?_A}w1O+&zI}sVofvqbj4Nml9Z_;xd<{Q`-@&G95UzS|r2D89UT@=R z+C4|Ivo(3PRTmxg{F_wR#z;Q=Xi!lrU;FB0%E83{9C37XWK`=O92CT7H_1m&pZ>Zf zgq)mweSQ7Fw!!0QZ9oyqIZ|u__deb@-W-Fwt`81m$Rj@TiFoXYS^oI}`b(AY^Pa8q zq7<)S#B$TmIZK$?U;swv>5~hDuIwmhebTqb;SHMqCP?2d8%n2rL`%YysDF-uBI5YSQ zFvjB7XG?-}zGVb&4p(}stE&%)wNZntcFrP52MZr9b`WN`%_YaeanAmCnAl`x^!mzD zi46sb)4Kc!J!Pe-19Ih@l0DF?eoq3w4bV1)E-xSqK(o4uCNwDqS(}OsSLMN)e;0AH zHa0ds-WchKqV^dB8UVD&v?Hp}xZc~?cy>5Xv(w^VqfkGXr3kYc%6=A#M@UHMoa|8% z{+WW`I`@W_fBpx-o9o)sJe=fj7edcXMtgI4-<`p>eIjPWE8kU^=w7g9HLrg~+@wW% z(glST*^EaCTyHZZG@<4M#L-&Fcr|6KI+EX!^Ehd|dO53LQ7{E}FNhgW>2yk<&TUGr# zgN>%yGUbsQa``vPl3q$z#qA~E+L{~=3)(spy8XIT@>P`r@SBCv?DTNOaA4v1Op zrYe(pE&71eCJ5NE2Ay4B?3(x;kMt#rirPDD3T|9mj9d+N4gG7Kb}sf>@B^-nbr8Ei zNBofMIp!mi-|r6~!~Et7So#&btZbG93hk}CRU+aNeASU`PNjObrgmCCUs`RAmjDs_l0%SgSnXU~e*zrM5RKO|A>%l( z7v~`QI^C(=y}mk~I~acF2o#4y_gCZS%~lv8!@Rgz1Y^zmO;6JB$p z=LRp=%vM^Tt}YY9|7$DevkzDMx%A5|!8+HF=L=R~o5+-7M#|Y`rr2y#ej|OtDj0t? zx>hhOVbAaBo_ajcakoc`0C3OuW~#j$G@*8pgh?F$$+c#d*_D>n|(OqR2 zG3pZe53~Nd6Dhhk3NmakJdOw5ilJAZ^+aaKg&tPGIX>Yj+ne(7>Aqa_xwcngi>%1n zfeLVPs$e;-^u(hiA9S*JQJy>z}3Madtiw3wF{T6|EkPGN2MssV8-kb zyr8Uc@k-#aIa|x5vA$IPh%{$e@2(O4E{@Ray;r0uV8EQK44far&Rv>DtJnHew`_F& zeFPa-6s2GhFi&`;eL(prnU>%E0)IIzwKFm?iHw_fR65Mf*87~2^O_eJR%;Z2WE9nI zF=xs}Qf%DF;|e_v`hK(Hw;>%+vg_b}s!J&0x z8u?|)|2<9cJ~c9AXv=ChW#e_ zdrzPTNF7$Md&KC2a;fx8{wo=ICW9lCQ=VSvbU5SupWKL=Uca&W+q&rC;UUE|(lYC} z_kUvac?{I0{4vg5(Y+{w#kojiOl{gvL)^d5@C*+lb?jV7)rd-+R$q;~lX&Cv{Q2|m z|8+SCTz;`L63}qD)4P?_BckqPG}&O3=8O9uacT5>jp&Bz+{|6hp$8MpQ5j}(-hLSL zyFMXye>Ls?>nw*ne}{~z#cpVR3KW{?f{->gE)rw;`|$Y$5bA7EphrS_>g^Nt! zV9=m>Y)@9y)rnP8{OwWpz0ODLkM|kvs}@3>L2$yNnfvCD(N9kwJ6yw;*X=wag za0RCwTW}c_Vm{~m{g%|isu$ZN2=_umL)ijW|7oE?LCdSF-9u=5VF&N9K>&64uDXJ= zvvZMQHNEPcvV8#VknLBY_cUkS35=*Zf=H<&7IYdZ?W^d-#0<|dy{?dMjPW2~S9*J) z%R*c7=g*(Ly*)6b&Y>nTF>**Fhu98e*J&MXo|ID@qW02jFkIV8lJfrjH#in(XZm2J zEiEnm{jWjd2Ohd??HS384ylUhpq^(0_fNNF-GPL&!UA%+z`U#vW`UqpQZr#FBq%6` zRV&=2Te;&K8bqvd32zS*N&}&pA4G@9#!eC1#q*fOWc&JlxP8ekDJjXt#l^>0t`yJX zOkJl|I0^Na>>@I4H? z0XBF8C2%Js9P^Z3-ye$p{x*X|;(KuU>{hgBBO18u`%V!bLhQbiC6*~I)yVPzcJP`H zLlqOUhe6{Jhz`bab_=}M;;iA1P|U81|@9GwbPu zc}LB6pMx}zOUQ4UjtA8=IA!<-UCNEy(-X5BL&7?pwMb zj`up$(9l@6o_m;%flb?C0-qQ8x7*31i?_t|sMimZx+*> z%n237kiBSZ5>|Ho^5?=XNRBLoFbY%z8u)d5d>mvm)nEIu>2~T4`+)iVgUcD%jA#zV zX$i&G@i(Rb0gbP3omepbpKwxH86bdH$m2vlt3i;pfjliZI2eR=`^E6DMvpzRTMFk8DM@}xPUq(%PH1@+PQ0OV>rqHnZ;PU*?*=S+;Y?I8eLl`$OT1Y}Y(Jl2;a~KdK z+Wr2l9MEBzML(&uQj(B*=W90>t!@C68B`VwB0t5DNSp63XtMPHJz>)M~7pdfD3_RFIo zRq3z;M0YfBxn74W2Pm8v0^xkDQD5YJMB&tqYh>S5yN%ik21ky8%vNFXY}#=vi`YrWrt zz!v1|(IAX41{Px^U#F$HIR#)81`hRF;{Uj=MvwRGS$2Hh7vKe=Y-xL+#Ys7xZk6>n z>^0*60}kafF$RVKGGHjwafKhQk)~r|mBwg?BD#(%CEM*nYdt;Yai~Sz zm7YIWa~>x%_I%wIP6D6^g;*Yi@AeXGL1$o|W1G*;&MZ>>w0|BycuJDw`Dz(xvQ81z zd7vSoT3T8fP!>(3;CEgN6%~~zvEcT1=ywDhX4!+P&Q}rvcBEcSv9rW;w}Ty~%PZPN z0tsj1qzdG6Y?39=5OJ&n_lyK@#JGc1+Nnq^F_gaNI)nqr$o;Kl)o)wy8 zk#W9h(%_-XVU?6Uh8p{L!wGU>sz9*HQ3`r|i}X)~_G|4{uBy1D4{{a3y=l)vg9z}& z_8NgET;#qrGhH z7YLl3Sz7?2iIc%U$}y_AkPaecEiKpf7FvKjf`qg^lG1{bREa}eeCBD+lmhw`0Kc&4 zP=dO*=jerf=iclsNx5=`Gocbcl4@x_FQ!KBw`y2}S7n=8 z_5ha85^>)epGql=_yEAl?lNI$LxBOhQNOpJ)eEoDS5E;d>yfriYq;oXK`}*_v?CS7R(s2f2a5l(UuZlN|r+a|=W?P-W$!58*2XHY4T-benuTMof`h zFj>{7(wm{5PEOKT;v7$ge@ZBiAPYnoRkz}&LbHV|>)sgFTIm8rG10jj_e}q(H033E zp#d4*9E%Dx^OXgTWwq}30~6iI+w<=?ujRa#I`lg8RqhV>veVhoeN9OLY4#5Qk%ofrOJ>)_)~=G2!wqrek&y6uct+D)C#1#ksf4rNE$B*TQfaSY?< zd@8&pikGA3IM#%Hv#u`uoDq8|;vM!*To!C^E`J5s=Kn!d2|NJ6%8O)JO`kwS>FqPc zlA3A#`;#E`!A`X(k25f!J5jNvknFzhfYVyE3EE9sj1;>E@01lvLzna+{;ytGa?E*s z5X->DZrk`uyo_a8f!!87azlB(RAA;4Owdbo6^q?+k69(@frPIo@RGE{pP4b{X#u{c zr|-}g>!Ka;>>INp|Gop+a#@0_HX}mMK*45MNdUQQX!bRZ$Y_nI$s;{IJ%*_q#CxaL z7MXr!?g}aKZ(8o;Q(WhkjGAv z;X=>(;cBd;LL58GSbQM}Fn~SI*DXmmd|mLSEgYb|*rmqt^C?rIOsse9HkwUT@6ygG zPtVo_XQ6FNe@L97wdm!^MGFt54`8(is1;+{4EO2V8UpEZ-}ZS$ZUWbs{O|kx_a6VU zTKK6cJ-jtA2bJ_o%=&HO4Z=gKj%@=6iZcHZ;@S?8E(;PCmsn1GD!y+OD);|<9u=s8 z4iaTUQNntDU`7{Yu-2(MRL)c zq@WXf$zHv*y`u9!jf#1es2R)E=0yG5QvI>()?7w5LC(q6JOw71F6AKdX#deS;$ubC zG>s=wb%##;97FoFgOyPkw(GouJXBwYvclf$;nJK|a_Ty;Og1IrlBVqt%QzPzy4L97KbJaPH8U~l=+M|(Zq8$kMd+p-;#iWOcHH$=fX(q6Cl^-?5~iKx#6swyOMOph+@4UT?qd+iNdW^1qjkFRcR8!@>JnaY=8xOX4FWfq#%@2J4wo64%Sn66o_ zc7DzOW(Py(a1onyt6i=OYMWfYCSYdBr`m9IWmjm z7(iL;w&~DK=YogQ$+<>lQF3k>!Hzb$I-B#qYVKyHKg`4(E;CVpLqTycmQ5_{(aV1l zhH|O~4F8XoszuXh$-q1^^$T?gnE@mJD>xJ*L5!gzxS5n(Vn~LyXwW~suT>jd`O}x~ z`ReUcN8q9S>gdP&x|GR^$N~m(Sh>j#%LkinDARl#x2;K z|F_MaO3(epU>q{mxqc>QptOo76Cli`pqXfEqw3~g&{oBtpZDBeX3DNwB>&}0oJi*FWZ~4<~ zKQuA9CRMBQR#-}C`>0xG+_3tcnm>F_vaMNC`1%9FrVOE2!Zx=6AjqO>tuO`O{(%=` zOVx%8eOgih`cUIan|t<|G1~*P4H(G5B}_q;Psnc~4I0xDe6lX-0@;tsbNu-!bbl=M zynn1F>tHIr=xGyaBR;`vZ+xJ%dN6rxl9VWF)ak_UQ*0ic<(==UnAT|-agx=+4hmaS z<((e&NqiLbGtLw+T5i8BdpdoUVdH16j~O0LVCL&^b!4ps?R*TFDpeo+)vM5vY>n}u zDWAE*)(jxI3EjZdgpGb6%D^^$FDCb;^)k|_j+c6@=Evy#Hj%-k-Fq|5V-Z=72gojj zY0EM7;`f;?%tXu4ntNGdHU@`2B6HS{j;&?y(#aq@O`RjtOcllq=xd7VHgR;H>7S2W zM10LkIJ2yvBrIHl{RpX_AmX)9?J01WPx0BQUIjl+T7Oq`*p5cU*i_W?PG;~{_**>< zHp;V$^)YwTBr)h7D>BN@tGTeRjr~2sF!pooRlI%wWQ9+r7FnIHj`7Bf$A$mRxPbQR zu}EHpZM+JPEX)Pe@19su$6P@ za8~{*8u713W>so!O;#v6yc^XgGY-^QgAj@6 z%9)JcoF6EL&G|X!O}X|}#nFHG_G8Bfo$&$N60 zB1*C?T++|*`(d)Nz}UYZF=#P}F}BSh6TrX`i@cM1&FaRr;H~K4Iet5t-g`Yy((B+Y zV*OQhGxg1BKpfG^cI2B${KTu_TKN=Xm&N@Tn~8h@&r^om-H~Hvj_sqO++<08Svc>O zB4P};!j|+3D1XcfeQ>kUvlva(aG=AeRdz608#0LE^bl-s6VEWnuN7-K9XxyZ6dT2aWFFQ3-*B zS#-CKLC3S}iYVjSU>>Sn4mbuj`u!LRn(A3;IZI60Ak3O;2q&ON#iK(n(an+#g{Mou zGbLx5C(LoKO$^!Vm)J~>bC648sUwOmToYUctOl2BF-8LTSY~IDirRI729MoDt zO&Amnm#tIvsvOe}*pQ%Ld<=3yMRorWNH?eHr?6zj_yZ5))Q;ZJt zME4+#3pN-c?>AU|pHWaZBp%c(A=)oAz^0S&-dK6hn}&lAy-OJTeOyBV@w2ZQ$!vtb z>io_}2W>OocvM+rAVcPi>7B*R6yiQfh zB^5=TH#zttks2`jK%t7C(XO*&wgov<4uww(Lw(wl6;sX)O=`R4!!&)E1njIO6`NS= zH!s&aOa|*s!sdv36{BAOP%DTat4pWGqo>9|wBGSqB$80eMyD3$atIZSE!;S9WT1%h z=`R<5YxF?RSRYyXC1L8}l#o(Qzw25Q%`RiKV7se#;wzt|=^}26z^F(N-EJ24iF}eO z^mdLd29|E@iB9!}$7uTK+e(_6TYtWu^h@59yLr3{r*xvas&joqeqPeyk&Qcag>VrmU$qNY*L-_6VKM#puTXTqWC+Wu)RPUEZ#ct(L z($*{gI-VlXGN{0)oMm9zn0a_D#HJ^iiSbBw_hkX}PtErMiX>;8kcAP^b#D`M=)Z*z9j9rvTA}eCJSFP@>Y8J(>E)-1sYpuK4xcRxgLfzlFwJ<+e%f2 zsi#)hNv@F3uv3YoFp*&-ASN6wUdLWn%(WjhyWW?~5OzKHHtm7B8#)jb;7{j!y4zM& zJyTlfcVmG+naTcb6=!~s%&X!v5&x}nTjfP#9ufy54EoX?uE;<-3{D-D)Ct=f8Qc%!nhzFz)k@1H37vgieR+NR_y-SL<161$c*lpyI$4@#BWzUti z%YX$Oxn1F`l%GmJ_1I3cuHMHv(!PbIUX;rqgC@Dwj1IeUGR5pEzmL-1wz2$z#+pi7 zlZKM~-LvJin6Ae@I~r|UPc~?Z;0Piwj9`|FE+&?9sp>98 ztF)i-YuO*&81=5RFoZ9k2X)(c>|@qjEzWVV+M@8%fv+x`Iv%H1&^MssTA%kk5(oBFNuJXq}Bc=x4}h5v(9-da|~sMcmq z5t7G$%s;3eF?3~0Z&K&(K_%j9i9A{d_#mk?05}&S1!vbL%2rYQrII&o01yRBheBCD z+`&%)lz>5hZEnZ;#+655fk`JN<8)izbwa`^v!{+3hR z-03rbzyZM z{+mv#7M`0}rjxt5-nWPbcc!Z~$pfwzLTTeRr#(QB4XR&qSo?s3(e1{mIr|IzSPUKfL3CXN|0s zYH}sS)?lUSc8bsM!+tz(OeCwCCP^}NU%%sWt_-?5U5EYMYjcqfx-0hnQ$Dkti3v;0 zorl<_N$Z>9M3zM~baEnnU~J;RUE6g$__V9{i5RIEO`fz;Hdg$WRxzFxTGJVvL(SfM z`999*PV7&CNX|OGLm+aVoxyhQ{_g-6$gG{mWs$mdH>O1 z@vLZ1mg~g!Mtay$uZ)+NhVoornnsH=ja4rJkXg%H_zaMhTu{|ZK@72Uk~d>xl~Fn* zaSbnx>@oE7Ets<$v>6kRnc`hNMy}_NuUYUwRks056B;_^y$4TTfxG|({+F5eqJW7{ z559cBM0yK@Au)GnU`ubu)mPZ^ zdx%>m52a0UVeop~c(9#zN}OA3QL3@(BuNGq>u}EEd+x$vx@_uhsMi$}J|2y>%b$a$ zvg)M$1J?PG!iW$>$|V(io2H(%*0pB6G1#pJG`aWgExxU5SWZ2oyzsBR38^}w4=jqF zJRXM9?1I9Y|3y15AXszgRCQ0^?kha;O9ycxIaxaB`G;Ms068H-7Vaf7jn4$RK{jozar4AoW-tI-A`RmhY&NvLhq;H z>dMcnrp+tOf=j?HOZ7*t`|Q@k06$h0Ncw7O!02@p;XRgZK#v2A5$)=7PiOCV_S=T! z6Ri|bByUEAd!kOG$o;TvBRc|@n%>cw-Qn!lain6w)-i-!wyHD&>=Fdv_ zt~4wnPJkopslxVj-%M{QoucBGten;JIeOzKb+f#-SVmpLESFFQRY zHPYF**IvtimNDXRVs{jYr1>bsC-?4~^Kc2Y@AtVHZj#JVQPPwO2p!{g<0GA=DQ_x2 z%-%i<75PPp**Gwr0W(0ljEkS>dB7R-q$e%Pxl6c~S5^QGPZ3KU(5^vRDkmq`rJ1`H z#Y##+fgDuiV%gsTbv9mJUIdG)urJQ#{Q-$5&dcb|@ydl4J70-Lzp)AWGgG-Y0?Afg zVw}`X9IHutH9|yfTh@7574UO@O<`}8YyglutLF8-t;6y*Ot)Pq!t6iPo8gUR5CVXnSL`q^t1_+-OVwQs2M8y z6be82)Er8teOOiUWpt&&xYQRmK-rJm)Kh$3pk}0B{zc=T3W9BXgO5ke&p&rJ8AvPh zf8dN|y??YP?#3mi5R%0=Q#J(H$95j#7##PtbS~dBMJC|+Q=o`lzkNO;3ExrrR&z&r zWH0G!dOF)yH9T|G3;3kst6JXx3UhVP$9$ph1vfRe3jqO(ZLZH%zl^p1Y_s5PZAFJ+ zuM)uIOWYHuoYQA@3*%r@U;70dMSqZNd=}_(C>aJgd@-M2WO#T2w`qty9wj+>wc|oF zID3P#I8Z2ufji(Wg2MP;nlh*qZ|HYW)uEuSV9SFZRKc$AGkTl8xP`9hmn-{>nt=C4 zEDFq}T9c|Vt3O9v+Ph+jrsfRQ-q^jgPW=fM7}0t{-?H6cX_pKa@G?gzu!#7*$~1g) zKXr$e?qxj#-}>A5Y0fq`Lj%4qgGgvbci{!pU4C&+!dYgwbU`#O2$Va5qwec#$t7Ak zTC5V9vEwV#I>GRjOWZMF9`Q()7G)e9Ih(kZ8b8af20ulg>2yv_@d+zXND)=*sL1{` zOB9hH9yf{4HRH6>;AfhcI$5hTR67F@uw`gYjfn?UHu}@PuYW{(v8X+$vxS!g0Kml4 z>WIpn91clSdJ&%tbkH2^jS8rYzZNi!7bxoyi=+aXCQ82Kpapr8=u-2Llo_(zUlKqBik>^+1<58?`-OBd1Xkq12XFj3IaPXI>S$i>ipbAWQ9QTx#3nQZEJor$G~yZGwt7 z2x_3#3=9kwJ>S)HRFXls0!TVd+OvS(3cyK&_4g;B{s;)ku*6>e8i#kO^!l=~Cqz1v zB~kmwGw)M|+$WU1oe_?kY9@n*7)$R-lrBQdG#J-kiVey5!scX0`$bx2@!H*Y8($J<(;0h3M|jT}VFdyjJy-|EZMIfbM2!6Q$f@n-QlQ0@eOx z$JsjjaUX}nNLlfodsm*8U#8J5Vy4Qc50X6C%|&;uQ%aRgMhmA(T`zd;o5)-;UbBlO zc9ZNFW4OWxMH&c8R@c5h(nzV8c|Sh)PFH{lQ1jQ@kT-)FXHMFsee1qf(Fr-)$1i3X zR5^k+ndMH4iBr`4tA_(BTi5D}lg_oo#_!JVb*Joi1doJ8$cOFAk=D^|2-@4alz60* z?}i?fd8TcDtkmTZO?8v+D#OL5XN&;55hy%AKg=uAl*XbPRHf0>*({4FCkAXn@_VFi z0Ckvxe8(7sx(!hqZ2@BW;NNJ(Jk^W%>PU6EG|L4H5kf(YoBJdRnK zo$Lk}v&v7WU82P>dKS-|H+QmT!nUD;y+h;@=|k~>+;{NbdRq=XIsV@59+TGX+VUG9 zKbv?3wtNvAQ7^H23%@Msm)TNe&n#=^BiHPT)C3ePU`hHT9c0g-5dX|M`R{0V#240Q z*dJRMhB6z1WF)v-2hGLah|1(El|!UEzd!tF{8EU`Sb{$Vd~058b@t=H3|lZWm05X+ zj!>^^wEgyNqO;fiXRFOW7fuM%;a@}?e$Ren+6INViU2XJYY$L5Lqvm`d3B%hb4%T& z9AiO_R4vRfSE*I~w;y8w0_3Pz?J5T=c!Ry95kY z_K1;u=SF!-(*;np9^PmWMLJ~0w&;6(E7V+%o=5E94SXHV*`k?w*0khCz9md8lK&aj zj5br9+*@#Qz5ZCYs*Ewgs`D!&;Naa{%-z^BZuklSM-0f)z}TZW*H2zcgZgnS?*c#* zd0#gNfqLc?M>l_sXh~BU3mw1pu$ro%b>maI)=Q6FO|r?yM!cSt7*c<%XY0-Ze;pJo z0Aw(iqe@#XauyU4f=$P1SoKh+Q8{TSJSd9yG!p0=P%_sYx_1yK-*j!cM~-eU(GGRn zo&Hp!yZtV!eifvsil!KPJE>veKEk{B#kzW~U@6 z7sbNqZVR-VUwB?-dsUL*5r9(yh#5~gNuXLi53Cs z(CeewTf;x!QW)Mb2E7193nBn+73}fY zv7qS6Xd}S7y&i-EKa%z-YE%{StIK2bd0n+v4jdU2;!3FkSTwh%P&e9G@ zhx$4@zvKwugAJQM{%ipOG~?es|T1}$>KiRMZA=SmT1H#UDTxqZlq5)JM{LInRj9p zg9%WOuyP_8*x6$X5+0$oML@tKd%r#CVtuObB+doKZE+1-*eiv)M}8Eo+hRP>yB!>3 zLAmxYHMjv-#pUIo6#oW5^iBCofUS1lPT*Ooh)Yf6 zq04my+*KSDBlOqO9bZV>ScT2lGCkzU#}BFHKsT#ja8~{|2eX=N;NUGOfn(DNfo59v zG&3OA0xI=92BN_EctflD7K$V(h@y?YUNs*7nJFz6hjIJ!0otQ)+tMO<_d!59ts>%$*`%4rtY2KPjMJ zQ+o2?>;Z0e9pGFsi;5=Bb^hJM6#hU}L`2Q7)_r@iEdp>TYaJKf^NhX&dx>|!AjAa) zPr)mKEly(qcKXj=yl|R+ga7cyA$7}MZ2#G!8wmZ+9$v`9SO4q7qfnfDL!ZPNg1>`= z%;Nw#|9c!5IN%^FYWkYUjqcxzjbxUx|JezQ2H5=np8h|Fe<$L9<9Q&`$dJQ5zRAF( zB9`va9hWh}f&`N3_s@Q%GEmWSw7Lm8dFGyrP0XOZ?NyLnGe3NX!&^y*tdWgyWKuHz zfu_2l%8l!JmtVXy|Eo_QI=Fi$y64$L-}J@ee_eUCsDTBMDv?4-UHH4O3lrm7tKRR% zU~{Pht>i0Y4emFZ$j>=wu1rbn3`}T!DDB1{kqnAELT5G=_Ak;Vk(H2j!V%B!tCaFHU5YeK2^J( z5gqVEV$sik&r;%ihif)S){}XjQVokdHCiil6_)DYTO5`YZFK$63Xf@sE7(zSVr}%J zUyX$0X`wnleRmudmuA;!`#N%@TUh6iD^=3(WSHyb;;gWZ4euu2L9*BeS$uKbCfYrD zU5^|Z^r7`Ten0aFlXdR;?cBS<-P%I;NLEC%qI`_DUwF}5lg?W2b>QYNk;g@DicmYr z^XQo*NZ>;mFrR_%5?YqhvwXF&2#sNG0oCkhvV8v58ymfOwCvOqY@C(G$G=M#HpHZ` z2sP4OJw4ANwbD1+Druj1ZO4&(7_JDOyMm1~qf3W54>)ma5Qc~S4h`)!t`~Njn(Rbh z+_igPglOM$bOQ`tEH<$B!&soy+qK1K>XhPqbkZ&_QKz5A7jB;@fk*Sb+u4@_H9HoU zft@z6Ec=whs+tDJ#SbsnV(cazc0&5$7bi_miw>LuPY zq6rmVB3>Z#h%T;5nvHy0*`(ASG(iH7!q3@*qEr`^f(*?yX$YUmJCV?W>IaN^6{kTSo z?)D++l@{!DD@NJnLLgs#RwC2+5j(pfC+l>P(HP%$XTOMtA?LH#WCLe;6D+B|dkRop zk0=j1;022bry4e|oU7;O-+dGlm3RiuxJDT2p6xwlRbut6?Q|@PY~cRX(nJGNbE9J)4JPw$pLQ9jt1+HVv62 zvbciNrhPq2&!eZ%cZ*u!Zv>%Tbx9}i;T>5ctis+$w!NXM+RYvk&O+R?>m3yL>p$un?Askz{% zDY%W)Zg)8KZYCK{;eF7Q@LI+0X68F`PK$F42zhPv-;Dr=6}P|}lvuddMh zt=?GbYk6)0a!HT2&*PNG{W@MyURB!bxj2%ckX&Vh5=OThZZiD-=9Xi8jYcoWNS4bk zf#jHjz9lyXSBKBVCgK6eP%c<;0)KjO*Iqo^*zR-y&yq&b)1nRCiOdel{5zWU-k0BQ zt}`#FGo2S}X&YQk%&t5haj`LM*BVjI#_z>=PqlLy!mk1(FWotFEd9d4=B1(fTWFB* z>QV6>HRkg3_&NU@*hT=M^I@{z2l0%0i|GLSSoF!u2zk;IhZ(o|%-Bi7X7Ha*emONo zpwsUDdA*mE3{QbGX`w%5T^yJw6PZaL@)g)kEie35<6$|KH})AyW;=cJVdHzhSV_Q5 zJH|I-sJCew}(}iusfAIl|%QGk4P}MU<-7>b{8C@*BDXPO2&H&3IA|KD%Sx;-=!B zsiW$yP={;5ya4IV3)9^y_)ryY==E>sO*IbDv+GIsnLjkwQXW5kmCiu@&IZLvDg<}N zxKbzJOx4Hm-MX7E_Ns6pvvZo`%0f?ZE63fA#T`4>F@_Jb6J7_+T3+@Lsb2#r>u8WR zW8YQehB@_ObVj~FYR^k(7^{ak*)+O(hnTi%G7tFw0~JGwp%P1VGa4sNZk?)l2^?hT zO}Rj$LfWhki>K#2qBaMM#%v7u;Ifu)Qzs7e;VRU3xF!OSyN1>G_Y_()zF`Us(4?O0 z!TpakI?mqlCe!?wusCVp-}vZWpWRIom`4$ndh%UGBGKg}zj|h8=ZU592Ca&JJMyr@ z!(?ml@?GnxA-)yjUGu$~G>)mO-n8EG^Q~h=$zs~c%XdM`{LD9BHn+^Ow!aU;kKv-1 zwDA9nyuW^n^84bx;Zam9q*PQ&P(WI`L6MM_mX>ai?ir9qLb|)VTS^3^yM|Kfp*x0| zdG`4E-q&$G_rGwThd+4C3}@_f$69Nz^?nKAy!kesvWUbiqO48NwHsY>=QFK$m+rD1|k7367 z+V@?vPjc34M4qqc&12l->GC~yU#8r=%0E3fKY)94udjG0)Op&UzNPz9lFy0bPp)wk zEbnqhXORq=PMgsJMHk;Gh0|EKyo|+x+~vA(#D}~(y%f>ZiypZP5(#aavL#}j_; z-YHx`thVJ4wG+RKv(Y_JLRvVdM|lUiQa7TQ?cXGOSS%lTtsfbRu|4L*H5;r{;HmU@ z{_Zvv3%P5{*0+ctQz}gbP>FWxofm2E26@?fX-0mb;?8CLuACd=(k^*W(vRamna00C zaS{34?oaX^e36S?@x~{R4>SH)}+z=iP;oXDt zb7j$>1S!(>#q!p~K4HP)!S;u$K0Z^`^)GvhY$sTE(np}b9;o^l{45fRm_7OIf$)7S zB?_8^9uW`22}_%n&&rcz$i+Txo;e=H0n`afSYb%m zSbdFaP>YIOFv++3&PCY7fbHkc{J;NFr?e0;tFM3lel1eY}pW(>LUN6(^};iLn|Z zF10DvWSOrD`CiP&7e9oqaX5*o#~V6V3y;@+`Cg}^%vvt*Uy}hULl_6xsSjP5(P87tXdd&G^>fJVr~Y;hm|bu zFP>i;UrM#s?ce)07I^}1IqaaLKME8g`)2ZqZFqrswVE1pHo<1HUcE2>6D7r1SC%gP z=BW2hTcvcT8ctsMQlSi%8Om(^0`Rn=V12dY8JkztxSlVz z1D*|D4$W0Lb@`R~%zD(OW9oHaz|`G>ZF_mu;2&vN^VHnJ@jrpp_>d*7lj-oZD*%O@ z_9d(v%)k}cBTo9V#{KC|sdZWf<85kzv%G$(H^B&Ulff{a<+U1{y$j3rh%G#b|ra#K~`A zrUIi?oWfG{#^`Drf4Xgq1^!3Lizer|?U}QiG3o(Eq?~jd?}2w{j%Q_CZ(F3lrhC4f?XX? zL#QfQtWtxaLT3?J}ejbo2q}N z9wopyN$kA5(3yhyXiNdyxu*Av*W*tJN}NAO>|(>&aLNka@GC;j%VR2Lp=J8sWVF@}UD zOY45j-t#YA>co$sE{YG##ouqjx=vG@-KqnJRU`!YJ=F4(#!}rEMcQ_j4yXFx1ptfD z2p)nV@2_dwxld1toZmv6ul@>Wz8MbRQ>3z&hvgP6R$*h10^zQL@zX!{QjNSiE~Z&b za>(b>lbSFeHM_ekle`#3iv;(TV7@JyEPy2In1Yt6q@e@ z_i@dB3QhLOh{um9?Xb}4eg&_(M84jvvln<0cb(5R2bfxvRX4Tx<&qsEw5>9>m+PW4 z9Dj^y)xA(Rb6oq!Xa=6YUfw}p?P!mW)H=D#AIaBeFNneXqg#a$Y^ z2u*rV@oIaT6^)EO6(Ta;E2p4uX(W+{UWpKCLS8jJVUeAOVNgIg3WNpqfQpv3`me5+ zd-F4_nmNpf35zd{dLh>y%ALtBaF!;zulybu#&vmS2t$v^M#B)kbwYUpp027Kw}LyK zzo3YSG$`2(QneMLr7Plg!(2Ik>Y?V5XbRbATj^Y^hcmNa{zke42v=VLZI zqjk-7WY$4+#T3~H7Cxh zibL=}3_^)7+FF+mduI_udmCxW*lVzP1qq62Vs9jLvxu+wNlI*OvQ4JT528qXg#?jH z9}9cgB7uZFlio54*~@gQ^qp%|$J{?Y8Ojk}>{qC#TTj2qFAlh3gk4p*p)rlnSm(KO z>z=d%!?V*=jDb=0&#=~eqB>-+WS@!3fHK$<;^JL1WQYjv*x~eRU9=`X`OPj^SqH$Lc~)0ff&2R!OV<8|-pUAHUlW{+!fU@7)HN1)QT=cfFyzOD^B z;lpqR*kx?Q@OwE&s~UyD*3 zB5&-?SPZSCU4D9F+6+QAkzSwWm()-DQl(-FW^3}jf(b4^{&UHrJ)T`8k*~sXi{*tH^dfoUbZ$MB-lf1TTl@ITHrXqFxJmFs0>R&K>7=}k zb?EDJejLavq9C)bC>j~`)sX_#Paxp7eH1el#rllO#gQS?It3&fH`Hx2wp*2Y%>NP0 zoa{F%=9a&|7^-Fj6Bf>#J5LQ@D+TQ>C+`3c@=@Tfv(=169wp`HTOMk39nf!u!&lh} zYbjZBp6=8tYen7HT~jBn%axMTk-jQ^%ZMaOHI!K~-6a?K`PuAjc|2YBs5-@Mqku?p zto1kW4z}-IQ6UH7rZ1hwJU&eak~1zUwT7zLU;Hgsx^tZg`AZ;x?sg<<^xJ`6?{L(T z%3kG@!e1WO_}<9)Sv=cKlJekw+}LLGj1BFO?GS?2$W=+@o&GXmna_joZ+71#4&({)oD(%@vgVaUxDfRwxw|e zvlDiB^4>P-&!?rismeVaGN=7Qi-oWFb}n6_cX_^JwtzWxr};WvXLSBHda_J?D98fC z5@UL{olQTEmuzanDzM*Nqb#%Vx!TJoDEMn!m0yY>J@IjRS?w>~^C>7_>lpuGd<~|5 za>q=`C2hC=%4n_qJdl#K9=)%j711PGz^^8oC^GP!ti;nC=}Y*Q4s#|%tR}$w_V&SK ziq~O2U6q=a9(g-j=#7`G1NYGI{8_hE=TVI4dI^!e!#nja6WiHac~6XYK<@0v)Ta05$YJkf--P@0y2@@WO##czUX)-^qZjTzppyEu@C3Syuv z=3q5m51XGRWe(K!5XcyAYsGxCF!`@zOp~K1ZldvL8go4S;AmpK!~Ci0JkWA(>F^0n z4gb^90{dx)x3D2_8Q1roJst2hJ_agdTess{r+e;O4~`FiE^uw{1+k`H&FJ^N62=Uo z|8yl=SR}Wuo+kf%VW)F)bbW`V0f6-UEC z+*~4ui!I0r^Wf~qtAm~7aD^VwM6K>;xP|zT_%9POl03ZpckX5$MW+xLGcNpTCL100 zXvc&KY*w6%D!%g7G|#9g?hzR!e{~=70r&};=R&!Y{I4@(84AL7>my?xdt;7aHLa+Y zp$kLGCs=FPdWBpe3GSa&{xNC&rPi9IP>lYA)2we?#Jzpk7xGj$@C2sQ$`Bh9_FaylGTMVrvgc81=A!SLsR)^X z2D%d$x2HbN^veRKBJXb7Szu<&SH=P zSDM}WbnEU^elxD3yT-Ymwa8qe@pCu)8=?AiueVO`t7i?bMYw^SMKEf z;fMD9%ZKk}*xmfjq6k&D@7?t+aR|`BR^e}34pEGKXI5%j;lOruNpqPR=I7HVwwJEuvT=Mfy^7#Qm-gSSJ zg+zlWhkHf5)e7c6QUu~dKEx1=!taE~sFmzk;+az--b>tTKcgnvi*>Ih=HW`FT@SMu zPm;7c;)XmAK~Gj6_CioxSZFXtVsTjF2H*cVNX z&svmq5Ruk&t35^UY{I2pX8S8c`QFs(@CFfa?LtKv4hei$A4Lce0Ml!>n8#L^BTvRE zjCA`;FE)--Cy!Xn92RscG*v@g1$wTYt1px}4YvJu*(A>14Vdx=z2E{-Gap)Kq%v;W zYj!PTgF0&xI~${yFsP+;7#b{Q_(I3u1pW8OXO0Ws{%a&=Yr{4(QtyS5`+fXql2*Iq*xVEI%E@2FU^ja#x(DC?EVY(x z!kjiQ_oqK?Q{Nru%&|bR6v6OOn~wVo8-0V(doY>USaj;ccWWF z*7f4GB$Io}aW^D!q49cBt_#jMau-+T?ureW1~|y;@8A-sS=y84EFF7j+Pv;0=i5fy z0peN5_KC@4Wf9k0(4L1hD|&>d<&P6wkWqKy$yel zI*ydV@h`pDt?|4s&S@sn^hISY_aszVYW=w#_+@7c3oC)^n5p-`aQ7gRkE`5G8# zy?pox=+}OC9X)I|zBsf$qJ;5&-p&CN$_D&IHJ7bdfO*r(La8RqIH+<1N{ScN6)wYl z`n4`uT!<;LL)J#>qk$a%_+uxfQd)Y|pa%LRvDqKhjbsHvj_WbJ%_N8nJ-zYi2M?9F zkc)2BPk|!kA1AG|`2M?L<%?Hp6q-UWtLn1RP7dMUXMf1;1U8Hb7%NsE)d-UH;bEeN zf4OT)N@a)g#b5LeP$@VDSth@h5-Gw1ZtayLCFg0KP_RH=Dw$XC_kL4+#$eIICf~f5 zcOTYtr{Y=S85?E0hnH{o(VSgH-9PR#RanVWtw|ShE|S~7t~J>&(eq_9D{hHI z5AeRh^v1F$ecQjwg67R6|NeUYi%h2#U#><~!)N$b_b-Vr_V@|yaAfy!+Te;6HwNCt zxvK6*#UT=@;H7(U*z#h1<*RtE$qTv(j`ie7QQ$(RcTzU6f0)tIyP`I&p|RZ(jJQ?} z$tXD7w=^9E#Xi+Mi>}%7sr;fr8r3F1gX(SC56WW|T#Kly)$(57y?`fQ zNek{!`v-wt1^F~=i|@+X1WQpA7^N0Ujh50D1Tub{n|^%D(v>^@#i*T~sC%X*5`KL< z(^;|R!V>pxp@;5yJ*S`QqN>}3%M10~7WrO=q}()#;% z_wOV6LV7K(sf)6&W-7Dei?Hfpt3rZde9v)Hb z3*old&bV`JjP!$HP@+V)BSgb9z@$;UJRi)K=U;R9Mqj=;v-VfgA^Pngj^LwRipK5U zH=NI}L(a(vOF?U!0E5_isw6RL7;ELFQGX%|(7X<(at_Y=G3HTPXLv)O_v<)?t&Z{R z>&PUd`0H9^39rR?_K&StdX9BBeC`~@zG_kvnk+u0VeI7rX&@OL zTzt)zcpoc};{4ZPINC)F99+%G>l z|DlR1a`kvhBx;&bA@YC~{nL)8hP(gqcK^4|`H|#ZDR)?33qq|C#H~7dQD%0;vKLk; z_?YkM9qVP_UhIs^H7(^Z3B8zc3C(z)THee2sE)$c$;3X@sq^vR*c}1?qVZb-AbI|0 zuc14uO8(m_g{cP*C4e7CMOV}28D*enz_c2zmy=9OvPXo{|Mi`QwILE`g51r8tMI+W zu=8`S!B#ez_hGnn{L(Jkjyp|c1`S}sxxPFRpTBDICN??T{l{oB@qyWx*V=L0fvQE4 ziIJPFkg%yk(PDH1BCy*l`PIkVP*;p;W9sMk7c(T&%=^Q?%=l|`@Nr`~Fz?^B#}}Uj z*+pr(th`IZ&vjMa_C|+4upf0FgIP$)3}4xWEs{LtxjA_4a?+0r9#E5|GAL1?A{G!VXfyo@!5TpY$q0X^vPFb zA_Nh!Vb+A2Q_siBdcy*!3NY7-rU0)Mm^}d7HrZMdfag9ln|TJ)2ifmM+V_g6z=UZ?t1?(=f=*Hb@cg@@P6Q5GwO8QlFTocpbmcqpg9?;6NL?RSMmsQwAB@sL!j^ac}|y zg)obE1OgWwd-_DdwL_n=C*=)_a-y-iEbF99BeU~y@xw^b!jVyWF>Td=h&<+{C?rP`{}tU ze^*gBD#*g+XZH!&<>l2GPd;>{-lhR%wK&e%das;Pq+^5lugmP5e4ninHtf&*O{6pO zK$++JNy68j%uFRNN)Jol(<@+#%IuXr%i`NKqFi|0d1aS;-P79y#%Y4);qS?}_tP92 zS`Iu7{aQhs%V5BUfcltD#d?pNr?s9v80a(;2=wt01m#Or32whyMgK1>f;-hMrb-nF^e3&o($3m3w4! zxnM*=sM73*=b)Uy>5u8Ul&B=8fEcv8)smZ*FmfLyUfmN>>E?w_3Y$|BNf6G6UHm)g zOmXp!;!N;w9eT^fO1oP00KFE*!AZ{G%B|j>l5{@AlT_zOm0MivzUn(+eRJ;WkEzz$ zNf=6flYmNWx9jWJi%oazP88RtOWeXa?y^M8WkROVvcV%ep}_F;7K7!y#t7-mpSixp zgBJ5^>w(>P!0{8*hp#93jAFNwfah0f*CH_lwcI%sdOSDX%H?t8eeOZ3Hp*Gc>7O@l zLa3BGIX{@ZRR6u-l6&`?rr2fd;&V%?Rnp_sW(}w3Hu9)XX4TTUegxAjI`)5FJ7%cl z&a@uYJ@kD2FL$bgamR+9aSu74zC_sspXhw`{=vw0L;#)aIP%fk+gr1IEYSAz**ITE zB)r}PRJ}mocp|~oBbc|iKCh|G zt-^o4KMM(}(= z-27YxHUWyLB33V_*JTzY`30BQTx^y~yS2!jSe3QUvN@w&_yy$sVqR%g4D!J1_|7Kc zYDM&7^SB-=Wmy@W1f11HP`-xN8G!fSFk?3O>o>_+8(%kX^ykT1Z5qY>qj$>>j9{F3 z>lIESrkmTJ+64AHBJAgc|E2jExWyM+UZx(iE~MYf!5Mv~yKb6O#LH+F>(=s!cW_7SLpjm&j@v@~xpmgS6DvLVqK~4+o zfsOE|#sLilE|B>e@wGG`$tby781|yalP3N$K;fT>pk6&hp)0am$qPHP__V#>Pww7& z5T^JLaScT3{^hS3qVCTmmT-Ady8X$Hju%QMg?!*87!3i{Ak&4)lD(!q5tOXzxNm+$ zg`u+i3CzC+6lnd_FUFOsD zgBv$fD}M_8GY*n>H}s|FlHUAkvtL_|Z+dX?Yu|iLb;#dHaKInw_#>OI_oT z8@Dnh6YJT>#dqQ>;#F0o+n7rE08KCkBcx>Xqb z2#1O*OA;8;zIWxqzOlJAsp11q82&SX?xCgPxs4fJ=+tm=Pw3gz>j8KP#v?qyO)^jX zHSjCaBNR5cp_XtFn>2p%qnAi0_weaHct_bt~-C^yL9H+8R*e|Hl0BJ zqWM;T`E7>4b>V~edpsBycnp)uzsMS5Knd&f%`b)N)Q~p>R9TNeY`Cwl zFG&Oj{jgGvb&QvxQrAieaA^k=9sze5S{;4j(3P-agks{h$yg-2BU56@U{=id(?>4- zS#CVmu`?%zf8jgk8EASIZ0e9mQ(=kwN!=ETnF2Yr>jvUM7LPZ3>}GX z&*GBc2k*^zjZGOQ#_Pb@K%f|8TpH)?=!q111U^s*)wB|=hzC0wnZ@L-gV*vn`JHS0 zFVxZJ_RbNlM=b)MszjcRS)Rs+3ul8*XY|OzWyRO%%1Kd91OF1FD$zB;@;mSFFuHDdXl#0o09&dHMpKW>M4X~*Y> zOBkEfRBK|3*23HxhMTPK^KqQaVcC_F{n=l|&gn-3>{(xRcxu!m_S_c+ZOpjP^T&U) zF*XOs0s;yqYfWU-09Zx894Oa2EFV>#IaI1(r8%8_K?qjBMpGaq)U}7) z1*o-)m+e>oiz%5)BQ+wEa;EdQ;Tm6=8vl0Jq@MN~$Q};W)P$idiu+YK9e6{&SZ}UM zoG^jDz;pUlUPeY)p|~QThq`I0yM_i4!wdEc;V}(06Ds5X8$-H-Kf6_PaXE$L%=~96 z5x9*k7q>^6m7ex02)@vZ-M(8uLXO;%U573pw5f|7j|yFxxWTCYzln;2g2 zoZsKQ+%G9KTITg5=MhH0lb?f8GWFq_UUO9RkxPJkrF`-oFzjesmw)pK;G15RYN~;B zEk2kj8F~r1C0w6Ak9C+BkiS!)J8=A@YGatDiCRZMc73i20YMGxV#cP_(&d{kaq4Xw8Kp5Y+SqNs?EMmeQE1vw1sMzTLfg z)LvlpQ)GgWS$^JXwuxxLR1#XsqqEa)K?wZ*ZzcSv_mT_l z=_mQo#C@9ZnaJ5_O@iWD#pI~4)K;ZWvs=TnI%jQ*gQaFwB_Qy zo~DJ;af$mBUZk(-*?QH0zMkg3^y(wt5+~RW1Ojt2=;#^dx~=|5`-;D@b3e7{I^?w$ z*b9y_oV2F=mq!@XX`^+m6s|0?aQIQ>tz^ym>3s|I#DjP(U^0fh&>X!LQ6rw3m7Sfv zx}j|UNwj!lLtffavv%U8bVa@QBE#5YCw5JL|NqT< z5MF}uh7fF$zBaF%@IA<@8v~@+ohDBpj}Oh5JDjBd-?{_o(ix0j(mQ$o$mvd)*|l?u zQZxN8KPQnr=;q(AoBpeim`t$&kVtWoQnNoESeF;<p{&9f}90xDanlj9f^uCC`VM19F+|fFn>xKtjmu$)q35POT2l(y+-%O&c_hYcC^* zgk(*PtCc5=)Y|!Jml2NgZZ2HltKX?)6@q;>5AnJKfpp}b!jdJ6n=&6^)9BgmfTEV0 zVl}Vd{+nTF?lg5xRX7CYNvi*!W{~f_J6fun(Cl`EnC*nCk1JTbNIp%epf(=Lu8)bk z4xdjK@mys@QbQnLMp&~ciuBZ17xSH8e|Q3Ee{`SZ7V%Gzr&8c}KcoNCFXsPq(l8W( zAhtZ_eCw=@)hO-iVtbWc)wcAJ#-HwFMzvQuqJ1X*1fnbGOK3WsX?oPxYwe!kTmUHJ zt5);6!{<(ER2Ys?o2*90+5HcR5a2{A8GiTbgi_Jr#s6ATjG-H zjib-gh0ZPpOn?33z&$koS1l%-Z=SgJ zs^xy{+C#eEElJRAAdrkFfaCyy2)kGuokLSK>k$*C@Q?{q&wtZrV_bRC z^F0fBd9}4oLuCDTF8)j}u*;*1e5tJZPf%Z+g#3S0M*vR&eeZuoY1aclO4fhJ|5yG? z`+p;XDl39PQQwE3F^uZ+EdQaIeE!vF{cDr|7rgU^?2o7#?2+2bX8*5MA&?K+*z~`D z$D4M7(MxsEuQ>znC&$n-MOtv(3}7l%)v0>13)-z8y~K1wM?u;Neche7m%olYhHdU?>xP*+^cqCDNZ*@HBzvI%%G0pN zL+HPxKkG>dj-<@ z@sZf$U|c~2Fnbt`cuK>s}JK|NqQWdA4TVQk-w(Ifbn~e zS_vspj7wWnb*s!yd3#xHcx^0lgd5;Mz{(KyY@lpMhFB9q3nY;Hlof<(!8J(qJP*PJ zcE1&4i(3uBU2OgC@C7n7rxVHwpaH}IQ8j{K^p;5DUykK@(&<0~>mOOEArFvFzy}_ix$y>uhO7LL&y?V{-$xv16(Wsl z$7&K|UuY4}KC2uW3)A!`_}iYRuv#-&-RMY;qLI5zm4zIfvQ)SaSu|g0IsqC7fB*jd z$A)b8!WTaO4L;DUw_#R?cqcz$8E8uh9XB?9`o3RW{&8OCCyx6eG>5PB(gt(&UPe4# zb4`Q@s^9m}2BJIeK;70B;L93Cg8=^nde}>cJlhiiGH`$^#-h{oQUNrAw?QG`2ZFa> zq*6FW?lMnELITht+yVm4Fboa;MsnSIE6B`OOSUHv44wrOOSzQj5%pOsz>*}#E#G_i^qF%!22{A0Wkpt40{b*EM{rpTOFVajh!h#K8yd~_4@zn%4Lb8zdHbfmr5zx zldOh+tsxqrZRy4U<$d5nXd@`cGF?VH#4R-TtI64W*z? z2Pl_TS6BO#!7XOIP5^R)TT`Xhn4x5zz0&%{s^sgC6o9q!{#%eBRx>ue3dT;kcH@}M zU7_0Szliz6_p9$Qc#7wyYoo+~hAz`IW_ll-=x%hHkViO$5d5@!Yw$XxJs=!w&#HmB zegcCALVpNYEznvZom6O8A9@@6V#`!d_-uNqXIM`bRPB5bOnqwaz?#~Y5O;Alj4?_t zCDUlrh+fAmG{Az1{v0}j3*5FDiI!KXmuhYB6w4mWtff3 zZM-|ppEp%zgZduXmUt*%Y>eeH{)$e@R4KIQiH!*VelSH!U1Xxm8=0Q2Uar>cj4#Wm zT2=B7YWHOZ(2jD^@j;Khaj_K=;!}XYn}a_4aZ_?fpLB7m_OIMYmBWxuZ_CF_?ZK-n zPq(}2!6hH)_AYBnNI@#FR9x)`$8mS`ev9bmT*rbJI*Me@n!|AF66?KjZeRJbgw%Etb zk&38zhoJ?fY`2|P<}+fTH2_c!D_XK&&+mjN0X-WCnE(#x=29C5D8yWV)rE$JMh=Y3 z!6Yv5FWPj!vZ6xiWa}zl%xn`N1>^6OzfwoaB<}y(?oXru$Kv);j$ zSAGT1{|Abg5kw8l;qzo>zl93@P8g8%0oV}KSsO;D#w=3Fb*r=?A+m$)paRM5fzc2qil>H>&ifJAM?c;?HVYfB{R z7tijH!ycj9kQo4Q$%0B{*uRB5RK(&T)6Iam3y5%UO)5Vtcx(nnb?FN@NadMTO9M7a zY;5k;LY1+MR$~@e;uo4-rsI;cWLQEQPxjO~lPx;Aq?ouk6Gp5wA5f(Uz^4>8?t7S< z12`ifa?F~5>;IusF&Up6==~lQ1lWhY&{-5*>Cmn?u&O5!B6}}RDCt6F>V|{;!Ny3k z&I(p`;TpEjB~o~7v#myihK4$AO{MbM8H{F$11j3aVha+0pO8Q&2DEL2@a6k7IT|jm z6TrdR1oU@cF1iC08@OGtu2Beko&yV1$bKb=T@EbdtFzwTRXNa?_udAa-Sl}RDEVpM zDp(DBd!@VNG$h##_ttzL0~{gfaG#PkHa0*TXkB;!P+MbTV_ng}zyLt!rSm%#eX+fTV~vI|8ra;6GSZVkYD z4SI}kxplvBCSknkDSt5@w}i*Q#n)rPh((fi&JKqgw}#`)ILWwjU1A8Ry)KBu9uAkr z=O46X2qe4Z5$K52T!)Q}@ltxH|9i8BmhQ&0#eXE?0eOimKV3T*~Y(_^5fmrLQ zC((^jQ3&s>;Wg#?C6XJO`(!>H)ihNBJDT*@tj8ug?RB2t*qR+6jyv`kW_%mz-pss@ zyYr`zJndr|OO|^%OUzRq?;nBxni15cFv767HejcL7ZaUd5fU5>^!5J$(|NAel7yIe zyiBLL!xy*hXh?urt1gDFwn(iM9{Q964415{svE|k4P^}BbS7HVzE zWv9ho0;Hov-Ed8XPl)UJk%-{c%|kM9^HU||#|DarA`nycp^^UAR1%q*OM?&SC z06Xbhr#KDTa=uZaUbsWc$jR+!gm+a@C0i(O-gryx;T>@_vjmk=P(=4}bk7PkjM2cf z`UmC6t*@QRBs+wnH5>V7`A(`76OqP9Z#(gnvpmqez;*;Zkfq@ZZ zd`cGr04op71z?6Q)R;$?-rNOm1x%|sX}MOjRai2Vb^paib_6gGfwb?$_>EE&?li0k z8FoY>51!!i9dmkwwJb;I@5xm;nshlmv|qKFz*f2g``d#N@X6?B{fKLC2pBC)IdYxs zFAsUXwp-q5II(3>AfYZgbMW-V`E7`uprZlR(H_jv(vml@H;J`UYXKQV4L%HjhmnQU7f{4k8#{Ly zErea7KQI&mBtp~tl;sYPyvt+3H}U6Bubo~Ud^d%@DA5cZZ!T7}3CNL(CACd0w0;&2 zFG*x9IyHt(!b~8-nUQJ1Dd#8chjV+8+vRnGvjPQwcV?N+U)?EAa}iiQGx@#U>7&CnfT;;-X@;7Iba!04Ezlc&AV3V{Z|xvE`WsA{2d;pd7E& z{iLW=@WqRF7cUs3DJFi#Edr%_2_2i{)gggBm3ZX1|5wv>)}1=LEk^8O;q(kl%?mYN zR~Ps4!7K+Cicv{8n$;Y(rkECe%HIVQ+$va9zHjq)f>)2~La??|gCJu?Es^JC~n+?9ei4BdjYmV;kc2WYb?h zX{=W@`QC*-uK>B4K5EKpXW>dM6JLamOh|GWO?{=!`F3|KiUYE_wSG{YEUKMqf3-`h z>HblD)Y&;)s8=w57K}^ReLe0if~&-k0P$dNW#z-cU$f)wmJhDAlqCY9&4YCdJA-w6 zP~06iC+>R^(%l>9C$5erui?cku)Y|19lR)c8PTmPjmPoorYWPE#G0w0Q%z3~cLki; zb#B|qkmpNsLtMkL(^xBr=m;PDB<@=R9GPE(gSD#UB2ev%KB8B<4fuMD3m%fa{$a5%S8<6gh1+|TnCtS(vZXEvEn zlUMgA9!w!U)o*>Md!Wz4n*WK7g{f=IOybJ@M+bRn`IGN2xFtrTdt_&Kbhp{&3XVK< zBXM#%l?6WTRXcqV(jV*IIshT@pbU0tDOqgnpG@`Ve6Y)wC&iR81wM2A!sgjMGM%zEhm@kM2< zP5#&74&3+TrPsDMPF$T$Ue6TodiI6BQ|>fVS?fite3~2^;1$xjO{iL&rjuHAR+DUZ z{Zy9NE@LN}|3WNq_{%LJ z)WT}F%~`-I^SCY3D?eUAuHL8?v%Nq5!`zE=rS=h&BG`%GO}<;QQ?}Ezkypv=uJ)hV zGH1bfYl`5Wb=*|-qO5wsY~pOjyX_CowB+H0=m&ss>h`RBGKp%u#~b$sr)U%6#o zX!b0SZM3+_58rR{m~2r<)R)+@5ZxL@EnL zOaM19Cnu+(;x&~RP%#9GlDWdBKpJt$bs2AU4@`|9QWZ`q(hA~Y(!k02_@C_fL^U9x z0>%3yAY<6qrXX}O0emFUcPRHejEY%~)AHjnEcYHz&elPXFsW^yHIqy*9Vc7d;RAz% zt%af|EabX)Q=U_3LVZ$H@~70~hst}(j<+}z83Q&C%HoBw~?QaxqAsTkB9d9g2*6&$9@*O36 z?2ha>BF-KY_akuMA@=Iu)SdKVy_?WXx$V|yEx-6y*&N!byr{5qM0nY@<;K?>D9F#T zv8(DLVtmUsnI@BKo`tbq-IV@=X-!|#sb|$<6*EGvl1Z;zKpV?5A;*E39BiS0AgCFD z>Z}8YxA4jfn6!4w-Ltpwl;?nz57e7u0xB(l6^^C1)Z3)0lnt;0S72a3c6AB3;J`%C zPW#m}fdiYBz^R^moO#fpl2Y@7Ew5?a@i?K?cU23Aq=&h(1i!$-)`a=Ehl|aqf*U#X zqEtuXv8L{x^P_mW8vD&e1Kec&wQiDq=i={w#{Z2>y9&;Dx4L4T1R1&~$5&UsKMB$9 z;3l)!GHB^fd{pV`de>#lvaOnWmgQZDeEWB&jxS}{d&uA}-8zbl*L`n(zIYebSAti1 zlGM9JlkGgOmzvAm#-O1}1P7*@6>Ht^TFtmUM*&DX4>m}V*SPw4wYa*$^WqSouUoGU zW!&x-0}K9mZwUr4iNJBwk&x&H#4$kXXac-p#9DO-FiGxH3SWVkY+oA!YK2}q48BY)n=BHmfVYo&8-T`9j*S&($d;t*_Qtw zZ*Lh^W!L?SF69wWN~NTw8>G7hq`OOz?yg0sfG9{vH`3kRA|WB&-OZvq&s_Mt|Fidg z&$+Ji>D-@|%f-BBj5+c*#-KJy{ml%OE$&rcaBo!mcvFH!rN3w4KfaDcVn6VxQ2Z$o z9aST);3BN*V%2I*QaZ>%=cCAx$;w&=OgvCtGha2A3>zJv{mtg;DcECB#xmUE26$4C zotrE68m8$tu2N2FKc`=6U7~r4Ht{&LiKJ7?B;Zq@&7miEIz_;U^;`+J)7rOZnf%tF ze=@88Tr%XNJ96r;!PIM8i%D?$*A6McT|;rC#c-Xre^&%?n0r(h5D?g-J0%o<_Dkrx z-kLbM_X*2UA1YI$3jS$sF1St``ePxI`Q-($XkIjq$AygPg=+mSI4sg;QOms|B+noV z9QWokXuuUI1R~;~aG^n}sJ|qMmlLo^fU>Ux8tlY#SepEa9W2mdbLWf#C)5jAI&f(L zzxxDe4DolV+92`)EZ{5P3Q*4ihuaEF?p2`ZQ6l`9gx@rK1PSXWC=q&RZ9b0)oGTXYZ=fwwnCM8l^kGzOJaK}po{W}iFI2soICPdyG89c&-BR)ys@ zV@^+}iP15b4ZdBaICo5;{`umaPHE|}cwH*FT|=(an7zUH26@nKgl2p$9xmh&A6l~P zhIP4ahU`TN7!tVXK+`R}Jf~u->-Fs2EW%gKEvrvs3tOhRZ`_|G-;T|r{v`>Z>-q|Dsn3lg>l~zE?O2Xs6 z1{d@I2g6nA)1W|*t|jH}^U*xLdTj?$O99a4!!2@1dW?py>Y8G~aN7{Fj|{hG zWkCho6joztcoFF|K=;x^c^q$lLUbZD6F@|7vW|5?nYX&Prw0nF9CrYnUABa2)aaJF ze$RWlw{f*s`5+Kj*5h2^ya67ain{7I8oN-m*C+a3X62U>`EY|)$^ILknW{>qcbP$0 zS&mpfbX+-xr{b2!5+jtcgNT=cS$@Jg$+7^$cxw0ai4C!UN|;umx~&=T$7q~|NV_(S zS3-McXN$OjT2wBOMTq3Wv7JKS`785P27L4;E+VVXQUuHgPWdz5K{q$=K+whD&`d+e z7w_39wDLw4Ov}kkH|SUZdhC)Mw~kcKz4vMC*Ns>^EPXKj?3coIgLQIJ@23d*UbD)S z$D#eG$zI(BU1rVR)iuLrNunIt|->Xmbnd?QCS}giGDY}gnXcdGdrrD&dylS zb_zBR{2R8jbsV6X80a#VE)lFeq(j=~b9LIrx% z+XRz?rS{(;2dME}z+X}og28l2~LXlw4*p{pj?$V8k`^Mn5jUJjISB4()enuqy zwex$%#;Q;DF1jvm76G3=x;eQ-S$r?z$W)q_r9&B*7QIvB6(HS3x@O?G|6E0Spwb?D(eOTjOy;$>WL$aASC9Q@>RST>0x?V0ioEIsYit-P*sN72&90(ddc*FJ^z$*=rliX!Y2HL zxV(^{JoQhXUz^~~M zY_1UsYLSBiWpD={hAFo*pPr3<5{MRjQFy3m6b6bUf+^Z?@S@0=~Ng9*Lo$ zA#@=4#&m2cDJZVtxtV~$0U`4XI16)4MFvXhtJQYgGnL4*6%LAgTp_(z!!F2h)7i7qBHmHLeKJSWx4qe0VrUXtBGnk+y!eqwIIVMI1Ve ztpI(V?RT;8x-qo$z=ak5<N~*KOD^pWTvmYTM>by_ZvyWvUi~D$!^QyVNi(Q9 zt$b%WoF36veepr3a^p`*aitw{{n@19Y2zDm>vY>b4>2}?L z?E~CqmxmvoX%FI1J(dB7F*F1)2-pxsH_%uonb%qRq8=zIRfirY3`tpfO`emHo@352 zj;#JqHHx)7-Xa%-g#i?OU(}HU@H&5>kDN>#NEHmGBV_=wb<_#m2QZSO-L#tgqSo9?S%|YU8zBZE;)ea z+XPa*(yM1wLneK_RaLoV2%)h8s(aBjyrT$+eDhzdMCjEynNJKjV7|*gNdUeu(9P}W zXf;r{v$v7Lud^2|kg5>`3lx<*5`wk_{KLjj{;7amfBnMw62vp7$|m7ZHOeHM&FYsr z|CVtmrb-Q#n%ithWq|yHqH|YXM>u}@E3SP02`Q*&&ZzN^Xzp_^WYRt(PkIgD*RRNoI(U@`DRcI1RoO!; z->e$Q(@1b{W{M4(L6L6;kYx*6De$@MoP#SB4LtqUQx!n71Z|_T4^ahAuTqdesF4QO z-f_*}V1@VYa(QMkf$p_IV|3DK0!U~BQ(@A)(*;})pM^8l6kP%Ka~EMjp`9tM@$UA@ z!24nq;4^x#JLo{LGct0d$qQQhi~O-nq$en6L7lW#;xcyX4DU9e4L0@?G+G@8`Uub) zL4c?iwEF^o3}(g+oJst-0IOI&dMEMvb;0ZdsH05GCoZqf_53wSBrxckd@ zU6I^yyx5RAKMLd(JZvy>2iig9-Kkws3Y@eRr$j$4c7kc!=<65h!Z0psHOjmFH2AO9 zTMUL=yQ73lHLP^l{=FxI9dRwL7Gnjuw_E`6a>ER%Nt+O_Ao1M)$SNF6Pg@w?KL&8` z$fceDM?PiE(uDxePqZFn2#xto_pmBi`@z>6`)U{JFx7@DWTxTgyRxQ?a zFRr!`Y3ry zgZ+tTH4fzWufNA8`8_pHv7sYoGq%qg-TEiezAEl=Av>w&3ERVG^3 zOWcGf%?p_tgZ`D?a>*lv7h02eak%o=UW?;CY8IM#sV7IKOpVaETf+^1Hr(rxI?B*X{)9@1tx+<#H-4csirZRb*6qZwMJDDt<;{z z$0&^%J!f6`DHU`2KK)z$^Xu|5t6VrP%6?b}@~S;mEMVlW%6wSjrdWM|$y6 z_l_3MKW2orK{1Wme!(l*8(S+Yt4fQ}5z0DmDTUda(G{=xexalTIrUQ#he~&*b))2) zqlMd6nbRF;(k&d1_$1w7wOinP!FMYhgeCLuz|r~rpG7%w)PN%##LjY_E`gdvi6Gzr z3hr!zf=%u_K7Wx2P6V|8;&%0qqIO4K2X?uvp@ErBiEhDwUIEKhuw#vpFRl?IM|=56!=@1XzgRQ*+yU-ATwt{e()eR>#47@7AI>5d22GNHoPZyy1P_31J%-Ve< z5?YD!@F=5?tJ46(>XIFfWU?HO$%p*Z1>G2CD=lN{G9*KZL7+0f4vu8omjy^8cvR52 z3pkemWYg`3reuZamxJZs^t5o`3OtY9q!-`Vvjk-P0FRJ<@)Tj^)~4WMb5$`fYo!yC zqFd&TgDO)QFT9{Y2Osd;90On(p@6oXCEPfTb!F9L-}A(1Y`y+29lBP^2c<{971j&l@dk%oRGwhkoEh zx`qQR!a)$XP^&ykozWOe629GNK&Weh3U879z>91Gf}vZ_A$CO13fs>QmQz6Mb`bTu zNV_SBVoWEB)mKE=mP>@l>qCKg90}#LH`MOpe9-1 zYEY5{9^3{EGe;&bN>`Zm;1{ud_H zL|QYPvprmiO8ksNnwC)|^SeIhz5S*IHE&Qy$#+pHuke$s4eh0GqKEc6A_s{=Z8xXjO_W#2V04_!< z@d`u(n}xVaLv)wl%*gCPUunE_JH6yj$hV{C-^@+ep3labM^m66$YU47Jllad=EF8i)o3e^C z$Ld+Vmg*<1dl-*on0_Qr)FF?LS?a|vj(Fs&yy#0ax#sA~oYZ^%#drAJ*&MGa3UUp{ zV?kb;W!~C01E|8yolI2zH@8PWO|DdyDN3gXLmiF`7ob;Gb-4mB$I z66|Wdz4V;0E!Fw?y7rLr1-)eW^RB7HbC96Jrk(D`xtsaPN?m^zG@H6TUp|Ud95Fr= zEtu9l5mJ#gdyoIYceqSCDW<|FS$DY~c8Klc-F;olB!to_gVHJOiwd8PaHgt7FfQ^g}HkfqsPIFcT>*J7mQEQ^c5HguFsdHNRpXo>^RaZsVc5i zMuNUUH*Z9w-_P9~5&P(t^O7<=&b09ll4l^W3TD5V6nMbD+^-NPG`?#3z}@_TmiYhx z=fO$!hbEunT7hK}ktQz>H+1crZn_QZa#7nCCyqLrkv@l~l)<>!u1Q-*G=KNy%Uw#! z6oIRE;kF4r+P+3gjNSHOs1W`Cd!$BnDVZc^m$#cMZ+*I_K8=-Vn-1w&)mXriN0l(u zESsNf`BlCAk+dmJpanrD`!8@f09|GMpEjk^YfWM#e(=sCq+5oYPOWT4w{S(|ReRCa zHM*e;#O;V^=Kf5+&|wY5fr}*nbQt^6)G2OQw#FE3vtS&bqg1i>5gp2eesKg*rdFe` z*XlNT%VZY*;4WgLcuf`Bp|>l{tYUwa&dD`|-v4fXt`TWcX%>lC$b-zcZMf|BD;&mP zu`eRdh4u{}U(~OCF3{k_SzfSb3b8Cqno)fArQmf{q*U(dl(9+S6hWTwKaU#*(J{Y2 z8KZcgAY!jx6uc$>t~jM@!j~jJEXu4$`1LCVQsVHi(@^i3-Qo4)tET1@hgtxgtn=}@ zoEd9uhVJsTjM=xtC_ak$&20Z{no6e=SBoL&@6Rm^W?tIggx1J6FunVVEKe_&(CNJ7 z{EPRZ&XB*dKyM~+D`|^NH0&(&nXs9Hv`cYBq5zFsy56okn?EkMNZal6{@T!JEV=dd z$t#_4+RJzX+3S~y`J-csI}3?a3?qJ#H&g{Q4G1{~U%Sa^xyFpQy`O9iP#kKt+9>LM z(k9g)+8FF^^!%izn+JK`hKIGT%jhW{z+ONo`L_6H+%^`=Kd0(D%g8%ALe3?f*bYB! z+G&7p{WPt{OWT`(uSSa_rn&M**>#AShsWijZnB8o>=(Ygr7=$KiBulyBTMhI;pW%m zb95Q`*gtj$-|4ZYCN9bTh$`OT?RDNJX;=(z%bnx;4V}`vyxG06WuCd3*RLUj42%|? zmJ{FZ-eo8|eHHRJ2kk!t(0k`N7-IfGo9BRTfPa@`2=T)|1l;B58 z(V71{B1T5dO{w9Vae@T9C&tTd^RcB7H1R6vgN-w97aS~e+X{$Xuule7Fgsv$EFNwP z6TFY>UjMNiml~$pINF8ZjjOu^xz>3P$goRAuStI*IOv)F z{%(#z{8l09wLPs)|LV+)P@VSlc*f~ttUPY)NWOeBW$PYkFWEEgPo@5|ihA2L3TZR3 zMMuBW(0dJVXvT2-a4b+pGzu+YvHcwrT$FZ*)*`Vbjy%SUZsPg)V*-JDPi<&E${^RX z>%HD8e7tLZE(Lv*4n*n(trtPw@RM%lqbo!t{|aPD>ww0R(xsj~k{x2agS(fxP1O#C zYfWebhzR+fgmciVP8+DOT$`txD6;E~#s&9DYa37C)2~b8#Tt6kEK3E~gkgZh8cbun zIbGcLV0{-zT-6!WZOi(2eh4Ph-b--}?PU+VzEUwmq!ynsX zhRsn~S9!BC-L+1-UAW%97;02|qal;p(%&(&^sN|8f3WBrW6rK?$!cE!CYS+s=|hOc zGxRgAZ$rO2nkeJ9bzsI}S4=vTxQ}}u^OKCF&9hC(e8~x2zBXh#q#@I~-mRmoSKDL4 z*lU!$7^KxJZ178&b@U!ZGIB;(pTacEG5Ex~xg0@$d2e=8^OpRJ+nFz(7Us|0ALG-#he+okD$Z|9BnoKn6it-i7I>E-tVh~= z?-@+9uqyWtOHf%PU6FK(RN94qtSk8{jGsw4%Y2Stqm~nucQ4(^Gl1P%Th|tvKa+Nn4XV$%DOkOku%c zu3e2Fy_^H%F~v+|&;L11;Tqhi5S&+c-8{0=0H}Q2k^F*}9 z?Ab3^K+F$tpB^i@tMIqOb`}2d-9{MkC!D|7c_!%Ddy$)Na*EhqhkW4IL9%=n6?itc zX|YP#F)239zasCCV%_yRQAW{c>MYMmKxYY&CS_b04=b0HCe+`-wIa*wLSK@1c&a+B z)bIEN)@{{ISeTGH+K`xV*l9IlyU+^O)6Q*Phvc6YtxcX1?B0QAkkF7unF>hn>$25~ z08AQAdcsTv?S@gd1KNyZP#9-Ob8Cf|3@7Pls>C!#cYV3!HvcOz6X!#5+V>}?5kF*{ zW-F<~f24+~75LnK`V>J#5w{||x<5BPdr-0Uz`1WhPa#A-A=R1HT#i6xB6j{K`H$+9 zV3rI|aju(|gn1o*eKB}?qLIeT?giD{6@7~Yqxm9R_4HYK+lP(Ev^oSn(8omYp63#2 zmpx`-U&Ja5-yd}X*PNVuE`{~XI*00fC#uwgKx&S%4iLK3oFa0>{v(0}{z;KTDRfl} zzC?;bhdgQb{UScsoWxXTS8Kx#_OpX1BBog#f6dCNg~=E6eV@$+=y}hOY=3c2FC@D> zfz#HEU!+rF3ROPmP$hr( zrMMChC3(ZQhV9#olojE%4E51#o~eOav01{xh9*tdFZMo1d)_Sad2acD#}Qr#5)j~; zG8y{EsHY*>)_k*HgDTWNrviZ!Lde9%AYyqXWt0 zk*{;qfGKdNKz-?*>MMk3eBt}|<9oH}}v>g2EFu77p}Pn|6dMjq5# z#^)$(y=IoupqJiptp<0dSDPAvV6S8i@0-<;QzT>Dn;ZS?8*XB3v9Y;{L=_6$>InAB z(a3NIG}549OUlW5>5#O#*K}ReZR8@37K%gaAZ34{6b;a?4dpTxLV=Td%~clV*Y}eVF7a8ZH+i`(;)xW@3qi9~gBVk14`71O^F<*ROytGppOm@(dq*wFV z(Ql>{gOOi;o#{_Lr^I6#MByY_$LbnVAM+3n6x_X5!HkAEuWOwD%p~(vAVuG6oQ;!m zv@73=6rFID(R;4pMciLI%hymCwi)$;^lTSbrn8l81-@M(lPSTA#bpgkPJT)B{vC~J zn1XKPOpHp2QoH68QqbR@Zg0K!=BGIYnEYy>{k(e;5aAfDQbYfct zUzwC}*3(j_4=hCZu}=***uqQl{rip~{` z8$5PpFSa!7Luw)?Q9=N{#mWBU^UnWJh1R#s5@8GnOIx;A43{I}%ML1daVU zTCb6hChQlDh`xboCc^<66re_CJWi6FHVnzhX&A?lh zzHEo|?3XlZXO6VCx+R)Y(5AM^PZ~rH$fFO~A4)0-qKrOIlt3PBnOejqveJavixD?` z#BUOKm?@a7C+32x?`5|qtT`L11m}MBtx(&T82_Ycf#)|Jc~#^!i90j9-(PSDfO8da z!&(mIqNki?OD$R~ z(fQfBG!uIrYPH^=0y%NRVhj#npV1lnbw=Yyr3$msp$sj?C-3A@F@pPh{2}=MV29og zqMJOZd-MLX)}lfkWAmT~39|AH{5E+g!#qBVM=Sh38OJI5qgu?9RNdt!>f`fO1jwO8 zU=y^F;gFDYmtGKFT74;Q$5DQTji67s}d>TeF6D^_)>h@SUTclrhtdV>Ys0w`vPqv zIqzP4W|`_lwN7Q7E_?S2{)cBTCTc7_JnB!xxZTSmQX8_N+3#TR*|X!(PT3e1H&FWJ z1mk^9)%CWtP*oYgei8+pw%&OK{&b)gkxM})Z;bgG`aY?ExY-jTd=!?}+v_~8cUIf) zWdnTk4j<=$gZ_6%hu~>xXxF3MNUFkXFrAr+k9lAKNZlMb>(HI#i0UV#ZGf7-gEn%C zr|^A=w-WL3X+GPtP9Vk=ooO^pawT8lcH3Y0`Sa&uYk+Oj#oBr@RGtZ4v({m?$?FOc z5fOOF?MKx#y4t09$jy4cF81M5SRy4W%=mZj$WC@{z7^I0_@w`xLxAEG;K2`2s;G5e z`7Y`A6afJNlyC?ll-XW0^?wR4$E=&End*=)@X1Bya>U4dC{iwZC5hoQ&}cWYSXr%C zx8zhmUO8A(Y4U)3cprZ?E-dM2li%Q4;wR9!+f0i)60A^X9YhdeK63Gd@_hztvBPpvtRhWDzo$!G)ZwOP zC{fTtSu<-{dDFg73?80-L$x?-j_y^%x6Wl32c+){s6bx^H_Ptt6>({BPb+wMk!Yu` zH_Ix}y8BI3rnWLfN7Loje^*az4xDsb<(M2!=O(E$E?*K1ub7of{Czvb320Ynr2z1Y zMB+Ih-Q#@_WB`0b@W4*p<#I;b0jc3w3W7kmnWL+0VP#ttzJe?_pG+ z(@u3bnDU$LTqCL=?X1?~UzFbsh!ipoC;#WXSiYxO*MPSkfetJ6%OQODEZ$>_Yi72E z6c@8T1(OdG-I1_FKf|Vuy0WBFO@g2NUBd=phFQYm-ren9^J!&qmyRPxrQD5XJ;6(W4g2FTke!-*$mQkYd%rey?o z$C0=665`Tf8;9dU2J{2R0o26rMME?p+}r*E==fFne?l?v*iC*OMrF%zrY`va0YW3NI^ zu%1KP_g_KcT&yIzd(Z=jbzaqbBlr_=o5Bn~hz(_w%d4wKAKU5Unx{*<0^1D)52R9A z`BXTa#Izn%G=tc;+g-!z+V2LR-O00ednxy)_rw0h|Fr*RyfdNIQ~Ef{_6N8@J6ptAc^5mdY6e4vmENeFpjvzVfvZ*HvCffAXll;-$5TU}n}8L+(+F!R zX@>=p2ZO|ks-X@g{&d?Lq!Qm}z6q6DQ$5o4oEVpRlhm+jJ0vN1XdVLdg^#bdw_ol3 zqi2v8Z;HgThmE#{h@hYV7Hcd20q7jn5sAJjsu|o!NJ#50J>^(f#m*)IVJ5gaurDn0 zA27ehP79F1yn*>AAMavU&MGy{#Z8kzp98ZS{=*Wm55LXA%iq()@sF0pKEHb*3&I>k zq6z70MrJ{jd?L_LLuE~Atm;CbDfU`MFR(?(QM*(Nv?f6pA z&Af$sekCjeSJ;0bnK@Lre0JHTKhe!%+Z~OlIN|j?#v}FHsJDvJO)IcJHiwQ_1m-@P zc~*1zr+BT5p`Q?~V_5?}bF#JFof2E{XvQ-SBmXWd{8EH%}N{vYLDiF{=H|4xv!G`Yr1n}kv3wgzK z3>LN##{G>X*m7Yd)PjlyJZr|1)77aNNk7N*cNu2?B4!4N?`Ohip>h?f#iLCx#&;I= z)ALbZo#CZO5ds01g=1E2nPY{aUAae8>BnGKtBv7)IKTt~0TK^PNni!gh@C7l%XycA zejbsh#k##3W(PW)di7@Q;#_rN0j;lyjj-j%4?{;>CL+jCZIY8uv(1q>cjJqu9#26Z zx|_g<+jx0DcS@I#s^VgW6f%K^GZ!e`!@=rQUf4TI@rdu}i-arS@)2zfLq}b{ai^l% zpcB6awnMbpA}f3VGok-t3d=erZ(GvDgFtU_WEw6dE~}y{W-PCBYP%l@*>ovHQ>ViG_2HzR*Ab-~hbh*!yW5g6q6o9H<`am{}K^4px zuF3~+-vxLozIsxTX*PLYfSi#6bF{v{$=2nj{oyJ93gQoTJQ-#nE!#xS#_sZX6Q0M- z1S(+NKW0X9gG|~Lo%lkQ!HH3TS0*jA$H=+g$JilefwHtyk5F(D0a^g0vc41ocMKN8 zOdQU2FDE}_bw;Lvtb7112m-Hdy+(u#3^v`RGdG@gpd6~-k3ZlRr(7Wu%~0Ag)cpu( zzK2r;%>0MJIw68bFqLcrA?HhH&^#9Yu>bil>n~{)fMxX?VztmAFWUfUWA*Qj|Gg}b zfhTbigG{<+8U|(O)+C;HMC2s1e20ULB$q!^66<#i-QmbL_#-R~#CdyAwAT_j6u6z5 z9S0xfGuOR6i9#T`OFF?wKC6m4ocsGz2&7q-R=cN}-l}f@T5XPTovHrZx7j!hJsXj~SkF#hcwNYlFMesqtz(#=RX=4YWz-)|P)&(-0t% z9#3ozGyAwi={_HptM+n3Z{;soUG`?;t;bCND0_HEW=dLhQ9MY>6OvCs!-| zQ?B`jl(cOyVD~OhH|&2#M1LKKV?X0`7uvi}3X0XtUtdpETG}e2e!@0rlv7!#@zA*t z1I2#I?|Pb5n2_%E3ZNcUCkKXySad4$vHieA81_gZ@4}~I1p!XXYw)Yx?XVou0tArfs*}(CAX$ACA}O_W#oQ2VbQMWasuRHPOm84c0yiq#^c-3qr!bySDK*!|d7G z*2f;8Q(Rx$MN{N)bbaJUvzGs#MdQ(Gv&Rc87OV*GWzvfmG0 zTcGXbuZtDRfmY}d?puI#w`Fa4BX~2Q1V1%FM(bvgIO0Cde+$8NBG794U2X|^ssKYh z!261-mIl!jU%QtAX%hY4S2_XqfxMoj)YD~ZRGFPRs^Ac|x^Vweh%nbn@gQV_#=F$? zU)mDew?@8t@FNmo>H5fc^PdAO0!O3d?Jyo2C5cUP`70EYLb)|7)j3mu`|ltFL~jPk zrWAJTTC}BQzF>GQ{ua7D7>^o$KI7C}O<{;XRmc9Hy{l{g?~9MZ+@OejaFvqR^$1>G zVCSl&;V}^mPWy+Z8eKYGA%e%71iP0~Uh}rz-Z1NTzGmCugoGOm_pI^nec*l}9y9@F zhz7C_^{(74zcORHzAJe#JRtr2e~y*-Tbek+zXUGP_z*|p?;ZW{6nwvHs37+5tv?3w zjLrnMt_MfY|E>=5-Qmq((|H-K?enGfn3PDaR7ua1Do{hBD7aqsFFS(_41?d?9<~Dm zgj658{ODgg1K1sAz(US^jwxwLp^Kn;>d;ivKg9s~TVZi{D)$gfoqUYv!+Zl)B zI9rg4dYL<1EOfIY)O)=rC+h?#!+0~?(Px|M?zlYVdb;2H(027+hCv2i{g)7Pjs}^< zZU;+j0LlYI2onMX8I+gwzOHG=yNY6!qIDX(})AHoLC&K2nHb;?bDHfKPY; z1_%SBPo08V;{xu78GOtzuwl3in!rG;F92o13uyEI+hAprNT!Wg+P1ALSWDgivqW2!Ak5}Ii_Tjyj|Dh<_nMu3& zUa_ci0w_v{2aw~E7<~_^xe@Q!Aa!JW*aC_E)vX+J^Wn%6r7ho{bxdbFn#+V8Is)VgDnz*6V-K6;PIytM z@w!{Zu;tgJ_B*MY3XSfEHQ*KC*^qD#fh*~ldSlf#tCY=`hxE;6 z*52yKgLg$O>&bWP*z1i)fgH_@G51GVhXrJ(a4|tm1C5{C@(R6!2z|rtT97E{NguFs zFN}p_;1P%oXRo~)ZNMrY*8afm)ADF~x-_HyC*c0_n>_|1{DXe=b%QH_)ALm`mZiZ- zQ}oN~dQs$G_MjICr1g(+t&0Kp@i3YBi=)KUXuXF|SeW_c|0nrAUPh zGE&>m7(~w@13mW&IR$g$;h&jh0|Cdi3f%$1Q&R&*L9CtzvAOFPSpG$d+6Gvn$V$5X z`OT%k@z?YD>952WoDAtIhl0K1E}=Djn_<@DPLK~afXzcbm~bB+?d?un5J2zNFie_n zC~HxzJ8qAA!?>Jka}hY;b?gwV!O2-GWK3YXS%pBR(Bb+K{x;MR<8Jggi%TK7<~&V} z%g1m%zNh&6nQ%RgT)f(LKvgA6>#NVIU3gLhjbDJDRVDbppfZ}iVXfUrNhpJ-b8QTb^gjeJN6 z`=(B*2dh!3wfT6gyF{*f0q=v4lvS-uk=S(Ar+*~(-OgydNRW4}_n3%=(q=XsZ1N60 z54D_->^rXlUax-7HJE((yVHaBO1Xgbtj>fU`${M(3JYeg5lj+nGyXHA4w*t;0Qy-W zogdTVp9>rdmxzpfN)+9+B1ZllHl$)EO%4%|z{*TAL>(ik`|0KCxLQMir)q#|Ahz1C zAe& zBbAjP$2ijTVagjZ;P?)ttO^>PkhG6JV!;rM-z0ZSkZ}(+JbSR1fwQ85m488n{@mbA zT@LFRJ&eUqX%3&e++%!y82sVfw#V^@N_{1JuZ4|Y!~K>>X+C*+@v22SB&hsy6J6#u zwa#QPxYJ13>uX@u8%nRRp;?TGlV>r4or%PU(pqVOjF!V%BMM65-{LKYgg`CT*?YTu zP~T%U4to1r@^)?T&SCA3c`d_2XMgimR5Jnmpn+*etnXt=y>2>gl~jmR*sgR0)&_1o(+8YPmP z;+$oJJ?2WOGM2EzqB%7aSO0}~@(l=-G&0ZE7r+X`jEgz}y72<=yeUc?B zwTpz2nLw_P`JxBUzSFyLxHs3*t$!`y8RhHrPX9qn6iI zE|)e z>z2#Q2266Ky4Z^#A9kOE(7W}k2x#{0OMV&X%KH4x&>WoOw*B%C;)=dqzbdLznoDnQ z5c+bg=q<}0C{D^4!pgB_V(<{56FsDh1Y;X&;FG=-XA;@d{&R~SIAi*dhL#Ek6+}%% zEbjq4+|rAIqd{>hl*dDdnsum zeIKGyNxxlCNiNc480)yk<+$4rQOR+vkpIj{H@d>~+*Tg7=c|y<0&S~&XK*$r)q2X> z?|?)o&3fI?sPY#tOqEWojHO*mWA`@WC#<0X4a!+L;hjTHRVCRuOHufDi-?d7)(o>j zG*3r|2f_%tC;4~pdRNDhNxhGUCB@1rtW#3tq&d#!uFnz1Ot(ih&IRfFLPP0?u;qVs z!X45S?9@+1xy2r&3x!5kP0^B#+V8Z!Cdt&usFlpiQagKarT=9rmd>6-s7X8qU5=^6 zKO-ow>xS-R6AQtxl4q(0Z^{F7+PhN@NP2TlbUY(AkDZ-AYJ}&jI&*{A`643=O5xT? zZycQ0Wr6X}l<*Cf+_4=3#EAgdetpC%xdUnTDX06NIo&aFvS9J(!n!gzDMuudO-6EB z`{^lyb$j0nnH$_xr`G?AA)3~&nP$#2@{N!eA~!Y0s&YE@V(U!EI#n+LUHIXgfAh@f&zT`6ZIVB&{0?vCutKTV zU!1O>@H9nmMe4-*jWjwGM@eN7liYU04zpBI=QiVLK?}p?V4<jEMboP|o?2Mc6bFEf;g^ z@FCgdKs;aY;vkP>x#et)IGJak$Fjp0EPw%}pZSqPSMLhVR%_*vmf)yc(Pguk^H|%* zmVlVb|knz+-NupDnnKUZzpcg1Wem-F*4vdbq8^pPZ^B&hX|aD{eUqSocC zz88en5RV;aS%wA>Kz?8Y3oGPOxwDdGmbxuhNlrw=Zk*yxo4vJbU}vyKBq)i9&so+caE81lco#kk{{V->*y*da5iIneT$5s~kO(bL9x^d3{30 z`UX1U>e;%304HR?5R58;HqoXCU*Yf>y9j4KZuf|H7z~uiLgA2q$ zNyUR`P8iZ11k^VMorKTAsS;s%7p5wu<+^!TVPp@~vx%ayT)W6jDN~$+K0#}@gJMh_ z5-iIKGa4mJ#ph7gv*>d3CuMXmDCz;H5+Cb+YcWEMp`oD9vE(#IX#EM*I{fX@UYx%d zsf2s}sq>~2X8$soUf~257mGh460Ow5mmYkhHNc9-a>Au1ow_KYH4h+lKy~rU_en?~ z?RlY@tKAGrDcyu$wX)>qtsxoz8-L^(7MX13IV}3}Y-W-)=8 z_UQf4^I}d+pmWTBgz5D-dsRsvh+&5v4SV(#C(yU4rpajamjy-}lusFhijHXXLx~!m zf-CBKHKNdAxoh~ni7%)X$?|M7Mq}L;(+APHyyUEyvdzPE&l-1%dLU`)$;5*c`)~*H zY#oZopR1_ZN7T;J5o@wqv18Oa!9N}I6yqvWOb(is4!_xkleodP=Dx^rw`%`5 z5)y~CD|&Tb1IJ0}h`R98=v(6URihn0rR0M<8RHvElQE0DqmhUlwmBC@RTIYe zi~bqk=wiIpa{hEjZP${|Z#3!3Q%5y6y+_?14ti`{yZ;*V{*n61`hwrvFa zBWBUQW`kKYyQ1?m4UIkt^Z^2gzB6`6U>1B9~L_ z7+ewYQsT8#-S~`p&P>a#qV{eGd@0v}VG27~A9{~^k=XVrxlw0u(12;z~(+RN3 zEofQ2O8Q*2c}qD6>IG`Z)M?YP*c#$rJi=4RlhpnE62$5kAG0k38ZlN)6=0Oj%aWlw zXk~1LYwb?~>D#YODzJn$n|ijyCf*%2v=6S}2Rqch&@{9Jk-m$cKW=+fQRC92$z+Bn zzZojMv0jk(%8H%bUWiRJD^!TYxjvwQto%9K9DVLNL?;`J7?W4@h!}Y3eg}M#v~RAK zcA!{Xlia4SMryz5a!ZhchCWxCRdh7uzGe^X{PXplb%=H;w9P*wkPg}$PeP*XMDA#) z8RygQSqCxwP#N17!O#r$b1mQYIn9ki?wXfS`s12PP6%&`j1r8Ih|C*@?x171c* z9ewF}nz3{ee@$8(O_%p28HY}8m@>_*;7fo`bk74wMckvCo13}jYHJT&Wc#yZ=eghw zt-deA3s(nkGNrZ?jJ(uVTV`2`;%%E|i9Aa{b-Xuj%Exc9!{1r;o_Hsa%x!hL1%w{u>iH7+f8rG$|rSh=qV#lVOiF$nA@Y%*6D9x86OWFa|n4+I%0Q6t`i6OY+a9+d#S{mB!^!w^C*S>#fuu3BL5Cpz{$;iC9a4z%?wJYBnT#W?3C zL3ZjYGb&b##J`K&2mH#;ChcHMI-F$ZcRb_II9Fj(qaDyw)G8j!;xEUh#iFa8B4G&# z4tr$vVB>lzZm;=piw!tm);3Lbt`AvKE^X$gi@lFl4ye(6#F!9x#Y(sOs@^*`y|!BY zB?80428(|SG;m~~@!Q8rxKnXI6z}g-z+Ww#k_JZec>iq{5p>JQEUGfiD3~rTQZ8mD z$`X~-?-hn1{`nVk+y}_cha;Brx7kSYDc&~?)q01A`Td>ky@!VfrcAuecgLIK;D5_8 zi-nkR5v*;&1$t55loC18p?!vJ2)##SxPf44^OV?*$~vXyVQ65j*AyJ+44;;z-8%Rznmm+ zHAVocJT6?{ruTc^ncf|`IhG1D2hzE48}0YC85EL zN*9F?om29Xaxktlav2O`Fs`}36_bRSFx0q3LSVH=VNo_O~CoVWqjDKP9iUk))*4 zj;wgyRE(xYe<3u*9#v%(Z2msrGvd-^tLt*K{$2GzRyVWaV7z|?rT$=g6#2v)*VTxh z{A}gzDsHS`JhbQIEtb)YKm_~|8@Nc1;}-^kHb$3pU0u*-waYAhwvJx)X*ZbXoqb~X zeY(f+)^cO%pPC&q62|yoO|9TMXc}2qN)WwH zfi-j6W}D@FZ%}nmi4mC$f=335`1xko&j*JlG2)J?bQ#aQ}FODnlg8nnx>A2E@a=lVfEx$!1srVt@3AO zf`+H{9At#b-CdZ9W0|CF8RW8q#*l8GG!ERfw9uJ|S_sz?3M64b@H8U+X)g-IGvGQ6 z)U`eoI;BwQ2oU9Kf}1un?xAE|2jog0NS_q(mJ;}F0&#oz!`XTUuE+J>b?~zRlDA;n z2@EnGPKc3scn4nuOR9xiH5iPbe;;SuxgZH6z6eQ9$+$VE!Xn+y#h&{x&jg7jjCN5F7|uRK&x(3x~l zh|hGD!h5}&6}c8e%x}DZlo{xTT)r3VjDaj)_A9WP`N`8Y**>qE|7m1xcv=ezt#d#* zdla@^rxsioy3e&pCRhg`b>DyS_Si-Qo6Z8j*6LYe_V#)}9NU;-hIKEJFw>I#FBox6`;uL+}%BqHehAvIWKg zC6HD&q+!~WS>7~L3m9klM@%J~Bz0$=bwXn*g~RW7n0(|YEzVJEG~d8|&dnWXA2Q!GgPZ_kE0 zm2Qq1`Dm5eyz`>()bqBJx{j=KFxno>2Fg%tjU2&)8RI(|orl(YEge&VjrCNa`zLh8 z+0J9Km{eb=UkQ@|=I=Q?El$+_DS|9B=$>oBxs^yzY#?*-x%-M5;MfiuAS*cMX}%+C zUYe7@7Zz!*zThFy_Sbt2?%lGEUPL|_O{MN^2$^h)yPQwNKxUhWHyE)!p8qQ9uUg`s zuy9uFYiUOL)}Q|cAIifORM~1qCg|n|=e<^x(a$uOQiLsmYw#W|NeUe{`|UZnc`HUU zPf2{;wB}x~t=|&q*gj8&6IM4G;uTIQ+m=Ph&&0GlXdgb72XA`UCjV#z^(4j-U4kSQ z#rU*pet$tmz+1F)VrySwgTZuR-#rtoYLpt2hoPjGaw7ZHCoehIAb0J<3m*boem${6 zgp0cJ2BKCX*`BNa~72)9wis=*o*&T`%F>u+Jid?iF^DSe) z=os9F4(mUd+pV6KrY!)^LhUyCBG+`Bq#@ZQ+%NiK#d?4m;5YlvzoqUoavtS=SB) zg#@LNi$U*uJIW?`?<>G6uUX#FKp*JjL@MCy1|E>h{cCG+O4B1BvxB~s1#Y-MfNt<* zQbWCOhJ;mAc36Hmq7+_v@OR$Vr2V%Ohxz?=1at)VJ-c20=4LtD9&@gGikhBM_~(;Q z=XnBz93rUvu0LZ@c1_l7s0(e`eBprh4in;b`Yi6@RbctV%m%AaB3t5$_Zn|=lRiG8 zF?l@$B~E*ji!3Lbgzj!aA(X<)=TB{0I&+gU+E~1}snD<7T~82s!(4z;hdhFMxMKDH zr{{;(Cyop|8y`wN#lIZ(B{ z0TwHwZ^0m#dlux08cQyluOBac2qY}yQb3GnI-mx?yA%ZOmrioG-}<1O;_+V)J`~L& z>3jYLas4|WNd%DH2^vd{N`{QU+0nt3{=t)gi5`KP8=D8}aY~Ku+OS$T6*9G1(s?>< zzIH4p^&0pNqu`9ED&;|nM=t~K;F)h2T$%J=Y7tiCl$ap(qnCj Date: Wed, 28 Jan 2026 03:26:55 +0900 Subject: [PATCH 254/619] Fix typo: specifed -> specified (#5873) --- .../CPP/how-to-create-a-task-that-completes-after-a-delay_1.cpp | 2 +- .../CPP/how-to-create-a-task-that-completes-after-a-delay_3.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_1.cpp b/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_1.cpp index 19ec97fbf8d..07d9a402d18 100644 --- a/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_1.cpp +++ b/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_1.cpp @@ -28,7 +28,7 @@ task complete_after(unsigned int timeout) }); } -// Cancels the provided task after the specifed delay, if the task +// Cancels the provided task after the specified delay, if the task // did not complete. template task cancel_after_timeout(task t, cancellation_token_source cts, unsigned int timeout) diff --git a/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_3.cpp b/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_3.cpp index 05fa30ae3d4..efdf43e9507 100644 --- a/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_3.cpp +++ b/docs/parallel/concrt/codesnippet/CPP/how-to-create-a-task-that-completes-after-a-delay_3.cpp @@ -38,7 +38,7 @@ task complete_after(unsigned int timeout) }); } -// Cancels the provided task after the specifed delay, if the task +// Cancels the provided task after the specified delay, if the task // did not complete. template task cancel_after_timeout(task t, cancellation_token_source cts, unsigned int timeout) From 1944953b7f81ce6eaa981c9200ab167530ae0914 Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Wed, 28 Jan 2026 02:57:32 +0800 Subject: [PATCH 255/619] Delete extra slash for link in "Microsoft Visual C++ Redistributable latest supported downloads" (#5818) Co-authored-by: Tyler Whitney --- docs/windows/latest-supported-vc-redist.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 33c92e2fa76..55adb454dd4 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -145,8 +145,8 @@ Download Redistributable files for other languages and architectures from: **Release notes** +- [What's new for C++ in Visual Studio](../overview/what-s-new-for-visual-cpp-in-visual-studio.md) - [Visual Studio 2026 release notes](/visualstudio/releases/2026/release-notes) -- [What's new for C++ in Visual Studio](../overview//what-s-new-for-visual-cpp-in-visual-studio.md) - [Visual C++ What's New 2003 through 2015](../porting/visual-cpp-what-s-new-2003-through-2015.md) - [Standard Template Library (STL) changelog](https://github.com/microsoft/STL/wiki/Changelog) - [A year of C++ improvements](https://devblogs.microsoft.com/cppblog/a-year-of-cpp-improvements-in-visual-studio-vs-code-and-vcpkg) From dfa4b622512074ce616434e38c36aa5aa60d4d2b Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 27 Jan 2026 13:31:21 -0800 Subject: [PATCH 256/619] Fix example code for C2277 error message The pointer-to-member syntax creates the error but the simpler example may convey the point faster. --- .../compiler-errors-1/compiler-error-c2277.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index c5e73e52a40..20429c174ac 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -18,15 +18,12 @@ You cannot take the address of a [constructor](../../cpp/constructors-cpp.md) or The following example generates C2277: ```cpp -// C2277.cpp // compile with: /c -struct S +class A { - S() {} - ~S() {} +public: + A(); }; - -void (S::* pointer_to_constructor)() = &S::S; // C2277 -void (S::* pointer_to_destructor)() = &S::~S; // C2277 +(*pctor)() = &A::A; // C2277 ``` From a1cd597bf43d457258d1d858f678cdfd367629a5 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 27 Jan 2026 13:54:17 -0800 Subject: [PATCH 257/619] Fix type references in array get function signatures --- docs/standard-library/array-functions.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/array-functions.md b/docs/standard-library/array-functions.md index 709189a51eb..8ba4d4fcbca 100644 --- a/docs/standard-library/array-functions.md +++ b/docs/standard-library/array-functions.md @@ -15,16 +15,16 @@ Returns a reference to the specified element of the array. ```cpp template -constexpr T& get(std::array& arr) noexcept; +constexpr Type& get(std::array& arr) noexcept; template -constexpr const T& get(const std::array& arr) noexcept; +constexpr const Type& get(const std::array& arr) noexcept; template -constexpr T&& get(std::array&& arr) noexcept; +constexpr Type&& get(std::array&& arr) noexcept; template -constexpr const T&& get(const std::array&& arr) noexcept; +constexpr const Type&& get(const std::array&& arr) noexcept; ``` ### Template parameters From 8d8092dbb42b0c6490364f45ce939b79cff09d43 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 27 Jan 2026 15:02:00 -0800 Subject: [PATCH 258/619] Update compiler-errors-c2500-through-c2599.md --- .../compiler-errors-2/compiler-errors-c2500-through-c2599.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md index 5340336b562..d018f827b7c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599.md @@ -1,6 +1,6 @@ --- title: "Compiler errors C2500 Through C2599" -description: "Learn more about: Compiler errors C2500 Through C2599" +description: "Learn more about: Compiler errors C2500 through C2599" ms.date: 04/21/2019 f1_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2554", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] helpviewer_keywords: ["C2501", "C2508", "C2515", "C2519", "C2520", "C2522", "C2525", "C2527", "C2536", "C2538", "C2539", "C2546", "C2547", "C2554", "C2559", "C2560", "C2564", "C2565", "C2576", "C2578", "C2580", "C2590", "C2591", "C2595", "C2596"] From 14c3fb4a2d899cd98a4b35328bee9bf1935dd2d5 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 28 Jan 2026 10:52:23 -0800 Subject: [PATCH 259/619] Update compiler-error-c3187.md --- .../compiler-errors-2/compiler-error-c3187.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md index 3710ca2abe3..1bb673cd78a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3187.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3187.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C3187" description: "Learn more about: Compiler Error C3187" -ms.date: 08/15/2025 +ms.date: 01/28/2026 f1_keywords: ["C3187"] helpviewer_keywords: ["C3187"] --- @@ -20,12 +20,18 @@ To correct this error, move the identifier inside the body of a function. The following example generates C3187: ```cpp -// C3187.cpp // compile with: /c -auto global = __func__; // C3187, usage in global scope +#include +auto global = __func__; // C3187, usage in global scope void func(const char* f = __func__); // C3187, usage in parameter list + +// correct usage inside a function +void test() +{ + std::cout << __func__; // outputs: test +} ``` ## See also From 7d27af0e765f62ccf8678926d10d967c989df3cc Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 28 Jan 2026 14:18:20 -0800 Subject: [PATCH 260/619] Update explanation for MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION Clarified the explanation of the warning related to missing integer arguments in sprintf_s. --- docs/code-quality/c6064.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c6064.md b/docs/code-quality/c6064.md index c17eeaf1c7a..2a64589d1ec 100644 --- a/docs/code-quality/c6064.md +++ b/docs/code-quality/c6064.md @@ -19,7 +19,7 @@ Code analysis name: `MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION` ## Example -The following code generates this warning because it uses an incorrect number of arguments in the call to `sprintf_s` and the missing argument is an integer. If the unsafe function `sprintf` was used instead of the safer variant `sprintf_s`, this code would likely cause a stack overflow instead of just an unexpected output: +The following code generates this warning when code analysis is enabled (Project properties > **Configuration Properties** > **Code Analysis ** > **General** > **Enable Code Analysis**) because it uses an incorrect number of arguments in the call to `sprintf_s` and the missing argument is an integer. If the unsafe function `sprintf` was used instead of the safer variant `sprintf_s`, this code would likely cause a stack overflow instead of just an unexpected output: ```cpp void f() From 9e1eb4e8e6440e96369d65371c670397cb406c6e Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 28 Jan 2026 14:18:52 -0800 Subject: [PATCH 261/619] Update c6064.md --- docs/code-quality/c6064.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c6064.md b/docs/code-quality/c6064.md index 2a64589d1ec..9d3c40d20a9 100644 --- a/docs/code-quality/c6064.md +++ b/docs/code-quality/c6064.md @@ -19,7 +19,7 @@ Code analysis name: `MISSING_INTEGER_ARGUMENT_TO_FORMAT_FUNCTION` ## Example -The following code generates this warning when code analysis is enabled (Project properties > **Configuration Properties** > **Code Analysis ** > **General** > **Enable Code Analysis**) because it uses an incorrect number of arguments in the call to `sprintf_s` and the missing argument is an integer. If the unsafe function `sprintf` was used instead of the safer variant `sprintf_s`, this code would likely cause a stack overflow instead of just an unexpected output: +The following code generates this warning when code analysis is enabled (Project properties > **Configuration Properties** > **Code Analysis ** > **General** > **Enable Code Analysis on Build**) because it uses an incorrect number of arguments in the call to `sprintf_s` and the missing argument is an integer. If the unsafe function `sprintf` was used instead of the safer variant `sprintf_s`, this code would likely cause a stack overflow instead of just an unexpected output: ```cpp void f() From a640d6b12866052e8dba48e8e4d528dc6230fa05 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 28 Jan 2026 14:59:49 -0800 Subject: [PATCH 262/619] Update thread-functions.md Let's go the other way. For declaration, let's make them simple. --- docs/standard-library/thread-functions.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/thread-functions.md b/docs/standard-library/thread-functions.md index 2cba283ccc7..ed86df6516b 100644 --- a/docs/standard-library/thread-functions.md +++ b/docs/standard-library/thread-functions.md @@ -14,7 +14,7 @@ The `` header provides the following functions: Uniquely identifies the current thread of execution. ```cpp -thread::id this_thread::get_id() noexcept; +thread::id get_id() noexcept; ``` ### Return Value @@ -44,7 +44,7 @@ Blocks the calling thread. ```cpp template -void this_thread::sleep_for(const chrono::duration& Rel_time); +void sleep_for(const chrono::duration& Rel_time); ``` ### Parameters @@ -62,7 +62,7 @@ Blocks the calling thread at least until the specified time. ```cpp template -void this_thread::sleep_until(const chrono::time_point& Abs_time); +void sleep_until(const chrono::time_point& Abs_time); ``` ### Parameters @@ -99,7 +99,7 @@ The function calls `Left.swap(Right)`. Signals the operating system to run other threads, even if the current thread would ordinarily continue to run. ```cpp -inline void this_thread::yield() noexcept; +inline void yield() noexcept; ``` ## See also From 33583fbbef80c0a2ed0d4550272b6e3b7a70a3ab Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 29 Jan 2026 14:32:46 -0800 Subject: [PATCH 263/619] branding updates --- ...handling-events-from-an-activex-control.md | 2 +- ...sing-controls-in-a-non-dialog-container.md | 2 +- ...iewing-and-modifying-control-properties.md | 2 +- docs/mfc/activex-control-containers.md | 4 +- docs/mfc/activex-controls.md | 2 +- ...tives-to-the-document-view-architecture.md | 2 +- ...automation-clients-using-type-libraries.md | 4 +- docs/mfc/automation-servers.md | 2 +- docs/mfc/automation.md | 2 +- ...g-the-styles-of-a-window-created-by-mfc.md | 2 +- .../clipboard-using-the-windows-clipboard.md | 2 +- docs/mfc/command-ids.md | 2 +- docs/mfc/containers-for-activex-controls.md | 4 +- docs/mfc/controls-mfc.md | 2 +- ...n-active-document-container-application.md | 2 +- docs/mfc/crebar-vs-crebarctrl.md | 2 +- docs/mfc/cwinapp-the-application-class.md | 2 +- docs/mfc/dao-classes.md | 2 +- .../derived-view-classes-available-in-mfc.md | 2 +- docs/mfc/dialog-bars.md | 2 +- docs/mfc/dialog-boxes.md | 2 +- docs/mfc/docking-and-floating-toolbars.md | 2 +- ...s-created-by-the-mfc-application-wizard.md | 2 +- docs/mfc/form-views-mfc.md | 8 +- docs/mfc/framework-mfc.md | 2 +- ...-to-create-internet-client-applications.md | 2 +- docs/mfc/idle-loop-processing.md | 2 +- docs/mfc/inserting-a-form-into-a-project.md | 2 +- docs/mfc/making-and-using-controls.md | 2 +- docs/mfc/mapi-support-in-mfc.md | 2 +- docs/mfc/menus-mfc.md | 2 +- docs/mfc/message-handlers.md | 2 +- docs/mfc/methods-of-creating-a-status-bar.md | 2 +- docs/mfc/methods-of-creating-a-toolbar.md | 2 +- .../mfc-activex-controls-advanced-topics.md | 2 +- ...vex-controls-using-stock-property-pages.md | 2 +- docs/mfc/mfc-activex-controls.md | 2 +- docs/mfc/mfc-and-atl.md | 2 +- docs/mfc/mfc-desktop-applications.md | 4 +- docs/mfc/mfc-internet-programming-tasks.md | 2 +- docs/mfc/mfc-library-versions.md | 4 +- docs/mfc/mfc-mbcs-dll-add-on.md | 2 +- docs/mfc/mfc-toolbar-implementation.md | 2 +- ...-document-types-views-and-frame-windows.md | 2 +- ...controls-in-a-activex-control-container.md | 4 +- .../property-sheets-and-property-pages-mfc.md | 2 +- ...adding-an-mfc-class-from-a-type-library.md | 2 +- .../reference/adding-an-mfc-odbc-consumer.md | 2 +- .../application-information-and-management.md | 2 +- docs/mfc/reference/cdc-class.md | 4 +- docs/mfc/reference/cdialogbar-class.md | 2 +- docs/mfc/reference/cformview-class.md | 2 +- .../creating-a-forms-based-mfc-application.md | 2 +- ...ing-a-web-browser-style-mfc-application.md | 2 +- .../reference/creating-an-mfc-application.md | 8 +- docs/mfc/reference/crecordset-class.md | 2 +- docs/mfc/reference/ctoolbar-class.md | 2 +- docs/mfc/reference/diagnostic-services.md | 2 +- docs/mfc/reference/mfc-application-wizard.md | 2 +- docs/mfc/reference/mfc-dll-wizard.md | 2 +- .../mfc/relationship-to-the-c-language-api.md | 2 +- ...perations-for-building-mfc-applications.md | 6 +- ...perations-for-creating-activex-controls.md | 2 +- ...ions-for-creating-database-applications.md | 4 +- ...ers-implementing-in-place-frame-windows.md | 2 +- docs/mfc/technical-notes-by-category.md | 2 +- docs/mfc/technical-notes-by-number.md | 2 +- ...operties-and-events-with-test-container.md | 2 +- docs/mfc/tn006-message-maps.md | 4 +- docs/mfc/tn011-using-mfc-as-part-of-a-dll.md | 4 +- ...020-id-naming-and-numbering-conventions.md | 4 +- docs/mfc/tn021-command-and-message-routing.md | 6 +- .../tn022-standard-commands-implementation.md | 2 +- docs/mfc/tn023-standard-mfc-resources.md | 6 +- ...n024-mfc-defined-messages-and-resources.md | 6 +- .../tn028-context-sensitive-help-support.md | 2 +- docs/mfc/tn029-splitter-windows.md | 2 +- docs/mfc/tn033-dll-version-of-mfc.md | 6 +- ...-files-and-header-files-with-visual-cpp.md | 106 +++++++++--------- ...tn039-mfc-ole-automation-implementation.md | 2 +- .../tn041-mfc-ole1-migration-to-mfc-ole-2.md | 12 +- ...m-dfx-routines-for-dao-database-classes.md | 2 +- ...ao-directly-while-using-mfc-dao-classes.md | 2 +- ...e-class-applications-to-mfc-dao-classes.md | 2 +- .../tn057-localization-of-mfc-components.md | 4 +- ...message-reflection-for-windows-controls.md | 2 +- ...face-support-for-ole-automation-servers.md | 4 +- docs/mfc/toc.yml | 2 +- docs/mfc/toolbar-fundamentals.md | 2 +- .../upgrading-an-existing-activex-control.md | 4 +- ...asses-to-write-applications-for-windows.md | 2 +- docs/mfc/using-your-old-toolbars.md | 2 +- ...h-adding-a-d2d-object-to-an-mfc-project.md | 4 +- ...ough-adding-animation-to-an-mfc-project.md | 2 +- ...ing-the-mfc-scribble-application-part-2.md | 2 +- ...hrough-using-the-new-mfc-shell-controls.md | 4 +- docs/mfc/windows-sockets-in-mfc.md | 2 +- ...indows-sockets-using-class-casyncsocket.md | 2 +- docs/mfc/wizards-and-the-resource-editors.md | 8 +- 99 files changed, 191 insertions(+), 191 deletions(-) diff --git a/docs/mfc/activex-control-containers-handling-events-from-an-activex-control.md b/docs/mfc/activex-control-containers-handling-events-from-an-activex-control.md index 5052a8c4c3d..90af06c7fc7 100644 --- a/docs/mfc/activex-control-containers-handling-events-from-an-activex-control.md +++ b/docs/mfc/activex-control-containers-handling-events-from-an-activex-control.md @@ -15,7 +15,7 @@ This article discusses using the **Properties** window (in **Class View**) to in > [!NOTE] > This article uses a dialog-based ActiveX control container project named Container and an embedded control named Circ as examples in the procedures and code. -Using the Events button in the **Properties** window (in **Class View**), you can create a map of events that can occur in your ActiveX control container application. This map, called an "event sink map,'' is created and maintained by Visual C++ when you add event handlers to the control container class. Each event handler, implemented with an event map entry, maps a specific event to a container event handler member function. This event handler function is called when the specified event is fired by the ActiveX control object. +Using the Events button in the **Properties** window (in **Class View**), you can create a map of events that can occur in your ActiveX control container application. This map, called an "event sink map,'' is created and maintained by Visual Studio when you add event handlers to the control container class. Each event handler, implemented with an event map entry, maps a specific event to a container event handler member function. This event handler function is called when the specified event is fired by the ActiveX control object. For more information on event sink maps, see [Event Sink Maps](reference/event-sink-maps.md) in the *Class Library Reference*. diff --git a/docs/mfc/activex-control-containers-using-controls-in-a-non-dialog-container.md b/docs/mfc/activex-control-containers-using-controls-in-a-non-dialog-container.md index 9c54a250016..5c203ddbf53 100644 --- a/docs/mfc/activex-control-containers-using-controls-in-a-non-dialog-container.md +++ b/docs/mfc/activex-control-containers-using-controls-in-a-non-dialog-container.md @@ -7,7 +7,7 @@ ms.assetid: 46f195b0-b8ca-4409-8cca-fbfaf2c9ab9f --- # ActiveX Control Containers: Using Controls in a Non-Dialog Container -In some applications, such as an SDI or MDI application, you will want to embed a control in a window of the application. The **Create** member function of the wrapper class, inserted by Visual C++, can create an instance of the control dynamically, without the need for a dialog box. +In some applications, such as an SDI or MDI application, you will want to embed a control in a window of the application. The **Create** member function of the wrapper class, inserted by Visual Studio, can create an instance of the control dynamically, without the need for a dialog box. The **Create** member function has the following parameters: diff --git a/docs/mfc/activex-control-containers-viewing-and-modifying-control-properties.md b/docs/mfc/activex-control-containers-viewing-and-modifying-control-properties.md index a9609867536..2cd819edbd2 100644 --- a/docs/mfc/activex-control-containers-viewing-and-modifying-control-properties.md +++ b/docs/mfc/activex-control-containers-viewing-and-modifying-control-properties.md @@ -7,7 +7,7 @@ ms.assetid: 14ce5152-742b-4e0d-a9ab-c7b456e32918 --- # ActiveX Control Containers: Viewing and Modifying Control Properties -When you insert an ActiveX control into a project, it is useful to view and change the properties supported by the ActiveX control. This article discusses how to use the Visual C++ resource editor to do this. +When you insert an ActiveX control into a project, it is useful to view and change the properties supported by the ActiveX control. This article discusses how to use the Visual Studio resource editor to do this. If your ActiveX control container application uses embedded controls, you can view and modify the control's properties while in the resource editor. You can also use the resource editor to set property values during design time. The resource editor then automatically saves these values in the project's resource file. Any instance of the control will then have its properties initialized to these values. diff --git a/docs/mfc/activex-control-containers.md b/docs/mfc/activex-control-containers.md index 0201f13955c..25f68beb623 100644 --- a/docs/mfc/activex-control-containers.md +++ b/docs/mfc/activex-control-containers.md @@ -20,7 +20,7 @@ Control containers typically take two forms in a project: The ActiveX control container interacts with the control via exposed [methods](mfc-activex-controls-methods.md) and [properties](mfc-activex-controls-properties.md). These methods and properties, which can be accessed and modified by the control container, are accessed through a wrapper class in the ActiveX control container project. The embedded ActiveX control can also interact with the container by firing (sending) [events](mfc-activex-controls-events.md) to notify the container that an action has occurred. The control container can choose to act upon these notifications or not. -Additional articles discuss several topics, from creating an ActiveX control container project to basic implementation issues related to ActiveX control containers built with Visual C++: +Additional articles discuss several topics, from creating an ActiveX control container project to basic implementation issues related to ActiveX control containers built with Visual Studio: - [Creating an MFC ActiveX Control Container](reference/creating-an-mfc-activex-control-container.md) @@ -42,7 +42,7 @@ Additional articles discuss several topics, from creating an ActiveX control con For more information about using ActiveX controls in a dialog box, see the [Dialog Editor](../windows/dialog-editor.md) topics. -For a list of articles that explain the details of developing ActiveX controls using Visual C++ and the MFC ActiveX control classes, see [MFC ActiveX controls](mfc-activex-controls.md). The articles are grouped by functional categories. +For a list of articles that explain the details of developing ActiveX controls using Visual Studio and the MFC ActiveX control classes, see [MFC ActiveX controls](mfc-activex-controls.md). The articles are grouped by functional categories. ## See also diff --git a/docs/mfc/activex-controls.md b/docs/mfc/activex-controls.md index af9ca221c6c..a2beb263314 100644 --- a/docs/mfc/activex-controls.md +++ b/docs/mfc/activex-controls.md @@ -7,7 +7,7 @@ ms.assetid: 52aaec4d-3889-402e-b57d-758078f8ac57 --- # ActiveX Controls -In Visual C++ you can create ActiveX controls using MFC or ATL. +In Visual Studio you can create ActiveX controls using MFC or ATL. >[!IMPORTANT] > ActiveX is a legacy technology that should not be used for new development. Many capabilities of ActiveX controls can be performed in a simpler and much more secure way with modern technologies such as HTML5 and JavaScript, modern browser extensions, or WebAssembly modules. For more information, see [A break from the past, part 2: Saying goodbye to ActiveX, VBScript, attachEvent](https://blogs.windows.com/msedgedev/2015/05/06/a-break-from-the-past-part-2-saying-goodbye-to-activex-vbscript-attachevent/) and [Native Messaging](/microsoft-edge/extensions/guides/native-messaging) and [Microsoft Edge extensions](/microsoft-edge/extensions) and [WebAssembly](https://webassembly.org/). diff --git a/docs/mfc/alternatives-to-the-document-view-architecture.md b/docs/mfc/alternatives-to-the-document-view-architecture.md index 5254b76bd37..b89b6dbc905 100644 --- a/docs/mfc/alternatives-to-the-document-view-architecture.md +++ b/docs/mfc/alternatives-to-the-document-view-architecture.md @@ -22,7 +22,7 @@ To create an application that does not use the document/view architecture, clear > [!NOTE] > Dialog-based applications produced by the MFC Application Wizard do not use the document/view architecture, so the **Document/View architecture support** check box is disabled if you select the dialog application type. -The Visual C++ wizards, as well as the source and dialog editors, work with the generated application just as they would with any other Wizard-generated application. The application can support toolbars, scrollbars, and a status bar, and has an **About** box. Your application will not register any document templates, and it will not contain a document class. +The Visual Studio wizards, as well as the source and dialog editors, work with the generated application just as they would with any other Wizard-generated application. The application can support toolbars, scrollbars, and a status bar, and has an **About** box. Your application will not register any document templates, and it will not contain a document class. Note that your generated application has a view class, `CChildView`, derived from `CWnd`. MFC creates and positions one instance of the view class within the frame windows created by your application. MFC still enforces using a view window, because it simplifies positioning and managing the application's content. You can add painting code to the `OnPaint` member of this class. Your code should add scrollbars to the view rather than to the frame. diff --git a/docs/mfc/automation-clients-using-type-libraries.md b/docs/mfc/automation-clients-using-type-libraries.md index d5c6ccb2cc8..4c8eb1cb81e 100644 --- a/docs/mfc/automation-clients-using-type-libraries.md +++ b/docs/mfc/automation-clients-using-type-libraries.md @@ -14,9 +14,9 @@ This type information can be made known in several ways. The recommended way is For information on [MkTypLib](/windows/win32/Midl/differences-between-midl-and-mktyplib), see the Windows SDK. -Visual C++ can read a type-library file and create a dispatch class derived from [COleDispatchDriver](reference/coledispatchdriver-class.md). An object of that class has properties and operations duplicating those of the server object. Your application calls this object's properties and operations, and functionality inherited from `COleDispatchDriver` routes these calls to the OLE system, which in turn routes them to the server object. +Visual Studio can read a type-library file and create a dispatch class derived from [COleDispatchDriver](reference/coledispatchdriver-class.md). An object of that class has properties and operations duplicating those of the server object. Your application calls this object's properties and operations, and functionality inherited from `COleDispatchDriver` routes these calls to the OLE system, which in turn routes them to the server object. -Visual C++ automatically maintains this type-library file for you if you chose to include Automation when the project was created. As part of each build, the .tlb file will be built with MkTypLib. +Visual Studio automatically maintains this type-library file for you if you chose to include Automation when the project was created. As part of each build, the .tlb file will be built with MkTypLib. ### To create a dispatch class from a type-library (.tlb) file diff --git a/docs/mfc/automation-servers.md b/docs/mfc/automation-servers.md index 5a8b3b31a32..848c8d97b37 100644 --- a/docs/mfc/automation-servers.md +++ b/docs/mfc/automation-servers.md @@ -20,7 +20,7 @@ By exposing application functionality through a common, well-defined interface, ## Support for Automation Servers -Visual C++ and the MFC framework provide extensive support for Automation servers. They handle much of the overhead involved in making an Automation server, so you can focus your efforts on the functionality of your application. +Visual Studio and the MFC framework provide extensive support for Automation servers. They handle much of the overhead involved in making an Automation server, so you can focus your efforts on the functionality of your application. The framework's principal mechanism for supporting Automation is the dispatch map, a set of macros that expands into the declarations and calls needed to expose methods and properties for OLE. A typical dispatch map looks like this: diff --git a/docs/mfc/automation.md b/docs/mfc/automation.md index beca853d89d..9951fd3eff3 100644 --- a/docs/mfc/automation.md +++ b/docs/mfc/automation.md @@ -23,7 +23,7 @@ As another example, a word processor might expose its spell-checking functionali More important is the support Automation provides to users and solution providers. By exposing application functionality through a common, well-defined interface, Automation makes it possible to build comprehensive solutions in a single general programming language, such as Microsoft Visual Basic, instead of in diverse application-specific macro languages. -Many commercial applications, such as Microsoft Excel and Microsoft Visual C++, allow you to automate much of their functionality. For example, in Visual C++, you can write VBScript macros to automate builds, aspects of code editing, or debugging tasks. +Many commercial applications, such as Microsoft Excel and Visual Studio, allow you to automate much of their functionality. For example, in Visual Studio, you can write VBScript macros to automate builds, aspects of code editing, or debugging tasks. ## Passing Parameters in Automation diff --git a/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md b/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md index eb6d87a53c4..fdab577e449 100644 --- a/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md +++ b/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md @@ -12,7 +12,7 @@ In its version of the `WinMain` function, MFC registers several standard window ## Changing Styles in a New MFC Application -If you're using Visual C++ 2.0 or later, you can change the default window styles in the Application Wizard when you create your application. In the Application Wizard's User Interface Features page, you can change styles for your main frame window and MDI child windows. For either window type, you can specify its frame thickness (thick or thin) and any of the following: +If you're using Microsoft C++ 2.0 or later, you can change the default window styles in the Application Wizard when you create your application. In the Application Wizard's User Interface Features page, you can change styles for your main frame window and MDI child windows. For either window type, you can specify its frame thickness (thick or thin) and any of the following: - Whether the window has Minimize or Maximize controls. diff --git a/docs/mfc/clipboard-using-the-windows-clipboard.md b/docs/mfc/clipboard-using-the-windows-clipboard.md index 64d3123609b..e07d461aecc 100644 --- a/docs/mfc/clipboard-using-the-windows-clipboard.md +++ b/docs/mfc/clipboard-using-the-windows-clipboard.md @@ -19,7 +19,7 @@ The Cut, Copy, and Paste commands are only meaningful in certain contexts. The C The Microsoft Foundation Class Library does provide Clipboard support for text editing with the `CEdit` and `CEditView` classes. The OLE classes also simplify implementing Clipboard operations that involve OLE items. For more information on the OLE classes, see [Clipboard: Using the OLE Clipboard Mechanism](clipboard-using-the-ole-clipboard-mechanism.md). -Implementing other Edit menu commands, such as Undo (**ID_EDIT_UNDO**) and Redo (**ID_EDIT_REDO**), is also left to you. If your application does not support these commands, you can easily delete them from your resource file using the Visual C++ resource editors. +Implementing other Edit menu commands, such as Undo (**ID_EDIT_UNDO**) and Redo (**ID_EDIT_REDO**), is also left to you. If your application does not support these commands, you can easily delete them from your resource file using the Visual Studio resource editors. ## What do you want to know more about diff --git a/docs/mfc/command-ids.md b/docs/mfc/command-ids.md index aacb5c805f9..d5508f8a545 100644 --- a/docs/mfc/command-ids.md +++ b/docs/mfc/command-ids.md @@ -11,7 +11,7 @@ A command is fully described by its command ID alone (encoded in the **WM_COMMAN For example, a Clear All item in the Edit menu might be assigned an ID such as **ID_EDIT_CLEAR_ALL**. The class library predefines some IDs, particularly for commands that the framework handles itself, such as **ID_EDIT_CLEAR_ALL** or **ID_FILE_OPEN**. You will create other command IDs yourself. -When you create your own menus in the Visual C++ menu editor, it is a good idea to follow the class library's naming convention as illustrated by **ID_FILE_OPEN**. [Standard Commands](standard-commands.md) explains the standard commands defined by the class library. +When you create your own menus in the Visual Studio menu editor, it is a good idea to follow the class library's naming convention as illustrated by **ID_FILE_OPEN**. [Standard Commands](standard-commands.md) explains the standard commands defined by the class library. ## See also diff --git a/docs/mfc/containers-for-activex-controls.md b/docs/mfc/containers-for-activex-controls.md index 6f6926c793a..8f11ee29d83 100644 --- a/docs/mfc/containers-for-activex-controls.md +++ b/docs/mfc/containers-for-activex-controls.md @@ -7,7 +7,7 @@ ms.assetid: 5ff0bf37-07f4-49aa-ad9c-c63d3756243a --- # Containers for ActiveX Controls -You can use ActiveX controls developed in Visual C++ in other applications, as long as they support ActiveX control containment. A number of Microsoft applications, beginning with the versions listed, support ActiveX control containment. +You can use ActiveX controls developed in Visual Studio in other applications, as long as they support ActiveX control containment. A number of Microsoft applications, beginning with the versions listed, support ActiveX control containment. >[!IMPORTANT] > ActiveX is a legacy technology that should not be used for new development. For more information about modern technologies that supersede ActiveX, see [ActiveX Controls](activex-controls.md). @@ -21,7 +21,7 @@ Applications that support ActiveX control containment include: - Visual Basic 4.x and greater -- Visual C++ 4.x and greater +- Microsoft C++ 4.x and greater - Access 95 and greater diff --git a/docs/mfc/controls-mfc.md b/docs/mfc/controls-mfc.md index fda1eeccf12..2fe0a205f76 100644 --- a/docs/mfc/controls-mfc.md +++ b/docs/mfc/controls-mfc.md @@ -17,7 +17,7 @@ Controls are objects that users can interact with to enter or manipulate data. T ## Windows Common Controls -The Windows operating system has always provided a number of Windows common controls. These control objects are programmable, and the Visual C++ dialog editor supports adding them to your dialog boxes. The Microsoft Foundation Class Library (MFC) supplies classes that encapsulate each of these controls, as shown in the table [Windows Common Controls and MFC Classes](#_core_windows_common_controls_and_mfc_classes). (Some items in the table have related topics that describe them further. For controls that lack topics, see the documentation for the MFC class.) +The Windows operating system has always provided a number of Windows common controls. These control objects are programmable, and the Visual Studio dialog editor supports adding them to your dialog boxes. The Microsoft Foundation Class Library (MFC) supplies classes that encapsulate each of these controls, as shown in the table [Windows Common Controls and MFC Classes](#_core_windows_common_controls_and_mfc_classes). (Some items in the table have related topics that describe them further. For controls that lack topics, see the documentation for the MFC class.) Class [CWnd](reference/cwnd-class.md) is the base class of all window classes, including all of the control classes. diff --git a/docs/mfc/creating-an-active-document-container-application.md b/docs/mfc/creating-an-active-document-container-application.md index c1ef6e9ac2d..077cea8136c 100644 --- a/docs/mfc/creating-an-active-document-container-application.md +++ b/docs/mfc/creating-an-active-document-container-application.md @@ -14,7 +14,7 @@ The simplest and most recommended way to create an active document container app 1. From the **File** menu, click **Project**from the **New** submenu. -1. From the left pane, click **Visual C++** project type. +1. From the left pane, click **MicrosoftVisual Studio** project type. 1. Select **MFC Application** from the right pane. diff --git a/docs/mfc/crebar-vs-crebarctrl.md b/docs/mfc/crebar-vs-crebarctrl.md index 6750c3db526..34ddc168552 100644 --- a/docs/mfc/crebar-vs-crebarctrl.md +++ b/docs/mfc/crebar-vs-crebarctrl.md @@ -11,7 +11,7 @@ MFC provides two classes to create rebars: [CReBar](reference/crebar-class.md) a `CReBarCtrl` is a wrapper class for the Win32 rebar control, and therefore may be easier to implement if you do not intend to integrate the rebar into the MFC architecture. If you plan to use `CReBarCtrl` and integrate the rebar into the MFC architecture, you must take additional care to communicate rebar control manipulations to MFC. This communication is not difficult; however, it is additional work that is unneeded when you use `CReBar`. -Visual C++ provides two ways to take advantage of the rebar common control. +Visual Studio provides two ways to take advantage of the rebar common control. - Create the rebar using `CReBar`, and then call [CReBar::GetReBarCtrl](reference/crebar-class.md#getrebarctrl) to get access to the `CReBarCtrl` member functions. diff --git a/docs/mfc/cwinapp-the-application-class.md b/docs/mfc/cwinapp-the-application-class.md index ba5a5f0062f..a34f9b55a13 100644 --- a/docs/mfc/cwinapp-the-application-class.md +++ b/docs/mfc/cwinapp-the-application-class.md @@ -19,7 +19,7 @@ Like any program for the Windows operating system, your framework application ha To initialize the application, `WinMain` calls your application object's `InitApplication` and `InitInstance` member functions. To run the application's message loop, `WinMain` calls the **Run** member function. On termination, `WinMain` calls the application object's `ExitInstance` member function. > [!NOTE] -> Names shown in **bold** in this documentation indicate elements supplied by the Microsoft Foundation Class Library and Visual C++. Names shown in `monospaced` type indicate elements that you create or override. +> Names shown in **bold** in this documentation indicate elements supplied by the Microsoft Foundation Class Library and Visual Studio. Names shown in `monospaced` type indicate elements that you create or override. ## See also diff --git a/docs/mfc/dao-classes.md b/docs/mfc/dao-classes.md index ad16f3fe673..85553ceccae 100644 --- a/docs/mfc/dao-classes.md +++ b/docs/mfc/dao-classes.md @@ -14,7 +14,7 @@ These classes work with the other application framework classes to give easy acc Programs that use DAO databases will have at least a `CDaoDatabase` object and a `CDaoRecordset` object. > [!NOTE] -> The Visual C++ environment and wizards no longer support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use ODBC for new MFC projects. You should only use DAO in maintaining existing applications. +> The Visual Studio environment and wizards no longer support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use ODBC for new MFC projects. You should only use DAO in maintaining existing applications. [CDaoWorkspace](reference/cdaoworkspace-class.md)
Manages a named, password-protected database session from login to logoff. Most programs use the default workspace. diff --git a/docs/mfc/derived-view-classes-available-in-mfc.md b/docs/mfc/derived-view-classes-available-in-mfc.md index e0831af6ac6..90f9c090011 100644 --- a/docs/mfc/derived-view-classes-available-in-mfc.md +++ b/docs/mfc/derived-view-classes-available-in-mfc.md @@ -18,7 +18,7 @@ The following table shows MFC's view classes and their relationships to one anot |[CEditView](reference/ceditview-class.md)|A simple view based on the Windows edit box control. Allows entering and editing text and can be used as the basis for a simple text editor application. See also `CRichEditView`.| |[CRichEditView](reference/cricheditview-class.md)|A view containing a [CRichEditCtrl](reference/cricheditctrl-class.md) object. This class is analogous to `CEditView`, but unlike `CEditView`, `CRichEditView` handles formatted text.| |[CListView](reference/clistview-class.md)|A view containing a [CListCtrl](reference/clistctrl-class.md) object.| -|[CTreeView](reference/ctreeview-class.md)|A view containing a [CTreeCtrl](reference/ctreectrl-class.md) object, for views that resemble the Solution Explorer window in Visual C++.| +|[CTreeView](reference/ctreeview-class.md)|A view containing a [CTreeCtrl](reference/ctreectrl-class.md) object, for views that resemble the Solution Explorer window in Visual Studio.| |[CScrollView](reference/cscrollview-class.md)|Base class of `CFormView`, `CRecordView`, and `CDaoRecordView`. Implements scrolling the view's contents.| |[CFormView](reference/cformview-class.md)|A form view, a view that contains controls. A forms-based application provides one or more such form interfaces.| |[CHtmlView](reference/chtmlview-class.md)|A Web browser view with which the application's user can browse sites on the World Wide Web, as well as folders in the local file system and on a network. The Web browser view can also work as an Active document container.| diff --git a/docs/mfc/dialog-bars.md b/docs/mfc/dialog-bars.md index 3e1b3cb5fba..f1d629b751a 100644 --- a/docs/mfc/dialog-bars.md +++ b/docs/mfc/dialog-bars.md @@ -9,7 +9,7 @@ ms.assetid: 485c8055-6bb0-4051-8417-dd2971499321 A dialog bar is a toolbar, a kind of [control bar](control-bars.md) that can contain any kind of control. Because it has the characteristics of a modeless dialog box, a [CDialogBar](reference/cdialogbar-class.md) object provides a more powerful toolbar. -There are several key differences between a toolbar and a `CDialogBar` object. A `CDialogBar` object is created from a dialog-template resource, which you can create with the Visual C++ dialog editor and which can contain any kind of Windows control. The user can tab from control to control. And you can specify an alignment style to align the dialog bar with any part of the parent frame window or even to leave it in place if the parent is resized. The following figure shows a dialog bar with a variety of controls. +There are several key differences between a toolbar and a `CDialogBar` object. A `CDialogBar` object is created from a dialog-template resource, which you can create with the Visual Studio dialog editor and which can contain any kind of Windows control. The user can tab from control to control. And you can specify an alignment style to align the dialog bar with any part of the parent frame window or even to leave it in place if the parent is resized. The following figure shows a dialog bar with a variety of controls. ![Example of a VC Dialog Bar.](../mfc/media/vc378t1.gif "VC Dialog Bar")
A Dialog Bar diff --git a/docs/mfc/dialog-boxes.md b/docs/mfc/dialog-boxes.md index 780520efb62..52ff46b668e 100644 --- a/docs/mfc/dialog-boxes.md +++ b/docs/mfc/dialog-boxes.md @@ -7,7 +7,7 @@ ms.assetid: e4feea1a-8360-4ccb-9b84-507f1ccd9ef3 --- # Dialog Boxes -Applications for Windows frequently communicate with the user through dialog boxes. Class [CDialog](reference/cdialog-class.md) provides an interface for managing dialog boxes, the Visual C++ dialog editor makes it easy to design dialog boxes and create their dialog-template resources, and Code wizards simplify the process of initializing and validating the controls in a dialog box and of gathering the values entered by the user. +Applications for Windows frequently communicate with the user through dialog boxes. Class [CDialog](reference/cdialog-class.md) provides an interface for managing dialog boxes, the Visual Studio dialog editor makes it easy to design dialog boxes and create their dialog-template resources, and Code wizards simplify the process of initializing and validating the controls in a dialog box and of gathering the values entered by the user. Dialog boxes contain controls, including: diff --git a/docs/mfc/docking-and-floating-toolbars.md b/docs/mfc/docking-and-floating-toolbars.md index 2dc9f54a2a7..e68d5dd87f7 100644 --- a/docs/mfc/docking-and-floating-toolbars.md +++ b/docs/mfc/docking-and-floating-toolbars.md @@ -57,7 +57,7 @@ The MFC implementation of dockable toolbars does not provide some of the extende ## Dynamically Resizing the Toolbar -As of Visual C++ version 4.0, you can make it possible for users of your application to resize floating toolbars dynamically. Typically, a toolbar has a long, linear shape, displayed horizontally. But you can change the toolbar's orientation and its shape. For example, when the user docks a toolbar against one of the vertical sides of the frame window, the shape changes to a vertical layout. It's also possible to reshape the toolbar into a rectangle with multiple rows of buttons. +As of Visual Studio version 4.0, you can make it possible for users of your application to resize floating toolbars dynamically. Typically, a toolbar has a long, linear shape, displayed horizontally. But you can change the toolbar's orientation and its shape. For example, when the user docks a toolbar against one of the vertical sides of the frame window, the shape changes to a vertical layout. It's also possible to reshape the toolbar into a rectangle with multiple rows of buttons. You can: diff --git a/docs/mfc/document-and-view-classes-created-by-the-mfc-application-wizard.md b/docs/mfc/document-and-view-classes-created-by-the-mfc-application-wizard.md index 6003a3f8dc8..5ebeea6596b 100644 --- a/docs/mfc/document-and-view-classes-created-by-the-mfc-application-wizard.md +++ b/docs/mfc/document-and-view-classes-created-by-the-mfc-application-wizard.md @@ -7,7 +7,7 @@ ms.assetid: 70c34a60-2701-4981-acea-c08a5787d8e6 --- # Document and View Classes Created by the MFC Application Wizard -The MFC Application Wizard gives you a head start on your program development by creating skeletal document and view classes for you. You can then [map commands and messages to these classes](reference/mapping-messages-to-functions.md) and use the Visual C++ source code editor to write their member functions. +The MFC Application Wizard gives you a head start on your program development by creating skeletal document and view classes for you. You can then [map commands and messages to these classes](reference/mapping-messages-to-functions.md) and use the Visual Studio source code editor to write their member functions. The document class created by the MFC Application Wizard is derived from class [CDocument](reference/cdocument-class.md). The view class is derived from [CView](reference/cview-class.md). The names that the Application Wizard gives these classes and the files that contain them are based on the project name you supply in the Application Wizard dialog box. In the Application Wizard, you can use the Generated Classes page to alter the default names. diff --git a/docs/mfc/form-views-mfc.md b/docs/mfc/form-views-mfc.md index 05801af5441..87517953bb5 100644 --- a/docs/mfc/form-views-mfc.md +++ b/docs/mfc/form-views-mfc.md @@ -7,14 +7,14 @@ ms.assetid: efbe73c1-4ca4-4613-aac2-30d916e92c0e --- # Form Views (MFC) -You can add forms to any Visual C++ application that supports the MFC libraries, including a [forms-based application](reference/creating-a-forms-based-mfc-application.md) (one whose view class is derived from `CFormView`). If you did not initially create your application to support forms, Visual C++ will add this support for you when you insert a new form. In an SDI or MDI application, which implements the default [document/view architecture](document-view-architecture.md), when the user chooses the **New** command (by default, on the **File** menu), Visual C++ prompts the user to choose from the available forms. +You can add forms to any Visual Studio application that supports the MFC libraries, including a [forms-based application](reference/creating-a-forms-based-mfc-application.md) (one whose view class is derived from `CFormView`). If you did not initially create your application to support forms, Visual Studio will add this support for you when you insert a new form. In an SDI or MDI application, which implements the default [document/view architecture](document-view-architecture.md), when the user chooses the **New** command (by default, on the **File** menu), Visual Studio prompts the user to choose from the available forms. With an SDI application, when the user chooses the **New** command, the current instance of the form continues to run but a new instance of the application with the selected form is created if one is not found. In an MDI application, the current instance of the form continues to run when the user chooses the **New** command. > [!NOTE] -> You can insert a form into a dialog-based application (one whose dialog class is based on `CDialog` and one in which no view class is implemented). However, without the document/view architecture, Visual C++ does not automatically implement the **File** > **New** functionality. You must create a way for the user to view additional forms, such as by implementing a tabbed dialog box with various property pages. +> You can insert a form into a dialog-based application (one whose dialog class is based on `CDialog` and one in which no view class is implemented). However, without the document/view architecture, Visual Studio does not automatically implement the **File** > **New** functionality. You must create a way for the user to view additional forms, such as by implementing a tabbed dialog box with various property pages. -When you insert a new form into your application, Visual C++ does the following: +When you insert a new form into your application, Visual Studio does the following: - Creates a class based on one of the form-style classes that you choose (`CFormView`, `CRecordView`, `CDaoRecordView`, or `CDialog`). @@ -42,7 +42,7 @@ For applications based on the document/view architecture, the **New Form** comma - Adds a call to `AddDocumentTemplate` in your application's `InitInstance` code. - Visual C++ adds this code for each new form you create, which adds the form to the list of available forms when the user chooses the **New** command. This code includes the form's associated resource ID and the names of the associated document, view, and frame classes that together make up the new form object. + Visual Studio adds this code for each new form you create, which adds the form to the list of available forms when the user chooses the **New** command. This code includes the form's associated resource ID and the names of the associated document, view, and frame classes that together make up the new form object. Document templates serve as the connection between documents, frame windows, and views. For a single document, you can create many templates. diff --git a/docs/mfc/framework-mfc.md b/docs/mfc/framework-mfc.md index 0bd459a85d7..7c8996f07c3 100644 --- a/docs/mfc/framework-mfc.md +++ b/docs/mfc/framework-mfc.md @@ -7,7 +7,7 @@ ms.assetid: 3be0fec8-9843-4119-ae42-ece993ef500b --- # Framework (MFC) -Your work with the Microsoft Foundation Class (MFC) Library framework is based largely on a few major classes and several Visual C++ tools. Some classes encapsulate a large portion of the Win32 application programming interface (API). Other classes encapsulate application concepts such as documents, views, and the application itself. Still others encapsulate OLE features and ODBC and DAO data-access functionality. (DAO is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete.) +Your work with the Microsoft Foundation Class (MFC) Library framework is based largely on a few major classes and several Visual Studio tools. Some classes encapsulate a large portion of the Win32 application programming interface (API). Other classes encapsulate application concepts such as documents, views, and the application itself. Still others encapsulate OLE features and ODBC and DAO data-access functionality. (DAO is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete.) For example, Win32's concept of window is encapsulated by MFC class `CWnd`. That is, a C++ class called `CWnd` encapsulates or "wraps" the `HWND` handle that represents a Windows window. Likewise, class `CDialog` encapsulates Win32 dialog boxes. diff --git a/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md b/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md index 4b8cec07283..e9adb0c6a10 100644 --- a/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md +++ b/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md @@ -9,7 +9,7 @@ ms.assetid: dc0f9f47-3184-4e7a-8074-2c63e0359885 The Win32 Internet Extensions, or WinInet, provide access to common Internet protocols, including gopher, FTP, and HTTP. Using WinInet, you can write Internet client applications at a higher level of programming, without having to deal with WinSock, TCP/IP, or the details of specific Internet protocols. WinInet provides a consistent set of functions for all three protocols, with a familiar Win32 API interface. This consistency minimizes code changes you need to make if the underlying protocol changes (for example, from FTP to HTTP). -Visual C++ provides two ways for you to use WinInet. You can call the Win32 Internet functions directly (see the OLE documentation in the Windows SDK for more information) or you can use WinInet through the [MFC WinInet classes](mfc-classes-for-creating-internet-client-applications.md). +Visual Studio provides two ways for you to use WinInet. You can call the Win32 Internet functions directly (see the OLE documentation in the Windows SDK for more information) or you can use WinInet through the [MFC WinInet classes](mfc-classes-for-creating-internet-client-applications.md). **You can use WinInet to:** diff --git a/docs/mfc/idle-loop-processing.md b/docs/mfc/idle-loop-processing.md index 33d16f0956d..04bee6c2f4a 100644 --- a/docs/mfc/idle-loop-processing.md +++ b/docs/mfc/idle-loop-processing.md @@ -32,7 +32,7 @@ Another method for performing idle processing in an application involves embeddi [!code-cpp[NVC_MFCDocView#8](codesnippet/cpp/idle-loop-processing_1.cpp)] -This code, embedded in a function, loops as long as there is idle processing to do. Within that loop, a nested loop repeatedly calls `PeekMessage`. As long as that call returns a nonzero value, the loop calls `CWinThread::PumpMessage` to perform normal message translation and dispatching. Although `PumpMessage` is undocumented, you can examine its source code in the ThrdCore.Cpp file in the \atlmfc\src\mfc directory of your Visual C++ installation. +This code, embedded in a function, loops as long as there is idle processing to do. Within that loop, a nested loop repeatedly calls `PeekMessage`. As long as that call returns a nonzero value, the loop calls `CWinThread::PumpMessage` to perform normal message translation and dispatching. Although `PumpMessage` is undocumented, you can examine its source code in the ThrdCore.Cpp file in the \atlmfc\src\mfc directory of your Visual Studio installation. Once the inner loop ends, the outer loop performs idle processing with one or more calls to `OnIdle`. The first call is for MFC's purposes. You can make additional calls to `OnIdle` to do your own background work. diff --git a/docs/mfc/inserting-a-form-into-a-project.md b/docs/mfc/inserting-a-form-into-a-project.md index 0166e9f5d36..ad08c10130e 100644 --- a/docs/mfc/inserting-a-form-into-a-project.md +++ b/docs/mfc/inserting-a-form-into-a-project.md @@ -22,7 +22,7 @@ Forms provide a convenient container for controls. You can easily insert an MFC- 1. Using the MFC Class Wizard, make the new class derive from [CFormView](reference/cformview-class.md). -Visual C++ adds the form to your application, opening it inside the Dialog editor so that you can begin adding controls and working on its overall design. +Visual Studio adds the form to your application, opening it inside the Dialog editor so that you can begin adding controls and working on its overall design. You may want to perform the following additional steps (not applicable for dialog-based applications): diff --git a/docs/mfc/making-and-using-controls.md b/docs/mfc/making-and-using-controls.md index 6e88beb322b..8cba3f0fffc 100644 --- a/docs/mfc/making-and-using-controls.md +++ b/docs/mfc/making-and-using-controls.md @@ -8,7 +8,7 @@ ms.topic: concept-article --- # Making and Using Controls -You make most controls for dialog boxes in the Visual C++ [dialog editor](../windows/dialog-editor.md). But you can also create controls in any dialog box or window. +You make most controls for dialog boxes in the Visual Studio [dialog editor](../windows/dialog-editor.md). But you can also create controls in any dialog box or window. ## What do you want to know more about diff --git a/docs/mfc/mapi-support-in-mfc.md b/docs/mfc/mapi-support-in-mfc.md index cdb9d8b6388..10329e6fd07 100644 --- a/docs/mfc/mapi-support-in-mfc.md +++ b/docs/mfc/mapi-support-in-mfc.md @@ -21,7 +21,7 @@ MAPI needs to read the file to send the attachment. If the application keeps its #### To implement a Send Mail command with MFC -1. Use the Visual C++ menu editor to add a menu item whose command ID is ID_FILE_SEND_MAIL. +1. Use the Visual Studio menu editor to add a menu item whose command ID is ID_FILE_SEND_MAIL. This command ID is provided by the framework in AFXRES.H. The command can be added to any menu, but it is usually added to the **File** menu. diff --git a/docs/mfc/menus-mfc.md b/docs/mfc/menus-mfc.md index 5cbfe9db0ff..8bbd4098c79 100644 --- a/docs/mfc/menus-mfc.md +++ b/docs/mfc/menus-mfc.md @@ -13,7 +13,7 @@ MFC supplies two elements to help you work with menus: - A mechanism for updating menus and toolbar buttons: enabling or disabling them on the fly to suit current program conditions. -Visual C++ also provides a [menu editor](../windows/menu-editor.md) for creating and editing your program's menu resources. +Visual Studio also provides a [menu editor](../windows/menu-editor.md) for creating and editing your program's menu resources. ## What do you want to know more about diff --git a/docs/mfc/message-handlers.md b/docs/mfc/message-handlers.md index 80bf4659c7d..5e8c2495f70 100644 --- a/docs/mfc/message-handlers.md +++ b/docs/mfc/message-handlers.md @@ -13,7 +13,7 @@ Writing message handlers accounts for a large proportion of your work in writing What does the handler for a message do It does whatever you want done in response to that message. You can create the handlers by using the [Class Wizard](reference/mfc-class-wizard.md) of the class, and then fill in the handler's code using the source code editor. -You can use all of the facilities of Microsoft Visual C++ and MFC to write your handlers. For a list of all classes, see [Class Library Overview](class-library-overview.md) in the *MFC Reference*. +You can use all of the facilities of Visual Studio and MFC to write your handlers. For a list of all classes, see [Class Library Overview](class-library-overview.md) in the *MFC Reference*. ## See also diff --git a/docs/mfc/methods-of-creating-a-status-bar.md b/docs/mfc/methods-of-creating-a-status-bar.md index 7d4e9bc4cf0..aa914e3f097 100644 --- a/docs/mfc/methods-of-creating-a-status-bar.md +++ b/docs/mfc/methods-of-creating-a-status-bar.md @@ -11,7 +11,7 @@ MFC provides two classes to create status bars: [CStatusBar](reference/cstatusba `CStatusBarCtrl` usually results in a smaller executable, and you may prefer to use `CStatusBarCtrl` if you do not intend to integrate the status bar into the MFC architecture. If you plan to use `CStatusBarCtrl` and integrate the status bar into the MFC architecture, you must take additional care to communicate status bar control manipulations to MFC. This communication is not difficult; however, it is additional work that is unneeded when you use `CStatusBar`. -Visual C++ provides two ways to take advantage of the status bar common control. +Visual Studio provides two ways to take advantage of the status bar common control. - Create the status bar using `CStatusBar`, and then call [CStatusBar::GetStatusBarCtrl](reference/cstatusbar-class.md#getstatusbarctrl) to get access to the `CStatusBarCtrl` member functions. diff --git a/docs/mfc/methods-of-creating-a-toolbar.md b/docs/mfc/methods-of-creating-a-toolbar.md index aca7ea41dc3..b241b3f46a3 100644 --- a/docs/mfc/methods-of-creating-a-toolbar.md +++ b/docs/mfc/methods-of-creating-a-toolbar.md @@ -11,7 +11,7 @@ MFC provides two classes to create toolbars: [CToolBar](reference/ctoolbar-class `CToolBarCtrl` usually results in a smaller executable, and you may prefer to use `CToolBarCtrl` if you do not intend to integrate the toolbar into the MFC architecture. If you plan to use `CToolBarCtrl` and integrate the toolbar into the MFC architecture, you must take additional care to communicate toolbar control manipulations to MFC. This communication is not difficult; however, it is additional work that is unneeded when you use `CToolBar`. -Visual C++ provides two ways to take advantage of the toolbar common control. +Visual Studio provides two ways to take advantage of the toolbar common control. - Create the toolbar using `CToolBar`, and then call [CToolBar::GetToolBarCtrl](reference/ctoolbar-class.md#gettoolbarctrl) to get access to the `CToolBarCtrl` member functions. diff --git a/docs/mfc/mfc-activex-controls-advanced-topics.md b/docs/mfc/mfc-activex-controls-advanced-topics.md index 12416853047..ecf01fac6b0 100644 --- a/docs/mfc/mfc-activex-controls-advanced-topics.md +++ b/docs/mfc/mfc-activex-controls-advanced-topics.md @@ -29,7 +29,7 @@ Because the ActiveX control classes are part of the class library, you can apply For a general overview of the MFC database classes, see [MFC Database Classes (DAO and ODBC)](../data/mfc-database-classes-odbc-and-dao.md). The article introduces both the MFC ODBC classes and the MFC DAO classes and directs you to more details on either. > [!NOTE] -> DAO is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual C++ environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-programming.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. +> DAO is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual Studio environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-programming.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. ## Implementing a Parameterized Property diff --git a/docs/mfc/mfc-activex-controls-using-stock-property-pages.md b/docs/mfc/mfc-activex-controls-using-stock-property-pages.md index e9553c4cef5..475aab0f011 100644 --- a/docs/mfc/mfc-activex-controls-using-stock-property-pages.md +++ b/docs/mfc/mfc-activex-controls-using-stock-property-pages.md @@ -30,7 +30,7 @@ Note that the count of property pages, in the BEGIN_PROPPAGEIDS macro, is 4. Thi After these modifications have been made, rebuild your project. Your control now has property pages for the font, picture, and color properties. > [!NOTE] -> If the control stock property pages cannot be accessed, it may be because the MFC DLL (MFCxx.DLL) has not been properly registered with the current operating system. This usually results from installing Visual C++ under an operating system different from the one currently running. +> If the control stock property pages cannot be accessed, it may be because the MFC DLL (MFCxx.DLL) has not been properly registered with the current operating system. This usually results from installing Visual Studio under an operating system different from the one currently running. > [!TIP] > If your stock property pages are not visible (see previous Note), register the DLL by running RegSvr32.exe from the command line with the full path name to the DLL. diff --git a/docs/mfc/mfc-activex-controls.md b/docs/mfc/mfc-activex-controls.md index fb744cd66d4..18ff2df6fdd 100644 --- a/docs/mfc/mfc-activex-controls.md +++ b/docs/mfc/mfc-activex-controls.md @@ -80,7 +80,7 @@ Note that a control is not responsible for obtaining access to the storage mediu ## Installing ActiveX Control Classes and Tools -When you install Visual C++, the MFC ActiveX control classes and retail and debug ActiveX control run-time DLLs are automatically installed if ActiveX controls are selected in Setup (they are selected by default). +When you install Visual Studio, the MFC ActiveX control classes and retail and debug ActiveX control run-time DLLs are automatically installed if ActiveX controls are selected in Setup (they are selected by default). By default, the ActiveX control classes and tools are installed in the following subdirectories under \Program Files\Microsoft Visual Studio .NET: diff --git a/docs/mfc/mfc-and-atl.md b/docs/mfc/mfc-and-atl.md index d9e499ac1bd..6859ab97126 100644 --- a/docs/mfc/mfc-and-atl.md +++ b/docs/mfc/mfc-and-atl.md @@ -12,7 +12,7 @@ The Microsoft Foundation Classes (MFC) provide a C++ object-oriented wrapper ove You can create MFC or ATL programs with Visual Studio Community Edition or higher. The Express editions do not support MFC or ATL. -In Visual Studio 2015, Visual C++ is an optional component, and MFC and ATL components are optional sub-components under Visual C++. If you do not select these components when you first install Visual Studio, you will be prompted to install them the first time you attempt to create or open an MFC or ATL project. +In Visual Studio 2015, Microsoft C++ is an optional component, and MFC and ATL components are optional sub-components under Microsoft C++. If you do not select these components when you first install Visual Studio, you will be prompted to install them the first time you attempt to create or open an MFC or ATL project. In Visual Studio 2017 and later, MFC and ATL are optional sub-components under the **Desktop development with C++** workload in the Visual Studio Installer program. You can install ATL support without MFC, or combined MFC and ATL support (MFC depends on ATL). For more information about workloads and components, see [Install Visual Studio](/visualstudio/install/install-visual-studio). diff --git a/docs/mfc/mfc-desktop-applications.md b/docs/mfc/mfc-desktop-applications.md index d1876d18607..873618fee18 100644 --- a/docs/mfc/mfc-desktop-applications.md +++ b/docs/mfc/mfc-desktop-applications.md @@ -72,8 +72,8 @@ Provides links to classes that are shared between MFC and ATL. [MFC Samples](../overview/visual-cpp-samples.md#mfc-samples)
Provides links to samples that demonstrate how to use MFC. -[Visual C++ Libraries Reference](../standard-library/cpp-standard-library-reference.md)
-Provides links to the various libraries provided with Visual C++, including ATL, MFC, OLE DB Templates, the C run-time library, and the C++ Standard Library. +[C++ Libraries Reference](../standard-library/cpp-standard-library-reference.md)
+Provides links to the various libraries provided with Visual Studio, including ATL, MFC, OLE DB Templates, the C run-time library, and the C++ Standard Library. [Debugging in Visual Studio](/visualstudio/debugger/debugging-in-visual-studio)
Provides links to using the Visual Studio debugger to correct logic errors in your application or stored procedures. diff --git a/docs/mfc/mfc-internet-programming-tasks.md b/docs/mfc/mfc-internet-programming-tasks.md index 7498fd45c93..c0911a53a89 100644 --- a/docs/mfc/mfc-internet-programming-tasks.md +++ b/docs/mfc/mfc-internet-programming-tasks.md @@ -9,7 +9,7 @@ ms.assetid: 6377e9b8-07c4-4380-b63b-05f5a9061313 This section contains detailed steps for adding Internet support to your applications. Topics include how to use the MFC classes to Internet-enable your existing applications, and how to add Active document support to your existing COM component. Do you want to create a document with up-to-the-minute stock quotes, Pittsburgh's football scores, and the latest temperature in Antarctica Microsoft provides a number of technologies to help you do that over the Internet. -Active technologies include ActiveX controls (formerly OLE controls) and Active documents; WinInet for easily retrieving and saving files across the Internet; and asynchronous monikers for efficient data downloading. Visual C++ provides wizards to help you get started quickly with a starter application. For an introduction to these technologies, see [MFC Internet Programming Basics](mfc-internet-programming-basics.md) and [MFC COM](mfc-com.md). +Active technologies include ActiveX controls (formerly OLE controls) and Active documents; WinInet for easily retrieving and saving files across the Internet; and asynchronous monikers for efficient data downloading. Visual Studio provides wizards to help you get started quickly with a starter application. For an introduction to these technologies, see [MFC Internet Programming Basics](mfc-internet-programming-basics.md) and [MFC COM](mfc-com.md). Have you always wanted to FTP a file but haven't learned WinSock and network programming protocols WinInet classes encapsulate these protocols, providing you with a simple set of functions you can use to write a client application on the Internet to download files using HTTP, FTP, and gopher. You can use WinInet to search directories on your hard drive or around the world. You can transparently collect data of several different types, and present it to the user in an integrated interface. diff --git a/docs/mfc/mfc-library-versions.md b/docs/mfc/mfc-library-versions.md index bafc3f49141..974d8e1bb97 100644 --- a/docs/mfc/mfc-library-versions.md +++ b/docs/mfc/mfc-library-versions.md @@ -100,7 +100,7 @@ Debugger files that have the same base name and a .pdb extension are also availa The MFC shared DLLs also follow a structured naming convention. This makes it easier to know which DLL or library you should be using for which purpose. -The MFC DLLs have *version* numbers that indicate binary compatibility. Use MFC DLLs that have the same version as your other libraries and compiler toolset to guarantee compatibility within a project. +The MFC DLLs have *version* numbers that indicate binary compatibility. Use MFC DLLs that have the same version as your other libraries and compiler build tools to guarantee compatibility within a project. |DLL|Description| |---------|-----------------| @@ -117,7 +117,7 @@ The import libraries needed to build applications or MFC extension DLLs that use If you are dynamically linking to the shared DLL version of MFC, whether it is from an application or from an MFC extension DLL, you must include the matching MFC*version*.DLL or MFC*version*U.DLL when you deploy your product. -For a list of Visual C++ DLLs that can be distributed with your applications, see [Distributable Code for Microsoft Visual Studio 2017 and Microsoft Visual Studio 2017 SDK (Includes Utilities and BuildServer Files)](/visualstudio/productinfo/2017-redistribution-vs) or [Distributable Code for Visual Studio 2019](/visualstudio/releases/2019/redistribution). +For a list of Visual Studio DLLs that can be distributed with your applications, see [Distributable Code for Microsoft Visual Studio 2017 and Microsoft Visual Studio 2017 SDK (Includes Utilities and BuildServer Files)](/visualstudio/productinfo/2017-redistribution-vs) or [Distributable Code for Visual Studio 2019](/visualstudio/releases/2019/redistribution). For more information on MBCS and Unicode support in MFC, see [Unicode and Multibyte Character Set (MBCS) Support](../atl-mfc-shared/unicode-and-multibyte-character-set-mbcs-support.md). diff --git a/docs/mfc/mfc-mbcs-dll-add-on.md b/docs/mfc/mfc-mbcs-dll-add-on.md index 154e05d42f4..0bc1d03de9a 100644 --- a/docs/mfc/mfc-mbcs-dll-add-on.md +++ b/docs/mfc/mfc-mbcs-dll-add-on.md @@ -10,7 +10,7 @@ Support for MFC and its multibyte character set (MBCS) libraries requires an add **Visual Studio 2013**: By default, the MFC libraries installed in Visual Studio 2013 only support Unicode development. You need the MBCS DLLs in order to build an MFC project in Visual Studio 2013 that has the **Character Set** property set to **Use Multi-Byte Character Set** or **Not Set**. Download the DLL at [Multibyte MFC Library for Visual Studio 2013](https://www.microsoft.com/download/details.aspx?id=40770). -**Visual Studio 2015**: Both Unicode and MBCS MFC DLLs are included in the Visual C++ setup components, but support for MFC is not installed by default. Visual C++ and MFC are optional install configurations in Visual Studio setup. To make sure that MFC is installed, choose **Custom** in setup, and under **Programming Languages**, make sure that **Visual C++** and **Microsoft Foundation Classes for C++** are selected. If you have already installed Visual Studio, you will be prompted to install Visual C++ and/or MFC when you attempt to create an MFC project. +**Visual Studio 2015**: Both Unicode and MBCS MFC DLLs are included in the Visual Studio setup components, but support for MFC is not installed by default. C++ and MFC are optional install configurations in Visual Studio setup. To make sure that MFC is installed, choose **Custom** in setup, and under **Programming Languages**, make sure that **C++ compilers and libraries** and **Microsoft Foundation Classes for C++** are selected. If you have already installed Visual Studio, you will be prompted to install C++ and/or MFC when you attempt to create an MFC project. **Visual Studio 2017 and later**: The Unicode and MBCS MFC DLLs are installed with the **Desktop development with C++** workload when you select **MFC and ATL support** from the **Optional Components** pane in the Visual Studio Installer program. If your installation does not include these components, navigate to the **File | New Projects** dialog and click the **Open Visual Studio Installer** link. For more information, see [Install Visual Studio](/visualstudio/install/install-visual-studio). diff --git a/docs/mfc/mfc-toolbar-implementation.md b/docs/mfc/mfc-toolbar-implementation.md index 696dfdd3cd3..66b9d9ee497 100644 --- a/docs/mfc/mfc-toolbar-implementation.md +++ b/docs/mfc/mfc-toolbar-implementation.md @@ -69,7 +69,7 @@ Also see the MFC General sample [DOCKTOOL](../overview/visual-cpp-samples.md). ## The Toolbar Bitmap -Once constructed, a `CToolBar` object creates the toolbar image by loading a single bitmap that contains one image for each button. The Application Wizard creates a standard toolbar bitmap that you can customize with the Visual C++ [toolbar editor](../windows/toolbar-editor.md). +Once constructed, a `CToolBar` object creates the toolbar image by loading a single bitmap that contains one image for each button. The Application Wizard creates a standard toolbar bitmap that you can customize with the Visual Studio [toolbar editor](../windows/toolbar-editor.md). ### What do you want to know more about diff --git a/docs/mfc/multiple-document-types-views-and-frame-windows.md b/docs/mfc/multiple-document-types-views-and-frame-windows.md index f24bb3620a6..bca21f51732 100644 --- a/docs/mfc/multiple-document-types-views-and-frame-windows.md +++ b/docs/mfc/multiple-document-types-views-and-frame-windows.md @@ -64,7 +64,7 @@ In a splitter window, the window is, or can be, split into two or more scrollabl Dynamic splitter windows, with views of the same class, allow the user to split a window into multiple panes at will and then scroll different panes to see different parts of the document. The user can also unsplit the window to remove the additional views. The splitter windows added to the [Scribble sample](../overview/visual-cpp-samples.md) are an example. That topic describes the technique for creating dynamic splitter windows. A dynamic splitter window is shown in part b of the figure Multiple-View User Interfaces. -Static splitter windows, with views of different classes, start with the window split into multiple panes, each with a different purpose. For example, in the Visual C++ bitmap editor, the image window shows two panes side by side. The left-hand pane displays a life-sized image of the bitmap. The right-hand pane displays a zoomed or magnified image of the same bitmap. The panes are separated by a "splitter bar" that the user can drag to change the relative sizes of the panes. A static splitter window is shown in part c of the figure Multiple-View User Interfaces. +Static splitter windows, with views of different classes, start with the window split into multiple panes, each with a different purpose. For example, in the Visual Studio bitmap editor, the image window shows two panes side by side. The left-hand pane displays a life-sized image of the bitmap. The right-hand pane displays a zoomed or magnified image of the same bitmap. The panes are separated by a "splitter bar" that the user can drag to change the relative sizes of the panes. A static splitter window is shown in part c of the figure Multiple-View User Interfaces. For more information, see class [CSplitterWnd](reference/csplitterwnd-class.md) in the *MFC Reference* and [MFC Samples](../overview/visual-cpp-samples.md#mfc-samples). diff --git a/docs/mfc/programming-activex-controls-in-a-activex-control-container.md b/docs/mfc/programming-activex-controls-in-a-activex-control-container.md index 43334e14538..594f5d61f3c 100644 --- a/docs/mfc/programming-activex-controls-in-a-activex-control-container.md +++ b/docs/mfc/programming-activex-controls-in-a-activex-control-container.md @@ -44,7 +44,7 @@ Once the Circ control is inserted into the project (step 1), insert an instance ## Modifications to the Project -To enable the Container application to access the Circ control, Visual C++ automatically adds the wrapper class (`CCirc`) implementation file (.CPP) to the Container project and the wrapper class header (.H) file to the dialog box header file: +To enable the Container application to access the Circ control, Visual Studio automatically adds the wrapper class (`CCirc`) implementation file (.CPP) to the Container project and the wrapper class header (.H) file to the dialog box header file: [!code-cpp[NVC_MFC_AxCont#1](../mfc/codesnippet/cpp/programming-activex-controls-in-a-activex-control-container_1.h)] @@ -59,7 +59,7 @@ These functions can then be called from other of the application's procedures us ## Member Variable Modifications to the Project -Once the ActiveX control has been added to the project and embedded in a dialog box container, it can be accessed by other parts of the project. The easiest way to access the control is to [create a member variable](../mfc/activex-control-containers-connecting-an-activex-control-to-a-member-variable.md) of the dialog class, `CContainerDlg` (step 2), that is of the same type as the wrapper class added to the project by Visual C++. You can then use the member variable to access the embedded control at any time. +Once the ActiveX control has been added to the project and embedded in a dialog box container, it can be accessed by other parts of the project. The easiest way to access the control is to [create a member variable](../mfc/activex-control-containers-connecting-an-activex-control-to-a-member-variable.md) of the dialog class, `CContainerDlg` (step 2), that is of the same type as the wrapper class added to the project by Visual Studio. You can then use the member variable to access the embedded control at any time. When the **Add Member Variable** dialog box adds the *m_circctl* member variable to the project, it also adds the following lines to the header file (.H) of the `CContainerDlg` class: diff --git a/docs/mfc/property-sheets-and-property-pages-mfc.md b/docs/mfc/property-sheets-and-property-pages-mfc.md index bf595657827..6fa12970360 100644 --- a/docs/mfc/property-sheets-and-property-pages-mfc.md +++ b/docs/mfc/property-sheets-and-property-pages-mfc.md @@ -7,7 +7,7 @@ ms.assetid: de8fea12-6c35-4cef-8625-b8073a379446 --- # Property Sheets and Property Pages (MFC) -An MFC [dialog box](../mfc/dialog-boxes.md) can take on a "tab dialog" look by incorporating property sheets and property pages. Called a "property sheet" in MFC, this kind of dialog box, similar to many dialog boxes in Microsoft Word, Excel, and Visual C++, appears to contain a stack of tabbed sheets, much like a stack of file folders seen from front to back, or a group of cascaded windows. Controls on the front tab are visible; only the labeled tab is visible on the rear tabs. Property sheets are particularly useful for managing large numbers of properties or settings that fall fairly neatly into several groups. Typically, one property sheet can simplify a user interface by replacing several separate dialog boxes. +An MFC [dialog box](../mfc/dialog-boxes.md) can take on a "tab dialog" look by incorporating property sheets and property pages. Called a "property sheet" in MFC, this kind of dialog box, similar to many dialog boxes in Microsoft Word, Excel, and Visual Studio, appears to contain a stack of tabbed sheets, much like a stack of file folders seen from front to back, or a group of cascaded windows. Controls on the front tab are visible; only the labeled tab is visible on the rear tabs. Property sheets are particularly useful for managing large numbers of properties or settings that fall fairly neatly into several groups. Typically, one property sheet can simplify a user interface by replacing several separate dialog boxes. As of MFC version 4.0, property sheets and property pages are implemented using the common controls that come with Windows 95 and Windows NT version 3.51 and later. diff --git a/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md b/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md index db0802eea7c..e1730119ef5 100644 --- a/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md +++ b/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md @@ -20,7 +20,7 @@ A type library contains a binary description of the interfaces exposed by a comp 1. From the shortcut menu, select **Add** > **New Item**. -1. In the **Add New Item** dialog, select **Installed** packages and then select **Visual C++**. +1. In the **Add New Item** dialog, select **Installed** packages and then select **Visual Studio**. 1. In the Templates pane, select **MFC Class from Typelib**, and then select **Add** to display the [Add Class from Typelib Wizard](../../mfc/reference/add-class-from-typelib-wizard.md). diff --git a/docs/mfc/reference/adding-an-mfc-odbc-consumer.md b/docs/mfc/reference/adding-an-mfc-odbc-consumer.md index 887931326d3..a0f9991f6d8 100644 --- a/docs/mfc/reference/adding-an-mfc-odbc-consumer.md +++ b/docs/mfc/reference/adding-an-mfc-odbc-consumer.md @@ -13,7 +13,7 @@ An MFC ODBC consumer consists of an ODBC recordset class and data bindings neces 1. In Class View, right-click the project. On the shortcut menu, click **Add** and then click **Add Class**. -1. In the Visual C++ folder, double-click the **MFC ODBC Consumer** icon or select it and click **Open**. +1. In the Visual Studio folder, double-click the **MFC ODBC Consumer** icon or select it and click **Open**. The MFC ODBC Consumer Wizard opens. diff --git a/docs/mfc/reference/application-information-and-management.md b/docs/mfc/reference/application-information-and-management.md index 444361085bc..4c97fa5d41a 100644 --- a/docs/mfc/reference/application-information-and-management.md +++ b/docs/mfc/reference/application-information-and-management.md @@ -414,7 +414,7 @@ This function is provided for backward compatibility. New applications should us `AfxInitRichEdit` loads `RICHED32.DLL` to initialize version 1.0 of the rich edit control. To use version 2.0 and 3.0 of the rich edit control, `RICHED20.DLL` needs to be loaded. It's loaded by making a call to [`AfxInitRichEdit2`](#afxinitrichedit2). -To update rich edit controls in existing Visual C++ applications to version 2.0, open the .RC file as text, change the class name of each rich edit control from "`RICHEDIT`" to "`RichEdit20a`". Then replace the call to `AfxInitRichEdit` with `AfxInitRichEdit2`. +To update rich edit controls in existing Visual Studio applications to version 2.0, open the .RC file as text, change the class name of each rich edit control from "`RICHEDIT`" to "`RichEdit20a`". Then replace the call to `AfxInitRichEdit` with `AfxInitRichEdit2`. This function also initializes the common controls library, if the library hasn't already been initialized for the process. If you use the rich edit control directly from your MFC application, call this function to assure that MFC has properly initialized the rich edit control runtime. If you call the `Create` method of [`CRichEditCtrl`](../../mfc/reference/cricheditctrl-class.md), [`CRichEditView`](../../mfc/reference/cricheditview-class.md), or [`CRichEditDoc`](../../mfc/reference/cricheditdoc-class.md), you typically don't need to call this function, but in some cases it might be necessary. diff --git a/docs/mfc/reference/cdc-class.md b/docs/mfc/reference/cdc-class.md index 910c96cad27..69ea401ff76 100644 --- a/docs/mfc/reference/cdc-class.md +++ b/docs/mfc/reference/cdc-class.md @@ -1643,7 +1643,7 @@ Specifies the last value returned by the [callback function](callback-functions- For each object of a given type, the callback function that you pass is called with the information for that object. The system calls the callback function until there are no more objects or the callback function returns 0. -New features of Microsoft Visual C++ let you use an ordinary function as the function passed to `EnumObjects`. The address passed to `EnumObjects` is a pointer to a function exported with **`EXPORT`** and with the Pascal calling convention. In protect-mode applications, you don't have to create this function with the Windows `MakeProcInstance` function or free the function after use with the `FreeProcInstance` Windows function. +New features of Visual Studio let you use an ordinary function as the function passed to `EnumObjects`. The address passed to `EnumObjects` is a pointer to a function exported with **`EXPORT`** and with the Pascal calling convention. In protect-mode applications, you don't have to create this function with the Windows `MakeProcInstance` function or free the function after use with the `FreeProcInstance` Windows function. You also don't have to export the function name in an **`EXPORTS`** statement in your application's module-definition file. You can instead use the **`EXPORT`** function modifier, as in @@ -5336,7 +5336,7 @@ Specifies the outcome of the `SetAbortProc` function. Some of the following valu If an application is to allow the print job to be canceled during spooling, it must set the abort function before the print job is started with the [`StartDoc`](#startdoc) member function. The Print Manager calls the abort function during spooling to allow the application to cancel the print job or to process out-of-disk-space conditions. If no abort function is set, the print job will fail if there isn't enough disk space for spooling. -The features of Microsoft Visual C++ simplify the creation of the callback function passed to `SetAbortProc`. The address passed to the `EnumObjects` member function is a pointer to a function exported with `__declspec(dllexport)` and with the **`__stdcall`** calling convention. +The features of Visual Studio simplify the creation of the callback function passed to `SetAbortProc`. The address passed to the `EnumObjects` member function is a pointer to a function exported with `__declspec(dllexport)` and with the **`__stdcall`** calling convention. You also don't have to export the function name in an **`EXPORTS`** statement in your application's module-definition file. You can instead use the **`EXPORT`** function modifier, as in diff --git a/docs/mfc/reference/cdialogbar-class.md b/docs/mfc/reference/cdialogbar-class.md index 8d8c5acd272..4b613e0fa29 100644 --- a/docs/mfc/reference/cdialogbar-class.md +++ b/docs/mfc/reference/cdialogbar-class.md @@ -39,7 +39,7 @@ Creating and using a dialog bar is similar to creating and using a `CFormView` o For more information on `CDialogBar`, see the article [Dialog Bars](../../mfc/dialog-bars.md) and [Technical Note 31](../../mfc/tn031-control-bars.md), Control Bars. > [!NOTE] -> In the current release, a `CDialogBar` object cannot host Windows Forms controls. For more information about Windows Forms controls in Visual C++, see [Using a Windows Form User Control in MFC](../../dotnet/using-a-windows-form-user-control-in-mfc.md). +> In the current release, a `CDialogBar` object cannot host Windows Forms controls. For more information about Windows Forms controls in Visual Studio, see [Using a Windows Form User Control in MFC](../../dotnet/using-a-windows-form-user-control-in-mfc.md). ## Inheritance Hierarchy diff --git a/docs/mfc/reference/cformview-class.md b/docs/mfc/reference/cformview-class.md index 2166ba0f16c..cb84a87b8d5 100644 --- a/docs/mfc/reference/cformview-class.md +++ b/docs/mfc/reference/cformview-class.md @@ -35,7 +35,7 @@ A form view is essentially a view that contains controls. These controls are lai When you're [Creating a Forms-Based Application](../../mfc/reference/creating-a-forms-based-mfc-application.md), you can base its view class on `CFormView`, making it a forms-based application. -You can also insert new [Form Topics](../../mfc/form-views-mfc.md) into document-view-based applications. Even if your application didn't initially support forms, Visual C++ will add this support when you insert a new form. +You can also insert new [Form Topics](../../mfc/form-views-mfc.md) into document-view-based applications. Even if your application didn't initially support forms, Visual Studio will add this support when you insert a new form. The MFC Application Wizard and the Add Class command are the preferred methods for creating forms-based applications. If you need to create a forms-based application without using these methods, see [Creating a Forms-Based Application](../../mfc/reference/creating-a-forms-based-mfc-application.md). diff --git a/docs/mfc/reference/creating-a-forms-based-mfc-application.md b/docs/mfc/reference/creating-a-forms-based-mfc-application.md index 9ef2409ba6b..1378686ea70 100644 --- a/docs/mfc/reference/creating-a-forms-based-mfc-application.md +++ b/docs/mfc/reference/creating-a-forms-based-mfc-application.md @@ -24,7 +24,7 @@ The base class for form-based applications is [`CFormView`](cformview-class.md). Even if you use a base class such as [`CView`](cview-class.md), you can later make your applications forms-based by [adding an MFC class](adding-an-mfc-class.md) derived from `CFormView`. -Once you finish with the wizard, your project opens, and if you selected `CFormView` (or a class that inherits from `CFormView`) as your base class or if you created a dialog-based application, Visual C++ opens the dialog editor. At this point, you are ready to design your first form. +Once you finish with the wizard, your project opens, and if you selected `CFormView` (or a class that inherits from `CFormView`) as your base class or if you created a dialog-based application, Visual Studio opens the dialog editor. At this point, you are ready to design your first form. ### To begin creating a forms-based MFC executable diff --git a/docs/mfc/reference/creating-a-web-browser-style-mfc-application.md b/docs/mfc/reference/creating-a-web-browser-style-mfc-application.md index 06aa373199c..ab5e862682c 100644 --- a/docs/mfc/reference/creating-a-web-browser-style-mfc-application.md +++ b/docs/mfc/reference/creating-a-web-browser-style-mfc-application.md @@ -28,7 +28,7 @@ The WebBrowser control supports Web browsing through hyperlinks and Uniform Reso Because `CHtmlView` simply implements the Microsoft Web browser control, its support for printing isn't like other [`CView`](../../mfc/reference/cview-class.md)-derived classes. Rather, the WebBrowser control implements the printer user interface and printing. As a result, `CHtmlView` doesn't support print preview, and the framework doesn't provide for other printing support functions: for example, [`CView::OnPreparePrinting`](../../mfc/reference/cview-class.md#onprepareprinting), [`CView::OnBeginPrinting`](../../mfc/reference/cview-class.md#onbeginprinting), and [`CView::OnEndPrinting`](../../mfc/reference/cview-class.md#onendprinting), which are available in other MFC applications. -`CHtmlView` acts as a wrapper for the Web browser control, which gives your application a view onto a Web or an HTML page. The wizard creates an override to the [`OnInitialUpdate`](../../mfc/reference/cview-class.md#oninitialupdate) function in the view class, providing a navigational link to the Microsoft Visual C++ Web site: +`CHtmlView` acts as a wrapper for the Web browser control, which gives your application a view onto a Web or an HTML page. The wizard creates an override to the [`OnInitialUpdate`](../../mfc/reference/cview-class.md#oninitialupdate) function in the view class, providing a navigational link to the Visual Studio Web site: ```cpp void CWebView::OnInitialUpdate() diff --git a/docs/mfc/reference/creating-an-mfc-application.md b/docs/mfc/reference/creating-an-mfc-application.md index 5a981ca05ca..8cf0f8d7610 100644 --- a/docs/mfc/reference/creating-an-mfc-application.md +++ b/docs/mfc/reference/creating-an-mfc-application.md @@ -56,7 +56,7 @@ The dialog shows the application type, set to Console Application (.exe). Under ## To create an MFC forms or dialog-based application 1. From the Visual Studio main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **Visual C++** > **MFC/ATL**. If you don't see these, use the Visual Studio Installer to add MFC/ATL functionality. You can access the installer from the Visual Studio menu via **Tools** > **Get Tools and Features...** In the installer, select **Individual components** and search for **mfc** and then select the appropriate library for your machine such as **Visual C++ MFC for x86 and x64 with Spectre Mitigations**. +1. Under the **Installed** templates, choose **C++** > **MFC/ATL**. If you don't see these, use the Visual Studio Installer to add MFC/ATL functionality. You can access the installer from the Visual Studio menu via **Tools** > **Get Tools and Features...** In the installer, select **Individual components** and search for **mfc** and then select the appropriate library for your machine such as **C++ MFC for x86 and x64 with Spectre Mitigations**. 1. Choose **MFC App** from the center pane. 1. Modify the configuration values as needed, then press **OK**. @@ -71,7 +71,7 @@ The dialog shows the various settings set to their default, such as the applicat An MFC console application is a command-line program that uses MFC libraries but runs in the console window. 1. From the main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **Visual C++** > **Windows Desktop**. +1. Under the **Installed** templates, choose **C++** > **Windows Desktop**. 1. From the center pane, choose **Windows Desktop Wizard**. 1. Modify the project name as needed, then press **OK** to open the **Windows Desktop Wizard**. 1. Check the **MFC Headers** box and set other values as needed, then press **OK**. @@ -87,7 +87,7 @@ The dialog shows the application type set to Console Application (.exe). Under a ## To create an MFC forms or dialog-based application 1. From the main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **Visual C++** > **MFC**. +1. Under the **Installed** templates, choose **C++** > **MFC**. 1. Choose **MFC Application** from the center pane. 1. Click **Next** to start the **MFC Application Wizard**. @@ -102,7 +102,7 @@ The dialog lists the current project settings such as: tabbed multiple document An MFC console application is a command-line program that uses MFC libraries but runs in the console window. 1. From the main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **Visual C++** > **Win32**. +1. Under the **Installed** templates, choose **C++** > **Win32**. 1. Choose **Win32 Console Application** from the center pane. 1. Modify the project name as needed, then press **OK**. 1. On the second page of the wizard, check the **Add common headers for MFC** box and set other values as needed, then press **Finish**. diff --git a/docs/mfc/reference/crecordset-class.md b/docs/mfc/reference/crecordset-class.md index 40295670721..ec14c8d5d1e 100644 --- a/docs/mfc/reference/crecordset-class.md +++ b/docs/mfc/reference/crecordset-class.md @@ -1403,7 +1403,7 @@ Accept the default value, `AFX_DB_USE_DEFAULT_TYPE`, or use one of the following - `CRecordset::forwardOnly` A read-only recordset with only forward scrolling. - For `CRecordset`, the default value is `CRecordset::snapshot`. The default-value mechanism allows the Visual C++ wizards to interact with both ODBC `CRecordset` and DAO `CDaoRecordset`, which have different defaults. + For `CRecordset`, the default value is `CRecordset::snapshot`. The default-value mechanism allows the Visual Studio wizards to interact with both ODBC `CRecordset` and DAO `CDaoRecordset`, which have different defaults. For more information about these recordset types, see [Recordset (ODBC)](../../data/odbc/recordset-odbc.md). For related information, see "Using Block and Scrollable Cursors" in the Windows SDK. diff --git a/docs/mfc/reference/ctoolbar-class.md b/docs/mfc/reference/ctoolbar-class.md index 983d20748bc..33cab610164 100644 --- a/docs/mfc/reference/ctoolbar-class.md +++ b/docs/mfc/reference/ctoolbar-class.md @@ -52,7 +52,7 @@ The buttons can act like pushbuttons, check-box buttons, or radio buttons. `CToo [`CToolBar::GetToolBarCtrl`](#gettoolbarctrl), a member function new to MFC 4.0, allows you to take advantage of the Windows common control's support for toolbar customization and additional functionality. `CToolBar` member functions give you most of the functionality of the Windows common controls; however, when you call `GetToolBarCtrl`, you can give your toolbars even more of the characteristics of Windows 95/98 toolbars. When you call `GetToolBarCtrl`, it will return a reference to a `CToolBarCtrl` object. See [`CToolBarCtrl`](../../mfc/reference/ctoolbarctrl-class.md) for more information about designing toolbars using Windows common controls. For more general information about common controls, see [Common Controls](/windows/win32/Controls/common-controls-intro) in the Windows SDK. -Visual C++ provides you with two methods to create a toolbar. To create a toolbar resource using the Resource Editor, follow these steps: +Visual Studio provides you with two methods to create a toolbar. To create a toolbar resource using the Resource Editor, follow these steps: 1. Create a toolbar resource. diff --git a/docs/mfc/reference/diagnostic-services.md b/docs/mfc/reference/diagnostic-services.md index 18c273ec9e0..235d76280b4 100644 --- a/docs/mfc/reference/diagnostic-services.md +++ b/docs/mfc/reference/diagnostic-services.md @@ -395,7 +395,7 @@ CDumpContext afxDump; `afxDump` is a predefined [CDumpContext](../../mfc/reference/cdumpcontext-class.md) object that allows you to send `CDumpContext` information to the debugger output window or to a debug terminal. Typically, you supply `afxDump` as a parameter to `CObject::Dump`. -Under Windows NT and all versions of Windows, `afxDump` output is sent to the Output-Debug window of Visual C++ when you debug your application. +Under Windows NT and all versions of Windows, `afxDump` output is sent to the Output-Debug window of Visual Studio when you debug your application. This variable is defined only in the Debug version of MFC. For more information on `afxDump`, see [Debugging MFC Applications](/visualstudio/debugger/mfc-debugging-techniques). diff --git a/docs/mfc/reference/mfc-application-wizard.md b/docs/mfc/reference/mfc-application-wizard.md index 81d79ea6b6e..1ca347b8771 100644 --- a/docs/mfc/reference/mfc-application-wizard.md +++ b/docs/mfc/reference/mfc-application-wizard.md @@ -68,7 +68,7 @@ This wizard page describes the current application settings for the MFC applicat To change these default settings, select the appropriate tab title in the left column of the wizard and make the changes on the page that appears. -After you create an MFC application project, you can add objects or controls to your project using Visual C++ [code wizards](../../ide/adding-functionality-with-code-wizards-cpp.md). +After you create an MFC application project, you can add objects or controls to your project using Visual Studio [code wizards](../../ide/adding-functionality-with-code-wizards-cpp.md). ## See also diff --git a/docs/mfc/reference/mfc-dll-wizard.md b/docs/mfc/reference/mfc-dll-wizard.md index 9f7433d1c1c..ad350303e65 100644 --- a/docs/mfc/reference/mfc-dll-wizard.md +++ b/docs/mfc/reference/mfc-dll-wizard.md @@ -16,7 +16,7 @@ This wizard page describes the current [application settings for the MFC DLL pro To change these defaults, click **Application Settings** in the left column of the wizard and make changes in that page of the MFC DLL Wizard. -After you create an MFC DLL project, you can add objects or controls to your project using Visual C++ [code wizards](../../ide/adding-functionality-with-code-wizards-cpp.md). +After you create an MFC DLL project, you can add objects or controls to your project using Visual Studio [code wizards](../../ide/adding-functionality-with-code-wizards-cpp.md). You can perform the following tasks and types of enhancements to a basic MFC DLL project: diff --git a/docs/mfc/relationship-to-the-c-language-api.md b/docs/mfc/relationship-to-the-c-language-api.md index b055335b658..22c012bd971 100644 --- a/docs/mfc/relationship-to-the-c-language-api.md +++ b/docs/mfc/relationship-to-the-c-language-api.md @@ -9,7 +9,7 @@ ms.assetid: 334e8efc-f3cc-4018-bc2e-02908b2a39fe The single characteristic that sets the Microsoft Foundation Class (MFC) Library apart from other class libraries for Windows is the very close mapping to the Windows API written in the C language. Further, you can generally mix calls to the class library freely with direct calls to the Windows API. This direct access does not, however, imply that the classes are a complete replacement for that API. Developers must still occasionally make direct calls to some Windows functions, such as [SetCursor](/windows/win32/api/winuser/nf-winuser-setcursor) and [GetSystemMetrics](/windows/win32/api/winuser/nf-winuser-getsystemmetrics), for example. A Windows function is wrapped by a class member function only when there is a clear advantage to doing so. -Because you sometimes need to make native Windows function calls, you should have access to the C-language Windows API documentation. This documentation is included with Microsoft Visual C++. +Because you sometimes need to make native Windows function calls, you should have access to the C-language Windows API documentation. This documentation is included with Visual Studio. > [!NOTE] > For an overview of how the MFC Library framework operates, see [Using the Classes to Write Applications for Windows](../mfc/using-the-classes-to-write-applications-for-windows.md). diff --git a/docs/mfc/sequence-of-operations-for-building-mfc-applications.md b/docs/mfc/sequence-of-operations-for-building-mfc-applications.md index 3c77d334150..529a989c36c 100644 --- a/docs/mfc/sequence-of-operations-for-building-mfc-applications.md +++ b/docs/mfc/sequence-of-operations-for-building-mfc-applications.md @@ -14,8 +14,8 @@ The following table explains the general sequence you might typically follow as |Task|You do|The framework does| |----------|------------|------------------------| |Create a skeleton application.|Run the [MFC Application Wizard](../mfc/reference/mfc-application-wizard.md). Specify the options you want in the options pages. Options include making the application a COM component, container, or both; adding Automation; and making the application database-aware.|The MFC Application Wizard creates the files for a skeleton application, including source files for your application, document, view, and frame windows; a resource file; a project file; and others, all tailored to your specifications.| -|See what the framework and the MFC Application Wizard offer without adding a line of your own code.|Build the skeleton application and run it in Visual C++.|The running skeleton application derives many standard **File**, **Edit**, **View**, and **Help** menu commands from the framework. For MDI applications, you also get a fully functional Windows menu, and the framework manages creation, arrangement, and destruction of MDI child windows.| -|Construct your application's user interface.|Use the Visual C++ [resource editors](../windows/resource-editors.md) to visually edit the application's user interface:

- Create menus.
- Define accelerators.
- Create dialog boxes.
- Create and edit bitmaps, icons, and cursors.
- Edit the toolbar created for you by the MFC Application Wizard.
- Create and edit other resources.

You can also test the dialog boxes in the dialog editor.|The default resource file created by the MFC Application Wizard supplies many of the resources you need. Visual C++ lets you edit existing resources and add new resources easily and visually.| +|See what the framework and the MFC Application Wizard offer without adding a line of your own code.|Build the skeleton application and run it in Visual Studio.|The running skeleton application derives many standard **File**, **Edit**, **View**, and **Help** menu commands from the framework. For MDI applications, you also get a fully functional Windows menu, and the framework manages creation, arrangement, and destruction of MDI child windows.| +|Construct your application's user interface.|Use the Visual Studio [resource editors](../windows/resource-editors.md) to visually edit the application's user interface:

- Create menus.
- Define accelerators.
- Create dialog boxes.
- Create and edit bitmaps, icons, and cursors.
- Edit the toolbar created for you by the MFC Application Wizard.
- Create and edit other resources.

You can also test the dialog boxes in the dialog editor.|The default resource file created by the MFC Application Wizard supplies many of the resources you need. Visual Studio lets you edit existing resources and add new resources easily and visually.| |Map menus to handler functions.|Use the **Events** button in the [**Properties** window](/visualstudio/ide/reference/properties-window) in **Class View** (or the **Commands** tab in [Class Wizard](reference/mfc-class-wizard.md)) to connect menus and accelerators to handler functions in your code.|These tools insert message-map entries and empty function templates into the source files you specify and manages many manual coding tasks.| |Write your handler code.|Use Class View to jump directly to the code in the source code editor. Fill in the code for your handler functions. For more information on using Class View and about wizards that add code to a project, see [Adding Functionality with Code Wizards](../ide/adding-functionality-with-code-wizards-cpp.md).|Class View opens the editor, scrolls to the empty function template and positions the cursor for you.| |Map toolbar buttons to commands.|Map each button on your toolbar to a menu or accelerator command by assigning the button the appropriate command ID.|The framework controls the drawing, enabling, disabling, checking, and other visual aspects of the toolbar buttons.| @@ -33,7 +33,7 @@ The following table explains the general sequence you might typically follow as |Create database forms.|If you want a form-based data-access application, derive your view class from [CRecordView](../mfc/reference/crecordview-class.md) (for ODBC programming).|The view works like a form view, but its controls are connected to the fields of a [CRecordset](../mfc/reference/crecordset-class.md) object representing a database table. MFC moves data between the controls and the recordset for you.| |Create a simple text editor.|If you want your view to be a simple text editor, derive your view class or classes from [CEditView](../mfc/reference/ceditview-class.md) or [CRichEditView](../mfc/reference/cricheditview-class.md).|The view provides editing functions, Clipboard support, and file input/output. `CRichEditView` provides styled text.| |Add splitter windows.|If you want to support window splitting, add a [CSplitterWnd](../mfc/reference/csplitterwnd-class.md) object to your SDI frame window or MDI child window and hook it up in the window's [OnCreateClient](../mfc/reference/cframewnd-class.md#oncreateclient) member function.|The framework supplies splitter-box controls next to the scroll bars and manages splitting your view into multiple panes. If the user splits a window, the framework creates and attaches additional view objects to the document.| -|Build, test, and debug your application.|Use the facilities of Visual C++ to build, test, and debug your application.|Visual C++ lets you adjust compile, link, and other options. It also lets you browse your source code and class structure.| +|Build, test, and debug your application.|Use the facilities of Visual Studio to build, test, and debug your application.|Visual Studio lets you adjust compile, link, and other options. It also lets you browse your source code and class structure.| ## See also diff --git a/docs/mfc/sequence-of-operations-for-creating-activex-controls.md b/docs/mfc/sequence-of-operations-for-creating-activex-controls.md index 1b1dc9884d5..e534e12453f 100644 --- a/docs/mfc/sequence-of-operations-for-creating-activex-controls.md +++ b/docs/mfc/sequence-of-operations-for-creating-activex-controls.md @@ -16,7 +16,7 @@ The following table shows your role and the framework's role in creating ActiveX |Create an ActiveX control framework.|Run the MFC ActiveX Control Wizard to create your control. Specify the options you want in the options pages. Options include the type and name of the control in the project, licensing, subclassing, and an About Box method.|The MFC ActiveX Control Wizard creates the files for an ActiveX control with basic functionality, including source files for your application, control, and property page or pages; a resource file; a project file; and others, all tailored to your specifications.| |See what the control and the ActiveX Control Wizard offer without adding a line of your own code.|Build the ActiveX control and test it with Internet Explorer or the [TSTCON sample](../overview/visual-cpp-samples.md).|The running control has the ability to be resized and moved. It also has an **About Box** method (if chosen) that can be invoked.| |Implement the control's methods and properties.|Implement your control-specific methods and properties by adding member functions to provide an exposed interface to the control's data. Add member variables to hold data structures and use event handlers to fire events when you determine.|The framework has already defined a map to support the control's events, properties, and methods, leaving you to focus on how the properties and methods are implemented. The default property page is viewable and a default About Box method is supplied.| -|Construct the control's property page or pages.|Use the Visual C++ resource editors to visually edit the control's property page interface:

- Create additional property pages.
- Create and edit bitmaps, icons, and cursors.

You can also test the property page(s) in the dialog editor.|The default resource file created by the MFC Application Wizard supplies many of the resources you need. Visual C++ lets you edit existing resources and add new resources easily and visually.| +|Construct the control's property page or pages.|Use the Visual Studio resource editors to visually edit the control's property page interface:

- Create additional property pages.
- Create and edit bitmaps, icons, and cursors.

You can also test the property page(s) in the dialog editor.|The default resource file created by the MFC Application Wizard supplies many of the resources you need. Visual Studio lets you edit existing resources and add new resources easily and visually.| |Test the control's events, methods, and properties.|Rebuild the control and use Test Container to test that your handlers work correctly.|You can invoke the control's methods and manipulate its properties through the property page interface or through Test Container. In addition, use Test Container to track events fired from the control and notifications received by the control's container.| ## See also diff --git a/docs/mfc/sequence-of-operations-for-creating-database-applications.md b/docs/mfc/sequence-of-operations-for-creating-database-applications.md index 2f39ff70f31..8243421de2d 100644 --- a/docs/mfc/sequence-of-operations-for-creating-database-applications.md +++ b/docs/mfc/sequence-of-operations-for-creating-database-applications.md @@ -10,7 +10,7 @@ ms.assetid: 9371da59-8536-43cd-8314-706ad320e2ec The following table shows your role and the framework's role in writing database applications. > [!NOTE] -> The Visual C++ environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use ODBC for new MFC projects. You should only use DAO in maintaining existing applications. +> The Visual Studio environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use ODBC for new MFC projects. You should only use DAO in maintaining existing applications. ### Creating Database Applications @@ -18,7 +18,7 @@ The following table shows your role and the framework's role in writing database |----------|------------|------------------------| |Decide whether to use the MFC ODBC or DAO classes.|Use ODBC for new MFC projects. Use DAO only to maintain existing applications. For general information, see the article [Data Access Programming](../data/data-access-programming-mfc-atl.md).|The framework supplies classes that support database access.| |Create your skeleton application with database options.|Run the MFC Application Wizard. Select options on the Database Support page. If you choose an option that creates a record view, also specify:

- Data source and table name or names
- Query name or names.|The MFC Application Wizard creates files and specifies the necessary includes. Depending on the options you specify, the files can include a recordset class.| -|Design your database form or forms.|Use the Visual C++ dialog editor to place controls on the dialog template resources for your record view classes.|The MFC Application Wizard creates an empty dialog template resource for you to fill in.| +|Design your database form or forms.|Use the Visual Studio dialog editor to place controls on the dialog template resources for your record view classes.|The MFC Application Wizard creates an empty dialog template resource for you to fill in.| |Create additional record view and recordset classes as needed.|Use Class View to create the classes and the dialog editor to design the views.|Class View creates additional files for your new classes.| |Create recordset objects as needed in your code. Use each recordset to manipulate records...|Your recordsets are based on the classes derived from [CRecordset](../mfc/reference/crecordset-class.md) with the wizards.|ODBC uses record field exchange (RFX) to exchange data between the database and your recordset's field data members. If you are using a record view, dialog data exchange (DDX) exchanges data between the recordset and the controls on the record view.| |...or create an explicit [CDatabase](../mfc/reference/cdatabase-class.md) in your code for each database you want to open.|Base your recordset objects on the database objects.|The database object provides an interface to the data source.| diff --git a/docs/mfc/servers-implementing-in-place-frame-windows.md b/docs/mfc/servers-implementing-in-place-frame-windows.md index 3349e0c1357..ae276eda3ea 100644 --- a/docs/mfc/servers-implementing-in-place-frame-windows.md +++ b/docs/mfc/servers-implementing-in-place-frame-windows.md @@ -7,7 +7,7 @@ ms.assetid: 09bde4d8-15e2-4fba-8d14-9b954d926b92 --- # Servers: Implementing In-Place Frame Windows -This article explains what you must do to implement in-place frame windows in your visual editing server application if you do not use the application wizard to create your server application. In place of following the procedure outlined in this article, you could use an existing in-place frame-window class from either an application wizard-generated application or a sample provided with Visual C++. +This article explains what you must do to implement in-place frame windows in your visual editing server application if you do not use the application wizard to create your server application. In place of following the procedure outlined in this article, you could use an existing in-place frame-window class from either an application wizard-generated application or a sample provided with Visual Studio. #### To declare an in-place frame-window class diff --git a/docs/mfc/technical-notes-by-category.md b/docs/mfc/technical-notes-by-category.md index 288094ac3af..64544f67312 100644 --- a/docs/mfc/technical-notes-by-category.md +++ b/docs/mfc/technical-notes-by-category.md @@ -79,7 +79,7 @@ Technical notes are divided into the following categories. For a numerical listi [TN023: Standard MFC Resources](../mfc/tn023-standard-mfc-resources.md)\ [TN024: MFC-Defined Messages and Resources](../mfc/tn024-mfc-defined-messages-and-resources.md)\ [TN028: Context-Sensitive Help Support](../mfc/tn028-context-sensitive-help-support.md)\ -[TN035: Using Multiple Resource Files and Header Files with Visual C++](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)\ +[TN035: Using Multiple Resource Files and Header Files with Visual Studio](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)\ [TN036: Using CFormView with AppWizard and ClassWizard](../mfc/tn036-using-cformview-with-appwizard-and-classwizard.md)\ [TN070: MFC Window Class Names](../mfc/tn070-mfc-window-class-names.md) diff --git a/docs/mfc/technical-notes-by-number.md b/docs/mfc/technical-notes-by-number.md index d07d4b3b3bd..52d265d9390 100644 --- a/docs/mfc/technical-notes-by-number.md +++ b/docs/mfc/technical-notes-by-number.md @@ -44,7 +44,7 @@ The technical notes below are listed numerically, with the most recently written |38|[MFC/OLE IUnknown Implementation](../mfc/tn038-mfc-ole-iunknown-implementation.md)| |37|[Multithreaded MFC 2.1 Applications](../mfc/tn037-multithreaded-mfc-2-1-applications.md)| |36|[Using CFormView with AppWizard and ClassWizard](../mfc/tn036-using-cformview-with-appwizard-and-classwizard.md)| -|35|[Using Multiple Resource Files and Header Files with Visual C++](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)| +|35|[Using Multiple Resource Files and Header Files with Visual Studio](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)| |33|[DLL Version of MFC](../mfc/tn033-dll-version-of-mfc.md)| |32|[MFC Exception Mechanism](../mfc/tn032-mfc-exception-mechanism.md)| |31|[Control Bars](../mfc/tn031-control-bars.md)| diff --git a/docs/mfc/testing-properties-and-events-with-test-container.md b/docs/mfc/testing-properties-and-events-with-test-container.md index d7258a77d5c..ead507de3af 100644 --- a/docs/mfc/testing-properties-and-events-with-test-container.md +++ b/docs/mfc/testing-properties-and-events-with-test-container.md @@ -7,7 +7,7 @@ ms.topic: how-to --- # Testing Properties and Events with Test Container -The Test Container application, shipped in Visual C++, is an ActiveX control container for testing and debugging ActiveX controls. Test Container allows the control developer to test the control's functionality by changing its properties, invoking its methods, and firing its events. Test Container can display logs of data-binding notifications and also provides facilities for testing an ActiveX control's persistence functionality: you can save properties to a stream or to substorage, reload them, and examine the stored stream data. This section describes how to use the basic features of Test Container. For additional information, select the **Help** menu while running Test Container. +The Test Container application, shipped in Visual Studio, is an ActiveX control container for testing and debugging ActiveX controls. Test Container allows the control developer to test the control's functionality by changing its properties, invoking its methods, and firing its events. Test Container can display logs of data-binding notifications and also provides facilities for testing an ActiveX control's persistence functionality: you can save properties to a stream or to substorage, reload them, and examine the stored stream data. This section describes how to use the basic features of Test Container. For additional information, select the **Help** menu while running Test Container. ### To access the ActiveX Control Test Container diff --git a/docs/mfc/tn006-message-maps.md b/docs/mfc/tn006-message-maps.md index 91f8aec4a38..4c24ca0197d 100644 --- a/docs/mfc/tn006-message-maps.md +++ b/docs/mfc/tn006-message-maps.md @@ -97,7 +97,7 @@ pWnd->SendMessage(WM_MYMESSAGE); The range of user-defined messages that use this approach must be in the range WM_USER to 0x7fff. > [!NOTE] -> ClassWizard does not support entering ON_MESSAGE handler routines from the ClassWizard user interface. You must manually enter them from the Visual C++ editor. ClassWizard will parse these entries and let you browse them just like any other message-map entries. +> ClassWizard does not support entering ON_MESSAGE handler routines from the ClassWizard user interface. You must manually enter them from the Visual Studio editor. ClassWizard will parse these entries and let you browse them just like any other message-map entries. ## Registered Windows Messages @@ -150,7 +150,7 @@ Advanced users can use the ON_COMMAND_EX macro, which is an extended form of com Examples of these forms: -- Inside Resource.h (usually generated by Visual C++) +- Inside Resource.h (usually generated by Visual Studio) ```cpp #define ID_MYCMD 100 diff --git a/docs/mfc/tn011-using-mfc-as-part-of-a-dll.md b/docs/mfc/tn011-using-mfc-as-part-of-a-dll.md index 6036c016123..d46e12b6e97 100644 --- a/docs/mfc/tn011-using-mfc-as-part-of-a-dll.md +++ b/docs/mfc/tn011-using-mfc-as-part-of-a-dll.md @@ -17,7 +17,7 @@ If both a DLL and an application want to use MFC, both have a choice to either u regular MFC DLLs have several advantages: -- The application that uses the DLL does not have to use MFC and does not have to be a Visual C++ application. +- The application that uses the DLL does not have to use MFC and does not have to be a Visual Studio application. - With regular MFC DLLs that statically link to MFC, the size of the DLL depends only on the MFC and C runtime routines that are used and linked. @@ -63,7 +63,7 @@ The `DllMain` function that MFC provides will call the [CWinApp::ExitInstance](. ## Linking Your DLL -With regular MFC DLLs that statically link to MFC, you must link your DLL with Nafxcwd.lib or Nafxcw.lib and with the version of the C runtimes named Libcmt.lib. These libraries are pre-built and may be installed by specifying them when you run Visual C++ setup. +With regular MFC DLLs that statically link to MFC, you must link your DLL with Nafxcwd.lib or Nafxcw.lib and with the version of the C runtimes named Libcmt.lib. These libraries are pre-built and may be installed by specifying them when you run Visual Studio setup. ## Sample Code diff --git a/docs/mfc/tn020-id-naming-and-numbering-conventions.md b/docs/mfc/tn020-id-naming-and-numbering-conventions.md index 753afb306c8..96b6e6d29b3 100644 --- a/docs/mfc/tn020-id-naming-and-numbering-conventions.md +++ b/docs/mfc/tn020-id-naming-and-numbering-conventions.md @@ -12,13 +12,13 @@ This note describes the ID naming and numbering conventions that MFC 2.0 uses fo The MFC ID naming and numbering conventions are intended to meet the following requirements: -- Provide a consistent ID-naming standard used across the MFC library and MFC applications that are supported by the Visual C++ resource editor. This makes it easier for the programmer to interpret the type and origin of a resource from its ID. +- Provide a consistent ID-naming standard used across the MFC library and MFC applications that are supported by the Visual Studio resource editor. This makes it easier for the programmer to interpret the type and origin of a resource from its ID. - Emphasize the strong 1-to-1 relationship between certain types of IDs. - Conform to already widely used standards for naming IDs in Windows. -- Partition the ID-numbering space. ID numbers can be assigned by the programmer, MFC, Windows, and Visual C++-edited resources. Appropriate partitioning will help avoid duplication of ID numbers. +- Partition the ID-numbering space. ID numbers can be assigned by the programmer, MFC, Windows, and Visual Studio-edited resources. Appropriate partitioning will help avoid duplication of ID numbers. ## The ID Prefix Naming Convention diff --git a/docs/mfc/tn021-command-and-message-routing.md b/docs/mfc/tn021-command-and-message-routing.md index 597613bdc7b..8e2210c3546 100644 --- a/docs/mfc/tn021-command-and-message-routing.md +++ b/docs/mfc/tn021-command-and-message-routing.md @@ -13,7 +13,7 @@ ms.assetid: b5952c8b-123e-406c-a36d-a6ac7c6df307 This note describes the command routing and dispatch architecture as well as advanced topics in general window message routing. -Please refer to Visual C++ for general details on the architectures described here, especially the distinction between Windows messages, control notifications, and commands. This note assumes you are very familiar with the issues described in the printed documentation and only addresses very advanced topics. +Please refer to Visual Studio for general details on the architectures described here, especially the distinction between Windows messages, control notifications, and commands. This note assumes you are very familiar with the issues described in the printed documentation and only addresses very advanced topics. ## Command Routing and Dispatch MFC 1.0 Functionality Evolves to MFC 2.0 Architecture @@ -29,7 +29,7 @@ This functionality has been generalized and extended in MFC 2.0 to allow command ## Command IDs -See Visual C++ for an explanation of the command routing and binding process. [Technical Note 20](../mfc/tn020-id-naming-and-numbering-conventions.md) contains information on ID naming. +See Visual Studio for an explanation of the command routing and binding process. [Technical Note 20](../mfc/tn020-id-naming-and-numbering-conventions.md) contains information on ID naming. We use the generic prefix "ID_" for command IDs. Command IDs are >= 0x8000. The message line or status bar will show the command description string if there is a STRINGTABLE resource with the same IDs as the command ID. @@ -71,7 +71,7 @@ Maintaining the enabled/checked state of all a program's menu items all the time `CFrameWnd` also handles the WM_ENTERIDLE message to describe the current menu item selected on the status bar (also known as the message line). -An application's menu structure, edited by Visual C++, is used to represent the potential commands available at WM_INITMENUPOPUP time. ON_UPDATE_COMMAND_UI handlers can modify the state or text of a menu, or for advanced uses (like the File MRU list or the OLE Verbs pop-up menu), actually modify the menu structure before the menu is drawn. +An application's menu structure, edited by Visual Studio, is used to represent the potential commands available at WM_INITMENUPOPUP time. ON_UPDATE_COMMAND_UI handlers can modify the state or text of a menu, or for advanced uses (like the File MRU list or the OLE Verbs pop-up menu), actually modify the menu structure before the menu is drawn. The same sort of ON_UPDATE_COMMAND_UI processing is done for toolbars (and other control bars) when the application enters its idle loop. See the *Class Library Reference* and [Technical Note 31](../mfc/tn031-control-bars.md) for more information on control bars. diff --git a/docs/mfc/tn022-standard-commands-implementation.md b/docs/mfc/tn022-standard-commands-implementation.md index 87a928b8c48..b58bce0c1b6 100644 --- a/docs/mfc/tn022-standard-commands-implementation.md +++ b/docs/mfc/tn022-standard-commands-implementation.md @@ -13,7 +13,7 @@ ms.assetid: a7883b46-23f7-4870-ac3a-804aed9258b5 This note describes the standard command implementations provided by MFC 2.0. Read [Technical Note 21](../mfc/tn021-command-and-message-routing.md) first because it describes the mechanisms used to implement many of the standard commands. -This description assumes knowledge of the MFC architectures, APIs, and common programming practice. Documented as well as undocumented "implementation only" APIs are described. This is not a place to start learning about the features of or how to program in MFC. Refer to Visual C++ for more general information and for details of documented APIs. +This description assumes knowledge of the MFC architectures, APIs, and common programming practice. Documented as well as undocumented "implementation only" APIs are described. This is not a place to start learning about the features of or how to program in MFC. Refer to Visual Studio for more general information and for details of documented APIs. ## The Problem diff --git a/docs/mfc/tn023-standard-mfc-resources.md b/docs/mfc/tn023-standard-mfc-resources.md index eebace2edac..f0dfaccf661 100644 --- a/docs/mfc/tn023-standard-mfc-resources.md +++ b/docs/mfc/tn023-standard-mfc-resources.md @@ -29,7 +29,7 @@ Clip-art resources are additional resources that the framework does not depend o - Prompts.rc: Contains menu-prompt string resources for each predefined command, such as "Create a new document" for ID_FILE_NEW. -- Commdlg.rc: A Visual C++ compatible .rc file that contains the standard COMMDLG dialog templates. +- Commdlg.rc: A Visual Studio compatible .rc file that contains the standard COMMDLG dialog templates. Standard framework resources are resources with AFX-defined IDs that the framework depends on for internal implementations. You will rarely need to change these AFX-defined resources. If you do, you should follow the procedure outlined later in this topic. @@ -47,7 +47,7 @@ The following framework resources are contained in the MFC\INCLUDE directory: #### To use a clip-art binary resource -1. Open your application's resource file in Visual C++. +1. Open your application's resource file in Visual Studio. 1. Open Common.rc. This file contains all the binary clip-art resources. This may take some time because the Common.rc file is compiled. @@ -76,7 +76,7 @@ In some rare cases you might want to customize the contents of the standard fram ##### To customize the contents of a standard resource file -1. Open the resource file in Visual C++. +1. Open the resource file in Visual Studio. 1. Using the Resource Set Includes command, remove the `#include` for the standard .rc file that you want to customize. For example, to customize the print-preview toolbar, remove the `#include "afxprint.rc"` line. diff --git a/docs/mfc/tn024-mfc-defined-messages-and-resources.md b/docs/mfc/tn024-mfc-defined-messages-and-resources.md index b510b909b79..4c2ed67fd50 100644 --- a/docs/mfc/tn024-mfc-defined-messages-and-resources.md +++ b/docs/mfc/tn024-mfc-defined-messages-and-resources.md @@ -159,9 +159,9 @@ The default toolbar supplied by AppWizard is based on an RT_TOOLBAR custom resou ## RT_DLGINIT Resource Format -One MFC private resource format is used to store extra dialog initialization information. This includes the initial strings stored in a combo box. The format of this resource is not designed to be manually edited, but is handled by Visual C++. +One MFC private resource format is used to store extra dialog initialization information. This includes the initial strings stored in a combo box. The format of this resource is not designed to be manually edited, but is handled by Visual Studio. -Visual C++ and this RT_DLGINIT resource are not required to use the related features of MFC since there are API alternative to using the information in the resource. Using Visual C++ makes it much easier to write, maintain, and translate your application in the long run. +Visual Studio and this RT_DLGINIT resource are not required to use the related features of MFC since there are API alternative to using the information in the resource. Using Visual Studio makes it much easier to write, maintain, and translate your application in the long run. The basic structure of a RT_DLGINIT resource is as follows: @@ -186,7 +186,7 @@ A repeated section contains the control ID to send the message to, the Message # SendDlgItemMessage(, , 0, &); ``` -This is a very general format, allowing any Windows messages and data content. The Visual C++ resource editor and MFC only support a limited subset of Windows messages: CB_ADDSTRING for the initial list-choices for combo boxes (the data is a text string). +This is a very general format, allowing any Windows messages and data content. The Visual Studio resource editor and MFC only support a limited subset of Windows messages: CB_ADDSTRING for the initial list-choices for combo boxes (the data is a text string). ## See also diff --git a/docs/mfc/tn028-context-sensitive-help-support.md b/docs/mfc/tn028-context-sensitive-help-support.md index 09992516214..7b6b5753c5f 100644 --- a/docs/mfc/tn028-context-sensitive-help-support.md +++ b/docs/mfc/tn028-context-sensitive-help-support.md @@ -8,7 +8,7 @@ ms.assetid: 884f1c55-fa27-4d4c-984f-30907d477484 --- # TN028: Context-Sensitive Help Support -This note describes the rules for assigning Help contexts IDs and other help issues in MFC. Context-sensitive help support requires the help compiler that is available in Visual C++. +This note describes the rules for assigning Help contexts IDs and other help issues in MFC. Context-sensitive help support requires the help compiler that is available in Visual Studio. > [!NOTE] > In addition to implementing context-sensitive help using WinHelp, MFC also supports using HTML Help. For more information on this support and programming with HTML Help, see [HTML Help: Context-Sensitive Help for Your Programs](../mfc/html-help-context-sensitive-help-for-your-programs.md). diff --git a/docs/mfc/tn029-splitter-windows.md b/docs/mfc/tn029-splitter-windows.md index 44ff393dd03..5e0142a3312 100644 --- a/docs/mfc/tn029-splitter-windows.md +++ b/docs/mfc/tn029-splitter-windows.md @@ -14,7 +14,7 @@ This note describes the MFC [CSplitterWnd Class](../mfc/reference/csplitterwnd-c A `CSplitterWnd` supports two different styles of splitting windows. -In "static splitters," the splitter window creates the panes when it is created. The order and number of panes never change. Splitter bars are used to resize the different panes. You can use this style to display a different view class in each pane. The Visual C++ graphics editor and the Windows File Manager are examples of programs that use this splitter style. This style of splitter window does not use splitter boxes. +In "static splitters," the splitter window creates the panes when it is created. The order and number of panes never change. Splitter bars are used to resize the different panes. You can use this style to display a different view class in each pane. The Visual Studio graphics editor and the Windows File Manager are examples of programs that use this splitter style. This style of splitter window does not use splitter boxes. In "dynamic splitters," additional panes are created and destroyed as the user splits and un-splits new views. This splitter starts out with a single view and provides splitter boxes for the user to initiate splitting. The splitter window dynamically creates a new view object when the view is split in one direction. This new view object represents the new pane. If the view is split in two directions by using the keyboard interface, the splitter window creates three new view objects for the three new panes. While the split is active, Windows displays the splitter box as a splitter bar between the panes. Windows destroys additional view objects when the user removes a split, but the original view remains until the splitter window itself is destroyed. Microsoft Excel and Microsoft Word are examples of applications that use the dynamic splitter style. diff --git a/docs/mfc/tn033-dll-version-of-mfc.md b/docs/mfc/tn033-dll-version-of-mfc.md index 0e5df9d531b..b4d84359c16 100644 --- a/docs/mfc/tn033-dll-version-of-mfc.md +++ b/docs/mfc/tn033-dll-version-of-mfc.md @@ -416,9 +416,9 @@ A full rebuild is required after these changes are made. ### Building the Samples -Most of the MFC sample programs can be built from Visual C++ or from a shared NMAKE-compatible MAKEFILE from the command line. +Most of the MFC sample programs can be built from Visual Studio or from a shared NMAKE-compatible MAKEFILE from the command line. -To convert any of these samples to use *`MFCxx.DLL`*, you can load the MAK file into the Visual C++ and set the Project options as described above. If you're using the NMAKE build, you can specify `AFXDLL=1` on the NMAKE command line and that will build the sample using the shared MFC libraries. +To convert any of these samples to use *`MFCxx.DLL`*, you can load the MAK file into the Visual Studio and set the Project options as described above. If you're using the NMAKE build, you can specify `AFXDLL=1` on the NMAKE command line and that will build the sample using the shared MFC libraries. The MFC Advanced Concepts sample [DLLHUSK](../overview/visual-cpp-samples.md) is built with the DLL version of MFC. This sample not only illustrates how to build an application linked with *`MFCxx.DLL`*, but it also illustrates other features of the MFC DLL packaging option such as MFC extension DLLs described later in this technical note. @@ -426,7 +426,7 @@ The MFC Advanced Concepts sample [DLLHUSK](../overview/visual-cpp-samples.md) is The release versions of the DLLs (*`MFCxx.DLL`* and *`MFCxxU.DLL`*) are freely redistributable. The debug versions of the DLLs are not freely redistributable and should be used only during the development of your application. -The debug DLLs are provided with debugging information. By using the Visual C++ debugger, you can trace execution of both your application and the DLL. The Release DLLs (*`MFCxx.DLL`* and *`MFCxxU.DLL`*) don't contain debugging information. +The debug DLLs are provided with debugging information. By using the Visual Studio debugger, you can trace execution of both your application and the DLL. The Release DLLs (*`MFCxx.DLL`* and *`MFCxxU.DLL`*) don't contain debugging information. If you customize or rebuild the DLLs, then you should call them something other than "MFCxx". The MFC SRC file *`MFCDLL.MAK`* describes build options and contains the logic for renaming the DLL. Renaming the files is necessary, since these DLLs are potentially shared by many MFC applications. Having your custom version of the MFC DLLs replace the ones installed on the system may break another MFC application using the shared MFC DLLs. diff --git a/docs/mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md b/docs/mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md index efb943db144..96416abb045 100644 --- a/docs/mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md +++ b/docs/mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md @@ -1,17 +1,17 @@ --- -description: "Learn more about: TN035: Using multiple resource files and header files with Visual C++" -title: "TN035: Using multiple resource files and header files with Visual C++" +description: "Learn more about: TN035: Using multiple resource files and header files with Visual Studio" +title: "TN035: Using multiple resource files and header files with Visual Studio" ms.date: "11/04/2016" f1_keywords: ["vc.resources"] helpviewer_keywords: ["resource files, multiple", "TN035"] ms.assetid: 1f08ce5e-a912-44cc-ac56-7dd93ad73fb6 --- -# TN035: Using multiple resource files and header files with Visual C++ +# TN035: Using multiple resource files and header files with Visual Studio > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. -This note describes how the Visual C++ resource editor supports multiple resource files and header files shared in a single project or shared across multiple projects and how you can take advantage of that support. This note answers these questions: +This note describes how the Visual Studio resource editor supports multiple resource files and header files shared in a single project or shared across multiple projects and how you can take advantage of that support. This note answers these questions: - When might you want to split a project into multiple resource files and/or header files, and how you do it @@ -25,7 +25,7 @@ You should be aware that if you add an additional resource file to your project, This note is structured to answer the above questions as follows: -- **Overview of how Visual C++ manages resource files and header files** provides an overview of how the Resource Set Includes command in Visual C++ lets you use multiple resource files and header files in the same project. +- **Overview of how Visual Studio manages resource files and header files** provides an overview of how the Resource Set Includes command in Visual Studio lets you use multiple resource files and header files in the same project. - **Analysis of AppWizard-created `.RC` and `.H` Files** looks at the multiple resource and header files that are used by an AppWizard-created application. These files serve as a good model for additional resource files and header files you might want to add to your project. @@ -35,17 +35,17 @@ This note is structured to answer the above questions as follows: - **Using multiple resource files in the same project** describes where you might want to break up your project into multiple `.RC` files, and provides details how to do so. -- **Enforcement of non-editable Visual C++ files** describes how you can make sure Visual C++ doesn't edit and unintentionally reformat a custom resource. +- **Enforcement of non-editable Visual Studio files** describes how you can make sure Visual Studio doesn't edit and unintentionally reformat a custom resource. -- **Managing symbols shared by multiple Visual C++-edited `.RC` files** describes how to share the same symbols across multiple `.RC` files and how to avoid assigning duplicate ID numeric values. +- **Managing symbols shared by multiple Visual Studio-edited `.RC` files** describes how to share the same symbols across multiple `.RC` files and how to avoid assigning duplicate ID numeric values. -- **Managing dependencies between `.RC`, `.CPP`, and `.H` files** describes how Visual C++ avoids unnecessary recompiling `.CPP` files that are dependent on resource symbol files. +- **Managing dependencies between `.RC`, `.CPP`, and `.H` files** describes how Visual Studio avoids unnecessary recompiling `.CPP` files that are dependent on resource symbol files. -- **How Visual C++ manages Set Includes information** provides technical details about how Visual C++ keeps track of multiple (nested) `.RC` files and multiple header files that are included by an `.RC` file. +- **How Visual Studio manages Set Includes information** provides technical details about how Visual Studio keeps track of multiple (nested) `.RC` files and multiple header files that are included by an `.RC` file. -## Overview of how Visual C++ manages resource files and header files +## Overview of how Visual Studio manages resource files and header files -Visual C++ manages a single `.RC` resource file and a corresponding `.H` header file as a tightly coupled pair of files. When you edit and save resources in an `.RC` file, you indirectly edit and save symbols in the corresponding `.H` file. Although you can open and edit multiple `.RC` files at a time (using Visual C++'s MDI user interface), for any given `.RC` file you indirectly edit exactly one corresponding header file. +Visual Studio manages a single `.RC` resource file and a corresponding `.H` header file as a tightly coupled pair of files. When you edit and save resources in an `.RC` file, you indirectly edit and save symbols in the corresponding `.H` file. Although you can open and edit multiple `.RC` files at a time (using Visual Studio's MDI user interface), for any given `.RC` file you indirectly edit exactly one corresponding header file. ### Resource View's Resource Includes dialog @@ -53,26 +53,26 @@ To access the **Resource Includes**, open the **Resource View** then right-click #### Symbol Header File -By default, Visual C++ always names the corresponding header file `RESOURCE.H`, regardless of the name of the resource file (for example, `MYAPP.RC`). The **Symbol Header File:** section in the **Resource Includes** dialog in Visual C++, lets you change the name of this header file. Enter a new file name in the section's edit box. +By default, Visual Studio always names the corresponding header file `RESOURCE.H`, regardless of the name of the resource file (for example, `MYAPP.RC`). The **Symbol Header File:** section in the **Resource Includes** dialog in Visual Studio, lets you change the name of this header file. Enter a new file name in the section's edit box. > [!NOTE] > resource files not located in the same directory as the `.RC` file must prepend a relative path with escaped-'\\' to be read properly. #### Read-Only Symbol Directives -Although Visual C++ only edits one header file for any given `.RC` file, Visual C++ supports references to symbols defined in additional read-only header files. The **Read-Only Symbol Directives:** section in the **Resource Includes** dialog lets you specify any number of additional read-only header files as Read-Only Symbol Directives. The "read-only" restriction means that when you add a new resource in the `.RC` file, you can use a symbol defined in the read-only header file. However, if you delete the resource, the symbol still remains defined in the read-only header file. You can't change the numeric value assigned to a read-only symbol. +Although Visual Studio only edits one header file for any given `.RC` file, Visual Studio supports references to symbols defined in additional read-only header files. The **Read-Only Symbol Directives:** section in the **Resource Includes** dialog lets you specify any number of additional read-only header files as Read-Only Symbol Directives. The "read-only" restriction means that when you add a new resource in the `.RC` file, you can use a symbol defined in the read-only header file. However, if you delete the resource, the symbol still remains defined in the read-only header file. You can't change the numeric value assigned to a read-only symbol. #### Compile-Time Directives -Visual C++ also supports nesting of resource files, where one `.RC` file is included within another by using a `#include` directive. When you edit a given `.RC` file using Visual C++, any resources in the included files aren't visible. But when you compile the `.RC` file, the included files are also compiled. The **Compile-Time Directives:** section in the **Resources Includes** dialog lets you specify any number of `.RC` files to include as Compile-Time Directives. +Visual Studio also supports nesting of resource files, where one `.RC` file is included within another by using a `#include` directive. When you edit a given `.RC` file using Visual Studio, any resources in the included files aren't visible. But when you compile the `.RC` file, the included files are also compiled. The **Compile-Time Directives:** section in the **Resources Includes** dialog lets you specify any number of `.RC` files to include as Compile-Time Directives. -Note what happens if you read into Visual C++ an `.RC` file that includes another `.RC` file that isn't* specified as a Compile-Time Directive. This situation might arise when you bring to Visual C++ an `.RC` file that you had been previously maintaining manually with a text editor. When Visual C++ reads the included `.RC` file, it merges the included resources into the parent `.RC` file. When you save the parent `.RC` file, the `#include` statement, in effect, will be replaced by the included resources. If you don't want this merge to happen, you should remove the `#include` statement from the parent `.RC` file *prior* to reading it into Visual C++; then using Visual C++, add back the same `#include` statement as a Compile-Time Directive. +Note what happens if you read into Visual Studio an `.RC` file that includes another `.RC` file that isn't* specified as a Compile-Time Directive. This situation might arise when you bring to Visual Studio an `.RC` file that you had been previously maintaining manually with a text editor. When Visual Studio reads the included `.RC` file, it merges the included resources into the parent `.RC` file. When you save the parent `.RC` file, the `#include` statement, in effect, will be replaced by the included resources. If you don't want this merge to happen, you should remove the `#include` statement from the parent `.RC` file *prior* to reading it into Visual Studio; then using Visual Studio, add back the same `#include` statement as a Compile-Time Directive. -Visual C++ saves in an `.RC` file the three kinds of above Set Includes information (Symbol Header File, Read-Only Symbol Directives, and Compile-Time Directives) in `#include` directives *and* in `TEXTINCLUDE` resources. The `TEXTINCLUDE` resources, an implementation detail that you don't normally need to deal with, are explained in [How Visual C++ manages set includes information](#_mfcnotes_tn035_set_includes). +Visual Studio saves in an `.RC` file the three kinds of above Set Includes information (Symbol Header File, Read-Only Symbol Directives, and Compile-Time Directives) in `#include` directives *and* in `TEXTINCLUDE` resources. The `TEXTINCLUDE` resources, an implementation detail that you don't normally need to deal with, are explained in [How Visual Studio manages set includes information](#_mfcnotes_tn035_set_includes). ## Analysis of AppWizard-created `.RC` and `.H` files -Examining the application code produced by AppWizard provides insight into how Visual C++ manages multiple resource files and header files. The code excerpts examined below are from a `MYAPP` application produced by AppWizard using the default options. +Examining the application code produced by AppWizard provides insight into how Visual Studio manages multiple resource files and header files. The code excerpts examined below are from a `MYAPP` application produced by AppWizard using the default options. An AppWizard-created application uses multiple resource files and multiple header files, as summarized in the diagram below: @@ -88,12 +88,12 @@ An AppWizard-created application uses multiple resource files and multiple heade AFXPRINT.RC ``` -You can view these multiple file relationships using the Visual C++ File/Set Includes command. +You can view these multiple file relationships using the Visual Studio File/Set Includes command. `MYAPP.RC`\ -The application resource file that you edit using Visual C++. +The application resource file that you edit using Visual Studio. -`RESOURCE.H` is the application-specific header file. It's always named `RESOURCE.H` by AppWizard, consistent with Visual C++'s default naming of the header file. The `#include` for this header file is the first statement in the resource file (`MYAPP.RC`): +`RESOURCE.H` is the application-specific header file. It's always named `RESOURCE.H` by AppWizard, consistent with Visual Studio's default naming of the header file. The `#include` for this header file is the first statement in the resource file (`MYAPP.RC`): ```rc //Microsoft Visual C++ generated resource script @@ -102,13 +102,13 @@ The application resource file that you edit using Visual C++. ``` `RES\MYAPP.RC2`\ -Contains resources that won't be edited by Visual C++ but will be included in the final compiled `.EXE` file. AppWizard creates no such resources by default, since Visual C++ can edit all of the standard resources, including the version resource (a new feature in this release). An empty file is generated by AppWizard in case you wish to add your own custom formatted resources to this file. +Contains resources that won't be edited by Visual Studio but will be included in the final compiled `.EXE` file. AppWizard creates no such resources by default, since Visual Studio can edit all of the standard resources, including the version resource (a new feature in this release). An empty file is generated by AppWizard in case you wish to add your own custom formatted resources to this file. -If you use custom formatted resources, you can add them to `RES\MYAPP.RC2` and edit them using the Visual C++ text editor. +If you use custom formatted resources, you can add them to `RES\MYAPP.RC2` and edit them using the Visual Studio text editor. -`AFXRES.RC` and `AFXPRINT.RC` contain standard resources required by certain features of the framework. Like `RES\MYAPP.RC2`, these two framework-provided resource files are included at the end of `MYAPP.RC`, and they're specified in the Compile-Time Directives of the Set Includes dialog box. Thus, you don't directly view or edit these framework resources while you edit `MYAPP.RC` in Visual C++, but they're compiled into the application's binary `.RES` file and final `.EXE` file. For more information on the standard framework resources, including procedures for modifying them, see [Technical Note 23](../mfc/tn023-standard-mfc-resources.md). +`AFXRES.RC` and `AFXPRINT.RC` contain standard resources required by certain features of the framework. Like `RES\MYAPP.RC2`, these two framework-provided resource files are included at the end of `MYAPP.RC`, and they're specified in the Compile-Time Directives of the Set Includes dialog box. Thus, you don't directly view or edit these framework resources while you edit `MYAPP.RC` in Visual Studio, but they're compiled into the application's binary `.RES` file and final `.EXE` file. For more information on the standard framework resources, including procedures for modifying them, see [Technical Note 23](../mfc/tn023-standard-mfc-resources.md). -`AFXRES.H` defines standard symbols, such as `ID_FILE_NEW`, used by the framework and specifically used in `AFXRES.RC`. `AFXRES.H` also uses `#include` to include `WINRES.H`, which contains a subset of `WINDOWS.H` that's needed by Visual C++ generated `.RC` files and `AFXRES.RC`. The symbols defined in `AFXRES.H` are available as you edit the application resource file (`MYAPP.RC`). For example, `ID_FILE_NEW` is used for the `File` `New` menu item in the `MYAPP.RC` file's menu resource. You can't change or delete these framework-defined symbols. +`AFXRES.H` defines standard symbols, such as `ID_FILE_NEW`, used by the framework and specifically used in `AFXRES.RC`. `AFXRES.H` also uses `#include` to include `WINRES.H`, which contains a subset of `WINDOWS.H` that's needed by Visual Studio generated `.RC` files and `AFXRES.RC`. The symbols defined in `AFXRES.H` are available as you edit the application resource file (`MYAPP.RC`). For example, `ID_FILE_NEW` is used for the `File` `New` menu item in the `MYAPP.RC` file's menu resource. You can't change or delete these framework-defined symbols. ## Including additional header files @@ -116,7 +116,7 @@ The AppWizard-created application includes only two header files: `RESOURCE.H` a The header file is provided by an external source, or you want to share the header file among multiple projects or multiple parts of the same project. -The header file has formatting and comments that you don't want Visual C++ to change or filter out when it saves the file. For example, maybe you want to preserve #define's that use symbolic arithmetic such as: +The header file has formatting and comments that you don't want Visual Studio to change or filter out when it saves the file. For example, maybe you want to preserve #define's that use symbolic arithmetic such as: ```h #define RED 0 @@ -170,22 +170,22 @@ The case where the second header file is shared by two `.RC` files in the same a ## Using multiple resource files in the same project -Visual C++ and the Resource Compiler support multiple `.RC` files in the same project through `#include` directives that include one `.RC` file within another. Multiple nesting is allowed. There are various reasons to split your project's resources into multiple `.RC` files: +Visual Studio and the Resource Compiler support multiple `.RC` files in the same project through `#include` directives that include one `.RC` file within another. Multiple nesting is allowed. There are various reasons to split your project's resources into multiple `.RC` files: - It's easier to manage a large number of resources among multiple project team members if you split the resources into multiple `.RC` files. If you use a source control management package for checking out files and checking in changes, splitting the resources into multiple `.RC` files will give you finer control over managing changes to resources. - If you want to use preprocessor directives, such as `#ifdef`, `#endif`, and `#define`, for portions of your resources, you must isolate them in read-only resources that will be compiled by the Resource Compiler. -- Component `.RC` files will load and save faster in Visual C++ than one composite `.RC` file. +- Component `.RC` files will load and save faster in Visual Studio than one composite `.RC` file. -- If you want to maintain a resource with a text editor in a human-readable form, you should keep it in a `.RC` file separate from the one Visual C++ edits. +- If you want to maintain a resource with a text editor in a human-readable form, you should keep it in a `.RC` file separate from the one Visual Studio edits. -- If you need to keep a user-defined resource in a binary or text form that is interpretable by another specialized data editor, then you should keep it in a separate `.RC` file so Visual C++ doesn't change the format to hexadecimal data. The `.WAV` (sound) file resources in the MFC Advanced Concepts sample [SPEAKN](../overview/visual-cpp-samples.md) are a good example. +- If you need to keep a user-defined resource in a binary or text form that is interpretable by another specialized data editor, then you should keep it in a separate `.RC` file so Visual Studio doesn't change the format to hexadecimal data. The `.WAV` (sound) file resources in the MFC Advanced Concepts sample [SPEAKN](../overview/visual-cpp-samples.md) are a good example. You can include `SECOND.RC` in the Compile-Time Directives in the Set Includes dialog box: ```h -#include "res\myapp.rc2" // non-Visual C++ edited resources +#include "res\myapp.rc2" // non-Visual Studio edited resources #include "second.rc" // THE SECOND .RC FILE #include "afxres.rc" // Standard components @@ -207,27 +207,27 @@ The result is illustrated in the following diagram: AFXPRINT.RC ``` -Using Compile-Time Directives, you can organize your Visual C++-editable and non-editable resources into multiple `.RC` files, where the main `MYAPP.RC` does nothing but `#include` the other `.RC` files. If you're using a Visual Studio C++ project `.MAK` file, then you should include the main `.RC` file in the project so that all the included resources are compiled with your application. +Using Compile-Time Directives, you can organize your Visual Studio-editable and non-editable resources into multiple `.RC` files, where the main `MYAPP.RC` does nothing but `#include` the other `.RC` files. If you're using a Visual Studio C++ project `.MAK` file, then you should include the main `.RC` file in the project so that all the included resources are compiled with your application. -## Enforcement of non-editable Visual C++ files +## Enforcement of non-editable Visual Studio files -The AppWizard-created `RES\MYAPP.RC2` file is an example of a file that contains resources that you don't want to accidentally read into Visual C++ and then write back out with loss of formatting information. To protect against this problem, place the following lines in the beginning of the `RES\MYAPP.RC2` file: +The AppWizard-created `RES\MYAPP.RC2` file is an example of a file that contains resources that you don't want to accidentally read into Visual Studio and then write back out with loss of formatting information. To protect against this problem, place the following lines in the beginning of the `RES\MYAPP.RC2` file: ```rc2 #ifdef APSTUDIO_INVOKED - #error this file is not editable by Visual C++ + #error this file is not editable by Visual Studio #endif //APSTUDIO_INVOKED ``` -When Visual C++ compiles the `.RC` file, it defines both `APSTUDIO_INVOKED` and `RC_INVOKED`. If the AppWizard-created file structure is corrupted and Visual C++ reads the #error line above, it reports a fatal error and aborts the reading of the `.RC` file. +When Visual Studio compiles the `.RC` file, it defines both `APSTUDIO_INVOKED` and `RC_INVOKED`. If the AppWizard-created file structure is corrupted and Visual Studio reads the #error line above, it reports a fatal error and aborts the reading of the `.RC` file. -## Managing symbols shared by multiple Visual C++-edited `.RC` files +## Managing symbols shared by multiple Visual Studio-edited `.RC` files -Two issues arise when you split up your resources into multiple `.RC` files that you want to edit separately in Visual C++: +Two issues arise when you split up your resources into multiple `.RC` files that you want to edit separately in Visual Studio: - You might want to share the same symbols across multiple `.RC` files. -- You need to help Visual C++ avoid assigning the same ID numeric values to distinct resources (symbols). +- You need to help Visual Studio avoid assigning the same ID numeric values to distinct resources (symbols). The following diagram illustrates an organization of `.RC` and `.H` files that deals with the first issue: @@ -243,11 +243,11 @@ MYSTRS.H / MYSHARED.H \ MYMENUS.H In this example, string resources are kept in one resource file, `MYSTRS.RC`, and menus are kept in another, `MYMENUS.RC`. Some symbols, such as for commands, may need to be shared between the two files. For example, a `ID_TOOLS_SPELL` may be the menu command ID for the Spell item in a Tools menu; and it may also be the string ID of the command prompt displayed by the framework in the application's main window status bar. -The `ID_TOOLS_SPELL` symbol is kept in the shared header file, `MYSHARED.H`. You maintain this shared header file manually with a text editor; Visual C++ doesn't directly edit it. In the two resource files `MYSTRS.RC` and `MYMENUS.RC`, you specify `#include "MYSHARED.H"` in the Read-Only Directives for `MYAPP.RC`, using the **Resource Includes** command, as described earlier. +The `ID_TOOLS_SPELL` symbol is kept in the shared header file, `MYSHARED.H`. You maintain this shared header file manually with a text editor; Visual Studio doesn't directly edit it. In the two resource files `MYSTRS.RC` and `MYMENUS.RC`, you specify `#include "MYSHARED.H"` in the Read-Only Directives for `MYAPP.RC`, using the **Resource Includes** command, as described earlier. It's most convenient to anticipate a symbol you'll share before you attempt to use it to identify any resource. Add the symbol to the shared header file and, if you haven't already included the shared header file in the Read-Only Directives for the `.RC` file, do so before using the symbol. If you didn't anticipate sharing the symbol in this way, then you'll have to manually (using a text editor) move the #define statement for the symbol from, say, `MYMENUS.H` to `MYSHARED.H` before using it in `MYSTRS.RC`. -When you manage symbols in multiple `.RC` files, you also must help Visual C++ avoid assigning the same ID numeric values to distinct resources (symbols). For any given `.RC` file, Visual C++ incrementally assigns IDs in each of four ID domains. Between editing sessions, Visual C++ keeps track of the last ID it assigned in each of the domains in the Symbol Header File for the `.RC` file. Here's what the `APS_NEXT` values are for an empty (new) `.RC` file: +When you manage symbols in multiple `.RC` files, you also must help Visual Studio avoid assigning the same ID numeric values to distinct resources (symbols). For any given `.RC` file, Visual Studio incrementally assigns IDs in each of four ID domains. Between editing sessions, Visual Studio keeps track of the last ID it assigned in each of the domains in the Symbol Header File for the `.RC` file. Here's what the `APS_NEXT` values are for an empty (new) `.RC` file: ```rc #define _APS_NEXT_RESOURCE_VALUE 101 @@ -264,9 +264,9 @@ When you manage symbols in multiple `.RC` files, you also must help Visual C++ a `_APS_NEXT_SYMED_VALUE` is the next symbol value that will be issued when you manually assign a symbol value using the New command in the Symbol Browser. -Visual C++ starts with slightly higher values that the lowest legal value when creating a new `.RC` file. AppWizard will also initialize these values to something more appropriate for MFC applications. For more information about ID value ranges, see [Technical Note 20](../mfc/tn020-id-naming-and-numbering-conventions.md). +Visual Studio starts with slightly higher values that the lowest legal value when creating a new `.RC` file. AppWizard will also initialize these values to something more appropriate for MFC applications. For more information about ID value ranges, see [Technical Note 20](../mfc/tn020-id-naming-and-numbering-conventions.md). -Now every time you create a new resource file, even in the same project, Visual C++ defines the same `_APS_NEXT_` values. It means that if you add, say, multiple dialogs in two different `.RC` files, it's highly likely that the same #define value will be assigned to different dialogs. For example, `IDD_MY_DLG1` in the first `.RC` file might be assigned the same number, 101, as `IDD_MY_DLG2` in a second `.RC` file. +Now every time you create a new resource file, even in the same project, Visual Studio defines the same `_APS_NEXT_` values. It means that if you add, say, multiple dialogs in two different `.RC` files, it's highly likely that the same #define value will be assigned to different dialogs. For example, `IDD_MY_DLG1` in the first `.RC` file might be assigned the same number, 101, as `IDD_MY_DLG2` in a second `.RC` file. To avoid this issue, you should reserve a separate numeric range for each of the four domains of IDs in the respective `.RC` files. Set the ranges by manually updating the `_APS_NEXT` values in each of the `.RC` files **before** you start adding resources. For example, if the first `.RC` file uses the default `_APS_NEXT` values, then you might want to assign the following `_APS_NEXT` values to the second `.RC` file: @@ -277,13 +277,13 @@ To avoid this issue, you should reserve a separate numeric range for each of the #define _APS_NEXT_SYMED_VALUE 2000 ``` -Of course, it's still possible that Visual C++ will assign so many IDs in the first `.RC` file that the numeric values start to overlap the ones reserved for the second `.RC` file. You should reserve sufficiently large ranges so that this collision doesn't happen. +Of course, it's still possible that Visual Studio will assign so many IDs in the first `.RC` file that the numeric values start to overlap the ones reserved for the second `.RC` file. You should reserve sufficiently large ranges so that this collision doesn't happen. ## Managing dependencies between `.RC`, `.CPP`, and `.H` files -When Visual C++ saves an `.RC` file, it also saves symbol changes to the corresponding `RESOURCE.H` file. Any of your `.CPP` files that refer to resources in the `.RC` file must use `#include` to include the `RESOURCE.H` file, usually from within your project's main header file. This inclusion leads to an undesirable side-effect because of the development environment's internal project management, which scans source files for header dependencies. Every time you add a new symbol in Visual C++, all the `.CPP` files that have `#include "RESOURCE.H"` directives would need to be recompiled. +When Visual Studio saves an `.RC` file, it also saves symbol changes to the corresponding `RESOURCE.H` file. Any of your `.CPP` files that refer to resources in the `.RC` file must use `#include` to include the `RESOURCE.H` file, usually from within your project's main header file. This inclusion leads to an undesirable side-effect because of the development environment's internal project management, which scans source files for header dependencies. Every time you add a new symbol in Visual Studio, all the `.CPP` files that have `#include "RESOURCE.H"` directives would need to be recompiled. -Visual C++, circumvents the dependency on `RESOURCE.H` by including the following comment as the first line of the `RESOURCE.H` file: +Visual Studio, circumvents the dependency on `RESOURCE.H` by including the following comment as the first line of the `RESOURCE.H` file: ```h //{{NO_DEPENDENCIES}} @@ -291,9 +291,9 @@ Visual C++, circumvents the dependency on `RESOURCE.H` by including the followin The development environment interprets this comment by ignoring the changes to `RESOURCE.H` so that dependent `.CPP` files won't need to be recompiled. -Visual C++ always adds the `//{{NO_DEPENDENCIES}}` comment line to a `.RC` file when it saves the file. In some cases, circumventing of the build dependency on `RESOURCE.H` may lead to run-time errors undetected at link time. For example, if you use the Symbol Browser to change the numeric value assigned to a symbol for a resource, the resource won't be correctly found and loaded at application run-time if the `.CPP` file referring to the resource isn't recompiled. In such cases, you should explicitly recompile any `.CPP` files that you know are affected by the symbol changes in `RESOURCE.H` or select **Rebuild All**. If you have the need to frequently change symbol values for a certain group of resources, you'll probably find it more convenient and safer to break out these symbols into a separate read-only header file, as described in the above section [Including Additional Header Files](#_mfcnotes_tn035_including). +Visual Studio always adds the `//{{NO_DEPENDENCIES}}` comment line to a `.RC` file when it saves the file. In some cases, circumventing of the build dependency on `RESOURCE.H` may lead to run-time errors undetected at link time. For example, if you use the Symbol Browser to change the numeric value assigned to a symbol for a resource, the resource won't be correctly found and loaded at application run-time if the `.CPP` file referring to the resource isn't recompiled. In such cases, you should explicitly recompile any `.CPP` files that you know are affected by the symbol changes in `RESOURCE.H` or select **Rebuild All**. If you have the need to frequently change symbol values for a certain group of resources, you'll probably find it more convenient and safer to break out these symbols into a separate read-only header file, as described in the above section [Including Additional Header Files](#_mfcnotes_tn035_including). -## How Visual C++ manages Set Includes information +## How Visual Studio manages Set Includes information As discussed above, the File menu Set Includes command lets you specify three types of information: @@ -303,11 +303,11 @@ As discussed above, the File menu Set Includes command lets you specify three ty - Compile-Time Directives -The following table describes how Visual C++ maintains this information in a `.RC` file. You don't need this information to use Visual C++, but it may enhance your understanding so that you can more confidently use the Set Includes feature. +The following table describes how Visual Studio maintains this information in a `.RC` file. You don't need this information to use Visual Studio, but it may enhance your understanding so that you can more confidently use the Set Includes feature. -Each of the above three types of Set Includes information is stored in the `.RC` file in two forms: (1) as `#include` or other directives interpretable by the Resource Compiler, and (2) as special `TEXTINCLUDE` resources interpretable only by Visual C++. +Each of the above three types of Set Includes information is stored in the `.RC` file in two forms: (1) as `#include` or other directives interpretable by the Resource Compiler, and (2) as special `TEXTINCLUDE` resources interpretable only by Visual Studio. -The purpose of the `TEXTINCLUDE` resource is to safely store Set Include information in a form that is readily presentable in Visual C++'s **Set Includes** dialog box. `TEXTINCLUDE` is a *resource type* defined by Visual C++. Visual C++ recognizes three specific `TEXTINCLUDE` resources that have the resource identification numbers 1, 2 and 3: +The purpose of the `TEXTINCLUDE` resource is to safely store Set Include information in a form that is readily presentable in Visual Studio's **Set Includes** dialog box. `TEXTINCLUDE` is a *resource type* defined by Visual Studio. Visual Studio recognizes three specific `TEXTINCLUDE` resources that have the resource identification numbers 1, 2 and 3: |`TEXTINCLUDE` resource ID|Type of Set Includes information| |-----------------------------|--------------------------------------| @@ -362,21 +362,21 @@ Compile-Time Directives are included at the end of `MYAPP.RC` in the following f // // From TEXTINCLUDE 3 // -#include "res\myapp.rc2" // non-Visual C++ edited resources +#include "res\myapp.rc2" // non-Visual Studio edited resources #include "afxres.rc" // Standard components #include "afxprint.rc" // printing/print preview resources #endif // not APSTUDIO_INVOKED ``` -The `#ifndef APSTUDIO_INVOKED` directive instructs Visual C++ to skip over Compile-Time Directives. +The `#ifndef APSTUDIO_INVOKED` directive instructs Visual Studio to skip over Compile-Time Directives. The corresponding `TEXTINCLUDE` resource is: ```rc 3 TEXTINCLUDE DISCARDABLE BEGIN -"#include ""res\myapp.rc2"" // non-Visual C++ edited resources\r\n" +"#include ""res\myapp.rc2"" // non-Visual Studio edited resources\r\n" "\r\n" "#include ""afxres.rc"" // Standard components\r\n" "#include ""afxprint.rc"" // printing/print preview resources\r\n" diff --git a/docs/mfc/tn039-mfc-ole-automation-implementation.md b/docs/mfc/tn039-mfc-ole-automation-implementation.md index f0293d78dae..9cc0196268e 100644 --- a/docs/mfc/tn039-mfc-ole-automation-implementation.md +++ b/docs/mfc/tn039-mfc-ole-automation-implementation.md @@ -85,7 +85,7 @@ The Z property is given a **DISPID** with a zero **HIWORD** since it is defined ## Advanced MFC Dispatch Map Features -There are a number of additional features that ClassWizard does not support with this release of Visual C++. ClassWizard supports `DISP_FUNCTION`, `DISP_PROPERTY`, and `DISP_PROPERTY_EX` which define a method, member variable property, and get/set member function property, respectively. These capabilities are usually all that is needed to create most automation servers. +There are a number of additional features that ClassWizard does not support with this release of Visual Studio. ClassWizard supports `DISP_FUNCTION`, `DISP_PROPERTY`, and `DISP_PROPERTY_EX` which define a method, member variable property, and get/set member function property, respectively. These capabilities are usually all that is needed to create most automation servers. The following additional macros can be used when the ClassWizard supported macros are not adequate: `DISP_PROPERTY_NOTIFY`, and `DISP_PROPERTY_PARAM`. diff --git a/docs/mfc/tn041-mfc-ole1-migration-to-mfc-ole-2.md b/docs/mfc/tn041-mfc-ole1-migration-to-mfc-ole-2.md index 9838cef62ca..5dbdc995f5f 100644 --- a/docs/mfc/tn041-mfc-ole1-migration-to-mfc-ole-2.md +++ b/docs/mfc/tn041-mfc-ole1-migration-to-mfc-ole-2.md @@ -276,7 +276,7 @@ At this point, OCLIENT is a functional OLE container application. It is possible One of the most interesting features of OLE is in-place activation (or "Visual Editing"). This feature allows the server application to take over portions of the container's user interface to provided a more seamless editing interface for the user. To implement in-place activation to OCLIENT, some special resources need to be added, as well as some additional code. These resources and the code are normally provided by AppWizard — in fact, much of the code here was borrowed directly from a fresh AppWizard application with "Container" support. -First of all, it is necessary to add a menu resource to be used when there is an item which is in-place active. You can create this extra menu resource in Visual C++ by copying the IDR_OCLITYPE resource and removing all but the File and Window pop-ups. Two separator bars are inserted between the File and Window pop-ups to indicate the separation of groups (it should look like: `File || Window`). For more information on what these separators mean and how the server and container menus are merged see [Menus and Resources: Menu Merging](../mfc/menus-and-resources-menu-merging.md). +First of all, it is necessary to add a menu resource to be used when there is an item which is in-place active. You can create this extra menu resource in Visual Studio by copying the IDR_OCLITYPE resource and removing all but the File and Window pop-ups. Two separator bars are inserted between the File and Window pop-ups to indicate the separation of groups (it should look like: `File || Window`). For more information on what these separators mean and how the server and container menus are merged see [Menus and Resources: Menu Merging](../mfc/menus-and-resources-menu-merging.md). Once you have these menus created, you need to let the framework know about them. This is done by calling `CDocTemplate::SetContainerInfo` for the document template before you add it to the document template list in your InitInstance. The new code to register the document template looks like this: @@ -292,7 +292,7 @@ pTemplate->SetContainerInfo(IDR_OLECLITYPE_INPLACE); AddDocTemplate(pTemplate); ``` -The IDR_OLECLITYPE_INPLACE resource is the special in-place resource created in Visual C++. +The IDR_OLECLITYPE_INPLACE resource is the special in-place resource created in Visual Studio. To enable in-place activation, there are some things that need to change in both the `CView` (CMainView) derived class as well as the `COleClientItem` derived class (CRectItem). All of these overrides are provided by AppWizard and most of the implementation will come directly from a default AppWizard application. @@ -338,7 +338,7 @@ BOOL CRectItem::OnChangeItemPosition(const CRect& rectPos) At this point, there is enough code to allow an item to be in-place activated and to deal with sizing and moving the item when it is active, but no code will allow the user to exit the editing session. Although some servers will provide this functionality themselves by handling the escape key, it is suggested that containers provide two ways to deactivate an item: (1) by clicking outside the item, and (2) by pressing the ESCAPE key. -For the ESCAPE key, add an accelerator with Visual C++ that maps the VK_ESCAPE key to a command, ID_CANCEL_EDIT is added to the resources. The handler for this command follows: +For the ESCAPE key, add an accelerator with Visual Studio that maps the VK_ESCAPE key to a command, ID_CANCEL_EDIT is added to the resources. The handler for this command follows: ```cpp // The following command handler provides the standard @@ -512,7 +512,7 @@ BOOL COLEServerApp::InitInstance() You will notice that the code above refers to a new resource ID, IDR_HIERSVRTYPE_SRVR_EMB. This is the menu resource to be used when a document that is embedded in another container is edited. In MFC/OLE1 the menu items specific to editing an embedded item were modified on the fly. Using an entirely different menu structure when editing an embedded item instead of editing a file-based document makes it much easier to provide different user interfaces for these two separate modes. As you'll see later, an entirely separate menu resource is used when editing an embedded object in-place. -To create this resource, load the resource script into Visual C++ and copy the existing IDR_HIERSVRTYPE menu resource. Rename the new resource to IDR_HIERSVRTYPE_SRVR_EMB (this is the same naming convention that AppWizard uses). Next change "File Save" to "File Update"; give it command ID ID_FILE_UPDATE. Also change "File Save As" to "File Save Copy As"; give it command ID ID_FILE_SAVE_COPY_AS. The framework provides the implementation of both of these commands. +To create this resource, load the resource script into Visual Studio and copy the existing IDR_HIERSVRTYPE menu resource. Rename the new resource to IDR_HIERSVRTYPE_SRVR_EMB (this is the same naming convention that AppWizard uses). Next change "File Save" to "File Update"; give it command ID ID_FILE_UPDATE. Also change "File Save As" to "File Save Copy As"; give it command ID ID_FILE_SAVE_COPY_AS. The framework provides the implementation of both of these commands. ```Output \hiersvr\svritem.h(60) : error C2433: 'OLESTATUS' : 'virtual' not permitted on data declarations @@ -629,9 +629,9 @@ To add "Visual Editing" (or in-place activation) to this server application, the - You need to tell the framework about these special resources and classes. -The menu resource is easy to create. Run Visual C++, copy the menu resource IDR_HIERSVRTYPE to a menu resource called IDR_HIERSVRTYPE_SRVR_IP. Modify the menu so that only the Edit and Help menu popups are left. Add two separators to the menu in between the Edit and Help menus (it should look like: `Edit || Help`). For more information on what these separators mean and how the server and container menus are merged, see [Menus and Resources: Menu Merging](../mfc/menus-and-resources-menu-merging.md). +The menu resource is easy to create. Run Visual Studio, copy the menu resource IDR_HIERSVRTYPE to a menu resource called IDR_HIERSVRTYPE_SRVR_IP. Modify the menu so that only the Edit and Help menu popups are left. Add two separators to the menu in between the Edit and Help menus (it should look like: `Edit || Help`). For more information on what these separators mean and how the server and container menus are merged, see [Menus and Resources: Menu Merging](../mfc/menus-and-resources-menu-merging.md). -The bitmap for the subset toolbar can be easily created by copying the one from a fresh AppWizard generated application with a "Server" option checked. This bitmap can then be imported into Visual C++. Be sure to give the bitmap an ID of IDR_HIERSVRTYPE_SRVR_IP. +The bitmap for the subset toolbar can be easily created by copying the one from a fresh AppWizard generated application with a "Server" option checked. This bitmap can then be imported into Visual Studio. Be sure to give the bitmap an ID of IDR_HIERSVRTYPE_SRVR_IP. The class derived from `COleIPFrameWnd` can be copied from an AppWizard generated application with server support as well. Copy both files, IPFRAME.CPP and IPFRAME.H and add them to the project. Make sure that the `LoadBitmap` call refers to IDR_HIERSVRTYPE_SRVR_IP, the bitmap created in the previous step. diff --git a/docs/mfc/tn053-custom-dfx-routines-for-dao-database-classes.md b/docs/mfc/tn053-custom-dfx-routines-for-dao-database-classes.md index 5902135a9a4..0a40b8e8745 100644 --- a/docs/mfc/tn053-custom-dfx-routines-for-dao-database-classes.md +++ b/docs/mfc/tn053-custom-dfx-routines-for-dao-database-classes.md @@ -8,7 +8,7 @@ ms.assetid: fdcf3c51-4fa8-4517-9222-58aaa4f25cac # TN053: Custom DFX Routines for DAO Database Classes > [!NOTE] -> DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual C++ environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. +> DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual Studio environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. This technical note describes the DAO record field exchange (DFX) mechanism. To help understand what is happening in the DFX routines, the `DFX_Text` function will be explained in detail as an example. As an additional source of information to this technical note, you can examine the code for the other the individual DFX functions. You probably will not need a custom DFX routine as often as you might need a custom RFX routine (used with ODBC database classes). diff --git a/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md b/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md index c17812d54ab..3b44465a053 100644 --- a/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md +++ b/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md @@ -9,7 +9,7 @@ ms.custom: sfi-ropc-nochange # TN054: Calling DAO Directly While Using MFC DAO Classes > [!NOTE] -> DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual C++ environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. +> DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual Studio environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. When using the MFC DAO database classes, there may be situations where it is necessary to use DAO directly. Usually, this will not be the case, but MFC has provided some helper mechanisms to facilitate making direct DAO calls simple when combining the use of the MFC classes with direct DAO calls. Making direct DAO calls to the methods of an MFC-managed DAO object should require only a few lines of code. If you need to create and use DAO objects that are *not* managed by MFC, you will have to do a little more work by actually calling `Release` on the object. This technical note explains when you might want to call DAO directly, what the MFC helpers can do to help you, and how to use the DAO OLE interfaces. Finally, this note provides some sample functions showing how to call DAO directly for DAO security features. diff --git a/docs/mfc/tn055-migrating-mfc-odbc-database-class-applications-to-mfc-dao-classes.md b/docs/mfc/tn055-migrating-mfc-odbc-database-class-applications-to-mfc-dao-classes.md index 4f563326304..20f25fc6f90 100644 --- a/docs/mfc/tn055-migrating-mfc-odbc-database-class-applications-to-mfc-dao-classes.md +++ b/docs/mfc/tn055-migrating-mfc-odbc-database-class-applications-to-mfc-dao-classes.md @@ -8,7 +8,7 @@ ms.assetid: 0f858bd1-e168-4e2e-bcd1-8debd82856e4 # TN055: Migrating MFC ODBC Database Class Applications to MFC DAO Classes > [!NOTE] -> DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual C++ environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. +> DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual Studio environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. ## Overview diff --git a/docs/mfc/tn057-localization-of-mfc-components.md b/docs/mfc/tn057-localization-of-mfc-components.md index bb920458129..b011cb4de35 100644 --- a/docs/mfc/tn057-localization-of-mfc-components.md +++ b/docs/mfc/tn057-localization-of-mfc-components.md @@ -43,13 +43,13 @@ From then on, MFC will load resources from that DLL instead of from myapp.exe. A It is relatively easy to create a resource only DLL. You create a DLL project, add your .RC file to it, and add the necessary resources. If you have an existing project that does not use this technique, you can copy the resources from that project. After adding the resource file to the project, you are almost ready to build the project. The only thing you must do is set the linker options to include **/NOENTRY**. This tells the linker that the DLL has no entry point - since it has no code, it has no entry point. > [!NOTE] -> The resource editor in Visual C++ 4.0 and later supports multiple languages per .RC file. This can make it very easy to manage your localization in a single project. The resources for each language are controlled by preprocessor directives generated by the resource editor. +> The resource editor in Visual Studio 4.0 and later supports multiple languages per .RC file. This can make it very easy to manage your localization in a single project. The resources for each language are controlled by preprocessor directives generated by the resource editor. ## Using the Provided MFC Localized Resources Any MFC application that you build reuses two things from MFC: code and resources. That is, MFC has various error messages, built-in dialogs, and other resources that are used by the MFC classes. In order to completely localize your application, you need to localize not only your application's resources, but also the resources that come directly from MFC. MFC provides a number of different language resource files automatically, so that if the language you are targeting is one of the languages MFC already supports, you just need to make sure you use those localized resources. -As of this writing, MFC supports Chinese, German, Spanish, French, Italian, Japanese, and Korean. The files which contain these localized versions are in the MFC\INCLUDE\L.* (the 'L' stands for localized) directories. The German files are in MFC\INCLUDE\L.DEU, for example. To cause your application to use these RC files instead of the files located in MFC\INCLUDE, add a `/IC:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\MFC\INCLUDE\L.DEU` to your RC command line (this is just an example; you would need to substitute your locale of choice as well as the directory into which you installed Visual C++). +As of this writing, MFC supports Chinese, German, Spanish, French, Italian, Japanese, and Korean. The files which contain these localized versions are in the MFC\INCLUDE\L.* (the 'L' stands for localized) directories. The German files are in MFC\INCLUDE\L.DEU, for example. To cause your application to use these RC files instead of the files located in MFC\INCLUDE, add a `/IC:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\MFC\INCLUDE\L.DEU` to your RC command line (this is just an example; you would need to substitute your locale of choice as well as the directory into which you installed Microsoft C++). The above instructions will work if your application links statically with MFC. Most applications link dynamically (because that is the AppWizard default). In this scenario, not only the code is dynamically linked - so are the resources. As a result, you can localize your resources in your application, but the MFC implementation resources will still be loaded from the MFC7x.DLL (or a later version) or from MFC7xLOC.DLL if it exists. You can approach this from two different angles. diff --git a/docs/mfc/tn062-message-reflection-for-windows-controls.md b/docs/mfc/tn062-message-reflection-for-windows-controls.md index 9f4d1c7ffe5..ce9be5675ff 100644 --- a/docs/mfc/tn062-message-reflection-for-windows-controls.md +++ b/docs/mfc/tn062-message-reflection-for-windows-controls.md @@ -90,7 +90,7 @@ This simple example creates a reusable control called `CYellowEdit`. The control You must have an application in which to develop the reusable control. If you don't have an existing application to use, create a dialog-based application using AppWizard. -2. With your project loaded into Visual C++, use ClassWizard to create a new class called `CYellowEdit` based on `CEdit`. +2. With your project loaded into Visual Studio, use ClassWizard to create a new class called `CYellowEdit` based on `CEdit`. 3. Add three member variables to your `CYellowEdit` class. The first two will be *COLORREF* variables to hold the text color and the background color. The third will be a `CBrush` object that will hold the brush for painting the background. The `CBrush` object allows you to create the brush once, merely referencing it after that, and to destroy the brush automatically when the `CYellowEdit` control is destroyed. diff --git a/docs/mfc/tn065-dual-interface-support-for-ole-automation-servers.md b/docs/mfc/tn065-dual-interface-support-for-ole-automation-servers.md index 295169fce62..d7b44243e73 100644 --- a/docs/mfc/tn065-dual-interface-support-for-ole-automation-servers.md +++ b/docs/mfc/tn065-dual-interface-support-for-ole-automation-servers.md @@ -31,7 +31,7 @@ Although OLE Automation allows you to implement an `IDispatch` interface, a VTBL A dual interface is really just a custom interface derived from `IDispatch`. The most straightforward way to implement dual-interface support in a `CCmdTarget`-based class is to first implement the normal dispatch interface on your class using MFC and ClassWizard, then add the custom interface later. For the most part, your custom interface implementation will simply delegate back to the MFC `IDispatch` implementation. -First, modify the ODL file for your server to define dual interfaces for your objects. To define a dual interface, you must use an interface statement, instead of the `DISPINTERFACE` statement that the Visual C++ wizards generate. Rather than removing the existing `DISPINTERFACE` statement, add a new interface statement. By retaining the `DISPINTERFACE` form, you can continue to use ClassWizard to add properties and methods to your object, but you must add the equivalent properties and methods to your interface statement. +First, modify the ODL file for your server to define dual interfaces for your objects. To define a dual interface, you must use an interface statement, instead of the `DISPINTERFACE` statement that the Visual Studio wizards generate. Rather than removing the existing `DISPINTERFACE` statement, add a new interface statement. By retaining the `DISPINTERFACE` form, you can continue to use ClassWizard to add properties and methods to your object, but you must add the equivalent properties and methods to your interface statement. An interface statement for a dual interface must have the *OLEAUTOMATION* and *DUAL* attributes, and the interface must be derived from `IDispatch`. You can use the [GUIDGEN](../overview/visual-cpp-samples.md) sample to create a **IID** for the dual interface: @@ -275,7 +275,7 @@ To add the **UUID** definitions from the MkTypLib-generated header file to your ## Specifying the Correct Object Class Name in the Type Library -The wizards shipped with Visual C++ incorrectly use the implementation class name to specify the coclass in the server's ODL file for OLE-creatable classes. While this will work, the implementation class name is probably not the class name you want users of your object to use. To specify the correct name, open the ODL file, locate each coclass statement, and replace the implementation class name with the correct external name. +The wizards shipped with Visual Studio incorrectly use the implementation class name to specify the coclass in the server's ODL file for OLE-creatable classes. While this will work, the implementation class name is probably not the class name you want users of your object to use. To specify the correct name, open the ODL file, locate each coclass statement, and replace the implementation class name with the correct external name. Note that when the coclass statement is changed, the variable names of **CLSID**s in the MkTypLib-generated header file will change accordingly. You will need to update your code to use the new variable names. diff --git a/docs/mfc/toc.yml b/docs/mfc/toc.yml index 691f07b181b..fcc45274295 100644 --- a/docs/mfc/toc.yml +++ b/docs/mfc/toc.yml @@ -1493,7 +1493,7 @@ items: href: tn032-mfc-exception-mechanism.md - name: "TN033: DLL version of MFC" href: tn033-dll-version-of-mfc.md - - name: "TN035: Using multiple resource files and header files with Visual C++" + - name: "TN035: Using multiple resource files and header files with Visual Studio" href: tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md - name: "TN036: Using CFormView with AppWizard and ClassWizard" href: tn036-using-cformview-with-appwizard-and-classwizard.md diff --git a/docs/mfc/toolbar-fundamentals.md b/docs/mfc/toolbar-fundamentals.md index 283156c66ef..e6f6328e2f2 100644 --- a/docs/mfc/toolbar-fundamentals.md +++ b/docs/mfc/toolbar-fundamentals.md @@ -47,7 +47,7 @@ The docking, floating, and tool tips calls are optional. You can remove those li ## Editing the Toolbar Resource -The default toolbar you get with the Application Wizard is based on an **RT_TOOLBAR** custom resource, introduced in MFC version 4.0. You can edit this resource with the [toolbar editor](../windows/toolbar-editor.md). The editor lets you easily add, delete, and rearrange buttons. It contains a graphical editor for the buttons that is very similar to the general graphics editor in Visual C++. If you edited toolbars in previous versions of Visual C++, you'll find the task much easier now. +The default toolbar you get with the Application Wizard is based on an **RT_TOOLBAR** custom resource, introduced in MFC version 4.0. You can edit this resource with the [toolbar editor](../windows/toolbar-editor.md). The editor lets you easily add, delete, and rearrange buttons. It contains a graphical editor for the buttons that is very similar to the general graphics editor in Visual Studio. If you edited toolbars in previous versions of Visual Studio, you'll find the task much easier now. To connect a toolbar button to a command, you give the button a command ID, such as `ID_MYCOMMAND`. Specify the command ID in the button's property page in the toolbar editor. Then create a handler function for the command (see [Mapping Messages to Functions](../mfc/reference/mapping-messages-to-functions.md) for more information). diff --git a/docs/mfc/upgrading-an-existing-activex-control.md b/docs/mfc/upgrading-an-existing-activex-control.md index 47524f29315..a6038e41168 100644 --- a/docs/mfc/upgrading-an-existing-activex-control.md +++ b/docs/mfc/upgrading-an-existing-activex-control.md @@ -48,7 +48,7 @@ CODEBASE="http://example.contoso.com/mycontrol.ocx#version=4, 1086" ``` -This solution downloads only the control's .ocx file, and requires any supporting DLLs to already be installed on the client machine. This will work for Internet Explorer and MFC ActiveX controls built with Visual C++, because Internet Explorer ships with the supporting DLLs for Visual C++ controls. If another Internet browser that is ActiveX control-capable is used to view this control, this solution will not work. +This solution downloads only the control's .ocx file, and requires any supporting DLLs to already be installed on the client machine. This will work for Internet Explorer and MFC ActiveX controls built with Visual Studio, because Internet Explorer ships with the supporting DLLs for Visual Studio controls. If another Internet browser that is ActiveX control-capable is used to view this control, this solution will not work. ### Using the CODEBASE Tag with an INF File @@ -158,7 +158,7 @@ HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categ If you want to use a licensed control on a Web page, you must verify that the license agreement allows its use on the Internet and create a license package file (LPK) for it. -A licensed ActiveX control will not load properly in an HTML page if the computer running Internet Explorer is not licensed to use the control. For example, if a licensed control was built using Visual C++, the HTML page using the control will load properly on the computer where the control was built, but it will not load on a different computer unless licensing information is included. +A licensed ActiveX control will not load properly in an HTML page if the computer running Internet Explorer is not licensed to use the control. For example, if a licensed control was built using Visual Studio, the HTML page using the control will load properly on the computer where the control was built, but it will not load on a different computer unless licensing information is included. To use a licensed ActiveX control in Internet Explorer, you must check the vendor's license agreement to verify that the license for the control permits: diff --git a/docs/mfc/using-the-classes-to-write-applications-for-windows.md b/docs/mfc/using-the-classes-to-write-applications-for-windows.md index bba61db9ffc..26a4f9ebf3c 100644 --- a/docs/mfc/using-the-classes-to-write-applications-for-windows.md +++ b/docs/mfc/using-the-classes-to-write-applications-for-windows.md @@ -8,7 +8,7 @@ ms.topic: concept-article --- # Using the Classes to Write Applications for Windows -Taken together, the classes in the Microsoft Foundation Class (MFC) Library make up an "application framework," on which you build an application for the Windows operating system. At a very general level, the framework defines the skeleton of an application and supplies standard user-interface implementations that can be placed onto the skeleton. Your job as programmer is to fill in the rest of the skeleton, which are those things that are specific to your application. You can get a head start by using the MFC Application Wizard to create the files for a very thorough starter application. You use the Microsoft Visual C++ resource editors to design your user-interface elements visually, Class View commands to connect those elements to code, and the class library to implement your application-specific logic. +Taken together, the classes in the Microsoft Foundation Class (MFC) Library make up an "application framework," on which you build an application for the Windows operating system. At a very general level, the framework defines the skeleton of an application and supplies standard user-interface implementations that can be placed onto the skeleton. Your job as programmer is to fill in the rest of the skeleton, which are those things that are specific to your application. You can get a head start by using the MFC Application Wizard to create the files for a very thorough starter application. You use the Visual Studio resource editors to design your user-interface elements visually, Class View commands to connect those elements to code, and the class library to implement your application-specific logic. Version 3.0 and later of the MFC framework supports programming for Win32 platforms, including Microsoft Windows 95 and later, and Windows NT versions 3.51 and later. MFC Win32 support includes multithreading. Use version 1.5*x* if you need to do 16-bit programming. diff --git a/docs/mfc/using-your-old-toolbars.md b/docs/mfc/using-your-old-toolbars.md index d1fe0d061b2..36e8fd1616e 100644 --- a/docs/mfc/using-your-old-toolbars.md +++ b/docs/mfc/using-your-old-toolbars.md @@ -9,7 +9,7 @@ ms.topic: concept-article --- # Using Your Old Toolbars -If you have used previous versions of Visual C++ to create customized toolbars, the new implementation of class [CToolBar](../mfc/reference/ctoolbar-class.md) could cause you problems. So that you don't have to give up your old toolbars to use the new functionality, the old implementation is still supported. +If you have used previous versions of Visual Studio to create customized toolbars, the new implementation of class [CToolBar](../mfc/reference/ctoolbar-class.md) could cause you problems. So that you don't have to give up your old toolbars to use the new functionality, the old implementation is still supported. The DOCKTOOL sample does not use the old-style toolbars, only the new-style toolbars. diff --git a/docs/mfc/walkthrough-adding-a-d2d-object-to-an-mfc-project.md b/docs/mfc/walkthrough-adding-a-d2d-object-to-an-mfc-project.md index a1bcbd4b77d..2f3c6645ec7 100644 --- a/docs/mfc/walkthrough-adding-a-d2d-object-to-an-mfc-project.md +++ b/docs/mfc/walkthrough-adding-a-d2d-object-to-an-mfc-project.md @@ -7,7 +7,7 @@ ms.assetid: dda36c33-c231-4da6-a62f-72d69a12b6dd --- # Walkthrough: Adding a D2D Object to an MFC Project -This walkthrough teaches how to add a basic Direct2D (D2D) object to a Visual C++, Microsoft Foundation Class Library (MFC) project, and then build the project into an application that prints "Hello, World!" on a gradient background. +This walkthrough teaches how to add a basic Direct2D (D2D) object to a Visual Studio, Microsoft Foundation Class Library (MFC) project, and then build the project into an application that prints "Hello, World!" on a gradient background. The walkthrough shows how to accomplish these tasks: @@ -25,7 +25,7 @@ The walkthrough shows how to accomplish these tasks: ## Prerequisites -To complete this walkthrough, you must have Visual Studio installed with the **Desktop development with C++** workload and the optional **Visual C++ MFC for x86 and x64** component. +To complete this walkthrough, you must have Visual Studio installed with the **Desktop development with C++** workload and the optional **C++ MFC for x64/x86** component. ## To create an MFC application diff --git a/docs/mfc/walkthrough-adding-animation-to-an-mfc-project.md b/docs/mfc/walkthrough-adding-animation-to-an-mfc-project.md index 2ab962abddd..203b4313782 100644 --- a/docs/mfc/walkthrough-adding-animation-to-an-mfc-project.md +++ b/docs/mfc/walkthrough-adding-animation-to-an-mfc-project.md @@ -7,7 +7,7 @@ ms.assetid: 004f832c-9fd5-4f88-9ca9-ae65dececdc2 --- # Walkthrough: Adding Animation to an MFC Project -This walkthrough teaches how to add a basic animated object to a Visual C++, Microsoft Foundation Class Library (MFC) project. +This walkthrough teaches how to add a basic animated object to a Visual Studio, Microsoft Foundation Class Library (MFC) project. The walkthrough shows how to accomplish these tasks: diff --git a/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md b/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md index 19b88357d9d..0d04318ced9 100644 --- a/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md +++ b/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md @@ -11,7 +11,7 @@ ms.assetid: 602df5c2-17d4-4cd9-8cf6-dff652c4cae5 ## Prerequisites -[Visual C++ Samples](../overview/visual-cpp-samples.md) +[Visual Studio C++ Samples](../overview/visual-cpp-samples.md) ## Sections diff --git a/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md b/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md index 35d503d1884..5aa336afc5a 100644 --- a/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md +++ b/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md @@ -53,7 +53,7 @@ These steps vary depending on which version of Visual Studio you are using. To s 1. Use the **MFC Application Wizard** to create a new MFC application. To run the wizard, from the **File** menu select **New**, and then select **Project**. The **New Project** dialog box will be displayed. -1. In the **New Project** dialog box, expand the **Visual C++** node in the **Project types** pane and select **MFC**. Then, in the **Templates** pane, select **MFC Application**. Type a name for the project, such as `MFCShellControls` and click **OK**. +1. In the **New Project** dialog box, expand the **Visual Studio** node in the **Project types** pane and select **MFC**. Then, in the **Templates** pane, select **MFC Application**. Type a name for the project, such as `MFCShellControls` and click **OK**. After **MFC Application Wizard** displays, use the following options: @@ -200,7 +200,7 @@ The wizard automatically creates an application that has a standard menu bar, a - The wizard created an Outlook bar with both a **Folders** pane and a **Calendar** pane. It probably doesn't make sense to have a **Calendar** pane in an **Explorer** window, so remove that pane now. -- The `CMFCShellListCtrl` supports viewing files in different modes, such as **Large Icons**, **Small Icons**, **List**, and **Details**. Update your application to implement this functionality. Hint: see [Visual C++ Samples](../overview/visual-cpp-samples.md). +- The `CMFCShellListCtrl` supports viewing files in different modes, such as **Large Icons**, **Small Icons**, **List**, and **Details**. Update your application to implement this functionality. Hint: see [Visual Studio C++ Samples](../overview/visual-cpp-samples.md). ## See also diff --git a/docs/mfc/windows-sockets-in-mfc.md b/docs/mfc/windows-sockets-in-mfc.md index c75929505b3..ade1e931319 100644 --- a/docs/mfc/windows-sockets-in-mfc.md +++ b/docs/mfc/windows-sockets-in-mfc.md @@ -30,7 +30,7 @@ Creating and using `CSocket` and `CAsyncSocket` objects is described in [Windows ## Windows Sockets DLLs -The Microsoft Windows operating systems supply the Windows Sockets dynamic-link libraries (DLL). Visual C++ supplies the appropriate header files and libraries and the Windows Sockets specification. +The Microsoft Windows operating systems supply the Windows Sockets dynamic-link libraries (DLL). Visual Studio supplies the appropriate header files and libraries and the Windows Sockets specification. For more information about Windows Sockets, see: diff --git a/docs/mfc/windows-sockets-using-class-casyncsocket.md b/docs/mfc/windows-sockets-using-class-casyncsocket.md index 992332b73a9..4b93d33ecb9 100644 --- a/docs/mfc/windows-sockets-using-class-casyncsocket.md +++ b/docs/mfc/windows-sockets-using-class-casyncsocket.md @@ -8,7 +8,7 @@ helpviewer_keywords: ["CAsyncSocket class [MFC], programming model", "Windows So This article explains how to use class [`CAsyncSocket`](reference/casyncsocket-class.md). This class encapsulates the Windows Sockets API at a very low level. `CAsyncSocket` is for use by programmers who know network communications in detail but want the convenience of callbacks for notification of network events. Based on this assumption, this article provides only basic instruction. You should probably consider using `CAsyncSocket` if you want Windows Sockets' ease of dealing with multiple network protocols in an MFC application but don't want to sacrifice flexibility. You might also feel that you can get better efficiency by programming the communications more directly yourself than you could using the more general alternative model of class `CSocket`. -`CAsyncSocket` is documented in the *MFC Reference*. Visual C++ also supplies the Windows Sockets specification, located in the Windows SDK. The details are left to you. Visual C++ doesn't supply a sample application for `CAsyncSocket`. +`CAsyncSocket` is documented in the *MFC Reference*. Visual Studio also supplies the Windows Sockets specification, located in the Windows SDK. The details are left to you. Visual Studio doesn't supply a sample application for `CAsyncSocket`. If you aren't highly knowledgeable about network communications and want a simple solution, use class [`CSocket`](reference/csocket-class.md) with a `CArchive` object. See [Windows Sockets: Using Sockets with Archives](windows-sockets-using-sockets-with-archives.md) for more information. diff --git a/docs/mfc/wizards-and-the-resource-editors.md b/docs/mfc/wizards-and-the-resource-editors.md index daf62848239..5646150d063 100644 --- a/docs/mfc/wizards-and-the-resource-editors.md +++ b/docs/mfc/wizards-and-the-resource-editors.md @@ -7,11 +7,11 @@ ms.assetid: f5dd4d13-9dc1-4a49-b6bf-5b3cb45fa8ba --- # Wizards and the Resource Editors -Visual C++ includes several wizards for use in MFC programming, along with many integrated resource editors. For ActiveX controls programming, the [ActiveX Control Wizard](../mfc/reference/mfc-activex-control-wizard.md) serves a purpose much like that of the MFC Application Wizard. While you can write MFC applications without most of these tools, the tools greatly simplify and speed your work. +Visual Studio includes several wizards for use in MFC programming, along with many integrated resource editors. For ActiveX controls programming, the [ActiveX Control Wizard](../mfc/reference/mfc-activex-control-wizard.md) serves a purpose much like that of the MFC Application Wizard. While you can write MFC applications without most of these tools, the tools greatly simplify and speed your work. ## Use the MFC Application Wizard to Create an MFC Application -Use the [MFC Application Wizard](../mfc/reference/mfc-application-wizard.md) to create an MFC project in Visual C++, which can include OLE and database support. Files in the project contain your application, document, view, and frame-window classes; standard resources, including menus and an optional toolbar; other required Windows files; and optional .rtf files containing standard Windows Help topics that you can revise and augment to create your program's help file. +Use the [MFC Application Wizard](../mfc/reference/mfc-application-wizard.md) to create an MFC project in Visual Studio, which can include OLE and database support. Files in the project contain your application, document, view, and frame-window classes; standard resources, including menus and an optional toolbar; other required Windows files; and optional .rtf files containing standard Windows Help topics that you can revise and augment to create your program's help file. ## Use Class View to Manage Classes and Windows Messages @@ -30,11 +30,11 @@ The [Class Wizard](reference/mfc-class-wizard.md) will create empty message-hand ## Use the Resource Editors to Create and Edit Resources -Use the Visual C++ [resource editors](../windows/resource-editors.md) to create and edit menus, dialog boxes, custom controls, accelerator keys, bitmaps, icons, cursors, strings, and version resources. As of Visual C++ version 4.0, a toolbar editor makes creating toolbars much easier. +Use the Visual Studio [resource editors](../windows/resource-editors.md) to create and edit menus, dialog boxes, custom controls, accelerator keys, bitmaps, icons, cursors, strings, and version resources. As of Visual Studio version 4.0, a toolbar editor makes creating toolbars much easier. To help you even more, the Microsoft Foundation Class Library provides a file called COMMON.RES, which contains "clip art" resources that you can copy from COMMON.RES and paste into your own resource file. COMMON.RES includes toolbar buttons, common cursors, icons, and more. You can use, modify, and redistribute these resources in your application. For more information about COMMON.RES, see the [Clipart sample](../overview/visual-cpp-samples.md). -The MFC Application Wizard, the Visual C++ wizards, resource editors, and the MFC framework do a lot of work for you and make managing your code much easier. The bulk of your application-specific code is in your document and view classes. +The MFC Application Wizard, the Visual Studio wizards, resource editors, and the MFC framework do a lot of work for you and make managing your code much easier. The bulk of your application-specific code is in your document and view classes. ## See also From 4c8b80ffadb9c0e3471748a3c97313eeada256f8 Mon Sep 17 00:00:00 2001 From: ChanPark Date: Fri, 30 Jan 2026 10:44:17 -0800 Subject: [PATCH 264/619] New moniker ranges --- docs/build/customize-cmake-settings.md | 46 +++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index d49e435c42b..5c8cd24cf4a 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -17,7 +17,7 @@ For Visual Studio 2019 to 2022, select your version by using the version selecto ::: moniker-end -::: moniker range="<=msvc-170" +::: moniker range=">=msvc-160 <=msvc-170" Visual Studio uses a CMake configuration file to drive CMake generation and build. *`CMakePresets.json`* is supported by Visual Studio 2019 version 16.10 or later and is the recommended CMake configuration file. *`CMakePresets.json`* is supported directly by CMake and can be used to drive CMake generation and build from Visual Studio, from VS Code, in a Continuous Integration pipeline, and from the command line on Windows, Linux, and Mac. For more information on *`CMakePresets.json`*, see [Configure and build with CMake Presets](cmake-presets-vs.md). @@ -171,6 +171,50 @@ For more information about each of the properties in the file, see [CMakeSetting ::: moniker-end +::: moniker range="<=msvc-150" + +Visual Studio 2017 provides several CMake configurations that define how CMake is invoked to create the CMake cache for a given project. To add a new configuration, select the configuration drop-down in the toolbar and choose **Manage Configurations**: + + ![Screenshot of Manage configurations selected in the drop-down.](media/cmake-manage-configurations.png) + +You can choose from the list of predefined configurations: + + ![Add Configuration to CMake Settings dialog list of predefined configurations.](media/cmake-configurations.png) + +The first time you select a configuration, Visual Studio creates a *`CMakeSettings.json`* file in your project's root folder. This file is used to re-create the CMake cache file, for example after a **Clean** operation. + +To add another configuration, right-click *`CMakeSettings.json`* and choose **Add Configuration**. + + ![Screenshot of the shortcut menu with Add configuration selected.](media/cmake-add-configuration.png "CMake Add Configuration") + +You can also edit the file using the **CMake Settings Editor**. Right-click on *`CMakeSettings.json`* in **Solution Explorer** and choose **Edit CMake Settings**. Or, select **Manage Configurations** from the configuration drop-down at the top of the editor window. + +You can also directly edit *`CMakeSettings.json`* to create custom configurations. The following example shows a sample configuration, which you can use as a starting point: + +```json + { + "name": "x86-Debug", + "generator": "Ninja", + "configurationType": "Debug", + "inheritEnvironments": [ "msvc_x86" ], + "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}", + "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "-v", + "ctestCommandArgs": "" + }, +``` + +JSON IntelliSense helps you edit the *`CMakeSettings.json`* file: + + :::image type="complex" source="media/cmake-json-intellisense.png" alt-text="Screenshot of the CMake JSON IntelliSense pop-up in the editor."::: + The JSON IntelliSense pop-up for "configurations" shows buildCommandArgs, buildRoot, cmakeCommandArgs, configurationType, among several others. + :::image-end::: + +For more information about each of the properties in the file, see [`CMakeSettings.json` schema reference](cmakesettings-reference.md). + +::: moniker-end + ## Related content - [CMake Projects in Visual Studio](cmake-projects-in-visual-studio.md) From b881da5964874a940c20071c3473015caf590770 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 30 Jan 2026 17:07:25 -0800 Subject: [PATCH 265/619] edits --- .../mfc/changing-the-styles-of-a-window-created-by-mfc.md | 2 +- docs/mfc/containers-for-activex-controls.md | 2 +- .../creating-an-active-document-container-application.md | 2 +- docs/mfc/docking-and-floating-toolbars.md | 2 +- docs/mfc/form-views-mfc.md | 2 +- docs/mfc/framework-mfc.md | 2 +- ...es-it-easier-to-create-internet-client-applications.md | 2 +- docs/mfc/methods-of-creating-a-status-bar.md | 2 +- docs/mfc/methods-of-creating-a-toolbar.md | 2 +- docs/mfc/mfc-and-atl.md | 2 +- docs/mfc/mfc-library-versions.md | 2 +- docs/mfc/mfc-mbcs-dll-add-on.md | 2 +- .../reference/adding-an-mfc-class-from-a-type-library.md | 2 +- docs/mfc/reference/adding-an-mfc-odbc-consumer.md | 2 +- docs/mfc/reference/creating-an-mfc-application.md | 8 ++++---- docs/mfc/technical-notes-by-category.md | 2 +- docs/mfc/technical-notes-by-number.md | 2 +- .../testing-properties-and-events-with-test-container.md | 2 +- docs/mfc/tn057-localization-of-mfc-components.md | 4 ++-- ...hrough-updating-the-mfc-scribble-application-part-2.md | 2 +- docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md | 4 ++-- 21 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md b/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md index fdab577e449..eb6d87a53c4 100644 --- a/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md +++ b/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md @@ -12,7 +12,7 @@ In its version of the `WinMain` function, MFC registers several standard window ## Changing Styles in a New MFC Application -If you're using Microsoft C++ 2.0 or later, you can change the default window styles in the Application Wizard when you create your application. In the Application Wizard's User Interface Features page, you can change styles for your main frame window and MDI child windows. For either window type, you can specify its frame thickness (thick or thin) and any of the following: +If you're using Visual C++ 2.0 or later, you can change the default window styles in the Application Wizard when you create your application. In the Application Wizard's User Interface Features page, you can change styles for your main frame window and MDI child windows. For either window type, you can specify its frame thickness (thick or thin) and any of the following: - Whether the window has Minimize or Maximize controls. diff --git a/docs/mfc/containers-for-activex-controls.md b/docs/mfc/containers-for-activex-controls.md index 8f11ee29d83..8b5adeba287 100644 --- a/docs/mfc/containers-for-activex-controls.md +++ b/docs/mfc/containers-for-activex-controls.md @@ -21,7 +21,7 @@ Applications that support ActiveX control containment include: - Visual Basic 4.x and greater -- Microsoft C++ 4.x and greater +- Visual C++ 4.x and greater - Access 95 and greater diff --git a/docs/mfc/creating-an-active-document-container-application.md b/docs/mfc/creating-an-active-document-container-application.md index 077cea8136c..c1ef6e9ac2d 100644 --- a/docs/mfc/creating-an-active-document-container-application.md +++ b/docs/mfc/creating-an-active-document-container-application.md @@ -14,7 +14,7 @@ The simplest and most recommended way to create an active document container app 1. From the **File** menu, click **Project**from the **New** submenu. -1. From the left pane, click **MicrosoftVisual Studio** project type. +1. From the left pane, click **Visual C++** project type. 1. Select **MFC Application** from the right pane. diff --git a/docs/mfc/docking-and-floating-toolbars.md b/docs/mfc/docking-and-floating-toolbars.md index e68d5dd87f7..2dc9f54a2a7 100644 --- a/docs/mfc/docking-and-floating-toolbars.md +++ b/docs/mfc/docking-and-floating-toolbars.md @@ -57,7 +57,7 @@ The MFC implementation of dockable toolbars does not provide some of the extende ## Dynamically Resizing the Toolbar -As of Visual Studio version 4.0, you can make it possible for users of your application to resize floating toolbars dynamically. Typically, a toolbar has a long, linear shape, displayed horizontally. But you can change the toolbar's orientation and its shape. For example, when the user docks a toolbar against one of the vertical sides of the frame window, the shape changes to a vertical layout. It's also possible to reshape the toolbar into a rectangle with multiple rows of buttons. +As of Visual C++ version 4.0, you can make it possible for users of your application to resize floating toolbars dynamically. Typically, a toolbar has a long, linear shape, displayed horizontally. But you can change the toolbar's orientation and its shape. For example, when the user docks a toolbar against one of the vertical sides of the frame window, the shape changes to a vertical layout. It's also possible to reshape the toolbar into a rectangle with multiple rows of buttons. You can: diff --git a/docs/mfc/form-views-mfc.md b/docs/mfc/form-views-mfc.md index 87517953bb5..61a5a4bd8d9 100644 --- a/docs/mfc/form-views-mfc.md +++ b/docs/mfc/form-views-mfc.md @@ -7,7 +7,7 @@ ms.assetid: efbe73c1-4ca4-4613-aac2-30d916e92c0e --- # Form Views (MFC) -You can add forms to any Visual Studio application that supports the MFC libraries, including a [forms-based application](reference/creating-a-forms-based-mfc-application.md) (one whose view class is derived from `CFormView`). If you did not initially create your application to support forms, Visual Studio will add this support for you when you insert a new form. In an SDI or MDI application, which implements the default [document/view architecture](document-view-architecture.md), when the user chooses the **New** command (by default, on the **File** menu), Visual Studio prompts the user to choose from the available forms. +You can add forms to any Visual C++ application that supports the MFC libraries, including a [forms-based application](reference/creating-a-forms-based-mfc-application.md) (one whose view class is derived from `CFormView`). If you did not initially create your application to support forms, Visual Studio will add this support for you when you insert a new form. In an SDI or MDI application, which implements the default [document/view architecture](document-view-architecture.md), when the user chooses the **New** command (by default, on the **File** menu), Visual Studio prompts the user to choose from the available forms. With an SDI application, when the user chooses the **New** command, the current instance of the form continues to run but a new instance of the application with the selected form is created if one is not found. In an MDI application, the current instance of the form continues to run when the user chooses the **New** command. diff --git a/docs/mfc/framework-mfc.md b/docs/mfc/framework-mfc.md index 7c8996f07c3..0bd459a85d7 100644 --- a/docs/mfc/framework-mfc.md +++ b/docs/mfc/framework-mfc.md @@ -7,7 +7,7 @@ ms.assetid: 3be0fec8-9843-4119-ae42-ece993ef500b --- # Framework (MFC) -Your work with the Microsoft Foundation Class (MFC) Library framework is based largely on a few major classes and several Visual Studio tools. Some classes encapsulate a large portion of the Win32 application programming interface (API). Other classes encapsulate application concepts such as documents, views, and the application itself. Still others encapsulate OLE features and ODBC and DAO data-access functionality. (DAO is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete.) +Your work with the Microsoft Foundation Class (MFC) Library framework is based largely on a few major classes and several Visual C++ tools. Some classes encapsulate a large portion of the Win32 application programming interface (API). Other classes encapsulate application concepts such as documents, views, and the application itself. Still others encapsulate OLE features and ODBC and DAO data-access functionality. (DAO is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete.) For example, Win32's concept of window is encapsulated by MFC class `CWnd`. That is, a C++ class called `CWnd` encapsulates or "wraps" the `HWND` handle that represents a Windows window. Likewise, class `CDialog` encapsulates Win32 dialog boxes. diff --git a/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md b/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md index e9adb0c6a10..4b8cec07283 100644 --- a/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md +++ b/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md @@ -9,7 +9,7 @@ ms.assetid: dc0f9f47-3184-4e7a-8074-2c63e0359885 The Win32 Internet Extensions, or WinInet, provide access to common Internet protocols, including gopher, FTP, and HTTP. Using WinInet, you can write Internet client applications at a higher level of programming, without having to deal with WinSock, TCP/IP, or the details of specific Internet protocols. WinInet provides a consistent set of functions for all three protocols, with a familiar Win32 API interface. This consistency minimizes code changes you need to make if the underlying protocol changes (for example, from FTP to HTTP). -Visual Studio provides two ways for you to use WinInet. You can call the Win32 Internet functions directly (see the OLE documentation in the Windows SDK for more information) or you can use WinInet through the [MFC WinInet classes](mfc-classes-for-creating-internet-client-applications.md). +Visual C++ provides two ways for you to use WinInet. You can call the Win32 Internet functions directly (see the OLE documentation in the Windows SDK for more information) or you can use WinInet through the [MFC WinInet classes](mfc-classes-for-creating-internet-client-applications.md). **You can use WinInet to:** diff --git a/docs/mfc/methods-of-creating-a-status-bar.md b/docs/mfc/methods-of-creating-a-status-bar.md index aa914e3f097..7d4e9bc4cf0 100644 --- a/docs/mfc/methods-of-creating-a-status-bar.md +++ b/docs/mfc/methods-of-creating-a-status-bar.md @@ -11,7 +11,7 @@ MFC provides two classes to create status bars: [CStatusBar](reference/cstatusba `CStatusBarCtrl` usually results in a smaller executable, and you may prefer to use `CStatusBarCtrl` if you do not intend to integrate the status bar into the MFC architecture. If you plan to use `CStatusBarCtrl` and integrate the status bar into the MFC architecture, you must take additional care to communicate status bar control manipulations to MFC. This communication is not difficult; however, it is additional work that is unneeded when you use `CStatusBar`. -Visual Studio provides two ways to take advantage of the status bar common control. +Visual C++ provides two ways to take advantage of the status bar common control. - Create the status bar using `CStatusBar`, and then call [CStatusBar::GetStatusBarCtrl](reference/cstatusbar-class.md#getstatusbarctrl) to get access to the `CStatusBarCtrl` member functions. diff --git a/docs/mfc/methods-of-creating-a-toolbar.md b/docs/mfc/methods-of-creating-a-toolbar.md index b241b3f46a3..aca7ea41dc3 100644 --- a/docs/mfc/methods-of-creating-a-toolbar.md +++ b/docs/mfc/methods-of-creating-a-toolbar.md @@ -11,7 +11,7 @@ MFC provides two classes to create toolbars: [CToolBar](reference/ctoolbar-class `CToolBarCtrl` usually results in a smaller executable, and you may prefer to use `CToolBarCtrl` if you do not intend to integrate the toolbar into the MFC architecture. If you plan to use `CToolBarCtrl` and integrate the toolbar into the MFC architecture, you must take additional care to communicate toolbar control manipulations to MFC. This communication is not difficult; however, it is additional work that is unneeded when you use `CToolBar`. -Visual Studio provides two ways to take advantage of the toolbar common control. +Visual C++ provides two ways to take advantage of the toolbar common control. - Create the toolbar using `CToolBar`, and then call [CToolBar::GetToolBarCtrl](reference/ctoolbar-class.md#gettoolbarctrl) to get access to the `CToolBarCtrl` member functions. diff --git a/docs/mfc/mfc-and-atl.md b/docs/mfc/mfc-and-atl.md index 6859ab97126..d9e499ac1bd 100644 --- a/docs/mfc/mfc-and-atl.md +++ b/docs/mfc/mfc-and-atl.md @@ -12,7 +12,7 @@ The Microsoft Foundation Classes (MFC) provide a C++ object-oriented wrapper ove You can create MFC or ATL programs with Visual Studio Community Edition or higher. The Express editions do not support MFC or ATL. -In Visual Studio 2015, Microsoft C++ is an optional component, and MFC and ATL components are optional sub-components under Microsoft C++. If you do not select these components when you first install Visual Studio, you will be prompted to install them the first time you attempt to create or open an MFC or ATL project. +In Visual Studio 2015, Visual C++ is an optional component, and MFC and ATL components are optional sub-components under Visual C++. If you do not select these components when you first install Visual Studio, you will be prompted to install them the first time you attempt to create or open an MFC or ATL project. In Visual Studio 2017 and later, MFC and ATL are optional sub-components under the **Desktop development with C++** workload in the Visual Studio Installer program. You can install ATL support without MFC, or combined MFC and ATL support (MFC depends on ATL). For more information about workloads and components, see [Install Visual Studio](/visualstudio/install/install-visual-studio). diff --git a/docs/mfc/mfc-library-versions.md b/docs/mfc/mfc-library-versions.md index 974d8e1bb97..ff6462e70e0 100644 --- a/docs/mfc/mfc-library-versions.md +++ b/docs/mfc/mfc-library-versions.md @@ -117,7 +117,7 @@ The import libraries needed to build applications or MFC extension DLLs that use If you are dynamically linking to the shared DLL version of MFC, whether it is from an application or from an MFC extension DLL, you must include the matching MFC*version*.DLL or MFC*version*U.DLL when you deploy your product. -For a list of Visual Studio DLLs that can be distributed with your applications, see [Distributable Code for Microsoft Visual Studio 2017 and Microsoft Visual Studio 2017 SDK (Includes Utilities and BuildServer Files)](/visualstudio/productinfo/2017-redistribution-vs) or [Distributable Code for Visual Studio 2019](/visualstudio/releases/2019/redistribution). +For a list of Visual C++ DLLs that can be distributed with your applications, see [Distributable Code for Microsoft Visual Studio 2017 and Microsoft Visual Studio 2017 SDK (Includes Utilities and BuildServer Files)](/visualstudio/productinfo/2017-redistribution-vs) or [Distributable Code for Visual Studio 2019](/visualstudio/releases/2019/redistribution). For more information on MBCS and Unicode support in MFC, see [Unicode and Multibyte Character Set (MBCS) Support](../atl-mfc-shared/unicode-and-multibyte-character-set-mbcs-support.md). diff --git a/docs/mfc/mfc-mbcs-dll-add-on.md b/docs/mfc/mfc-mbcs-dll-add-on.md index 0bc1d03de9a..f64676d47cd 100644 --- a/docs/mfc/mfc-mbcs-dll-add-on.md +++ b/docs/mfc/mfc-mbcs-dll-add-on.md @@ -10,7 +10,7 @@ Support for MFC and its multibyte character set (MBCS) libraries requires an add **Visual Studio 2013**: By default, the MFC libraries installed in Visual Studio 2013 only support Unicode development. You need the MBCS DLLs in order to build an MFC project in Visual Studio 2013 that has the **Character Set** property set to **Use Multi-Byte Character Set** or **Not Set**. Download the DLL at [Multibyte MFC Library for Visual Studio 2013](https://www.microsoft.com/download/details.aspx?id=40770). -**Visual Studio 2015**: Both Unicode and MBCS MFC DLLs are included in the Visual Studio setup components, but support for MFC is not installed by default. C++ and MFC are optional install configurations in Visual Studio setup. To make sure that MFC is installed, choose **Custom** in setup, and under **Programming Languages**, make sure that **C++ compilers and libraries** and **Microsoft Foundation Classes for C++** are selected. If you have already installed Visual Studio, you will be prompted to install C++ and/or MFC when you attempt to create an MFC project. +**Visual Studio 2015**: Both Unicode and MBCS MFC DLLs are included in the Visual C++ setup components, but support for MFC is not installed by default. Visual C++ and MFC are optional install configurations in Visual Studio setup. To make sure that MFC is installed, choose **Custom** in setup, and under **Programming Languages**, make sure that **Visual C++** and ****Microsoft Foundation Classes for C++** are selected. If you have already installed Visual Studio, you will be prompted to install Visual C++ and/or MFC when you attempt to create an MFC project. **Visual Studio 2017 and later**: The Unicode and MBCS MFC DLLs are installed with the **Desktop development with C++** workload when you select **MFC and ATL support** from the **Optional Components** pane in the Visual Studio Installer program. If your installation does not include these components, navigate to the **File | New Projects** dialog and click the **Open Visual Studio Installer** link. For more information, see [Install Visual Studio](/visualstudio/install/install-visual-studio). diff --git a/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md b/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md index e1730119ef5..db0802eea7c 100644 --- a/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md +++ b/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md @@ -20,7 +20,7 @@ A type library contains a binary description of the interfaces exposed by a comp 1. From the shortcut menu, select **Add** > **New Item**. -1. In the **Add New Item** dialog, select **Installed** packages and then select **Visual Studio**. +1. In the **Add New Item** dialog, select **Installed** packages and then select **Visual C++**. 1. In the Templates pane, select **MFC Class from Typelib**, and then select **Add** to display the [Add Class from Typelib Wizard](../../mfc/reference/add-class-from-typelib-wizard.md). diff --git a/docs/mfc/reference/adding-an-mfc-odbc-consumer.md b/docs/mfc/reference/adding-an-mfc-odbc-consumer.md index a0f9991f6d8..887931326d3 100644 --- a/docs/mfc/reference/adding-an-mfc-odbc-consumer.md +++ b/docs/mfc/reference/adding-an-mfc-odbc-consumer.md @@ -13,7 +13,7 @@ An MFC ODBC consumer consists of an ODBC recordset class and data bindings neces 1. In Class View, right-click the project. On the shortcut menu, click **Add** and then click **Add Class**. -1. In the Visual Studio folder, double-click the **MFC ODBC Consumer** icon or select it and click **Open**. +1. In the Visual C++ folder, double-click the **MFC ODBC Consumer** icon or select it and click **Open**. The MFC ODBC Consumer Wizard opens. diff --git a/docs/mfc/reference/creating-an-mfc-application.md b/docs/mfc/reference/creating-an-mfc-application.md index 8cf0f8d7610..6d366fb7b8a 100644 --- a/docs/mfc/reference/creating-an-mfc-application.md +++ b/docs/mfc/reference/creating-an-mfc-application.md @@ -56,7 +56,7 @@ The dialog shows the application type, set to Console Application (.exe). Under ## To create an MFC forms or dialog-based application 1. From the Visual Studio main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **C++** > **MFC/ATL**. If you don't see these, use the Visual Studio Installer to add MFC/ATL functionality. You can access the installer from the Visual Studio menu via **Tools** > **Get Tools and Features...** In the installer, select **Individual components** and search for **mfc** and then select the appropriate library for your machine such as **C++ MFC for x86 and x64 with Spectre Mitigations**. +1. Under the **Installed** templates, choose **Visual C++** > **MFC/ATL**. If you don't see these, use the Visual Studio Installer to add MFC/ATL functionality. You can access the installer from the Visual Studio menu via **Tools** > **Get Tools and Features...** In the installer, select **Individual components** and search for **mfc** and then select the appropriate library for your machine such as **C++ MFC for x86 and x64 with Spectre Mitigations**. 1. Choose **MFC App** from the center pane. 1. Modify the configuration values as needed, then press **OK**. @@ -71,7 +71,7 @@ The dialog shows the various settings set to their default, such as the applicat An MFC console application is a command-line program that uses MFC libraries but runs in the console window. 1. From the main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **C++** > **Windows Desktop**. +1. Under the **Installed** templates, choose **Visual C++** > **Windows Desktop**. 1. From the center pane, choose **Windows Desktop Wizard**. 1. Modify the project name as needed, then press **OK** to open the **Windows Desktop Wizard**. 1. Check the **MFC Headers** box and set other values as needed, then press **OK**. @@ -87,7 +87,7 @@ The dialog shows the application type set to Console Application (.exe). Under a ## To create an MFC forms or dialog-based application 1. From the main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **C++** > **MFC**. +1. Under the **Installed** templates, choose **Visual C++** > **MFC**. 1. Choose **MFC Application** from the center pane. 1. Click **Next** to start the **MFC Application Wizard**. @@ -102,7 +102,7 @@ The dialog lists the current project settings such as: tabbed multiple document An MFC console application is a command-line program that uses MFC libraries but runs in the console window. 1. From the main menu, choose **File** > **New** > **Project**. -1. Under the **Installed** templates, choose **C++** > **Win32**. +1. Under the **Installed** templates, choose **Visual C++** > **Win32**. 1. Choose **Win32 Console Application** from the center pane. 1. Modify the project name as needed, then press **OK**. 1. On the second page of the wizard, check the **Add common headers for MFC** box and set other values as needed, then press **Finish**. diff --git a/docs/mfc/technical-notes-by-category.md b/docs/mfc/technical-notes-by-category.md index 64544f67312..288094ac3af 100644 --- a/docs/mfc/technical-notes-by-category.md +++ b/docs/mfc/technical-notes-by-category.md @@ -79,7 +79,7 @@ Technical notes are divided into the following categories. For a numerical listi [TN023: Standard MFC Resources](../mfc/tn023-standard-mfc-resources.md)\ [TN024: MFC-Defined Messages and Resources](../mfc/tn024-mfc-defined-messages-and-resources.md)\ [TN028: Context-Sensitive Help Support](../mfc/tn028-context-sensitive-help-support.md)\ -[TN035: Using Multiple Resource Files and Header Files with Visual Studio](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)\ +[TN035: Using Multiple Resource Files and Header Files with Visual C++](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)\ [TN036: Using CFormView with AppWizard and ClassWizard](../mfc/tn036-using-cformview-with-appwizard-and-classwizard.md)\ [TN070: MFC Window Class Names](../mfc/tn070-mfc-window-class-names.md) diff --git a/docs/mfc/technical-notes-by-number.md b/docs/mfc/technical-notes-by-number.md index 52d265d9390..d07d4b3b3bd 100644 --- a/docs/mfc/technical-notes-by-number.md +++ b/docs/mfc/technical-notes-by-number.md @@ -44,7 +44,7 @@ The technical notes below are listed numerically, with the most recently written |38|[MFC/OLE IUnknown Implementation](../mfc/tn038-mfc-ole-iunknown-implementation.md)| |37|[Multithreaded MFC 2.1 Applications](../mfc/tn037-multithreaded-mfc-2-1-applications.md)| |36|[Using CFormView with AppWizard and ClassWizard](../mfc/tn036-using-cformview-with-appwizard-and-classwizard.md)| -|35|[Using Multiple Resource Files and Header Files with Visual Studio](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)| +|35|[Using Multiple Resource Files and Header Files with Visual C++](../mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md)| |33|[DLL Version of MFC](../mfc/tn033-dll-version-of-mfc.md)| |32|[MFC Exception Mechanism](../mfc/tn032-mfc-exception-mechanism.md)| |31|[Control Bars](../mfc/tn031-control-bars.md)| diff --git a/docs/mfc/testing-properties-and-events-with-test-container.md b/docs/mfc/testing-properties-and-events-with-test-container.md index ead507de3af..d7258a77d5c 100644 --- a/docs/mfc/testing-properties-and-events-with-test-container.md +++ b/docs/mfc/testing-properties-and-events-with-test-container.md @@ -7,7 +7,7 @@ ms.topic: how-to --- # Testing Properties and Events with Test Container -The Test Container application, shipped in Visual Studio, is an ActiveX control container for testing and debugging ActiveX controls. Test Container allows the control developer to test the control's functionality by changing its properties, invoking its methods, and firing its events. Test Container can display logs of data-binding notifications and also provides facilities for testing an ActiveX control's persistence functionality: you can save properties to a stream or to substorage, reload them, and examine the stored stream data. This section describes how to use the basic features of Test Container. For additional information, select the **Help** menu while running Test Container. +The Test Container application, shipped in Visual C++, is an ActiveX control container for testing and debugging ActiveX controls. Test Container allows the control developer to test the control's functionality by changing its properties, invoking its methods, and firing its events. Test Container can display logs of data-binding notifications and also provides facilities for testing an ActiveX control's persistence functionality: you can save properties to a stream or to substorage, reload them, and examine the stored stream data. This section describes how to use the basic features of Test Container. For additional information, select the **Help** menu while running Test Container. ### To access the ActiveX Control Test Container diff --git a/docs/mfc/tn057-localization-of-mfc-components.md b/docs/mfc/tn057-localization-of-mfc-components.md index b011cb4de35..bb920458129 100644 --- a/docs/mfc/tn057-localization-of-mfc-components.md +++ b/docs/mfc/tn057-localization-of-mfc-components.md @@ -43,13 +43,13 @@ From then on, MFC will load resources from that DLL instead of from myapp.exe. A It is relatively easy to create a resource only DLL. You create a DLL project, add your .RC file to it, and add the necessary resources. If you have an existing project that does not use this technique, you can copy the resources from that project. After adding the resource file to the project, you are almost ready to build the project. The only thing you must do is set the linker options to include **/NOENTRY**. This tells the linker that the DLL has no entry point - since it has no code, it has no entry point. > [!NOTE] -> The resource editor in Visual Studio 4.0 and later supports multiple languages per .RC file. This can make it very easy to manage your localization in a single project. The resources for each language are controlled by preprocessor directives generated by the resource editor. +> The resource editor in Visual C++ 4.0 and later supports multiple languages per .RC file. This can make it very easy to manage your localization in a single project. The resources for each language are controlled by preprocessor directives generated by the resource editor. ## Using the Provided MFC Localized Resources Any MFC application that you build reuses two things from MFC: code and resources. That is, MFC has various error messages, built-in dialogs, and other resources that are used by the MFC classes. In order to completely localize your application, you need to localize not only your application's resources, but also the resources that come directly from MFC. MFC provides a number of different language resource files automatically, so that if the language you are targeting is one of the languages MFC already supports, you just need to make sure you use those localized resources. -As of this writing, MFC supports Chinese, German, Spanish, French, Italian, Japanese, and Korean. The files which contain these localized versions are in the MFC\INCLUDE\L.* (the 'L' stands for localized) directories. The German files are in MFC\INCLUDE\L.DEU, for example. To cause your application to use these RC files instead of the files located in MFC\INCLUDE, add a `/IC:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\MFC\INCLUDE\L.DEU` to your RC command line (this is just an example; you would need to substitute your locale of choice as well as the directory into which you installed Microsoft C++). +As of this writing, MFC supports Chinese, German, Spanish, French, Italian, Japanese, and Korean. The files which contain these localized versions are in the MFC\INCLUDE\L.* (the 'L' stands for localized) directories. The German files are in MFC\INCLUDE\L.DEU, for example. To cause your application to use these RC files instead of the files located in MFC\INCLUDE, add a `/IC:\PROGRAM FILES\MICROSOFT VISUAL STUDIO .NET 2003\VC7\MFC\INCLUDE\L.DEU` to your RC command line (this is just an example; you would need to substitute your locale of choice as well as the directory into which you installed Visual C++). The above instructions will work if your application links statically with MFC. Most applications link dynamically (because that is the AppWizard default). In this scenario, not only the code is dynamically linked - so are the resources. As a result, you can localize your resources in your application, but the MFC implementation resources will still be loaded from the MFC7x.DLL (or a later version) or from MFC7xLOC.DLL if it exists. You can approach this from two different angles. diff --git a/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md b/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md index 0d04318ced9..19b88357d9d 100644 --- a/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md +++ b/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md @@ -11,7 +11,7 @@ ms.assetid: 602df5c2-17d4-4cd9-8cf6-dff652c4cae5 ## Prerequisites -[Visual Studio C++ Samples](../overview/visual-cpp-samples.md) +[Visual C++ Samples](../overview/visual-cpp-samples.md) ## Sections diff --git a/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md b/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md index 5aa336afc5a..35d503d1884 100644 --- a/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md +++ b/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md @@ -53,7 +53,7 @@ These steps vary depending on which version of Visual Studio you are using. To s 1. Use the **MFC Application Wizard** to create a new MFC application. To run the wizard, from the **File** menu select **New**, and then select **Project**. The **New Project** dialog box will be displayed. -1. In the **New Project** dialog box, expand the **Visual Studio** node in the **Project types** pane and select **MFC**. Then, in the **Templates** pane, select **MFC Application**. Type a name for the project, such as `MFCShellControls` and click **OK**. +1. In the **New Project** dialog box, expand the **Visual C++** node in the **Project types** pane and select **MFC**. Then, in the **Templates** pane, select **MFC Application**. Type a name for the project, such as `MFCShellControls` and click **OK**. After **MFC Application Wizard** displays, use the following options: @@ -200,7 +200,7 @@ The wizard automatically creates an application that has a standard menu bar, a - The wizard created an Outlook bar with both a **Folders** pane and a **Calendar** pane. It probably doesn't make sense to have a **Calendar** pane in an **Explorer** window, so remove that pane now. -- The `CMFCShellListCtrl` supports viewing files in different modes, such as **Large Icons**, **Small Icons**, **List**, and **Details**. Update your application to implement this functionality. Hint: see [Visual Studio C++ Samples](../overview/visual-cpp-samples.md). +- The `CMFCShellListCtrl` supports viewing files in different modes, such as **Large Icons**, **Small Icons**, **List**, and **Details**. Update your application to implement this functionality. Hint: see [Visual C++ Samples](../overview/visual-cpp-samples.md). ## See also From 8983b9338b48aeb09bd0b0dd536c868875cdbcd6 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Wed, 4 Feb 2026 03:06:32 -0800 Subject: [PATCH 266/619] Log examples and download instructions --- ...oubleshoot-vcredist-installation-issues.md | 147 +++++++++++++++--- 1 file changed, 127 insertions(+), 20 deletions(-) diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md index aaba4d0846f..58af67bca74 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -1,11 +1,11 @@ --- title: "Troubleshoot Visual C++ Redistributable installation issues" -description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable (vcredist)" +description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable (VC Redist)" author: vicroms ms.author: viromer -ms.date: 01/21/2025 +ms.date: 02/04/2025 ms.topic: troubleshooting-general -helpviewer_keywords: [ "redist","vcredist", "Visual [C++] redistributable" ] +helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC Redist" ] --- # Troubleshoot Visual C++ Redistributable installation issues @@ -14,29 +14,54 @@ Runtime components using the Visual C++ Redistributable installer or the Visual Studio Installer. If you're experiencing such issues, we recommend that you first attempt -installing the [latest version of the Visual C++ +installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). ## Collect failure logs The first step to diagnose an issue with the Visual C++ -Redistributable (vcredist) installer is to collect its failure logs. +Redistributable (VC Redist) installer is to collect its failure logs. 1) Download the [Microsoft Visual Studio and .NET Log Collection Tool](). 2) Run `Collect.exe` 3) Extract the contents of `%TEMP%/vscollect.zip` -Once you extract `vscollect.zip`, the vcredist logs are located inside the -`Temp` folder. The relevant log files will be prefixed with the pattern +Once you extract `vscollect.zip`, the VC Redist logs are located inside the +`Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. In this article, we use these logs to diagnose common issues with the redist installer. +### Other log locations + +VC Redist is often executed as a prerequisite of other products, in such cases +the installation log might be found in a different path. + +For example, [Configuration +Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as +part of its own upgrade process, running `vcredist_x64.exe` with the `/l` +option, overriding the default log location. + +In such cases, the path to the VC Redist logs can be found by reading that product's +own logs: + +**Example: Configuration Manager logs** + +`\Logs\cmupdate.log` + +```log +10-31-2025 17:40:06.421 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) [Visual C++ 2015-2022 Redistributable (x64)] with older version 14.28.29914 is installed. it needs to upgraded. +10-31-2025 17:40:06.421 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) INFO: Start install Visual C redistributable ("C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64\vcredist_x64.exe" /q /norestart /l "C:\Program Files\Microsoft Configuration Manager\Logs\VCRedist64Install.log"). +10-31-2025 17:40:14.553 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) ERROR: Failed to install Visual C redistributable. Return code: 1603. +10-31-2025 17:40:14.553 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) ERROR: 64-bit VC Redist installation ("C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64\vcredist_x64.exe") failed. Please check log file [C:\Program Files\Microsoft Configuration Manager\Logs\VCRedist64Install.log]. +10-31-2025 17:40:14.554 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) Failed to install vc redist. Please manually install it from C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64 +``` + ## Return Code 1603 -Issues with the vcredist installer often produce the return code 1603. This is +Issues with the VC Redist installer often produce the return code 1603. This is a generic install failure code produced by the Windows Installer, which is invoked during the installation of the Visual C++ Runtime components. @@ -51,32 +76,114 @@ the Visual C++ Redistributable installer](#my-issue-is-not-here). ## Common issues -### Binary file is being used +### Error 1714 - Older Version Cannot Be Removed + +Error 1714 is often caused by a corrupted Windows Installer Cache. The +installation process fails to remove an older version due to a corrupted +or missing MSI package. **Diagnose** -**Steps to resolve** +> [!NOTE] +> The log file examples in this section have had the timestamps removed to +> present only the relevant information. -1 - Close all currently running applications. +> [!NOTE] +> The GUIDs on this examples may be different depending on the product version +> being installed. -### Antivirus or third-party software interference +The presence of these error messages indicate a corrupted cache. -**Diagnose** +In `dd_vcredist__.log` -**Steps to resolve** +```log +Error 0x80070003: Failed to get size of pseudo bundle: C:\ProgramData\Package Cache\{43d1ce82-6f55-4860-a938-20e5deb28b98}\VC_redist.x64.exe +Error 0x80070003: Failed to initialize package from related bundle id: {43d1ce82-6f55-4860-a938-20e5deb28b98} +``` -1 - Disable any antivirus or third-party software that may have a lock on - components that are part of the Visual C++ Redistributable. +In `dd_vcredist___vcRuntimeMinimum_.log`: -### Corrupted Windows Installer cache +```log +SOURCEMGMT: Trying source C:\ProgramData\Package Cache\{455DF12C-7D43-4EFF-AE2F-43C8AF2817A3}v14.28.29914\packages\vcRuntimeMinimum_amd64\. +Note: 1: 2203 2: C:\ProgramData\Package Cache\{455DF12C-7D43-4EFF-AE2F-43C8AF2817A3}v14.28.29914\packages\vcRuntimeMinimum_amd64\vc_runtimeMinimum_x64.msi 3: -2147287037 +SOURCEMGMT: Source is invalid due to missing/inaccessible package. +``` -**Diagnose** +```log +Note: 1: 1714 2: Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 3: 1612 +CustomAction returned actual error code 1612 (note this may not be 100% accurate if translation happened inside sandbox) +Product: Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 -- Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612. + +Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612. +``` + +In `VSSetupEvents.txt` + +```log +Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612.] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [] +``` **Steps to resolve** -1 - Try using the Windows Installer troubleshooting tool. +From the log files, take note of the VC Redist version causing the issue. + +Method 1: Use the Windows Installer: + +1. Try using the Windows Installer to manually remove the old VC Redist version. + If prompted, let the Windows Installer Troubleshooter attempt to fix the + issue. +2. Retry the installation. + +Method 2: Manually remove the old version. + +1. Download the VC Redist installer for the old version by following the steps in + [Download old versions of the Visual C++ Redistributable Installer](#old-vcredist-versions) +2. Run the installer to uninstall the old VC Redist. +3. Retry the installation. + +## Download old versions of the Visual C++ Redistributable Installer + +> [!WARNING] +> Never install a Visual C++ Redistributable Installer that wasn't downloaded +> from a Microsoft site. And only install packages that are signed by Microsoft. + +The VC Redist installer can be downloaded from +[my.visualstudio.com](), search for +Visual C++ Redistributable + +The latest supported VC Redist version for each version of Visual Studio can +be found in [this article](/cpp/windows/latest-supported-vc-redist). + +To access older or legacy versions follow these steps: + +**Version 14.50 or later** + +The download links use the +`https://aka.ms/vs/18/release//VC_redist..exe` pattern. +For example: . + +**Version 14.30 to 14.44** + +The download links use the +`https://aka.ms/vs/17/release//VC_redist.exe` pattern. +For example: . + +**Version 14.20 to 14.29** + +The download links use the +`https://aka.ms/vs/16/release//VC_redist.exe` pattern. +For example: + +**Version 14.10 or later** + +The download links use the +`https://aka.ms/vs/15/release//VC_redist.exe` pattern. +For example: + +If the aka.ms links do not work, you may be able to find the version you're +looking for through a Bing search. However, make sure that the download +comes from a Microsoft site and that the installer is signed by Microsoft. ## My issue is not here TBD: Instructions to report an issue with the redist installer. - From bd5518d634103a46c50b1f98cc9bcebf7877f867 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 4 Feb 2026 15:23:10 -0800 Subject: [PATCH 267/619] integrate troubleshooting guide --- docs/build/run-time-library-behavior.md | 80 ++++++++++++++++--- .../c-runtime-library/crt-library-features.md | 35 ++++++++ 2 files changed, 104 insertions(+), 11 deletions(-) diff --git a/docs/build/run-time-library-behavior.md b/docs/build/run-time-library-behavior.md index ad23da72e29..8b772a5e6b5 100644 --- a/docs/build/run-time-library-behavior.md +++ b/docs/build/run-time-library-behavior.md @@ -1,25 +1,24 @@ --- -description: "Learn more about: DLLs and Microsoft C++ run-time library behavior" -title: "DLLs and Visual C++ run-time library behavior" +description: "Learn more about: DLLs and Microsoft C++ runtime library behavior" +title: "DLLs and Visual C++ runtime library behavior" ms.date: "08/19/2019" f1_keywords: ["_DllMainCRTStartup", "CRT_INIT"] helpviewer_keywords: ["DLLs [C++], entry point function", "process detach [C++]", "process attach [C++]", "DLLs [C++], run-time library behavior", "DllMain function", "_CRT_INIT macro", "_DllMainCRTStartup method", "run-time [C++], DLL startup sequence", "DLLs [C++], startup sequence"] -ms.assetid: e06f24ab-6ca5-44ef-9857-aed0c6f049f2 --- -# DLLs and Visual C++ run-time library behavior +# DLLs and Visual C++ runtime library behavior -When you build a Dynamic-link Library (DLL) by using Visual Studio, by default, the linker includes the Visual C++ run-time library (VCRuntime). The VCRuntime contains code required to initialize and terminate a C/C++ executable. When linked into a DLL, the VCRuntime code provides an internal DLL entry-point function called `_DllMainCRTStartup` that handles Windows OS messages to the DLL to attach to or detach from a process or thread. The `_DllMainCRTStartup` function performs essential tasks such as stack buffer security set up, C run-time library (CRT) initialization and termination, and calls to constructors and destructors for static and global objects. `_DllMainCRTStartup` also calls hook functions for other libraries such as WinRT, MFC, and ATL to perform their own initialization and termination. Without this initialization, the CRT and other libraries, as well as your static variables, would be left in an uninitialized state. The same VCRuntime internal initialization and termination routines are called whether your DLL uses a statically linked CRT or a dynamically linked CRT DLL. +When you build a Dynamic-link Library (DLL) by using Visual Studio, by default, the linker includes the Visual C++ runtime library (VCRuntime). The VCRuntime contains code required to initialize and terminate a C/C++ executable. When linked into a DLL, the VCRuntime code provides an internal DLL entry-point function called `_DllMainCRTStartup` that handles Windows OS messages to the DLL to attach to or detach from a process or thread. The `_DllMainCRTStartup` function performs essential tasks such as stack buffer security set up, C runtime library (CRT) initialization and termination, and calls to constructors and destructors for static and global objects. `_DllMainCRTStartup` also calls hook functions for other libraries such as WinRT, MFC, and ATL to perform their own initialization and termination. Without this initialization, the CRT and other libraries, as well as your static variables, would be left in an uninitialized state. The same VCRuntime internal initialization and termination routines are called whether your DLL uses a statically linked CRT or a dynamically linked CRT DLL. ## Default DLL entry point _DllMainCRTStartup In Windows, all DLLs can contain an optional entry-point function, usually called `DllMain`, that is called for both initialization and termination. This gives you an opportunity to allocate or release additional resources as needed. Windows calls the entry-point function in four situations: process attach, process detach, thread attach, and thread detach. When a DLL is loaded into a process address space, either when an application that uses it is loaded, or when the application requests the DLL at runtime, the operating system creates a separate copy of the DLL data. This is called *process attach*. *Thread attach* occurs when the process the DLL is loaded in creates a new thread. *Thread detach* occurs when the thread terminates, and *process detach* is when the DLL is no longer required and is released by an application. The operating system makes a separate call to the DLL entry point for each of these events, passing a *reason* argument for each event type. For example, the OS sends `DLL_PROCESS_ATTACH` as the *reason* argument to signal process attach. -The VCRuntime library provides an entry-point function called `_DllMainCRTStartup` to handle default initialization and termination operations. On process attach, the `_DllMainCRTStartup` function sets up buffer security checks, initializes the CRT and other libraries, initializes run-time type information, initializes and calls constructors for static and non-local data, initializes thread-local storage, increments an internal static counter for each attach, and then calls a user- or library-supplied `DllMain`. On process detach, the function goes through these steps in reverse. It calls `DllMain`, decrements the internal counter, calls destructors, calls CRT termination functions and registered `atexit` functions, and notifies any other libraries of termination. When the attachment counter goes to zero, the function returns `FALSE` to indicate to Windows that the DLL can be unloaded. The `_DllMainCRTStartup` function is also called during thread attach and thread detach. In these cases, the VCRuntime code does no additional initialization or termination on its own, and just calls `DllMain` to pass the message along. If `DllMain` returns `FALSE` from process attach, signaling failure, `_DllMainCRTStartup` calls `DllMain` again and passes `DLL_PROCESS_DETACH` as the *reason* argument, then goes through the rest of the termination process. +The VCRuntime library provides an entry-point function called `_DllMainCRTStartup` to handle default initialization and termination operations. On process attach, the `_DllMainCRTStartup` function sets up buffer security checks, initializes the CRT and other libraries, initializes runtime type information, initializes and calls constructors for static and non-local data, initializes thread-local storage, increments an internal static counter for each attach, and then calls a user- or library-supplied `DllMain`. On process detach, the function goes through these steps in reverse. It calls `DllMain`, decrements the internal counter, calls destructors, calls CRT termination functions and registered `atexit` functions, and notifies any other libraries of termination. When the attachment counter goes to zero, the function returns `FALSE` to indicate to Windows that the DLL can be unloaded. The `_DllMainCRTStartup` function is also called during thread attach and thread detach. In these cases, the VCRuntime code does no additional initialization or termination on its own, and just calls `DllMain` to pass the message along. If `DllMain` returns `FALSE` from process attach, signaling failure, `_DllMainCRTStartup` calls `DllMain` again and passes `DLL_PROCESS_DETACH` as the *reason* argument, then goes through the rest of the termination process. -When building DLLs in Visual Studio, the default entry point `_DllMainCRTStartup` supplied by VCRuntime is linked in automatically. You do not need to specify an entry-point function for your DLL by using the [/ENTRY (Entry point symbol)](reference/entry-entry-point-symbol.md) linker option. +When building DLLs in Visual Studio, the default entry point `_DllMainCRTStartup` supplied by VCRuntime is linked in automatically. You do not need to specify an entry-point function for your DLL by using the [`/ENTRY` (Entry point symbol)](reference`/ENTRY`-entry-point-symbol.md) linker option. > [!NOTE] -> While it is possible to specify another entry-point function for a DLL by using the /ENTRY: linker option, we do not recommend it, because your entry-point function would have to duplicate everything that `_DllMainCRTStartup` does, in the same order. The VCRuntime provides functions that allow you to duplicate its behavior. For example, you can call [__security_init_cookie](../c-runtime-library/reference/security-init-cookie.md) immediately on process attach to support the [/GS (Buffer security check)](reference/gs-buffer-security-check.md) buffer checking option. You can call the `_CRT_INIT` function, passing the same parameters as the entry point function, to perform the rest of the DLL initialization or termination functions. +> While it is possible to specify another entry-point function for a DLL by using the `/ENTRY`: linker option, we do not recommend it, because your entry-point function would have to duplicate everything that `_DllMainCRTStartup` does, in the same order. The VCRuntime provides functions that allow you to duplicate its behavior. For example, you can call [__security_init_cookie](../c-runtime-library/reference/security-init-cookie.md) immediately on process attach to support the [/GS (Buffer security check)](reference/gs-buffer-security-check.md) buffer checking option. You can call the `_CRT_INIT` function, passing the same parameters as the entry point function, to perform the rest of the DLL initialization or termination functions. @@ -82,7 +81,66 @@ extern "C" BOOL WINAPI DllMain ( ``` > [!NOTE] -> Older Windows SDK documentation says that the actual name of the DLL entry-point function must be specified on the linker command-line with the /ENTRY option. With Visual Studio, you do not need to use the /ENTRY option if the name of your entry-point function is `DllMain`. In fact, if you use the /ENTRY option and name your entry-point function something other than `DllMain`, the CRT does not get initialized properly unless your entry-point function makes the same initialization calls that `_DllMainCRTStartup` makes. +> Older Windows SDK documentation says that the actual name of the DLL entry-point function must be specified on the linker command-line with the `/ENTRY` option. With Visual Studio, you do not need to use the `/ENTRY` option if the name of your entry-point function is `DllMain`. In fact, if you use the `/ENTRY` option and name your entry-point function something other than `DllMain`, the CRT does not get initialized properly unless your entry-point function makes the same initialization calls that `_DllMainCRTStartup` makes. + +### Manual CRT initialization with `_CRT_INIT` + +When building a DLL that uses any of the C runtime libraries, in order to ensure that the CRT is properly initialized, either: + +1. The initialization function must be named `DllMain()` and the entry point must be specified with the linker option `-entry:_DllMainCRTStartup@12`, or +1. The DLL's entry point must explicitly call `_CRT_INIT()` on process attach and process detach. + +This permits the C runtime libraries to properly allocate and initialize C runtime data when a process or thread is attaching to the DLL, to properly clean up C runtime data when a process is detaching from the DLL, and for global C++ objects in the DLL to be properly constructed and destructed. + +The Win32 SDK samples all use the first method. Refer to the Win32 Programmer's Reference for `DllEntryPoint()` and the Visual C++ documentation for `DllMain()`. Note that `DllMainCRTStartup()` calls `_CRT_INIT()` and `_CRT_INIT()` will call your application's `DllMain()`, if it exists. + +If you wish to use the second method and call the CRT initialization code yourself, instead of using `DllMainCRTStartup()` and `DllMain()`, there are two techniques: + +1. If there is no entry function that performs initialization code, specify `_CRT_INIT()` as the entry point of the DLL. Assuming that you've included `NTWIN32.MAK`, which defines `DLLENTRY` as `@12`, add the option to the DLL's link line: `-entry:_CRT_INIT$(DLLENTRY)`. +1. If you do have your own DLL entry point, do the following in the entry point: + + a. Use this prototype for `_CRT_INIT()`: `BOOL WINAPI _CRT_INIT(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved);` + + For information on `_CRT_INIT()` return values, see the documentation for `DllEntryPoint`; the same values are returned. + + b. On `DLL_PROCESS_ATTACH` and `DLL_THREAD_ATTACH`, call `_CRT_INIT()` first, before any C runtime functions are called or any floating-point operations are performed. + + c. Call your own process/thread initialization/termination code. + + d. On `DLL_PROCESS_DETACH` and `DLL_THREAD_DETACH`, call `_CRT_INIT()` last, after all C runtime functions have been called and all floating-point operations are completed. + +Be sure to pass on to `_CRT_INIT()` all of the parameters of the entry point; `_CRT_INIT()` expects those parameters, so things may not work reliably if they are omitted (in particular, `fdwReason` is required to determine whether process initialization or termination is needed). + +Below is a skeleton sample entry point function that shows when and how to make these calls to `_CRT_INIT()` in the DLL entry point: + +```cpp +BOOL WINAPI DllEntryPoint(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved) +{ + if (fdwReason == DLL_PROCESS_ATTACH || fdwReason == DLL_THREAD_ATTACH) + if (!_CRT_INIT(hinstDLL, fdwReason, lpReserved)) + return(FALSE); + + if (fdwReason == DLL_PROCESS_DETACH || fdwReason == DLL_THREAD_DETACH) + if (!_CRT_INIT(hinstDLL, fdwReason, lpReserved)) + return(FALSE); + + return(TRUE); +} +``` + +> [!NOTE] +> This is not necessary if you are using `DllMain()` and `-entry:_DllMainCRTStartup@12`. + +### Using NTWIN32.MAK to simplify the build process + +There are macros defined in `NTWIN32.MAK` that can be used to simplify your makefiles and to ensure that they are properly built to avoid conflicts. For this reason, Microsoft highly recommends using `NTWIN32.MAK `and its macros. + +For compilation, use: `$(cvarsdll)` for apps/DLLs using CRT in a DLL. + +For linking, use one of the following: + +- `$(conlibsdll)` for console apps/DLLs using CRT in a DLL +- `$(guilibsdll)` for GUI apps using CRT in a DLL @@ -145,7 +203,7 @@ Creating a new `CDynLinkLibrary` object during initialization allows the MFC ext If you are going to use your MFC extension DLL from one or more regular MFC DLLs, you must export an initialization function that creates a `CDynLinkLibrary` object. That function must be called from each of the regular MFC DLLs that use the MFC extension DLL. An appropriate place to call this initialization function is in the `InitInstance` member function of the regular MFC DLL's `CWinApp`-derived object before using any of the MFC extension DLL's exported classes or functions. -In the `DllMain` that the MFC DLL Wizard generates, the call to `AfxInitExtensionModule` captures the module's run-time classes (`CRuntimeClass` structures) as well as its object factories (`COleObjectFactory` objects) for use when the `CDynLinkLibrary` object is created. You should check the return value of `AfxInitExtensionModule`; if a zero value is returned from `AfxInitExtensionModule`, return zero from your `DllMain` function. +In the `DllMain` that the MFC DLL Wizard generates, the call to `AfxInitExtensionModule` captures the module's runtime classes (`CRuntimeClass` structures) as well as its object factories (`COleObjectFactory` objects) for use when the `CDynLinkLibrary` object is created. You should check the return value of `AfxInitExtensionModule`; if a zero value is returned from `AfxInitExtensionModule`, return zero from your `DllMain` function. If your MFC extension DLL will be explicitly linked to an executable (meaning the executable calls `AfxLoadLibrary` to link to the DLL), you should add a call to `AfxTermExtensionModule` on `DLL_PROCESS_DETACH`. This function allows MFC to clean up the MFC extension DLL when each process detaches from the MFC extension DLL (which happens when the process exits or when the DLL is unloaded as a result of a `AfxFreeLibrary` call). If your MFC extension DLL will be linked implicitly to the application, the call to `AfxTermExtensionModule` is not necessary. @@ -160,7 +218,7 @@ Note that the header file Afxdllx.h contains special definitions for structures > [!NOTE] > It is important that you neither define nor undefine any of the `_AFX_NO_XXX` macros in *pch.h* (*stdafx.h* in Visual Studio 2017 and earlier). These macros exist only for the purpose of checking whether a particular target platform supports that feature or not. You can write your program to check these macros (for example, `#ifndef _AFX_NO_OLE_SUPPORT`), but your program should never define or undefine these macros. -A sample initialization function that handles multithreading is included in [Using Thread Local Storage in a Dynamic-Link Library](/windows/win32/Dlls/using-thread-local-storage-in-a-dynamic-link-library) in the Windows SDK. Note that the sample contains an entry-point function called `LibMain`, but you should name this function `DllMain` so that it works with the MFC and C run-time libraries. +A sample initialization function that handles multithreading is included in [Using Thread Local Storage in a Dynamic-Link Library](/windows/win32/Dlls/using-thread-local-storage-in-a-dynamic-link-library) in the Windows SDK. Note that the sample contains an entry-point function called `LibMain`, but you should name this function `DllMain` so that it works with the MFC and C runtime libraries. ## See also diff --git a/docs/c-runtime-library/crt-library-features.md b/docs/c-runtime-library/crt-library-features.md index 165f5090864..9272de5f709 100644 --- a/docs/c-runtime-library/crt-library-features.md +++ b/docs/c-runtime-library/crt-library-features.md @@ -104,6 +104,41 @@ It's also possible to avoid some of these issues if all of the images in your pr Be careful if your program passes certain CRT resources across DLL boundaries. Resources such as file handles, locales, and environment variables can cause problems, even when using the same version of the CRT. For more information on the issues involved and how to resolve them, see [Potential errors passing CRT objects across DLL boundaries](./potential-errors-passing-crt-objects-across-dll-boundaries.md). +### Problems with statically linked CRT libraries + +If an application that makes C runtime calls links to a DLL that also makes C runtime calls, be aware that if they are both linked with one of the statically linked C runtime libraries, the `.EXE` and DLL will have separate copies of all C runtime functions and global variables. This means that C runtime data cannot be shared between the `.EXE` and the DLL. Some of the problems that can occur are: + +- Passing buffered stream handles from the .EXE/DLL to the other module +- Allocating memory with a C runtime call in the .EXE/DLL and reallocating or freeing it in the other module +- Checking or setting the value of the global `errno` variable in the .EXE/DLL and expecting it to be the same in the other module. A related problem is calling `perror()` in the opposite module from where the C runtime error occurred, since `perror()` uses `errno`. + +To avoid these problems, link both the `.EXE` and DLL with `CRTDLL.LIB` or `MSVCRT.LIB`, which allows both the `.EXE` and DLL to use the common set of functions and data contained within CRT in a DLL, and C runtime data such as stream handles can then be shared by both the `.EXE` and DLL. + +### Mixing library types + +You can link your DLL with `CRTDLL.LIB`/`MSVCRT.LIB` regardless of what your `.EXE` is linked with if you avoid mixing CRT data structures and passing CRT file handles or CRT `FILE*` pointers to other modules. + +When mixing library types adhere to the following: + +- CRT file handles may only be operated on by the CRT module that created them. +- CRT `FILE*` pointers may only be operated on by the CRT module that created them. +- Memory allocated with the CRT function `malloc()` may only be freed or reallocated by the CRT module that allocated it. + +To illustrate this, consider the following example: + +- `.EXE` is linked with `MSVCRT.LIB` +- DLL A is linked with `LIBCMT.LIB` +- DLL B is linked with `CRTDLL.LIB` + +If the `.EXE` creates a CRT file handle using `_create()` or `_open()`, this file handle may only be passed to `_lseek()`, `_read()`, `_write()`, `_close()`, etc. in the `.EXE` file. Do not pass this CRT file handle to either DLL. Do not pass a CRT file handle obtained from either DLL to the other DLL or to the `.EXE`. + +If DLL A allocates a block of memory with `malloc()`, only DLL A may call `free()`, `_expand()`, or `realloc()` to operate on that block. You cannot call `malloc()` from DLL A and try to free that block from the `.EXE` or from DLL B. + +> [!NOTE] +> If all three modules were linked with `CRTDLL.LIB` or all three were linked with `MSVCRT.LIB`, these restrictions would not apply. + +When linking DLLs with `LIBC.LIB`, be aware that if there is a possibility that such a DLL will be called by a multithreaded program, the DLL will not support multiple threads running in the DLL at the same time, which can cause major problems. If there is a possibility that the DLL will be called by multithreaded programs, be sure to link it with one of the libraries that support multithreaded programs (`LIBCMT.LIB`, `CRTDLL.LIB`, or `MSVCRT.LIB`). + ## See also [C runtime library reference](./c-run-time-library-reference.md)\ From 8ee52037e3787984f998857442a501e1112a7aac Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 4 Feb 2026 16:41:56 -0800 Subject: [PATCH 268/619] add missing section --- docs/c-runtime-library/crt-library-features.md | 8 ++++++++ docs/standard-library/add-const-class.md | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/c-runtime-library/crt-library-features.md b/docs/c-runtime-library/crt-library-features.md index 9272de5f709..8795fdd9b27 100644 --- a/docs/c-runtime-library/crt-library-features.md +++ b/docs/c-runtime-library/crt-library-features.md @@ -106,6 +106,14 @@ Be careful if your program passes certain CRT resources across DLL boundaries. R ### Problems with statically linked CRT libraries +There are three forms of the C Run-time library provided with the Win32 SDK: + +- `LIBC.LIB` is a statically linked library for single-threaded programs. +- `LIBCMT.LIB` is a statically linked library that supports multithreaded programs. +- `CRTDLL.LIB` is an import library for `CRTDLL.DLL` that also supports multithreaded programs. `CRTDLL.DLL` is part of Windows NT. + +Microsoft Visual C++ 32-bit edition contains these three forms as well, however, the CRT in a DLL is named `MSVCRT.LIB`. The DLL is redistributable. Its name depends on the version of VC++ (that is, `MSVCRT10.DLL` or `MSVCRT20.DLL`). Note however, that `MSVCRT10.DLL` is not supported on Win32s, while `CRTDLL.LIB` is supported on Win32s. `MSVCRT20.DLL` comes in two versions: one for Windows NT and the other for Win32s. + If an application that makes C runtime calls links to a DLL that also makes C runtime calls, be aware that if they are both linked with one of the statically linked C runtime libraries, the `.EXE` and DLL will have separate copies of all C runtime functions and global variables. This means that C runtime data cannot be shared between the `.EXE` and the DLL. Some of the problems that can occur are: - Passing buffered stream handles from the .EXE/DLL to the other module diff --git a/docs/standard-library/add-const-class.md b/docs/standard-library/add-const-class.md index cc0af88c6f9..fcc0b07a48d 100644 --- a/docs/standard-library/add-const-class.md +++ b/docs/standard-library/add-const-class.md @@ -1,5 +1,4 @@ --- -description: "Learn more about: add_const Class" title: "add_const Class" ms.date: "11/04/2016" f1_keywords: ["type_traits/std::add_const"] From 135909dbc31ebf8d1e126cad9395b2a892f80b42 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 4 Feb 2026 16:49:45 -0800 Subject: [PATCH 269/619] restore prev version --- docs/standard-library/add-const-class.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/standard-library/add-const-class.md b/docs/standard-library/add-const-class.md index fcc0b07a48d..cc0af88c6f9 100644 --- a/docs/standard-library/add-const-class.md +++ b/docs/standard-library/add-const-class.md @@ -1,4 +1,5 @@ --- +description: "Learn more about: add_const Class" title: "add_const Class" ms.date: "11/04/2016" f1_keywords: ["type_traits/std::add_const"] From 08108a8c1354963182c02887a7e2c3373c59f27c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 4 Feb 2026 17:30:49 -0800 Subject: [PATCH 270/619] link and acrolinx fixes --- docs/build/run-time-library-behavior.md | 44 ++++++++++++------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/build/run-time-library-behavior.md b/docs/build/run-time-library-behavior.md index 8b772a5e6b5..fbf4bc4c786 100644 --- a/docs/build/run-time-library-behavior.md +++ b/docs/build/run-time-library-behavior.md @@ -7,24 +7,24 @@ helpviewer_keywords: ["DLLs [C++], entry point function", "process detach [C++]" --- # DLLs and Visual C++ runtime library behavior -When you build a Dynamic-link Library (DLL) by using Visual Studio, by default, the linker includes the Visual C++ runtime library (VCRuntime). The VCRuntime contains code required to initialize and terminate a C/C++ executable. When linked into a DLL, the VCRuntime code provides an internal DLL entry-point function called `_DllMainCRTStartup` that handles Windows OS messages to the DLL to attach to or detach from a process or thread. The `_DllMainCRTStartup` function performs essential tasks such as stack buffer security set up, C runtime library (CRT) initialization and termination, and calls to constructors and destructors for static and global objects. `_DllMainCRTStartup` also calls hook functions for other libraries such as WinRT, MFC, and ATL to perform their own initialization and termination. Without this initialization, the CRT and other libraries, as well as your static variables, would be left in an uninitialized state. The same VCRuntime internal initialization and termination routines are called whether your DLL uses a statically linked CRT or a dynamically linked CRT DLL. +When you build a Dynamic-link Library (DLL) by using Visual Studio, by default, the linker includes the Visual C++ runtime library (VCRuntime). The VCRuntime contains code required to initialize and terminate a C/C++ executable. When linked into a DLL, the VCRuntime code provides an internal DLL entry-point function called `_DllMainCRTStartup` that handles Windows OS messages to the DLL to attach to or detach from a process or thread. The `_DllMainCRTStartup` function performs essential tasks such as stack buffer security setup, C runtime library (CRT) initialization and termination, and calls to constructors and destructors for static and global objects. `_DllMainCRTStartup` also calls hook functions for other libraries such as WinRT, MFC, and ATL to perform their own initialization and termination. Without this initialization, the CRT and other libraries, and your static variables, would be left in an uninitialized state. The same VCRuntime internal initialization and termination routines are called whether your DLL uses a statically linked CRT or a dynamically linked CRT DLL. ## Default DLL entry point _DllMainCRTStartup -In Windows, all DLLs can contain an optional entry-point function, usually called `DllMain`, that is called for both initialization and termination. This gives you an opportunity to allocate or release additional resources as needed. Windows calls the entry-point function in four situations: process attach, process detach, thread attach, and thread detach. When a DLL is loaded into a process address space, either when an application that uses it is loaded, or when the application requests the DLL at runtime, the operating system creates a separate copy of the DLL data. This is called *process attach*. *Thread attach* occurs when the process the DLL is loaded in creates a new thread. *Thread detach* occurs when the thread terminates, and *process detach* is when the DLL is no longer required and is released by an application. The operating system makes a separate call to the DLL entry point for each of these events, passing a *reason* argument for each event type. For example, the OS sends `DLL_PROCESS_ATTACH` as the *reason* argument to signal process attach. +In Windows, all DLLs can contain an optional entry-point function, usually called `DllMain`, that is called for both initialization and termination. This gives you an opportunity to allocate or release other resources as needed. Windows calls the entry-point function in four situations: process attach, process detach, thread attach, and thread detach. When a DLL is loaded into a process address space, either when an application that uses it is loaded, or when the application requests the DLL at runtime, the operating system creates a separate copy of the DLL data. This is called *process attach*. *Thread attach* occurs when the process the DLL is loaded in creates a new thread. *Thread detach* occurs when the thread terminates, and *process detach* is when the DLL is no longer required and is released by an application. The operating system makes a separate call to the DLL entry point for each of these events, passing a *reason* argument for each event type. For example, the OS sends `DLL_PROCESS_ATTACH` as the *reason* argument to signal process attach. -The VCRuntime library provides an entry-point function called `_DllMainCRTStartup` to handle default initialization and termination operations. On process attach, the `_DllMainCRTStartup` function sets up buffer security checks, initializes the CRT and other libraries, initializes runtime type information, initializes and calls constructors for static and non-local data, initializes thread-local storage, increments an internal static counter for each attach, and then calls a user- or library-supplied `DllMain`. On process detach, the function goes through these steps in reverse. It calls `DllMain`, decrements the internal counter, calls destructors, calls CRT termination functions and registered `atexit` functions, and notifies any other libraries of termination. When the attachment counter goes to zero, the function returns `FALSE` to indicate to Windows that the DLL can be unloaded. The `_DllMainCRTStartup` function is also called during thread attach and thread detach. In these cases, the VCRuntime code does no additional initialization or termination on its own, and just calls `DllMain` to pass the message along. If `DllMain` returns `FALSE` from process attach, signaling failure, `_DllMainCRTStartup` calls `DllMain` again and passes `DLL_PROCESS_DETACH` as the *reason* argument, then goes through the rest of the termination process. +The VCRuntime library provides an entry-point function called `_DllMainCRTStartup` to handle default initialization and termination operations. On process attach, the `_DllMainCRTStartup` function sets up buffer security checks, initializes the CRT and other libraries, initializes runtime type information, initializes and calls constructors for static and nonlocal data, initializes thread-local storage, increments an internal static counter for each attach, and then calls a user- or library-supplied `DllMain`. On process detach, the function goes through these steps in reverse. It calls `DllMain`, decrements the internal counter, calls destructors, calls CRT termination functions and registered `atexit` functions, and notifies any other libraries of termination. When the attachment counter goes to zero, the function returns `FALSE` to indicate to Windows that the DLL can be unloaded. The `_DllMainCRTStartup` function is also called during thread attach and thread detach. In these cases, the VCRuntime code does no other initialization or termination on its own, and just calls `DllMain` to pass the message along. If `DllMain` returns `FALSE` from process attach, signaling failure, `_DllMainCRTStartup` calls `DllMain` again and passes `DLL_PROCESS_DETACH` as the *reason* argument, then goes through the rest of the termination process. -When building DLLs in Visual Studio, the default entry point `_DllMainCRTStartup` supplied by VCRuntime is linked in automatically. You do not need to specify an entry-point function for your DLL by using the [`/ENTRY` (Entry point symbol)](reference`/ENTRY`-entry-point-symbol.md) linker option. +When building DLLs in Visual Studio, the default entry point `_DllMainCRTStartup` supplied by VCRuntime is linked in automatically. You don't need to specify an entry-point function for your DLL by using the [`/ENTRY` (Entry point symbol)](reference/entry-entry-point-symbol.md) linker option. > [!NOTE] -> While it is possible to specify another entry-point function for a DLL by using the `/ENTRY`: linker option, we do not recommend it, because your entry-point function would have to duplicate everything that `_DllMainCRTStartup` does, in the same order. The VCRuntime provides functions that allow you to duplicate its behavior. For example, you can call [__security_init_cookie](../c-runtime-library/reference/security-init-cookie.md) immediately on process attach to support the [/GS (Buffer security check)](reference/gs-buffer-security-check.md) buffer checking option. You can call the `_CRT_INIT` function, passing the same parameters as the entry point function, to perform the rest of the DLL initialization or termination functions. +> While it's possible to specify another entry-point function for a DLL by using the `/ENTRY`: linker option, we don't recommend it, because your entry-point function would have to duplicate everything that `_DllMainCRTStartup` does, in the same order. The VCRuntime provides functions that allow you to duplicate its behavior. For example, you can call [__security_init_cookie](../c-runtime-library/reference/security-init-cookie.md) immediately on process attach to support the [/GS (Buffer security check)](reference/gs-buffer-security-check.md) buffer checking option. You can call the `_CRT_INIT` function, passing the same parameters as the entry point function, to perform the rest of the DLL initialization or termination functions. ## Initialize a DLL -Your DLL may have initialization code that must execute when your DLL loads. In order for you to perform your own DLL initialization and termination functions, `_DllMainCRTStartup` calls a function called `DllMain` that you can provide. Your `DllMain` must have the signature required for a DLL entry point. The default entry point function `_DllMainCRTStartup` calls `DllMain` using the same parameters passed by Windows. By default, if you do not provide a `DllMain` function, Visual Studio provides one for you and links it in so that `_DllMainCRTStartup` always has something to call. This means that if you do not need to initialize your DLL, there is nothing special you have to do when building your DLL. +Your DLL may have initialization code that must execute when your DLL loads. In order for you to perform your own DLL initialization and termination functions, `_DllMainCRTStartup` calls a function called `DllMain` that you can provide. Your `DllMain` must have the signature required for a DLL entry point. The default entry point function `_DllMainCRTStartup` calls `DllMain` using the same parameters passed by Windows. By default, if you don't provide a `DllMain` function, Visual Studio provides one for you and links it in so that `_DllMainCRTStartup` always has something to call. This means that if you don't need to initialize your DLL, there's nothing special you have to do when building your DLL. This is the signature used for `DllMain`: @@ -37,10 +37,10 @@ extern "C" BOOL WINAPI DllMain ( LPVOID const reserved); // reserved ``` -Some libraries wrap the `DllMain` function for you. For example, in a regular MFC DLL, implement the `CWinApp` object's `InitInstance` and `ExitInstance` member functions to perform initialization and termination required by your DLL. For more details, see the [Initialize regular MFC DLLs](#initializing-regular-dlls) section. +Some libraries wrap the `DllMain` function for you. For example, in a regular MFC DLL, implement the `CWinApp` object's `InitInstance` and `ExitInstance` member functions to perform initialization and termination required by your DLL. For more information, see the [Initialize regular MFC DLLs](#initializing-regular-dlls) section. > [!WARNING] -> There are significant limits on what you can safely do in a DLL entry point. For more information about specific Windows APIs that are unsafe to call in `DllMain`, see [General Best Practices](/windows/win32/Dlls/dynamic-link-library-best-practices). If you need anything but the simplest initialization then do that in an initialization function for the DLL. You can require applications to call the initialization function after `DllMain` has run and before they call any other functions in the DLL. +> There are significant limits on what you can safely do in a DLL entry point. For more information about specific Windows APIs that are unsafe to call in `DllMain`, see [General Best Practices](/windows/win32/Dlls/dynamic-link-library-best-practices). If you need anything but the simplest initialization, then do that in an initialization function for the DLL. You can require applications to call the initialization function after `DllMain` has run and before they call any other functions in the DLL. @@ -81,7 +81,7 @@ extern "C" BOOL WINAPI DllMain ( ``` > [!NOTE] -> Older Windows SDK documentation says that the actual name of the DLL entry-point function must be specified on the linker command-line with the `/ENTRY` option. With Visual Studio, you do not need to use the `/ENTRY` option if the name of your entry-point function is `DllMain`. In fact, if you use the `/ENTRY` option and name your entry-point function something other than `DllMain`, the CRT does not get initialized properly unless your entry-point function makes the same initialization calls that `_DllMainCRTStartup` makes. +> Older Windows SDK documentation says that the actual name of the DLL entry-point function must be specified on the linker command-line with the `/ENTRY` option. With Visual Studio, you don't need to use the `/ENTRY` option if the name of your entry-point function is `DllMain`. In fact, if you use the `/ENTRY` option and name your entry-point function something other than `DllMain`, the CRT does not get initialized properly unless your entry-point function makes the same initialization calls that `_DllMainCRTStartup` makes. ### Manual CRT initialization with `_CRT_INIT` @@ -92,11 +92,11 @@ When building a DLL that uses any of the C runtime libraries, in order to ensure This permits the C runtime libraries to properly allocate and initialize C runtime data when a process or thread is attaching to the DLL, to properly clean up C runtime data when a process is detaching from the DLL, and for global C++ objects in the DLL to be properly constructed and destructed. -The Win32 SDK samples all use the first method. Refer to the Win32 Programmer's Reference for `DllEntryPoint()` and the Visual C++ documentation for `DllMain()`. Note that `DllMainCRTStartup()` calls `_CRT_INIT()` and `_CRT_INIT()` will call your application's `DllMain()`, if it exists. +The Win32 SDK samples all use the first method. Refer to the Win32 Programmer's Reference for `DllEntryPoint()` and the Visual C++ documentation for `DllMain()`. `DllMainCRTStartup()` calls `_CRT_INIT()` and `_CRT_INIT()` calls your application's `DllMain()`, if it exists. If you wish to use the second method and call the CRT initialization code yourself, instead of using `DllMainCRTStartup()` and `DllMain()`, there are two techniques: -1. If there is no entry function that performs initialization code, specify `_CRT_INIT()` as the entry point of the DLL. Assuming that you've included `NTWIN32.MAK`, which defines `DLLENTRY` as `@12`, add the option to the DLL's link line: `-entry:_CRT_INIT$(DLLENTRY)`. +1. If there's no entry function that performs initialization code, specify `_CRT_INIT()` as the entry point of the DLL. Assuming that you've included `NTWIN32.MAK`, which defines `DLLENTRY` as `@12`, add the option to the DLL's link line: `-entry:_CRT_INIT$(DLLENTRY)`. 1. If you do have your own DLL entry point, do the following in the entry point: a. Use this prototype for `_CRT_INIT()`: `BOOL WINAPI _CRT_INIT(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved);` @@ -109,7 +109,7 @@ If you wish to use the second method and call the CRT initialization code yourse d. On `DLL_PROCESS_DETACH` and `DLL_THREAD_DETACH`, call `_CRT_INIT()` last, after all C runtime functions have been called and all floating-point operations are completed. -Be sure to pass on to `_CRT_INIT()` all of the parameters of the entry point; `_CRT_INIT()` expects those parameters, so things may not work reliably if they are omitted (in particular, `fdwReason` is required to determine whether process initialization or termination is needed). +Be sure to pass on to `_CRT_INIT()` all of the parameters of the entry point; `_CRT_INIT()` expects those parameters, so things may not work reliably if they're omitted (in particular, `fdwReason` is required to determine whether process initialization or termination is needed). Below is a skeleton sample entry point function that shows when and how to make these calls to `_CRT_INIT()` in the DLL entry point: @@ -129,11 +129,11 @@ BOOL WINAPI DllEntryPoint(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved ``` > [!NOTE] -> This is not necessary if you are using `DllMain()` and `-entry:_DllMainCRTStartup@12`. +> This isn't necessary if you're using `DllMain()` and `-entry:_DllMainCRTStartup@12`. ### Using NTWIN32.MAK to simplify the build process -There are macros defined in `NTWIN32.MAK` that can be used to simplify your makefiles and to ensure that they are properly built to avoid conflicts. For this reason, Microsoft highly recommends using `NTWIN32.MAK `and its macros. +There are macros defined in `NTWIN32.MAK` that can be used to simplify your makefiles and to ensure that they're properly built to avoid conflicts. For this reason, Microsoft highly recommends using `NTWIN32.MAK `and its macros. For compilation, use: `$(cvarsdll)` for apps/DLLs using CRT in a DLL. @@ -146,11 +146,11 @@ For linking, use one of the following: ### Initialize regular MFC DLLs -Because regular MFC DLLs have a `CWinApp` object, they should perform their initialization and termination tasks in the same location as an MFC application: in the `InitInstance` and `ExitInstance` member functions of the DLL's `CWinApp`-derived class. Because MFC provides a `DllMain` function that is called by `_DllMainCRTStartup` for `DLL_PROCESS_ATTACH` and `DLL_PROCESS_DETACH`, you should not write your own `DllMain` function. The MFC-provided `DllMain` function calls `InitInstance` when your DLL is loaded and it calls `ExitInstance` before the DLL is unloaded. +Because regular MFC DLLs have a `CWinApp` object, they should perform their initialization and termination tasks in the same location as an MFC application: in the `InitInstance` and `ExitInstance` member functions of the DLL's `CWinApp`-derived class. Because MFC provides a `DllMain` function that is called by `_DllMainCRTStartup` for `DLL_PROCESS_ATTACH` and `DLL_PROCESS_DETACH`, you shouldn't write your own `DllMain` function. The MFC-provided `DllMain` function calls `InitInstance` when your DLL is loaded and it calls `ExitInstance` before the DLL is unloaded. A regular MFC DLL can keep track of multiple threads by calling [TlsAlloc](/windows/win32/api/processthreadsapi/nf-processthreadsapi-tlsalloc) and [TlsGetValue](/windows/win32/api/processthreadsapi/nf-processthreadsapi-tlsgetvalue) in its `InitInstance` function. These functions allow the DLL to track thread-specific data. -In your regular MFC DLL that dynamically links to MFC, if you are using any MFC OLE, MFC Database (or DAO), or MFC Sockets support, respectively, the debug MFC extension DLLs MFCO*version*D.dll, MFCD*version*D.dll, and MFCN*version*D.dll (where *version* is the version number) are linked in automatically. You must call one of the following predefined initialization functions for each of these DLLs that you are using in your regular MFC DLL's `CWinApp::InitInstance`. +In your regular MFC DLL that dynamically links to MFC, if you're using any MFC OLE, MFC Database (or DAO), or MFC Sockets support, respectively, the debug MFC extension DLLs MFCO*version*D.dll, MFCD*version*D.dll, and MFCN*version*D.dll (where *version* is the version number) are linked in automatically. You must call one of the following predefined initialization functions for each of these DLLs that you're using in your regular MFC DLL's `CWinApp::InitInstance`. |Type of MFC support|Initialization function to call| |-------------------------|-------------------------------------| @@ -162,7 +162,7 @@ In your regular MFC DLL that dynamically links to MFC, if you are using any MFC ### Initialize MFC extension DLLs -Because MFC extension DLLs do not have a `CWinApp`-derived object (as do regular MFC DLLs), you should add your initialization and termination code to the `DllMain` function that the MFC DLL Wizard generates. +Because MFC extension DLLs don't have a `CWinApp`-derived object (as do regular MFC DLLs), you should add your initialization and termination code to the `DllMain` function that the MFC DLL Wizard generates. The wizard provides the following code for MFC extension DLLs. In the code, `PROJNAME` is a placeholder for the name of your project. @@ -201,11 +201,11 @@ DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) Creating a new `CDynLinkLibrary` object during initialization allows the MFC extension DLL to export `CRuntimeClass` objects or resources to the client application. -If you are going to use your MFC extension DLL from one or more regular MFC DLLs, you must export an initialization function that creates a `CDynLinkLibrary` object. That function must be called from each of the regular MFC DLLs that use the MFC extension DLL. An appropriate place to call this initialization function is in the `InitInstance` member function of the regular MFC DLL's `CWinApp`-derived object before using any of the MFC extension DLL's exported classes or functions. +If you're going to use your MFC extension DLL from one or more regular MFC DLLs, you must export an initialization function that creates a `CDynLinkLibrary` object. That function must be called from each of the regular MFC DLLs that use the MFC extension DLL. An appropriate place to call this initialization function is in the `InitInstance` member function of the regular MFC DLL's `CWinApp`-derived object before using any of the MFC extension DLL's exported classes or functions. -In the `DllMain` that the MFC DLL Wizard generates, the call to `AfxInitExtensionModule` captures the module's runtime classes (`CRuntimeClass` structures) as well as its object factories (`COleObjectFactory` objects) for use when the `CDynLinkLibrary` object is created. You should check the return value of `AfxInitExtensionModule`; if a zero value is returned from `AfxInitExtensionModule`, return zero from your `DllMain` function. +In the `DllMain` that the MFC DLL Wizard generates, the call to `AfxInitExtensionModule` captures the module's runtime classes (`CRuntimeClass` structures) and its object factories (`COleObjectFactory` objects) for use when the `CDynLinkLibrary` object is created. You should check the return value of `AfxInitExtensionModule`; if a zero value is returned from `AfxInitExtensionModule`, return zero from your `DllMain` function. -If your MFC extension DLL will be explicitly linked to an executable (meaning the executable calls `AfxLoadLibrary` to link to the DLL), you should add a call to `AfxTermExtensionModule` on `DLL_PROCESS_DETACH`. This function allows MFC to clean up the MFC extension DLL when each process detaches from the MFC extension DLL (which happens when the process exits or when the DLL is unloaded as a result of a `AfxFreeLibrary` call). If your MFC extension DLL will be linked implicitly to the application, the call to `AfxTermExtensionModule` is not necessary. +If your MFC extension DLL is explicitly linked to an executable (meaning the executable calls `AfxLoadLibrary` to link to the DLL), you should add a call to `AfxTermExtensionModule` on `DLL_PROCESS_DETACH`. This function allows MFC to clean up the MFC extension DLL when each process detaches from the MFC extension DLL (which happens when the process exits or when the DLL is unloaded as a result of a `AfxFreeLibrary` call). If your MFC extension DLL is linked implicitly to the application, the call to `AfxTermExtensionModule` isn't necessary. Applications that explicitly link to MFC extension DLLs must call `AfxTermExtensionModule` when freeing the DLL. They should also use `AfxLoadLibrary` and `AfxFreeLibrary` (instead of the Win32 functions `LoadLibrary` and `FreeLibrary`) if the application uses multiple threads. Using `AfxLoadLibrary` and `AfxFreeLibrary` ensures that the startup and shutdown code that executes when the MFC extension DLL is loaded and unloaded does not corrupt the global MFC state. @@ -213,10 +213,10 @@ Because the MFCx0.dll is fully initialized by the time `DllMain` is called, you Extension DLLs can take care of multithreading by handling the `DLL_THREAD_ATTACH` and `DLL_THREAD_DETACH` cases in the `DllMain` function. These cases are passed to `DllMain` when threads attach and detach from the DLL. Calling [TlsAlloc](/windows/win32/api/processthreadsapi/nf-processthreadsapi-tlsalloc) when a DLL is attaching allows the DLL to maintain thread local storage (TLS) indexes for every thread attached to the DLL. -Note that the header file Afxdllx.h contains special definitions for structures used in MFC extension DLLs, such as the definition for `AFX_EXTENSION_MODULE` and `CDynLinkLibrary`. You should include this header file in your MFC extension DLL. +The header file `Afxdllx.h` contains special definitions for structures used in MFC extension DLLs, such as the definition for `AFX_EXTENSION_MODULE` and `CDynLinkLibrary`. You should include this header file in your MFC extension DLL. > [!NOTE] -> It is important that you neither define nor undefine any of the `_AFX_NO_XXX` macros in *pch.h* (*stdafx.h* in Visual Studio 2017 and earlier). These macros exist only for the purpose of checking whether a particular target platform supports that feature or not. You can write your program to check these macros (for example, `#ifndef _AFX_NO_OLE_SUPPORT`), but your program should never define or undefine these macros. +> It's important that you neither define nor undefine any of the `_AFX_NO_XXX` macros in *pch.h* (*stdafx.h* in Visual Studio 2017 and earlier). These macros exist only to check whether a particular target platform supports that feature or not. You can write your program to check these macros (for example, `#ifndef _AFX_NO_OLE_SUPPORT`), but your program should never define or undefine these macros. A sample initialization function that handles multithreading is included in [Using Thread Local Storage in a Dynamic-Link Library](/windows/win32/Dlls/using-thread-local-storage-in-a-dynamic-link-library) in the Windows SDK. Note that the sample contains an entry-point function called `LibMain`, but you should name this function `DllMain` so that it works with the MFC and C runtime libraries. From 36c7f47ef1feac7e798966bc40277da79e895e86 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 11:22:12 -0800 Subject: [PATCH 271/619] update alt-text --- docs/porting/copilot-app-modernization-cpp.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/porting/copilot-app-modernization-cpp.md b/docs/porting/copilot-app-modernization-cpp.md index baf39363b46..dcd24ad1831 100644 --- a/docs/porting/copilot-app-modernization-cpp.md +++ b/docs/porting/copilot-app-modernization-cpp.md @@ -29,7 +29,7 @@ GitHub Copilot app modernization for C++ is enabled by default. To disable or ex 1. Select (to enable) or clear (to disable) the checkbox for **Enable GitHub Copilot app modernization for C++ (preview)**. 1. Restart Visual Studio for the setting change to take effect. -![Screenshot of the settings to enable GitHub Copilot app modernization for C++.](media/enable-copilot-app-modernization-cpp.png "enable GitHub Copilot app modernization for C++") +:::image type="content" source="media/enable-copilot-app-modernization-cpp.png" alt-text="Screenshot of Visual Studio Options dialog. GitHub > Copilot > C/C++ settings are visible. The app modernization for C++ checkbox is enabled."::: ## Upgrade your codebase by using GitHub Copilot app modernization for C++ @@ -41,7 +41,7 @@ GitHub Copilot app modernization is an agent that operates inside the GitHub Cop - **From the Solution Explorer context menu**: Right-click on the solution or a loaded project in the Solution Explorer, and choose **Modernize** from the context menu. This automatically launches a GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. -![Screenshot of the context menu to start GitHub Copilot app modernization.](media/copilot-app-modernization-context-menu.png "Start GitHub Copilot app modernization") +:::image type="content" source="media/copilot-app-modernization-context-menu.png" alt-text="Screenshot of Visual Studio Solution Explorer showing a right-click context menu with Modernize selected to start the Copilot agent."::: - **From GitHub Copilot Chat**: Open the GitHub Copilot Chat Window by selecting **View > GitHub Copilot Chat**. After the GitHub Copilot Chat window opens, mention `@Modernize` in a prompt to activate the Modernize agent. For example, type this prompt: @@ -70,12 +70,12 @@ Once the Modernize agent is active, you can instruct it via a prompt to upgrade :::row::: :::column::: -![Screenshot of GitHub Copilot app modernization window with MSVC upgrade ice breaker for an MSBuild project.](media/app-modernization-msbuild-ice-breaker.png "GitHub Copilot app modernization window") +:::image type="content" source="media/app-modernization-msbuild-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to App Modernization experience and Upgrade MSVC Build Tools to the latest version is highlighted."::: :::column-end::: :::column::: -![Screenshot of GitHub Copilot app modernization window with MSVC upgrade ice breaker for a CMake project.](media/app-modernization-cmake-ice-breaker.png "GitHub Copilot app modernization window") +:::image type="content" source="media/app-modernization-cmake-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to App Modernization experience and Resolve build issues by migrating to modern alternatives is highlighted"::: :::column-end::: :::row-end::: From 2d7776b215648f9f6488f2291422e46fcbea38e3 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 11:25:15 -0800 Subject: [PATCH 272/619] acrolinx --- docs/porting/copilot-app-modernization-cpp.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/porting/copilot-app-modernization-cpp.md b/docs/porting/copilot-app-modernization-cpp.md index dcd24ad1831..24148ed7020 100644 --- a/docs/porting/copilot-app-modernization-cpp.md +++ b/docs/porting/copilot-app-modernization-cpp.md @@ -53,7 +53,7 @@ The first time that you load a `.vcxproj` project that targets an earlier versio ### Start the upgrade -Once the Modernize agent is active, you can instruct it via a prompt to upgrade your MSVC Build Tools, or select the already constructed prompt from the list shown in the window. If you launched the agent directly in the GitHub Copilot Chat window by mentioning @Modernize in your prompt, you probably don't need to provide any additional prompting. +Once the Modernize agent is active, you can instruct it via a prompt to upgrade your MSVC Build Tools, or select the already constructed prompt from the list shown in the window. If you launched the agent directly in the GitHub Copilot Chat window by mentioning `@Modernize` in your prompt, you probably don't need to provide more prompting. :::row::: :::column::: @@ -83,13 +83,13 @@ Once the Modernize agent is active, you can instruct it via a prompt to upgrade ### Assessment stage -The agent first assesses what kinds of problems show up after upgrading. If you didn't already upgrade the project, the agent guides you through that process before creating its assessment. After ensuring that your project is upgraded, the agent builds your codebase, analyzes the reported warnings and errors, and generates an `assessment.md` file that describes the problems that it found, their severity, and other useful information. This is your opportunity to tell the agent any additional context that could help it make a plan. +The agent first assesses what kinds of problems show up after upgrading. If you didn't already upgrade the project, the agent guides you through that process before creating its assessment. After ensuring that your project is upgraded, the agent builds your codebase, analyzes the reported warnings and errors, and generates an `assessment.md` file that describes the problems that it found, their severity, and other useful information. This is your opportunity to tell the agent any other context that could help it make a plan. -One of the things you might choose to do here is to tell the agent not to fix certain discovered problems, because you know that resolving them involves some strategic decisions or because they were preexisting warnings that you decided are acceptable for your project. You should carefully read through the plan, making sure to provide that additional context where it is needed. Once you approve the assessment, the agent moves on to creating a concrete plan on addressing the problems. +One of the things you might choose to do here is to tell the agent not to fix certain discovered problems, because you know that resolving them involves some strategic decisions or because they were preexisting warnings that you decided are acceptable for your project. You should carefully read through the plan, making sure to provide that extra context where it is needed. Once you approve the assessment, the agent moves on to creating a concrete plan on addressing the problems. ### Planning stage -Based on the approved assessment and any additional context or instructions you provide, the agent creates a `plan.md` file that proposes a detailed plan for resolving each of the identified problems. If the agent produces a plan that doesn't match your organization's coding style or practices, you can provide that guidance to the agent and have it solve the problem differently. After you agree on the plan, the agent moves to the execution stage. +Based on the approved assessment and any other context or instructions you provide, the agent creates a `plan.md` file that proposes a detailed plan for resolving each of the identified problems. If the agent produces a plan that doesn't match your organization's coding style or practices, you can provide that guidance to the agent and have it solve the problem differently. After you agree on the plan, the agent moves to the execution stage. ### Execution stage From 8c9accdaa6d2532bfc73c61bebb8ffc00479755d Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 11:26:41 -0800 Subject: [PATCH 273/619] fix link --- docs/porting/copilot-app-modernization-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/porting/copilot-app-modernization-cpp.md b/docs/porting/copilot-app-modernization-cpp.md index 24148ed7020..9d8ab2b609b 100644 --- a/docs/porting/copilot-app-modernization-cpp.md +++ b/docs/porting/copilot-app-modernization-cpp.md @@ -49,7 +49,7 @@ GitHub Copilot app modernization is an agent that operates inside the GitHub Cop #### For MSBuild-based codebases targeting an earlier version of MSVC Build Tools -The first time that you load a `.vcxproj` project that targets an earlier version of the MSVC Build Tools, you see an option to [upgrade project settings to use a newer version of the MSVC Build Tools](https://learn.microsoft.com/visualstudio/install/setup-assistant). If you retarget any of your projects to a new version of MSVC Build Tools and GitHub Copilot app modernization for C++ is enabled, you receive an infobar in Visual Studio prompting you to use GitHub Copilot app modernization for C++ to resolve any newly introduced build problems. Selecting **Run GitHub Copilot app modernization for C++** launches the GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. +The first time that you load a `.vcxproj` project that targets an earlier version of the MSVC Build Tools, you see an option to [upgrade project settings to use a newer version of the MSVC Build Tools](/visualstudio/install/setup-assistant). If you retarget any of your projects to a new version of MSVC Build Tools and GitHub Copilot app modernization for C++ is enabled, you receive an infobar in Visual Studio prompting you to use GitHub Copilot app modernization for C++ to resolve any newly introduced build problems. Selecting **Run GitHub Copilot app modernization for C++** launches the GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. ### Start the upgrade From 142991a57ce19bf9e048e84c793b5b7465ecf206 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 11:39:20 -0800 Subject: [PATCH 274/619] address customer issue --- docs/cpp/inline-functions-cpp.md | 42 +++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/docs/cpp/inline-functions-cpp.md b/docs/cpp/inline-functions-cpp.md index edfd41def2e..ebe06cadee4 100644 --- a/docs/cpp/inline-functions-cpp.md +++ b/docs/cpp/inline-functions-cpp.md @@ -1,7 +1,7 @@ --- title: "Inline Functions (C++)" description: "The C++ inline keyword can be used to suggest inline functions to the compiler." -ms.date: 12/07/2023 +ms.date: 02/05/2026 f1_keywords: ["__forceinline_cpp", "__inline_cpp", "inline_cpp", "__inline", "_inline", "__forceinline", "_forceinline"] helpviewer_keywords: ["inline functions [C++], class members"] --- @@ -13,11 +13,45 @@ In theory, using inline functions can make your program faster because they elim Inline code substitution is done at the compiler's discretion. For example, the compiler won't inline a function if its address is taken or if the compiler decides it's too large. -A function defined in the body of a class declaration is implicitly an inline function. +## The `inline` keyword and the One Definition Rule (ODR) -## Example +The original meaning of **`inline`** is a hint to the compiler to prefer code expansion at the call site over function call instructions. This remains one of the meanings of **`inline`**. -In the following class declaration, the `Account` constructor is an inline function because it is defined in the body of the class declaration. The member functions `GetBalance`, `Deposit`, and `Withdraw` are specified `inline` in their definitions. The `inline` keyword is optional in the function declarations in the class declaration. +However, the **`inline`** keyword also has implications for the One Definition Rule (ODR). Normally, a function can only be defined once across all translation units. When a function is marked **`inline`**, it can be defined in multiple translation units (typically via a header file), provided that all definitions are identical. The linker then selects one definition and discards the duplicates rather than reporting an error. + +This dual nature of **`inline`**—as both an optimization hint and an ODR mechanism—can cause confusion. The ODR aspect is a practical necessity where the same header (containing an inline function definition) may be included in multiple source files. + +## Implicitly inline functions + +Certain functions are implicitly **`inline`** without requiring the keyword: + +- **Functions defined at class scope**: A function defined in the body of a class declaration is implicitly an inline function. This allows small accessor functions and efficient abstractions to be defined directly in class definitions without incurring function call overhead—a priority since the early days of C++. + +- **`constexpr` functions**: Functions declared **`constexpr`** (introduced in C++11) are implicitly **`inline`**. Because **`constexpr`** functions are typically defined in header files to allow compile-time evaluation, they must follow the same ODR rules as inline functions. + +- **`consteval` functions**: Functions declared **`consteval`** (introduced in C++20) are implicitly **`inline`**. + +## Inline variables (C++17) + +C++17 extended the **`inline`** keyword to variables. An **`inline`** variable can be defined in multiple translation units, and like inline functions, the linker selects one definition and discards the rest. This extension applies to the ODR aspect of **`inline`**, not the code-expansion aspect, which only applies to functions. + +Inline variables are useful for defining constants or static data members in header files: + +```cpp +// constants.h +inline constexpr double pi = 3.14159265358979323846; + +struct MyClass +{ + static inline int instanceCount = 0; // Can be defined in header +}; +``` + +Before C++17, such variables required a separate definition in a single source file to avoid linker errors. + +## Example: Inline class member functions + +In the following class declaration, the `Account` constructor is an inline function because it's defined in the body of the class declaration. The member functions `GetBalance`, `Deposit`, and `Withdraw` are specified **`inline`** in their definitions. The **`inline`** keyword is optional in the function declarations in the class declaration. ```cpp // account.h From 433722dd85f2344bb54c1a22a1dd9833625a546b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 15:05:14 -0800 Subject: [PATCH 275/619] extend to include msft attributes --- docs/cpp/inline-functions-cpp.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/docs/cpp/inline-functions-cpp.md b/docs/cpp/inline-functions-cpp.md index ebe06cadee4..e01c3956de8 100644 --- a/docs/cpp/inline-functions-cpp.md +++ b/docs/cpp/inline-functions-cpp.md @@ -25,7 +25,7 @@ This dual nature of **`inline`**—as both an optimization hint and an ODR mecha Certain functions are implicitly **`inline`** without requiring the keyword: -- **Functions defined at class scope**: A function defined in the body of a class declaration is implicitly an inline function. This allows small accessor functions and efficient abstractions to be defined directly in class definitions without incurring function call overhead—a priority since the early days of C++. +- **Functions defined at class scope**: A function defined in the body of a class declaration is implicitly an inline function. This allows small accessor functions and to be defined directly in class definitions without incurring function call overhead—a priority since the early days of C++. - **`constexpr` functions**: Functions declared **`constexpr`** (introduced in C++11) are implicitly **`inline`**. Because **`constexpr`** functions are typically defined in header files to allow compile-time evaluation, they must follow the same ODR rules as inline functions. @@ -33,7 +33,7 @@ Certain functions are implicitly **`inline`** without requiring the keyword: ## Inline variables (C++17) -C++17 extended the **`inline`** keyword to variables. An **`inline`** variable can be defined in multiple translation units, and like inline functions, the linker selects one definition and discards the rest. This extension applies to the ODR aspect of **`inline`**, not the code-expansion aspect, which only applies to functions. +C++17 extended the **`inline`** keyword to variables. An **`inline`** variable can be defined in multiple translation units, and like inline functions, the linker selects one definition and discards the rest. Inline variables are useful for defining constants or static data members in header files: @@ -102,7 +102,7 @@ The **`inline`** and **`__inline`** specifiers suggest to the compiler that it i The insertion, called *inline expansion* or *inlining*, occurs only if the compiler's own cost-benefit analysis shows it's worthwhile. Inline expansion minimizes the function-call overhead at the potential cost of larger code size. -The **`__forceinline`** keyword overrides the cost-benefit analysis and relies on the judgment of the programmer instead. Exercise caution when using **`__forceinline`**. Indiscriminate use of **`__forceinline`** can result in larger code with only marginal performance gains or, in some cases, even performance losses (because of the increased paging of a larger executable, for example). +The **`__forceinline`** keyword (or [`[msvc::forceinline]`](/cpp/cpp/attributes#msvcforceinline) attribute) overrides the cost-benefit analysis and relies on the judgment of the programmer instead. Exercise caution when using **`__forceinline`**. Indiscriminate use of **`__forceinline`** can result in larger code with only marginal performance gains or, in some cases, even performance losses (because of the increased paging of a larger executable, for example). The compiler treats the inline expansion options and keywords as suggestions. There's no guarantee that functions will be inlined. You can't force the compiler to inline a particular function, even with the **`__forceinline`** keyword. When you compile with **`/clr`**, the compiler won't inline a function if there are security attributes applied to the function. @@ -174,6 +174,14 @@ If the compiler can't inline a function declared with **`__forceinline`**, it ge Recursive functions can be replaced with inline code to a depth specified by the [`inline_depth`](../preprocessor/inline-depth.md) pragma, up to a maximum of 16 calls. After that depth, recursive function calls are treated as calls to an instance of the function. The depth to which recursive functions are examined by the inline heuristic can't exceed 16. The [`inline_recursion`](../preprocessor/inline-recursion.md) pragma controls the inline expansion of a function currently under expansion. See the [Inline-Function Expansion](../build/reference/ob-inline-function-expansion.md) (/Ob) compiler option for related information. +The C++ Standard defines a common set of attributes. It also allows compiler vendors to define their own attributes within a vendor-specific (in our case, `msvc`) namespace. The following Microsoft-specific attributes can be used to control inlining behavior: + +[`[msvc::forceinline]`](/cpp/cpp/attributes#msvcforceinline): Has the same meaning as **`__forceinline`**.\ +[`[msvc::forceinline_calls]`](/cpp/cpp/attributes#msvcforceinline_calls): Can be placed on or before a statement or block to cause the inline heuristic to force-inline all calls in that statement or block.\ +[`[msvc::flatten]`](/cpp/cpp/attributes#msvcflatten): Similar to `[[msvc::forceinline_calls]]`, but recursively force-inlines all calls in the scope it's applied to until no calls are left.\ +[`[msvc::noinline]`](/cpp/cpp/attributes#msvcnoinline): When placed before a function declaration, has the same meaning as `__declspec(noinline)`.\ +[`[msvc::noinline_calls]`](/cpp/cpp/attributes#msvcnoinline_calls): Can be placed before any statement or block to turn off inlining for all calls in the scope it's applied to. + **END Microsoft Specific** For more information on using the **`inline`** specifier, see: @@ -306,4 +314,9 @@ In this example, the function `increment` is called twice as the expression `sqr ## See also [`noinline`](../cpp/noinline.md)\ -[`auto_inline`](../preprocessor/auto-inline.md) +[`auto_inline`](../preprocessor/auto-inline.md)\ +[`[msvc::forceinline]`](/cpp/cpp/attributes#msvcforceinline)\ +[`[msvc::forceinline_calls]`](/cpp/cpp/attributes#msvcforceinline_calls)\ +[`[msvc::flatten]`](/cpp/cpp/attributes#msvcflatten)\ +[`[msvc::nolinline]`](/cpp/cpp/attributes#msvcnoinline)\ +[`[msvc::nolinline_calls]`](/cpp/cpp/attributes#msvcnoinline_calls) \ No newline at end of file From e3b47739e6ca79fcb7f606ccd60cb2e612f28bdf Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 15:22:11 -0800 Subject: [PATCH 276/619] extend to include msft attributes --- docs/cpp/inline-functions-cpp.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/docs/cpp/inline-functions-cpp.md b/docs/cpp/inline-functions-cpp.md index e01c3956de8..25b31d277fc 100644 --- a/docs/cpp/inline-functions-cpp.md +++ b/docs/cpp/inline-functions-cpp.md @@ -106,7 +106,7 @@ The **`__forceinline`** keyword (or [`[msvc::forceinline]`](/cpp/cpp/attributes# The compiler treats the inline expansion options and keywords as suggestions. There's no guarantee that functions will be inlined. You can't force the compiler to inline a particular function, even with the **`__forceinline`** keyword. When you compile with **`/clr`**, the compiler won't inline a function if there are security attributes applied to the function. -For compatibility with previous versions, **`_inline`** and **`_forceinline`** are synonyms for **`__inline`** and **`__forceinline`**, respectively, unless compiler option [`/Za` \(Disable language extensions)](../build/reference/za-ze-disable-language-extensions.md) is specified. +For compatibility with previous versions, **`_inline`** and **`_forceinline`** are synonyms for **`__inline`** and **`__forceinline`** (two leading underscores), respectively, unless compiler option [`/Za` \(Disable language extensions)](../build/reference/za-ze-disable-language-extensions.md) is specified. The **`inline`** keyword tells the compiler that inline expansion is preferred. However, the compiler can ignore it. Two cases where this behavior can happen are: @@ -176,11 +176,16 @@ Recursive functions can be replaced with inline code to a depth specified by the The C++ Standard defines a common set of attributes. It also allows compiler vendors to define their own attributes within a vendor-specific (in our case, `msvc`) namespace. The following Microsoft-specific attributes can be used to control inlining behavior: -[`[msvc::forceinline]`](/cpp/cpp/attributes#msvcforceinline): Has the same meaning as **`__forceinline`**.\ -[`[msvc::forceinline_calls]`](/cpp/cpp/attributes#msvcforceinline_calls): Can be placed on or before a statement or block to cause the inline heuristic to force-inline all calls in that statement or block.\ -[`[msvc::flatten]`](/cpp/cpp/attributes#msvcflatten): Similar to `[[msvc::forceinline_calls]]`, but recursively force-inlines all calls in the scope it's applied to until no calls are left.\ -[`[msvc::noinline]`](/cpp/cpp/attributes#msvcnoinline): When placed before a function declaration, has the same meaning as `__declspec(noinline)`.\ -[`[msvc::noinline_calls]`](/cpp/cpp/attributes#msvcnoinline_calls): Can be placed before any statement or block to turn off inlining for all calls in the scope it's applied to. +## Microsoft-specific attributes for controlling inlining behavior + + +|Attribute | Meaning | +|---------|---------| +| [`[msvc::forceinline]`](/cpp/cpp/attributes#msvcforceinline)| Has the same meaning as **`__forceinline`**.| +| [`[msvc::forceinline_calls]`](/cpp/cpp/attributes#msvcforceinline_calls) | Can be placed on or before a statement or block to cause the inline heuristic to force-inline all calls in that statement or block.| +| [`[msvc::flatten]`](/cpp/cpp/attributes#msvcflatten) | Similar to `[[msvc::forceinline_calls]]`, but recursively force-inlines all calls in the scope it's applied to until no calls are left. | +| [`[msvc::noinline]`](/cpp/cpp/attributes#msvcnoinline) | When placed before a function declaration, has the same meaning as `__declspec(noinline)`. | +| [`[msvc::noinline_calls]`](/cpp/cpp/attributes#msvcnoinline_calls) | Can be placed before any statement or block to turn off inlining for all calls in the scope it's applied to. | **END Microsoft Specific** From ab27d2ba19dfd5fa0298a66826030f2c0244496e Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Feb 2026 15:30:51 -0800 Subject: [PATCH 277/619] acrolinx --- docs/cpp/inline-functions-cpp.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/cpp/inline-functions-cpp.md b/docs/cpp/inline-functions-cpp.md index 25b31d277fc..f67599ff01b 100644 --- a/docs/cpp/inline-functions-cpp.md +++ b/docs/cpp/inline-functions-cpp.md @@ -11,13 +11,13 @@ The **`inline`** keyword suggests that the compiler substitute the code within t In theory, using inline functions can make your program faster because they eliminate the overhead associated with function calls. Calling a function requires pushing the return address on the stack, pushing arguments onto the stack, jumping to the function body, and then executing a return instruction when the function finishes. This process is eliminated by inlining the function. The compiler also has different opportunities to optimize functions expanded inline versus those that aren't. A tradeoff of inline functions is that the overall size of your program can increase. -Inline code substitution is done at the compiler's discretion. For example, the compiler won't inline a function if its address is taken or if the compiler decides it's too large. +Inline code substitution is done at the compiler's discretion. For example, the compiler doesn't inline a function if its address is taken or if the compiler decides it's too large. ## The `inline` keyword and the One Definition Rule (ODR) The original meaning of **`inline`** is a hint to the compiler to prefer code expansion at the call site over function call instructions. This remains one of the meanings of **`inline`**. -However, the **`inline`** keyword also has implications for the One Definition Rule (ODR). Normally, a function can only be defined once across all translation units. When a function is marked **`inline`**, it can be defined in multiple translation units (typically via a header file), provided that all definitions are identical. The linker then selects one definition and discards the duplicates rather than reporting an error. +However, the **`inline`** keyword also has implications for the One Definition Rule (ODR). Normally, a function can only be defined once across all translation units. When a function is marked **`inline`**, it can be defined in multiple translation units (typically via a header file) if all the definitions are identical. The linker then selects one definition and discards the duplicates rather than reporting an error. This dual nature of **`inline`**—as both an optimization hint and an ODR mechanism—can cause confusion. The ODR aspect is a practical necessity where the same header (containing an inline function definition) may be included in multiple source files. @@ -94,7 +94,7 @@ inline double Account::Withdraw(double amount) A given inline member function must be declared the same way in every compilation unit. There must be exactly one definition of an inline function. -A class member function defaults to external linkage unless a definition for that function contains the **`inline`** specifier. The preceding example shows that you don't have to declare these functions explicitly with the **`inline`** specifier. Using **`inline`** in the function definition suggests to the compiler that it be treated as an inline function. However, you can't redeclare a function as **`inline`** after a call to that function. +A class member function defaults to external linkage unless a definition for that function contains the **`inline`** specifier. The preceding example shows that you don't have to declare these functions explicitly with the **`inline`** specifier. Using **`inline`** in the function definition suggests to the compiler to treat it as an inline function. However, you can't redeclare a function as **`inline`** after a call to that function. ## `inline`, `__inline`, and `__forceinline` @@ -178,7 +178,6 @@ The C++ Standard defines a common set of attributes. It also allows compiler ven ## Microsoft-specific attributes for controlling inlining behavior - |Attribute | Meaning | |---------|---------| | [`[msvc::forceinline]`](/cpp/cpp/attributes#msvcforceinline)| Has the same meaning as **`__forceinline`**.| @@ -275,8 +274,8 @@ int main() Here are some of the differences between the macro and the inline function: -- Macros are always expanded inline. However, an inline function is only inlined when the compiler determines it is the optimal thing to do. -- The macro may result in unexpected behavior, which can lead to subtle bugs. For example, the expression `mult1(2 + 2, 3 + 3)` expands to `2 + 2 * 3 + 3` which evaluates to 11, but the expected result is 24. A seemingly valid fix is to add parentheses around both arguments of the function macro, resulting in `#define mult2(a, b) (a) * (b)`, which will solve the issue at hand but can still cause surprising behavior when part of a larger expression. That was demonstrated in the preceding example, and the problem could be addressed by defining the macro as such `#define mult3(a, b) ((a) * (b))`. +- Macros are always expanded inline. However, an inline function is only inlined when the compiler determines it's the optimal thing to do. +- The macro may result in unexpected behavior, which can lead to subtle bugs. For example, the expression `mult1(2 + 2, 3 + 3)` expands to `2 + 2 * 3 + 3` which evaluates to 11, but the expected result is 24. A seemingly valid fix is to add parentheses around both arguments of the function macro, resulting in `#define mult2(a, b) (a) * (b)`, which solves the issue at hand but can still cause surprising behavior when part of a larger expression. That was demonstrated in the preceding example, and the problem could be addressed by defining the macro as such `#define mult3(a, b) ((a) * (b))`. - An inline function is subject to semantic processing by the compiler, whereas the preprocessor expands macros without that same benefit. Macros aren't type-safe, whereas functions are. - Expressions passed as arguments to inline functions are evaluated once. In some cases, expressions passed as arguments to macros can be evaluated more than once. For example, consider the following: From bb6f51b928313d4ab995effc69c30ba4d754c6ad Mon Sep 17 00:00:00 2001 From: Tapasya Gutta Date: Fri, 6 Feb 2026 19:53:02 +0530 Subject: [PATCH 278/619] Make the example about top() much more clear Updated the stack example to push the value 3 instead of 2 avoid ambiguity and modified the output messages accordingly. --- docs/standard-library/stack-class.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/standard-library/stack-class.md b/docs/standard-library/stack-class.md index 12a610f22ee..78fc4b388aa 100644 --- a/docs/standard-library/stack-class.md +++ b/docs/standard-library/stack-class.md @@ -377,7 +377,7 @@ int main( ) stack s1; s1.push( 1 ); - s1.push( 2 ); + s1.push( 3 ); int& i = s1.top( ); const int& ii = s1.top( ); @@ -385,13 +385,13 @@ int main( ) cout << "The top integer of the stack s1 is " << i << "." << endl; i--; - cout << "The next integer down is "<< ii << "." << endl; + cout << "The updated top integer is "<< ii << "." << endl; } ``` ```Output -The top integer of the stack s1 is 2. -The next integer down is 1. +The top integer of the stack s1 is 3. +The updated top integer is 2. ``` ## `value_type` From a28fef9b503e45f27d6ce14ca04b80302cb0c9fd Mon Sep 17 00:00:00 2001 From: Tapasya Gutta Date: Fri, 6 Feb 2026 21:22:29 +0530 Subject: [PATCH 279/619] Formatting - Add space for readability. Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/standard-library/stack-class.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standard-library/stack-class.md b/docs/standard-library/stack-class.md index 78fc4b388aa..8a30a18989f 100644 --- a/docs/standard-library/stack-class.md +++ b/docs/standard-library/stack-class.md @@ -385,7 +385,7 @@ int main( ) cout << "The top integer of the stack s1 is " << i << "." << endl; i--; - cout << "The updated top integer is "<< ii << "." << endl; + cout << "The updated top integer is " << ii << "." << endl; } ``` From c445d5bd4ce615e61fc9b63eea1be2fcb56276fe Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 6 Feb 2026 17:01:22 -0800 Subject: [PATCH 280/619] Update command targets for Visual Studio shortcuts --- docs/build/building-on-the-command-line.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index ffc6dff0b5a..b5b12aacbec 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -208,7 +208,7 @@ Leave this parameter out to use libraries without Spectre mitigations. Use the v Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2019** shortcut is something similar to: -``` +```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" ``` @@ -217,7 +217,7 @@ Open the Properties dialog for a developer command prompt shortcut to see the co Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **x64 Native Tools Command Prompt for VS 2017** shortcut is something similar to: -``` +```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat" ``` @@ -226,7 +226,7 @@ Open the Properties dialog for a developer command prompt shortcut to see the co Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **VS2015 x64 Native Tools Command Prompt** shortcut is something similar to: -``` +```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 ``` @@ -236,21 +236,21 @@ The architecture-specific batch files set the *`architecture`* parameter and cal ::: moniker range=">= msvc-160" -``` +```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.29 ``` ::: moniker-end ::: moniker range="= msvc-150" -``` +```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.19 ``` ::: moniker-end ::: moniker range="< msvc-150" -``` +```cmd %comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -vcvars_ver=14.0 ``` From cae3644e548e4322306a53116605f8800548be7f Mon Sep 17 00:00:00 2001 From: Rageking8 Date: Sat, 7 Feb 2026 09:11:14 +0800 Subject: [PATCH 281/619] Remove notion of issues and update `CONTRIBUTING.md` (#5629) * Remove notion of issues in `CONTRIBUTING.md` * Rephrase wording from "new content" to "changes/edits" in `CONTRIBUTING.md` * Use "Visual C++" in `CONTRIBUTING.md` * Update CONTRIBUTING.md Branding has changed since this was submmitted. --------- Co-authored-by: Tyler Whitney --- CONTRIBUTING.md | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bbfa4431118..1fed536772c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,8 +1,8 @@ # Contributing -Thank you for your interest in contributing to the Visual C++ documentation! +Thank you for your interest in contributing to the Microsoft C++ documentation! -In this topic, you'll see the basic process for adding or updating content in the [Visual C++ documentation site](https://learn.microsoft.com/cpp/). +In this topic, you'll see the basic process for adding or updating content in the [Microsoft C++ documentation site](https://learn.microsoft.com/cpp/). In this topic, we'll cover: @@ -14,16 +14,13 @@ In this topic, we'll cover: ## Process for contributing -**Step 1:** Open an issue describing the article you wish to write and how it relates to existing content. -The content inside the **docs** folder is organized into sections that are organized by content area (e.g., debugger). Try to determine the correct folder for your new content. Get feedback on your proposal. - -You can skip this first step for small changes. +**Step 1:** The content inside the **docs** folder is organized into sections that are organized by content area (e.g., debugger). Try to determine the correct folder for your changes. **Step 2:** Fork the `MicrosoftDocs/cpp-docs` repository. -**Step 3:** Create a `branch` for your article. +**Step 3:** Create a `branch` for your changes. -**Step 4:** Write your article. +**Step 4:** Make your edits and commit. If it's a new topic, you can use this [template file](./styleguide/template.md) as your starting point. It contains the writing guidelines and also explains the metadata required for each article, such as author information. @@ -46,9 +43,7 @@ docs **Step 5:** Submit a Pull Request (PR) from your branch to `MicrosoftDocs/cpp-docs/main`. -If your PR is addressing an existing issue, add the `Fixes #Issue_Number` keyword to the commit message or PR description, so the issue can be automatically closed when the PR is merged. For more information, see [Closing issues via commit messages](https://help.github.com/articles/closing-issues-via-commit-messages/). - -The Visual Studio team will review your PR and let you know if the change looks good or if there are any other updates/changes necessary in order to approve it. +The Microsoft C++ docs team will review your PR and let you know if the change looks good or if there are any other updates/changes necessary in order to approve it. **Step 6:** Make any necessary updates to your branch as discussed with the team. @@ -58,9 +53,9 @@ On a certain cadence, we push all commits from main branch into the live branch ## DOs and DON'Ts -Below is a short list of guiding rules that you should keep in mind when you are contributing to the .NET documentation. +Below is a short list of guiding rules that you should keep in mind when you are contributing to the Microsoft C++ documentation. -- **DON'T** surprise us with big pull requests. Instead, file an issue and start a discussion so we can agree on a direction before you invest a large amount of time. +- **DON'T** surprise us with big pull requests. - **DO** read the [style guide](./styleguide/template.md) and [voice and tone](./styleguide/voice-tone.md) guidelines. - **DO** use the [template](./styleguide/template.md) file as the starting point of your work. - **DO** create a separate branch on your fork before working on the articles. @@ -68,7 +63,7 @@ Below is a short list of guiding rules that you should keep in mind when you are - **DO** blog and tweet (or whatever) about your contributions, frequently! > [!NOTE] -> You might notice that some of the topics are not currently following all the guidelines specified here and on the [style guide](./styleguide/template.md) as well. We're working towards achieving consistency throughout the site. Check the list of [open issues](https://github.com/MicrosoftDocs/cpp-docs/issues?q=is%3Aissue+is%3Aopen+label%3Aguidelines-adherence) we're currently tracking for that specific goal. +> You might notice that some of the topics are not currently following all the guidelines specified here and on the [style guide](./styleguide/template.md) as well. We're working towards achieving consistency throughout the site. ## Building the documentation From 1157d3be88af12526e21d921d224c684533d7d10 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 6 Feb 2026 17:32:15 -0800 Subject: [PATCH 282/619] Some code escape --- ...urce-compiler-errors-rc1000-through-rc4413.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md index 00125ae5b55..74e0908987d 100644 --- a/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md +++ b/docs/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413.md @@ -24,8 +24,8 @@ This section is a reference to the errors generated by the resource compiler. Re | [Resource compiler fatal error RC1020](resource-compiler-fatal-error-rc1020.md) | unexpected '#endif' | | [Resource compiler fatal error RC1021](resource-compiler-fatal-error-rc1021.md) | invalid preprocessor command 'string' | | [Resource compiler fatal error RC1022](resource-compiler-fatal-error-rc1022.md) | expected '#endif' | -| [Resource compiler fatal error RC1047](resource-compiler-fatal-error-rc1047.md) | "too many option options, 'string'" | -| [Resource compiler fatal error RC1052](resource-compiler-fatal-error-rc1052.md) | compiler limit : #if or #ifdef blocks nested too deeply | +| [Resource compiler fatal error RC1047](resource-compiler-fatal-error-rc1047.md) | too many option options, 'string' | +| [Resource compiler fatal error RC1052](resource-compiler-fatal-error-rc1052.md) | compiler limit : `#if` or `#ifdef` blocks nested too deeply | | [Resource compiler fatal error RC1067](resource-compiler-fatal-error-rc1067.md) | compiler limit : identifier overflowed internal buffer | | [Resource compiler fatal error RC1101](resource-compiler-fatal-error-rc1101.md) | no resource binary filename specified | | [Resource compiler fatal error RC1102](resource-compiler-fatal-error-rc1102.md) | internal error : too many arguments to RCPP | @@ -59,8 +59,8 @@ This section is a reference to the errors generated by the resource compiler. Re | [Resource compiler error RC2107](resource-compiler-error-rc2107.md) | expected numeric command value | | [Resource compiler error RC2109](resource-compiler-error-rc2109.md) | expected numerical dialog constant | | [Resource compiler error RC2111](resource-compiler-error-rc2111.md) | invalid control type | -| [Resource compiler error RC2112](resource-compiler-error-rc2112.md) | BEGIN expected in dialog | -| [Resource compiler error RC2113](resource-compiler-error-rc2113.md) | END expected in dialog | +| [Resource compiler error RC2112](resource-compiler-error-rc2112.md) | `BEGIN` expected in dialog | +| [Resource compiler error RC2113](resource-compiler-error-rc2113.md) | `END` expected in dialog | | [Resource compiler error RC2114](resource-compiler-error-rc2114.md) | expected control class name | | [Resource compiler error RC2116](resource-compiler-error-rc2116.md) | expecting number for ID | | [Resource compiler error RC2122](resource-compiler-error-rc2122.md) | unknown menu subtype | @@ -74,9 +74,9 @@ This section is a reference to the errors generated by the resource compiler. Re | [Resource compiler error RC2152](resource-compiler-error-rc2152.md) | invalid control character | | [Resource compiler error RC2162](resource-compiler-error-rc2162.md) | expected macro formal parameter | | [Resource compiler error RC2163](resource-compiler-error-rc2163.md) | accelerator type required [ASCII or VIRTKEY] | -| [Resource compiler error RC2164](resource-compiler-error-rc2164.md) | unexpected value in RCDATA | -| [Resource compiler error RC2165](resource-compiler-error-rc2165.md) | string not found in DLGINCLUDE statement | -| [Resource compiler error RC2167](resource-compiler-error-rc2167.md) | unrecognized VERSIONINFO field; BEGIN or comma expected | +| [Resource compiler error RC2164](resource-compiler-error-rc2164.md) | unexpected value in `RCDATA` | +| [Resource compiler error RC2165](resource-compiler-error-rc2165.md) | string not found in `DLGINCLUDE` statement | +| [Resource compiler error RC2167](resource-compiler-error-rc2167.md) | unrecognized `VERSIONINFO` field; `BEGIN` or comma expected | | [Resource compiler error RC2169](resource-compiler-error-rc2169.md) | resource file filename is not in 2.03 format | | [Resource compiler error RC2170](resource-compiler-error-rc2170.md) | bitmap file filename is not in 3.00 format | | [Resource compiler error RC2171](resource-compiler-error-rc2171.md) | unknown DIB header format | @@ -94,7 +94,7 @@ This section is a reference to the errors generated by the resource compiler. Re | [Resource compiler warning RC4093](resource-compiler-warning-rc4093.md) | unescaped newline in character constant in inactive code | | [Resource compiler warning RC4214](resource-compiler-warning-rc4214.md) | Codepage not valid : ignored | | [Resource compiler warning RW4001](resource-compiler-warning-rw4001.md) | .EXE processing options (/L /M /P /T /K /E /31 or /30) | -| [Resource compiler warning RW4003](resource-compiler-warning-rw4003.md) | SHIFT or CONTROL used without VIRTKEY | +| [Resource compiler warning RW4003](resource-compiler-warning-rw4003.md) | `SHIFT` or `CONTROL` used without `VIRTKEY` | | [Resource compiler warning RW4004](resource-compiler-warning-rw4004.md) | ASCII character not equivalent to virtual key code | ## See also From d5fdb408309f966e6e4e74b4d1a231bc50f4a846 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 6 Feb 2026 17:44:05 -0800 Subject: [PATCH 283/619] Fix duplicate ms.custom entry in documentation Removed duplicate ms.custom metadata entry. --- docs/build/building-on-the-command-line.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md index 6f7ec2f05a0..07501e59a26 100644 --- a/docs/build/building-on-the-command-line.md +++ b/docs/build/building-on-the-command-line.md @@ -3,7 +3,6 @@ title: "Use the Microsoft C++ Build Tools from the command line" description: "Use the Microsoft C++ (MSVC) Build Tools from the command line outside of the Visual Studio IDE." ms.custom: "conceptual" ms.date: 04/07/2022 -ms.custom: "conceptual" ms.topic: how-to helpviewer_keywords: ["command-line builds [C++]", "compiling source code [C++], command line", "builds [C++], command-line", "command line [C++], building from", "command line [C++], compilers"] --- From b4f091ce5a2ce1139e64c384f032888b0d307b8f Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Tue, 10 Feb 2026 00:40:40 -0800 Subject: [PATCH 284/619] Add general troubleshooting steps --- ...ubleshoot-vc-redist-installation-issues.md | 277 ++++++++++++++++++ ...oubleshoot-vcredist-installation-issues.md | 189 ------------ 2 files changed, 277 insertions(+), 189 deletions(-) create mode 100644 docs/windows/troubleshoot-vc-redist-installation-issues.md delete mode 100644 docs/windows/troubleshoot-vcredist-installation-issues.md diff --git a/docs/windows/troubleshoot-vc-redist-installation-issues.md b/docs/windows/troubleshoot-vc-redist-installation-issues.md new file mode 100644 index 00000000000..fdb99b7dc73 --- /dev/null +++ b/docs/windows/troubleshoot-vc-redist-installation-issues.md @@ -0,0 +1,277 @@ +--- +title: "Troubleshoot Visual C++ Redistributable installation issues" +description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable (VC Redist) as a standalone installation and as part of the VS Installer." +author: vicroms +ms.author: viromer +ms.date: 02/10/2025 +ms.topic: troubleshooting-general +helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC Redist" ] +--- +# Troubleshoot Visual C++ Redistributable installation issues + +This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (VC Redist) installer or the Visual Studio Installer (VS Installer). + +If you're experiencing such issues, we recommend that you first attempt installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). + +## Collect failure logs + +The first step to diagnose an issue with the Visual C++ Redistributable (VC Redist) installer is to collect its failure logs. + +1. Download the [Microsoft Visual Studio and .NET Log Collection Tool](). +2. Run `Collect.exe`. +3. Extract the contents of `%TEMP%/vscollect.zip`. + +Once you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. + +The VC Redist logs are useful to diagnose common installation issues. + +### Other log locations + +VC Redist is often executed as a prerequisite of other products, in such cases the installation log might be found in a different path. + +For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option which overrides the default log location. + +In such cases, the path to the VC Redist logs can be found by reading that product's own logs: + +**Example: Configuration Manager logs** + +`\Logs\cmupdate.log` + +```log +10-31-2025 17:40:06.421 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) [Visual C++ 2015-2022 Redistributable (x64)] with older version 14.28.29914 is installed. it needs to upgraded. +10-31-2025 17:40:06.421 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) INFO: Start install Visual C redistributable ("C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64\vcredist_x64.exe" /q /norestart /l "C:\Program Files\Microsoft Configuration Manager\Logs\VCRedist64Install.log"). +10-31-2025 17:40:14.553 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) ERROR: Failed to install Visual C redistributable. Return code: 1603. +10-31-2025 17:40:14.553 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) ERROR: 64-bit VC Redist installation ("C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64\vcredist_x64.exe") failed. Please check log file [C:\Program Files\Microsoft Configuration Manager\Logs\VCRedist64Install.log]. +10-31-2025 17:40:14.554 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) Failed to install vc redist. Please manually install it from C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64 +``` + +## General troubleshooting steps + +This section describes general troubleshooting methods you can try to resolve issues with the VC Redist installer. + +### Method 1: Disable antivirus software temporarily + +Security products have been repeatedly linked to blocked VC Redist installs. + +1. Turn off Windows Defender real-time protection. +2. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). +3. Retry the installation. +4. Reenable any disabled protection software. + +### Method 2: Run VC Redist Installer as Administrator + +File-access failures are heavily correlated with insufficient permissions. + +1. Right-click the VC Redist Installer and select **Run as administrator**. +2. Retry the installation. + +### Method 3: Check for Windows System Updates + +On rare occasions, outdated system components can cause VC Redist installation issues. + +1. Go to Windows Update and install all pending updates. +2. Reboot your PC. +3. Retry the installation. + +> [!IMPORTANT] +> The troubleshooting methods below apply if you're installing VC Redist using the Visual Studio Installer. + +### Method 4: Manually Run the VC Redist Installer + +1. Go to `%ProgramData%\Microsoft\VisualStudio\Packages` +2. Open the folders: + - `Microsoft.VisualCpp.Redist.14,version=,chip=x64` + - `Microsoft.VisualCpp.Redist.14,version=,chip=x86` +3. Run the VC Redist installers: + - `vc_redist.x64.exe` + - `vc_redist.x86.exe` +4. Retry the Visual Studio Installer. + +If the manual installation fails, follow [methods 1 and 2](#method-1). + +### Method 5: Clear the Visual Studio Installer cache + +1. Open `%ProgramData%\Microsoft\VisualStudio\Packages` +2. Delete all files inside the folder to force the Visual Studio Installer to regenerate them. +3. Retry the Visual Studio Installer. + +### Method 6: Repair the Visual Studio Installer + +1. Go to **Settings** > **Apps** > **Installed Apps** +2. Select **Visual Studio Installer** > **Modify** > **Repair** +3. Retry the Visual Studio Installer. + +### Method 7: Delete the Visual Studio Installer folder + +> [!WARNING] +> This method requires that you have the Visual Studio Installer Setup downloaded (VisualStudioSetup.exe). +> You can download the Visual Studio Installer Setup from . + +This method helps in case the installer metadata is corrupted, deleting the installer folder forces the Visual Studio Installer to regenerate it. + +1. Download `VisualStudioSetup.exe` from . +2. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`, you may be prompted to run this operation as Administrator. +3. Run `VisualStudioSetup.exe`. + +## Common issues + +### Return Code 1603 + +Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. + +Because many factors can produce a 1603 code, the code by itself does not provide enough information to diagnose the cause of the issue. +Often, the log files produced by the VC Redist installer contain relevant information that may lead to a solution or workaround. + +The [Common issues](#common-issues) section describes examples of how to diagnose common installation errors and steps that may resolve them. +If your issue isn't found here, then follow the instructions to [report an issue in the Visual C++ Redistributable installer](#report-a-vc-redist-installation-problem). + +### Access Denied + +An issue occurs during installation of VC Redist failing with return code 5. +The error code typically indicates a permissions issue; specifically, an access denied issue. + +**Steps to resolve** + +1. Disable antivirus, group policies, and firewalls temporarily. +2. Run the VC Redist installer. +3. Reenable any disabled protection software. + +If the installation fails, try to run the VC Redist installer as Administrator. + +### File is locked + +An issue occurs during the installation of VC Redist failing with return code 32. +Likely causes include blocked permissions, interference from antivirus or third-party software, group policies, or corrupted files. + +**Steps to resolve** + +1. Close any running software in your PC. +2. Try the methods in [General troubleshooting steps](#general-troubleshooting-steps). + +If the installation fails, try to restart your PC to release any locked files. + +### Corrupt or invalid installer package + +The issue involves an error during installation of VC Redist using the Visua Studio Installer with error code 1620. +Error code 1620 indicates that a Windows Installer package couldn't be opened, likely due to corruption or invalid files. + +One or more of these error codes are present in the VC Redist logs: + +- Error code 1620: indicates that the Windows Installer package could not be opened. +- Error code 0x80091007: several payloads failed verification due to hash mismatches. +- Errof code 0x80070654: occurs when an MSI package fails to execute. + +**Steps to resolve** + +Methods 5, 6, and 7 in the [General troubleshoot steps](#file-is-locked) may help solve this issue by cleaning the package cache. + +### Older Version Cannot Be Removed + +A corrupted Windows Installer cache produces error code 1714, indicating a failure to remove a previous version of VC Redist. + +The presence of these error messages indicates a corrupted cache. + +> [!NOTE] +> Tiemstamps have been rmoved from the log file examples to condense the output +> and present only the relevant information. + +> [!NOTE] +> The product's unique identifiers (GUIDs) on these examples can be different +> depending on the product version being installed. + +In `dd_vcredist__.log` + +```log +Error 0x80070003: Failed to get size of pseudo bundle: C:\ProgramData\Package Cache\{43d1ce82-6f55-4860-a938-20e5deb28b98}\VC_redist.x64.exe +Error 0x80070003: Failed to initialize package from related bundle id: {43d1ce82-6f55-4860-a938-20e5deb28b98} +``` + +In `dd_vcredist___vcRuntimeMinimum_.log`: + +```log +SOURCEMGMT: Trying source C:\ProgramData\Package Cache\{455DF12C-7D43-4EFF-AE2F-43C8AF2817A3}v14.28.29914\packages\vcRuntimeMinimum_amd64\. +Note: 1: 2203 2: C:\ProgramData\Package Cache\{455DF12C-7D43-4EFF-AE2F-43C8AF2817A3}v14.28.29914\packages\vcRuntimeMinimum_amd64\vc_runtimeMinimum_x64.msi 3: -2147287037 +SOURCEMGMT: Source is invalid due to missing/inaccessible package. +``` + +```log +Note: 1: 1714 2: Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 3: 1612 +CustomAction returned actual error code 1612 (note this may not be 100% accurate if translation happened inside sandbox) +Product: Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 -- Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612. + +Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612. +``` + +In `VSSetupEvents.txt` + +```log +Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612.] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [] +``` + +**Steps to resolve** + +From the log files, take note of the VC Redist version causing the issue. + +Method 1: Use the Windows Installer. + +1. Try using the Windows Installer to manually remove the old VC Redist version. + If prompted, let the Windows Installer Troubleshooter attempt to fix the issue. +2. Retry the installation. + +Method 2: Manually remove the old version. + +1. Download the VC Redist installer for the old version by following the steps in + [Download old versions of the Visual C++ Redistributable Installer](#old-vcredist-versions) +2. Run the installer to uninstall the old VC Redist. +3. Retry the installation. + +## Download old versions of the Visual C++ Redistributable Installer + +> [!WARNING] +> Never install a Visual C++ Redistributable Installer that wasn't downloaded from a Microsoft site. +> Only install packages signed by Microsoft. + +The VC Redist installer can be downloaded from [my.visualstudio.com](), search for Visual C++ Redistributable + +The latest supported VC Redist version for each version of Visual Studio can be found in [this article](/cpp/windows/latest-supported-vc-redist). + +To access older or legacy versions follow these steps: + +**Version 14.50 or later** + +The download links use the `https://aka.ms/vs/18/release//VC_redist..exe` pattern. +For example: . + +**Version 14.30 to 14.44** + +The download links use the `https://aka.ms/vs/17/release//VC_redist.exe` pattern. +For example: . + +**Version 14.20 to 14.29** + +The download links use the `https://aka.ms/vs/16/release//VC_redist.exe` pattern. +For example: + +**Version 14.10 or later** + +The download links use the `https://aka.ms/vs/15/release//VC_redist.exe` pattern. +For example: + +If the aka.ms links don't work, you may be able to find the version you're looking for through a Bing search. +However, make sure that the download comes from a Microsoft site and that the installer is signed by Microsoft. + +## Report a VC Redist installation problem + +The list of [common issues](#common-issues) has been collected from feedback reported to Microsoft through [Developer Community](). + +If you encounter an issue not found in that section, or if your issue isn't resolved by the steps in this troubleshooting guide. +Use the [Report a Problem]() form to create a new feedback item. + +Your report should include as much information as possible about your environment. Please include: + +- Version of VC Redist you are trying to install. +- If upgrading, version of previously installed VC Redist installations. +- If installing through the Visual Studio Installer, version of the VS Installer. +- Logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. + +Feedback without this information, especially without logs, is non-actionable and will be closed. diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md deleted file mode 100644 index 58af67bca74..00000000000 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ /dev/null @@ -1,189 +0,0 @@ ---- -title: "Troubleshoot Visual C++ Redistributable installation issues" -description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable (VC Redist)" -author: vicroms -ms.author: viromer -ms.date: 02/04/2025 -ms.topic: troubleshooting-general -helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC Redist" ] ---- -# Troubleshoot Visual C++ Redistributable installation issues - -This guide is for users experiencing issues while installing the Visual C++ -Runtime components using the Visual C++ Redistributable installer or the -Visual Studio Installer. - -If you're experiencing such issues, we recommend that you first attempt -installing the [latest version of the Visual C++ -Redistributable](latest-supported-vc-redist.md). - -## Collect failure logs - -The first step to diagnose an issue with the Visual C++ -Redistributable (VC Redist) installer is to collect its failure logs. - -1) Download the [Microsoft Visual Studio and .NET Log Collection - Tool](). -2) Run `Collect.exe` -3) Extract the contents of `%TEMP%/vscollect.zip` - -Once you extract `vscollect.zip`, the VC Redist logs are located inside the -`Temp` folder. The relevant log files are prefixed with the pattern -`dd_vcredist__yyyyMMddHHmmss`. - -In this article, we use these logs to diagnose common issues with the redist -installer. - -### Other log locations - -VC Redist is often executed as a prerequisite of other products, in such cases -the installation log might be found in a different path. - -For example, [Configuration -Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as -part of its own upgrade process, running `vcredist_x64.exe` with the `/l` -option, overriding the default log location. - -In such cases, the path to the VC Redist logs can be found by reading that product's -own logs: - -**Example: Configuration Manager logs** - -`\Logs\cmupdate.log` - -```log -10-31-2025 17:40:06.421 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) [Visual C++ 2015-2022 Redistributable (x64)] with older version 14.28.29914 is installed. it needs to upgraded. -10-31-2025 17:40:06.421 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) INFO: Start install Visual C redistributable ("C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64\vcredist_x64.exe" /q /norestart /l "C:\Program Files\Microsoft Configuration Manager\Logs\VCRedist64Install.log"). -10-31-2025 17:40:14.553 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) ERROR: Failed to install Visual C redistributable. Return code: 1603. -10-31-2025 17:40:14.553 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) ERROR: 64-bit VC Redist installation ("C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64\vcredist_x64.exe") failed. Please check log file [C:\Program Files\Microsoft Configuration Manager\Logs\VCRedist64Install.log]. -10-31-2025 17:40:14.554 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) Failed to install vc redist. Please manually install it from C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64 -``` - -## Return Code 1603 - -Issues with the VC Redist installer often produce the return code 1603. This is -a generic install failure code produced by the Windows Installer, which is -invoked during the installation of the Visual C++ Runtime components. - -Because many factors can produce a 1603 code, the return code itself is not -enough to diagnose the root cause of the issue. In such cases, the log files -usually contain relevant information that can lead to a solution. - -The [Common issues](#common-issues) section describes examples of how to -diagnose common installation errors and steps that may resolve them. If your -issue is not found here, then follow the instructions to [report an issue in -the Visual C++ Redistributable installer](#my-issue-is-not-here). - -## Common issues - -### Error 1714 - Older Version Cannot Be Removed - -Error 1714 is often caused by a corrupted Windows Installer Cache. The -installation process fails to remove an older version due to a corrupted -or missing MSI package. - -**Diagnose** - -> [!NOTE] -> The log file examples in this section have had the timestamps removed to -> present only the relevant information. - -> [!NOTE] -> The GUIDs on this examples may be different depending on the product version -> being installed. - -The presence of these error messages indicate a corrupted cache. - -In `dd_vcredist__.log` - -```log -Error 0x80070003: Failed to get size of pseudo bundle: C:\ProgramData\Package Cache\{43d1ce82-6f55-4860-a938-20e5deb28b98}\VC_redist.x64.exe -Error 0x80070003: Failed to initialize package from related bundle id: {43d1ce82-6f55-4860-a938-20e5deb28b98} -``` - -In `dd_vcredist___vcRuntimeMinimum_.log`: - -```log -SOURCEMGMT: Trying source C:\ProgramData\Package Cache\{455DF12C-7D43-4EFF-AE2F-43C8AF2817A3}v14.28.29914\packages\vcRuntimeMinimum_amd64\. -Note: 1: 2203 2: C:\ProgramData\Package Cache\{455DF12C-7D43-4EFF-AE2F-43C8AF2817A3}v14.28.29914\packages\vcRuntimeMinimum_amd64\vc_runtimeMinimum_x64.msi 3: -2147287037 -SOURCEMGMT: Source is invalid due to missing/inaccessible package. -``` - -```log -Note: 1: 1714 2: Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 3: 1612 -CustomAction returned actual error code 1612 (note this may not be 100% accurate if translation happened inside sandbox) -Product: Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 -- Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612. - -Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612. -``` - -In `VSSetupEvents.txt` - -```log -Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612.] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [] -``` - -**Steps to resolve** - -From the log files, take note of the VC Redist version causing the issue. - -Method 1: Use the Windows Installer: - -1. Try using the Windows Installer to manually remove the old VC Redist version. - If prompted, let the Windows Installer Troubleshooter attempt to fix the - issue. -2. Retry the installation. - -Method 2: Manually remove the old version. - -1. Download the VC Redist installer for the old version by following the steps in - [Download old versions of the Visual C++ Redistributable Installer](#old-vcredist-versions) -2. Run the installer to uninstall the old VC Redist. -3. Retry the installation. - -## Download old versions of the Visual C++ Redistributable Installer - -> [!WARNING] -> Never install a Visual C++ Redistributable Installer that wasn't downloaded -> from a Microsoft site. And only install packages that are signed by Microsoft. - -The VC Redist installer can be downloaded from -[my.visualstudio.com](), search for -Visual C++ Redistributable - -The latest supported VC Redist version for each version of Visual Studio can -be found in [this article](/cpp/windows/latest-supported-vc-redist). - -To access older or legacy versions follow these steps: - -**Version 14.50 or later** - -The download links use the -`https://aka.ms/vs/18/release//VC_redist..exe` pattern. -For example: . - -**Version 14.30 to 14.44** - -The download links use the -`https://aka.ms/vs/17/release//VC_redist.exe` pattern. -For example: . - -**Version 14.20 to 14.29** - -The download links use the -`https://aka.ms/vs/16/release//VC_redist.exe` pattern. -For example: - -**Version 14.10 or later** - -The download links use the -`https://aka.ms/vs/15/release//VC_redist.exe` pattern. -For example: - -If the aka.ms links do not work, you may be able to find the version you're -looking for through a Bing search. However, make sure that the download -comes from a Microsoft site and that the installer is signed by Microsoft. - -## My issue is not here - -TBD: Instructions to report an issue with the redist installer. From a4aff4ce03348a320bd3a07dba0338cc6a783b51 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Tue, 10 Feb 2026 01:41:45 -0800 Subject: [PATCH 285/619] Apply Acrolynx suggestions --- ...ubleshoot-vcredist-installation-issues.md} | 113 ++++++++---------- 1 file changed, 53 insertions(+), 60 deletions(-) rename docs/windows/{troubleshoot-vc-redist-installation-issues.md => troubleshoot-vcredist-installation-issues.md} (67%) diff --git a/docs/windows/troubleshoot-vc-redist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md similarity index 67% rename from docs/windows/troubleshoot-vc-redist-installation-issues.md rename to docs/windows/troubleshoot-vcredist-installation-issues.md index fdb99b7dc73..974fcf64fa5 100644 --- a/docs/windows/troubleshoot-vc-redist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -1,6 +1,6 @@ --- title: "Troubleshoot Visual C++ Redistributable installation issues" -description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable (VC Redist) as a standalone installation and as part of the VS Installer." +description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable as a standalone installation and as part of the Visual Studio Installer." author: vicroms ms.author: viromer ms.date: 02/10/2025 @@ -9,29 +9,29 @@ helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC --- # Troubleshoot Visual C++ Redistributable installation issues -This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (VC Redist) installer or the Visual Studio Installer (VS Installer). +This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (vcredist) installer or the Visual Studio (VS) Installer. If you're experiencing such issues, we recommend that you first attempt installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). ## Collect failure logs -The first step to diagnose an issue with the Visual C++ Redistributable (VC Redist) installer is to collect its failure logs. +The first step to diagnose an issue with the Visual C++ Redistributable installer is to collect its failure logs. 1. Download the [Microsoft Visual Studio and .NET Log Collection Tool](). 2. Run `Collect.exe`. 3. Extract the contents of `%TEMP%/vscollect.zip`. -Once you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. +Once you extract `vscollect.zip`, the vcredist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. -The VC Redist logs are useful to diagnose common installation issues. +The vcredist logs are useful to diagnose common installation issues. ### Other log locations -VC Redist is often executed as a prerequisite of other products, in such cases the installation log might be found in a different path. +The vcredist installer is often executed as a prerequisite of other products, in such cases the installation log might be found in a different path. -For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option which overrides the default log location. +For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades vcredist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option that overrides the default log location. -In such cases, the path to the VC Redist logs can be found by reading that product's own logs: +In such cases, the path to the logs can be found by reading that product's own logs: **Example: Configuration Manager logs** @@ -47,42 +47,42 @@ In such cases, the path to the VC Redist logs can be found by reading that produ ## General troubleshooting steps -This section describes general troubleshooting methods you can try to resolve issues with the VC Redist installer. +This section describes general troubleshooting methods you can try to resolve issues with the vcredist installer. ### Method 1: Disable antivirus software temporarily -Security products have been repeatedly linked to blocked VC Redist installs. +Security products often block installation of vcredist components. 1. Turn off Windows Defender real-time protection. 2. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). 3. Retry the installation. 4. Reenable any disabled protection software. -### Method 2: Run VC Redist Installer as Administrator +### Method 2: Run the Visual C++ Redistributable installer as Administrator File-access failures are heavily correlated with insufficient permissions. -1. Right-click the VC Redist Installer and select **Run as administrator**. +1. Right-click the vcredist installer and select **Run as administrator**. 2. Retry the installation. ### Method 3: Check for Windows System Updates -On rare occasions, outdated system components can cause VC Redist installation issues. +On rare occasions, outdated system components can cause installation issues. 1. Go to Windows Update and install all pending updates. 2. Reboot your PC. 3. Retry the installation. > [!IMPORTANT] -> The troubleshooting methods below apply if you're installing VC Redist using the Visual Studio Installer. +> The following troubleshooting methods apply when vcredist is installed as a component of the Visual Studio Installer. -### Method 4: Manually Run the VC Redist Installer +### Method 4: Manually Run the Visual C++ Redistributable installer 1. Go to `%ProgramData%\Microsoft\VisualStudio\Packages` 2. Open the folders: - `Microsoft.VisualCpp.Redist.14,version=,chip=x64` - `Microsoft.VisualCpp.Redist.14,version=,chip=x86` -3. Run the VC Redist installers: +3. Run: - `vc_redist.x64.exe` - `vc_redist.x86.exe` 4. Retry the Visual Studio Installer. @@ -110,38 +110,38 @@ If the manual installation fails, follow [methods 1 and 2](#method-1). This method helps in case the installer metadata is corrupted, deleting the installer folder forces the Visual Studio Installer to regenerate it. 1. Download `VisualStudioSetup.exe` from . -2. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`, you may be prompted to run this operation as Administrator. +2. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`, you might be prompted to run this operation as Administrator. 3. Run `VisualStudioSetup.exe`. ## Common issues -### Return Code 1603 +### Return code 1603 Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. -Because many factors can produce a 1603 code, the code by itself does not provide enough information to diagnose the cause of the issue. -Often, the log files produced by the VC Redist installer contain relevant information that may lead to a solution or workaround. +Because many factors can produce a 1603 code, the code by itself doesn't provide enough information to diagnose the cause of the issue. +Often, the log files produced by the vcredistt installer contain relevant information that might lead to a solution or workaround. -The [Common issues](#common-issues) section describes examples of how to diagnose common installation errors and steps that may resolve them. -If your issue isn't found here, then follow the instructions to [report an issue in the Visual C++ Redistributable installer](#report-a-vc-redist-installation-problem). +The [Common issues](#common-issues) section describes examples of how to diagnose common installation errors and steps that might resolve them. +If your issue isn't found here, then follow the instructions to [report an issue in the Visual C++ Redistributable installer](#report-a-visual-c-redistributable-installation-problem). -### Access Denied +### Access denied -An issue occurs during installation of VC Redist failing with return code 5. +An issue occurs during installation of vcredist failing with return code 5. The error code typically indicates a permissions issue; specifically, an access denied issue. **Steps to resolve** 1. Disable antivirus, group policies, and firewalls temporarily. -2. Run the VC Redist installer. +2. Run the vcredist installer. 3. Reenable any disabled protection software. -If the installation fails, try to run the VC Redist installer as Administrator. +If the installation fails, try to run the vcredist installer as Administrator. ### File is locked -An issue occurs during the installation of VC Redist failing with return code 32. -Likely causes include blocked permissions, interference from antivirus or third-party software, group policies, or corrupted files. +An issue occurs during the installation of vcredist failing with return code 32. +Likely causes include blocked permissions, interference from antivirus, group policies, or corrupted files. **Steps to resolve** @@ -152,32 +152,27 @@ If the installation fails, try to restart your PC to release any locked files. ### Corrupt or invalid installer package -The issue involves an error during installation of VC Redist using the Visua Studio Installer with error code 1620. +The issue involves an error during installation of vcredist using the Visual Studio Installer with error code 1620. Error code 1620 indicates that a Windows Installer package couldn't be opened, likely due to corruption or invalid files. -One or more of these error codes are present in the VC Redist logs: +One or more of these error codes are present in the logs: -- Error code 1620: indicates that the Windows Installer package could not be opened. +- Error code 1620: indicates that the Windows Installer package couldn't be opened. - Error code 0x80091007: several payloads failed verification due to hash mismatches. -- Errof code 0x80070654: occurs when an MSI package fails to execute. +- Error code 0x80070654: occurs when an MSI package fails to execute. **Steps to resolve** -Methods 5, 6, and 7 in the [General troubleshoot steps](#file-is-locked) may help solve this issue by cleaning the package cache. +Methods 5, 6, and 7 in the [General troubleshoot steps](#file-is-locked) might help solve this issue by cleaning the package cache. -### Older Version Cannot Be Removed +### Older version can't be removed -A corrupted Windows Installer cache produces error code 1714, indicating a failure to remove a previous version of VC Redist. +A corrupted Windows Installer cache produces error code 1714, indicating a failure to remove a previous version of vcredist. The presence of these error messages indicates a corrupted cache. > [!NOTE] -> Tiemstamps have been rmoved from the log file examples to condense the output -> and present only the relevant information. - -> [!NOTE] -> The product's unique identifiers (GUIDs) on these examples can be different -> depending on the product version being installed. +> Timestamps are removed from these examples to condense the output. In `dd_vcredist__.log` @@ -210,30 +205,29 @@ Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - **Steps to resolve** -From the log files, take note of the VC Redist version causing the issue. +From the log files, take note of the vcredist version causing the issue. Method 1: Use the Windows Installer. -1. Try using the Windows Installer to manually remove the old VC Redist version. +1. Try using the Windows Installer to manually remove the old vcredist version. If prompted, let the Windows Installer Troubleshooter attempt to fix the issue. 2. Retry the installation. Method 2: Manually remove the old version. -1. Download the VC Redist installer for the old version by following the steps in - [Download old versions of the Visual C++ Redistributable Installer](#old-vcredist-versions) -2. Run the installer to uninstall the old VC Redist. +1. Download the vcredist installer for the old version by following the steps in + [Download old versions of the Visual C++ Redistributable installer](#old-vcredist-versions) +2. Run the installer to uninstall the old vcredist. 3. Retry the installation. -## Download old versions of the Visual C++ Redistributable Installer +## Download old versions of the Visual C++ Redistributable installer > [!WARNING] -> Never install a Visual C++ Redistributable Installer that wasn't downloaded from a Microsoft site. -> Only install packages signed by Microsoft. +> Never install a Visual C++ Redistributable installer that wasn't downloaded from a Microsoft site. -The VC Redist installer can be downloaded from [my.visualstudio.com](), search for Visual C++ Redistributable +The vcredist installer can be downloaded from [my.visualstudio.com](), search for Visual C++ Redistributable -The latest supported VC Redist version for each version of Visual Studio can be found in [this article](/cpp/windows/latest-supported-vc-redist). +The latest supported vcredist version for each version of Visual Studio can be found in [this article](/cpp/windows/latest-supported-vc-redist). To access older or legacy versions follow these steps: @@ -257,21 +251,20 @@ For example: The download links use the `https://aka.ms/vs/15/release//VC_redist.exe` pattern. For example: -If the aka.ms links don't work, you may be able to find the version you're looking for through a Bing search. +If the aka.ms links don't work, you might be able to find the version you're looking for through a Bing search. However, make sure that the download comes from a Microsoft site and that the installer is signed by Microsoft. -## Report a VC Redist installation problem +## Report a Visual C++ Redistributable installation problem -The list of [common issues](#common-issues) has been collected from feedback reported to Microsoft through [Developer Community](). +The list of [common issues](#common-issues) was collected from feedback reported to Microsoft through [Developer Community](). -If you encounter an issue not found in that section, or if your issue isn't resolved by the steps in this troubleshooting guide. -Use the [Report a Problem]() form to create a new feedback item. +If you encounter an issue not found in that section, or if the steps in this troubleshooting guide don't resolve your issue. Use the [Report a Problem]() form to create a new feedback item. -Your report should include as much information as possible about your environment. Please include: +Your report must include the following information about your environment: -- Version of VC Redist you are trying to install. -- If upgrading, version of previously installed VC Redist installations. +- Version of vcredist you're trying to install. +- If upgrading, version of previously installed vcredist installations. - If installing through the Visual Studio Installer, version of the VS Installer. - Logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. -Feedback without this information, especially without logs, is non-actionable and will be closed. +Feedback without this information, especially without logs, is nonactionable and might be closed if additional information is not submitted promptly. From b020f1780838196cfba122f92941d99c602cb34d Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Tue, 10 Feb 2026 11:55:22 -0800 Subject: [PATCH 286/619] Add preservenone.md calling convention doc --- ...argument-passing-and-naming-conventions.md | 1 + docs/cpp/preservenone.md | 70 +++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 docs/cpp/preservenone.md diff --git a/docs/cpp/argument-passing-and-naming-conventions.md b/docs/cpp/argument-passing-and-naming-conventions.md index aea3e8d3a15..d2929781fc0 100644 --- a/docs/cpp/argument-passing-and-naming-conventions.md +++ b/docs/cpp/argument-passing-and-naming-conventions.md @@ -31,6 +31,7 @@ The following calling conventions are supported by the Visual C/C++ compiler. |[__fastcall](../cpp/fastcall.md)|Callee|Stored in registers, then pushed on stack| |[__thiscall](../cpp/thiscall.md)|Callee|Pushed on stack; **`this`** pointer stored in ECX| |[__vectorcall](../cpp/vectorcall.md)|Callee|Stored in registers, then pushed on stack in reverse order (right to left)| +|[__preserve_none](../cpp/preservenone.md)|Callee|Stored in registers only| For related information, see [Obsolete Calling Conventions](../cpp/obsolete-calling-conventions.md). diff --git a/docs/cpp/preservenone.md b/docs/cpp/preservenone.md new file mode 100644 index 00000000000..97a40d3a453 --- /dev/null +++ b/docs/cpp/preservenone.md @@ -0,0 +1,70 @@ +# __preserve_none + +**Microsoft Specific** + +> [!IMPORTANT] +> The **`__preserve_none`** calling convention is experimental and subject to change in future releases. Use at your own risk. + +The **`__preserve_none`** calling convention specifies that arguments to functions are to be passed in registers, with most general-purpose registers treated as volatile. This calling convention is only supported for C programs and only applies to the x64 architecture. + +This calling convention is designed to minimize register spilling and improve performance. + +The following list shows the implementation of this calling convention. + +| Element | Implementation | +|---------|----------------| +| Argument-passing order | Arguments are passed in up to 10 registers in the following order: r13, r14, r15, rbx, rsi, rdi, r9, r8, rdx, rcx. If a hidden parameter is required for struct returns, it is passed in r13 (the first parameter register), reducing available parameter registers to 9. Registers r10-r12 are reserved for various CRT and Windows runtimes. All parameters must be passed through registers; stack-based parameters are not currently supported. | +| Register allocation strategy | Registers rcx, rdx, r8, and r9 are allocated towards the end and in reverse order to reduce register spilling. | +| Argument limit | Functions are restricted to a maximum of 10 parameters. An error is generated if this limit is exceeded. | +| Return value convention | Follows the regular x64 calling convention rules. Scalar return values are returned in rax. Structs of size 1, 2, 4, or 8 bytes are returned through the rax register. For structs of other sizes, a pointer to memory allocated by the caller and passed through the hidden parameter is returned in rax. | +| Volatile registers | All general-purpose registers except rsp (stack pointer) and rbp (base pointer) are treated as volatile and do not need to be preserved across function calls. While r10 and r11 are volatile, they are not used for parameter passing to maintain compatibility with existing programs. | +| Nonvolatile registers | Only rsp, rbp, and r12 are nonvolatile. | +| Stack alignment | The stack must maintain 16-byte alignment. | +| Frame pointer | The rbp register and frame chain follow the /Gy switch settings. | +| Stack-maintenance responsibility | The callee is responsible for cleaning up its own stack space. | +| Shadow space | A 32-byte shadow space is reserved on the stack to maintain compatibility with profilers and debugging tools. | +| Floating-point support | Floating-point parameters are not supported in the current version. | +| Name-decoration convention | Function names are decorated with @@_A suffix. | +| Case-translation convention | No case translation performed. | + +> [!NOTE] +> The number of registers used for parameter passing may change in future releases. + +## Restrictions and Limitations + +The **`__preserve_none`** calling convention has the following restrictions: + +- **C only**: Only supported for C programs. +- **x64 only**: Only the x64 backend provides support for this calling convention. +- **No floating-point**: Floating-point parameters are not supported. +- **No variadic functions**: Variadic functions (varargs) are not supported. +- **Parameter limit**: Maximum of 10 parameters, all passed through registers. + +## Use Cases + +The **`__preserve_none`** calling convention is designed for performance-critical scenarios where: + +- Most functions in the codebase use the **`__preserve_none`** calling convention +- Used in conjunction with `msvc::musttail` to tail call between functions with no stack usage +- Minimizing register spilling is important for performance +- The codebase is compatible with treating most registers as volatile + +## Example + +In the following example, the function `ProcessData` uses the **`__preserve_none`** calling convention: + +```c +// Example of the __preserve_none keyword +void __preserve_none ProcessData(int a, int b, int c, int d, int e); + +// Example of the __preserve_none keyword on function pointer +typedef int (__preserve_none *callback_ptr)(void* context, int value, int flags); +``` + +**END Microsoft Specific** + +## See also + +[Argument Passing and Naming Conventions](argument-passing-and-naming-conventions?view=msvc-170) +[x64 Calling Convention](../build/x64-calling-convention?view=msvc-170) +[Keywords](keywords-cpp?view=msvc-170) From dfadcda6beb4adbbed42bf0613369e06d1d8d8f8 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Tue, 10 Feb 2026 13:26:32 -0800 Subject: [PATCH 287/619] Replace vcredist -> VC Redist --- ...oubleshoot-vcredist-installation-issues.md | 50 +++++++++---------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md index 974fcf64fa5..d06ce7b7985 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -9,7 +9,7 @@ helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC --- # Troubleshoot Visual C++ Redistributable installation issues -This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (vcredist) installer or the Visual Studio (VS) Installer. +This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (VC Redist) installer or the Visual Studio (VS) Installer. If you're experiencing such issues, we recommend that you first attempt installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). @@ -21,15 +21,13 @@ The first step to diagnose an issue with the Visual C++ Redistributable installe 2. Run `Collect.exe`. 3. Extract the contents of `%TEMP%/vscollect.zip`. -Once you extract `vscollect.zip`, the vcredist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. - -The vcredist logs are useful to diagnose common installation issues. +Once you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. ### Other log locations -The vcredist installer is often executed as a prerequisite of other products, in such cases the installation log might be found in a different path. +The VC Redist installer is often executed as a prerequisite of other products, in such cases the installation log might be found in a different path. -For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades vcredist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option that overrides the default log location. +For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option that overrides the default log location. In such cases, the path to the logs can be found by reading that product's own logs: @@ -47,11 +45,11 @@ In such cases, the path to the logs can be found by reading that product's own l ## General troubleshooting steps -This section describes general troubleshooting methods you can try to resolve issues with the vcredist installer. +This section describes general troubleshooting methods you can try to resolve issues with the VC Redist installer. ### Method 1: Disable antivirus software temporarily -Security products often block installation of vcredist components. +Security products often block installation of VC Redist components. 1. Turn off Windows Defender real-time protection. 2. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). @@ -62,7 +60,7 @@ Security products often block installation of vcredist components. File-access failures are heavily correlated with insufficient permissions. -1. Right-click the vcredist installer and select **Run as administrator**. +1. Right-click the VC Redist installer and select **Run as administrator**. 2. Retry the installation. ### Method 3: Check for Windows System Updates @@ -74,7 +72,7 @@ On rare occasions, outdated system components can cause installation issues. 3. Retry the installation. > [!IMPORTANT] -> The following troubleshooting methods apply when vcredist is installed as a component of the Visual Studio Installer. +> The following troubleshooting methods apply when VC Redist is installed as a component of the Visual Studio Installer. ### Method 4: Manually Run the Visual C++ Redistributable installer @@ -120,27 +118,27 @@ This method helps in case the installer metadata is corrupted, deleting the inst Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. Because many factors can produce a 1603 code, the code by itself doesn't provide enough information to diagnose the cause of the issue. -Often, the log files produced by the vcredistt installer contain relevant information that might lead to a solution or workaround. +Often, the log files produced by the VC Redistt installer contain relevant information that might lead to a solution or workaround. The [Common issues](#common-issues) section describes examples of how to diagnose common installation errors and steps that might resolve them. If your issue isn't found here, then follow the instructions to [report an issue in the Visual C++ Redistributable installer](#report-a-visual-c-redistributable-installation-problem). ### Access denied -An issue occurs during installation of vcredist failing with return code 5. +An issue occurs during installation of VC Redist failing with return code 5. The error code typically indicates a permissions issue; specifically, an access denied issue. **Steps to resolve** 1. Disable antivirus, group policies, and firewalls temporarily. -2. Run the vcredist installer. +2. Run the VC Redist installer. 3. Reenable any disabled protection software. -If the installation fails, try to run the vcredist installer as Administrator. +If the installation fails, try to run the VC Redist installer as Administrator. ### File is locked -An issue occurs during the installation of vcredist failing with return code 32. +An issue occurs during the installation of VC Redist failing with return code 32. Likely causes include blocked permissions, interference from antivirus, group policies, or corrupted files. **Steps to resolve** @@ -152,7 +150,7 @@ If the installation fails, try to restart your PC to release any locked files. ### Corrupt or invalid installer package -The issue involves an error during installation of vcredist using the Visual Studio Installer with error code 1620. +The issue involves an error during installation of VC Redist using the Visual Studio Installer with error code 1620. Error code 1620 indicates that a Windows Installer package couldn't be opened, likely due to corruption or invalid files. One or more of these error codes are present in the logs: @@ -167,7 +165,7 @@ Methods 5, 6, and 7 in the [General troubleshoot steps](#file-is-locked) might h ### Older version can't be removed -A corrupted Windows Installer cache produces error code 1714, indicating a failure to remove a previous version of vcredist. +A corrupted Windows Installer cache produces error code 1714, indicating a failure to remove a previous version of VC Redist. The presence of these error messages indicates a corrupted cache. @@ -205,19 +203,19 @@ Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - **Steps to resolve** -From the log files, take note of the vcredist version causing the issue. +From the log files, take note of the VC Redist version causing the issue. Method 1: Use the Windows Installer. -1. Try using the Windows Installer to manually remove the old vcredist version. +1. Try using the Windows Installer to manually remove the old VC Redist version. If prompted, let the Windows Installer Troubleshooter attempt to fix the issue. 2. Retry the installation. Method 2: Manually remove the old version. -1. Download the vcredist installer for the old version by following the steps in +1. Download the VC Redist installer for the old version by following the steps in [Download old versions of the Visual C++ Redistributable installer](#old-vcredist-versions) -2. Run the installer to uninstall the old vcredist. +2. Run the installer to uninstall the old VC Redist. 3. Retry the installation. ## Download old versions of the Visual C++ Redistributable installer @@ -225,9 +223,9 @@ Method 2: Manually remove the old version. > [!WARNING] > Never install a Visual C++ Redistributable installer that wasn't downloaded from a Microsoft site. -The vcredist installer can be downloaded from [my.visualstudio.com](), search for Visual C++ Redistributable +The VC Redist installer can be downloaded from [my.visualstudio.com](), search for Visual C++ Redistributable -The latest supported vcredist version for each version of Visual Studio can be found in [this article](/cpp/windows/latest-supported-vc-redist). +The latest supported VC Redist version for each version of Visual Studio can be found in [this article](/cpp/windows/latest-supported-vc-redist). To access older or legacy versions follow these steps: @@ -262,9 +260,9 @@ If you encounter an issue not found in that section, or if the steps in this tro Your report must include the following information about your environment: -- Version of vcredist you're trying to install. -- If upgrading, version of previously installed vcredist installations. +- Version of VC Redist you're trying to install. +- If upgrading, version of previously installed VC Redist installations. - If installing through the Visual Studio Installer, version of the VS Installer. - Logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. -Feedback without this information, especially without logs, is nonactionable and might be closed if additional information is not submitted promptly. +Feedback without this information, especially without logs, is nonactionable and might be closed if additional information isn't submitted promptly. From 0d2d25fb4457d3841c3a5c5dc9601d52b0b21423 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 10 Feb 2026 13:58:59 -0800 Subject: [PATCH 288/619] Learn Editor: Update zc-u8escapeencoding.md --- docs/build/reference/zc-u8escapeencoding.md | 15 +++++++++++++++ docs/build/toc.yml | 2 ++ 2 files changed, 17 insertions(+) create mode 100644 docs/build/reference/zc-u8escapeencoding.md diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md new file mode 100644 index 00000000000..57c547d54ef --- /dev/null +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -0,0 +1,15 @@ +--- +# Required metadata +# For more information, see https://learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata +# For valid values of ms.service, ms.prod, and ms.topic, see https://learn.microsoft.com/en-us/help/platform/metadata-taxonomies + +title: # Add a title for the browser tab +description: # Add a meaningful description for search results +author: Rastaban # GitHub alias +ms.author: philc # Microsoft alias +ms.service: # Add the ms.service or ms.prod value +# ms.prod: # To use ms.prod, uncomment it and delete ms.service +ms.topic: # Add the ms.topic value +ms.date: 02/10/2026 +--- +/Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) \ No newline at end of file diff --git a/docs/build/toc.yml b/docs/build/toc.yml index 57a47a03ffb..86c19d1e320 100644 --- a/docs/build/toc.yml +++ b/docs/build/toc.yml @@ -850,6 +850,8 @@ items: href: ../build/reference/zc-trigraphs-trigraphs-substitution.md - name: "/Zc:twoPhase- (disable two-phase name lookup)" href: ../build/reference/zc-twophase.md + - name: /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) + href: ./reference/zc-u8escapeencoding.md - name: "/Zc:wchar_t (wchar_t is native type)" href: ../build/reference/zc-wchar-t-wchar-t-is-native-type.md - name: "/Zc:zeroSizeArrayNew (Call member new/delete on arrays)" From 42da55530a8dea1ef49550ec1da3a1127cae713b Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 10 Feb 2026 14:18:42 -0800 Subject: [PATCH 289/619] Learn Editor: Update zc-u8escapeencoding.md --- docs/build/reference/zc-u8escapeencoding.md | 42 ++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md index 57c547d54ef..dc37991879e 100644 --- a/docs/build/reference/zc-u8escapeencoding.md +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -12,4 +12,44 @@ ms.service: # Add the ms.service or ms.prod value ms.topic: # Add the ms.topic value ms.date: 02/10/2026 --- -/Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) \ No newline at end of file +# /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) + +Keep the value of numeric escape sequences in `u8` string literals and don't re-encode them as utf-8. + +## Syntax + +> **/Zc:u8EscapeEncoding**[**-**] + +## Remarks + +This flag changes the way numeric escape sequences are interpreted in `u8` string literals. The behavior under `/Zc:u8EscapeEncoding` is to keep their value as-is. The behavior under `/Zc:u8EscapeEncoding-` is to re-encode the value in utf-8 as if it is a universal-character. The behavior of universal-character sequences is always to encode them as utf-8. + +This demonstrates the behavior: + +``` +#include +int main() +{ + const char8_t str[] = u8" \x00ff \u00ff "; + for(char8_t c : str) { + printf("0x%X ", c); + } + return 0; +} +``` + +Under `/Zc:u8EscapeEncoding` the escape sequence `\x00ff` is encoded as `0xFF` and the universal-character sequence `\u00ff` is encoded as the utf-8 sequence `0xC3 0xBF`. This gives the following output when run: + +``` +0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0 +``` + +Under `/Zc:u8EscapeEncoding-` the value of both `\x00ff` and `\u00ff` are re-encoded as the utf-8 sequence `0xC3 0xBF`. This gives the following output when run: + +``` +0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0 +``` + +## See also + +[/Zc (Conformance)](zc-conformance.md)
\ No newline at end of file From eb683190369af161e6d911fa2b137a632c020522 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 10 Feb 2026 14:19:04 -0800 Subject: [PATCH 290/619] update Metadata --- docs/build/reference/zc-u8escapeencoding.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md index dc37991879e..663b8880caf 100644 --- a/docs/build/reference/zc-u8escapeencoding.md +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -3,14 +3,14 @@ # For more information, see https://learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata # For valid values of ms.service, ms.prod, and ms.topic, see https://learn.microsoft.com/en-us/help/platform/metadata-taxonomies -title: # Add a title for the browser tab -description: # Add a meaningful description for search results +title: /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) +description: /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) author: Rastaban # GitHub alias ms.author: philc # Microsoft alias -ms.service: # Add the ms.service or ms.prod value -# ms.prod: # To use ms.prod, uncomment it and delete ms.service -ms.topic: # Add the ms.topic value +ms.service: visual-cpp +ms.topic: article ms.date: 02/10/2026 +ms.subservice: cpp-lang --- # /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) From eb5fd54000a63a779ed3fe033b8058a54c73c239 Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Tue, 10 Feb 2026 14:14:45 -0800 Subject: [PATCH 291/619] Add __preserve_none to more file locations --- docs/build/reference/decorated-names.md | 1 + docs/c-language/summary-of-declarations.md | 4 ++-- docs/cpp/toc.yml | 2 ++ .../compiler-errors-2/compiler-errors-c7500-through-c7999.md | 1 + docs/error-messages/tool-errors/name-decoration.md | 1 + 5 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/build/reference/decorated-names.md b/docs/build/reference/decorated-names.md index 6370302c0d6..e1742a83dc8 100644 --- a/docs/build/reference/decorated-names.md +++ b/docs/build/reference/decorated-names.md @@ -57,6 +57,7 @@ The form of decoration for a C function depends on the calling convention used i | **`__stdcall`** | Leading underscore (**`_`**) and a trailing at sign (**`@`**) followed by the number of bytes in the parameter list in decimal | | **`__fastcall`** | Leading and trailing at signs (**`@`**) followed by a decimal number representing the number of bytes in the parameter list | | **`__vectorcall`** | Two trailing at signs (**`@@`**) followed by a decimal number of bytes in the parameter list | +| **`__preserve_none`** | Two trailing at signs, an underscore and the 'A' character (**`@@_A`**) | For ARM64EC functions with C linkage (whether compiled as C or by using `extern "C"`), a **`#`** is prepended to the decorated name. diff --git a/docs/c-language/summary-of-declarations.md b/docs/c-language/summary-of-declarations.md index 117a5baaaab..35c95662840 100644 --- a/docs/c-language/summary-of-declarations.md +++ b/docs/c-language/summary-of-declarations.md @@ -21,7 +21,7 @@ ms.assetid: 53a5e9e5-1a33-40b5-9dea-7f669b479329  *`attribute`*1 *`attribute-seq`*opt1 *`attribute`*1, 2: one of\ - **`__asm`** **`__based`** **`__cdecl`** **`__clrcall`** **`__fastcall`** **`__inline`** **`__stdcall`** **`__thiscall`** **`__vectorcall`** + **`__asm`** **`__based`** **`__cdecl`** **`__clrcall`** **`__fastcall`** **`__inline`** **`__stdcall`** **`__thiscall`** **`__vectorcall`** **`__preserve_none`** *`init-declarator-list`*:\  *`init-declarator`*\ @@ -209,7 +209,7 @@ ms.assetid: 53a5e9e5-1a33-40b5-9dea-7f669b479329  **`_Static_assert`** **`(`** *`constant-expression`* **`,`** *`string-literal`* **`)`** **`;`** 1 This grammar element is Microsoft-specific.\ -2 For more information about these elements, see [`__asm`](../assembler/inline/asm.md), [`__clrcall`](../cpp/clrcall.md), [`__stdcall`](../cpp/stdcall.md), [`__based`](../cpp/based-grammar.md), [`__fastcall`](../cpp/fastcall.md), [`__thiscall`](../cpp/thiscall.md), [`__cdecl`](../cpp/cdecl.md), [`__inline`](../cpp/inline-functions-cpp.md), and [`__vectorcall`](../cpp/vectorcall.md).\ +2 For more information about these elements, see [`__asm`](../assembler/inline/asm.md), [`__clrcall`](../cpp/clrcall.md), [`__stdcall`](../cpp/stdcall.md), [`__based`](../cpp/based-grammar.md), [`__fastcall`](../cpp/fastcall.md), [`__thiscall`](../cpp/thiscall.md), [`__cdecl`](../cpp/cdecl.md), [`__inline`](../cpp/inline-functions-cpp.md), [`__preserve_none`](../cpp/preservenone.md) and [`__vectorcall`](../cpp/vectorcall.md).\ 3 This style is obsolete. ## See also diff --git a/docs/cpp/toc.yml b/docs/cpp/toc.yml index 1c9d0872d8e..1f17ade4e51 100644 --- a/docs/cpp/toc.yml +++ b/docs/cpp/toc.yml @@ -644,6 +644,8 @@ items: href: ../cpp/thiscall.md - name: __vectorcall href: ../cpp/vectorcall.md + - name: __preserve_none + href: ../cpp/preserve-none.md - name: "Calling example: Function prototype and call" items: - name: "Calling example: Function prototype and call" diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md index 5af9b70e4ff..96f98965178 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md @@ -241,6 +241,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7740 | cannot jump to case label | | Compiler error C7741 | ABI inconsistency: '*function*' was originally assumed to use '`C`' return semantics but now it requires '`C++`' return semantics | | [Compiler error C7742](compiler-error-c7742.md) | '*identifier*': a forward declaration of an enum can only use a simple identifier | +| Compiler error C7743 | `__preserve_none` calling convention is not supported | | Compiler error C7800 | duplicate explicit instantiation definition of '*name*' | | Compiler error C7801 | '*function*': if one declaration of '*identifier*' has the '`[[msvc::disptach]]`' attribute then all functions must have the attribute | | Compiler error C7802 | '*identifier*': a capability must resolve to an enumerator | diff --git a/docs/error-messages/tool-errors/name-decoration.md b/docs/error-messages/tool-errors/name-decoration.md index b6f77174881..2a4b3e4f6cf 100644 --- a/docs/error-messages/tool-errors/name-decoration.md +++ b/docs/error-messages/tool-errors/name-decoration.md @@ -19,6 +19,7 @@ The following table shows the linker name for various calling conventions. |Fast call naming convention (**`__fastcall`**)|`@test@0`|`?test@@YIXXZ`| |Standard call naming convention (**`__stdcall`**)|`_test@0`|`?test@@YGXXZ`| |Vector call naming convention (**`__vectorcall`**)|`test@@0`|`?test@@YQXXZ`| +|Preserve None naming convention (**`__preserve_none`**)|`test@@_A`|`NA`| Use `extern "C"` to call a C function from C++. `extern "C"` forces use of the C naming convention for non-class C++ functions. Be aware of compiler switches **/Tc** or **/Tp**, which tell the compiler to ignore the filename extension and compile the file as C or C++, respectively. These options may cause linker names you don't expect. From 91416dd351a90cca8d69e81833706c00c67ba670 Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Tue, 10 Feb 2026 16:04:10 -0800 Subject: [PATCH 292/619] More PR feedback --- docs/cpp/preservenone.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/docs/cpp/preservenone.md b/docs/cpp/preservenone.md index 97a40d3a453..f2caab2b0b2 100644 --- a/docs/cpp/preservenone.md +++ b/docs/cpp/preservenone.md @@ -3,7 +3,7 @@ **Microsoft Specific** > [!IMPORTANT] -> The **`__preserve_none`** calling convention is experimental and subject to change in future releases. Use at your own risk. +> The **`__preserve_none`** calling convention is experimental and subject to change. The **`__preserve_none`** calling convention specifies that arguments to functions are to be passed in registers, with most general-purpose registers treated as volatile. This calling convention is only supported for C programs and only applies to the x64 architecture. @@ -14,28 +14,25 @@ The following list shows the implementation of this calling convention. | Element | Implementation | |---------|----------------| | Argument-passing order | Arguments are passed in up to 10 registers in the following order: r13, r14, r15, rbx, rsi, rdi, r9, r8, rdx, rcx. If a hidden parameter is required for struct returns, it is passed in r13 (the first parameter register), reducing available parameter registers to 9. Registers r10-r12 are reserved for various CRT and Windows runtimes. All parameters must be passed through registers; stack-based parameters are not currently supported. | -| Register allocation strategy | Registers rcx, rdx, r8, and r9 are allocated towards the end and in reverse order to reduce register spilling. | +| Register allocation strategy | To help minimize register spilling, the allocator assigns r9, r8, rdx, and rcx only after other registers have been used. | | Argument limit | Functions are restricted to a maximum of 10 parameters. An error is generated if this limit is exceeded. | | Return value convention | Follows the regular x64 calling convention rules. Scalar return values are returned in rax. Structs of size 1, 2, 4, or 8 bytes are returned through the rax register. For structs of other sizes, a pointer to memory allocated by the caller and passed through the hidden parameter is returned in rax. | | Volatile registers | All general-purpose registers except rsp (stack pointer) and rbp (base pointer) are treated as volatile and do not need to be preserved across function calls. While r10 and r11 are volatile, they are not used for parameter passing to maintain compatibility with existing programs. | | Nonvolatile registers | Only rsp, rbp, and r12 are nonvolatile. | | Stack alignment | The stack must maintain 16-byte alignment. | -| Frame pointer | The rbp register and frame chain follow the /Gy switch settings. | +| Frame pointer | The rbp register and frame chain follow the [/Gy switch](../build/reference/gy-enable-function-level-linking.md) settings. | | Stack-maintenance responsibility | The callee is responsible for cleaning up its own stack space. | -| Shadow space | A 32-byte shadow space is reserved on the stack to maintain compatibility with profilers and debugging tools. | -| Floating-point support | Floating-point parameters are not supported in the current version. | +| Shadow space | A 32 byte shadow space is reserved on the stack to maintain compatibility with profilers and debugging tools. *(Shadow space is a reserved area on the stack where register parameters can be spilled if needed. It's typically 32 bytes (4 registers × 8 bytes each) reserved by the caller for the first 4 register parameters.)* | +| Floating-point support | Floating-point parameters are not supported. | | Name-decoration convention | Function names are decorated with @@_A suffix. | | Case-translation convention | No case translation performed. | -> [!NOTE] -> The number of registers used for parameter passing may change in future releases. - ## Restrictions and Limitations The **`__preserve_none`** calling convention has the following restrictions: - **C only**: Only supported for C programs. -- **x64 only**: Only the x64 backend provides support for this calling convention. +- **x64 only**: Only supported on x64. - **No floating-point**: Floating-point parameters are not supported. - **No variadic functions**: Variadic functions (varargs) are not supported. - **Parameter limit**: Maximum of 10 parameters, all passed through registers. From e5266e29e19ca4f83416fb765bf7b7463f2783dd Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 10 Feb 2026 16:47:21 -0800 Subject: [PATCH 293/619] Revise zc-u8escapeencoding documentation Updated metadata and improved clarity in the description and examples. --- docs/build/reference/zc-u8escapeencoding.md | 24 +++++++++------------ 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/docs/build/reference/zc-u8escapeencoding.md b/docs/build/reference/zc-u8escapeencoding.md index 663b8880caf..dcbe81575be 100644 --- a/docs/build/reference/zc-u8escapeencoding.md +++ b/docs/build/reference/zc-u8escapeencoding.md @@ -1,12 +1,8 @@ --- -# Required metadata -# For more information, see https://learn.microsoft.com/en-us/help/platform/learn-editor-add-metadata -# For valid values of ms.service, ms.prod, and ms.topic, see https://learn.microsoft.com/en-us/help/platform/metadata-taxonomies - title: /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) -description: /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) -author: Rastaban # GitHub alias -ms.author: philc # Microsoft alias +description: "Learn more about the compiler option /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings)" +author: Rastaban +ms.author: philc ms.service: visual-cpp ms.topic: article ms.date: 02/10/2026 @@ -14,7 +10,7 @@ ms.subservice: cpp-lang --- # /Zc:u8EscapeEncoding (numeric escape sequence encoding in u8 strings) -Keep the value of numeric escape sequences in `u8` string literals and don't re-encode them as utf-8. +Keep the value of numeric escape sequences in `u8` string literals without encoding them them as utf-8. ## Syntax @@ -22,11 +18,11 @@ Keep the value of numeric escape sequences in `u8` string literals and don't re- ## Remarks -This flag changes the way numeric escape sequences are interpreted in `u8` string literals. The behavior under `/Zc:u8EscapeEncoding` is to keep their value as-is. The behavior under `/Zc:u8EscapeEncoding-` is to re-encode the value in utf-8 as if it is a universal-character. The behavior of universal-character sequences is always to encode them as utf-8. +In C++ `u8` string literals are utf-8 encoded sequences of `char8_t`. This flag changes the way numeric escape sequences are interpreted in `u8` string literals. The behavior under `/Zc:u8EscapeEncoding` is to keep their value as-is. The behavior under `/Zc:u8EscapeEncoding-` is to re-encode the value in utf-8 as if it is a universal-character. The behavior of universal-character sequences is always to encode them as utf-8. -This demonstrates the behavior: +The following example shows the behavior: -``` +```cpp #include int main() { @@ -40,16 +36,16 @@ int main() Under `/Zc:u8EscapeEncoding` the escape sequence `\x00ff` is encoded as `0xFF` and the universal-character sequence `\u00ff` is encoded as the utf-8 sequence `0xC3 0xBF`. This gives the following output when run: -``` +```output 0x20 0xFF 0x20 0xC3 0xBF 0x20 0x0 ``` Under `/Zc:u8EscapeEncoding-` the value of both `\x00ff` and `\u00ff` are re-encoded as the utf-8 sequence `0xC3 0xBF`. This gives the following output when run: -``` +```output 0x20 0xC3 0xBF 0x20 0xC3 0xBF 0x20 0x0 ``` ## See also -[/Zc (Conformance)](zc-conformance.md)
\ No newline at end of file +[/Zc (Conformance)](zc-conformance.md)
From f3077d8638b52539e1901cdf0b6db21b8fad50ce Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Wed, 11 Feb 2026 10:14:22 -0800 Subject: [PATCH 294/619] Rename to preserve-none.md and other PR feedback --- docs/c-language/summary-of-declarations.md | 2 +- docs/cpp/argument-passing-and-naming-conventions.md | 2 +- docs/cpp/{preservenone.md => preserve-none.md} | 13 ++++++++++--- .../compiler-errors-c7500-through-c7999.md | 2 +- 4 files changed, 13 insertions(+), 6 deletions(-) rename docs/cpp/{preservenone.md => preserve-none.md} (92%) diff --git a/docs/c-language/summary-of-declarations.md b/docs/c-language/summary-of-declarations.md index 35c95662840..975beb742bc 100644 --- a/docs/c-language/summary-of-declarations.md +++ b/docs/c-language/summary-of-declarations.md @@ -209,7 +209,7 @@ ms.assetid: 53a5e9e5-1a33-40b5-9dea-7f669b479329  **`_Static_assert`** **`(`** *`constant-expression`* **`,`** *`string-literal`* **`)`** **`;`** 1 This grammar element is Microsoft-specific.\ -2 For more information about these elements, see [`__asm`](../assembler/inline/asm.md), [`__clrcall`](../cpp/clrcall.md), [`__stdcall`](../cpp/stdcall.md), [`__based`](../cpp/based-grammar.md), [`__fastcall`](../cpp/fastcall.md), [`__thiscall`](../cpp/thiscall.md), [`__cdecl`](../cpp/cdecl.md), [`__inline`](../cpp/inline-functions-cpp.md), [`__preserve_none`](../cpp/preservenone.md) and [`__vectorcall`](../cpp/vectorcall.md).\ +2 For more information about these elements, see [`__asm`](../assembler/inline/asm.md), [`__clrcall`](../cpp/clrcall.md), [`__stdcall`](../cpp/stdcall.md), [`__based`](../cpp/based-grammar.md), [`__fastcall`](../cpp/fastcall.md), [`__thiscall`](../cpp/thiscall.md), [`__cdecl`](../cpp/cdecl.md), [`__inline`](../cpp/inline-functions-cpp.md), [`__preserve_none`](../cpp/preserve-none.md) and [`__vectorcall`](../cpp/vectorcall.md).\ 3 This style is obsolete. ## See also diff --git a/docs/cpp/argument-passing-and-naming-conventions.md b/docs/cpp/argument-passing-and-naming-conventions.md index d2929781fc0..11dfa80a2e9 100644 --- a/docs/cpp/argument-passing-and-naming-conventions.md +++ b/docs/cpp/argument-passing-and-naming-conventions.md @@ -31,7 +31,7 @@ The following calling conventions are supported by the Visual C/C++ compiler. |[__fastcall](../cpp/fastcall.md)|Callee|Stored in registers, then pushed on stack| |[__thiscall](../cpp/thiscall.md)|Callee|Pushed on stack; **`this`** pointer stored in ECX| |[__vectorcall](../cpp/vectorcall.md)|Callee|Stored in registers, then pushed on stack in reverse order (right to left)| -|[__preserve_none](../cpp/preservenone.md)|Callee|Stored in registers only| +|[__preserve_none](../cpp/preserve-none.md)|Callee|Stored in registers only| For related information, see [Obsolete Calling Conventions](../cpp/obsolete-calling-conventions.md). diff --git a/docs/cpp/preservenone.md b/docs/cpp/preserve-none.md similarity index 92% rename from docs/cpp/preservenone.md rename to docs/cpp/preserve-none.md index f2caab2b0b2..94ba81233c8 100644 --- a/docs/cpp/preservenone.md +++ b/docs/cpp/preserve-none.md @@ -1,3 +1,10 @@ +--- +description: "Learn more about: __preserve_none" +title: "__preserve_none" +ms.date: 02/11/2026 +f1_keywords: ["__preserve_none", "register spilling", "non preserving calling convention"] +helpviewer_keywords: ["__preserve_none keyword"] +--- # __preserve_none **Microsoft Specific** @@ -62,6 +69,6 @@ typedef int (__preserve_none *callback_ptr)(void* context, int value, int flags) ## See also -[Argument Passing and Naming Conventions](argument-passing-and-naming-conventions?view=msvc-170) -[x64 Calling Convention](../build/x64-calling-convention?view=msvc-170) -[Keywords](keywords-cpp?view=msvc-170) +[Argument Passing and Naming Conventions](argument-passing-and-naming-conventions.md) +[x64 Calling Convention](../build/x64-calling-convention.md) +[Keywords](keywords-cpp.md) diff --git a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md index 96f98965178..02b5801c7bd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md +++ b/docs/error-messages/compiler-errors-2/compiler-errors-c7500-through-c7999.md @@ -241,7 +241,7 @@ The articles in this section of the documentation explain a subset of the error | Compiler error C7740 | cannot jump to case label | | Compiler error C7741 | ABI inconsistency: '*function*' was originally assumed to use '`C`' return semantics but now it requires '`C++`' return semantics | | [Compiler error C7742](compiler-error-c7742.md) | '*identifier*': a forward declaration of an enum can only use a simple identifier | -| Compiler error C7743 | `__preserve_none` calling convention is not supported | +| Compiler error C7743 | [`__preserve_none` calling convention](../../cpp/preserve-none.md) is not supported | | Compiler error C7800 | duplicate explicit instantiation definition of '*name*' | | Compiler error C7801 | '*function*': if one declaration of '*identifier*' has the '`[[msvc::disptach]]`' attribute then all functions must have the attribute | | Compiler error C7802 | '*identifier*': a capability must resolve to an enumerator | From 7b7e5c8de2b8335c90bade7a0d3313b1cc5a248b Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Thu, 12 Feb 2026 00:05:49 +0000 Subject: [PATCH 295/619] PR comments and feedback --- docs/windows/latest-supported-vc-redist.md | 4 +++ docs/windows/toc.yml | 2 ++ ...oubleshoot-vcredist-installation-issues.md | 29 +++++++++++-------- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 33c92e2fa76..51c36772683 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -20,6 +20,9 @@ ms.author: msaleh > [!NOTE] > Are you here to download Visual Studio? Go to [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/). +> [!NOTE] +> Having issues installing the Visual C++ Redistributable? Check out the [troubleshooting guide](troubleshoot-vcredist-installation-issues.md). + This topic is for developers who need to install the Visual C++ runtime libraries with their app. If you're an end user trying to fix an app by updating the Visual C++ runtime libraries, contact the app vendor for instructions. To find the download you need, choose your version of Visual Studio from the table below. Each link takes you to the appropriate download section. @@ -142,6 +145,7 @@ Download Redistributable files for other languages and architectures from: - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) - [How to audit Visual C++ Runtime version usage](redist-version-auditing.md) - [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) +- [Troubleshoot Visual C++ Redistributable installation issues](troubleshoot-vcredist-installation-issues.md) **Release notes** diff --git a/docs/windows/toc.yml b/docs/windows/toc.yml index 6b6e16a2dae..b0efca5195d 100644 --- a/docs/windows/toc.yml +++ b/docs/windows/toc.yml @@ -149,6 +149,8 @@ items: href: ../windows/latest-supported-vc-redist.md - name: How to audit Visual C++ Runtime version usage href: ../windows/redist-version-auditing.md + - name: Troubleshoot Visual C++ Redistributable installation issues + href: ../windows/troubleshoot-vcredist-installation-issues.md - name: Deployment examples expanded: false items: diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md index d06ce7b7985..15b6b44e4f5 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -76,14 +76,12 @@ On rare occasions, outdated system components can cause installation issues. ### Method 4: Manually Run the Visual C++ Redistributable installer -1. Go to `%ProgramData%\Microsoft\VisualStudio\Packages` -2. Open the folders: - - `Microsoft.VisualCpp.Redist.14,version=,chip=x64` - - `Microsoft.VisualCpp.Redist.14,version=,chip=x86` -3. Run: - - `vc_redist.x64.exe` - - `vc_redist.x86.exe` -4. Retry the Visual Studio Installer. +> [!NOTE] +> The VS Installer might prompt for a reboot when VC Redist is installed separately. + +1. Download the [latest VC Redist installer](latest-supported-vc-redist.md). +2. Run the VC Redist installer. +3. Retry the Visual Studio Installer. If the manual installation fails, follow [methods 1 and 2](#method-1). @@ -118,7 +116,7 @@ This method helps in case the installer metadata is corrupted, deleting the inst Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. Because many factors can produce a 1603 code, the code by itself doesn't provide enough information to diagnose the cause of the issue. -Often, the log files produced by the VC Redistt installer contain relevant information that might lead to a solution or workaround. +Often, the log files produced by the VC Redist installer contain relevant information that might lead to a solution or workaround. The [Common issues](#common-issues) section describes examples of how to diagnose common installation errors and steps that might resolve them. If your issue isn't found here, then follow the instructions to [report an issue in the Visual C++ Redistributable installer](#report-a-visual-c-redistributable-installation-problem). @@ -236,17 +234,17 @@ For example: . **Version 14.30 to 14.44** -The download links use the `https://aka.ms/vs/17/release//VC_redist.exe` pattern. +The download links use the `https://aka.ms/vs/17/release//VC_redist..exe` pattern. For example: . **Version 14.20 to 14.29** -The download links use the `https://aka.ms/vs/16/release//VC_redist.exe` pattern. +The download links use the `https://aka.ms/vs/16/release//VC_redist..exe` pattern. For example: **Version 14.10 or later** -The download links use the `https://aka.ms/vs/15/release//VC_redist.exe` pattern. +The download links use the `https://aka.ms/vs/15/release//VC_redist..exe` pattern. For example: If the aka.ms links don't work, you might be able to find the version you're looking for through a Bing search. @@ -266,3 +264,10 @@ Your report must include the following information about your environment: - Logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. Feedback without this information, especially without logs, is nonactionable and might be closed if additional information isn't submitted promptly. + +## See also + +- [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) +- [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) +- [How to audit Visual C++ Runtime version usage](redist-version-auditing.md) +- [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) From cabdbccde8e57b0d2ad562ee0b7f5723531591f1 Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Wed, 11 Feb 2026 16:35:33 -0800 Subject: [PATCH 296/619] PR feedback 3 --- docs/build/reference/decorated-names.md | 10 +++++----- docs/cpp/preserve-none.md | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/build/reference/decorated-names.md b/docs/build/reference/decorated-names.md index e1742a83dc8..4b5a674a640 100644 --- a/docs/build/reference/decorated-names.md +++ b/docs/build/reference/decorated-names.md @@ -53,11 +53,11 @@ The form of decoration for a C function depends on the calling convention used i | Calling convention | Decoration | |--|--| -| **`__cdecl`** | Leading underscore (**`_`**) | -| **`__stdcall`** | Leading underscore (**`_`**) and a trailing at sign (**`@`**) followed by the number of bytes in the parameter list in decimal | -| **`__fastcall`** | Leading and trailing at signs (**`@`**) followed by a decimal number representing the number of bytes in the parameter list | -| **`__vectorcall`** | Two trailing at signs (**`@@`**) followed by a decimal number of bytes in the parameter list | -| **`__preserve_none`** | Two trailing at signs, an underscore and the 'A' character (**`@@_A`**) | +| [**`__cdecl`**](../../cpp/cdecl.md) | Leading underscore (**`_`**) | +| [**`__stdcall`**](../../cpp/stdcall.md) | Leading underscore (**`_`**) and a trailing at sign (**`@`**) followed by the number of bytes in the parameter list in decimal | +| [**`__fastcall`**](../../cpp/fastcall.md) | Leading and trailing at signs (**`@`**) followed by a decimal number representing the number of bytes in the parameter list | +| [**`__vectorcall`**](../../cpp/vectorcall.md) | Two trailing at signs (**`@@`**) followed by a decimal number of bytes in the parameter list | +| [**`__preserve_none`**](../../cpp/preserve-none.md) | Two trailing at signs, an underscore and the 'A' character (**`@@_A`**) | For ARM64EC functions with C linkage (whether compiled as C or by using `extern "C"`), a **`#`** is prepended to the decorated name. diff --git a/docs/cpp/preserve-none.md b/docs/cpp/preserve-none.md index 94ba81233c8..8aebac117dc 100644 --- a/docs/cpp/preserve-none.md +++ b/docs/cpp/preserve-none.md @@ -12,13 +12,13 @@ helpviewer_keywords: ["__preserve_none keyword"] > [!IMPORTANT] > The **`__preserve_none`** calling convention is experimental and subject to change. -The **`__preserve_none`** calling convention specifies that arguments to functions are to be passed in registers, with most general-purpose registers treated as volatile. This calling convention is only supported for C programs and only applies to the x64 architecture. +The **`__preserve_none`** calling convention specifies that arguments to functions are to be passed in registers, with most general-purpose registers treated as volatile. This calling convention is only supported for C programs and only applies to x64 code. This calling convention is designed to minimize register spilling and improve performance. -The following list shows the implementation of this calling convention. +The following list shows the behavior of this calling convention. -| Element | Implementation | +| Element | Behavior | |---------|----------------| | Argument-passing order | Arguments are passed in up to 10 registers in the following order: r13, r14, r15, rbx, rsi, rdi, r9, r8, rdx, rcx. If a hidden parameter is required for struct returns, it is passed in r13 (the first parameter register), reducing available parameter registers to 9. Registers r10-r12 are reserved for various CRT and Windows runtimes. All parameters must be passed through registers; stack-based parameters are not currently supported. | | Register allocation strategy | To help minimize register spilling, the allocator assigns r9, r8, rdx, and rcx only after other registers have been used. | @@ -69,6 +69,6 @@ typedef int (__preserve_none *callback_ptr)(void* context, int value, int flags) ## See also -[Argument Passing and Naming Conventions](argument-passing-and-naming-conventions.md) -[x64 Calling Convention](../build/x64-calling-convention.md) +[Argument Passing and Naming Conventions](argument-passing-and-naming-conventions.md)\ +[x64 Calling Convention](../build/x64-calling-convention.md)\ [Keywords](keywords-cpp.md) From 266cf98a4ec8d313c92581ea4812a688742dd63d Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Thu, 12 Feb 2026 10:46:43 -0800 Subject: [PATCH 297/619] Acrolinx fixes --- docs/cpp/preserve-none.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/cpp/preserve-none.md b/docs/cpp/preserve-none.md index 8aebac117dc..4022e4684e0 100644 --- a/docs/cpp/preserve-none.md +++ b/docs/cpp/preserve-none.md @@ -20,17 +20,17 @@ The following list shows the behavior of this calling convention. | Element | Behavior | |---------|----------------| -| Argument-passing order | Arguments are passed in up to 10 registers in the following order: r13, r14, r15, rbx, rsi, rdi, r9, r8, rdx, rcx. If a hidden parameter is required for struct returns, it is passed in r13 (the first parameter register), reducing available parameter registers to 9. Registers r10-r12 are reserved for various CRT and Windows runtimes. All parameters must be passed through registers; stack-based parameters are not currently supported. | -| Register allocation strategy | To help minimize register spilling, the allocator assigns r9, r8, rdx, and rcx only after other registers have been used. | +| Argument-passing order | Arguments are passed in up to 10 registers in the following order: `r13`, `r14`, `r15`, `rbx`, `rsi`, `rdi`, `r9`, `r8`, `rdx`, `rcx`. If a hidden parameter is required for struct returns, it's passed in `r13` (the first parameter register), reducing available parameter registers to 9. Registers `r10`-`r12` are reserved for various CRT and Windows runtimes. All parameters must be passed through registers; stack-based parameters aren't currently supported. | +| Register allocation strategy | To help minimize register spilling, the allocator assigns `r9`, `r8`, `rdx`, and `rcx` only after other registers have been used. | | Argument limit | Functions are restricted to a maximum of 10 parameters. An error is generated if this limit is exceeded. | -| Return value convention | Follows the regular x64 calling convention rules. Scalar return values are returned in rax. Structs of size 1, 2, 4, or 8 bytes are returned through the rax register. For structs of other sizes, a pointer to memory allocated by the caller and passed through the hidden parameter is returned in rax. | -| Volatile registers | All general-purpose registers except rsp (stack pointer) and rbp (base pointer) are treated as volatile and do not need to be preserved across function calls. While r10 and r11 are volatile, they are not used for parameter passing to maintain compatibility with existing programs. | -| Nonvolatile registers | Only rsp, rbp, and r12 are nonvolatile. | +| Return value convention | Follows the regular x64 calling convention rules. Scalar return values are returned in `rax`. Structs of size 1, 2, 4, or 8 bytes are returned through the `rax` register. For structs of other sizes, a pointer to memory allocated by the caller and passed through the hidden parameter is returned in `rax`. | +| Volatile registers | All general-purpose registers except `rsp` (stack pointer) and `rbp` (base pointer) are treated as volatile and don't need to be preserved across function calls. While `r10` and `r11` are volatile, they aren't used for parameter passing to maintain compatibility with existing programs. | +| Nonvolatile registers | Only `rsp`, `rbp`, and `r12` are nonvolatile. | | Stack alignment | The stack must maintain 16-byte alignment. | -| Frame pointer | The rbp register and frame chain follow the [/Gy switch](../build/reference/gy-enable-function-level-linking.md) settings. | +| Frame pointer | The `rbp` register and frame chain follow the [/Gy switch](../build/reference/gy-enable-function-level-linking.md) settings. | | Stack-maintenance responsibility | The callee is responsible for cleaning up its own stack space. | -| Shadow space | A 32 byte shadow space is reserved on the stack to maintain compatibility with profilers and debugging tools. *(Shadow space is a reserved area on the stack where register parameters can be spilled if needed. It's typically 32 bytes (4 registers × 8 bytes each) reserved by the caller for the first 4 register parameters.)* | -| Floating-point support | Floating-point parameters are not supported. | +| Shadow space | A 32-byte shadow space is reserved on the stack to maintain compatibility with profilers and debugging tools. *(Shadow space is a reserved area on the stack where register parameters can be spilled if needed. It's typically 32-bytes (4 registers × 8 bytes each) reserved by the caller for the first 4 register parameters.)* | +| Floating-point support | Floating-point parameters aren't supported. | | Name-decoration convention | Function names are decorated with @@_A suffix. | | Case-translation convention | No case translation performed. | @@ -40,8 +40,8 @@ The **`__preserve_none`** calling convention has the following restrictions: - **C only**: Only supported for C programs. - **x64 only**: Only supported on x64. -- **No floating-point**: Floating-point parameters are not supported. -- **No variadic functions**: Variadic functions (varargs) are not supported. +- **No floating-point**: Floating-point parameters aren't supported. +- **No variadic functions**: Variadic functions (varargs) aren't supported. - **Parameter limit**: Maximum of 10 parameters, all passed through registers. ## Use Cases @@ -49,7 +49,7 @@ The **`__preserve_none`** calling convention has the following restrictions: The **`__preserve_none`** calling convention is designed for performance-critical scenarios where: - Most functions in the codebase use the **`__preserve_none`** calling convention -- Used in conjunction with `msvc::musttail` to tail call between functions with no stack usage +- Used with `msvc::musttail` to tail call between functions with no stack usage - Minimizing register spilling is important for performance - The codebase is compatible with treating most registers as volatile From 6aed91d23a63f34525c2b5f02ba475c8bc0833a4 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 12 Feb 2026 11:27:40 -0800 Subject: [PATCH 298/619] address acrolinx --- docs/cpp/preserve-none.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/cpp/preserve-none.md b/docs/cpp/preserve-none.md index 4022e4684e0..f90d613bc96 100644 --- a/docs/cpp/preserve-none.md +++ b/docs/cpp/preserve-none.md @@ -29,7 +29,7 @@ The following list shows the behavior of this calling convention. | Stack alignment | The stack must maintain 16-byte alignment. | | Frame pointer | The `rbp` register and frame chain follow the [/Gy switch](../build/reference/gy-enable-function-level-linking.md) settings. | | Stack-maintenance responsibility | The callee is responsible for cleaning up its own stack space. | -| Shadow space | A 32-byte shadow space is reserved on the stack to maintain compatibility with profilers and debugging tools. *(Shadow space is a reserved area on the stack where register parameters can be spilled if needed. It's typically 32-bytes (4 registers × 8 bytes each) reserved by the caller for the first 4 register parameters.)* | +| Shadow space | 32 bytes are reserved on the stack as a shadow space to maintain compatibility with profilers and debugging tools. *(Shadow space is a reserved area on the stack where register parameters can be spilled if needed. It's typically 32 bytes (4 registers × 8 bytes each) that the caller reserves for the first four register parameters.)* | | Floating-point support | Floating-point parameters aren't supported. | | Name-decoration convention | Function names are decorated with @@_A suffix. | | Case-translation convention | No case translation performed. | From 302a0dbd9924d352a0bdcf440feae6f7b40c1678 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Fri, 13 Feb 2026 14:05:01 -0800 Subject: [PATCH 299/619] Tyler's feedback --- ...oubleshoot-vcredist-installation-issues.md | 136 ++++++++---------- 1 file changed, 57 insertions(+), 79 deletions(-) diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md index 15b6b44e4f5..28681b02528 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -3,7 +3,7 @@ title: "Troubleshoot Visual C++ Redistributable installation issues" description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable as a standalone installation and as part of the Visual Studio Installer." author: vicroms ms.author: viromer -ms.date: 02/10/2025 +ms.date: 02/12/2026 ms.topic: troubleshooting-general helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC Redist" ] --- @@ -11,21 +11,21 @@ helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (VC Redist) installer or the Visual Studio (VS) Installer. -If you're experiencing such issues, we recommend that you first attempt installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). +If you're experiencing such issues, first try installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). ## Collect failure logs The first step to diagnose an issue with the Visual C++ Redistributable installer is to collect its failure logs. 1. Download the [Microsoft Visual Studio and .NET Log Collection Tool](). -2. Run `Collect.exe`. -3. Extract the contents of `%TEMP%/vscollect.zip`. +1. Run `Collect.exe`. +1. Extract the contents of `%TEMP%/vscollect.zip`. Once you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. ### Other log locations -The VC Redist installer is often executed as a prerequisite of other products, in such cases the installation log might be found in a different path. +The VC Redist installer is often executed as a prerequisite of other products. In such cases, the installation log might be found in a different path. For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option that overrides the default log location. @@ -47,23 +47,23 @@ In such cases, the path to the logs can be found by reading that product's own l This section describes general troubleshooting methods you can try to resolve issues with the VC Redist installer. -### Method 1: Disable antivirus software temporarily +### Disable antivirus software temporarily Security products often block installation of VC Redist components. 1. Turn off Windows Defender real-time protection. -2. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). -3. Retry the installation. -4. Reenable any disabled protection software. +1. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). +1. Retry the installation. +1. Reenable any disabled protection software. -### Method 2: Run the Visual C++ Redistributable installer as Administrator +### Run the Visual C++ Redistributable installer as administrator File-access failures are heavily correlated with insufficient permissions. -1. Right-click the VC Redist installer and select **Run as administrator**. -2. Retry the installation. +1. Right-click the VC Redist installer and select **Run as Administrator**. +1. Retry the installation. -### Method 3: Check for Windows System Updates +### Check for Windows System Updates On rare occasions, outdated system components can cause installation issues. @@ -71,33 +71,32 @@ On rare occasions, outdated system components can cause installation issues. 2. Reboot your PC. 3. Retry the installation. -> [!IMPORTANT] -> The following troubleshooting methods apply when VC Redist is installed as a component of the Visual Studio Installer. +## General troubleshooting steps when using Visual Studio Installer -### Method 4: Manually Run the Visual C++ Redistributable installer +### Manually install Visual C++ Redistributable > [!NOTE] > The VS Installer might prompt for a reboot when VC Redist is installed separately. 1. Download the [latest VC Redist installer](latest-supported-vc-redist.md). -2. Run the VC Redist installer. -3. Retry the Visual Studio Installer. +1. Run the VC Redist installer. +1. Retry the Visual Studio Installer. If the manual installation fails, follow [methods 1 and 2](#method-1). -### Method 5: Clear the Visual Studio Installer cache +### Clear the Visual Studio Installer cache -1. Open `%ProgramData%\Microsoft\VisualStudio\Packages` -2. Delete all files inside the folder to force the Visual Studio Installer to regenerate them. -3. Retry the Visual Studio Installer. +1. Open `%ProgramData%\Microsoft\VisualStudio\Packages`. +1. Delete all files inside the folder to force the Visual Studio Installer to regenerate them. +1. Retry the Visual Studio Installer. -### Method 6: Repair the Visual Studio Installer +### Repair the Visual Studio Installer 1. Go to **Settings** > **Apps** > **Installed Apps** -2. Select **Visual Studio Installer** > **Modify** > **Repair** -3. Retry the Visual Studio Installer. +1. Select **Visual Studio Installer** > **Modify** > **Repair** +1. Retry the Visual Studio Installer. -### Method 7: Delete the Visual Studio Installer folder +### Delete the Visual Studio Installer folder > [!WARNING] > This method requires that you have the Visual Studio Installer Setup downloaded (VisualStudioSetup.exe). @@ -106,8 +105,8 @@ If the manual installation fails, follow [methods 1 and 2](#method-1). This method helps in case the installer metadata is corrupted, deleting the installer folder forces the Visual Studio Installer to regenerate it. 1. Download `VisualStudioSetup.exe` from . -2. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`, you might be prompted to run this operation as Administrator. -3. Run `VisualStudioSetup.exe`. +1. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`, you might be prompted to run this operation as administrator. +1. Run `VisualStudioSetup.exe`. ## Common issues @@ -123,35 +122,32 @@ If your issue isn't found here, then follow the instructions to [report an issue ### Access denied -An issue occurs during installation of VC Redist failing with return code 5. -The error code typically indicates a permissions issue; specifically, an access denied issue. +Installation fails with error code 5. This error code typically indicates a permissions issue; specifically, an access denied issue. **Steps to resolve** 1. Disable antivirus, group policies, and firewalls temporarily. -2. Run the VC Redist installer. -3. Reenable any disabled protection software. +1. Run the VC Redist installer. +1. Re-enable any disabled protection software. -If the installation fails, try to run the VC Redist installer as Administrator. +If the installation fails, try to run the VC Redist installer as administrator. ### File is locked -An issue occurs during the installation of VC Redist failing with return code 32. -Likely causes include blocked permissions, interference from antivirus, group policies, or corrupted files. +Installation fails with error code 32. This error code is tipically caused by locked files, interference from antivirus, group policies, or corrupted files. **Steps to resolve** 1. Close any running software in your PC. -2. Try the methods in [General troubleshooting steps](#general-troubleshooting-steps). +1. Try the methods in [General troubleshooting steps](#general-troubleshooting-steps). If the installation fails, try to restart your PC to release any locked files. ### Corrupt or invalid installer package -The issue involves an error during installation of VC Redist using the Visual Studio Installer with error code 1620. -Error code 1620 indicates that a Windows Installer package couldn't be opened, likely due to corruption or invalid files. +Installation fails with error code 1620. This error code indicates that a Windows Installer package (MSI) couldn't be opened, likely due to corruption or invalid files. -One or more of these error codes are present in the logs: +The presence of these error messages indicates a corrupted cache. - Error code 1620: indicates that the Windows Installer package couldn't be opened. - Error code 0x80091007: several payloads failed verification due to hash mismatches. @@ -159,17 +155,14 @@ One or more of these error codes are present in the logs: **Steps to resolve** -Methods 5, 6, and 7 in the [General troubleshoot steps](#file-is-locked) might help solve this issue by cleaning the package cache. +Try the steps in the [General troubleshooting steps when using Visual Studio Installer](#general-troubleshooting-steps-when-using-visual-studio-installer). ### Older version can't be removed -A corrupted Windows Installer cache produces error code 1714, indicating a failure to remove a previous version of VC Redist. +Installation fails with the error code 1714. This error code indicates a corrupted Windows installre cache that results in failure to remove a previous version of VC Redist. The presence of these error messages indicates a corrupted cache. -> [!NOTE] -> Timestamps are removed from these examples to condense the output. - In `dd_vcredist__.log` ```log @@ -205,56 +198,41 @@ From the log files, take note of the VC Redist version causing the issue. Method 1: Use the Windows Installer. -1. Try using the Windows Installer to manually remove the old VC Redist version. - If prompted, let the Windows Installer Troubleshooter attempt to fix the issue. -2. Retry the installation. +1. Try using the Windows Installer to manually remove the old VC Redist version. If prompted, let the Windows Installer Troubleshooter attempt to fix the issue. +1. Retry the installation. Method 2: Manually remove the old version. -1. Download the VC Redist installer for the old version by following the steps in - [Download old versions of the Visual C++ Redistributable installer](#old-vcredist-versions) -2. Run the installer to uninstall the old VC Redist. -3. Retry the installation. +1. Download the VC Redist installer for the old version. Follow the [steps to download and old version of the VC Redist installer](#old-vcredist-versions) +1. Run the installer to uninstall the old VC Redist. +1. Retry the installation. ## Download old versions of the Visual C++ Redistributable installer > [!WARNING] > Never install a Visual C++ Redistributable installer that wasn't downloaded from a Microsoft site. -The VC Redist installer can be downloaded from [my.visualstudio.com](), search for Visual C++ Redistributable +Download the VC Redist installer from [my.visualstudio.com](). Search for Visual C++ Redistributable on the downloads page. The latest supported VC Redist version for each version of Visual Studio can be found in [this article](/cpp/windows/latest-supported-vc-redist). -To access older or legacy versions follow these steps: - -**Version 14.50 or later** - -The download links use the `https://aka.ms/vs/18/release//VC_redist..exe` pattern. -For example: . - -**Version 14.30 to 14.44** - -The download links use the `https://aka.ms/vs/17/release//VC_redist..exe` pattern. -For example: . - -**Version 14.20 to 14.29** - -The download links use the `https://aka.ms/vs/16/release//VC_redist..exe` pattern. -For example: - -**Version 14.10 or later** +Links for older or legacy versions: -The download links use the `https://aka.ms/vs/15/release//VC_redist..exe` pattern. -For example: +| Version range | Download link template | Example | +|----------------|---------------------------------------------------------------|----------------------------------------------------------------| +| 14.50 or later | `https://aka.ms/vs/18/release//VC_redist..exe` | | +| 14.30 to 14.44 | `https://aka.ms/vs/17/release//VC_redist..exe` | | +| 14.20 to 14.29 | `https://aka.ms/vs/16/release//VC_redist..exe` | | +| 14.10 to 14.19 | `https://aka.ms/vs/15/release//VC_redist..exe` | | -If the aka.ms links don't work, you might be able to find the version you're looking for through a Bing search. +You might be able to find installers for older versions through a Bing search. However, make sure that the download comes from a Microsoft site and that the installer is signed by Microsoft. ## Report a Visual C++ Redistributable installation problem The list of [common issues](#common-issues) was collected from feedback reported to Microsoft through [Developer Community](). -If you encounter an issue not found in that section, or if the steps in this troubleshooting guide don't resolve your issue. Use the [Report a Problem]() form to create a new feedback item. +If you encounter an issue not found in that section, or if the steps in this troubleshooting guide don't resolve your issue, use the [Report a Problem]() form to create a new feedback item. Your report must include the following information about your environment: @@ -263,11 +241,11 @@ Your report must include the following information about your environment: - If installing through the Visual Studio Installer, version of the VS Installer. - Logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. -Feedback without this information, especially without logs, is nonactionable and might be closed if additional information isn't submitted promptly. +Feedback without this information, especially without logs, is nonactionable and may be closed if additional information isn't submitted promptly. ## See also -- [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) -- [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) -- [How to audit Visual C++ Runtime version usage](redist-version-auditing.md) -- [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) +[Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md)\ +[C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md)\ +[How to audit Visual C++ Runtime version usage](redist-version-auditing.md)\ +[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) From b67997ce6b8bc0429e2b65991e041618b4a3ecba Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Fri, 13 Feb 2026 14:16:34 -0800 Subject: [PATCH 300/619] Add common errors at a glance section suggested by Tyler --- ...troubleshoot-vcredist-installation-issues.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md index 28681b02528..1b812a36678 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -82,7 +82,7 @@ On rare occasions, outdated system components can cause installation issues. 1. Run the VC Redist installer. 1. Retry the Visual Studio Installer. -If the manual installation fails, follow [methods 1 and 2](#method-1). +If the manual installation fails, follow the [general troubleshooting steps for the standalone VC Redist installer](#general-troubleshooting-steps). ### Clear the Visual Studio Installer cache @@ -110,6 +110,14 @@ This method helps in case the installer metadata is corrupted, deleting the inst ## Common issues +### Common errors at a glance + +* [Generic installation failure (return code 1603)](#return-code-1603) +* [Access denied (return code 5)](#access-denied) +* [File is locked (return code 32)](#file-is-locked) +* [Corrupt or invliad installer package (return code 1620)](#corrupt-or-invalid-installer-package) +* [Older version can't be removed (return code 1714)](#older-version-cant-be-removed) + ### Return code 1603 Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. @@ -134,7 +142,7 @@ If the installation fails, try to run the VC Redist installer as administrator. ### File is locked -Installation fails with error code 32. This error code is tipically caused by locked files, interference from antivirus, group policies, or corrupted files. +Installation fails with error code 32. Files in use by another process, interference from antivirus software, group policies, or corrupted files are common causes. **Steps to resolve** @@ -159,7 +167,7 @@ Try the steps in the [General troubleshooting steps when using Visual Studio Ins ### Older version can't be removed -Installation fails with the error code 1714. This error code indicates a corrupted Windows installre cache that results in failure to remove a previous version of VC Redist. +Installation fails with the error code 1714. This error code indicates a corrupted Windows Installer cache that results in failure to remove a previous version of VC Redist. The presence of these error messages indicates a corrupted cache. @@ -211,6 +219,7 @@ Method 2: Manually remove the old version. > [!WARNING] > Never install a Visual C++ Redistributable installer that wasn't downloaded from a Microsoft site. +> Never install a Visual C++ Redistributable installer that isn't signed by Microsoft. Download the VC Redist installer from [my.visualstudio.com](). Search for Visual C++ Redistributable on the downloads page. @@ -226,7 +235,7 @@ Links for older or legacy versions: | 14.10 to 14.19 | `https://aka.ms/vs/15/release//VC_redist..exe` | | You might be able to find installers for older versions through a Bing search. -However, make sure that the download comes from a Microsoft site and that the installer is signed by Microsoft. +Only download VC Redist installers from a Microsoft site. Only install packages signed by Microsoft. ## Report a Visual C++ Redistributable installation problem From 1dff244a56d89ea8b99d6b188137852710b4be70 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Tue, 17 Feb 2026 12:21:36 -0800 Subject: [PATCH 301/619] Apply suggestions from code review Co-authored-by: David Justo --- docs/windows/troubleshoot-vcredist-installation-issues.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vcredist-installation-issues.md index 1b812a36678..9bef634a4a6 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vcredist-installation-issues.md @@ -1,6 +1,6 @@ --- title: "Troubleshoot Visual C++ Redistributable installation issues" -description: "Provide steps to diagnose and resolve issues with installing the Visual C++ Redistributable as a standalone installation and as part of the Visual Studio Installer." +description: "Provide steps to diagnose and resolve issues when installing the Visual C++ Redistributable." author: vicroms ms.author: viromer ms.date: 02/12/2026 @@ -9,9 +9,9 @@ helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC --- # Troubleshoot Visual C++ Redistributable installation issues -This guide is for users experiencing issues while installing the Visual C++ Runtime components using the Visual C++ Redistributable (VC Redist) installer or the Visual Studio (VS) Installer. +This guide is for users experiencing issues installing Visual C++ Runtime components using the Visual Studio (VS) Installer or the Visual C++ Redistributable (VC Redist) installer. -If you're experiencing such issues, first try installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). +If you experience any issues, start by ensuring you're installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). ## Collect failure logs @@ -118,7 +118,7 @@ This method helps in case the installer metadata is corrupted, deleting the inst * [Corrupt or invliad installer package (return code 1620)](#corrupt-or-invalid-installer-package) * [Older version can't be removed (return code 1714)](#older-version-cant-be-removed) -### Return code 1603 +### Generic installation failure Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. From 571f52c88d332f4fa979c9011916bf7fec9bf44f Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Wed, 18 Feb 2026 10:38:08 -0800 Subject: [PATCH 302/619] Partially implement David's comments --- docs/windows/latest-supported-vc-redist.md | 4 +-- docs/windows/toc.yml | 2 +- ...vc-redistributable-installation-issues.md} | 27 ++++++++++++------- 3 files changed, 21 insertions(+), 12 deletions(-) rename docs/windows/{troubleshoot-vcredist-installation-issues.md => troubleshoot-vc-redistributable-installation-issues.md} (93%) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 51c36772683..c72d23054e1 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -20,8 +20,8 @@ ms.author: msaleh > [!NOTE] > Are you here to download Visual Studio? Go to [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/). -> [!NOTE] -> Having issues installing the Visual C++ Redistributable? Check out the [troubleshooting guide](troubleshoot-vcredist-installation-issues.md). +> [!TIP] +> Having issues installing the Visual C++ Redistributable? Check out the [troubleshooting guide](troubleshoot-vc-redistributable-installation-issues.md). This topic is for developers who need to install the Visual C++ runtime libraries with their app. If you're an end user trying to fix an app by updating the Visual C++ runtime libraries, contact the app vendor for instructions. diff --git a/docs/windows/toc.yml b/docs/windows/toc.yml index b0efca5195d..7afc39d94e9 100644 --- a/docs/windows/toc.yml +++ b/docs/windows/toc.yml @@ -150,7 +150,7 @@ items: - name: How to audit Visual C++ Runtime version usage href: ../windows/redist-version-auditing.md - name: Troubleshoot Visual C++ Redistributable installation issues - href: ../windows/troubleshoot-vcredist-installation-issues.md + href: ../windows/troubleshoot-vc-redistributable-installation-issues.md - name: Deployment examples expanded: false items: diff --git a/docs/windows/troubleshoot-vcredist-installation-issues.md b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md similarity index 93% rename from docs/windows/troubleshoot-vcredist-installation-issues.md rename to docs/windows/troubleshoot-vc-redistributable-installation-issues.md index 9bef634a4a6..b58314811d8 100644 --- a/docs/windows/troubleshoot-vcredist-installation-issues.md +++ b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md @@ -23,6 +23,8 @@ The first step to diagnose an issue with the Visual C++ Redistributable installe Once you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. +Once you have located the VC Redist installer logs, search for words like "Error", "Failed", or "System Error" and consult the [Common Errors](#common-errors-at-a-glance) to identify the issue. + ### Other log locations The VC Redist installer is often executed as a prerequisite of other products. In such cases, the installation log might be found in a different path. @@ -43,19 +45,23 @@ In such cases, the path to the logs can be found by reading that product's own l 10-31-2025 17:40:14.554 CONFIGURATION_MANAGER_UPDATE 67368 (0x10728) Failed to install vc redist. Please manually install it from C:\Program Files\Microsoft Configuration Manager\CMUStaging\AA928926-5C76-4DE0-B51F-0FE4D365DFE2\SMSSETUP\BIN\X64 ``` -## General troubleshooting steps +## General troubleshooting steps when using the Visual C++ Redistributable installer This section describes general troubleshooting methods you can try to resolve issues with the VC Redist installer. ### Disable antivirus software temporarily -Security products often block installation of VC Redist components. +Antivirus software often block installation of VC Redist components. 1. Turn off Windows Defender real-time protection. 1. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). 1. Retry the installation. 1. Reenable any disabled protection software. +> [!WARNING] +> Re-enable any disabled protection software after completing these steps. + + ### Run the Visual C++ Redistributable installer as administrator File-access failures are heavily correlated with insufficient permissions. @@ -63,7 +69,7 @@ File-access failures are heavily correlated with insufficient permissions. 1. Right-click the VC Redist installer and select **Run as Administrator**. 1. Retry the installation. -### Check for Windows System Updates +### Check for Windows updates On rare occasions, outdated system components can cause installation issues. @@ -71,7 +77,7 @@ On rare occasions, outdated system components can cause installation issues. 2. Reboot your PC. 3. Retry the installation. -## General troubleshooting steps when using Visual Studio Installer +## General troubleshooting steps when using the Visual Studio Installer ### Manually install Visual C++ Redistributable @@ -82,7 +88,7 @@ On rare occasions, outdated system components can cause installation issues. 1. Run the VC Redist installer. 1. Retry the Visual Studio Installer. -If the manual installation fails, follow the [general troubleshooting steps for the standalone VC Redist installer](#general-troubleshooting-steps). +If the manual installation fails, follow the [general troubleshooting steps for the standalone VC Redist installer](#general-troubleshooting-steps-when-using-the-visual-c-redistributable-installer). ### Clear the Visual Studio Installer cache @@ -92,9 +98,12 @@ If the manual installation fails, follow the [general troubleshooting steps for ### Repair the Visual Studio Installer -1. Go to **Settings** > **Apps** > **Installed Apps** -1. Select **Visual Studio Installer** > **Modify** > **Repair** -1. Retry the Visual Studio Installer. +1. Open the **Settings** app. +1. Search for **Installed Apps** using the search bar at the top of the window. +1. Search for **Visual Studio Installer**. +1. Click on the "**...**" button and select **Modify** from the drowdown list. +1. Select the optin to **Repair** the Visual Studio Installer. +1. Retry the VS installation. ### Delete the Visual Studio Installer folder @@ -147,7 +156,7 @@ Installation fails with error code 32. Files in use by another process, interfer **Steps to resolve** 1. Close any running software in your PC. -1. Try the methods in [General troubleshooting steps](#general-troubleshooting-steps). +1. Try the methods in [General troubleshooting steps](#general-troubleshooting-steps-when-using-the-visual-c-redistributable-installer). If the installation fails, try to restart your PC to release any locked files. From e52e991861c94f1e704f271d48537850defca912 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Wed, 18 Feb 2026 12:54:06 -0800 Subject: [PATCH 303/619] Fix broken links and acrolynx issues --- docs/windows/latest-supported-vc-redist.md | 2 +- ...leshoot-vc-redistributable-installation-issues.md | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index c72d23054e1..eda803ceaad 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -145,7 +145,7 @@ Download Redistributable files for other languages and architectures from: - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) - [How to audit Visual C++ Runtime version usage](redist-version-auditing.md) - [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) -- [Troubleshoot Visual C++ Redistributable installation issues](troubleshoot-vcredist-installation-issues.md) +- [Troubleshoot Visual C++ Redistributable installation issues](troubleshoot-vc-redistributable-installation-issues.md) **Release notes** diff --git a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md index b58314811d8..9698ba5a3ff 100644 --- a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md +++ b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md @@ -23,7 +23,7 @@ The first step to diagnose an issue with the Visual C++ Redistributable installe Once you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. -Once you have located the VC Redist installer logs, search for words like "Error", "Failed", or "System Error" and consult the [Common Errors](#common-errors-at-a-glance) to identify the issue. +Search the VC Redist logs for terms like "Error", "Failed", or "System Error" and consult the [Common Errors](#common-errors-at-a-glance) to identify the issue. ### Other log locations @@ -51,7 +51,7 @@ This section describes general troubleshooting methods you can try to resolve is ### Disable antivirus software temporarily -Antivirus software often block installation of VC Redist components. +Antivirus software often blocks installation of VC Redist components. 1. Turn off Windows Defender real-time protection. 1. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). @@ -77,7 +77,7 @@ On rare occasions, outdated system components can cause installation issues. 2. Reboot your PC. 3. Retry the installation. -## General troubleshooting steps when using the Visual Studio Installer +## General troubleshooting steps when using Visual Studio Installer ### Manually install Visual C++ Redistributable @@ -101,8 +101,8 @@ If the manual installation fails, follow the [general troubleshooting steps for 1. Open the **Settings** app. 1. Search for **Installed Apps** using the search bar at the top of the window. 1. Search for **Visual Studio Installer**. -1. Click on the "**...**" button and select **Modify** from the drowdown list. -1. Select the optin to **Repair** the Visual Studio Installer. +1. Click on the "**...**" button and select **Modify**. +1. Select the option to **Repair** the Visual Studio Installer. 1. Retry the VS installation. ### Delete the Visual Studio Installer folder @@ -121,7 +121,7 @@ This method helps in case the installer metadata is corrupted, deleting the inst ### Common errors at a glance -* [Generic installation failure (return code 1603)](#return-code-1603) +* [Generic installation failure (return code 1603)](#generic-installation-failure) * [Access denied (return code 5)](#access-denied) * [File is locked (return code 32)](#file-is-locked) * [Corrupt or invliad installer package (return code 1620)](#corrupt-or-invalid-installer-package) From 7c1109fe42534ada89a4201f87acf8912718e27f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 20 Feb 2026 11:02:44 -0800 Subject: [PATCH 304/619] Batch 7: update files --- docs/mfc/reference/cjumplist-class.md | 4 +++- docs/mfc/reference/ckeyboardmanager-class.md | 4 +++- docs/mfc/reference/ckeyframe-class.md | 4 +++- docs/mfc/reference/class-factories-and-licensing.md | 4 +++- .../classes-and-functions-generated-by-the-mfc-dll-wizard.md | 4 +++- docs/mfc/reference/clineartransition-class.md | 4 +++- docs/mfc/reference/clineartransitionfromspeed-class.md | 4 +++- docs/mfc/reference/clinkctrl-class.md | 4 +++- docs/mfc/reference/clist-class.md | 4 +++- docs/mfc/reference/clistbox-class.md | 4 +++- docs/mfc/reference/clistctrl-class.md | 3 +++ docs/mfc/reference/clistview-class.md | 4 +++- docs/mfc/reference/clongbinary-class.md | 4 +++- docs/mfc/reference/cmap-class.md | 4 +++- docs/mfc/reference/cmapptrtoptr-class.md | 4 +++- docs/mfc/reference/cmapptrtoword-class.md | 4 +++- docs/mfc/reference/cmapstringtoob-class.md | 3 +++ docs/mfc/reference/cmapstringtoptr-class.md | 4 +++- docs/mfc/reference/cmapstringtostring-class.md | 4 +++- docs/mfc/reference/cmapwordtoob-class.md | 4 +++- docs/mfc/reference/cmapwordtoptr-class.md | 4 +++- docs/mfc/reference/cmdichildwnd-class.md | 4 +++- docs/mfc/reference/cmdichildwndex-class.md | 3 +++ docs/mfc/reference/cmdiframewnd-class.md | 4 +++- docs/mfc/reference/cmdiframewndex-class.md | 3 +++ docs/mfc/reference/cmditabinfo-class.md | 3 +++ docs/mfc/reference/cmemfile-class.md | 3 +++ docs/mfc/reference/cmemoryexception-class.md | 4 +++- docs/mfc/reference/cmemorystate-structure.md | 4 +++- docs/mfc/reference/cmenu-class.md | 4 +++- docs/mfc/reference/cmenutearoffmanager-class.md | 4 +++- docs/mfc/reference/cmetafiledc-class.md | 4 +++- docs/mfc/reference/cmfcacceleratorkey-class.md | 4 +++- docs/mfc/reference/cmfcacceleratorkeyassignctrl-class.md | 4 +++- docs/mfc/reference/cmfcautohidebar-class.md | 4 +++- docs/mfc/reference/cmfcautohidebutton-class.md | 4 +++- docs/mfc/reference/cmfcbasetabctrl-class.md | 3 +++ docs/mfc/reference/cmfcbasetoolbar-class.md | 4 +++- docs/mfc/reference/cmfcbasevisualmanager-class.md | 4 +++- docs/mfc/reference/cmfcbutton-class.md | 3 +++ docs/mfc/reference/cmfccaptionbar-class.md | 4 +++- docs/mfc/reference/cmfccaptionbutton-class.md | 4 +++- docs/mfc/reference/cmfccmdusagecount-class.md | 4 +++- docs/mfc/reference/cmfccolorbar-class.md | 4 +++- docs/mfc/reference/cmfccolorbutton-class.md | 4 +++- docs/mfc/reference/cmfccolordialog-class.md | 4 +++- docs/mfc/reference/cmfccolormenubutton-class.md | 4 +++- docs/mfc/reference/cmfccolorpickerctrl-class.md | 3 +++ docs/mfc/reference/cmfccolorpopupmenu-class.md | 4 +++- docs/mfc/reference/cmfccustomcolorspropertypage-class.md | 4 +++- docs/mfc/reference/cmfcdesktopalertdialog-class.md | 4 +++- docs/mfc/reference/cmfcdesktopalertwnd-class.md | 4 +++- docs/mfc/reference/cmfcdesktopalertwndbutton-class.md | 4 +++- docs/mfc/reference/cmfcdesktopalertwndinfo-class.md | 4 +++- docs/mfc/reference/cmfcdisablemenuanimation-class.md | 4 +++- docs/mfc/reference/cmfcdragframeimpl-class.md | 4 +++- docs/mfc/reference/cmfcdropdownframe-class.md | 4 +++- docs/mfc/reference/cmfcdropdowntoolbar-class.md | 4 +++- docs/mfc/reference/cmfcdropdowntoolbarbutton-class.md | 4 +++- docs/mfc/reference/cmfcdynamiclayout-class.md | 3 +++ docs/mfc/reference/cmfceditbrowsectrl-class.md | 3 +++ docs/mfc/reference/cmfcfilterchunkvalueimpl-class.md | 4 +++- docs/mfc/reference/cmfcfontcombobox-class.md | 4 +++- docs/mfc/reference/cmfcfontinfo-class.md | 4 +++- docs/mfc/reference/cmfcheaderctrl-class.md | 4 +++- docs/mfc/reference/cmfcimageeditordialog-class.md | 4 +++- docs/mfc/reference/cmfcimageeditorpalettebar-class.md | 4 +++- docs/mfc/reference/cmfcimagepaintarea-class.md | 4 +++- .../cmfcimagepaintarea-image-edit-mode-enumeration.md | 4 +++- docs/mfc/reference/cmfckeymapdialog-class.md | 4 +++- docs/mfc/reference/cmfclinkctrl-class.md | 4 +++- docs/mfc/reference/cmfclistctrl-class.md | 3 +++ docs/mfc/reference/cmfcmaskededit-class.md | 4 +++- docs/mfc/reference/cmfcmenubar-class.md | 3 +++ docs/mfc/reference/cmfcmenubutton-class.md | 4 +++- docs/mfc/reference/cmfcoutlookbar-class.md | 4 +++- docs/mfc/reference/cmfcoutlookbarpane-class.md | 4 +++- docs/mfc/reference/cmfcoutlookbartabctrl-class.md | 4 +++- docs/mfc/reference/cmfcpopupmenu-class.md | 4 +++- docs/mfc/reference/cmfcpopupmenubar-class.md | 4 +++- docs/mfc/reference/cmfcpreviewctrlimpl-class.md | 3 +++ docs/mfc/reference/cmfcprintpreviewtoolbar-class.md | 4 +++- docs/mfc/reference/cmfcpropertygridcolorproperty-class.md | 4 +++- docs/mfc/reference/cmfcpropertygridctrl-class.md | 3 +++ docs/mfc/reference/cmfcpropertygridfileproperty-class.md | 4 +++- docs/mfc/reference/cmfcpropertygridfontproperty-class.md | 4 +++- docs/mfc/reference/cmfcpropertygridproperty-class.md | 3 +++ docs/mfc/reference/cmfcpropertygridtooltipctrl-class.md | 4 +++- docs/mfc/reference/cmfcpropertypage-class.md | 4 +++- docs/mfc/reference/cmfcpropertysheet-class.md | 4 +++- docs/mfc/reference/cmfcrebar-class.md | 4 +++- docs/mfc/reference/cmfcribbonapplicationbutton-class.md | 4 +++- docs/mfc/reference/cmfcribbonbar-class.md | 3 +++ docs/mfc/reference/cmfcribbonbaseelement-class.md | 3 +++ docs/mfc/reference/cmfcribbonbutton-class.md | 4 +++- docs/mfc/reference/cmfcribbonbuttonsgroup-class.md | 4 +++- docs/mfc/reference/cmfcribboncategory-class.md | 3 +++ docs/mfc/reference/cmfcribboncheckbox-class.md | 3 +++ docs/mfc/reference/cmfcribboncolorbutton-class.md | 4 +++- docs/mfc/reference/cmfcribboncombobox-class.md | 3 +++ 100 files changed, 300 insertions(+), 79 deletions(-) diff --git a/docs/mfc/reference/cjumplist-class.md b/docs/mfc/reference/cjumplist-class.md index e924d7a4a7c..140ef4a93e0 100644 --- a/docs/mfc/reference/cjumplist-class.md +++ b/docs/mfc/reference/cjumplist-class.md @@ -4,10 +4,12 @@ title: "CJumpList Class" ms.date: "03/27/2019" f1_keywords: ["CJumpList", "AFXADV/CJumpList", "AFXADV/CJumpList::CJumpList", "AFXADV/CJumpList::AbortList", "AFXADV/CJumpList::AddDestination", "AFXADV/CJumpList::AddKnownCategory", "AFXADV/CJumpList::AddTask", "AFXADV/CJumpList::AddTasks", "AFXADV/CJumpList::AddTaskSeparator", "AFXADV/CJumpList::ClearAll", "AFXADV/CJumpList::ClearAllDestinations", "AFXADV/CJumpList::CommitList", "AFXADV/CJumpList::GetDestinationList", "AFXADV/CJumpList::GetMaxSlots", "AFXADV/CJumpList::GetRemovedItems", "AFXADV/CJumpList::InitializeList", "AFXADV/CJumpList::SetAppID"] helpviewer_keywords: ["CJumpList [MFC], CJumpList", "CJumpList [MFC], AbortList", "CJumpList [MFC], AddDestination", "CJumpList [MFC], AddKnownCategory", "CJumpList [MFC], AddTask", "CJumpList [MFC], AddTasks", "CJumpList [MFC], AddTaskSeparator", "CJumpList [MFC], ClearAll", "CJumpList [MFC], ClearAllDestinations", "CJumpList [MFC], CommitList", "CJumpList [MFC], GetDestinationList", "CJumpList [MFC], GetMaxSlots", "CJumpList [MFC], GetRemovedItems", "CJumpList [MFC], InitializeList", "CJumpList [MFC], SetAppID"] -ms.assetid: d364d27e-f512-4b12-9872-c2a17c78ab1f --- # CJumpList Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A `CJumpList` is the list of shortcuts revealed when you right-click on an icon in the task bar. ## Syntax diff --git a/docs/mfc/reference/ckeyboardmanager-class.md b/docs/mfc/reference/ckeyboardmanager-class.md index 028992b0d67..19cfdf860e3 100644 --- a/docs/mfc/reference/ckeyboardmanager-class.md +++ b/docs/mfc/reference/ckeyboardmanager-class.md @@ -4,10 +4,12 @@ title: "CKeyboardManager Class" ms.date: "11/04/2016" f1_keywords: ["CKeyboardManager", "AFXKEYBOARDMANAGER/CKeyboardManager", "AFXKEYBOARDMANAGER/CKeyboardManager::CKeyboardManager", "AFXKEYBOARDMANAGER/CKeyboardManager::CleanUp", "AFXKEYBOARDMANAGER/CKeyboardManager::FindDefaultAccelerator", "AFXKEYBOARDMANAGER/CKeyboardManager::IsKeyHandled", "AFXKEYBOARDMANAGER/CKeyboardManager::IsKeyPrintable", "AFXKEYBOARDMANAGER/CKeyboardManager::IsShowAllAccelerators", "AFXKEYBOARDMANAGER/CKeyboardManager::LoadState", "AFXKEYBOARDMANAGER/CKeyboardManager::ResetAll", "AFXKEYBOARDMANAGER/CKeyboardManager::SaveState", "AFXKEYBOARDMANAGER/CKeyboardManager::ShowAllAccelerators", "AFXKEYBOARDMANAGER/CKeyboardManager::TranslateCharToUpper", "AFXKEYBOARDMANAGER/CKeyboardManager::UpdateAccelTable"] helpviewer_keywords: ["CKeyboardManager [MFC], CKeyboardManager", "CKeyboardManager [MFC], CleanUp", "CKeyboardManager [MFC], FindDefaultAccelerator", "CKeyboardManager [MFC], IsKeyHandled", "CKeyboardManager [MFC], IsKeyPrintable", "CKeyboardManager [MFC], IsShowAllAccelerators", "CKeyboardManager [MFC], LoadState", "CKeyboardManager [MFC], ResetAll", "CKeyboardManager [MFC], SaveState", "CKeyboardManager [MFC], ShowAllAccelerators", "CKeyboardManager [MFC], TranslateCharToUpper", "CKeyboardManager [MFC], UpdateAccelTable"] -ms.assetid: 4809ece6-89df-4479-8b53-9bf476ee107b --- # CKeyboardManager Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Manages shortcut key tables for the main frame window and child frame windows. ## Syntax diff --git a/docs/mfc/reference/ckeyframe-class.md b/docs/mfc/reference/ckeyframe-class.md index 295550b2edc..fab2e6461a0 100644 --- a/docs/mfc/reference/ckeyframe-class.md +++ b/docs/mfc/reference/ckeyframe-class.md @@ -4,10 +4,12 @@ title: "CKeyFrame Class" ms.date: "11/04/2016" f1_keywords: ["CKeyFrame", "AFXANIMATIONCONTROLLER/CKeyFrame", "AFXANIMATIONCONTROLLER/CKeyFrame::CKeyFrame", "AFXANIMATIONCONTROLLER/CKeyFrame::AddToStoryboard", "AFXANIMATIONCONTROLLER/CKeyFrame::AddToStoryboardAfterTransition", "AFXANIMATIONCONTROLLER/CKeyFrame::AddToStoryboardAtOffset", "AFXANIMATIONCONTROLLER/CKeyFrame::GetExistingKeyframe", "AFXANIMATIONCONTROLLER/CKeyFrame::GetOffset", "AFXANIMATIONCONTROLLER/CKeyFrame::GetTransition", "AFXANIMATIONCONTROLLER/CKeyFrame::m_offset", "AFXANIMATIONCONTROLLER/CKeyFrame::m_pExistingKeyFrame", "AFXANIMATIONCONTROLLER/CKeyFrame::m_pTransition"] helpviewer_keywords: ["CKeyFrame [MFC], CKeyFrame", "CKeyFrame [MFC], AddToStoryboard", "CKeyFrame [MFC], AddToStoryboardAfterTransition", "CKeyFrame [MFC], AddToStoryboardAtOffset", "CKeyFrame [MFC], GetExistingKeyframe", "CKeyFrame [MFC], GetOffset", "CKeyFrame [MFC], GetTransition", "CKeyFrame [MFC], m_offset", "CKeyFrame [MFC], m_pExistingKeyFrame", "CKeyFrame [MFC], m_pTransition"] -ms.assetid: d050a562-20f6-4c65-8ce5-ccb3aef1a20e --- # CKeyFrame Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents an animation keyframe. ## Syntax diff --git a/docs/mfc/reference/class-factories-and-licensing.md b/docs/mfc/reference/class-factories-and-licensing.md index fb570c46f96..eb2f2f98254 100644 --- a/docs/mfc/reference/class-factories-and-licensing.md +++ b/docs/mfc/reference/class-factories-and-licensing.md @@ -3,10 +3,12 @@ description: "Learn more about: Class Factories and Licensing" title: "Class Factories and Licensing" ms.date: "11/04/2016" helpviewer_keywords: ["class factories [MFC], and licensing"] -ms.assetid: 53c4856a-4062-46db-9f69-dd4339f746b3 --- # Class Factories and Licensing +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To create an instance of your OLE control, a container application calls a member function of the control's class factory. Because your control is an actual OLE object, the class factory is responsible for creating instances of your control. Every OLE control class must have a class factory. Another important feature of OLE controls is their ability to enforce a license. ControlWizard allows you to incorporate licensing during the creation of your control project. For more information on control licensing, see the article [ActiveX Controls: Licensing An ActiveX Control](../../mfc/mfc-activex-controls-licensing-an-activex-control.md). diff --git a/docs/mfc/reference/classes-and-functions-generated-by-the-mfc-dll-wizard.md b/docs/mfc/reference/classes-and-functions-generated-by-the-mfc-dll-wizard.md index 8a8852ea8bd..c0db5403493 100644 --- a/docs/mfc/reference/classes-and-functions-generated-by-the-mfc-dll-wizard.md +++ b/docs/mfc/reference/classes-and-functions-generated-by-the-mfc-dll-wizard.md @@ -3,10 +3,12 @@ description: "Learn more about: Classes and Functions Generated by the MFC DLL W title: "Classes and Functions Generated by the MFC DLL Wizard" ms.date: "11/04/2016" helpviewer_keywords: ["functions [MFC]", "functions [MFC], DLLs", "MFC DLL Wizard", "DLLs [MFC], wizard classes and functions", "classes [MFC], generated by MFC DLL wizard", "code [MFC], generated by MFC DLL wizard"] -ms.assetid: e69e62fe-4953-42bf-a2fc-50bbf9bdaeaf --- # Classes and Functions Generated by the MFC DLL Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The code that the MFC DLL Wizard generates depends on the kind of DLL you are creating and the options you have selected. The MFC DLL Wizard generates the same code for both forms of regular MFC DLLs. |Kind of DLL|Option|Classes|Functions| diff --git a/docs/mfc/reference/clineartransition-class.md b/docs/mfc/reference/clineartransition-class.md index db00d95751a..4fc9741cd95 100644 --- a/docs/mfc/reference/clineartransition-class.md +++ b/docs/mfc/reference/clineartransition-class.md @@ -4,10 +4,12 @@ title: "CLinearTransition Class" ms.date: "11/04/2016" f1_keywords: ["CLinearTransition", "AFXANIMATIONCONTROLLER/CLinearTransition", "AFXANIMATIONCONTROLLER/CLinearTransition::CLinearTransition", "AFXANIMATIONCONTROLLER/CLinearTransition::Create", "AFXANIMATIONCONTROLLER/CLinearTransition::m_dblFinalValue", "AFXANIMATIONCONTROLLER/CLinearTransition::m_duration"] helpviewer_keywords: ["CLinearTransition [MFC], CLinearTransition", "CLinearTransition [MFC], Create", "CLinearTransition [MFC], m_dblFinalValue", "CLinearTransition [MFC], m_duration"] -ms.assetid: 7fcb2dba-beb8-4933-9f5d-3b7fb1585ef0 --- # CLinearTransition Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a linear transition. ## Syntax diff --git a/docs/mfc/reference/clineartransitionfromspeed-class.md b/docs/mfc/reference/clineartransitionfromspeed-class.md index 543e8eb4232..7054525da73 100644 --- a/docs/mfc/reference/clineartransitionfromspeed-class.md +++ b/docs/mfc/reference/clineartransitionfromspeed-class.md @@ -4,10 +4,12 @@ title: "CLinearTransitionFromSpeed Class" ms.date: "11/04/2016" f1_keywords: ["CLinearTransitionFromSpeed", "AFXANIMATIONCONTROLLER/CLinearTransitionFromSpeed", "AFXANIMATIONCONTROLLER/CLinearTransitionFromSpeed::CLinearTransitionFromSpeed", "AFXANIMATIONCONTROLLER/CLinearTransitionFromSpeed::Create", "AFXANIMATIONCONTROLLER/CLinearTransitionFromSpeed::m_dblFinalValue", "AFXANIMATIONCONTROLLER/CLinearTransitionFromSpeed::m_dblSpeed"] helpviewer_keywords: ["CLinearTransitionFromSpeed [MFC], CLinearTransitionFromSpeed", "CLinearTransitionFromSpeed [MFC], Create", "CLinearTransitionFromSpeed [MFC], m_dblFinalValue", "CLinearTransitionFromSpeed [MFC], m_dblSpeed"] -ms.assetid: 8f159a1c-8893-4017-951e-09e5758aba7d --- # CLinearTransitionFromSpeed Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a linear-speed transition. ## Syntax diff --git a/docs/mfc/reference/clinkctrl-class.md b/docs/mfc/reference/clinkctrl-class.md index 11601a0c130..0b0c0f80cc6 100644 --- a/docs/mfc/reference/clinkctrl-class.md +++ b/docs/mfc/reference/clinkctrl-class.md @@ -4,10 +4,12 @@ title: "CLinkCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CLinkCtrl", "AFXCMN/CLinkCtrl", "AFXCMN/CLinkCtrl::CLinkCtrl", "AFXCMN/CLinkCtrl::Create", "AFXCMN/CLinkCtrl::CreateEx", "AFXCMN/CLinkCtrl::GetIdealHeight", "AFXCMN/CLinkCtrl::GetIdealSize", "AFXCMN/CLinkCtrl::GetItem", "AFXCMN/CLinkCtrl::GetItemID", "AFXCMN/CLinkCtrl::GetItemState", "AFXCMN/CLinkCtrl::GetItemUrl", "AFXCMN/CLinkCtrl::HitTest", "AFXCMN/CLinkCtrl::SetItem", "AFXCMN/CLinkCtrl::SetItemID", "AFXCMN/CLinkCtrl::SetItemState", "AFXCMN/CLinkCtrl::SetItemUrl"] helpviewer_keywords: ["CLinkCtrl [MFC], CLinkCtrl", "CLinkCtrl [MFC], Create", "CLinkCtrl [MFC], CreateEx", "CLinkCtrl [MFC], GetIdealHeight", "CLinkCtrl [MFC], GetIdealSize", "CLinkCtrl [MFC], GetItem", "CLinkCtrl [MFC], GetItemID", "CLinkCtrl [MFC], GetItemState", "CLinkCtrl [MFC], GetItemUrl", "CLinkCtrl [MFC], HitTest", "CLinkCtrl [MFC], SetItem", "CLinkCtrl [MFC], SetItemID", "CLinkCtrl [MFC], SetItemState", "CLinkCtrl [MFC], SetItemUrl"] -ms.assetid: d1cd876a-ecca-42db-8ac4-9cd327df0cd4 --- # CLinkCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the Windows common SysLink control. ## Syntax diff --git a/docs/mfc/reference/clist-class.md b/docs/mfc/reference/clist-class.md index 083376f4fcf..536e937582b 100644 --- a/docs/mfc/reference/clist-class.md +++ b/docs/mfc/reference/clist-class.md @@ -4,10 +4,12 @@ title: "CList Class" ms.date: "11/04/2016" f1_keywords: ["CList", "AFXTEMPL/CList", "AFXTEMPL/CList::CList", "AFXTEMPL/CList::AddHead", "AFXTEMPL/CList::AddTail", "AFXTEMPL/CList::Find", "AFXTEMPL/CList::FindIndex", "AFXTEMPL/CList::GetAt", "AFXTEMPL/CList::GetCount", "AFXTEMPL/CList::GetHead", "AFXTEMPL/CList::GetHeadPosition", "AFXTEMPL/CList::GetNext", "AFXTEMPL/CList::GetPrev", "AFXTEMPL/CList::GetSize", "AFXTEMPL/CList::GetTail", "AFXTEMPL/CList::GetTailPosition", "AFXTEMPL/CList::InsertAfter", "AFXTEMPL/CList::InsertBefore", "AFXTEMPL/CList::IsEmpty", "AFXTEMPL/CList::RemoveAll", "AFXTEMPL/CList::RemoveAt", "AFXTEMPL/CList::RemoveHead", "AFXTEMPL/CList::RemoveTail", "AFXTEMPL/CList::SetAt"] helpviewer_keywords: ["CList [MFC], CList", "CList [MFC], AddHead", "CList [MFC], AddTail", "CList [MFC], Find", "CList [MFC], FindIndex", "CList [MFC], GetAt", "CList [MFC], GetCount", "CList [MFC], GetHead", "CList [MFC], GetHeadPosition", "CList [MFC], GetNext", "CList [MFC], GetPrev", "CList [MFC], GetSize", "CList [MFC], GetTail", "CList [MFC], GetTailPosition", "CList [MFC], InsertAfter", "CList [MFC], InsertBefore", "CList [MFC], IsEmpty", "CList [MFC], RemoveAll", "CList [MFC], RemoveAt", "CList [MFC], RemoveHead", "CList [MFC], RemoveTail", "CList [MFC], SetAt"] -ms.assetid: 6f6273c3-c8f6-47f5-ac2a-0a950379ae5d --- # `CList` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports ordered lists of nonunique objects accessible sequentially or by value. ## Syntax diff --git a/docs/mfc/reference/clistbox-class.md b/docs/mfc/reference/clistbox-class.md index ffdca49e04e..2c82cd368f2 100644 --- a/docs/mfc/reference/clistbox-class.md +++ b/docs/mfc/reference/clistbox-class.md @@ -4,10 +4,12 @@ description: "A description of the MFC CListBox class and its member functions." ms.date: "01/22/2020" f1_keywords: ["CListBox", "AFXWIN/CListBox", "AFXWIN/CListBox::CListBox", "AFXWIN/CListBox::AddString", "AFXWIN/CListBox::CharToItem", "AFXWIN/CListBox::CompareItem", "AFXWIN/CListBox::Create", "AFXWIN/CListBox::DeleteItem", "AFXWIN/CListBox::DeleteString", "AFXWIN/CListBox::Dir", "AFXWIN/CListBox::DrawItem", "AFXWIN/CListBox::FindString", "AFXWIN/CListBox::FindStringExact", "AFXWIN/CListBox::GetAnchorIndex", "AFXWIN/CListBox::GetCaretIndex", "AFXWIN/CListBox::GetCount", "AFXWIN/CListBox::GetCurSel", "AFXWIN/CListBox::GetHorizontalExtent", "AFXWIN/CListBox::GetItemData", "AFXWIN/CListBox::GetItemDataPtr", "AFXWIN/CListBox::GetItemHeight", "AFXWIN/CListBox::GetItemRect", "AFXWIN/CListBox::GetListBoxInfo", "AFXWIN/CListBox::GetLocale", "AFXWIN/CListBox::GetSel", "AFXWIN/CListBox::GetSelCount", "AFXWIN/CListBox::GetSelItems", "AFXWIN/CListBox::GetText", "AFXWIN/CListBox::GetTextLen", "AFXWIN/CListBox::GetTopIndex", "AFXWIN/CListBox::InitStorage", "AFXWIN/CListBox::InsertString", "AFXWIN/CListBox::ItemFromPoint", "AFXWIN/CListBox::MeasureItem", "AFXWIN/CListBox::ResetContent", "AFXWIN/CListBox::SelectString", "AFXWIN/CListBox::SelItemRange", "AFXWIN/CListBox::SetAnchorIndex", "AFXWIN/CListBox::SetCaretIndex", "AFXWIN/CListBox::SetColumnWidth", "AFXWIN/CListBox::SetCurSel", "AFXWIN/CListBox::SetHorizontalExtent", "AFXWIN/CListBox::SetItemData", "AFXWIN/CListBox::SetItemDataPtr", "AFXWIN/CListBox::SetItemHeight", "AFXWIN/CListBox::SetLocale", "AFXWIN/CListBox::SetSel", "AFXWIN/CListBox::SetTabStops", "AFXWIN/CListBox::SetTopIndex", "AFXWIN/CListBox::VKeyToItem"] helpviewer_keywords: ["CListBox [MFC], CListBox", "CListBox [MFC], AddString", "CListBox [MFC], CharToItem", "CListBox [MFC], CompareItem", "CListBox [MFC], Create", "CListBox [MFC], DeleteItem", "CListBox [MFC], DeleteString", "CListBox [MFC], Dir", "CListBox [MFC], DrawItem", "CListBox [MFC], FindString", "CListBox [MFC], FindStringExact", "CListBox [MFC], GetAnchorIndex", "CListBox [MFC], GetCaretIndex", "CListBox [MFC], GetCount", "CListBox [MFC], GetCurSel", "CListBox [MFC], GetHorizontalExtent", "CListBox [MFC], GetItemData", "CListBox [MFC], GetItemDataPtr", "CListBox [MFC], GetItemHeight", "CListBox [MFC], GetItemRect", "CListBox [MFC], GetListBoxInfo", "CListBox [MFC], GetLocale", "CListBox [MFC], GetSel", "CListBox [MFC], GetSelCount", "CListBox [MFC], GetSelItems", "CListBox [MFC], GetText", "CListBox [MFC], GetTextLen", "CListBox [MFC], GetTopIndex", "CListBox [MFC], InitStorage", "CListBox [MFC], InsertString", "CListBox [MFC], ItemFromPoint", "CListBox [MFC], MeasureItem", "CListBox [MFC], ResetContent", "CListBox [MFC], SelectString", "CListBox [MFC], SelItemRange", "CListBox [MFC], SetAnchorIndex", "CListBox [MFC], SetCaretIndex", "CListBox [MFC], SetColumnWidth", "CListBox [MFC], SetCurSel", "CListBox [MFC], SetHorizontalExtent", "CListBox [MFC], SetItemData", "CListBox [MFC], SetItemDataPtr", "CListBox [MFC], SetItemHeight", "CListBox [MFC], SetLocale", "CListBox [MFC], SetSel", "CListBox [MFC], SetTabStops", "CListBox [MFC], SetTopIndex", "CListBox [MFC], VKeyToItem"] -ms.assetid: 7ba3c699-c286-4cd9-9066-532c41ec05d1 --- # `CListBox` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of a Windows list box. ## Syntax diff --git a/docs/mfc/reference/clistctrl-class.md b/docs/mfc/reference/clistctrl-class.md index a9e92a75d11..489c3ee07dc 100644 --- a/docs/mfc/reference/clistctrl-class.md +++ b/docs/mfc/reference/clistctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CListCtrl [MFC], CListCtrl", "CListCtrl [MFC], Approximat --- # `CListCtrl` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates the functionality of a "list view control," which displays a collection of items each consisting of an icon (from an image list) and a label. ## Syntax diff --git a/docs/mfc/reference/clistview-class.md b/docs/mfc/reference/clistview-class.md index 111656d0800..5536fc76f68 100644 --- a/docs/mfc/reference/clistview-class.md +++ b/docs/mfc/reference/clistview-class.md @@ -4,10 +4,12 @@ title: "CListView Class" ms.date: "11/04/2016" f1_keywords: ["CListView", "AFXCVIEW/CListView", "AFXCVIEW/CListView::CListView", "AFXCVIEW/CListView::GetListCtrl", "AFXCVIEW/CListView::RemoveImageList"] helpviewer_keywords: ["CListView [MFC], CListView", "CListView [MFC], GetListCtrl", "CListView [MFC], RemoveImageList"] -ms.assetid: 7626bdb2-a1b8-4eab-b631-6743710a8432 --- # CListView Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Simplifies use of the list control and of [CListCtrl](../../mfc/reference/clistctrl-class.md), the class that encapsulates list-control functionality, with MFC's document-view architecture. ## Syntax diff --git a/docs/mfc/reference/clongbinary-class.md b/docs/mfc/reference/clongbinary-class.md index 7ba265343e8..268db8c9c57 100644 --- a/docs/mfc/reference/clongbinary-class.md +++ b/docs/mfc/reference/clongbinary-class.md @@ -4,10 +4,12 @@ title: "CLongBinary Class" ms.date: "11/04/2016" f1_keywords: ["CLongBinary", "AFXDB_/CLongBinary", "AFXDB_/CLongBinary::CLongBinary", "AFXDB_/CLongBinary::m_dwDataLength", "AFXDB_/CLongBinary::m_hData"] helpviewer_keywords: ["CLongBinary class [MFC]"] -ms.assetid: f4320059-aeb4-4ee5-bc2b-25f19d898ef5 --- # CLongBinary Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Simplifies working with very large binary data objects (often called BLOBs, or "binary large objects") in a database. ## Syntax diff --git a/docs/mfc/reference/cmap-class.md b/docs/mfc/reference/cmap-class.md index d985acc0408..ab87ec202a2 100644 --- a/docs/mfc/reference/cmap-class.md +++ b/docs/mfc/reference/cmap-class.md @@ -4,10 +4,12 @@ title: "CMap Class" ms.date: "11/04/2016" f1_keywords: ["CMap", "AFXTEMPL/CMap", "AFXTEMPL/CMap::CPair", "AFXTEMPL/CMap::CMap", "AFXTEMPL/CMap::GetCount", "AFXTEMPL/CMap::GetHashTableSize", "AFXTEMPL/CMap::GetNextAssoc", "AFXTEMPL/CMap::GetSize", "AFXTEMPL/CMap::GetStartPosition", "AFXTEMPL/CMap::InitHashTable", "AFXTEMPL/CMap::IsEmpty", "AFXTEMPL/CMap::Lookup", "AFXTEMPL/CMap::PGetFirstAssoc", "AFXTEMPL/CMap::PGetNextAssoc", "AFXTEMPL/CMap::PLookup", "AFXTEMPL/CMap::RemoveAll", "AFXTEMPL/CMap::RemoveKey", "AFXTEMPL/CMap::SetAt"] helpviewer_keywords: ["CMap [MFC], CPair", "CMap [MFC], CMap", "CMap [MFC], GetCount", "CMap [MFC], GetHashTableSize", "CMap [MFC], GetNextAssoc", "CMap [MFC], GetSize", "CMap [MFC], GetStartPosition", "CMap [MFC], InitHashTable", "CMap [MFC], IsEmpty", "CMap [MFC], Lookup", "CMap [MFC], PGetFirstAssoc", "CMap [MFC], PGetNextAssoc", "CMap [MFC], PLookup", "CMap [MFC], RemoveAll", "CMap [MFC], RemoveKey", "CMap [MFC], SetAt"] -ms.assetid: 640a45ab-0993-4def-97ec-42cc78eb10b9 --- # `CMap` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A dictionary collection class that maps unique keys to values. ## Syntax diff --git a/docs/mfc/reference/cmapptrtoptr-class.md b/docs/mfc/reference/cmapptrtoptr-class.md index 10277c43259..e30a3b31515 100644 --- a/docs/mfc/reference/cmapptrtoptr-class.md +++ b/docs/mfc/reference/cmapptrtoptr-class.md @@ -4,10 +4,12 @@ title: "CMapPtrToPtr Class" ms.date: "11/04/2016" f1_keywords: ["CMapPtrToPtr", "AFXCOLL/CMapPtrToPtr", "AFXCOLL/CMapPtrToPtr::CMapPtrToPtr", "AFXCOLL/CMapPtrToPtr::GetCount", "AFXCOLL/CMapPtrToPtr::GetHashTableSize", "AFXCOLL/CMapPtrToPtr::GetNextAssoc", "AFXCOLL/CMapPtrToPtr::GetSize", "AFXCOLL/CMapPtrToPtr::GetStartPosition", "AFXCOLL/CMapPtrToPtr::HashKey", "AFXCOLL/CMapPtrToPtr::InitHashTable", "AFXCOLL/CMapPtrToPtr::IsEmpty", "AFXCOLL/CMapPtrToPtr::Lookup", "AFXCOLL/CMapPtrToPtr::LookupKey", "AFXCOLL/CMapPtrToPtr::RemoveAll", "AFXCOLL/CMapPtrToPtr::RemoveKey", "AFXCOLL/CMapPtrToPtr::SetAt"] helpviewer_keywords: ["CMapPtrToPtr [MFC], CMapPtrToPtr", "CMapPtrToPtr [MFC], GetCount", "CMapPtrToPtr [MFC], GetHashTableSize", "CMapPtrToPtr [MFC], GetNextAssoc", "CMapPtrToPtr [MFC], GetSize", "CMapPtrToPtr [MFC], GetStartPosition", "CMapPtrToPtr [MFC], HashKey", "CMapPtrToPtr [MFC], InitHashTable", "CMapPtrToPtr [MFC], IsEmpty", "CMapPtrToPtr [MFC], Lookup", "CMapPtrToPtr [MFC], LookupKey", "CMapPtrToPtr [MFC], RemoveAll", "CMapPtrToPtr [MFC], RemoveKey", "CMapPtrToPtr [MFC], SetAt"] -ms.assetid: 23cbbaec-9d64-48f2-92ae-5e24fa64b926 --- # CMapPtrToPtr Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports maps of void pointers keyed by void pointers. ## Syntax diff --git a/docs/mfc/reference/cmapptrtoword-class.md b/docs/mfc/reference/cmapptrtoword-class.md index 1810b0d5fd7..6793004b32b 100644 --- a/docs/mfc/reference/cmapptrtoword-class.md +++ b/docs/mfc/reference/cmapptrtoword-class.md @@ -4,10 +4,12 @@ title: "CMapPtrToWord Class" ms.date: "11/04/2016" f1_keywords: ["CMapPtrToWord", "AFXCOLL/CMapPtrToWord", "AFXCOLL/CMapPtrToWord::CMapPtrToWord", "AFXCOLL/CMapPtrToWord::GetCount", "AFXCOLL/CMapPtrToWord::GetHashTableSize", "AFXCOLL/CMapPtrToWord::GetNextAssoc", "AFXCOLL/CMapPtrToWord::GetSize", "AFXCOLL/CMapPtrToWord::GetStartPosition", "AFXCOLL/CMapPtrToWord::HashKey", "AFXCOLL/CMapPtrToWord::InitHashTable", "AFXCOLL/CMapPtrToWord::IsEmpty", "AFXCOLL/CMapPtrToWord::Lookup", "AFXCOLL/CMapPtrToWord::LookupKey", "AFXCOLL/CMapPtrToWord::RemoveAll", "AFXCOLL/CMapPtrToWord::RemoveKey", "AFXCOLL/CMapPtrToWord::SetAt"] helpviewer_keywords: ["CMapPtrToWord [MFC], CMapPtrToWord", "CMapPtrToWord [MFC], GetCount", "CMapPtrToWord [MFC], GetHashTableSize", "CMapPtrToWord [MFC], GetNextAssoc", "CMapPtrToWord [MFC], GetSize", "CMapPtrToWord [MFC], GetStartPosition", "CMapPtrToWord [MFC], HashKey", "CMapPtrToWord [MFC], InitHashTable", "CMapPtrToWord [MFC], IsEmpty", "CMapPtrToWord [MFC], Lookup", "CMapPtrToWord [MFC], LookupKey", "CMapPtrToWord [MFC], RemoveAll", "CMapPtrToWord [MFC], RemoveKey", "CMapPtrToWord [MFC], SetAt"] -ms.assetid: 4631c6b6-d49f-49d9-adc0-1e0491e32d7b --- # CMapPtrToWord Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports maps of 16-bit words keyed by void pointers. ## Syntax diff --git a/docs/mfc/reference/cmapstringtoob-class.md b/docs/mfc/reference/cmapstringtoob-class.md index 7d7404e9956..a5de929c1c7 100644 --- a/docs/mfc/reference/cmapstringtoob-class.md +++ b/docs/mfc/reference/cmapstringtoob-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMapStringToOb [MFC], CMapStringToOb", "CMapStringToOb [M --- # `CMapStringToOb` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A dictionary collection class that maps unique `CString` objects to `CObject` pointers. ## Syntax diff --git a/docs/mfc/reference/cmapstringtoptr-class.md b/docs/mfc/reference/cmapstringtoptr-class.md index 4a4ac641f44..a89fe7b5c4f 100644 --- a/docs/mfc/reference/cmapstringtoptr-class.md +++ b/docs/mfc/reference/cmapstringtoptr-class.md @@ -4,10 +4,12 @@ title: "CMapStringToPtr Class" ms.date: "11/04/2016" f1_keywords: ["CMapStringToPtr", "AFXCOLL/CMapStringToPtr", "AFXCOLL/CMapStringToPtr::CMapStringToPtr", "AFXCOLL/CMapStringToPtr::GetCount", "AFXCOLL/CMapStringToPtr::GetHashTableSize", "AFXCOLL/CMapStringToPtr::GetNextAssoc", "AFXCOLL/CMapStringToPtr::GetSize", "AFXCOLL/CMapStringToPtr::GetStartPosition", "AFXCOLL/CMapStringToPtr::HashKey", "AFXCOLL/CMapStringToPtr::InitHashTable", "AFXCOLL/CMapStringToPtr::IsEmpty", "AFXCOLL/CMapStringToPtr::Lookup", "AFXCOLL/CMapStringToPtr::LookupKey", "AFXCOLL/CMapStringToPtr::RemoveAll", "AFXCOLL/CMapStringToPtr::RemoveKey", "AFXCOLL/CMapStringToPtr::SetAt"] helpviewer_keywords: ["CMapStringToPtr [MFC], CMapStringToPtr", "CMapStringToPtr [MFC], GetCount", "CMapStringToPtr [MFC], GetHashTableSize", "CMapStringToPtr [MFC], GetNextAssoc", "CMapStringToPtr [MFC], GetSize", "CMapStringToPtr [MFC], GetStartPosition", "CMapStringToPtr [MFC], HashKey", "CMapStringToPtr [MFC], InitHashTable", "CMapStringToPtr [MFC], IsEmpty", "CMapStringToPtr [MFC], Lookup", "CMapStringToPtr [MFC], LookupKey", "CMapStringToPtr [MFC], RemoveAll", "CMapStringToPtr [MFC], RemoveKey", "CMapStringToPtr [MFC], SetAt"] -ms.assetid: 1ac11143-eb0a-4511-a662-2df0d1d9005b --- # CMapStringToPtr Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports maps of void pointers keyed by `CString` objects. ## Syntax diff --git a/docs/mfc/reference/cmapstringtostring-class.md b/docs/mfc/reference/cmapstringtostring-class.md index 1899172a7ed..a7f970445e6 100644 --- a/docs/mfc/reference/cmapstringtostring-class.md +++ b/docs/mfc/reference/cmapstringtostring-class.md @@ -4,10 +4,12 @@ title: "CMapStringToString Class" ms.date: "11/04/2016" f1_keywords: ["CMapStringToString", "AFXCOLL/CMapStringToString", "AFXCOLL/CMapStringToString::CPair", "AFXCOLL/CMapStringToString::CMapStringToString", "AFXCOLL/CMapStringToString::GetCount", "AFXCOLL/CMapStringToString::GetHashTableSize", "AFXCOLL/CMapStringToString::GetNextAssoc", "AFXCOLL/CMapStringToString::GetSize", "AFXCOLL/CMapStringToString::GetStartPosition", "AFXCOLL/CMapStringToString::HashKey", "AFXCOLL/CMapStringToString::InitHashTable", "AFXCOLL/CMapStringToString::IsEmpty", "AFXCOLL/CMapStringToString::Lookup", "AFXCOLL/CMapStringToString::LookupKey", "AFXCOLL/CMapStringToString::PGetFirstAssoc", "AFXCOLL/CMapStringToString::PGetNextAssoc", "AFXCOLL/CMapStringToString::PLookup", "AFXCOLL/CMapStringToString::RemoveAll", "AFXCOLL/CMapStringToString::RemoveKey", "AFXCOLL/CMapStringToString::SetAt"] helpviewer_keywords: ["CMapStringToString [MFC], CPair", "CMapStringToString [MFC], CMapStringToString", "CMapStringToString [MFC], GetCount", "CMapStringToString [MFC], GetHashTableSize", "CMapStringToString [MFC], GetNextAssoc", "CMapStringToString [MFC], GetSize", "CMapStringToString [MFC], GetStartPosition", "CMapStringToString [MFC], HashKey", "CMapStringToString [MFC], InitHashTable", "CMapStringToString [MFC], IsEmpty", "CMapStringToString [MFC], Lookup", "CMapStringToString [MFC], LookupKey", "CMapStringToString [MFC], PGetFirstAssoc", "CMapStringToString [MFC], PGetNextAssoc", "CMapStringToString [MFC], PLookup", "CMapStringToString [MFC], RemoveAll", "CMapStringToString [MFC], RemoveKey", "CMapStringToString [MFC], SetAt"] -ms.assetid: b45794c2-fe6b-4edb-a8ca-faa03b57b4a8 --- # CMapStringToString Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports maps of `CString` objects keyed by `CString` objects. ## Syntax diff --git a/docs/mfc/reference/cmapwordtoob-class.md b/docs/mfc/reference/cmapwordtoob-class.md index 395f405e314..8b3c3c428d7 100644 --- a/docs/mfc/reference/cmapwordtoob-class.md +++ b/docs/mfc/reference/cmapwordtoob-class.md @@ -4,10 +4,12 @@ title: "CMapWordToOb Class" ms.date: "11/04/2016" f1_keywords: ["CMapWordToOb", "AFXCOLL/CMapWordToOb", "AFXCOLL/CMapWordToOb::CMapWordToOb", "AFXCOLL/CMapWordToOb::GetCount", "AFXCOLL/CMapWordToOb::GetHashTableSize", "AFXCOLL/CMapWordToOb::GetNextAssoc", "AFXCOLL/CMapWordToOb::GetSize", "AFXCOLL/CMapWordToOb::GetStartPosition", "AFXCOLL/CMapWordToOb::HashKey", "AFXCOLL/CMapWordToOb::InitHashTable", "AFXCOLL/CMapWordToOb::IsEmpty", "AFXCOLL/CMapWordToOb::Lookup", "AFXCOLL/CMapWordToOb::LookupKey", "AFXCOLL/CMapWordToOb::RemoveAll", "AFXCOLL/CMapWordToOb::RemoveKey", "AFXCOLL/CMapWordToOb::SetAt"] helpviewer_keywords: ["CMapWordToOb [MFC], CMapWordToOb", "CMapWordToOb [MFC], GetCount", "CMapWordToOb [MFC], GetHashTableSize", "CMapWordToOb [MFC], GetNextAssoc", "CMapWordToOb [MFC], GetSize", "CMapWordToOb [MFC], GetStartPosition", "CMapWordToOb [MFC], HashKey", "CMapWordToOb [MFC], InitHashTable", "CMapWordToOb [MFC], IsEmpty", "CMapWordToOb [MFC], Lookup", "CMapWordToOb [MFC], LookupKey", "CMapWordToOb [MFC], RemoveAll", "CMapWordToOb [MFC], RemoveKey", "CMapWordToOb [MFC], SetAt"] -ms.assetid: 9c9bcd76-456f-4cf9-b03c-dd28b49d5e4f --- # CMapWordToOb Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports maps of `CObject` pointers keyed by 16-bit words. ## Syntax diff --git a/docs/mfc/reference/cmapwordtoptr-class.md b/docs/mfc/reference/cmapwordtoptr-class.md index 474a9292c20..90d850b0f18 100644 --- a/docs/mfc/reference/cmapwordtoptr-class.md +++ b/docs/mfc/reference/cmapwordtoptr-class.md @@ -4,10 +4,12 @@ title: "CMapWordToPtr Class" ms.date: "11/04/2016" f1_keywords: ["CMapWordToPtr", "AFXCOLL/CMapWordToPtr", "AFXCOLL/CMapWordToPtr::CMapWordToPtr", "AFXCOLL/CMapWordToPtr::GetCount", "AFXCOLL/CMapWordToPtr::GetHashTableSize", "AFXCOLL/CMapWordToPtr::GetNextAssoc", "AFXCOLL/CMapWordToPtr::GetSize", "AFXCOLL/CMapWordToPtr::GetStartPosition", "AFXCOLL/CMapWordToPtr::HashKey", "AFXCOLL/CMapWordToPtr::InitHashTable", "AFXCOLL/CMapWordToPtr::IsEmpty", "AFXCOLL/CMapWordToPtr::Lookup", "AFXCOLL/CMapWordToPtr::LookupKey", "AFXCOLL/CMapWordToPtr::RemoveAll", "AFXCOLL/CMapWordToPtr::RemoveKey", "AFXCOLL/CMapWordToPtr::SetAt"] helpviewer_keywords: ["CMapWordToPtr [MFC], CMapWordToPtr", "CMapWordToPtr [MFC], GetCount", "CMapWordToPtr [MFC], GetHashTableSize", "CMapWordToPtr [MFC], GetNextAssoc", "CMapWordToPtr [MFC], GetSize", "CMapWordToPtr [MFC], GetStartPosition", "CMapWordToPtr [MFC], HashKey", "CMapWordToPtr [MFC], InitHashTable", "CMapWordToPtr [MFC], IsEmpty", "CMapWordToPtr [MFC], Lookup", "CMapWordToPtr [MFC], LookupKey", "CMapWordToPtr [MFC], RemoveAll", "CMapWordToPtr [MFC], RemoveKey", "CMapWordToPtr [MFC], SetAt"] -ms.assetid: b204d87f-6427-43e1-93e3-a4b1bb41099f --- # CMapWordToPtr Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports maps of void pointers keyed by 16-bit words. ## Syntax diff --git a/docs/mfc/reference/cmdichildwnd-class.md b/docs/mfc/reference/cmdichildwnd-class.md index a199284190a..acace68a0f5 100644 --- a/docs/mfc/reference/cmdichildwnd-class.md +++ b/docs/mfc/reference/cmdichildwnd-class.md @@ -4,10 +4,12 @@ title: "CMDIChildWnd Class" ms.date: "11/04/2016" f1_keywords: ["CMDIChildWnd", "AFXWIN/CMDIChildWnd", "AFXWIN/CMDIChildWnd::CMDIChildWnd", "AFXWIN/CMDIChildWnd::Create", "AFXWIN/CMDIChildWnd::GetMDIFrame", "AFXWIN/CMDIChildWnd::MDIActivate", "AFXWIN/CMDIChildWnd::MDIDestroy", "AFXWIN/CMDIChildWnd::MDIMaximize", "AFXWIN/CMDIChildWnd::MDIRestore", "AFXWIN/CMDIChildWnd::SetHandles"] helpviewer_keywords: ["CMDIChildWnd [MFC], CMDIChildWnd", "CMDIChildWnd [MFC], Create", "CMDIChildWnd [MFC], GetMDIFrame", "CMDIChildWnd [MFC], MDIActivate", "CMDIChildWnd [MFC], MDIDestroy", "CMDIChildWnd [MFC], MDIMaximize", "CMDIChildWnd [MFC], MDIRestore", "CMDIChildWnd [MFC], SetHandles"] -ms.assetid: 6d07f5d4-9a3e-4723-9fa5-e65bb669fdd5 --- # CMDIChildWnd Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of a Windows multiple document interface (MDI) child window, along with members for managing the window. ## Syntax diff --git a/docs/mfc/reference/cmdichildwndex-class.md b/docs/mfc/reference/cmdichildwndex-class.md index b1f2e320dd5..a689a0849b7 100644 --- a/docs/mfc/reference/cmdichildwndex-class.md +++ b/docs/mfc/reference/cmdichildwndex-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMDIChildWndEx [MFC], ActivateTopLevelFrame", "CMDIChildW --- # CMDIChildWndEx Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMDIChildWndEx` class provides the functionality of a Windows multiple document interface (MDI) child window. It extends the functionality of [CMDIChildWnd Class](../../mfc/reference/cmdichildwnd-class.md). The framework requires this class when an MDI application uses certain MFC classes. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmdiframewnd-class.md b/docs/mfc/reference/cmdiframewnd-class.md index 8e5dc3025ae..f757ad62da0 100644 --- a/docs/mfc/reference/cmdiframewnd-class.md +++ b/docs/mfc/reference/cmdiframewnd-class.md @@ -4,10 +4,12 @@ title: "CMDIFrameWnd Class" ms.date: "11/04/2016" f1_keywords: ["CMDIFrameWnd", "AFXWIN/CMDIFrameWnd", "AFXWIN/CMDIFrameWnd::CMDIFrameWnd", "AFXWIN/CMDIFrameWnd::CreateClient", "AFXWIN/CMDIFrameWnd::CreateNewChild", "AFXWIN/CMDIFrameWnd::GetWindowMenuPopup", "AFXWIN/CMDIFrameWnd::MDIActivate", "AFXWIN/CMDIFrameWnd::MDICascade", "AFXWIN/CMDIFrameWnd::MDIGetActive", "AFXWIN/CMDIFrameWnd::MDIIconArrange", "AFXWIN/CMDIFrameWnd::MDIMaximize", "AFXWIN/CMDIFrameWnd::MDINext", "AFXWIN/CMDIFrameWnd::MDIPrev", "AFXWIN/CMDIFrameWnd::MDIRestore", "AFXWIN/CMDIFrameWnd::MDISetMenu", "AFXWIN/CMDIFrameWnd::MDITile"] helpviewer_keywords: ["CMDIFrameWnd [MFC], CMDIFrameWnd", "CMDIFrameWnd [MFC], CreateClient", "CMDIFrameWnd [MFC], CreateNewChild", "CMDIFrameWnd [MFC], GetWindowMenuPopup", "CMDIFrameWnd [MFC], MDIActivate", "CMDIFrameWnd [MFC], MDICascade", "CMDIFrameWnd [MFC], MDIGetActive", "CMDIFrameWnd [MFC], MDIIconArrange", "CMDIFrameWnd [MFC], MDIMaximize", "CMDIFrameWnd [MFC], MDINext", "CMDIFrameWnd [MFC], MDIPrev", "CMDIFrameWnd [MFC], MDIRestore", "CMDIFrameWnd [MFC], MDISetMenu", "CMDIFrameWnd [MFC], MDITile"] -ms.assetid: fa8736e6-511b-4c51-8b4d-eba78378aeb9 --- # CMDIFrameWnd Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of a Windows multiple document interface (MDI) frame window, along with members for managing the window. ## Syntax diff --git a/docs/mfc/reference/cmdiframewndex-class.md b/docs/mfc/reference/cmdiframewndex-class.md index 4cebc0fd4de..47ee4e152ce 100644 --- a/docs/mfc/reference/cmdiframewndex-class.md +++ b/docs/mfc/reference/cmdiframewndex-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMDIFrameWndEx [MFC], ActiveItemRecalcLayout", "CMDIFrame --- # `CMDIFrameWndEx` class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Extends the functionality of [`CMDIFrameWnd`](../../mfc/reference/cframewnd-class.md), a Windows Multiple Document Interface (MDI) frame window. ## Syntax diff --git a/docs/mfc/reference/cmditabinfo-class.md b/docs/mfc/reference/cmditabinfo-class.md index f2c9ffc9a02..d2ef90ec29b 100644 --- a/docs/mfc/reference/cmditabinfo-class.md +++ b/docs/mfc/reference/cmditabinfo-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMDITabInfo [MFC], Serialize", "CMDITabInfo [MFC], m_bAut --- # CMDITabInfo Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMDITabInfo` class is used to pass parameters to [CMDIFrameWndEx::EnableMDITabbedGroups](../../mfc/reference/cmdiframewndex-class.md#enablemditabbedgroups) method. Set members of this class to control the behavior of MDI tabbed groups. ## Syntax diff --git a/docs/mfc/reference/cmemfile-class.md b/docs/mfc/reference/cmemfile-class.md index d6b8ff19954..4fdaeeddc42 100644 --- a/docs/mfc/reference/cmemfile-class.md +++ b/docs/mfc/reference/cmemfile-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMemFile [MFC], CMemFile", "CMemFile [MFC], Attach", "CMe --- # CMemFile Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The [CFile](../../mfc/reference/cfile-class.md)-derived class that supports memory files. ## Syntax diff --git a/docs/mfc/reference/cmemoryexception-class.md b/docs/mfc/reference/cmemoryexception-class.md index d7afee5e522..42c37ca9bcc 100644 --- a/docs/mfc/reference/cmemoryexception-class.md +++ b/docs/mfc/reference/cmemoryexception-class.md @@ -4,10 +4,12 @@ title: "CMemoryException Class" ms.date: "11/04/2016" f1_keywords: ["CMemoryException", "AFX/CMemoryException", "AFX/CMemoryException::CMemoryException"] helpviewer_keywords: ["CMemoryException [MFC], CMemoryException"] -ms.assetid: 9af0ed57-d12a-45ca-82b5-c910a60f7edf --- # CMemoryException Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents an out-of-memory exception condition. ## Syntax diff --git a/docs/mfc/reference/cmemorystate-structure.md b/docs/mfc/reference/cmemorystate-structure.md index a81816fc534..9f6a7f3f41f 100644 --- a/docs/mfc/reference/cmemorystate-structure.md +++ b/docs/mfc/reference/cmemorystate-structure.md @@ -4,10 +4,12 @@ title: "CMemoryState Structure" ms.date: "11/04/2016" f1_keywords: ["CMemoryState"] helpviewer_keywords: ["CMemoryState structure [MFC]", "memory leaks [MFC], detecting", "detecting memory leaks [MFC]"] -ms.assetid: 229d9de7-a6f3-4cc6-805b-5a9d9b1bfe1d --- # CMemoryState Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides a convenient way to detect memory leaks in your program. ## Syntax diff --git a/docs/mfc/reference/cmenu-class.md b/docs/mfc/reference/cmenu-class.md index 70d8e40d751..7cf5c9589a0 100644 --- a/docs/mfc/reference/cmenu-class.md +++ b/docs/mfc/reference/cmenu-class.md @@ -4,10 +4,12 @@ title: "CMenu Class" ms.date: "11/04/2016" f1_keywords: ["CMenu", "AFXWIN/CMenu", "AFXWIN/CMenu::CMenu", "AFXWIN/CMenu::AppendMenu", "AFXWIN/CMenu::Attach", "AFXWIN/CMenu::CheckMenuItem", "AFXWIN/CMenu::CheckMenuRadioItem", "AFXWIN/CMenu::CreateMenu", "AFXWIN/CMenu::CreatePopupMenu", "AFXWIN/CMenu::DeleteMenu", "AFXWIN/CMenu::DeleteTempMap", "AFXWIN/CMenu::DestroyMenu", "AFXWIN/CMenu::Detach", "AFXWIN/CMenu::DrawItem", "AFXWIN/CMenu::EnableMenuItem", "AFXWIN/CMenu::FromHandle", "AFXWIN/CMenu::GetDefaultItem", "AFXWIN/CMenu::GetMenuContextHelpId", "AFXWIN/CMenu::GetMenuInfo", "AFXWIN/CMenu::GetMenuItemCount", "AFXWIN/CMenu::GetMenuItemID", "AFXWIN/CMenu::GetMenuItemInfo", "AFXWIN/CMenu::GetMenuState", "AFXWIN/CMenu::GetMenuString", "AFXWIN/CMenu::GetSafeHmenu", "AFXWIN/CMenu::GetSubMenu", "AFXWIN/CMenu::InsertMenu", "AFXWIN/CMenu::InsertMenuItem", "AFXWIN/CMenu::LoadMenu", "AFXWIN/CMenu::LoadMenuIndirect", "AFXWIN/CMenu::MeasureItem", "AFXWIN/CMenu::ModifyMenu", "AFXWIN/CMenu::RemoveMenu", "AFXWIN/CMenu::SetDefaultItem", "AFXWIN/CMenu::SetMenuContextHelpId", "AFXWIN/CMenu::SetMenuInfo", "AFXWIN/CMenu::SetMenuItemBitmaps", "AFXWIN/CMenu::SetMenuItemInfo", "AFXWIN/CMenu::TrackPopupMenu", "AFXWIN/CMenu::TrackPopupMenuEx", "AFXWIN/CMenu::m_hMenu"] helpviewer_keywords: ["CMenu [MFC], CMenu", "CMenu [MFC], AppendMenu", "CMenu [MFC], Attach", "CMenu [MFC], CheckMenuItem", "CMenu [MFC], CheckMenuRadioItem", "CMenu [MFC], CreateMenu", "CMenu [MFC], CreatePopupMenu", "CMenu [MFC], DeleteMenu", "CMenu [MFC], DeleteTempMap", "CMenu [MFC], DestroyMenu", "CMenu [MFC], Detach", "CMenu [MFC], DrawItem", "CMenu [MFC], EnableMenuItem", "CMenu [MFC], FromHandle", "CMenu [MFC], GetDefaultItem", "CMenu [MFC], GetMenuContextHelpId", "CMenu [MFC], GetMenuInfo", "CMenu [MFC], GetMenuItemCount", "CMenu [MFC], GetMenuItemID", "CMenu [MFC], GetMenuItemInfo", "CMenu [MFC], GetMenuState", "CMenu [MFC], GetMenuString", "CMenu [MFC], GetSafeHmenu", "CMenu [MFC], GetSubMenu", "CMenu [MFC], InsertMenu", "CMenu [MFC], InsertMenuItem", "CMenu [MFC], LoadMenu", "CMenu [MFC], LoadMenuIndirect", "CMenu [MFC], MeasureItem", "CMenu [MFC], ModifyMenu", "CMenu [MFC], RemoveMenu", "CMenu [MFC], SetDefaultItem", "CMenu [MFC], SetMenuContextHelpId", "CMenu [MFC], SetMenuInfo", "CMenu [MFC], SetMenuItemBitmaps", "CMenu [MFC], SetMenuItemInfo", "CMenu [MFC], TrackPopupMenu", "CMenu [MFC], TrackPopupMenuEx", "CMenu [MFC], m_hMenu"] -ms.assetid: 40cacfdc-d45c-4ec7-bf28-991c72812499 --- # `CMenu` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An encapsulation of the Windows `HMENU`. ## Syntax diff --git a/docs/mfc/reference/cmenutearoffmanager-class.md b/docs/mfc/reference/cmenutearoffmanager-class.md index 3aeb8d41a0b..d4fea412a20 100644 --- a/docs/mfc/reference/cmenutearoffmanager-class.md +++ b/docs/mfc/reference/cmenutearoffmanager-class.md @@ -4,10 +4,12 @@ title: "CMenuTearOffManager Class" ms.date: "10/18/2018" f1_keywords: ["CMenuTearOffManager", "AFXMENUTEAROFFMANAGER/CMenuTearOffManager", "AFXMENUTEAROFFMANAGER/CMenuTearOffManager::CMenuTearOffManager", "AFXMENUTEAROFFMANAGER/CMenuTearOffManager::Build", "AFXMENUTEAROFFMANAGER/CMenuTearOffManager::GetRegPath", "AFXMENUTEAROFFMANAGER/CMenuTearOffManager::Initialize", "AFXMENUTEAROFFMANAGER/CMenuTearOffManager::IsDynamicID", "AFXMENUTEAROFFMANAGER/CMenuTearOffManager::Parse", "AFXMENUTEAROFFMANAGER/CMenuTearOffManager::Reset", "AFXMENUTEAROFFMANAGER/CMenuTearOffManager::SetInUse", "AFXMENUTEAROFFMANAGER/CMenuTearOffManager::SetupTearOffMenus"] helpviewer_keywords: ["CMenuTearOffManager [MFC], CMenuTearOffManager", "CMenuTearOffManager [MFC], Build", "CMenuTearOffManager [MFC], GetRegPath", "CMenuTearOffManager [MFC], Initialize", "CMenuTearOffManager [MFC], IsDynamicID", "CMenuTearOffManager [MFC], Parse", "CMenuTearOffManager [MFC], Reset", "CMenuTearOffManager [MFC], SetInUse", "CMenuTearOffManager [MFC], SetupTearOffMenus"] -ms.assetid: ab7ca272-ce42-4678-95f7-6ad75038f5a0 --- # CMenuTearOffManager Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Manages tear-off menus. A tear-off menu is a menu on the menu bar. The user can remove a tear-off menu from the menu bar, causing the tear-off menu to float. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmetafiledc-class.md b/docs/mfc/reference/cmetafiledc-class.md index 247113ce933..cbbca361521 100644 --- a/docs/mfc/reference/cmetafiledc-class.md +++ b/docs/mfc/reference/cmetafiledc-class.md @@ -4,10 +4,12 @@ title: "CMetaFileDC Class" ms.date: "11/04/2016" f1_keywords: ["CMetaFileDC", "AFXEXT/CMetaFileDC", "AFXEXT/CMetaFileDC::CMetaFileDC", "AFXEXT/CMetaFileDC::Close", "AFXEXT/CMetaFileDC::CloseEnhanced", "AFXEXT/CMetaFileDC::Create", "AFXEXT/CMetaFileDC::CreateEnhanced"] helpviewer_keywords: ["CMetaFileDC [MFC], CMetaFileDC", "CMetaFileDC [MFC], Close", "CMetaFileDC [MFC], CloseEnhanced", "CMetaFileDC [MFC], Create", "CMetaFileDC [MFC], CreateEnhanced"] -ms.assetid: ffce60fa-4181-4d46-9832-25e46fad4db4 --- # CMetaFileDC Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a Windows metafile, which contains a sequence of graphics device interface (GDI) commands that you can replay to create a desired image or text. ## Syntax diff --git a/docs/mfc/reference/cmfcacceleratorkey-class.md b/docs/mfc/reference/cmfcacceleratorkey-class.md index cea5e0154c5..ceef60ee03b 100644 --- a/docs/mfc/reference/cmfcacceleratorkey-class.md +++ b/docs/mfc/reference/cmfcacceleratorkey-class.md @@ -4,10 +4,12 @@ title: "CMFCAcceleratorKey Class" ms.date: "11/04/2016" f1_keywords: ["CMFCAcceleratorKey", "AFXACCELERATORKEY/CMFCAcceleratorKey", "AFXACCELERATORKEY/CMFCAcceleratorKey::CMFCAcceleratorKey", "AFXACCELERATORKEY/CMFCAcceleratorKey::Format", "AFXACCELERATORKEY/CMFCAcceleratorKey::SetAccelerator"] helpviewer_keywords: ["CMFCAcceleratorKey [MFC], CMFCAcceleratorKey", "CMFCAcceleratorKey [MFC], Format", "CMFCAcceleratorKey [MFC], SetAccelerator"] -ms.assetid: d140fbf7-23db-45ea-a63e-414a5ec7b3d5 --- # CMFCAcceleratorKey Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A helper class that implements virtual key mapping and formatting. ## Syntax diff --git a/docs/mfc/reference/cmfcacceleratorkeyassignctrl-class.md b/docs/mfc/reference/cmfcacceleratorkeyassignctrl-class.md index 24c02779510..dadb4244270 100644 --- a/docs/mfc/reference/cmfcacceleratorkeyassignctrl-class.md +++ b/docs/mfc/reference/cmfcacceleratorkeyassignctrl-class.md @@ -4,10 +4,12 @@ title: "CMFCAcceleratorKeyAssignCtrl Class" ms.date: "10/18/2018" f1_keywords: ["CMFCAcceleratorKeyAssignCtrl", "AFXACCELERATORKEYASSIGNCTRL/CMFCAcceleratorKeyAssignCtrl", "AFXACCELERATORKEYASSIGNCTRL/CMFCAcceleratorKeyAssignCtrl::CMFCAcceleratorKeyAssignCtrl", "AFXACCELERATORKEYASSIGNCTRL/CMFCAcceleratorKeyAssignCtrl::GetAccel", "AFXACCELERATORKEYASSIGNCTRL/CMFCAcceleratorKeyAssignCtrl::IsFocused", "AFXACCELERATORKEYASSIGNCTRL/CMFCAcceleratorKeyAssignCtrl::IsKeyDefined", "AFXACCELERATORKEYASSIGNCTRL/CMFCAcceleratorKeyAssignCtrl::PreTranslateMessage", "AFXACCELERATORKEYASSIGNCTRL/CMFCAcceleratorKeyAssignCtrl::ResetKey"] helpviewer_keywords: ["CMFCAcceleratorKeyAssignCtrl [MFC], CMFCAcceleratorKeyAssignCtrl", "CMFCAcceleratorKeyAssignCtrl [MFC], GetAccel", "CMFCAcceleratorKeyAssignCtrl [MFC], IsFocused", "CMFCAcceleratorKeyAssignCtrl [MFC], IsKeyDefined", "CMFCAcceleratorKeyAssignCtrl [MFC], PreTranslateMessage", "CMFCAcceleratorKeyAssignCtrl [MFC], ResetKey"] -ms.assetid: 89fb8e62-596e-4e71-8c9a-32740347aaab --- # CMFCAcceleratorKeyAssignCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCAcceleratorKeyAssignCtrl` class extends the [CEdit Class](../../mfc/reference/cedit-class.md) to support extra system buttons such as ALT, CONTROL, and SHIFT. ## Syntax diff --git a/docs/mfc/reference/cmfcautohidebar-class.md b/docs/mfc/reference/cmfcautohidebar-class.md index 120b1d8303a..20ad6d6369f 100644 --- a/docs/mfc/reference/cmfcautohidebar-class.md +++ b/docs/mfc/reference/cmfcautohidebar-class.md @@ -4,10 +4,12 @@ title: "CMFCAutoHideBar Class" ms.date: "10/18/2018" f1_keywords: ["CMFCAutoHideBar", "AFXAUTOHIDEBAR/CMFCAutoHideBar", "AFXAUTOHIDEBAR/CMFCAutoHideBar::CMFCAutoHideBar", "AFXAUTOHIDEBAR/CMFCAutoHideBar::AddAutoHideWindow", "AFXAUTOHIDEBAR/CMFCAutoHideBar::AllowShowOnPaneMenu", "AFXAUTOHIDEBAR/CMFCAutoHideBar::CalcFixedLayout", "AFXAUTOHIDEBAR/CMFCAutoHideBar::Create", "AFXAUTOHIDEBAR/CMFCAutoHideBar::GetFirstAHWindow", "AFXAUTOHIDEBAR/CMFCAutoHideBar::GetVisibleCount", "AFXAUTOHIDEBAR/CMFCAutoHideBar::OnShowControlBarMenu", "AFXAUTOHIDEBAR/CMFCAutoHideBar::RemoveAutoHideWindow", "AFXAUTOHIDEBAR/CMFCAutoHideBar::SetActiveInGroup", "AFXAUTOHIDEBAR/CMFCAutoHideBar::SetRecentVisibleState", "AFXAUTOHIDEBAR/CMFCAutoHideBar::ShowAutoHideWindow", "AFXAUTOHIDEBAR/CMFCAutoHideBar::StretchPane", "AFXAUTOHIDEBAR/CMFCAutoHideBar::UnSetAutoHideMode", "AFXAUTOHIDEBAR/CMFCAutoHideBar::UpdateVisibleState", "AFXAUTOHIDEBAR/CMFCAutoHideBar::m_nShowAHWndDelay"] helpviewer_keywords: ["CMFCAutoHideBar [MFC], CMFCAutoHideBar", "CMFCAutoHideBar [MFC], AddAutoHideWindow", "CMFCAutoHideBar [MFC], AllowShowOnPaneMenu", "CMFCAutoHideBar [MFC], CalcFixedLayout", "CMFCAutoHideBar [MFC], Create", "CMFCAutoHideBar [MFC], GetFirstAHWindow", "CMFCAutoHideBar [MFC], GetVisibleCount", "CMFCAutoHideBar [MFC], OnShowControlBarMenu", "CMFCAutoHideBar [MFC], RemoveAutoHideWindow", "CMFCAutoHideBar [MFC], SetActiveInGroup", "CMFCAutoHideBar [MFC], SetRecentVisibleState", "CMFCAutoHideBar [MFC], ShowAutoHideWindow", "CMFCAutoHideBar [MFC], StretchPane", "CMFCAutoHideBar [MFC], UnSetAutoHideMode", "CMFCAutoHideBar [MFC], UpdateVisibleState", "CMFCAutoHideBar [MFC], m_nShowAHWndDelay"] -ms.assetid: 54c8d84f-de64-4efd-8a47-3ea0ade40a70 --- # CMFCAutoHideBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCAutoHideBar` class is a special toolbar class that implements the auto-hide feature. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcautohidebutton-class.md b/docs/mfc/reference/cmfcautohidebutton-class.md index a1b6dfaa421..1b1561fd267 100644 --- a/docs/mfc/reference/cmfcautohidebutton-class.md +++ b/docs/mfc/reference/cmfcautohidebutton-class.md @@ -4,10 +4,12 @@ title: "CMFCAutoHideButton Class" ms.date: "10/18/2018" f1_keywords: ["CMFCAutoHideButton", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::BringToTop", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::Create", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::GetAlignment", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::GetAutoHideWindow", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::GetParentToolBar", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::GetRect", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::GetSize", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::GetTextSize", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::HighlightButton", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::IsActive", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::IsHighlighted", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::IsHorizontal", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::IsTop", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::IsVisible", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::Move", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::OnDraw", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::OnDrawBorder", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::OnFillBackground", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::ReplacePane", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::ShowAttachedWindow", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::ShowButton", "AFXAUTOHIDEBUTTON/CMFCAutoHideButton::UnSetAutoHideMode"] helpviewer_keywords: ["CMFCAutoHideButton [MFC], BringToTop", "CMFCAutoHideButton [MFC], Create", "CMFCAutoHideButton [MFC], GetAlignment", "CMFCAutoHideButton [MFC], GetAutoHideWindow", "CMFCAutoHideButton [MFC], GetParentToolBar", "CMFCAutoHideButton [MFC], GetRect", "CMFCAutoHideButton [MFC], GetSize", "CMFCAutoHideButton [MFC], GetTextSize", "CMFCAutoHideButton [MFC], HighlightButton", "CMFCAutoHideButton [MFC], IsActive", "CMFCAutoHideButton [MFC], IsHighlighted", "CMFCAutoHideButton [MFC], IsHorizontal", "CMFCAutoHideButton [MFC], IsTop", "CMFCAutoHideButton [MFC], IsVisible", "CMFCAutoHideButton [MFC], Move", "CMFCAutoHideButton [MFC], OnDraw", "CMFCAutoHideButton [MFC], OnDrawBorder", "CMFCAutoHideButton [MFC], OnFillBackground", "CMFCAutoHideButton [MFC], ReplacePane", "CMFCAutoHideButton [MFC], ShowAttachedWindow", "CMFCAutoHideButton [MFC], ShowButton", "CMFCAutoHideButton [MFC], UnSetAutoHideMode"] -ms.assetid: c80e6b8b-25ca-4d12-9d27-457731028ab0 --- # CMFCAutoHideButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A button that displays or hides a [CDockablePane Class](../../mfc/reference/cdockablepane-class.md) that is configured to hide. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcbasetabctrl-class.md b/docs/mfc/reference/cmfcbasetabctrl-class.md index d34822e52a4..519bcbeb027 100644 --- a/docs/mfc/reference/cmfcbasetabctrl-class.md +++ b/docs/mfc/reference/cmfcbasetabctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCBaseTabCtrl [MFC], AddIcon", "CMFCBaseTabCtrl [MFC], --- # CMFCBaseTabCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the base functionality for tabbed windows. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcbasetoolbar-class.md b/docs/mfc/reference/cmfcbasetoolbar-class.md index 39389c20bd7..d9a2eb12cae 100644 --- a/docs/mfc/reference/cmfcbasetoolbar-class.md +++ b/docs/mfc/reference/cmfcbasetoolbar-class.md @@ -4,10 +4,12 @@ title: "CMFCBaseToolBar Class" ms.date: "11/04/2016" f1_keywords: ["CMFCBaseToolBar", "AFXBASETOOLBAR/CMFCBaseToolBar", "AFXBASETOOLBAR/CMFCBaseToolBar::GetDockingMode", "AFXBASETOOLBAR/CMFCBaseToolBar::GetMinSize", "AFXBASETOOLBAR/CMFCBaseToolBar::OnAfterChangeParent"] helpviewer_keywords: ["CMFCBaseToolBar [MFC], GetDockingMode", "CMFCBaseToolBar [MFC], GetMinSize", "CMFCBaseToolBar [MFC], OnAfterChangeParent"] -ms.assetid: 5d79206d-55e4-46f8-b1b8-042e34d7f9da --- # CMFCBaseToolBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Base class for toolbars. ## Syntax diff --git a/docs/mfc/reference/cmfcbasevisualmanager-class.md b/docs/mfc/reference/cmfcbasevisualmanager-class.md index c6e2eacfb4a..e092d50743a 100644 --- a/docs/mfc/reference/cmfcbasevisualmanager-class.md +++ b/docs/mfc/reference/cmfcbasevisualmanager-class.md @@ -4,10 +4,12 @@ title: "CMFCBaseVisualManager Class" ms.date: "11/04/2016" f1_keywords: ["CMFCBaseVisualManager", "AFXVISUALMANAGER/CMFCBaseVisualManager", "AFXVISUALMANAGER/CMFCBaseVisualManager::CMFCBaseVisualManager", "AFXVISUALMANAGER/CMFCBaseVisualManager::DrawCheckBox", "AFXVISUALMANAGER/CMFCBaseVisualManager::DrawComboBorder", "AFXVISUALMANAGER/CMFCBaseVisualManager::DrawComboDropButton", "AFXVISUALMANAGER/CMFCBaseVisualManager::DrawPushButton", "AFXVISUALMANAGER/CMFCBaseVisualManager::DrawRadioButton", "AFXVISUALMANAGER/CMFCBaseVisualManager::DrawStatusBarProgress", "AFXVISUALMANAGER/CMFCBaseVisualManager::FillReBarPane", "AFXVISUALMANAGER/CMFCBaseVisualManager::GetStandardWindowsTheme", "AFXVISUALMANAGER/CMFCBaseVisualManager::CleanUpThemes", "AFXVISUALMANAGER/CMFCBaseVisualManager::UpdateSystemColors"] helpviewer_keywords: ["CMFCBaseVisualManager [MFC], CMFCBaseVisualManager", "CMFCBaseVisualManager [MFC], DrawCheckBox", "CMFCBaseVisualManager [MFC], DrawComboBorder", "CMFCBaseVisualManager [MFC], DrawComboDropButton", "CMFCBaseVisualManager [MFC], DrawPushButton", "CMFCBaseVisualManager [MFC], DrawRadioButton", "CMFCBaseVisualManager [MFC], DrawStatusBarProgress", "CMFCBaseVisualManager [MFC], FillReBarPane", "CMFCBaseVisualManager [MFC], GetStandardWindowsTheme", "CMFCBaseVisualManager [MFC], CleanUpThemes", "CMFCBaseVisualManager [MFC], UpdateSystemColors"] -ms.assetid: d56f3afc-cdea-4de1-825a-a08999c571e0 --- # CMFCBaseVisualManager Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A layer between derived visual managers and the Windows Theme API. `CMFCBaseVisualManager` loads UxTheme.dll, if available, and manages access to Windows Theme API methods. diff --git a/docs/mfc/reference/cmfcbutton-class.md b/docs/mfc/reference/cmfcbutton-class.md index a244e55d07e..def437d5ce1 100644 --- a/docs/mfc/reference/cmfcbutton-class.md +++ b/docs/mfc/reference/cmfcbutton-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCButton [MFC], CleanUp", "CMFCButton [MFC], EnableFull --- # `CMFCButton` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCButton` class adds functionality to the [`CButton`](../../mfc/reference/cbutton-class.md) class such as aligning button text, combining button text and an image, selecting a cursor, and specifying a tool tip. ## Syntax diff --git a/docs/mfc/reference/cmfccaptionbar-class.md b/docs/mfc/reference/cmfccaptionbar-class.md index b6faf964bb5..c42a67c0d28 100644 --- a/docs/mfc/reference/cmfccaptionbar-class.md +++ b/docs/mfc/reference/cmfccaptionbar-class.md @@ -4,10 +4,12 @@ title: "CMFCCaptionBar Class" ms.date: "11/04/2016" f1_keywords: ["CMFCCaptionBar", "AFXCAPTIONBAR/CMFCCaptionBar", "AFXCAPTIONBAR/CMFCCaptionBar::Create", "AFXCAPTIONBAR/CMFCCaptionBar::DoesAllowDynInsertBefore", "AFXCAPTIONBAR/CMFCCaptionBar::EnableButton", "AFXCAPTIONBAR/CMFCCaptionBar::GetAlignment", "AFXCAPTIONBAR/CMFCCaptionBar::GetBorderSize", "AFXCAPTIONBAR/CMFCCaptionBar::GetButtonRect", "AFXCAPTIONBAR/CMFCCaptionBar::GetMargin", "AFXCAPTIONBAR/CMFCCaptionBar::IsMessageBarMode", "AFXCAPTIONBAR/CMFCCaptionBar::RemoveBitmap", "AFXCAPTIONBAR/CMFCCaptionBar::RemoveButton", "AFXCAPTIONBAR/CMFCCaptionBar::RemoveIcon", "AFXCAPTIONBAR/CMFCCaptionBar::RemoveText", "AFXCAPTIONBAR/CMFCCaptionBar::SetBitmap", "AFXCAPTIONBAR/CMFCCaptionBar::SetBorderSize", "AFXCAPTIONBAR/CMFCCaptionBar::SetButton", "AFXCAPTIONBAR/CMFCCaptionBar::SetButtonPressed", "AFXCAPTIONBAR/CMFCCaptionBar::SetButtonToolTip", "AFXCAPTIONBAR/CMFCCaptionBar::SetFlatBorder", "AFXCAPTIONBAR/CMFCCaptionBar::SetIcon", "AFXCAPTIONBAR/CMFCCaptionBar::SetImageToolTip", "AFXCAPTIONBAR/CMFCCaptionBar::SetMargin", "AFXCAPTIONBAR/CMFCCaptionBar::SetText", "AFXCAPTIONBAR/CMFCCaptionBar::OnDrawBackground", "AFXCAPTIONBAR/CMFCCaptionBar::OnDrawBorder", "AFXCAPTIONBAR/CMFCCaptionBar::OnDrawButton", "AFXCAPTIONBAR/CMFCCaptionBar::OnDrawImage", "AFXCAPTIONBAR/CMFCCaptionBar::OnDrawText", "AFXCAPTIONBAR/CMFCCaptionBar::m_clrBarBackground", "AFXCAPTIONBAR/CMFCCaptionBar::m_clrBarBorder", "AFXCAPTIONBAR/CMFCCaptionBar::m_clrBarText"] helpviewer_keywords: ["CMFCCaptionBar [MFC], Create", "CMFCCaptionBar [MFC], DoesAllowDynInsertBefore", "CMFCCaptionBar [MFC], EnableButton", "CMFCCaptionBar [MFC], GetAlignment", "CMFCCaptionBar [MFC], GetBorderSize", "CMFCCaptionBar [MFC], GetButtonRect", "CMFCCaptionBar [MFC], GetMargin", "CMFCCaptionBar [MFC], IsMessageBarMode", "CMFCCaptionBar [MFC], RemoveBitmap", "CMFCCaptionBar [MFC], RemoveButton", "CMFCCaptionBar [MFC], RemoveIcon", "CMFCCaptionBar [MFC], RemoveText", "CMFCCaptionBar [MFC], SetBitmap", "CMFCCaptionBar [MFC], SetBorderSize", "CMFCCaptionBar [MFC], SetButton", "CMFCCaptionBar [MFC], SetButtonPressed", "CMFCCaptionBar [MFC], SetButtonToolTip", "CMFCCaptionBar [MFC], SetFlatBorder", "CMFCCaptionBar [MFC], SetIcon", "CMFCCaptionBar [MFC], SetImageToolTip", "CMFCCaptionBar [MFC], SetMargin", "CMFCCaptionBar [MFC], SetText", "CMFCCaptionBar [MFC], OnDrawBackground", "CMFCCaptionBar [MFC], OnDrawBorder", "CMFCCaptionBar [MFC], OnDrawButton", "CMFCCaptionBar [MFC], OnDrawImage", "CMFCCaptionBar [MFC], OnDrawText", "CMFCCaptionBar [MFC], m_clrBarBackground", "CMFCCaptionBar [MFC], m_clrBarBorder", "CMFCCaptionBar [MFC], m_clrBarText"] -ms.assetid: acb54d5f-14ff-4c96-aeb3-7717cf566d9a --- # CMFCCaptionBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A `CMFCCaptionBar` object is a control bar that can display three elements: a button, a text label, and a bitmap. It can only display one element of each type at a time. You can align each element to the left or right edges of the control or to the center. You can also apply a flat or 3D style to the top and bottom borders of the caption bar. ## Syntax diff --git a/docs/mfc/reference/cmfccaptionbutton-class.md b/docs/mfc/reference/cmfccaptionbutton-class.md index 645ae95d272..3c1b580936c 100644 --- a/docs/mfc/reference/cmfccaptionbutton-class.md +++ b/docs/mfc/reference/cmfccaptionbutton-class.md @@ -4,10 +4,12 @@ title: "CMFCCaptionButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCCaptionButton", "AFXCAPTIONBUTTON/CMFCCaptionButton", "AFXCAPTIONBUTTON/CMFCCaptionButton::CMFCCaptionButton", "AFXCAPTIONBUTTON/CMFCCaptionButton::GetHit", "AFXCAPTIONBUTTON/CMFCCaptionButton::GetIconID", "AFXCAPTIONBUTTON/CMFCCaptionButton::GetRect", "AFXCAPTIONBUTTON/CMFCCaptionButton::GetSize", "AFXCAPTIONBUTTON/CMFCCaptionButton::IsMiniFrameButton", "AFXCAPTIONBUTTON/CMFCCaptionButton::Move", "AFXCAPTIONBUTTON/CMFCCaptionButton::OnDraw", "AFXCAPTIONBUTTON/CMFCCaptionButton::SetMiniFrameButton"] helpviewer_keywords: ["CMFCCaptionButton [MFC], CMFCCaptionButton", "CMFCCaptionButton [MFC], GetHit", "CMFCCaptionButton [MFC], GetIconID", "CMFCCaptionButton [MFC], GetRect", "CMFCCaptionButton [MFC], GetSize", "CMFCCaptionButton [MFC], IsMiniFrameButton", "CMFCCaptionButton [MFC], Move", "CMFCCaptionButton [MFC], OnDraw", "CMFCCaptionButton [MFC], SetMiniFrameButton"] -ms.assetid: c5774b38-c0dd-414a-9ede-3b2f78f233ec --- # CMFCCaptionButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCCaptionButton` class implements a button that is displayed on the caption bar for a docking pane or a mini-frame window. Typically, the framework creates caption buttons automatically. ## Syntax diff --git a/docs/mfc/reference/cmfccmdusagecount-class.md b/docs/mfc/reference/cmfccmdusagecount-class.md index 72347cb1a62..db6d04fbc03 100644 --- a/docs/mfc/reference/cmfccmdusagecount-class.md +++ b/docs/mfc/reference/cmfccmdusagecount-class.md @@ -4,10 +4,12 @@ title: "CMFCCmdUsageCount Class" ms.date: "11/04/2016" f1_keywords: ["CMFCCmdUsageCount", "AFXCMDUSAGECOUNT/CMFCCmdUsageCount", "AFXCMDUSAGECOUNT/CMFCCmdUsageCount::AddCmd", "AFXCMDUSAGECOUNT/CMFCCmdUsageCount::GetCount", "AFXCMDUSAGECOUNT/CMFCCmdUsageCount::HasEnoughInformation", "AFXCMDUSAGECOUNT/CMFCCmdUsageCount::IsFreqeuntlyUsedCmd", "AFXCMDUSAGECOUNT/CMFCCmdUsageCount::Reset", "AFXCMDUSAGECOUNT/CMFCCmdUsageCount::Serialize", "AFXCMDUSAGECOUNT/CMFCCmdUsageCount::SetOptions"] helpviewer_keywords: ["CMFCCmdUsageCount [MFC], AddCmd", "CMFCCmdUsageCount [MFC], GetCount", "CMFCCmdUsageCount [MFC], HasEnoughInformation", "CMFCCmdUsageCount [MFC], IsFreqeuntlyUsedCmd", "CMFCCmdUsageCount [MFC], Reset", "CMFCCmdUsageCount [MFC], Serialize", "CMFCCmdUsageCount [MFC], SetOptions"] -ms.assetid: 9c33b783-37c0-43ea-9f31-3c75e246c841 --- # CMFCCmdUsageCount Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Tracks the usage count of Windows messages, such as when the user selects an item from a menu. ## Syntax diff --git a/docs/mfc/reference/cmfccolorbar-class.md b/docs/mfc/reference/cmfccolorbar-class.md index d24989d33b9..d423c2cacf5 100644 --- a/docs/mfc/reference/cmfccolorbar-class.md +++ b/docs/mfc/reference/cmfccolorbar-class.md @@ -4,10 +4,12 @@ title: "CMFCColorBar Class" ms.date: "11/04/2016" f1_keywords: ["CMFCColorBar", "AFXCOLORBAR/CMFCColorBar", "AFXCOLORBAR/CMFCColorBar::CMFCColorBar", "AFXCOLORBAR/CMFCColorBar::ContextToSize", "AFXCOLORBAR/CMFCColorBar::CreateControl", "AFXCOLORBAR/CMFCColorBar::Create", "AFXCOLORBAR/CMFCColorBar::EnableAutomaticButton", "AFXCOLORBAR/CMFCColorBar::EnableOtherButton", "AFXCOLORBAR/CMFCColorBar::GetColor", "AFXCOLORBAR/CMFCColorBar::GetCommandID", "AFXCOLORBAR/CMFCColorBar::GetHighlightedColor", "AFXCOLORBAR/CMFCColorBar::GetHorzMargin", "AFXCOLORBAR/CMFCColorBar::GetVertMargin", "AFXCOLORBAR/CMFCColorBar::IsTearOff", "AFXCOLORBAR/CMFCColorBar::SetColor", "AFXCOLORBAR/CMFCColorBar::SetColorName", "AFXCOLORBAR/CMFCColorBar::SetCommandID", "AFXCOLORBAR/CMFCColorBar::SetDocumentColors", "AFXCOLORBAR/CMFCColorBar::SetHorzMargin", "AFXCOLORBAR/CMFCColorBar::SetVertMargin", "AFXCOLORBAR/CMFCColorBar::AdjustLocations", "AFXCOLORBAR/CMFCColorBar::AllowChangeTextLabels", "AFXCOLORBAR/CMFCColorBar::AllowShowOnList", "AFXCOLORBAR/CMFCColorBar::CalcSize", "AFXCOLORBAR/CMFCColorBar::CreatePalette", "AFXCOLORBAR/CMFCColorBar::GetColorGridSize", "AFXCOLORBAR/CMFCColorBar::GetExtraHeight", "AFXCOLORBAR/CMFCColorBar::InitColors", "AFXCOLORBAR/CMFCColorBar::OnKey", "AFXCOLORBAR/CMFCColorBar::OnSendCommand", "AFXCOLORBAR/CMFCColorBar::OnUpdateCmdUI", "AFXCOLORBAR/CMFCColorBar::OpenColorDialog", "AFXCOLORBAR/CMFCColorBar::Rebuild", "AFXCOLORBAR/CMFCColorBar::SelectPalette", "AFXCOLORBAR/CMFCColorBar::SetPropList", "AFXCOLORBAR/CMFCColorBar::ShowCommandMessageString"] helpviewer_keywords: ["CMFCColorBar [MFC], CMFCColorBar", "CMFCColorBar [MFC], ContextToSize", "CMFCColorBar [MFC], CreateControl", "CMFCColorBar [MFC], Create", "CMFCColorBar [MFC], EnableAutomaticButton", "CMFCColorBar [MFC], EnableOtherButton", "CMFCColorBar [MFC], GetColor", "CMFCColorBar [MFC], GetCommandID", "CMFCColorBar [MFC], GetHighlightedColor", "CMFCColorBar [MFC], GetHorzMargin", "CMFCColorBar [MFC], GetVertMargin", "CMFCColorBar [MFC], IsTearOff", "CMFCColorBar [MFC], SetColor", "CMFCColorBar [MFC], SetColorName", "CMFCColorBar [MFC], SetCommandID", "CMFCColorBar [MFC], SetDocumentColors", "CMFCColorBar [MFC], SetHorzMargin", "CMFCColorBar [MFC], SetVertMargin", "CMFCColorBar [MFC], AdjustLocations", "CMFCColorBar [MFC], AllowChangeTextLabels", "CMFCColorBar [MFC], AllowShowOnList", "CMFCColorBar [MFC], CalcSize", "CMFCColorBar [MFC], CreatePalette", "CMFCColorBar [MFC], GetColorGridSize", "CMFCColorBar [MFC], GetExtraHeight", "CMFCColorBar [MFC], InitColors", "CMFCColorBar [MFC], OnKey", "CMFCColorBar [MFC], OnSendCommand", "CMFCColorBar [MFC], OnUpdateCmdUI", "CMFCColorBar [MFC], OpenColorDialog", "CMFCColorBar [MFC], Rebuild", "CMFCColorBar [MFC], SelectPalette", "CMFCColorBar [MFC], SetPropList", "CMFCColorBar [MFC], ShowCommandMessageString"] -ms.assetid: 4756ee40-25a5-4cee-af7f-acab7993d1c7 --- # CMFCColorBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCColorBar` class represents a docking control bar that can select colors in a document or application. ## Syntax diff --git a/docs/mfc/reference/cmfccolorbutton-class.md b/docs/mfc/reference/cmfccolorbutton-class.md index dca58ef49eb..1c99ada333c 100644 --- a/docs/mfc/reference/cmfccolorbutton-class.md +++ b/docs/mfc/reference/cmfccolorbutton-class.md @@ -4,10 +4,12 @@ title: "CMFCColorButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCColorButton", "AFXCOLORBUTTON/CMFCColorButton", "AFXCOLORBUTTON/CMFCColorButton::CMFCColorButton", "AFXCOLORBUTTON/CMFCColorButton::EnableAutomaticButton", "AFXCOLORBUTTON/CMFCColorButton::EnableOtherButton", "AFXCOLORBUTTON/CMFCColorButton::GetAutomaticColor", "AFXCOLORBUTTON/CMFCColorButton::GetColor", "AFXCOLORBUTTON/CMFCColorButton::SetColor", "AFXCOLORBUTTON/CMFCColorButton::SetColorName", "AFXCOLORBUTTON/CMFCColorButton::SetColumnsNumber", "AFXCOLORBUTTON/CMFCColorButton::SetDocumentColors", "AFXCOLORBUTTON/CMFCColorButton::SetPalette", "AFXCOLORBUTTON/CMFCColorButton::SizeToContent", "AFXCOLORBUTTON/CMFCColorButton::IsDrawXPTheme", "AFXCOLORBUTTON/CMFCColorButton::OnDraw", "AFXCOLORBUTTON/CMFCColorButton::OnDrawBorder", "AFXCOLORBUTTON/CMFCColorButton::OnDrawFocusRect", "AFXCOLORBUTTON/CMFCColorButton::OnShowColorPopup", "AFXCOLORBUTTON/CMFCColorButton::RebuildPalette", "AFXCOLORBUTTON/CMFCColorButton::UpdateColor", "AFXCOLORBUTTON/CMFCColorButton::m_bEnabledInCustomizeMode"] helpviewer_keywords: ["CMFCColorButton [MFC], CMFCColorButton", "CMFCColorButton [MFC], EnableAutomaticButton", "CMFCColorButton [MFC], EnableOtherButton", "CMFCColorButton [MFC], GetAutomaticColor", "CMFCColorButton [MFC], GetColor", "CMFCColorButton [MFC], SetColor", "CMFCColorButton [MFC], SetColorName", "CMFCColorButton [MFC], SetColumnsNumber", "CMFCColorButton [MFC], SetDocumentColors", "CMFCColorButton [MFC], SetPalette", "CMFCColorButton [MFC], SizeToContent", "CMFCColorButton [MFC], IsDrawXPTheme", "CMFCColorButton [MFC], OnDraw", "CMFCColorButton [MFC], OnDrawBorder", "CMFCColorButton [MFC], OnDrawFocusRect", "CMFCColorButton [MFC], OnShowColorPopup", "CMFCColorButton [MFC], RebuildPalette", "CMFCColorButton [MFC], UpdateColor", "CMFCColorButton [MFC], m_bEnabledInCustomizeMode"] -ms.assetid: 9fdf34ae-4cc5-4c5e-9d89-1c50e8a73699 --- # CMFCColorButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCColorButton` and [CMFCColorBar Class](../../mfc/reference/cmfccolorbar-class.md) classes are used together to implement a color picker control. ## Syntax diff --git a/docs/mfc/reference/cmfccolordialog-class.md b/docs/mfc/reference/cmfccolordialog-class.md index db781111fc2..2eac941f55d 100644 --- a/docs/mfc/reference/cmfccolordialog-class.md +++ b/docs/mfc/reference/cmfccolordialog-class.md @@ -4,10 +4,12 @@ title: "CMFCColorDialog Class" ms.date: "11/04/2016" f1_keywords: ["CMFCColorDialog", "AFXCOLORDIALOG/CMFCColorDialog", "AFXCOLORDIALOG/CMFCColorDialog::CMFCColorDialog", "AFXCOLORDIALOG/CMFCColorDialog::GetColor", "AFXCOLORDIALOG/CMFCColorDialog::GetPalette", "AFXCOLORDIALOG/CMFCColorDialog::RebuildPalette", "AFXCOLORDIALOG/CMFCColorDialog::SetCurrentColor", "AFXCOLORDIALOG/CMFCColorDialog::SetNewColor", "AFXCOLORDIALOG/CMFCColorDialog::SetPageOne", "AFXCOLORDIALOG/CMFCColorDialog::SetPageTwo"] helpviewer_keywords: ["CMFCColorDialog [MFC], CMFCColorDialog", "CMFCColorDialog [MFC], GetColor", "CMFCColorDialog [MFC], GetPalette", "CMFCColorDialog [MFC], RebuildPalette", "CMFCColorDialog [MFC], SetCurrentColor", "CMFCColorDialog [MFC], SetNewColor", "CMFCColorDialog [MFC], SetPageOne", "CMFCColorDialog [MFC], SetPageTwo"] -ms.assetid: 235bbbbc-a3b1-46e0-801b-fb55093ec579 --- # CMFCColorDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCColorDialog` class represents a color selection dialog box. ## Syntax diff --git a/docs/mfc/reference/cmfccolormenubutton-class.md b/docs/mfc/reference/cmfccolormenubutton-class.md index e234a849f45..8298e45f61f 100644 --- a/docs/mfc/reference/cmfccolormenubutton-class.md +++ b/docs/mfc/reference/cmfccolormenubutton-class.md @@ -4,10 +4,12 @@ title: "CMFCColorMenuButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCColorMenuButton", "AFXCOLORMENUBUTTON/CMFCColorMenuButton", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::CMFCColorMenuButton", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::EnableAutomaticButton", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::EnableDocumentColors", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::EnableOtherButton", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::EnableTearOff", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::GetAutomaticColor", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::GetColor", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::GetColorByCmdID", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::OnChangeParentWnd", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::OpenColorDialog", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::SetColor", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::SetColorByCmdID", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::SetColorName", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::SetColumnsNumber", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::CopyFrom", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::CreatePopupMenu", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::IsEmptyMenuAllowed", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::OnDraw", "AFXCOLORMENUBUTTON/CMFCColorMenuButton::OnDrawOnCustomizeList"] helpviewer_keywords: ["CMFCColorMenuButton [MFC], CMFCColorMenuButton", "CMFCColorMenuButton [MFC], EnableAutomaticButton", "CMFCColorMenuButton [MFC], EnableDocumentColors", "CMFCColorMenuButton [MFC], EnableOtherButton", "CMFCColorMenuButton [MFC], EnableTearOff", "CMFCColorMenuButton [MFC], GetAutomaticColor", "CMFCColorMenuButton [MFC], GetColor", "CMFCColorMenuButton [MFC], GetColorByCmdID", "CMFCColorMenuButton [MFC], OnChangeParentWnd", "CMFCColorMenuButton [MFC], OpenColorDialog", "CMFCColorMenuButton [MFC], SetColor", "CMFCColorMenuButton [MFC], SetColorByCmdID", "CMFCColorMenuButton [MFC], SetColorName", "CMFCColorMenuButton [MFC], SetColumnsNumber", "CMFCColorMenuButton [MFC], CopyFrom", "CMFCColorMenuButton [MFC], CreatePopupMenu", "CMFCColorMenuButton [MFC], IsEmptyMenuAllowed", "CMFCColorMenuButton [MFC], OnDraw", "CMFCColorMenuButton [MFC], OnDrawOnCustomizeList"] -ms.assetid: 42685704-e994-4f7b-9553-62283c27b754 --- # CMFCColorMenuButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCColorMenuButton` class supports a menu command or a toolbar button that starts a color picker dialog box. ## Syntax diff --git a/docs/mfc/reference/cmfccolorpickerctrl-class.md b/docs/mfc/reference/cmfccolorpickerctrl-class.md index dc47c78a255..4ccef18c4df 100644 --- a/docs/mfc/reference/cmfccolorpickerctrl-class.md +++ b/docs/mfc/reference/cmfccolorpickerctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCColorPickerCtrl [MFC], CMFCColorPickerCtrl", "CMFCCol --- # CMFCColorPickerCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCColorPickerCtrl` class provides functionality for a control that is used to select colors. ## Syntax diff --git a/docs/mfc/reference/cmfccolorpopupmenu-class.md b/docs/mfc/reference/cmfccolorpopupmenu-class.md index e67a537f494..0b6d3554b4c 100644 --- a/docs/mfc/reference/cmfccolorpopupmenu-class.md +++ b/docs/mfc/reference/cmfccolorpopupmenu-class.md @@ -4,10 +4,12 @@ title: "CMFCColorPopupMenu Class" ms.date: "11/04/2016" f1_keywords: ["CMFCColorPopupMenu", "AFXCOLORPOPUPMENU/CMFCColorPopupMenu", "AFXCOLORPOPUPMENU/CMFCColorPopupMenu::CMFCColorPopupMenu", "AFXCOLORPOPUPMENU/CMFCColorPopupMenu::CreateTearOffBar", "AFXCOLORPOPUPMENU/CMFCColorPopupMenu::GetMenuBar", "AFXCOLORPOPUPMENU/CMFCColorPopupMenu::SetPropList"] helpviewer_keywords: ["CMFCColorPopupMenu [MFC], CMFCColorPopupMenu", "CMFCColorPopupMenu [MFC], CreateTearOffBar", "CMFCColorPopupMenu [MFC], GetMenuBar", "CMFCColorPopupMenu [MFC], SetPropList"] -ms.assetid: 0bf9efe8-aed5-4ab7-b23b-eb284b4668be --- # CMFCColorPopupMenu Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a pop-up menu that users use to select colors in a document or application. ## Syntax diff --git a/docs/mfc/reference/cmfccustomcolorspropertypage-class.md b/docs/mfc/reference/cmfccustomcolorspropertypage-class.md index 215b8deb8d2..1c1005ea7a5 100644 --- a/docs/mfc/reference/cmfccustomcolorspropertypage-class.md +++ b/docs/mfc/reference/cmfccustomcolorspropertypage-class.md @@ -4,10 +4,12 @@ title: "CMFCCustomColorsPropertyPage Class" ms.date: "11/04/2016" f1_keywords: ["CMFCCustomColorsPropertyPage", "AFXCUSTOMCOLORSPROPERTYPAGE/CMFCCustomColorsPropertyPage", "AFXCUSTOMCOLORSPROPERTYPAGE/CMFCCustomColorsPropertyPage::Setup"] helpviewer_keywords: ["CMFCCustomColorsPropertyPage [MFC], Setup"] -ms.assetid: 46a45ba2-1fda-440d-8018-d4dcd44f5816 --- # CMFCCustomColorsPropertyPage Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a property page that can select custom colors in a color dialog box. ## Syntax diff --git a/docs/mfc/reference/cmfcdesktopalertdialog-class.md b/docs/mfc/reference/cmfcdesktopalertdialog-class.md index 8807b8902f3..0e7912e917e 100644 --- a/docs/mfc/reference/cmfcdesktopalertdialog-class.md +++ b/docs/mfc/reference/cmfcdesktopalertdialog-class.md @@ -4,10 +4,12 @@ title: "CMFCDesktopAlertDialog Class" ms.date: "10/18/2018" f1_keywords: ["CMFCDesktopAlertDialog", "AFXDESKTOPALERTDIALOG/CMFCDesktopAlertDialog", "AFXDESKTOPALERTDIALOG/CMFCDesktopAlertDialog::CreateFromParams", "AFXDESKTOPALERTDIALOG/CMFCDesktopAlertDialog::GetDlgSize", "AFXDESKTOPALERTDIALOG/CMFCDesktopAlertDialog::HasFocus", "AFXDESKTOPALERTDIALOG/CMFCDesktopAlertDialog::PreTranslateMessage"] helpviewer_keywords: ["CMFCDesktopAlertDialog [MFC], CreateFromParams", "CMFCDesktopAlertDialog [MFC], GetDlgSize", "CMFCDesktopAlertDialog [MFC], HasFocus", "CMFCDesktopAlertDialog [MFC], PreTranslateMessage"] -ms.assetid: a53c60aa-9607-485b-b826-ec64962075f6 --- # CMFCDesktopAlertDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCDesktopAlertDialog` class is used together with the [CMFCDesktopAlertWnd Class](../../mfc/reference/cmfcdesktopalertwnd-class.md) to display a custom dialog in a popup window. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcdesktopalertwnd-class.md b/docs/mfc/reference/cmfcdesktopalertwnd-class.md index d473b05c588..5179e51c5f5 100644 --- a/docs/mfc/reference/cmfcdesktopalertwnd-class.md +++ b/docs/mfc/reference/cmfcdesktopalertwnd-class.md @@ -4,10 +4,12 @@ title: "CMFCDesktopAlertWnd Class" ms.date: "10/18/2018" f1_keywords: ["CMFCDesktopAlertWnd", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::Create", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::GetAnimationSpeed", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::GetAnimationType", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::GetAutoCloseTime", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::GetCaptionHeight", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::GetDialogSize", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::GetLastPos", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::GetTransparency", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::HasSmallCaption", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::OnBeforeShow", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::OnClickLinkButton", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::OnCommand", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::OnDraw", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::ProcessCommand", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::SetAnimationSpeed", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::SetAnimationType", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::SetAutoCloseTime", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::SetSmallCaption", "AFXDESKTOPALERTWND/CMFCDesktopAlertWnd::SetTransparency"] helpviewer_keywords: ["CMFCDesktopAlertWnd [MFC], Create", "CMFCDesktopAlertWnd [MFC], GetAnimationSpeed", "CMFCDesktopAlertWnd [MFC], GetAnimationType", "CMFCDesktopAlertWnd [MFC], GetAutoCloseTime", "CMFCDesktopAlertWnd [MFC], GetCaptionHeight", "CMFCDesktopAlertWnd [MFC], GetDialogSize", "CMFCDesktopAlertWnd [MFC], GetLastPos", "CMFCDesktopAlertWnd [MFC], GetTransparency", "CMFCDesktopAlertWnd [MFC], HasSmallCaption", "CMFCDesktopAlertWnd [MFC], OnBeforeShow", "CMFCDesktopAlertWnd [MFC], OnClickLinkButton", "CMFCDesktopAlertWnd [MFC], OnCommand", "CMFCDesktopAlertWnd [MFC], OnDraw", "CMFCDesktopAlertWnd [MFC], ProcessCommand", "CMFCDesktopAlertWnd [MFC], SetAnimationSpeed", "CMFCDesktopAlertWnd [MFC], SetAnimationType", "CMFCDesktopAlertWnd [MFC], SetAutoCloseTime", "CMFCDesktopAlertWnd [MFC], SetSmallCaption", "CMFCDesktopAlertWnd [MFC], SetTransparency"] -ms.assetid: 73a2dd7b-ea84-4ae2-9830-7cf6e8dd2425 --- # CMFCDesktopAlertWnd Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCDesktopAlertWnd` class implements the functionality of a modeless dialog box which appears on the screen to inform the user about an event. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcdesktopalertwndbutton-class.md b/docs/mfc/reference/cmfcdesktopalertwndbutton-class.md index 65e46a6c1ec..f216316ca09 100644 --- a/docs/mfc/reference/cmfcdesktopalertwndbutton-class.md +++ b/docs/mfc/reference/cmfcdesktopalertwndbutton-class.md @@ -4,10 +4,12 @@ title: "CMFCDesktopAlertWndButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCDesktopAlertWndButton", "AFXDESKTOPALERTWND/CMFCDesktopAlertWndButton", "AFXDESKTOPALERTWND/CMFCDesktopAlertWndButton::IsCaptionButton", "AFXDESKTOPALERTWND/CMFCDesktopAlertWndButton::IsCloseButton"] helpviewer_keywords: ["CMFCDesktopAlertWndButton [MFC], IsCaptionButton", "CMFCDesktopAlertWndButton [MFC], IsCloseButton"] -ms.assetid: df39a0c8-0c39-4ab0-8c64-78c5b2c4ecaf --- # CMFCDesktopAlertWndButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Allows buttons to be added to a desktop alert dialog box. ## Syntax diff --git a/docs/mfc/reference/cmfcdesktopalertwndinfo-class.md b/docs/mfc/reference/cmfcdesktopalertwndinfo-class.md index fcf410dddb8..1591b9e0164 100644 --- a/docs/mfc/reference/cmfcdesktopalertwndinfo-class.md +++ b/docs/mfc/reference/cmfcdesktopalertwndinfo-class.md @@ -4,10 +4,12 @@ title: "CMFCDesktopAlertWndInfo Class" ms.date: "10/18/2018" f1_keywords: ["CMFCDesktopAlertWndInfo", "AFXDESKTOPALERTDIALOG/CMFCDesktopAlertWndInfo", "AFXDESKTOPALERTDIALOG/CMFCDesktopAlertWndInfo::m_hIcon", "AFXDESKTOPALERTDIALOG/CMFCDesktopAlertWndInfo::m_nURLCmdID", "AFXDESKTOPALERTDIALOG/CMFCDesktopAlertWndInfo::m_strText", "AFXDESKTOPALERTDIALOG/CMFCDesktopAlertWndInfo::m_strURL"] helpviewer_keywords: ["CMFCDesktopAlertWndInfo [MFC], m_hIcon", "CMFCDesktopAlertWndInfo [MFC], m_nURLCmdID", "CMFCDesktopAlertWndInfo [MFC], m_strText", "CMFCDesktopAlertWndInfo [MFC], m_strURL"] -ms.assetid: 5c9bb84e-6c96-4748-8e74-6951b6ae8e84 --- # CMFCDesktopAlertWndInfo Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCDesktopAlertWndInfo` class is used with the [CMFCDesktopAlertWnd Class](../../mfc/reference/cmfcdesktopalertwnd-class.md). It specifies the controls that are displayed if the desktop alert window pops up. ## Syntax diff --git a/docs/mfc/reference/cmfcdisablemenuanimation-class.md b/docs/mfc/reference/cmfcdisablemenuanimation-class.md index 5dc689897be..e4bd79b0ee9 100644 --- a/docs/mfc/reference/cmfcdisablemenuanimation-class.md +++ b/docs/mfc/reference/cmfcdisablemenuanimation-class.md @@ -4,10 +4,12 @@ title: "CMFCDisableMenuAnimation Class" ms.date: "11/04/2016" f1_keywords: ["CMFCDisableMenuAnimation", "AFXPOPUPMENU/CMFCDisableMenuAnimation", "AFXPOPUPMENU/CMFCDisableMenuAnimation::Restore"] helpviewer_keywords: ["CMFCDisableMenuAnimation [MFC], Restore"] -ms.assetid: c6eb07da-c382-43d6-8028-007f2320e50e --- # CMFCDisableMenuAnimation Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Disables pop-up menu animation. ## Syntax diff --git a/docs/mfc/reference/cmfcdragframeimpl-class.md b/docs/mfc/reference/cmfcdragframeimpl-class.md index 0305fe19091..6f1eca2b4cd 100644 --- a/docs/mfc/reference/cmfcdragframeimpl-class.md +++ b/docs/mfc/reference/cmfcdragframeimpl-class.md @@ -4,10 +4,12 @@ title: "CMFCDragFrameImpl Class" ms.date: "10/18/2018" f1_keywords: ["CMFCDragFrameImpl"] helpviewer_keywords: ["CMFCDragFrameImpl class [MFC]"] -ms.assetid: 500cd824-8188-43c2-8754-b7bb46b5648a --- # CMFCDragFrameImpl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCDragFrameImpl` class draws the drag rectangle that appears when the user drags a pane in the standard dock mode. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcdropdownframe-class.md b/docs/mfc/reference/cmfcdropdownframe-class.md index dc2193522d5..d82e9660902 100644 --- a/docs/mfc/reference/cmfcdropdownframe-class.md +++ b/docs/mfc/reference/cmfcdropdownframe-class.md @@ -4,10 +4,12 @@ title: "CMFCDropDownFrame Class" ms.date: "11/04/2016" f1_keywords: ["CMFCDropDownFrame", "AFXDROPDOWNTOOLBAR/CMFCDropDownFrame", "AFXDROPDOWNTOOLBAR/CMFCDropDownFrame::Create", "AFXDROPDOWNTOOLBAR/CMFCDropDownFrame::GetParentMenuBar", "AFXDROPDOWNTOOLBAR/CMFCDropDownFrame::GetParentPopupMenu", "AFXDROPDOWNTOOLBAR/CMFCDropDownFrame::RecalcLayout", "AFXDROPDOWNTOOLBAR/CMFCDropDownFrame::SetAutoDestroy"] helpviewer_keywords: ["CMFCDropDownFrame [MFC], Create", "CMFCDropDownFrame [MFC], GetParentMenuBar", "CMFCDropDownFrame [MFC], GetParentPopupMenu", "CMFCDropDownFrame [MFC], RecalcLayout", "CMFCDropDownFrame [MFC], SetAutoDestroy"] -ms.assetid: 09ff81a9-de00-43ec-9df9-b626f7728c4b --- # CMFCDropDownFrame Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides drop-down frame window functionality to drop-down toolbars and drop-down toolbar buttons. ## Syntax diff --git a/docs/mfc/reference/cmfcdropdowntoolbar-class.md b/docs/mfc/reference/cmfcdropdowntoolbar-class.md index 9fbdc25a7b8..ef021c74955 100644 --- a/docs/mfc/reference/cmfcdropdowntoolbar-class.md +++ b/docs/mfc/reference/cmfcdropdowntoolbar-class.md @@ -4,10 +4,12 @@ title: "CMFCDropDownToolBar Class" ms.date: "11/19/2018" f1_keywords: ["CMFCDropDownToolBar", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolBar", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolBar::AllowShowOnPaneMenu", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolBar::LoadBitmap", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolBar::LoadToolBar", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolBar::OnLButtonUp", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolBar::OnMouseMove", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolBar::OnSendCommand", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolBar::OnUpdateCmdUI"] helpviewer_keywords: ["CMFCDropDownToolBar [MFC], AllowShowOnPaneMenu", "CMFCDropDownToolBar [MFC], LoadBitmap", "CMFCDropDownToolBar [MFC], LoadToolBar", "CMFCDropDownToolBar [MFC], OnLButtonUp", "CMFCDropDownToolBar [MFC], OnMouseMove", "CMFCDropDownToolBar [MFC], OnSendCommand", "CMFCDropDownToolBar [MFC], OnUpdateCmdUI"] -ms.assetid: 78818ec5-83ce-42fa-a0d4-2d9d5ecc8770 --- # CMFCDropDownToolBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A toolbar that appears when the user presses and holds a top-level toolbar button. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcdropdowntoolbarbutton-class.md b/docs/mfc/reference/cmfcdropdowntoolbarbutton-class.md index dd68698320f..4b264833d8e 100644 --- a/docs/mfc/reference/cmfcdropdowntoolbarbutton-class.md +++ b/docs/mfc/reference/cmfcdropdowntoolbarbutton-class.md @@ -4,10 +4,12 @@ title: "CMFCDropDownToolbarButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCDropDownToolbarButton", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::CMFCDropDownToolbarButton", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::CopyFrom", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::DropDownToolbar", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::ExportToMenuButton", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::GetDropDownToolBar", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::IsDropDown", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::IsExtraSize", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::OnCalculateSize", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::OnChangeParentWnd", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::OnClick", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::OnClickUp", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::OnContextHelp", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::OnCustomizeMenu", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::OnDraw", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::OnDrawOnCustomizeList", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::Serialize", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::SetDefaultCommand", "AFXDROPDOWNTOOLBAR/CMFCDropDownToolbarButton::m_uiShowBarDelay"] helpviewer_keywords: ["CMFCDropDownToolbarButton [MFC], CMFCDropDownToolbarButton", "CMFCDropDownToolbarButton [MFC], CopyFrom", "CMFCDropDownToolbarButton [MFC], DropDownToolbar", "CMFCDropDownToolbarButton [MFC], ExportToMenuButton", "CMFCDropDownToolbarButton [MFC], GetDropDownToolBar", "CMFCDropDownToolbarButton [MFC], IsDropDown", "CMFCDropDownToolbarButton [MFC], IsExtraSize", "CMFCDropDownToolbarButton [MFC], OnCalculateSize", "CMFCDropDownToolbarButton [MFC], OnChangeParentWnd", "CMFCDropDownToolbarButton [MFC], OnClick", "CMFCDropDownToolbarButton [MFC], OnClickUp", "CMFCDropDownToolbarButton [MFC], OnContextHelp", "CMFCDropDownToolbarButton [MFC], OnCustomizeMenu", "CMFCDropDownToolbarButton [MFC], OnDraw", "CMFCDropDownToolbarButton [MFC], OnDrawOnCustomizeList", "CMFCDropDownToolbarButton [MFC], Serialize", "CMFCDropDownToolbarButton [MFC], SetDefaultCommand", "CMFCDropDownToolbarButton [MFC], m_uiShowBarDelay"] -ms.assetid: bc9d69e6-bd3e-4c15-9368-e80a504a0ba7 --- # CMFCDropDownToolbarButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A type of toolbar button that behaves like a regular button when it is clicked. However, it opens a drop-down toolbar ( [CMFCDropDownToolBar Class](../../mfc/reference/cmfcdropdowntoolbar-class.md) if the user presses and holds the toolbar button down. ## Syntax diff --git a/docs/mfc/reference/cmfcdynamiclayout-class.md b/docs/mfc/reference/cmfcdynamiclayout-class.md index c41f1893c72..09cb98df6b4 100644 --- a/docs/mfc/reference/cmfcdynamiclayout-class.md +++ b/docs/mfc/reference/cmfcdynamiclayout-class.md @@ -6,6 +6,9 @@ f1_keywords: ["CMFCDynamicLayout", "AFXLAYOUT/CMFCDynamicLayout", "AFXLAYOUT/CMF --- # CMFCDynamicLayout Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Specifies how controls in a window are moved and resized as the user resizes the window. ## Syntax diff --git a/docs/mfc/reference/cmfceditbrowsectrl-class.md b/docs/mfc/reference/cmfceditbrowsectrl-class.md index c24728b72e6..331e901377c 100644 --- a/docs/mfc/reference/cmfceditbrowsectrl-class.md +++ b/docs/mfc/reference/cmfceditbrowsectrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCEditBrowseCtrl [MFC], EnableBrowseButton", "CMFCEditB --- # CMFCEditBrowseCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCEditBrowseCtrl` class supports the edit browse control, which is an editable text box that optionally contains a browse button. When the user clicks the browse button, the control performs a custom action or displays a standard dialog box that contains a file browser or a folder browser. ## Syntax diff --git a/docs/mfc/reference/cmfcfilterchunkvalueimpl-class.md b/docs/mfc/reference/cmfcfilterchunkvalueimpl-class.md index 7bd629455bd..8b8400cd514 100644 --- a/docs/mfc/reference/cmfcfilterchunkvalueimpl-class.md +++ b/docs/mfc/reference/cmfcfilterchunkvalueimpl-class.md @@ -4,10 +4,12 @@ title: "CMFCFilterChunkValueImpl Class" ms.date: "11/04/2016" f1_keywords: ["CMFCFilterChunkValueImpl", "AFXWIN/CMFCFilterChunkValueImpl", "AFXWIN/CMFCFilterChunkValueImpl::CMFCFilterChunkValueImpl", "AFXWIN/CMFCFilterChunkValueImpl::Clear", "AFXWIN/CMFCFilterChunkValueImpl::CopyChunk", "AFXWIN/CMFCFilterChunkValueImpl::CopyFrom", "AFXWIN/CMFCFilterChunkValueImpl::GetChunkGUID", "AFXWIN/CMFCFilterChunkValueImpl::GetChunkPID", "AFXWIN/CMFCFilterChunkValueImpl::GetChunkType", "AFXWIN/CMFCFilterChunkValueImpl::GetString", "AFXWIN/CMFCFilterChunkValueImpl::GetValue", "AFXWIN/CMFCFilterChunkValueImpl::GetValueNoAlloc", "AFXWIN/CMFCFilterChunkValueImpl::IsValid", "AFXWIN/CMFCFilterChunkValueImpl::SetBoolValue", "AFXWIN/CMFCFilterChunkValueImpl::SetDwordValue", "AFXWIN/CMFCFilterChunkValueImpl::SetFileTimeValue", "AFXWIN/CMFCFilterChunkValueImpl::SetInt64Value", "AFXWIN/CMFCFilterChunkValueImpl::SetIntValue", "AFXWIN/CMFCFilterChunkValueImpl::SetLongValue", "AFXWIN/CMFCFilterChunkValueImpl::SetSystemTimeValue", "AFXWIN/CMFCFilterChunkValueImpl::SetTextValue", "AFXWIN/CMFCFilterChunkValueImpl::SetChunk"] helpviewer_keywords: ["CMFCFilterChunkValueImpl [MFC], CMFCFilterChunkValueImpl", "CMFCFilterChunkValueImpl [MFC], Clear", "CMFCFilterChunkValueImpl [MFC], CopyChunk", "CMFCFilterChunkValueImpl [MFC], CopyFrom", "CMFCFilterChunkValueImpl [MFC], GetChunkGUID", "CMFCFilterChunkValueImpl [MFC], GetChunkPID", "CMFCFilterChunkValueImpl [MFC], GetChunkType", "CMFCFilterChunkValueImpl [MFC], GetString", "CMFCFilterChunkValueImpl [MFC], GetValue", "CMFCFilterChunkValueImpl [MFC], GetValueNoAlloc", "CMFCFilterChunkValueImpl [MFC], IsValid", "CMFCFilterChunkValueImpl [MFC], SetBoolValue", "CMFCFilterChunkValueImpl [MFC], SetDwordValue", "CMFCFilterChunkValueImpl [MFC], SetFileTimeValue", "CMFCFilterChunkValueImpl [MFC], SetInt64Value", "CMFCFilterChunkValueImpl [MFC], SetIntValue", "CMFCFilterChunkValueImpl [MFC], SetLongValue", "CMFCFilterChunkValueImpl [MFC], SetSystemTimeValue", "CMFCFilterChunkValueImpl [MFC], SetTextValue", "CMFCFilterChunkValueImpl [MFC], SetChunk"] -ms.assetid: 3c833f23-5b88-4d08-9e09-ca6a8aec88bf --- # CMFCFilterChunkValueImpl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This is a class which simplifies both chunk and property value pair logic. ## Syntax diff --git a/docs/mfc/reference/cmfcfontcombobox-class.md b/docs/mfc/reference/cmfcfontcombobox-class.md index 23d4f981449..bebc44a37c0 100644 --- a/docs/mfc/reference/cmfcfontcombobox-class.md +++ b/docs/mfc/reference/cmfcfontcombobox-class.md @@ -4,10 +4,12 @@ title: "CMFCFontComboBox Class" ms.date: "11/04/2016" f1_keywords: ["CMFCFontComboBox", "AFXFONTCOMBOBOX/CMFCFontComboBox", "AFXFONTCOMBOBOX/CMFCFontComboBox::CMFCFontComboBox", "AFXFONTCOMBOBOX/CMFCFontComboBox::GetSelFont", "AFXFONTCOMBOBOX/CMFCFontComboBox::SelectFont", "AFXFONTCOMBOBOX/CMFCFontComboBox::Setup", "AFXFONTCOMBOBOX/CMFCFontComboBox::m_bDrawUsingFont"] helpviewer_keywords: ["CMFCFontComboBox [MFC], CMFCFontComboBox", "CMFCFontComboBox [MFC], GetSelFont", "CMFCFontComboBox [MFC], SelectFont", "CMFCFontComboBox [MFC], Setup", "CMFCFontComboBox [MFC], m_bDrawUsingFont"] -ms.assetid: 9a53fb0c-7b45-486d-8187-2a4c723d9fbb --- # CMFCFontComboBox Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCFontComboBox` class creates a combo box control that contains a list of fonts. ## Syntax diff --git a/docs/mfc/reference/cmfcfontinfo-class.md b/docs/mfc/reference/cmfcfontinfo-class.md index f44dd4e20b1..cf82482be39 100644 --- a/docs/mfc/reference/cmfcfontinfo-class.md +++ b/docs/mfc/reference/cmfcfontinfo-class.md @@ -4,10 +4,12 @@ title: "CMFCFontInfo Class" ms.date: "11/04/2016" f1_keywords: ["CMFCFontInfo", "AFXTOOLBARFONTCOMBOBOX/CMFCFontInfo", "AFXTOOLBARFONTCOMBOBOX/CMFCFontInfo::GetFullName", "AFXTOOLBARFONTCOMBOBOX/CMFCFontInfo::m_nCharSet", "AFXTOOLBARFONTCOMBOBOX/CMFCFontInfo::m_nPitchAndFamily", "AFXTOOLBARFONTCOMBOBOX/CMFCFontInfo::m_nType", "AFXTOOLBARFONTCOMBOBOX/CMFCFontInfo::m_strName", "AFXTOOLBARFONTCOMBOBOX/CMFCFontInfo::m_strScript"] helpviewer_keywords: ["CMFCFontInfo [MFC], GetFullName", "CMFCFontInfo [MFC], m_nCharSet", "CMFCFontInfo [MFC], m_nPitchAndFamily", "CMFCFontInfo [MFC], m_nType", "CMFCFontInfo [MFC], m_strName", "CMFCFontInfo [MFC], m_strScript"] -ms.assetid: f88329b2-d74e-4921-9441-a3bb6536a049 --- # CMFCFontInfo Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCFontInfo` class describes the name and other attributes of a font. ## Syntax diff --git a/docs/mfc/reference/cmfcheaderctrl-class.md b/docs/mfc/reference/cmfcheaderctrl-class.md index c736bcd0e22..fb24bc1b33b 100644 --- a/docs/mfc/reference/cmfcheaderctrl-class.md +++ b/docs/mfc/reference/cmfcheaderctrl-class.md @@ -4,10 +4,12 @@ title: "CMFCHeaderCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CMFCHeaderCtrl", "AFXHEADERCTRL/CMFCHeaderCtrl", "AFXHEADERCTRL/CMFCHeaderCtrl::CMFCHeaderCtrl", "AFXHEADERCTRL/CMFCHeaderCtrl::EnableMultipleSort", "AFXHEADERCTRL/CMFCHeaderCtrl::GetColumnState", "AFXHEADERCTRL/CMFCHeaderCtrl::GetSortColumn", "AFXHEADERCTRL/CMFCHeaderCtrl::IsAscending", "AFXHEADERCTRL/CMFCHeaderCtrl::IsDialogControl", "AFXHEADERCTRL/CMFCHeaderCtrl::IsMultipleSort", "AFXHEADERCTRL/CMFCHeaderCtrl::RemoveSortColumn", "AFXHEADERCTRL/CMFCHeaderCtrl::SetSortColumn", "AFXHEADERCTRL/CMFCHeaderCtrl::OnDrawItem", "AFXHEADERCTRL/CMFCHeaderCtrl::OnDrawSortArrow", "AFXHEADERCTRL/CMFCHeaderCtrl::OnFillBackground"] helpviewer_keywords: ["CMFCHeaderCtrl [MFC], CMFCHeaderCtrl", "CMFCHeaderCtrl [MFC], EnableMultipleSort", "CMFCHeaderCtrl [MFC], GetColumnState", "CMFCHeaderCtrl [MFC], GetSortColumn", "CMFCHeaderCtrl [MFC], IsAscending", "CMFCHeaderCtrl [MFC], IsDialogControl", "CMFCHeaderCtrl [MFC], IsMultipleSort", "CMFCHeaderCtrl [MFC], RemoveSortColumn", "CMFCHeaderCtrl [MFC], SetSortColumn", "CMFCHeaderCtrl [MFC], OnDrawItem", "CMFCHeaderCtrl [MFC], OnDrawSortArrow", "CMFCHeaderCtrl [MFC], OnFillBackground"] -ms.assetid: 2f5fbf7b-5c75-42db-9216-640b1628f777 --- # CMFCHeaderCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCHeaderCtrl` class supports sorting multiple columns in a header control. ## Syntax diff --git a/docs/mfc/reference/cmfcimageeditordialog-class.md b/docs/mfc/reference/cmfcimageeditordialog-class.md index fb12f266bfe..46b2338e662 100644 --- a/docs/mfc/reference/cmfcimageeditordialog-class.md +++ b/docs/mfc/reference/cmfcimageeditordialog-class.md @@ -4,10 +4,12 @@ title: "CMFCImageEditorDialog Class" ms.date: "11/19/2018" f1_keywords: ["CMFCImageEditorDialog", "AFXIMAGEEDITORDIALOG/CMFCImageEditorDialog", "AFXIMAGEEDITORDIALOG/CMFCImageEditorDialog::CMFCImageEditorDialog"] helpviewer_keywords: ["CMFCImageEditorDialog [MFC], CMFCImageEditorDialog"] -ms.assetid: 6a7d08f3-1ec2-4062-9b79-a0c2776b58d1 --- # CMFCImageEditorDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCImageEditorDialog` class supports an image editor dialog box. ## Syntax diff --git a/docs/mfc/reference/cmfcimageeditorpalettebar-class.md b/docs/mfc/reference/cmfcimageeditorpalettebar-class.md index 3e967fd6efe..28e32d6f7e3 100644 --- a/docs/mfc/reference/cmfcimageeditorpalettebar-class.md +++ b/docs/mfc/reference/cmfcimageeditorpalettebar-class.md @@ -4,10 +4,12 @@ title: "CMFCImageEditorPaletteBar Class" ms.date: "11/04/2016" f1_keywords: ["CMFCImageEditorPaletteBar", "AFXIMAGEEDITORDIALOG/CMFCImageEditorPaletteBar", "AFXIMAGEEDITORDIALOG/CMFCImageEditorPaletteBar::GetRowHeight", "AFXIMAGEEDITORDIALOG/CMFCImageEditorPaletteBar::IsButtonExtraSizeAvailable"] helpviewer_keywords: ["CMFCImageEditorPaletteBar [MFC], GetRowHeight", "CMFCImageEditorPaletteBar [MFC], IsButtonExtraSizeAvailable"] -ms.assetid: 3fb7ba8e-f254-4d56-b913-9941b4ed8138 --- # CMFCImageEditorPaletteBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides palette bar functionality to an image editor dialog box. ## Syntax diff --git a/docs/mfc/reference/cmfcimagepaintarea-class.md b/docs/mfc/reference/cmfcimagepaintarea-class.md index b9b12f31673..2c8bd7c1b13 100644 --- a/docs/mfc/reference/cmfcimagepaintarea-class.md +++ b/docs/mfc/reference/cmfcimagepaintarea-class.md @@ -4,10 +4,12 @@ title: "CMFCImagePaintArea Class" ms.date: "11/04/2016" f1_keywords: ["CMFCImagePaintArea", "AFXIMAGEPAINTAREA/CMFCImagePaintArea", "AFXIMAGEPAINTAREA/CMFCImagePaintArea::CMFCImagePaintArea", "AFXIMAGEPAINTAREA/CMFCImagePaintArea::GetMode", "AFXIMAGEPAINTAREA/CMFCImagePaintArea::SetBitmap", "AFXIMAGEPAINTAREA/CMFCImagePaintArea::SetColor", "AFXIMAGEPAINTAREA/CMFCImagePaintArea::SetMode"] helpviewer_keywords: ["CMFCImagePaintArea [MFC], CMFCImagePaintArea", "CMFCImagePaintArea [MFC], GetMode", "CMFCImagePaintArea [MFC], SetBitmap", "CMFCImagePaintArea [MFC], SetColor", "CMFCImagePaintArea [MFC], SetMode"] -ms.assetid: c59eec22-f15a-4e58-8c4d-4a18a41f4452 --- # CMFCImagePaintArea Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the picture area that you use to modify an image in an image editor dialog box. ## Syntax diff --git a/docs/mfc/reference/cmfcimagepaintarea-image-edit-mode-enumeration.md b/docs/mfc/reference/cmfcimagepaintarea-image-edit-mode-enumeration.md index ea4942119f2..3ca70390145 100644 --- a/docs/mfc/reference/cmfcimagepaintarea-image-edit-mode-enumeration.md +++ b/docs/mfc/reference/cmfcimagepaintarea-image-edit-mode-enumeration.md @@ -4,10 +4,12 @@ title: "CMFCImagePaintArea::IMAGE_EDIT_MODE Enumeration" ms.date: "11/04/2016" f1_keywords: ["IMAGE_EDIT_MODE Enumeration"] helpviewer_keywords: ["IMAGE_EDIT_MODE Enumeration method [MFC]"] -ms.assetid: e51db66a-fa1c-4766-9dac-a25b595f871a --- # CMFCImagePaintArea::IMAGE_EDIT_MODE Enumeration +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Specifies a drawing mode that you use to modify an image in an image editor dialog box. ## Syntax diff --git a/docs/mfc/reference/cmfckeymapdialog-class.md b/docs/mfc/reference/cmfckeymapdialog-class.md index 43c94443db1..80c2426815c 100644 --- a/docs/mfc/reference/cmfckeymapdialog-class.md +++ b/docs/mfc/reference/cmfckeymapdialog-class.md @@ -4,10 +4,12 @@ title: "CMFCKeyMapDialog Class" ms.date: "11/04/2016" f1_keywords: ["CMFCKeyMapDialog", "AFXKEYMAPDIALOG/CMFCKeyMapDialog", "AFXKEYMAPDIALOG/CMFCKeyMapDialog::CMFCKeyMapDialog", "AFXKEYMAPDIALOG/CMFCKeyMapDialog::DoModal", "AFXKEYMAPDIALOG/CMFCKeyMapDialog::FormatItem", "AFXKEYMAPDIALOG/CMFCKeyMapDialog::GetCommandKeys", "AFXKEYMAPDIALOG/CMFCKeyMapDialog::OnInsertItem", "AFXKEYMAPDIALOG/CMFCKeyMapDialog::OnPrintHeader", "AFXKEYMAPDIALOG/CMFCKeyMapDialog::OnPrintItem", "AFXKEYMAPDIALOG/CMFCKeyMapDialog::OnSetColumns", "AFXKEYMAPDIALOG/CMFCKeyMapDialog::PrintKeyMap", "AFXKEYMAPDIALOG/CMFCKeyMapDialog::SetColumnsWidth"] helpviewer_keywords: ["CMFCKeyMapDialog [MFC], CMFCKeyMapDialog", "CMFCKeyMapDialog [MFC], DoModal", "CMFCKeyMapDialog [MFC], FormatItem", "CMFCKeyMapDialog [MFC], GetCommandKeys", "CMFCKeyMapDialog [MFC], OnInsertItem", "CMFCKeyMapDialog [MFC], OnPrintHeader", "CMFCKeyMapDialog [MFC], OnPrintItem", "CMFCKeyMapDialog [MFC], OnSetColumns", "CMFCKeyMapDialog [MFC], PrintKeyMap", "CMFCKeyMapDialog [MFC], SetColumnsWidth"] -ms.assetid: 5feb4942-d636-462d-a162-0104dd320f4e --- # CMFCKeyMapDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCKeyMapDialog` class supports a control that maps commands to keys on the keyboard. ## Syntax diff --git a/docs/mfc/reference/cmfclinkctrl-class.md b/docs/mfc/reference/cmfclinkctrl-class.md index 9fee3460bae..0e008d64bfd 100644 --- a/docs/mfc/reference/cmfclinkctrl-class.md +++ b/docs/mfc/reference/cmfclinkctrl-class.md @@ -4,10 +4,12 @@ title: "CMFCLinkCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CMFCLinkCtrl", "AFXLINKCTRL/CMFCLinkCtrl", "AFXLINKCTRL/CMFCLinkCtrl::SetURL", "AFXLINKCTRL/CMFCLinkCtrl::SetURLPrefix", "AFXLINKCTRL/CMFCLinkCtrl::SizeToContent", "AFXLINKCTRL/CMFCLinkCtrl::OnDrawFocusRect"] helpviewer_keywords: ["CMFCLinkCtrl [MFC], SetURL", "CMFCLinkCtrl [MFC], SetURLPrefix", "CMFCLinkCtrl [MFC], SizeToContent", "CMFCLinkCtrl [MFC], OnDrawFocusRect"] -ms.assetid: 80f3874d-7cc8-410e-9ff1-62a225f5034b --- # CMFCLinkCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCLinkCtrl` class displays a button as a hyperlink and invokes the link's target when the button is clicked. ## Syntax diff --git a/docs/mfc/reference/cmfclistctrl-class.md b/docs/mfc/reference/cmfclistctrl-class.md index 2ac870b8469..9f7534a3fdf 100644 --- a/docs/mfc/reference/cmfclistctrl-class.md +++ b/docs/mfc/reference/cmfclistctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCListCtrl [MFC], EnableMarkSortedColumn", "CMFCListCtr --- # `CMFCListCtrl` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCListCtrl` class extends the functionality of [`CListCtrl` Class](../../mfc/reference/clistctrl-class.md) class by supporting the advanced header control functionality of the [`CMFCHeaderCtrl` Class](../../mfc/reference/cmfcheaderctrl-class.md). ## Syntax diff --git a/docs/mfc/reference/cmfcmaskededit-class.md b/docs/mfc/reference/cmfcmaskededit-class.md index 7b846c8641d..71ee2f137b4 100644 --- a/docs/mfc/reference/cmfcmaskededit-class.md +++ b/docs/mfc/reference/cmfcmaskededit-class.md @@ -4,10 +4,12 @@ title: "CMFCMaskedEdit Class" ms.date: "11/04/2016" f1_keywords: ["CMFCMaskedEdit", "AFXMASKEDEDIT/CMFCMaskedEdit", "AFXMASKEDEDIT/CMFCMaskedEdit::DisableMask", "AFXMASKEDEDIT/CMFCMaskedEdit::EnableGetMaskedCharsOnly", "AFXMASKEDEDIT/CMFCMaskedEdit::EnableMask", "AFXMASKEDEDIT/CMFCMaskedEdit::EnableSelectByGroup", "AFXMASKEDEDIT/CMFCMaskedEdit::EnableSetMaskedCharsOnly", "AFXMASKEDEDIT/CMFCMaskedEdit::GetWindowText", "AFXMASKEDEDIT/CMFCMaskedEdit::SetValidChars", "AFXMASKEDEDIT/CMFCMaskedEdit::SetWindowText", "AFXMASKEDEDIT/CMFCMaskedEdit::IsMaskedChar"] helpviewer_keywords: ["CMFCMaskedEdit [MFC], DisableMask", "CMFCMaskedEdit [MFC], EnableGetMaskedCharsOnly", "CMFCMaskedEdit [MFC], EnableMask", "CMFCMaskedEdit [MFC], EnableSelectByGroup", "CMFCMaskedEdit [MFC], EnableSetMaskedCharsOnly", "CMFCMaskedEdit [MFC], GetWindowText", "CMFCMaskedEdit [MFC], SetValidChars", "CMFCMaskedEdit [MFC], SetWindowText", "CMFCMaskedEdit [MFC], IsMaskedChar"] -ms.assetid: 13b1a645-2d5d-4c37-8599-16d5003f23a5 --- # CMFCMaskedEdit Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCMaskedEdit` class supports a masked edit control, which validates user input against a mask and displays the validated results according to a template. ## Syntax diff --git a/docs/mfc/reference/cmfcmenubar-class.md b/docs/mfc/reference/cmfcmenubar-class.md index 8b8174252b0..5dfec5efea7 100644 --- a/docs/mfc/reference/cmfcmenubar-class.md +++ b/docs/mfc/reference/cmfcmenubar-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCMenuBar [MFC], AdjustLocations", "CMFCMenuBar [MFC], --- # CMFCMenuBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A menu bar that implements docking. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcmenubutton-class.md b/docs/mfc/reference/cmfcmenubutton-class.md index 380fdad1eed..a7a14369f28 100644 --- a/docs/mfc/reference/cmfcmenubutton-class.md +++ b/docs/mfc/reference/cmfcmenubutton-class.md @@ -4,10 +4,12 @@ title: "CMFCMenuButton Class" ms.date: "07/15/2019" f1_keywords: ["CMFCMenuButton", "AFXMENUBUTTON/CMFCMenuButton", "AFXMENUBUTTON/CMFCMenuButton::CMFCMenuButton", "AFXMENUBUTTON/CMFCMenuButton::PreTranslateMessage", "AFXMENUBUTTON/CMFCMenuButton::SizeToContent", "AFXMENUBUTTON/CMFCMenuButton::m_bOSMenu", "AFXMENUBUTTON/CMFCMenuButton::m_bRightArrow", "AFXMENUBUTTON/CMFCMenuButton::m_bStayPressed", "AFXMENUBUTTON/CMFCMenuButton::m_hMenu", "AFXMENUBUTTON/CMFCMenuButton::m_nMenuResult", "AFXMENUBUTTON/CMFCMenuButton::m_bDefaultClick"] helpviewer_keywords: ["CMFCMenuButton [MFC], CMFCMenuButton", "CMFCMenuButton [MFC], PreTranslateMessage", "CMFCMenuButton [MFC], SizeToContent", "CMFCMenuButton [MFC], m_bOSMenu", "CMFCMenuButton [MFC], m_bRightArrow", "CMFCMenuButton [MFC], m_bStayPressed", "CMFCMenuButton [MFC], m_hMenu", "CMFCMenuButton [MFC], m_nMenuResult", "CMFCMenuButton [MFC], m_bDefaultClick"] -ms.assetid: 53d3d459-1e5a-47c5-8b7f-2e61f6af5187 --- # CMFCMenuButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A button that displays a pop-up menu and reports on the user's menu selections. ## Syntax diff --git a/docs/mfc/reference/cmfcoutlookbar-class.md b/docs/mfc/reference/cmfcoutlookbar-class.md index 86aa09e2f8d..e4b228d5fac 100644 --- a/docs/mfc/reference/cmfcoutlookbar-class.md +++ b/docs/mfc/reference/cmfcoutlookbar-class.md @@ -4,10 +4,12 @@ title: "CMFCOutlookBar Class" ms.date: "06/25/2018" f1_keywords: ["CMFCOutlookBar", "AFXOUTLOOKBAR/CMFCOutlookBar", "AFXOUTLOOKBAR/CMFCOutlookBar::AllowDestroyEmptyTabbedPane", "AFXOUTLOOKBAR/CMFCOutlookBar::CanAcceptPane", "AFXOUTLOOKBAR/CMFCOutlookBar::CanSetCaptionTextToTabName", "AFXOUTLOOKBAR/CMFCOutlookBar::Create", "AFXOUTLOOKBAR/CMFCOutlookBar::CreateCustomPage", "AFXOUTLOOKBAR/CMFCOutlookBar::DoesAllowDynInsertBefore", "AFXOUTLOOKBAR/CMFCOutlookBar::FloatTab", "AFXOUTLOOKBAR/CMFCOutlookBar::GetButtonsFont", "AFXOUTLOOKBAR/CMFCOutlookBar::GetTabArea", "AFXOUTLOOKBAR/CMFCOutlookBar::IsMode2003", "AFXOUTLOOKBAR/CMFCOutlookBar::OnAfterAnimation", "AFXOUTLOOKBAR/CMFCOutlookBar::OnBeforeAnimation", "AFXOUTLOOKBAR/CMFCOutlookBar::OnScroll", "AFXOUTLOOKBAR/CMFCOutlookBar::RemoveCustomPage", "AFXOUTLOOKBAR/CMFCOutlookBar::SetButtonsFont", "AFXOUTLOOKBAR/CMFCOutlookBar::SetMode2003"] helpviewer_keywords: ["CMFCOutlookBar [MFC], AllowDestroyEmptyTabbedPane", "CMFCOutlookBar [MFC], CanAcceptPane", "CMFCOutlookBar [MFC], CanSetCaptionTextToTabName", "CMFCOutlookBar [MFC], Create", "CMFCOutlookBar [MFC], CreateCustomPage", "CMFCOutlookBar [MFC], DoesAllowDynInsertBefore", "CMFCOutlookBar [MFC], FloatTab", "CMFCOutlookBar [MFC], GetButtonsFont", "CMFCOutlookBar [MFC], GetTabArea", "CMFCOutlookBar [MFC], IsMode2003", "CMFCOutlookBar [MFC], OnAfterAnimation", "CMFCOutlookBar [MFC], OnBeforeAnimation", "CMFCOutlookBar [MFC], OnScroll", "CMFCOutlookBar [MFC], RemoveCustomPage", "CMFCOutlookBar [MFC], SetButtonsFont", "CMFCOutlookBar [MFC], SetMode2003"] -ms.assetid: 2b335f71-ce99-4efd-b103-e65ba43ffc36 --- # CMFCOutlookBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A tabbed pane with the visual appearance of the **Navigation Pane** in Microsoft Outlook 2000 or Outlook 2003. The `CMFCOutlookBar` object contains a [CMFCOutlookBarTabCtrl Class](../../mfc/reference/cmfcoutlookbartabctrl-class.md) object and a series of tabs. The tabs can be either [CMFCOutlookBarPane Class](../../mfc/reference/cmfcoutlookbarpane-class.md) objects or `CWnd`-derived objects. To the user, the Outlook bar appears as a series of buttons and a display area. When the user clicks a button, the corresponding control or button pane is displayed. ## Syntax diff --git a/docs/mfc/reference/cmfcoutlookbarpane-class.md b/docs/mfc/reference/cmfcoutlookbarpane-class.md index 04527f6dd39..37a1f9e4ad7 100644 --- a/docs/mfc/reference/cmfcoutlookbarpane-class.md +++ b/docs/mfc/reference/cmfcoutlookbarpane-class.md @@ -4,10 +4,12 @@ title: "CMFCOutlookBarPane Class" ms.date: "11/04/2016" f1_keywords: ["CMFCOutlookBarPane", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::AddButton", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::CanBeAttached", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::ClearAll", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::Create", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::EnablePageScrollMode", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::GetRegularColor", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::IsBackgroundTexture", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::IsDrawShadedHighlight", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::RemoveButton", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::SetBackColor", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::SetBackImage", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::SetDefaultState", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::SetExtraSpace", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::SetTextColor", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::SetTransparentColor", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::EnableContextMenuItems", "AFXOUTLOOKBARPANE/CMFCOutlookBarPane::RemoveAllButtons"] helpviewer_keywords: ["CMFCOutlookBarPane [MFC], AddButton", "CMFCOutlookBarPane [MFC], CanBeAttached", "CMFCOutlookBarPane [MFC], ClearAll", "CMFCOutlookBarPane [MFC], Create", "CMFCOutlookBarPane [MFC], EnablePageScrollMode", "CMFCOutlookBarPane [MFC], GetRegularColor", "CMFCOutlookBarPane [MFC], IsBackgroundTexture", "CMFCOutlookBarPane [MFC], IsDrawShadedHighlight", "CMFCOutlookBarPane [MFC], RemoveButton", "CMFCOutlookBarPane [MFC], SetBackColor", "CMFCOutlookBarPane [MFC], SetBackImage", "CMFCOutlookBarPane [MFC], SetDefaultState", "CMFCOutlookBarPane [MFC], SetExtraSpace", "CMFCOutlookBarPane [MFC], SetTextColor", "CMFCOutlookBarPane [MFC], SetTransparentColor", "CMFCOutlookBarPane [MFC], EnableContextMenuItems", "CMFCOutlookBarPane [MFC], RemoveAllButtons"] -ms.assetid: 094e2ef3-a118-487e-a4cc-27626108fe08 --- # CMFCOutlookBarPane Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. A control derived from [CMFCToolBar Class](../../mfc/reference/cmfctoolbar-class.md) that can be inserted into an Outlook bar ( [CMFCOutlookBar Class](../../mfc/reference/cmfcoutlookbar-class.md)). The Outlook bar pane contains a column of large buttons. The user can scroll up and down the list of buttons if it is larger than the pane. When the user detaches an Outlook bar pane from the Outlook bar, it can float or dock in the main frame window. diff --git a/docs/mfc/reference/cmfcoutlookbartabctrl-class.md b/docs/mfc/reference/cmfcoutlookbartabctrl-class.md index 0ea3e6a49b0..7af29c03428 100644 --- a/docs/mfc/reference/cmfcoutlookbartabctrl-class.md +++ b/docs/mfc/reference/cmfcoutlookbartabctrl-class.md @@ -4,10 +4,12 @@ title: "CMFCOutlookBarTabCtrl Class" ms.date: "10/18/2018" f1_keywords: ["CMFCOutlookBarTabCtrl", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::AddControl", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::CanShowFewerPageButtons", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::CanShowMorePageButtons", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::Create", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::EnableAnimation", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::EnableInPlaceEdit", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::EnableScrollButtons", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::GetBorderSize", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::GetVisiblePageButtons", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::IsAnimation", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::IsMode2003", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::OnShowFewerPageButtons", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::OnShowMorePageButtons", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::OnShowOptions", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::SetActiveTab", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::SetBorderSize", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::SetPageButtonTextAlign", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::SetToolbarImageList", "AFXOUTLOOKBARTABCTRL/CMFCOutlookBarTabCtrl::SetVisiblePageButtons"] helpviewer_keywords: ["CMFCOutlookBarTabCtrl [MFC], AddControl", "CMFCOutlookBarTabCtrl [MFC], CanShowFewerPageButtons", "CMFCOutlookBarTabCtrl [MFC], CanShowMorePageButtons", "CMFCOutlookBarTabCtrl [MFC], Create", "CMFCOutlookBarTabCtrl [MFC], EnableAnimation", "CMFCOutlookBarTabCtrl [MFC], EnableInPlaceEdit", "CMFCOutlookBarTabCtrl [MFC], EnableScrollButtons", "CMFCOutlookBarTabCtrl [MFC], GetBorderSize", "CMFCOutlookBarTabCtrl [MFC], GetVisiblePageButtons", "CMFCOutlookBarTabCtrl [MFC], IsAnimation", "CMFCOutlookBarTabCtrl [MFC], IsMode2003", "CMFCOutlookBarTabCtrl [MFC], OnShowFewerPageButtons", "CMFCOutlookBarTabCtrl [MFC], OnShowMorePageButtons", "CMFCOutlookBarTabCtrl [MFC], OnShowOptions", "CMFCOutlookBarTabCtrl [MFC], SetActiveTab", "CMFCOutlookBarTabCtrl [MFC], SetBorderSize", "CMFCOutlookBarTabCtrl [MFC], SetPageButtonTextAlign", "CMFCOutlookBarTabCtrl [MFC], SetToolbarImageList", "CMFCOutlookBarTabCtrl [MFC], SetVisiblePageButtons"] -ms.assetid: b1f2b3f7-cc59-49a3-99d8-7ff9b37c044b --- # CMFCOutlookBarTabCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A tab control that has the visual appearance of the **Navigation Pane** in Microsoft Outlook. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcpopupmenu-class.md b/docs/mfc/reference/cmfcpopupmenu-class.md index ab702034109..a56effeb9f5 100644 --- a/docs/mfc/reference/cmfcpopupmenu-class.md +++ b/docs/mfc/reference/cmfcpopupmenu-class.md @@ -4,10 +4,12 @@ title: "CMFCPopupMenu Class" ms.date: "10/18/2018" f1_keywords: ["CMFCPopupMenu", "AFXPOPUPMENU/CMFCPopupMenu", "AFXPOPUPMENU/CMFCPopupMenu::CMFCPopupMenu", "AFXPOPUPMENU/CMFCPopupMenu::ActivatePopupMenu", "AFXPOPUPMENU/CMFCPopupMenu::AlwaysShowEmptyToolsEntry", "AFXPOPUPMENU/CMFCPopupMenu::AreAllCommandsShown", "AFXPOPUPMENU/CMFCPopupMenu::CheckArea", "AFXPOPUPMENU/CMFCPopupMenu::CloseMenu", "AFXPOPUPMENU/CMFCPopupMenu::Create", "AFXPOPUPMENU/CMFCPopupMenu::DefaultMouseClickOnClose", "AFXPOPUPMENU/CMFCPopupMenu::EnableMenuLogo", "AFXPOPUPMENU/CMFCPopupMenu::EnableMenuSound", "AFXPOPUPMENU/CMFCPopupMenu::EnableResize", "AFXPOPUPMENU/CMFCPopupMenu::EnableScrolling", "AFXPOPUPMENU/CMFCPopupMenu::EnableVertResize", "AFXPOPUPMENU/CMFCPopupMenu::FindSubItemByCommand", "AFXPOPUPMENU/CMFCPopupMenu::GetActiveMenu", "AFXPOPUPMENU/CMFCPopupMenu::GetAnimationSpeed", "AFXPOPUPMENU/CMFCPopupMenu::GetAnimationType", "AFXPOPUPMENU/CMFCPopupMenu::GetDropDirection", "AFXPOPUPMENU/CMFCPopupMenu::GetForceMenuFocus", "AFXPOPUPMENU/CMFCPopupMenu::GetForceShadow", "AFXPOPUPMENU/CMFCPopupMenu::GetHMenu", "AFXPOPUPMENU/CMFCPopupMenu::GetMenuBar", "AFXPOPUPMENU/CMFCPopupMenu::GetMenuItem", "AFXPOPUPMENU/CMFCPopupMenu::GetMenuItemCount", "AFXPOPUPMENU/CMFCPopupMenu::GetMessageWnd", "AFXPOPUPMENU/CMFCPopupMenu::GetParentArea", "AFXPOPUPMENU/CMFCPopupMenu::GetParentButton", "AFXPOPUPMENU/CMFCPopupMenu::GetParentPopupMenu", "AFXPOPUPMENU/CMFCPopupMenu::GetParentRibbonElement", "AFXPOPUPMENU/CMFCPopupMenu::GetParentToolBar", "AFXPOPUPMENU/CMFCPopupMenu::GetQuickCustomizeType", "AFXPOPUPMENU/CMFCPopupMenu::GetSelItem", "AFXPOPUPMENU/CMFCPopupMenu::HasBeenResized", "AFXPOPUPMENU/CMFCPopupMenu::HideRarelyUsedCommands", "AFXPOPUPMENU/CMFCPopupMenu::InCommand", "AFXPOPUPMENU/CMFCPopupMenu::InsertItem", "AFXPOPUPMENU/CMFCPopupMenu::InsertSeparator", "AFXPOPUPMENU/CMFCPopupMenu::IsAlwaysClose", "AFXPOPUPMENU/CMFCPopupMenu::IsAlwaysShowEmptyToolsEntry", "AFXPOPUPMENU/CMFCPopupMenu::IsCustomizePane", "AFXPOPUPMENU/CMFCPopupMenu::IsEscClose", "AFXPOPUPMENU/CMFCPopupMenu::IsIdle", "AFXPOPUPMENU/CMFCPopupMenu::IsMenuSound", "AFXPOPUPMENU/CMFCPopupMenu::IsQuickCustomize", "AFXPOPUPMENU/CMFCPopupMenu::IsResizeble", "AFXPOPUPMENU/CMFCPopupMenu::IsRightAlign", "AFXPOPUPMENU/CMFCPopupMenu::IsScrollable", "AFXPOPUPMENU/CMFCPopupMenu::IsSendMenuSelectMsg", "AFXPOPUPMENU/CMFCPopupMenu::IsShown", "AFXPOPUPMENU/CMFCPopupMenu::MoveTo", "AFXPOPUPMENU/CMFCPopupMenu::OnCmdMsg", "AFXPOPUPMENU/CMFCPopupMenu::PostCommand", "AFXPOPUPMENU/CMFCPopupMenu::PreTranslateMessage", "AFXPOPUPMENU/CMFCPopupMenu::RecalcLayout", "AFXPOPUPMENU/CMFCPopupMenu::RemoveAllItems", "AFXPOPUPMENU/CMFCPopupMenu::RemoveItem", "AFXPOPUPMENU/CMFCPopupMenu::SaveState", "AFXPOPUPMENU/CMFCPopupMenu::SetAnimationSpeed", "AFXPOPUPMENU/CMFCPopupMenu::SetAnimationType", "AFXPOPUPMENU/CMFCPopupMenu::SetAutoDestroy", "AFXPOPUPMENU/CMFCPopupMenu::SetDefaultItem", "AFXPOPUPMENU/CMFCPopupMenu::SetForceMenuFocus", "AFXPOPUPMENU/CMFCPopupMenu::SetForceShadow", "AFXPOPUPMENU/CMFCPopupMenu::SetMaxWidth", "AFXPOPUPMENU/CMFCPopupMenu::SetMessageWnd", "AFXPOPUPMENU/CMFCPopupMenu::SetParentRibbonElement", "AFXPOPUPMENU/CMFCPopupMenu::SetQuickCustomizeType", "AFXPOPUPMENU/CMFCPopupMenu::SetQuickMode", "AFXPOPUPMENU/CMFCPopupMenu::SetRightAlign", "AFXPOPUPMENU/CMFCPopupMenu::SetSendMenuSelectMsg", "AFXPOPUPMENU/CMFCPopupMenu::ShowAllCommands", "AFXPOPUPMENU/CMFCPopupMenu::TriggerResize", "AFXPOPUPMENU/CMFCPopupMenu::UpdateAllShadows", "AFXPOPUPMENU/CMFCPopupMenu::UpdateShadow", "AFXPOPUPMENU/CMFCPopupMenu::CreateTearOffBar", "AFXPOPUPMENU/CMFCPopupMenu::OnChangeHot", "AFXPOPUPMENU/CMFCPopupMenu::OnChooseItem"] helpviewer_keywords: ["CMFCPopupMenu [MFC], CMFCPopupMenu", "CMFCPopupMenu [MFC], ActivatePopupMenu", "CMFCPopupMenu [MFC], AlwaysShowEmptyToolsEntry", "CMFCPopupMenu [MFC], AreAllCommandsShown", "CMFCPopupMenu [MFC], CheckArea", "CMFCPopupMenu [MFC], CloseMenu", "CMFCPopupMenu [MFC], Create", "CMFCPopupMenu [MFC], DefaultMouseClickOnClose", "CMFCPopupMenu [MFC], EnableMenuLogo", "CMFCPopupMenu [MFC], EnableMenuSound", "CMFCPopupMenu [MFC], EnableResize", "CMFCPopupMenu [MFC], EnableScrolling", "CMFCPopupMenu [MFC], EnableVertResize", "CMFCPopupMenu [MFC], FindSubItemByCommand", "CMFCPopupMenu [MFC], GetActiveMenu", "CMFCPopupMenu [MFC], GetAnimationSpeed", "CMFCPopupMenu [MFC], GetAnimationType", "CMFCPopupMenu [MFC], GetDropDirection", "CMFCPopupMenu [MFC], GetForceMenuFocus", "CMFCPopupMenu [MFC], GetForceShadow", "CMFCPopupMenu [MFC], GetHMenu", "CMFCPopupMenu [MFC], GetMenuBar", "CMFCPopupMenu [MFC], GetMenuItem", "CMFCPopupMenu [MFC], GetMenuItemCount", "CMFCPopupMenu [MFC], GetMessageWnd", "CMFCPopupMenu [MFC], GetParentArea", "CMFCPopupMenu [MFC], GetParentButton", "CMFCPopupMenu [MFC], GetParentPopupMenu", "CMFCPopupMenu [MFC], GetParentRibbonElement", "CMFCPopupMenu [MFC], GetParentToolBar", "CMFCPopupMenu [MFC], GetQuickCustomizeType", "CMFCPopupMenu [MFC], GetSelItem", "CMFCPopupMenu [MFC], HasBeenResized", "CMFCPopupMenu [MFC], HideRarelyUsedCommands", "CMFCPopupMenu [MFC], InCommand", "CMFCPopupMenu [MFC], InsertItem", "CMFCPopupMenu [MFC], InsertSeparator", "CMFCPopupMenu [MFC], IsAlwaysClose", "CMFCPopupMenu [MFC], IsAlwaysShowEmptyToolsEntry", "CMFCPopupMenu [MFC], IsCustomizePane", "CMFCPopupMenu [MFC], IsEscClose", "CMFCPopupMenu [MFC], IsIdle", "CMFCPopupMenu [MFC], IsMenuSound", "CMFCPopupMenu [MFC], IsQuickCustomize", "CMFCPopupMenu [MFC], IsResizeble", "CMFCPopupMenu [MFC], IsRightAlign", "CMFCPopupMenu [MFC], IsScrollable", "CMFCPopupMenu [MFC], IsSendMenuSelectMsg", "CMFCPopupMenu [MFC], IsShown", "CMFCPopupMenu [MFC], MoveTo", "CMFCPopupMenu [MFC], OnCmdMsg", "CMFCPopupMenu [MFC], PostCommand", "CMFCPopupMenu [MFC], PreTranslateMessage", "CMFCPopupMenu [MFC], RecalcLayout", "CMFCPopupMenu [MFC], RemoveAllItems", "CMFCPopupMenu [MFC], RemoveItem", "CMFCPopupMenu [MFC], SaveState", "CMFCPopupMenu [MFC], SetAnimationSpeed", "CMFCPopupMenu [MFC], SetAnimationType", "CMFCPopupMenu [MFC], SetAutoDestroy", "CMFCPopupMenu [MFC], SetDefaultItem", "CMFCPopupMenu [MFC], SetForceMenuFocus", "CMFCPopupMenu [MFC], SetForceShadow", "CMFCPopupMenu [MFC], SetMaxWidth", "CMFCPopupMenu [MFC], SetMessageWnd", "CMFCPopupMenu [MFC], SetParentRibbonElement", "CMFCPopupMenu [MFC], SetQuickCustomizeType", "CMFCPopupMenu [MFC], SetQuickMode", "CMFCPopupMenu [MFC], SetRightAlign", "CMFCPopupMenu [MFC], SetSendMenuSelectMsg", "CMFCPopupMenu [MFC], ShowAllCommands", "CMFCPopupMenu [MFC], TriggerResize", "CMFCPopupMenu [MFC], UpdateAllShadows", "CMFCPopupMenu [MFC], UpdateShadow", "CMFCPopupMenu [MFC], CreateTearOffBar", "CMFCPopupMenu [MFC], OnChangeHot", "CMFCPopupMenu [MFC], OnChooseItem"] -ms.assetid: 9555dca1-8c9c-44c9-af72-0659ddad128e --- # CMFCPopupMenu Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements Windows pop-up menu functionality and extends it by adding features such as tear-off menus and tooltips. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcpopupmenubar-class.md b/docs/mfc/reference/cmfcpopupmenubar-class.md index c3b797becac..b80cec2199f 100644 --- a/docs/mfc/reference/cmfcpopupmenubar-class.md +++ b/docs/mfc/reference/cmfcpopupmenubar-class.md @@ -4,10 +4,12 @@ title: "CMFCPopupMenuBar Class" ms.date: "11/04/2016" f1_keywords: ["CMFCPopupMenuBar", "AFXPOPUPMENUBAR/CMFCPopupMenuBar", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::AdjustSizeImmediate", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::BuildOrigItems", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::CloseDelayedSubMenu", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::ExportToMenu", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::FindDestintationToolBar", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::GetCurrentMenuImageSize", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::GetDefaultMenuId", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::GetLastCommandIndex", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::GetOffset", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::ImportFromMenu", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::IsDropDownListMode", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::IsPaletteMode", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::IsRibbonPanel", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::IsRibbonPanelInRegularMode", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::LoadFromHash", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::RestoreDelayedSubMenu", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::SetButtonStyle", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::SetOffset", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::StartPopupMenuTimer", "AFXPOPUPMENUBAR/CMFCPopupMenuBar::m_bDisableSideBarInXPMode"] helpviewer_keywords: ["CMFCPopupMenuBar [MFC], AdjustSizeImmediate", "CMFCPopupMenuBar [MFC], BuildOrigItems", "CMFCPopupMenuBar [MFC], CloseDelayedSubMenu", "CMFCPopupMenuBar [MFC], ExportToMenu", "CMFCPopupMenuBar [MFC], FindDestintationToolBar", "CMFCPopupMenuBar [MFC], GetCurrentMenuImageSize", "CMFCPopupMenuBar [MFC], GetDefaultMenuId", "CMFCPopupMenuBar [MFC], GetLastCommandIndex", "CMFCPopupMenuBar [MFC], GetOffset", "CMFCPopupMenuBar [MFC], ImportFromMenu", "CMFCPopupMenuBar [MFC], IsDropDownListMode", "CMFCPopupMenuBar [MFC], IsPaletteMode", "CMFCPopupMenuBar [MFC], IsRibbonPanel", "CMFCPopupMenuBar [MFC], IsRibbonPanelInRegularMode", "CMFCPopupMenuBar [MFC], LoadFromHash", "CMFCPopupMenuBar [MFC], RestoreDelayedSubMenu", "CMFCPopupMenuBar [MFC], SetButtonStyle", "CMFCPopupMenuBar [MFC], SetOffset", "CMFCPopupMenuBar [MFC], StartPopupMenuTimer", "CMFCPopupMenuBar [MFC], m_bDisableSideBarInXPMode"] -ms.assetid: 4c93c459-7f70-4240-8c63-280bb811e374 --- # CMFCPopupMenuBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A menu bar embedded into a pop-up menu. ## Syntax diff --git a/docs/mfc/reference/cmfcpreviewctrlimpl-class.md b/docs/mfc/reference/cmfcpreviewctrlimpl-class.md index 0dc7d379523..00f4b24cce3 100644 --- a/docs/mfc/reference/cmfcpreviewctrlimpl-class.md +++ b/docs/mfc/reference/cmfcpreviewctrlimpl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCPreviewCtrlImpl [MFC], CMFCPreviewCtrlImpl", "CMFCPre --- # `CMFCPreviewCtrlImpl` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This class implements a window that is placed on a host window provided by the Shell for Rich Preview. ## Syntax diff --git a/docs/mfc/reference/cmfcprintpreviewtoolbar-class.md b/docs/mfc/reference/cmfcprintpreviewtoolbar-class.md index d4afc3ce036..12c1fad00ce 100644 --- a/docs/mfc/reference/cmfcprintpreviewtoolbar-class.md +++ b/docs/mfc/reference/cmfcprintpreviewtoolbar-class.md @@ -3,10 +3,12 @@ description: "Learn more about: CMFCPrintPreviewToolBar Class" title: "CMFCPrintPreviewToolBar Class" ms.date: "11/04/2016" helpviewer_keywords: ["CMFCPrintPreviewToolBar class [MFC]", "CMFCPrintPreviewToolBar class [MFC], destructor"] -ms.assetid: 7b9f641b-d402-4339-8815-e5247237e7e5 --- # CMFCPrintPreviewToolBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The toolbar on the print preview. ## Syntax diff --git a/docs/mfc/reference/cmfcpropertygridcolorproperty-class.md b/docs/mfc/reference/cmfcpropertygridcolorproperty-class.md index 75794a5d3ce..2f8314b97fa 100644 --- a/docs/mfc/reference/cmfcpropertygridcolorproperty-class.md +++ b/docs/mfc/reference/cmfcpropertygridcolorproperty-class.md @@ -4,10 +4,12 @@ title: "CMFCPropertyGridColorProperty Class" ms.date: "11/04/2016" f1_keywords: ["CMFCPropertyGridColorProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridColorProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridColorProperty::CMFCPropertyGridColorProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridColorProperty::EnableAutomaticButton", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridColorProperty::EnableOtherButton", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridColorProperty::GetColor", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridColorProperty::SetColor", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridColorProperty::SetColumnsNumber", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridColorProperty::SetOriginalValue"] helpviewer_keywords: ["CMFCPropertyGridColorProperty [MFC], CMFCPropertyGridColorProperty", "CMFCPropertyGridColorProperty [MFC], EnableAutomaticButton", "CMFCPropertyGridColorProperty [MFC], EnableOtherButton", "CMFCPropertyGridColorProperty [MFC], GetColor", "CMFCPropertyGridColorProperty [MFC], SetColor", "CMFCPropertyGridColorProperty [MFC], SetColumnsNumber", "CMFCPropertyGridColorProperty [MFC], SetOriginalValue"] -ms.assetid: af37be93-a91e-40a2-9a65-0f3412c6f0f8 --- # CMFCPropertyGridColorProperty Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCPropertyGridColorProperty` class supports a property list control item that opens a color selection dialog box. ## Syntax diff --git a/docs/mfc/reference/cmfcpropertygridctrl-class.md b/docs/mfc/reference/cmfcpropertygridctrl-class.md index 08bc061cf36..bddf570d91a 100644 --- a/docs/mfc/reference/cmfcpropertygridctrl-class.md +++ b/docs/mfc/reference/cmfcpropertygridctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCPropertyGridCtrl [MFC], CMFCPropertyGridCtrl", "CMFCP --- # CMFCPropertyGridCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For more detail see the source code located in the **`mfc`** folder of your Visual Studio installation. For example, `%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\atlmfc\src\mfc`. Supports an editable property grid control that can display properties in alphabetical or hierarchical order. diff --git a/docs/mfc/reference/cmfcpropertygridfileproperty-class.md b/docs/mfc/reference/cmfcpropertygridfileproperty-class.md index 7d7c329867d..00f5bffd1f0 100644 --- a/docs/mfc/reference/cmfcpropertygridfileproperty-class.md +++ b/docs/mfc/reference/cmfcpropertygridfileproperty-class.md @@ -4,10 +4,12 @@ title: "CMFCPropertyGridFileProperty Class" ms.date: "11/04/2016" f1_keywords: ["CMFCPropertyGridFileProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridFileProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridFileProperty::CMFCPropertyGridFileProperty"] helpviewer_keywords: ["CMFCPropertyGridFileProperty [MFC], CMFCPropertyGridFileProperty"] -ms.assetid: 2bb8b8b4-47fc-4798-bd5e-dc8ea0b4cd9d --- # CMFCPropertyGridFileProperty Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCPropertyGridFileProperty` class supports a property list control item that opens a file selection dialog box. ## Syntax diff --git a/docs/mfc/reference/cmfcpropertygridfontproperty-class.md b/docs/mfc/reference/cmfcpropertygridfontproperty-class.md index 9dc77057151..84b77c97caa 100644 --- a/docs/mfc/reference/cmfcpropertygridfontproperty-class.md +++ b/docs/mfc/reference/cmfcpropertygridfontproperty-class.md @@ -4,10 +4,12 @@ title: "CMFCPropertyGridFontProperty Class" ms.date: "11/04/2016" f1_keywords: ["CMFCPropertyGridFontProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridFontProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridFontProperty::CMFCPropertyGridFontProperty", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridFontProperty::GetColor", "AFXPROPERTYGRIDCTRL/CMFCPropertyGridFontProperty::GetLogFont"] helpviewer_keywords: ["CMFCPropertyGridFontProperty [MFC], CMFCPropertyGridFontProperty", "CMFCPropertyGridFontProperty [MFC], GetColor", "CMFCPropertyGridFontProperty [MFC], GetLogFont"] -ms.assetid: 83693f33-bbd3-4fcb-a9ad-fa79fcf2ca24 --- # CMFCPropertyGridFontProperty Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCPropertyGridFileProperty` class supports a property list control item that opens a font selection dialog box. ## Syntax diff --git a/docs/mfc/reference/cmfcpropertygridproperty-class.md b/docs/mfc/reference/cmfcpropertygridproperty-class.md index 8bf3752df36..e9a54f4ffc6 100644 --- a/docs/mfc/reference/cmfcpropertygridproperty-class.md +++ b/docs/mfc/reference/cmfcpropertygridproperty-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCPropertyGridProperty [MFC], CMFCPropertyGridProperty" --- # `CMFCPropertyGridProperty` class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A `CMFCPropertyGridProperty` object represents a list item in a property list control. For more detail, see the source code located in the **`mfc`** folder of your Visual Studio installation. For example, `%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\atlmfc\src\mfc`. diff --git a/docs/mfc/reference/cmfcpropertygridtooltipctrl-class.md b/docs/mfc/reference/cmfcpropertygridtooltipctrl-class.md index 84ef4b26a9a..47484ecb7db 100644 --- a/docs/mfc/reference/cmfcpropertygridtooltipctrl-class.md +++ b/docs/mfc/reference/cmfcpropertygridtooltipctrl-class.md @@ -4,10 +4,12 @@ title: "CMFCPropertyGridToolTipCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CMFCPropertyGridToolTipCtrl", "AFXPROPERTYGRIDTOOLTIPCTRL/CMFCPropertyGridToolTipCtrl", "AFXPROPERTYGRIDTOOLTIPCTRL/CMFCPropertyGridToolTipCtrl::CMFCPropertyGridToolTipCtrl", "AFXPROPERTYGRIDTOOLTIPCTRL/CMFCPropertyGridToolTipCtrl::Create", "AFXPROPERTYGRIDTOOLTIPCTRL/CMFCPropertyGridToolTipCtrl::Deactivate", "AFXPROPERTYGRIDTOOLTIPCTRL/CMFCPropertyGridToolTipCtrl::GetLastRect", "AFXPROPERTYGRIDTOOLTIPCTRL/CMFCPropertyGridToolTipCtrl::Hide", "AFXPROPERTYGRIDTOOLTIPCTRL/CMFCPropertyGridToolTipCtrl::SetTextMargin", "AFXPROPERTYGRIDTOOLTIPCTRL/CMFCPropertyGridToolTipCtrl::Track"] helpviewer_keywords: ["CMFCPropertyGridToolTipCtrl [MFC], CMFCPropertyGridToolTipCtrl", "CMFCPropertyGridToolTipCtrl [MFC], Create", "CMFCPropertyGridToolTipCtrl [MFC], Deactivate", "CMFCPropertyGridToolTipCtrl [MFC], GetLastRect", "CMFCPropertyGridToolTipCtrl [MFC], Hide", "CMFCPropertyGridToolTipCtrl [MFC], SetTextMargin", "CMFCPropertyGridToolTipCtrl [MFC], Track"] -ms.assetid: 84b436e5-6695-4da0-9569-1a875e087711 --- # CMFCPropertyGridToolTipCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a tooltip control that the [CMFCPropertyGridCtrl Class](../../mfc/reference/cmfcpropertygridctrl-class.md) uses to display tooltips. ## Syntax diff --git a/docs/mfc/reference/cmfcpropertypage-class.md b/docs/mfc/reference/cmfcpropertypage-class.md index a8448d4c043..7ad58c0a49a 100644 --- a/docs/mfc/reference/cmfcpropertypage-class.md +++ b/docs/mfc/reference/cmfcpropertypage-class.md @@ -4,10 +4,12 @@ title: "CMFCPropertyPage Class" ms.date: "11/04/2016" f1_keywords: ["CMFCPropertyPage", "AFXPROPERTYPAGE/CMFCPropertyPage", "AFXPROPERTYPAGE/CMFCPropertyPage::CMFCPropertyPage"] helpviewer_keywords: ["CMFCPropertyPage [MFC], CMFCPropertyPage"] -ms.assetid: d279d7f2-2d81-418d-9f23-6147d6e8df09 --- # CMFCPropertyPage Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCPropertyPage` class supports the display of pop-up menus on a property page. ## Syntax diff --git a/docs/mfc/reference/cmfcpropertysheet-class.md b/docs/mfc/reference/cmfcpropertysheet-class.md index b7f34be9f44..3526eeb6a54 100644 --- a/docs/mfc/reference/cmfcpropertysheet-class.md +++ b/docs/mfc/reference/cmfcpropertysheet-class.md @@ -4,10 +4,12 @@ title: "CMFCPropertySheet Class" ms.date: "11/19/2018" f1_keywords: ["CMFCPropertySheet", "AFXPROPERTYSHEET/CMFCPropertySheet", "AFXPROPERTYSHEET/CMFCPropertySheet::CMFCPropertySheet", "AFXPROPERTYSHEET/CMFCPropertySheet::AddPage", "AFXPROPERTYSHEET/CMFCPropertySheet::AddPageToTree", "AFXPROPERTYSHEET/CMFCPropertySheet::AddTreeCategory", "AFXPROPERTYSHEET/CMFCPropertySheet::EnablePageHeader", "AFXPROPERTYSHEET/CMFCPropertySheet::GetHeaderHeight", "AFXPROPERTYSHEET/CMFCPropertySheet::GetLook", "AFXPROPERTYSHEET/CMFCPropertySheet::GetNavBarWidth", "AFXPROPERTYSHEET/CMFCPropertySheet::GetTab", "AFXPROPERTYSHEET/CMFCPropertySheet::InitNavigationControl", "AFXPROPERTYSHEET/CMFCPropertySheet::OnActivatePage", "AFXPROPERTYSHEET/CMFCPropertySheet::OnDrawPageHeader", "AFXPROPERTYSHEET/CMFCPropertySheet::OnRemoveTreePage", "AFXPROPERTYSHEET/CMFCPropertySheet::RemoveCategory", "AFXPROPERTYSHEET/CMFCPropertySheet::RemovePage", "AFXPROPERTYSHEET/CMFCPropertySheet::SetIconsList", "AFXPROPERTYSHEET/CMFCPropertySheet::SetLook"] helpviewer_keywords: ["CMFCPropertySheet [MFC], CMFCPropertySheet", "CMFCPropertySheet [MFC], AddPage", "CMFCPropertySheet [MFC], AddPageToTree", "CMFCPropertySheet [MFC], AddTreeCategory", "CMFCPropertySheet [MFC], EnablePageHeader", "CMFCPropertySheet [MFC], GetHeaderHeight", "CMFCPropertySheet [MFC], GetLook", "CMFCPropertySheet [MFC], GetNavBarWidth", "CMFCPropertySheet [MFC], GetTab", "CMFCPropertySheet [MFC], InitNavigationControl", "CMFCPropertySheet [MFC], OnActivatePage", "CMFCPropertySheet [MFC], OnDrawPageHeader", "CMFCPropertySheet [MFC], OnRemoveTreePage", "CMFCPropertySheet [MFC], RemoveCategory", "CMFCPropertySheet [MFC], RemovePage", "CMFCPropertySheet [MFC], SetIconsList", "CMFCPropertySheet [MFC], SetLook"] -ms.assetid: 01d93573-9698-440f-a6a4-5bebbee879dc --- # CMFCPropertySheet Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCPropertySheet` class supports a property sheet where each property page is denoted by a page tab, a toolbar button, a tree control node, or a list item. ## Syntax diff --git a/docs/mfc/reference/cmfcrebar-class.md b/docs/mfc/reference/cmfcrebar-class.md index 355e63c99e2..babf161b4c7 100644 --- a/docs/mfc/reference/cmfcrebar-class.md +++ b/docs/mfc/reference/cmfcrebar-class.md @@ -4,10 +4,12 @@ title: "CMFCReBar Class" ms.date: "11/04/2016" f1_keywords: ["CMFCReBar", "AFXREBAR/CMFCReBar", "AFXREBAR/CMFCReBar::AddBar", "AFXREBAR/CMFCReBar::CalcFixedLayout", "AFXREBAR/CMFCReBar::CanFloat", "AFXREBAR/CMFCReBar::Create", "AFXREBAR/CMFCReBar::EnableDocking", "AFXREBAR/CMFCReBar::GetReBarBandInfoSize", "AFXREBAR/CMFCReBar::GetReBarCtrl", "AFXREBAR/CMFCReBar::OnShowControlBarMenu", "AFXREBAR/CMFCReBar::OnToolHitTest", "AFXREBAR/CMFCReBar::OnUpdateCmdUI", "AFXREBAR/CMFCReBar::SetPaneAlignment"] helpviewer_keywords: ["CMFCReBar [MFC], AddBar", "CMFCReBar [MFC], CalcFixedLayout", "CMFCReBar [MFC], CanFloat", "CMFCReBar [MFC], Create", "CMFCReBar [MFC], EnableDocking", "CMFCReBar [MFC], GetReBarBandInfoSize", "CMFCReBar [MFC], GetReBarCtrl", "CMFCReBar [MFC], OnShowControlBarMenu", "CMFCReBar [MFC], OnToolHitTest", "CMFCReBar [MFC], OnUpdateCmdUI", "CMFCReBar [MFC], SetPaneAlignment"] -ms.assetid: 02a60e29-6224-49c1-9e74-e0a7d9f8d023 --- # CMFCReBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A `CMFCReBar` object is a control bar that provides layout, persistence, and state information for rebar controls. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcribbonapplicationbutton-class.md b/docs/mfc/reference/cmfcribbonapplicationbutton-class.md index 5309f14c60f..50d4c58b4ff 100644 --- a/docs/mfc/reference/cmfcribbonapplicationbutton-class.md +++ b/docs/mfc/reference/cmfcribbonapplicationbutton-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonApplicationButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonApplicationButton", "AFXRIBBONBAR/CMFCRibbonApplicationButton", "AFXRIBBONBAR/CMFCRibbonApplicationButton::CMFCRibbonApplicationButton", "AFXRIBBONBAR/CMFCRibbonApplicationButton::SetImage"] helpviewer_keywords: ["CMFCRibbonApplicationButton [MFC], CMFCRibbonApplicationButton", "CMFCRibbonApplicationButton [MFC], SetImage"] -ms.assetid: beb81757-fabd-4641-9130-876ba8505b78 --- # CMFCRibbonApplicationButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a special button located in the top-left corner of the application window. When clicked, the button opens a menu that usually contains common **File** commands like **Open**, **Save**, and **Exit**. ## Syntax diff --git a/docs/mfc/reference/cmfcribbonbar-class.md b/docs/mfc/reference/cmfcribbonbar-class.md index b3ec1757ee4..0dc8d3faf6c 100644 --- a/docs/mfc/reference/cmfcribbonbar-class.md +++ b/docs/mfc/reference/cmfcribbonbar-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCRibbonBar [MFC], ActivateContextCategory", "CMFCRibbo --- # `CMFCRibbonBar` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCRibbonBar` class implements a ribbon bar similar to that used in Office 2007. For more detail, see the source code located in the `mfc` folder of your Visual Studio installation. For example, `%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\atlmfc\src\mfc`. diff --git a/docs/mfc/reference/cmfcribbonbaseelement-class.md b/docs/mfc/reference/cmfcribbonbaseelement-class.md index 7f320909b9d..d67fb97cd16 100644 --- a/docs/mfc/reference/cmfcribbonbaseelement-class.md +++ b/docs/mfc/reference/cmfcribbonbaseelement-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCRibbonBaseElement [MFC], AddToKeyList", "CMFCRibbonBa --- # CMFCRibbonBaseElement Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCRibbonBaseElement` class is the base class for all elements that you can add to a [ribbon bar](../../mfc/reference/cmfcribbonbar-class.md). Examples of ribbon elements are ribbon buttons, ribbon check boxes, and ribbon combo boxes. ## Syntax diff --git a/docs/mfc/reference/cmfcribbonbutton-class.md b/docs/mfc/reference/cmfcribbonbutton-class.md index 38845bda11c..fec84f00b6a 100644 --- a/docs/mfc/reference/cmfcribbonbutton-class.md +++ b/docs/mfc/reference/cmfcribbonbutton-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonButton", "AFXRIBBONBUTTON/CMFCRibbonButton", "AFXRIBBONBUTTON/CMFCRibbonButton::CMFCRibbonButton", "AFXRIBBONBUTTON/CMFCRibbonButton::AddSubItem", "AFXRIBBONBUTTON/CMFCRibbonButton::CanBeStretched", "AFXRIBBONBUTTON/CMFCRibbonButton::CleanUpSizes", "AFXRIBBONBUTTON/CMFCRibbonButton::ClosePopupMenu", "AFXRIBBONBUTTON/CMFCRibbonButton::DrawBottomText", "AFXRIBBONBUTTON/CMFCRibbonButton::DrawImage", "AFXRIBBONBUTTON/CMFCRibbonButton::DrawRibbonText", "AFXRIBBONBUTTON/CMFCRibbonButton::FindSubItemIndexByID", "AFXRIBBONBUTTON/CMFCRibbonButton::GetCommandRect", "AFXRIBBONBUTTON/CMFCRibbonButton::GetCompactSize", "AFXRIBBONBUTTON/CMFCRibbonButton::GetIcon", "AFXRIBBONBUTTON/CMFCRibbonButton::GetImageIndex", "AFXRIBBONBUTTON/CMFCRibbonButton::GetImageSize", "AFXRIBBONBUTTON/CMFCRibbonButton::GetIntermediateSize", "AFXRIBBONBUTTON/CMFCRibbonButton::GetMenu", "AFXRIBBONBUTTON/CMFCRibbonButton::GetMenuRect", "AFXRIBBONBUTTON/CMFCRibbonButton::GetRegularSize", "AFXRIBBONBUTTON/CMFCRibbonButton::GetSubItems", "AFXRIBBONBUTTON/CMFCRibbonButton::GetTextRowHeight", "AFXRIBBONBUTTON/CMFCRibbonButton::GetToolTipText", "AFXRIBBONBUTTON/CMFCRibbonButton::HasCompactMode", "AFXRIBBONBUTTON/CMFCRibbonButton::HasIntermediateMode", "AFXRIBBONBUTTON/CMFCRibbonButton::HasLargeMode", "AFXRIBBONBUTTON/CMFCRibbonButton::HasMenu", "AFXRIBBONBUTTON/CMFCRibbonButton::IsAlwaysDrawBorder", "AFXRIBBONBUTTON/CMFCRibbonButton::IsAlwaysLargeImage", "AFXRIBBONBUTTON/CMFCRibbonButton::IsApplicationButton", "AFXRIBBONBUTTON/CMFCRibbonButton::IsCommandAreaHighlighted", "AFXRIBBONBUTTON/CMFCRibbonButton::IsDefaultCommand", "AFXRIBBONBUTTON/CMFCRibbonButton::IsDefaultPanelButton", "AFXRIBBONBUTTON/CMFCRibbonButton::IsDrawTooltipImage", "AFXRIBBONBUTTON/CMFCRibbonButton::IsLargeImage", "AFXRIBBONBUTTON/CMFCRibbonButton::IsMenuAreaHighlighted", "AFXRIBBONBUTTON/CMFCRibbonButton::IsMenuOnBottom", "AFXRIBBONBUTTON/CMFCRibbonButton::IsPopupDefaultMenuLook", "AFXRIBBONBUTTON/CMFCRibbonButton::IsRightAlignMenu", "AFXRIBBONBUTTON/CMFCRibbonButton::IsSingleLineText", "AFXRIBBONBUTTON/CMFCRibbonButton::OnCalcTextSize", "AFXRIBBONBUTTON/CMFCRibbonButton::OnDrawBorder", "AFXRIBBONBUTTON/CMFCRibbonButton::OnDraw", "AFXRIBBONBUTTON/CMFCRibbonButton::OnFillBackground", "AFXRIBBONBUTTON/CMFCRibbonButton::RemoveAllSubItems", "AFXRIBBONBUTTON/CMFCRibbonButton::RemoveSubItem", "AFXRIBBONBUTTON/CMFCRibbonButton::SetACCData", "AFXRIBBONBUTTON/CMFCRibbonButton::SetAlwaysLargeImage", "AFXRIBBONBUTTON/CMFCRibbonButton::SetDefaultCommand", "AFXRIBBONBUTTON/CMFCRibbonButton::SetDescription", "AFXRIBBONBUTTON/CMFCRibbonButton::SetImageIndex", "AFXRIBBONBUTTON/CMFCRibbonButton::SetMenu", "AFXRIBBONBUTTON/CMFCRibbonButton::SetParentCategory", "AFXRIBBONBUTTON/CMFCRibbonButton::SetRightAlignMenu", "AFXRIBBONBUTTON/CMFCRibbonButton::SetText", "AFXRIBBONBUTTON/CMFCRibbonButton::OnClick"] helpviewer_keywords: ["CMFCRibbonButton [MFC], CMFCRibbonButton", "CMFCRibbonButton [MFC], AddSubItem", "CMFCRibbonButton [MFC], CanBeStretched", "CMFCRibbonButton [MFC], CleanUpSizes", "CMFCRibbonButton [MFC], ClosePopupMenu", "CMFCRibbonButton [MFC], DrawBottomText", "CMFCRibbonButton [MFC], DrawImage", "CMFCRibbonButton [MFC], DrawRibbonText", "CMFCRibbonButton [MFC], FindSubItemIndexByID", "CMFCRibbonButton [MFC], GetCommandRect", "CMFCRibbonButton [MFC], GetCompactSize", "CMFCRibbonButton [MFC], GetIcon", "CMFCRibbonButton [MFC], GetImageIndex", "CMFCRibbonButton [MFC], GetImageSize", "CMFCRibbonButton [MFC], GetIntermediateSize", "CMFCRibbonButton [MFC], GetMenu", "CMFCRibbonButton [MFC], GetMenuRect", "CMFCRibbonButton [MFC], GetRegularSize", "CMFCRibbonButton [MFC], GetSubItems", "CMFCRibbonButton [MFC], GetTextRowHeight", "CMFCRibbonButton [MFC], GetToolTipText", "CMFCRibbonButton [MFC], HasCompactMode", "CMFCRibbonButton [MFC], HasIntermediateMode", "CMFCRibbonButton [MFC], HasLargeMode", "CMFCRibbonButton [MFC], HasMenu", "CMFCRibbonButton [MFC], IsAlwaysDrawBorder", "CMFCRibbonButton [MFC], IsAlwaysLargeImage", "CMFCRibbonButton [MFC], IsApplicationButton", "CMFCRibbonButton [MFC], IsCommandAreaHighlighted", "CMFCRibbonButton [MFC], IsDefaultCommand", "CMFCRibbonButton [MFC], IsDefaultPanelButton", "CMFCRibbonButton [MFC], IsDrawTooltipImage", "CMFCRibbonButton [MFC], IsLargeImage", "CMFCRibbonButton [MFC], IsMenuAreaHighlighted", "CMFCRibbonButton [MFC], IsMenuOnBottom", "CMFCRibbonButton [MFC], IsPopupDefaultMenuLook", "CMFCRibbonButton [MFC], IsRightAlignMenu", "CMFCRibbonButton [MFC], IsSingleLineText", "CMFCRibbonButton [MFC], OnCalcTextSize", "CMFCRibbonButton [MFC], OnDrawBorder", "CMFCRibbonButton [MFC], OnDraw", "CMFCRibbonButton [MFC], OnFillBackground", "CMFCRibbonButton [MFC], RemoveAllSubItems", "CMFCRibbonButton [MFC], RemoveSubItem", "CMFCRibbonButton [MFC], SetACCData", "CMFCRibbonButton [MFC], SetAlwaysLargeImage", "CMFCRibbonButton [MFC], SetDefaultCommand", "CMFCRibbonButton [MFC], SetDescription", "CMFCRibbonButton [MFC], SetImageIndex", "CMFCRibbonButton [MFC], SetMenu", "CMFCRibbonButton [MFC], SetParentCategory", "CMFCRibbonButton [MFC], SetRightAlignMenu", "CMFCRibbonButton [MFC], SetText", "CMFCRibbonButton [MFC], OnClick"] -ms.assetid: 732e941c-9504-4b83-a691-d18075965d53 --- # CMFCRibbonButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCRibbonButton` class implements buttons that you can position on ribbon bar elements such as panels, Quick Access Toolbars, and pop-up menus. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcribbonbuttonsgroup-class.md b/docs/mfc/reference/cmfcribbonbuttonsgroup-class.md index 943d046aca0..969db73abad 100644 --- a/docs/mfc/reference/cmfcribbonbuttonsgroup-class.md +++ b/docs/mfc/reference/cmfcribbonbuttonsgroup-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonButtonsGroup Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonButtonsGroup", "AFXRIBBONBUTTONSGROUP/CMFCRibbonButtonsGroup", "AFXRIBBONBUTTONSGROUP/CMFCRibbonButtonsGroup::CMFCRibbonButtonsGroup", "AFXRIBBONBUTTONSGROUP/CMFCRibbonButtonsGroup::AddButton", "AFXRIBBONBUTTONSGROUP/CMFCRibbonButtonsGroup::AddButtons", "AFXRIBBONBUTTONSGROUP/CMFCRibbonButtonsGroup::GetButton", "AFXRIBBONBUTTONSGROUP/CMFCRibbonButtonsGroup::GetCount", "AFXRIBBONBUTTONSGROUP/CMFCRibbonButtonsGroup::GetImageSize", "AFXRIBBONBUTTONSGROUP/CMFCRibbonButtonsGroup::GetRegularSize", "AFXRIBBONBUTTONSGROUP/CMFCRibbonButtonsGroup::HasImages", "AFXRIBBONBUTTONSGROUP/CMFCRibbonButtonsGroup::OnDrawImage", "AFXRIBBONBUTTONSGROUP/CMFCRibbonButtonsGroup::RemoveAll", "AFXRIBBONBUTTONSGROUP/CMFCRibbonButtonsGroup::SetImages", "AFXRIBBONBUTTONSGROUP/CMFCRibbonButtonsGroup::SetParentCategory"] helpviewer_keywords: ["CMFCRibbonButtonsGroup [MFC], CMFCRibbonButtonsGroup", "CMFCRibbonButtonsGroup [MFC], AddButton", "CMFCRibbonButtonsGroup [MFC], AddButtons", "CMFCRibbonButtonsGroup [MFC], GetButton", "CMFCRibbonButtonsGroup [MFC], GetCount", "CMFCRibbonButtonsGroup [MFC], GetImageSize", "CMFCRibbonButtonsGroup [MFC], GetRegularSize", "CMFCRibbonButtonsGroup [MFC], HasImages", "CMFCRibbonButtonsGroup [MFC], OnDrawImage", "CMFCRibbonButtonsGroup [MFC], RemoveAll", "CMFCRibbonButtonsGroup [MFC], SetImages", "CMFCRibbonButtonsGroup [MFC], SetParentCategory"] -ms.assetid: b993d93e-fc1a-472f-a87f-1d7b7b499845 --- # CMFCRibbonButtonsGroup Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCRibbonButtonsGroup` class allows you to organize a set of ribbon buttons into a group. All buttons in the group are directly adjacent to each other horizontally and enclosed in a border. ## Syntax diff --git a/docs/mfc/reference/cmfcribboncategory-class.md b/docs/mfc/reference/cmfcribboncategory-class.md index c63b58d2c59..4cfdf0d8b3e 100644 --- a/docs/mfc/reference/cmfcribboncategory-class.md +++ b/docs/mfc/reference/cmfcribboncategory-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCRibbonCategory [MFC], CMFCRibbonCategory", "CMFCRibbo --- # CMFCRibbonCategory Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCRibbonCategory` class implements a ribbon tab that contains a group of [ribbon panels](../../mfc/reference/cmfcribbonpanel-class.md). ## Syntax diff --git a/docs/mfc/reference/cmfcribboncheckbox-class.md b/docs/mfc/reference/cmfcribboncheckbox-class.md index dd35d634409..33cb715bbba 100644 --- a/docs/mfc/reference/cmfcribboncheckbox-class.md +++ b/docs/mfc/reference/cmfcribboncheckbox-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCRibbonCheckBox [MFC], CMFCRibbonCheckBox", "CMFCRibbo --- # CMFCRibbonCheckBox Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCRibbonCheckBox` class implements a check box that you can add to a ribbon panel, Quick Access Toolbar, or popup menu. ## Syntax diff --git a/docs/mfc/reference/cmfcribboncolorbutton-class.md b/docs/mfc/reference/cmfcribboncolorbutton-class.md index 29ea27176bb..a450dd22d7e 100644 --- a/docs/mfc/reference/cmfcribboncolorbutton-class.md +++ b/docs/mfc/reference/cmfcribboncolorbutton-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonColorButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonColorButton", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::CMFCRibbonColorButton", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::AddColorsGroup", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::EnableAutomaticButton", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::EnableOtherButton", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::GetAutomaticColor", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::GetColor", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::GetColorBoxSize", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::GetColumns", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::GetHighlightedColor", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::RemoveAllColorGroups", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::SetColor", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::SetColorBoxSize", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::SetColorName", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::SetColumns", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::SetDocumentColors", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::SetPalette", "AFXRIBBONCOLORBUTTON/CMFCRibbonColorButton::UpdateColor"] helpviewer_keywords: ["CMFCRibbonColorButton [MFC], CMFCRibbonColorButton", "CMFCRibbonColorButton [MFC], AddColorsGroup", "CMFCRibbonColorButton [MFC], EnableAutomaticButton", "CMFCRibbonColorButton [MFC], EnableOtherButton", "CMFCRibbonColorButton [MFC], GetAutomaticColor", "CMFCRibbonColorButton [MFC], GetColor", "CMFCRibbonColorButton [MFC], GetColorBoxSize", "CMFCRibbonColorButton [MFC], GetColumns", "CMFCRibbonColorButton [MFC], GetHighlightedColor", "CMFCRibbonColorButton [MFC], RemoveAllColorGroups", "CMFCRibbonColorButton [MFC], SetColor", "CMFCRibbonColorButton [MFC], SetColorBoxSize", "CMFCRibbonColorButton [MFC], SetColorName", "CMFCRibbonColorButton [MFC], SetColumns", "CMFCRibbonColorButton [MFC], SetDocumentColors", "CMFCRibbonColorButton [MFC], SetPalette", "CMFCRibbonColorButton [MFC], UpdateColor"] -ms.assetid: 6b4b4ee3-8cc0-41b4-a4eb-93e8847008e1 --- # CMFCRibbonColorButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCRibbonColorButton` class implements a color button that you can add to a ribbon bar. The ribbon color button displays a drop-down menu that contains one or more color palettes. ## Syntax diff --git a/docs/mfc/reference/cmfcribboncombobox-class.md b/docs/mfc/reference/cmfcribboncombobox-class.md index 8c68550f07e..39b79bd3263 100644 --- a/docs/mfc/reference/cmfcribboncombobox-class.md +++ b/docs/mfc/reference/cmfcribboncombobox-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCRibbonComboBox [MFC], CMFCRibbonComboBox", "CMFCRibbo --- # CMFCRibbonComboBox Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCRibbonComboBox` class implements a combo box control that you can add to a ribbon bar, a ribbon panel, or a ribbon popup menu. ## Syntax From ce3944cff421760c7a66f8de66bc8df5d10488e6 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 20 Feb 2026 11:02:58 -0800 Subject: [PATCH 305/619] Batch 8: update files --- docs/mfc/reference/cmfcribboncontextcaption-class.md | 4 +++- docs/mfc/reference/cmfcribboncustomizedialog-class.md | 4 +++- docs/mfc/reference/cmfcribboncustomizepropertypage-class.md | 4 +++- docs/mfc/reference/cmfcribbonedit-class.md | 4 +++- docs/mfc/reference/cmfcribbonfontcombobox-class.md | 3 +++ docs/mfc/reference/cmfcribbongallery-class.md | 4 +++- docs/mfc/reference/cmfcribbongallerymenubutton-class.md | 4 +++- docs/mfc/reference/cmfcribbonlabel-class.md | 4 +++- docs/mfc/reference/cmfcribbonlinkctrl-class.md | 4 +++- docs/mfc/reference/cmfcribbonmainpanel-class.md | 4 +++- docs/mfc/reference/cmfcribbonminitoolbar-class.md | 4 +++- docs/mfc/reference/cmfcribbonpanel-class.md | 4 +++- docs/mfc/reference/cmfcribbonprogressbar-class.md | 4 +++- .../cmfcribbonquickaccesstoolbardefaultstate-class.md | 4 +++- docs/mfc/reference/cmfcribbonseparator-class.md | 4 +++- docs/mfc/reference/cmfcribbonslider-class.md | 4 +++- docs/mfc/reference/cmfcribbonstatusbar-class.md | 4 +++- docs/mfc/reference/cmfcribbonstatusbarpane-class.md | 4 +++- docs/mfc/reference/cmfcribbonundobutton-class.md | 4 +++- docs/mfc/reference/cmfcshelllistctrl-class.md | 4 +++- docs/mfc/reference/cmfcshelltreectrl-class.md | 4 +++- docs/mfc/reference/cmfcspinbuttonctrl-class.md | 4 +++- docs/mfc/reference/cmfcstandardcolorspropertypage-class.md | 4 +++- docs/mfc/reference/cmfcstatusbar-class.md | 4 +++- docs/mfc/reference/cmfctabctrl-class.md | 3 +++ docs/mfc/reference/cmfctabdroptarget-class.md | 4 +++- docs/mfc/reference/cmfctabtooltipinfo-structure.md | 4 +++- docs/mfc/reference/cmfctaskspane-class.md | 3 +++ docs/mfc/reference/cmfctaskspanetask-class.md | 4 +++- docs/mfc/reference/cmfctaskspanetaskgroup-class.md | 4 +++- docs/mfc/reference/cmfctoolbar-class.md | 3 +++ docs/mfc/reference/cmfctoolbarbutton-class.md | 4 +++- docs/mfc/reference/cmfctoolbarcomboboxbutton-class.md | 4 +++- docs/mfc/reference/cmfctoolbarcomboboxedit-class.md | 4 +++- docs/mfc/reference/cmfctoolbardatetimectrl-class.md | 4 +++- docs/mfc/reference/cmfctoolbareditboxbutton-class.md | 4 +++- docs/mfc/reference/cmfctoolbarfontcombobox-class.md | 4 +++- docs/mfc/reference/cmfctoolbarfontsizecombobox-class.md | 4 +++- docs/mfc/reference/cmfctoolbarimages-class.md | 4 +++- docs/mfc/reference/cmfctoolbarinfo-class.md | 4 +++- docs/mfc/reference/cmfctoolbarmenubutton-class.md | 4 +++- docs/mfc/reference/cmfctoolbarscustomizedialog-class.md | 4 +++- docs/mfc/reference/cmfctooltipctrl-class.md | 3 +++ docs/mfc/reference/cmfctooltipinfo-class.md | 4 +++- docs/mfc/reference/cmfcvisualmanager-class.md | 4 +++- docs/mfc/reference/cmfcvisualmanageroffice2003-class.md | 3 +++ docs/mfc/reference/cmfcvisualmanageroffice2007-class.md | 4 +++- docs/mfc/reference/cmfcvisualmanagerofficexp-class.md | 4 +++- docs/mfc/reference/cmfcvisualmanagervs2005-class.md | 4 +++- docs/mfc/reference/cmfcvisualmanagerwindows-class.md | 4 +++- docs/mfc/reference/cmfcvisualmanagerwindows7-class.md | 4 +++- docs/mfc/reference/cmfcwindowsmanagerdialog-class.md | 4 +++- docs/mfc/reference/cminiframewnd-class.md | 4 +++- docs/mfc/reference/cmonikerfile-class.md | 4 +++- docs/mfc/reference/cmonthcalctrl-class.md | 3 +++ docs/mfc/reference/cmousemanager-class.md | 3 +++ docs/mfc/reference/cmultidoctemplate-class.md | 4 +++- docs/mfc/reference/cmultilock-class.md | 4 +++- docs/mfc/reference/cmultipagedhtmldialog-class.md | 4 +++- docs/mfc/reference/cmultipaneframewnd-class.md | 4 +++- docs/mfc/reference/cmutex-class.md | 4 +++- docs/mfc/reference/cnetaddressctrl-class.md | 4 +++- docs/mfc/reference/cnotsupportedexception-class.md | 4 +++- docs/mfc/reference/cobarray-class.md | 3 +++ docs/mfc/reference/cobject-class.md | 3 +++ docs/mfc/reference/coblist-class.md | 3 +++ docs/mfc/reference/coccmanager-class.md | 4 +++- docs/mfc/reference/codbcfieldinfo-structure.md | 4 +++- docs/mfc/reference/colebusydialog-class.md | 4 +++- docs/mfc/reference/colechangeicondialog-class.md | 4 +++- docs/mfc/reference/colechangesourcedialog-class.md | 4 +++- docs/mfc/reference/coleclientitem-class.md | 3 +++ docs/mfc/reference/colecmdui-class.md | 4 +++- docs/mfc/reference/colecontrol-class.md | 4 +++- docs/mfc/reference/colecontrolcontainer-class.md | 4 +++- docs/mfc/reference/colecontrolmodule-class.md | 4 +++- docs/mfc/reference/colecontrolsite-class.md | 3 +++ docs/mfc/reference/coleconvertdialog-class.md | 4 +++- docs/mfc/reference/colecurrency-class.md | 3 +++ docs/mfc/reference/coledataobject-class.md | 4 +++- docs/mfc/reference/coledatasource-class.md | 4 +++- docs/mfc/reference/coledbrecordview-class.md | 4 +++- docs/mfc/reference/coledialog-class.md | 4 +++- docs/mfc/reference/coledispatchdriver-class.md | 4 +++- docs/mfc/reference/coledispatchexception-class.md | 4 +++- docs/mfc/reference/coledocobjectitem-class.md | 4 +++- docs/mfc/reference/coledocument-class.md | 3 +++ docs/mfc/reference/coledropsource-class.md | 4 +++- docs/mfc/reference/coledroptarget-class.md | 4 +++- docs/mfc/reference/coleexception-class.md | 4 +++- docs/mfc/reference/coleinsertdialog-class.md | 4 +++- docs/mfc/reference/coleipframewnd-class.md | 4 +++- docs/mfc/reference/coleipframewndex-class.md | 3 +++ docs/mfc/reference/colelinkingdoc-class.md | 4 +++- docs/mfc/reference/colelinksdialog-class.md | 4 +++- docs/mfc/reference/colemessagefilter-class.md | 4 +++- docs/mfc/reference/coleobjectfactory-class.md | 4 +++- docs/mfc/reference/colepastespecialdialog-class.md | 4 +++- docs/mfc/reference/colepropertiesdialog-class.md | 4 +++- docs/mfc/reference/colepropertypage-class.md | 4 +++- 100 files changed, 300 insertions(+), 84 deletions(-) diff --git a/docs/mfc/reference/cmfcribboncontextcaption-class.md b/docs/mfc/reference/cmfcribboncontextcaption-class.md index ce8c6bd89a9..a066c0981fd 100644 --- a/docs/mfc/reference/cmfcribboncontextcaption-class.md +++ b/docs/mfc/reference/cmfcribboncontextcaption-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonContextCaption Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonContextCaption", "AFXRIBBONBAR/CMFCRibbonContextCaption", "AFXRIBBONBAR/CMFCRibbonContextCaption::GetColor", "AFXRIBBONBAR/CMFCRibbonContextCaption::GetRightTabX"] helpviewer_keywords: ["CMFCRibbonContextCaption [MFC], GetColor", "CMFCRibbonContextCaption [MFC], GetRightTabX"] -ms.assetid: cce2c0a2-8370-4266-997e-f8d0eeb3d616 --- # CMFCRibbonContextCaption Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a colored caption that appears at the top of a ribbon category or a context category. ## Syntax diff --git a/docs/mfc/reference/cmfcribboncustomizedialog-class.md b/docs/mfc/reference/cmfcribboncustomizedialog-class.md index f465c917d41..dde0bf3da9d 100644 --- a/docs/mfc/reference/cmfcribboncustomizedialog-class.md +++ b/docs/mfc/reference/cmfcribboncustomizedialog-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonCustomizeDialog Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonCustomizeDialog", "AFXRIBBONCUSTOMIZEDIALOG/CMFCRibbonCustomizeDialog", "AFXRIBBONCUSTOMIZEDIALOG/CMFCRibbonCustomizeDialog::CMFCRibbonCustomizeDialog"] helpviewer_keywords: ["CMFCRibbonCustomizeDialog [MFC], CMFCRibbonCustomizeDialog"] -ms.assetid: ce67de7f-5eaa-4c75-9b94-f290f36df073 --- # CMFCRibbonCustomizeDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Displays the ribbon **Customize** page. ## Syntax diff --git a/docs/mfc/reference/cmfcribboncustomizepropertypage-class.md b/docs/mfc/reference/cmfcribboncustomizepropertypage-class.md index 1580c5a1aa3..47791413a83 100644 --- a/docs/mfc/reference/cmfcribboncustomizepropertypage-class.md +++ b/docs/mfc/reference/cmfcribboncustomizepropertypage-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonCustomizePropertyPage Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonCustomizePropertyPage", "AFXRIBBONCUSTOMIZEDIALOG/CMFCRibbonCustomizePropertyPage", "AFXRIBBONCUSTOMIZEDIALOG/CMFCRibbonCustomizePropertyPage::CMFCRibbonCustomizePropertyPage", "AFXRIBBONCUSTOMIZEDIALOG/CMFCRibbonCustomizePropertyPage::AddCustomCategory", "AFXRIBBONCUSTOMIZEDIALOG/CMFCRibbonCustomizePropertyPage::OnOK"] helpviewer_keywords: ["CMFCRibbonCustomizePropertyPage [MFC], CMFCRibbonCustomizePropertyPage", "CMFCRibbonCustomizePropertyPage [MFC], AddCustomCategory", "CMFCRibbonCustomizePropertyPage [MFC], OnOK"] -ms.assetid: ea32a99a-dfbe-401e-8975-aa191552532f --- # CMFCRibbonCustomizePropertyPage Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a custom page for the **Customize** dialog box in Ribbon-based applications. ## Syntax diff --git a/docs/mfc/reference/cmfcribbonedit-class.md b/docs/mfc/reference/cmfcribbonedit-class.md index d27304b45d2..6e6bd2a3279 100644 --- a/docs/mfc/reference/cmfcribbonedit-class.md +++ b/docs/mfc/reference/cmfcribbonedit-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonEdit Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonEdit", "AFXRIBBONEDIT/CMFCRibbonEdit", "AFXRIBBONEDIT/CMFCRibbonEdit::CMFCRibbonEdit", "AFXRIBBONEDIT/CMFCRibbonEdit::CanBeStretched", "AFXRIBBONEDIT/CMFCRibbonEdit::CopyFrom", "AFXRIBBONEDIT/CMFCRibbonEdit::CreateEdit", "AFXRIBBONEDIT/CMFCRibbonEdit::DestroyCtrl", "AFXRIBBONEDIT/CMFCRibbonEdit::DropDownList", "AFXRIBBONEDIT/CMFCRibbonEdit::EnableSpinButtons", "AFXRIBBONEDIT/CMFCRibbonEdit::GetCompactSize", "AFXRIBBONEDIT/CMFCRibbonEdit::GetEditText", "AFXRIBBONEDIT/CMFCRibbonEdit::GetIntermediateSize", "AFXRIBBONEDIT/CMFCRibbonEdit::GetTextAlign", "AFXRIBBONEDIT/CMFCRibbonEdit::GetWidth", "AFXRIBBONEDIT/CMFCRibbonEdit::HasCompactMode", "AFXRIBBONEDIT/CMFCRibbonEdit::HasFocus", "AFXRIBBONEDIT/CMFCRibbonEdit::HasLargeMode", "AFXRIBBONEDIT/CMFCRibbonEdit::HasSpinButtons", "AFXRIBBONEDIT/CMFCRibbonEdit::IsHighlighted", "AFXRIBBONEDIT/CMFCRibbonEdit::OnAfterChangeRect", "AFXRIBBONEDIT/CMFCRibbonEdit::OnDraw", "AFXRIBBONEDIT/CMFCRibbonEdit::OnDrawLabelAndImage", "AFXRIBBONEDIT/CMFCRibbonEdit::OnDrawOnList", "AFXRIBBONEDIT/CMFCRibbonEdit::OnEnable", "AFXRIBBONEDIT/CMFCRibbonEdit::OnHighlight", "AFXRIBBONEDIT/CMFCRibbonEdit::OnKey", "AFXRIBBONEDIT/CMFCRibbonEdit::OnLButtonDown", "AFXRIBBONEDIT/CMFCRibbonEdit::OnLButtonUp", "AFXRIBBONEDIT/CMFCRibbonEdit::OnRTLChanged", "AFXRIBBONEDIT/CMFCRibbonEdit::OnShow", "AFXRIBBONEDIT/CMFCRibbonEdit::Redraw", "AFXRIBBONEDIT/CMFCRibbonEdit::SetACCData", "AFXRIBBONEDIT/CMFCRibbonEdit::SetEditText", "AFXRIBBONEDIT/CMFCRibbonEdit::SetTextAlign", "AFXRIBBONEDIT/CMFCRibbonEdit::SetWidth"] helpviewer_keywords: ["CMFCRibbonEdit [MFC], CMFCRibbonEdit", "CMFCRibbonEdit [MFC], CanBeStretched", "CMFCRibbonEdit [MFC], CMFCRibbonEdit", "CMFCRibbonEdit [MFC], CopyFrom", "CMFCRibbonEdit [MFC], CreateEdit", "CMFCRibbonEdit [MFC], DestroyCtrl", "CMFCRibbonEdit [MFC], DropDownList", "CMFCRibbonEdit [MFC], EnableSpinButtons", "CMFCRibbonEdit [MFC], GetCompactSize", "CMFCRibbonEdit [MFC], GetEditText", "CMFCRibbonEdit [MFC], GetIntermediateSize", "CMFCRibbonEdit [MFC], GetTextAlign", "CMFCRibbonEdit [MFC], GetWidth", "CMFCRibbonEdit [MFC], HasCompactMode", "CMFCRibbonEdit [MFC], HasFocus", "CMFCRibbonEdit [MFC], HasLargeMode", "CMFCRibbonEdit [MFC], HasSpinButtons", "CMFCRibbonEdit [MFC], IsHighlighted", "CMFCRibbonEdit [MFC], OnAfterChangeRect", "CMFCRibbonEdit [MFC], OnDraw", "CMFCRibbonEdit [MFC], OnDrawLabelAndImage", "CMFCRibbonEdit [MFC], OnDrawOnList", "CMFCRibbonEdit [MFC], OnEnable", "CMFCRibbonEdit [MFC], OnHighlight", "CMFCRibbonEdit [MFC], OnKey", "CMFCRibbonEdit [MFC], OnLButtonDown", "CMFCRibbonEdit [MFC], OnLButtonUp", "CMFCRibbonEdit [MFC], OnRTLChanged", "CMFCRibbonEdit [MFC], OnShow", "CMFCRibbonEdit [MFC], Redraw", "CMFCRibbonEdit [MFC], SetACCData", "CMFCRibbonEdit [MFC], SetEditText", "CMFCRibbonEdit [MFC], SetTextAlign", "CMFCRibbonEdit [MFC], SetWidth"] -ms.assetid: 9b85f1f2-446b-454e-9af9-104fdad8a897 --- # CMFCRibbonEdit Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements an edit control that is located on a ribbon bar. ## Syntax diff --git a/docs/mfc/reference/cmfcribbonfontcombobox-class.md b/docs/mfc/reference/cmfcribbonfontcombobox-class.md index e37df6dfc0c..ac472185acb 100644 --- a/docs/mfc/reference/cmfcribbonfontcombobox-class.md +++ b/docs/mfc/reference/cmfcribbonfontcombobox-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCRibbonFontComboBox [MFC], CMFCRibbonFontComboBox", "C --- # CMFCRibbonFontComboBox Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a combo box that contains a list of fonts. You place the combo box on a ribbon panel. ## Syntax diff --git a/docs/mfc/reference/cmfcribbongallery-class.md b/docs/mfc/reference/cmfcribbongallery-class.md index 38ba418a4ea..097256031c0 100644 --- a/docs/mfc/reference/cmfcribbongallery-class.md +++ b/docs/mfc/reference/cmfcribbongallery-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonGallery Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonGallery", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::CMFCRibbonGallery", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::AddGroup", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::AddSubItem", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::Clear", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::EnableMenuResize", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::EnableMenuSideBar", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::GetCompactSize", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::GetDroppedDown", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::GetGroupName", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::GetGroupOffset", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::GetIconsInRow", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::GetItemToolTip", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::GetLastSelectedItem", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::GetPaletteID", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::GetRegularSize", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::GetSelectedItem", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::HasMenu", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::IsButtonMode", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::IsMenuResizeEnabled", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::IsMenuResizeVertical", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::IsMenuSideBar", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::OnAfterChangeRect", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::OnDraw", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::OnEnable", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::OnRTLChanged", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::RedrawIcons", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::RemoveItemToolTips", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::SelectItem", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::SetACCData", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::SetButtonMode", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::SetGroupName", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::SetIconsInRow", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::SetItemToolTip", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::SetPalette", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::SetPaletteID", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGallery::OnDrawPaletteIcon"] helpviewer_keywords: ["CMFCRibbonGallery [MFC], CMFCRibbonGallery", "CMFCRibbonGallery [MFC], AddGroup", "CMFCRibbonGallery [MFC], AddSubItem", "CMFCRibbonGallery [MFC], Clear", "CMFCRibbonGallery [MFC], EnableMenuResize", "CMFCRibbonGallery [MFC], EnableMenuSideBar", "CMFCRibbonGallery [MFC], GetCompactSize", "CMFCRibbonGallery [MFC], GetDroppedDown", "CMFCRibbonGallery [MFC], GetGroupName", "CMFCRibbonGallery [MFC], GetGroupOffset", "CMFCRibbonGallery [MFC], GetIconsInRow", "CMFCRibbonGallery [MFC], GetItemToolTip", "CMFCRibbonGallery [MFC], GetLastSelectedItem", "CMFCRibbonGallery [MFC], GetPaletteID", "CMFCRibbonGallery [MFC], GetRegularSize", "CMFCRibbonGallery [MFC], GetSelectedItem", "CMFCRibbonGallery [MFC], HasMenu", "CMFCRibbonGallery [MFC], IsButtonMode", "CMFCRibbonGallery [MFC], IsMenuResizeEnabled", "CMFCRibbonGallery [MFC], IsMenuResizeVertical", "CMFCRibbonGallery [MFC], IsMenuSideBar", "CMFCRibbonGallery [MFC], OnAfterChangeRect", "CMFCRibbonGallery [MFC], OnDraw", "CMFCRibbonGallery [MFC], OnEnable", "CMFCRibbonGallery [MFC], OnRTLChanged", "CMFCRibbonGallery [MFC], RedrawIcons", "CMFCRibbonGallery [MFC], RemoveItemToolTips", "CMFCRibbonGallery [MFC], SelectItem", "CMFCRibbonGallery [MFC], SetACCData", "CMFCRibbonGallery [MFC], SetButtonMode", "CMFCRibbonGallery [MFC], SetGroupName", "CMFCRibbonGallery [MFC], SetIconsInRow", "CMFCRibbonGallery [MFC], SetItemToolTip", "CMFCRibbonGallery [MFC], SetPalette", "CMFCRibbonGallery [MFC], SetPaletteID", "CMFCRibbonGallery [MFC], OnDrawPaletteIcon"] -ms.assetid: 9734c9c9-981c-4b3f-8c59-264fd41811b4 --- # CMFCRibbonGallery Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements Office 2007-style ribbon galleries. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcribbongallerymenubutton-class.md b/docs/mfc/reference/cmfcribbongallerymenubutton-class.md index 675fee0b139..34d3bb3d3a3 100644 --- a/docs/mfc/reference/cmfcribbongallerymenubutton-class.md +++ b/docs/mfc/reference/cmfcribbongallerymenubutton-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonGalleryMenuButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonGalleryMenuButton", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGalleryMenuButton", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGalleryMenuButton::CMFCRibbonGalleryMenuButton", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGalleryMenuButton::CopyFrom", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGalleryMenuButton::CreatePopupMenu", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGalleryMenuButton::GetPalette", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGalleryMenuButton::HasButton", "AFXRIBBONPALETTEGALLERY/CMFCRibbonGalleryMenuButton::IsEmptyMenuAllowed"] helpviewer_keywords: ["CMFCRibbonGalleryMenuButton [MFC], CMFCRibbonGalleryMenuButton", "CMFCRibbonGalleryMenuButton [MFC], CopyFrom", "CMFCRibbonGalleryMenuButton [MFC], CreatePopupMenu", "CMFCRibbonGalleryMenuButton [MFC], GetPalette", "CMFCRibbonGalleryMenuButton [MFC], HasButton", "CMFCRibbonGalleryMenuButton [MFC], IsEmptyMenuAllowed"] -ms.assetid: 4d459d9b-8b1a-4371-92f6-dc4ce6cc42c8 --- # CMFCRibbonGalleryMenuButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a ribbon menu button that contains ribbon galleries. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcribbonlabel-class.md b/docs/mfc/reference/cmfcribbonlabel-class.md index 9b505588b3d..da97ff30008 100644 --- a/docs/mfc/reference/cmfcribbonlabel-class.md +++ b/docs/mfc/reference/cmfcribbonlabel-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonLabel Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonLabel", "AFXRIBBONLABEL/CMFCRibbonLabel", "AFXRIBBONLABEL/CMFCRibbonLabel::CMFCRibbonLabel", "AFXRIBBONLABEL/CMFCRibbonLabel::SetACCData"] helpviewer_keywords: ["CMFCRibbonLabel [MFC], CMFCRibbonLabel", "CMFCRibbonLabel [MFC], SetACCData"] -ms.assetid: 0346c891-83bf-4f20-b8a1-c84cf2aadced --- # CMFCRibbonLabel Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a non-clickable text label for a ribbon. ## Syntax diff --git a/docs/mfc/reference/cmfcribbonlinkctrl-class.md b/docs/mfc/reference/cmfcribbonlinkctrl-class.md index 1eaa093ba6f..6ac99272c06 100644 --- a/docs/mfc/reference/cmfcribbonlinkctrl-class.md +++ b/docs/mfc/reference/cmfcribbonlinkctrl-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonLinkCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonLinkCtrl", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl::CMFCRibbonLinkCtrl", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl::CopyFrom", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl::GetCompactSize", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl::GetLink", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl::GetRegularSize", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl::GetToolTipText", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl::IsDrawTooltipImage", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl::OnDraw", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl::OnDrawMenuImage", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl::OnMouseMove", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl::OnSetIcon", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl::OpenLink", "AFXRIBBONLINKCTRL/CMFCRibbonLinkCtrl::SetLink"] helpviewer_keywords: ["CMFCRibbonLinkCtrl [MFC], CMFCRibbonLinkCtrl", "CMFCRibbonLinkCtrl [MFC], CopyFrom", "CMFCRibbonLinkCtrl [MFC], GetCompactSize", "CMFCRibbonLinkCtrl [MFC], GetLink", "CMFCRibbonLinkCtrl [MFC], GetRegularSize", "CMFCRibbonLinkCtrl [MFC], GetToolTipText", "CMFCRibbonLinkCtrl [MFC], IsDrawTooltipImage", "CMFCRibbonLinkCtrl [MFC], OnDraw", "CMFCRibbonLinkCtrl [MFC], OnDrawMenuImage", "CMFCRibbonLinkCtrl [MFC], OnMouseMove", "CMFCRibbonLinkCtrl [MFC], OnSetIcon", "CMFCRibbonLinkCtrl [MFC], OpenLink", "CMFCRibbonLinkCtrl [MFC], SetLink"] -ms.assetid: 77ae1941-e0ab-4a9d-911e-1752d34c079b --- # CMFCRibbonLinkCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a hyperlink that is positioned on a ribbon. The hyperlink opens a Web page when you click it. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcribbonmainpanel-class.md b/docs/mfc/reference/cmfcribbonmainpanel-class.md index 622b1ecf24f..c97388bfaff 100644 --- a/docs/mfc/reference/cmfcribbonmainpanel-class.md +++ b/docs/mfc/reference/cmfcribbonmainpanel-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonMainPanel Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonMainPanel", "AFXRIBBONMAINPANEL/CMFCRibbonMainPanel", "AFXRIBBONMAINPANEL/CMFCRibbonMainPanel::Add", "AFXRIBBONMAINPANEL/CMFCRibbonMainPanel::AddRecentFilesList", "AFXRIBBONMAINPANEL/CMFCRibbonMainPanel::AddToBottom", "AFXRIBBONMAINPANEL/CMFCRibbonMainPanel::AddToRight", "AFXRIBBONMAINPANEL/CMFCRibbonMainPanel::GetCommandsFrame"] helpviewer_keywords: ["CMFCRibbonMainPanel [MFC], Add", "CMFCRibbonMainPanel [MFC], AddRecentFilesList", "CMFCRibbonMainPanel [MFC], AddToBottom", "CMFCRibbonMainPanel [MFC], AddToRight", "CMFCRibbonMainPanel [MFC], GetCommandsFrame"] -ms.assetid: 1af78798-5e75-4365-9c81-a54aa5679602 --- # CMFCRibbonMainPanel Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a ribbon panel that displays when you click the [CMFCRibbonApplicationButton](../../mfc/reference/cmfcribbonapplicationbutton-class.md). ## Syntax diff --git a/docs/mfc/reference/cmfcribbonminitoolbar-class.md b/docs/mfc/reference/cmfcribbonminitoolbar-class.md index 2cde2d313e5..07b6def8703 100644 --- a/docs/mfc/reference/cmfcribbonminitoolbar-class.md +++ b/docs/mfc/reference/cmfcribbonminitoolbar-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonMiniToolBar Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonMiniToolBar", "AFXRIBBONMINITOOLBAR/CMFCRibbonMiniToolBar", "AFXRIBBONMINITOOLBAR/CMFCRibbonMiniToolBar::IsContextMenuMode", "AFXRIBBONMINITOOLBAR/CMFCRibbonMiniToolBar::IsRibbonMiniToolBar", "AFXRIBBONMINITOOLBAR/CMFCRibbonMiniToolBar::SetCommands", "AFXRIBBONMINITOOLBAR/CMFCRibbonMiniToolBar::Show", "AFXRIBBONMINITOOLBAR/CMFCRibbonMiniToolBar::ShowWithContextMenu"] helpviewer_keywords: ["CMFCRibbonMiniToolBar [MFC], IsContextMenuMode", "CMFCRibbonMiniToolBar [MFC], IsRibbonMiniToolBar", "CMFCRibbonMiniToolBar [MFC], SetCommands", "CMFCRibbonMiniToolBar [MFC], Show", "CMFCRibbonMiniToolBar [MFC], ShowWithContextMenu"] -ms.assetid: 7017e963-aeaf-4fe9-b540-e15a7ed41e94 --- # CMFCRibbonMiniToolBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a contextual popup toolbar. ## Syntax diff --git a/docs/mfc/reference/cmfcribbonpanel-class.md b/docs/mfc/reference/cmfcribbonpanel-class.md index 2a81fe3a7a0..bbacccf348a 100644 --- a/docs/mfc/reference/cmfcribbonpanel-class.md +++ b/docs/mfc/reference/cmfcribbonpanel-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonPanel Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonPanel", "AFXRIBBONPANEL/CMFCRibbonPanel", "AFXRIBBONPANEL/CMFCRibbonPanel::CMFCRibbonPanel", "AFXRIBBONPANEL/CMFCRibbonPanel::Add", "AFXRIBBONPANEL/CMFCRibbonPanel::AddSeparator", "AFXRIBBONPANEL/CMFCRibbonPanel::AddToolBar", "AFXRIBBONPANEL/CMFCRibbonPanel::FindByData", "AFXRIBBONPANEL/CMFCRibbonPanel::FindByID", "AFXRIBBONPANEL/CMFCRibbonPanel::GetCaptionHeight", "AFXRIBBONPANEL/CMFCRibbonPanel::GetCount", "AFXRIBBONPANEL/CMFCRibbonPanel::GetData", "AFXRIBBONPANEL/CMFCRibbonPanel::GetDefaultButton", "AFXRIBBONPANEL/CMFCRibbonPanel::GetDroppedDown", "AFXRIBBONPANEL/CMFCRibbonPanel::GetElement", "AFXRIBBONPANEL/CMFCRibbonPanel::GetElements", "AFXRIBBONPANEL/CMFCRibbonPanel::GetElementsByID", "AFXRIBBONPANEL/CMFCRibbonPanel::GetFocused", "AFXRIBBONPANEL/CMFCRibbonPanel::GetGalleryRect", "AFXRIBBONPANEL/CMFCRibbonPanel::GetHighlighted", "AFXRIBBONPANEL/CMFCRibbonPanel::GetIndex", "AFXRIBBONPANEL/CMFCRibbonPanel::GetItemIDsList", "AFXRIBBONPANEL/CMFCRibbonPanel::GetName", "AFXRIBBONPANEL/CMFCRibbonPanel::GetParentButton", "AFXRIBBONPANEL/CMFCRibbonPanel::GetParentCategory", "AFXRIBBONPANEL/CMFCRibbonPanel::GetParentMenuBar", "AFXRIBBONPANEL/CMFCRibbonPanel::GetPreferedMenuLocation", "AFXRIBBONPANEL/CMFCRibbonPanel::GetPressed", "AFXRIBBONPANEL/CMFCRibbonPanel::GetRect", "AFXRIBBONPANEL/CMFCRibbonPanel::GetVisibleElements", "AFXRIBBONPANEL/CMFCRibbonPanel::HasElement", "AFXRIBBONPANEL/CMFCRibbonPanel::HitTest", "AFXRIBBONPANEL/CMFCRibbonPanel::HitTestEx", "AFXRIBBONPANEL/CMFCRibbonPanel::Insert", "AFXRIBBONPANEL/CMFCRibbonPanel::InsertSeparator", "AFXRIBBONPANEL/CMFCRibbonPanel::IsCenterColumnVert", "AFXRIBBONPANEL/CMFCRibbonPanel::IsCollapsed", "AFXRIBBONPANEL/CMFCRibbonPanel::IsHighlighted", "AFXRIBBONPANEL/CMFCRibbonPanel::IsJustifyColumns", "AFXRIBBONPANEL/CMFCRibbonPanel::IsMainPanel", "AFXRIBBONPANEL/CMFCRibbonPanel::IsMenuMode", "AFXRIBBONPANEL/CMFCRibbonPanel::MakeGalleryItemVisible", "AFXRIBBONPANEL/CMFCRibbonPanel::OnKey", "AFXRIBBONPANEL/CMFCRibbonPanel::RecalcWidths", "AFXRIBBONPANEL/CMFCRibbonPanel::Remove", "AFXRIBBONPANEL/CMFCRibbonPanel::RemoveAll", "AFXRIBBONPANEL/CMFCRibbonPanel::Replace", "AFXRIBBONPANEL/CMFCRibbonPanel::ReplaceByID", "AFXRIBBONPANEL/CMFCRibbonPanel::SetCenterColumnVert", "AFXRIBBONPANEL/CMFCRibbonPanel::SetData", "AFXRIBBONPANEL/CMFCRibbonPanel::SetElementMenu", "AFXRIBBONPANEL/CMFCRibbonPanel::SetElementRTC", "AFXRIBBONPANEL/CMFCRibbonPanel::SetElementRTCByID", "AFXRIBBONPANEL/CMFCRibbonPanel::SetFocused", "AFXRIBBONPANEL/CMFCRibbonPanel::SetJustifyColumns", "AFXRIBBONPANEL/CMFCRibbonPanel::SetKeys", "AFXRIBBONPANEL/CMFCRibbonPanel::ShowPopup"] helpviewer_keywords: ["CMFCRibbonPanel [MFC], CMFCRibbonPanel", "CMFCRibbonPanel [MFC], Add", "CMFCRibbonPanel [MFC], AddSeparator", "CMFCRibbonPanel [MFC], AddToolBar", "CMFCRibbonPanel [MFC], FindByData", "CMFCRibbonPanel [MFC], FindByID", "CMFCRibbonPanel [MFC], GetCaptionHeight", "CMFCRibbonPanel [MFC], GetCount", "CMFCRibbonPanel [MFC], GetData", "CMFCRibbonPanel [MFC], GetDefaultButton", "CMFCRibbonPanel [MFC], GetDroppedDown", "CMFCRibbonPanel [MFC], GetElement", "CMFCRibbonPanel [MFC], GetElements", "CMFCRibbonPanel [MFC], GetElementsByID", "CMFCRibbonPanel [MFC], GetFocused", "CMFCRibbonPanel [MFC], GetGalleryRect", "CMFCRibbonPanel [MFC], GetHighlighted", "CMFCRibbonPanel [MFC], GetIndex", "CMFCRibbonPanel [MFC], GetItemIDsList", "CMFCRibbonPanel [MFC], GetName", "CMFCRibbonPanel [MFC], GetParentButton", "CMFCRibbonPanel [MFC], GetParentCategory", "CMFCRibbonPanel [MFC], GetParentMenuBar", "CMFCRibbonPanel [MFC], GetPreferedMenuLocation", "CMFCRibbonPanel [MFC], GetPressed", "CMFCRibbonPanel [MFC], GetRect", "CMFCRibbonPanel [MFC], GetVisibleElements", "CMFCRibbonPanel [MFC], HasElement", "CMFCRibbonPanel [MFC], HitTest", "CMFCRibbonPanel [MFC], HitTestEx", "CMFCRibbonPanel [MFC], Insert", "CMFCRibbonPanel [MFC], InsertSeparator", "CMFCRibbonPanel [MFC], IsCenterColumnVert", "CMFCRibbonPanel [MFC], IsCollapsed", "CMFCRibbonPanel [MFC], IsHighlighted", "CMFCRibbonPanel [MFC], IsJustifyColumns", "CMFCRibbonPanel [MFC], IsMainPanel", "CMFCRibbonPanel [MFC], IsMenuMode", "CMFCRibbonPanel [MFC], MakeGalleryItemVisible", "CMFCRibbonPanel [MFC], OnKey", "CMFCRibbonPanel [MFC], RecalcWidths", "CMFCRibbonPanel [MFC], Remove", "CMFCRibbonPanel [MFC], RemoveAll", "CMFCRibbonPanel [MFC], Replace", "CMFCRibbonPanel [MFC], ReplaceByID", "CMFCRibbonPanel [MFC], SetCenterColumnVert", "CMFCRibbonPanel [MFC], SetData", "CMFCRibbonPanel [MFC], SetElementMenu", "CMFCRibbonPanel [MFC], SetElementRTC", "CMFCRibbonPanel [MFC], SetElementRTCByID", "CMFCRibbonPanel [MFC], SetFocused", "CMFCRibbonPanel [MFC], SetJustifyColumns", "CMFCRibbonPanel [MFC], SetKeys", "CMFCRibbonPanel [MFC], ShowPopup"] -ms.assetid: 51d70749-1140-4386-b103-f14082049ba6 --- # CMFCRibbonPanel Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a panel that contains a set of ribbon elements. When the panel is drawn, it displays as many elements as possible, given the size of the panel. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcribbonprogressbar-class.md b/docs/mfc/reference/cmfcribbonprogressbar-class.md index 5155a822f97..67c5ff15ff7 100644 --- a/docs/mfc/reference/cmfcribbonprogressbar-class.md +++ b/docs/mfc/reference/cmfcribbonprogressbar-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonProgressBar Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonProgressBar", "AFXRIBBONPROGRESSBAR/CMFCRibbonProgressBar", "AFXRIBBONPROGRESSBAR/CMFCRibbonProgressBar::CMFCRibbonProgressBar", "AFXRIBBONPROGRESSBAR/CMFCRibbonProgressBar::GetPos", "AFXRIBBONPROGRESSBAR/CMFCRibbonProgressBar::GetRangeMax", "AFXRIBBONPROGRESSBAR/CMFCRibbonProgressBar::GetRangeMin", "AFXRIBBONPROGRESSBAR/CMFCRibbonProgressBar::GetRegularSize", "AFXRIBBONPROGRESSBAR/CMFCRibbonProgressBar::IsInfiniteMode", "AFXRIBBONPROGRESSBAR/CMFCRibbonProgressBar::OnDraw", "AFXRIBBONPROGRESSBAR/CMFCRibbonProgressBar::SetInfiniteMode", "AFXRIBBONPROGRESSBAR/CMFCRibbonProgressBar::SetPos", "AFXRIBBONPROGRESSBAR/CMFCRibbonProgressBar::SetRange"] helpviewer_keywords: ["CMFCRibbonProgressBar [MFC], CMFCRibbonProgressBar", "CMFCRibbonProgressBar [MFC], GetPos", "CMFCRibbonProgressBar [MFC], GetRangeMax", "CMFCRibbonProgressBar [MFC], GetRangeMin", "CMFCRibbonProgressBar [MFC], GetRegularSize", "CMFCRibbonProgressBar [MFC], IsInfiniteMode", "CMFCRibbonProgressBar [MFC], OnDraw", "CMFCRibbonProgressBar [MFC], SetInfiniteMode", "CMFCRibbonProgressBar [MFC], SetPos", "CMFCRibbonProgressBar [MFC], SetRange"] -ms.assetid: de3d9f2e-ed59-480e-aa7d-08a33ab36c67 --- # CMFCRibbonProgressBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a control that visually indicates the progress of a lengthy operation. ## Syntax diff --git a/docs/mfc/reference/cmfcribbonquickaccesstoolbardefaultstate-class.md b/docs/mfc/reference/cmfcribbonquickaccesstoolbardefaultstate-class.md index 7065867788b..0357f3a8f14 100644 --- a/docs/mfc/reference/cmfcribbonquickaccesstoolbardefaultstate-class.md +++ b/docs/mfc/reference/cmfcribbonquickaccesstoolbardefaultstate-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonQuickAccessToolBarDefaultState Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonQuickAccessToolBarDefaultState", "AFXRIBBONQUICKACCESSTOOLBAR/CMFCRibbonQuickAccessToolBarDefaultState", "AFXRIBBONQUICKACCESSTOOLBAR/CMFCRibbonQuickAccessToolBarDefaultState::CMFCRibbonQuickAccessToolBarDefaultState", "AFXRIBBONQUICKACCESSTOOLBAR/CMFCRibbonQuickAccessToolBarDefaultState::AddCommand", "AFXRIBBONQUICKACCESSTOOLBAR/CMFCRibbonQuickAccessToolBarDefaultState::CopyFrom", "AFXRIBBONQUICKACCESSTOOLBAR/CMFCRibbonQuickAccessToolBarDefaultState::RemoveAll"] helpviewer_keywords: ["CMFCRibbonQuickAccessToolBarDefaultState [MFC], CMFCRibbonQuickAccessToolBarDefaultState", "CMFCRibbonQuickAccessToolBarDefaultState [MFC], AddCommand", "CMFCRibbonQuickAccessToolBarDefaultState [MFC], CopyFrom", "CMFCRibbonQuickAccessToolBarDefaultState [MFC], RemoveAll"] -ms.assetid: eca99200-b87b-47ba-b2e8-2f3f2444b176 --- # `CMFCRibbonQuickAccessToolBarDefaultState` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A helper class that manages default state for the Quick Access Toolbar that is positioned on the ribbon bar ([`CMFCRibbonBar` Class](../../mfc/reference/cmfcribbonbar-class.md)). ## Syntax diff --git a/docs/mfc/reference/cmfcribbonseparator-class.md b/docs/mfc/reference/cmfcribbonseparator-class.md index 83e9ba528dc..e4839b50c9d 100644 --- a/docs/mfc/reference/cmfcribbonseparator-class.md +++ b/docs/mfc/reference/cmfcribbonseparator-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonSeparator Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonSeparator", "AFXBASERIBBONELEMENT/CMFCRibbonSeparator", "AFXBASERIBBONELEMENT/CMFCRibbonSeparator::CMFCRibbonSeparator", "AFXBASERIBBONELEMENT/CMFCRibbonSeparator::AddToListBox", "AFXBASERIBBONELEMENT/CMFCRibbonSeparator::CopyFrom", "AFXBASERIBBONELEMENT/CMFCRibbonSeparator::GetRegularSize", "AFXBASERIBBONELEMENT/CMFCRibbonSeparator::IsSeparator", "AFXBASERIBBONELEMENT/CMFCRibbonSeparator::IsTabStop", "AFXBASERIBBONELEMENT/CMFCRibbonSeparator::OnDraw", "AFXBASERIBBONELEMENT/CMFCRibbonSeparator::OnDrawOnList"] helpviewer_keywords: ["CMFCRibbonSeparator [MFC], CMFCRibbonSeparator", "CMFCRibbonSeparator [MFC], AddToListBox", "CMFCRibbonSeparator [MFC], CopyFrom", "CMFCRibbonSeparator [MFC], GetRegularSize", "CMFCRibbonSeparator [MFC], IsSeparator", "CMFCRibbonSeparator [MFC], IsTabStop", "CMFCRibbonSeparator [MFC], OnDraw", "CMFCRibbonSeparator [MFC], OnDrawOnList"] -ms.assetid: bedb1a53-cb07-4c3c-be12-698c5409e7cf --- # CMFCRibbonSeparator Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the ribbon separator. ## Syntax diff --git a/docs/mfc/reference/cmfcribbonslider-class.md b/docs/mfc/reference/cmfcribbonslider-class.md index d0930642854..52069775539 100644 --- a/docs/mfc/reference/cmfcribbonslider-class.md +++ b/docs/mfc/reference/cmfcribbonslider-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonSlider Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonSlider", "AFXRIBBONSLIDER/CMFCRibbonSlider", "AFXRIBBONSLIDER/CMFCRibbonSlider::CMFCRibbonSlider", "AFXRIBBONSLIDER/CMFCRibbonSlider::GetPos", "AFXRIBBONSLIDER/CMFCRibbonSlider::GetRangeMax", "AFXRIBBONSLIDER/CMFCRibbonSlider::GetRangeMin", "AFXRIBBONSLIDER/CMFCRibbonSlider::GetRegularSize", "AFXRIBBONSLIDER/CMFCRibbonSlider::GetZoomIncrement", "AFXRIBBONSLIDER/CMFCRibbonSlider::HasZoomButtons", "AFXRIBBONSLIDER/CMFCRibbonSlider::OnDraw", "AFXRIBBONSLIDER/CMFCRibbonSlider::SetPos", "AFXRIBBONSLIDER/CMFCRibbonSlider::SetRange", "AFXRIBBONSLIDER/CMFCRibbonSlider::SetZoomButtons", "AFXRIBBONSLIDER/CMFCRibbonSlider::SetZoomIncrement"] helpviewer_keywords: ["CMFCRibbonSlider [MFC], CMFCRibbonSlider", "CMFCRibbonSlider [MFC], GetPos", "CMFCRibbonSlider [MFC], GetRangeMax", "CMFCRibbonSlider [MFC], GetRangeMin", "CMFCRibbonSlider [MFC], GetRegularSize", "CMFCRibbonSlider [MFC], GetZoomIncrement", "CMFCRibbonSlider [MFC], HasZoomButtons", "CMFCRibbonSlider [MFC], OnDraw", "CMFCRibbonSlider [MFC], SetPos", "CMFCRibbonSlider [MFC], SetRange", "CMFCRibbonSlider [MFC], SetZoomButtons", "CMFCRibbonSlider [MFC], SetZoomIncrement"] -ms.assetid: 9351ac34-f234-4e42-91e2-763f1989c8ff --- # CMFCRibbonSlider Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCRibbonSlider` class implements a slider control that you can add to a ribbon bar or ribbon status bar. The ribbon slider control resembles the zoom sliders that appear in Office 2007 applications. ## Syntax diff --git a/docs/mfc/reference/cmfcribbonstatusbar-class.md b/docs/mfc/reference/cmfcribbonstatusbar-class.md index 1b142bb2694..0326624c77c 100644 --- a/docs/mfc/reference/cmfcribbonstatusbar-class.md +++ b/docs/mfc/reference/cmfcribbonstatusbar-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonStatusBar Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonStatusBar", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::AddDynamicElement", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::AddElement", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::AddExtendedElement", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::AddSeparator", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::Create", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::CreateEx", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::FindByID", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::FindElement", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::GetCount", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::GetElement", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::GetExCount", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::GetExElement", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::GetExtendedArea", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::GetSpace", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::IsBottomFrame", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::IsExtendedElement", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::IsInformationMode", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::RecalcLayout", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::RemoveAll", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::RemoveElement", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::SetInformation", "AFXRIBBONSTATUSBAR/CMFCRibbonStatusBar::OnDrawInformation"] helpviewer_keywords: ["CMFCRibbonStatusBar [MFC], AddDynamicElement", "CMFCRibbonStatusBar [MFC], AddElement", "CMFCRibbonStatusBar [MFC], AddExtendedElement", "CMFCRibbonStatusBar [MFC], AddSeparator", "CMFCRibbonStatusBar [MFC], Create", "CMFCRibbonStatusBar [MFC], CreateEx", "CMFCRibbonStatusBar [MFC], FindByID", "CMFCRibbonStatusBar [MFC], FindElement", "CMFCRibbonStatusBar [MFC], GetCount", "CMFCRibbonStatusBar [MFC], GetElement", "CMFCRibbonStatusBar [MFC], GetExCount", "CMFCRibbonStatusBar [MFC], GetExElement", "CMFCRibbonStatusBar [MFC], GetExtendedArea", "CMFCRibbonStatusBar [MFC], GetSpace", "CMFCRibbonStatusBar [MFC], IsBottomFrame", "CMFCRibbonStatusBar [MFC], IsExtendedElement", "CMFCRibbonStatusBar [MFC], IsInformationMode", "CMFCRibbonStatusBar [MFC], RecalcLayout", "CMFCRibbonStatusBar [MFC], RemoveAll", "CMFCRibbonStatusBar [MFC], RemoveElement", "CMFCRibbonStatusBar [MFC], SetInformation", "CMFCRibbonStatusBar [MFC], OnDrawInformation"] -ms.assetid: 921eb57f-3b40-49fa-a38c-3f2fb6dc2893 --- # CMFCRibbonStatusBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCRibbonStatusBar` class implements a status bar control that can display ribbon elements. ## Syntax diff --git a/docs/mfc/reference/cmfcribbonstatusbarpane-class.md b/docs/mfc/reference/cmfcribbonstatusbarpane-class.md index 8893c2f2649..7c7da6cf122 100644 --- a/docs/mfc/reference/cmfcribbonstatusbarpane-class.md +++ b/docs/mfc/reference/cmfcribbonstatusbarpane-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonStatusBarPane Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonStatusBarPane", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane::CMFCRibbonStatusBarPane", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane::GetAlmostLargeText", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane::GetTextAlign", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane::IsAnimation", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane::IsExtended", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane::OnDrawBorder", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane::OnFillBackground", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane::SetAlmostLargeText", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane::SetAnimationList", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane::SetTextAlign", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane::StartAnimation", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane::StopAnimation", "AFXRIBBONSTATUSBARPANE/CMFCRibbonStatusBarPane::OnFinishAnimation"] helpviewer_keywords: ["CMFCRibbonStatusBarPane [MFC], CMFCRibbonStatusBarPane", "CMFCRibbonStatusBarPane [MFC], GetAlmostLargeText", "CMFCRibbonStatusBarPane [MFC], GetTextAlign", "CMFCRibbonStatusBarPane [MFC], IsAnimation", "CMFCRibbonStatusBarPane [MFC], IsExtended", "CMFCRibbonStatusBarPane [MFC], OnDrawBorder", "CMFCRibbonStatusBarPane [MFC], OnFillBackground", "CMFCRibbonStatusBarPane [MFC], SetAlmostLargeText", "CMFCRibbonStatusBarPane [MFC], SetAnimationList", "CMFCRibbonStatusBarPane [MFC], SetTextAlign", "CMFCRibbonStatusBarPane [MFC], StartAnimation", "CMFCRibbonStatusBarPane [MFC], StopAnimation", "CMFCRibbonStatusBarPane [MFC], OnFinishAnimation"] -ms.assetid: 5d034c3c-ecca-4267-b88c-0f55a2884dd0 --- # CMFCRibbonStatusBarPane Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCRibbonStatusBarPane` class implements a ribbon element that you can add to a ribbon status bar. ## Syntax diff --git a/docs/mfc/reference/cmfcribbonundobutton-class.md b/docs/mfc/reference/cmfcribbonundobutton-class.md index 2cc70cab6a8..19f612a1c0a 100644 --- a/docs/mfc/reference/cmfcribbonundobutton-class.md +++ b/docs/mfc/reference/cmfcribbonundobutton-class.md @@ -4,10 +4,12 @@ title: "CMFCRibbonUndoButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCRibbonUndoButton", "AFXRIBBONUNDOBUTTON/CMFCRibbonUndoButton", "AFXRIBBONUNDOBUTTON/CMFCRibbonUndoButton::CMFCRibbonUndoButton", "AFXRIBBONUNDOBUTTON/CMFCRibbonUndoButton::AddUndoAction", "AFXRIBBONUNDOBUTTON/CMFCRibbonUndoButton::CleanUpUndoList", "AFXRIBBONUNDOBUTTON/CMFCRibbonUndoButton::GetActionNumber", "AFXRIBBONUNDOBUTTON/CMFCRibbonUndoButton::HasMenu"] helpviewer_keywords: ["CMFCRibbonUndoButton [MFC], CMFCRibbonUndoButton", "CMFCRibbonUndoButton [MFC], AddUndoAction", "CMFCRibbonUndoButton [MFC], CleanUpUndoList", "CMFCRibbonUndoButton [MFC], GetActionNumber", "CMFCRibbonUndoButton [MFC], HasMenu"] -ms.assetid: 5c42adf7-871d-4239-901e-47ae7fb816fc --- # CMFCRibbonUndoButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCRibbonUndoButton` class implements a drop-down list button that contains the most recent user commands. Users can select one or more of the most recent commands from the drop-down list to either redo or undo them. ## Syntax diff --git a/docs/mfc/reference/cmfcshelllistctrl-class.md b/docs/mfc/reference/cmfcshelllistctrl-class.md index a912243d295..40bda8b608f 100644 --- a/docs/mfc/reference/cmfcshelllistctrl-class.md +++ b/docs/mfc/reference/cmfcshelllistctrl-class.md @@ -4,10 +4,12 @@ title: "CMFCShellListCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CMFCShellListCtrl", "AFXSHELLLISTCTRL/CMFCShellListCtrl", "AFXSHELLLISTCTRL/CMFCShellListCtrl::DisplayFolder", "AFXSHELLLISTCTRL/CMFCShellListCtrl::DisplayParentFolder", "AFXSHELLLISTCTRL/CMFCShellListCtrl::EnableShellContextMenu", "AFXSHELLLISTCTRL/CMFCShellListCtrl::GetCurrentFolder", "AFXSHELLLISTCTRL/CMFCShellListCtrl::GetCurrentFolderName", "AFXSHELLLISTCTRL/CMFCShellListCtrl::GetCurrentItemIdList", "AFXSHELLLISTCTRL/CMFCShellListCtrl::GetCurrentShellFolder", "AFXSHELLLISTCTRL/CMFCShellListCtrl::GetItemPath", "AFXSHELLLISTCTRL/CMFCShellListCtrl::GetItemTypes", "AFXSHELLLISTCTRL/CMFCShellListCtrl::IsDesktop", "AFXSHELLLISTCTRL/CMFCShellListCtrl::OnCompareItems", "AFXSHELLLISTCTRL/CMFCShellListCtrl::OnFormatFileDate", "AFXSHELLLISTCTRL/CMFCShellListCtrl::OnFormatFileSize", "AFXSHELLLISTCTRL/CMFCShellListCtrl::OnGetItemIcon", "AFXSHELLLISTCTRL/CMFCShellListCtrl::OnGetItemText", "AFXSHELLLISTCTRL/CMFCShellListCtrl::OnSetColumns", "AFXSHELLLISTCTRL/CMFCShellListCtrl::Refresh", "AFXSHELLLISTCTRL/CMFCShellListCtrl::SetItemTypes"] helpviewer_keywords: ["CMFCShellListCtrl [MFC], DisplayFolder", "CMFCShellListCtrl [MFC], DisplayParentFolder", "CMFCShellListCtrl [MFC], EnableShellContextMenu", "CMFCShellListCtrl [MFC], GetCurrentFolder", "CMFCShellListCtrl [MFC], GetCurrentFolderName", "CMFCShellListCtrl [MFC], GetCurrentItemIdList", "CMFCShellListCtrl [MFC], GetCurrentShellFolder", "CMFCShellListCtrl [MFC], GetItemPath", "CMFCShellListCtrl [MFC], GetItemTypes", "CMFCShellListCtrl [MFC], IsDesktop", "CMFCShellListCtrl [MFC], OnCompareItems", "CMFCShellListCtrl [MFC], OnFormatFileDate", "CMFCShellListCtrl [MFC], OnFormatFileSize", "CMFCShellListCtrl [MFC], OnGetItemIcon", "CMFCShellListCtrl [MFC], OnGetItemText", "CMFCShellListCtrl [MFC], OnSetColumns", "CMFCShellListCtrl [MFC], Refresh", "CMFCShellListCtrl [MFC], SetItemTypes"] -ms.assetid: ad472958-5586-4c50-aadf-1844c30bf6e7 --- # CMFCShellListCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCShellListCtrl` class provides Windows list control functionality and expands it by including the ability to display a list of shell items. ## Syntax diff --git a/docs/mfc/reference/cmfcshelltreectrl-class.md b/docs/mfc/reference/cmfcshelltreectrl-class.md index 7dfa16e3951..1389dd1c38b 100644 --- a/docs/mfc/reference/cmfcshelltreectrl-class.md +++ b/docs/mfc/reference/cmfcshelltreectrl-class.md @@ -4,10 +4,12 @@ title: "CMFCShellTreeCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CMFCShellTreeCtrl", "AFXSHELLTREECTRL/CMFCShellTreeCtrl", "AFXSHELLTREECTRL/CMFCShellTreeCtrl::EnableShellContextMenu", "AFXSHELLTREECTRL/CMFCShellTreeCtrl::GetFlags", "AFXSHELLTREECTRL/CMFCShellTreeCtrl::GetItemPath", "AFXSHELLTREECTRL/CMFCShellTreeCtrl::GetRelatedList", "AFXSHELLTREECTRL/CMFCShellTreeCtrl::OnChildNotify", "AFXSHELLTREECTRL/CMFCShellTreeCtrl::OnGetItemIcon", "AFXSHELLTREECTRL/CMFCShellTreeCtrl::OnGetItemText", "AFXSHELLTREECTRL/CMFCShellTreeCtrl::Refresh", "AFXSHELLTREECTRL/CMFCShellTreeCtrl::SelectPath", "AFXSHELLTREECTRL/CMFCShellTreeCtrl::SetFlags", "AFXSHELLTREECTRL/CMFCShellTreeCtrl::SetRelatedList"] helpviewer_keywords: ["CMFCShellTreeCtrl [MFC], EnableShellContextMenu", "CMFCShellTreeCtrl [MFC], GetFlags", "CMFCShellTreeCtrl [MFC], GetItemPath", "CMFCShellTreeCtrl [MFC], GetRelatedList", "CMFCShellTreeCtrl [MFC], OnChildNotify", "CMFCShellTreeCtrl [MFC], OnGetItemIcon", "CMFCShellTreeCtrl [MFC], OnGetItemText", "CMFCShellTreeCtrl [MFC], Refresh", "CMFCShellTreeCtrl [MFC], SelectPath", "CMFCShellTreeCtrl [MFC], SetFlags", "CMFCShellTreeCtrl [MFC], SetRelatedList"] -ms.assetid: 3d1da715-9554-4ed7-968c-055c48146267 --- # CMFCShellTreeCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCShellTreeCtrl` class extends [CTreeCtrl Class](../../mfc/reference/ctreectrl-class.md) functionality by displaying a hierarchy of Shell items. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcspinbuttonctrl-class.md b/docs/mfc/reference/cmfcspinbuttonctrl-class.md index 4c0be4a5be5..ba101a0b26f 100644 --- a/docs/mfc/reference/cmfcspinbuttonctrl-class.md +++ b/docs/mfc/reference/cmfcspinbuttonctrl-class.md @@ -4,10 +4,12 @@ title: "CMFCSpinButtonCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CMFCSpinButtonCtrl", "AFXSPINBUTTONCTRL/CMFCSpinButtonCtrl", "AFXSPINBUTTONCTRL/CMFCSpinButtonCtrl::OnDraw"] helpviewer_keywords: ["CMFCSpinButtonCtrl [MFC], OnDraw"] -ms.assetid: 8773f259-4d3f-4bca-a71c-09e0c71bc843 --- # CMFCSpinButtonCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCSpinButtonCtrl` class supports a visual manager that draws a spin button control. ## Syntax diff --git a/docs/mfc/reference/cmfcstandardcolorspropertypage-class.md b/docs/mfc/reference/cmfcstandardcolorspropertypage-class.md index bfa687e415c..74a8259dd78 100644 --- a/docs/mfc/reference/cmfcstandardcolorspropertypage-class.md +++ b/docs/mfc/reference/cmfcstandardcolorspropertypage-class.md @@ -3,10 +3,12 @@ description: "Learn more about: CMFCStandardColorsPropertyPage Class" title: "CMFCStandardColorsPropertyPage Class" ms.date: "11/04/2016" helpviewer_keywords: ["CMFCStandardColorsPropertyPage class [MFC]"] -ms.assetid: b84b7cfb-bb24-4c65-804a-5b642cb64400 --- # CMFCStandardColorsPropertyPage Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a property page that users use to select standard colors in a color dialog box. ## Syntax diff --git a/docs/mfc/reference/cmfcstatusbar-class.md b/docs/mfc/reference/cmfcstatusbar-class.md index 066130cf342..0f7754ee2fb 100644 --- a/docs/mfc/reference/cmfcstatusbar-class.md +++ b/docs/mfc/reference/cmfcstatusbar-class.md @@ -4,10 +4,12 @@ title: "CMFCStatusBar Class" ms.date: "11/19/2018" f1_keywords: ["CMFCStatusBar", "AFXSTATUSBAR/CMFCStatusBar", "AFXSTATUSBAR/CMFCStatusBar::CalcFixedLayout", "AFXSTATUSBAR/CMFCStatusBar::CommandToIndex", "AFXSTATUSBAR/CMFCStatusBar::Create", "AFXSTATUSBAR/CMFCStatusBar::CreateEx", "AFXSTATUSBAR/CMFCStatusBar::DoesAllowDynInsertBefore", "AFXSTATUSBAR/CMFCStatusBar::EnablePaneDoubleClick", "AFXSTATUSBAR/CMFCStatusBar::EnablePaneProgressBar", "AFXSTATUSBAR/CMFCStatusBar::GetCount", "AFXSTATUSBAR/CMFCStatusBar::GetDrawExtendedArea", "AFXSTATUSBAR/CMFCStatusBar::GetExtendedArea", "AFXSTATUSBAR/CMFCStatusBar::GetItemID", "AFXSTATUSBAR/CMFCStatusBar::GetItemRect", "AFXSTATUSBAR/CMFCStatusBar::GetPaneInfo", "AFXSTATUSBAR/CMFCStatusBar::GetPaneProgress", "AFXSTATUSBAR/CMFCStatusBar::GetPaneStyle", "AFXSTATUSBAR/CMFCStatusBar::GetPaneText", "AFXSTATUSBAR/CMFCStatusBar::GetPaneWidth", "AFXSTATUSBAR/CMFCStatusBar::GetTipText", "AFXSTATUSBAR/CMFCStatusBar::InvalidatePaneContent", "AFXSTATUSBAR/CMFCStatusBar::PreCreateWindow", "AFXSTATUSBAR/CMFCStatusBar::SetDrawExtendedArea", "AFXSTATUSBAR/CMFCStatusBar::SetIndicators", "AFXSTATUSBAR/CMFCStatusBar::SetPaneAnimation", "AFXSTATUSBAR/CMFCStatusBar::SetPaneBackgroundColor", "AFXSTATUSBAR/CMFCStatusBar::SetPaneIcon", "AFXSTATUSBAR/CMFCStatusBar::SetPaneInfo", "AFXSTATUSBAR/CMFCStatusBar::SetPaneProgress", "AFXSTATUSBAR/CMFCStatusBar::SetPaneStyle", "AFXSTATUSBAR/CMFCStatusBar::SetPaneText", "AFXSTATUSBAR/CMFCStatusBar::SetPaneTextColor", "AFXSTATUSBAR/CMFCStatusBar::SetPaneWidth", "AFXSTATUSBAR/CMFCStatusBar::SetTipText", "AFXSTATUSBAR/CMFCStatusBar::OnDrawPane"] helpviewer_keywords: ["CMFCStatusBar [MFC], CalcFixedLayout", "CMFCStatusBar [MFC], CommandToIndex", "CMFCStatusBar [MFC], Create", "CMFCStatusBar [MFC], CreateEx", "CMFCStatusBar [MFC], DoesAllowDynInsertBefore", "CMFCStatusBar [MFC], EnablePaneDoubleClick", "CMFCStatusBar [MFC], EnablePaneProgressBar", "CMFCStatusBar [MFC], GetCount", "CMFCStatusBar [MFC], GetDrawExtendedArea", "CMFCStatusBar [MFC], GetExtendedArea", "CMFCStatusBar [MFC], GetItemID", "CMFCStatusBar [MFC], GetItemRect", "CMFCStatusBar [MFC], GetPaneInfo", "CMFCStatusBar [MFC], GetPaneProgress", "CMFCStatusBar [MFC], GetPaneStyle", "CMFCStatusBar [MFC], GetPaneText", "CMFCStatusBar [MFC], GetPaneWidth", "CMFCStatusBar [MFC], GetTipText", "CMFCStatusBar [MFC], InvalidatePaneContent", "CMFCStatusBar [MFC], PreCreateWindow", "CMFCStatusBar [MFC], SetDrawExtendedArea", "CMFCStatusBar [MFC], SetIndicators", "CMFCStatusBar [MFC], SetPaneAnimation", "CMFCStatusBar [MFC], SetPaneBackgroundColor", "CMFCStatusBar [MFC], SetPaneIcon", "CMFCStatusBar [MFC], SetPaneInfo", "CMFCStatusBar [MFC], SetPaneProgress", "CMFCStatusBar [MFC], SetPaneStyle", "CMFCStatusBar [MFC], SetPaneText", "CMFCStatusBar [MFC], SetPaneTextColor", "CMFCStatusBar [MFC], SetPaneWidth", "CMFCStatusBar [MFC], SetTipText", "CMFCStatusBar [MFC], OnDrawPane"] -ms.assetid: f2960d1d-f4ed-41e8-bd99-0382b2f8d88e --- # CMFCStatusBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCStatusBar` class implements a status bar similar to the `CStatusBar` class. However, the `CMFCStatusBar` class has features not offered by the `CStatusBar` class, such as the ability to display images, animations, and progress bars; and the ability to respond to mouse double-clicks. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfctabctrl-class.md b/docs/mfc/reference/cmfctabctrl-class.md index d59039a3592..1cc67d8362b 100644 --- a/docs/mfc/reference/cmfctabctrl-class.md +++ b/docs/mfc/reference/cmfctabctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCTabCtrl [MFC], ActivateMDITab", "CMFCTabCtrl [MFC], A --- # `CMFCTabCtrl` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCTabCtrl` class provides functionality for a tab control. The tab control displays a dockable window with flat or three-dimensional tabs at its top or bottom. The tabs can display text and an image and can change color when active. ## Syntax diff --git a/docs/mfc/reference/cmfctabdroptarget-class.md b/docs/mfc/reference/cmfctabdroptarget-class.md index 5d89adc8afd..23d80ad1a80 100644 --- a/docs/mfc/reference/cmfctabdroptarget-class.md +++ b/docs/mfc/reference/cmfctabdroptarget-class.md @@ -4,10 +4,12 @@ title: "CMFCTabDropTarget Class" ms.date: "11/04/2016" f1_keywords: ["CMFCTabDropTarget", "AFXBASETABCTRL/CMFCTabDropTarget", "AFXBASETABCTRL/CMFCTabDropTarget::OnDragEnter", "AFXBASETABCTRL/CMFCTabDropTarget::OnDragLeave", "AFXBASETABCTRL/CMFCTabDropTarget::OnDragOver", "AFXBASETABCTRL/CMFCTabDropTarget::OnDropEx", "AFXBASETABCTRL/CMFCTabDropTarget::Register"] helpviewer_keywords: ["CMFCTabDropTarget [MFC], OnDragEnter", "CMFCTabDropTarget [MFC], OnDragLeave", "CMFCTabDropTarget [MFC], OnDragOver", "CMFCTabDropTarget [MFC], OnDropEx", "CMFCTabDropTarget [MFC], Register"] -ms.assetid: 9777b7b6-10da-4c4b-b1d1-7ea795b0f1cb --- # CMFCTabDropTarget Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the communication mechanism between a tab control and the OLE libraries. ## Syntax diff --git a/docs/mfc/reference/cmfctabtooltipinfo-structure.md b/docs/mfc/reference/cmfctabtooltipinfo-structure.md index af9d6c82a9c..b83387bc247 100644 --- a/docs/mfc/reference/cmfctabtooltipinfo-structure.md +++ b/docs/mfc/reference/cmfctabtooltipinfo-structure.md @@ -4,10 +4,12 @@ title: "CMFCTabToolTipInfo Structure" ms.date: "11/04/2016" f1_keywords: ["CMFCTabToolTipInfo"] helpviewer_keywords: ["CMFCTabToolTipInfo struct"] -ms.assetid: 9c3b3fb9-1497-4d59-932b-0da9348dd5e2 --- # CMFCTabToolTipInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This structure provides information about the MDI tab that the user is hovering over. ## Syntax diff --git a/docs/mfc/reference/cmfctaskspane-class.md b/docs/mfc/reference/cmfctaskspane-class.md index 3f766743078..c45aa476a0f 100644 --- a/docs/mfc/reference/cmfctaskspane-class.md +++ b/docs/mfc/reference/cmfctaskspane-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCTasksPane [MFC], CMFCTasksPane", "CMFCTasksPane [MFC] --- # CMFCTasksPane Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. The `CMFCTasksPane` class implements a list of clickable items (tasks). diff --git a/docs/mfc/reference/cmfctaskspanetask-class.md b/docs/mfc/reference/cmfctaskspanetask-class.md index 215e27bed25..f11dfddd682 100644 --- a/docs/mfc/reference/cmfctaskspanetask-class.md +++ b/docs/mfc/reference/cmfctaskspanetask-class.md @@ -4,10 +4,12 @@ title: "CMFCTasksPaneTask Class" ms.date: "11/19/2018" f1_keywords: ["CMFCTasksPaneTask", "AFXTASKSPANE/CMFCTasksPaneTask", "AFXTASKSPANE/CMFCTasksPaneTask::CMFCTasksPaneTask", "AFXTASKSPANE/CMFCTasksPaneTask::SetACCData", "AFXTASKSPANE/CMFCTasksPaneTask::m_bAutoDestroyWindow", "AFXTASKSPANE/CMFCTasksPaneTask::m_bIsBold", "AFXTASKSPANE/CMFCTasksPaneTask::m_dwUserData", "AFXTASKSPANE/CMFCTasksPaneTask::m_hwndTask", "AFXTASKSPANE/CMFCTasksPaneTask::m_nIcon", "AFXTASKSPANE/CMFCTasksPaneTask::m_nWindowHeight", "AFXTASKSPANE/CMFCTasksPaneTask::m_pGroup", "AFXTASKSPANE/CMFCTasksPaneTask::m_rect", "AFXTASKSPANE/CMFCTasksPaneTask::m_strName", "AFXTASKSPANE/CMFCTasksPaneTask::m_uiCommandID"] helpviewer_keywords: ["CMFCTasksPaneTask [MFC], CMFCTasksPaneTask", "CMFCTasksPaneTask [MFC], SetACCData", "CMFCTasksPaneTask [MFC], m_bAutoDestroyWindow", "CMFCTasksPaneTask [MFC], m_bIsBold", "CMFCTasksPaneTask [MFC], m_dwUserData", "CMFCTasksPaneTask [MFC], m_hwndTask", "CMFCTasksPaneTask [MFC], m_nIcon", "CMFCTasksPaneTask [MFC], m_nWindowHeight", "CMFCTasksPaneTask [MFC], m_pGroup", "CMFCTasksPaneTask [MFC], m_rect", "CMFCTasksPaneTask [MFC], m_strName", "CMFCTasksPaneTask [MFC], m_uiCommandID"] -ms.assetid: c5a7513b-cd8f-4e2e-b16f-650e1fe30954 --- # CMFCTasksPaneTask Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCTasksPaneTask` class is a helper class that represents tasks for the task pane control ( [CMFCTasksPane](../../mfc/reference/cmfctaskspane-class.md)). The task object represents an item in the task group ( [CMFCTasksPaneTaskGroup](../../mfc/reference/cmfctaskspanetaskgroup-class.md)). Each task can have a command that the framework executes when a user clicks on the task and an icon that appears to the left of the task name. ## Syntax diff --git a/docs/mfc/reference/cmfctaskspanetaskgroup-class.md b/docs/mfc/reference/cmfctaskspanetaskgroup-class.md index c7f575c20a3..4db39770b60 100644 --- a/docs/mfc/reference/cmfctaskspanetaskgroup-class.md +++ b/docs/mfc/reference/cmfctaskspanetaskgroup-class.md @@ -4,10 +4,12 @@ title: "CMFCTasksPaneTaskGroup Class" ms.date: "11/19/2018" f1_keywords: ["CMFCTasksPaneTaskGroup", "AFXTASKSPANE/CMFCTasksPaneTaskGroup", "AFXTASKSPANE/CMFCTasksPaneTaskGroup::CMFCTasksPaneTaskGroup", "AFXTASKSPANE/CMFCTasksPaneTaskGroup::SetACCData", "AFXTASKSPANE/CMFCTasksPaneTaskGroup::m_bIsBottom", "AFXTASKSPANE/CMFCTasksPaneTaskGroup::m_bIsCollapsed", "AFXTASKSPANE/CMFCTasksPaneTaskGroup::m_bIsSpecial", "AFXTASKSPANE/CMFCTasksPaneTaskGroup::m_lstTasks", "AFXTASKSPANE/CMFCTasksPaneTaskGroup::m_rect", "AFXTASKSPANE/CMFCTasksPaneTaskGroup::m_rectGroup", "AFXTASKSPANE/CMFCTasksPaneTaskGroup::m_strName"] helpviewer_keywords: ["CMFCTasksPaneTaskGroup [MFC], CMFCTasksPaneTaskGroup", "CMFCTasksPaneTaskGroup [MFC], SetACCData", "CMFCTasksPaneTaskGroup [MFC], m_bIsBottom", "CMFCTasksPaneTaskGroup [MFC], m_bIsCollapsed", "CMFCTasksPaneTaskGroup [MFC], m_bIsSpecial", "CMFCTasksPaneTaskGroup [MFC], m_lstTasks", "CMFCTasksPaneTaskGroup [MFC], m_rect", "CMFCTasksPaneTaskGroup [MFC], m_rectGroup", "CMFCTasksPaneTaskGroup [MFC], m_strName"] -ms.assetid: 2111640b-a46e-4b27-b033-29e88632b86a --- # CMFCTasksPaneTaskGroup Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCTasksPaneTaskGroup` class is a helper class used by the [CMFCTasksPane](../../mfc/reference/cmfctaskspane-class.md) control. Objects of type `CMFCTasksPaneTaskGroup` represent a *task group*. The task group is a list of items that the framework displays in a separate box that has a collapse button. The box can have an optional caption (group name). If a group is collapsed, the list of tasks is not visible. ## Syntax diff --git a/docs/mfc/reference/cmfctoolbar-class.md b/docs/mfc/reference/cmfctoolbar-class.md index 9e9384ef1d5..a921bc1033d 100644 --- a/docs/mfc/reference/cmfctoolbar-class.md +++ b/docs/mfc/reference/cmfctoolbar-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCToolBar [MFC], AddBasicCommand", "CMFCToolBar [MFC], --- # `CMFCToolBar` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCToolBar` class resembles [`CToolBar` Class](../../mfc/reference/ctoolbar-class.md), but provides additional support for user interface features. These include flat toolbars, toolbars with hot images, large icons, pager buttons, locked toolbars, rebar controls, text under images, background images, and tabbed toolbars. The `CMFCToolBar` class also contains built-in support for user customization of toolbars and menus, drag-and-drop between toolbars and menus, combo box buttons, edit box buttons, color pickers, and roll-up buttons. For more detail, see the source code located in your Visual Studio installation, for example, `%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\atlmfc\src\mfc`. diff --git a/docs/mfc/reference/cmfctoolbarbutton-class.md b/docs/mfc/reference/cmfctoolbarbutton-class.md index dd3933b89bc..7c6d4005c6c 100644 --- a/docs/mfc/reference/cmfctoolbarbutton-class.md +++ b/docs/mfc/reference/cmfctoolbarbutton-class.md @@ -4,10 +4,12 @@ title: "CMFCToolBarButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCToolBarButton", "AFXTOOLBARBUTTON/CMFCToolBarButton", "AFXTOOLBARBUTTON/CMFCToolBarButton::CMFCToolBarButton", "AFXTOOLBARBUTTON/CMFCToolBarButton::CanBeDropped", "AFXTOOLBARBUTTON/CMFCToolBarButton::CanBeStored", "AFXTOOLBARBUTTON/CMFCToolBarButton::CanBeStretched", "AFXTOOLBARBUTTON/CMFCToolBarButton::CompareWith", "AFXTOOLBARBUTTON/CMFCToolBarButton::CopyFrom", "AFXTOOLBARBUTTON/CMFCToolBarButton::CreateFromOleData", "AFXTOOLBARBUTTON/CMFCToolBarButton::EnableWindow", "AFXTOOLBARBUTTON/CMFCToolBarButton::ExportToMenuButton", "AFXTOOLBARBUTTON/CMFCToolBarButton::GetClipboardFormat", "AFXTOOLBARBUTTON/CMFCToolBarButton::GetHwnd", "AFXTOOLBARBUTTON/CMFCToolBarButton::GetImage", "AFXTOOLBARBUTTON/CMFCToolBarButton::GetInvalidateRect", "AFXTOOLBARBUTTON/CMFCToolBarButton::GetParentWnd", "AFXTOOLBARBUTTON/CMFCToolBarButton::GetProtectedCommands", "AFXTOOLBARBUTTON/CMFCToolBarButton::GetTextSize", "AFXTOOLBARBUTTON/CMFCToolBarButton::HasFocus", "AFXTOOLBARBUTTON/CMFCToolBarButton::HaveHotBorder", "AFXTOOLBARBUTTON/CMFCToolBarButton::IsDrawImage", "AFXTOOLBARBUTTON/CMFCToolBarButton::IsDrawText", "AFXTOOLBARBUTTON/CMFCToolBarButton::IsDroppedDown", "AFXTOOLBARBUTTON/CMFCToolBarButton::IsEditable", "AFXTOOLBARBUTTON/CMFCToolBarButton::IsExtraSize", "AFXTOOLBARBUTTON/CMFCToolBarButton::IsFirstInGroup", "AFXTOOLBARBUTTON/CMFCToolBarButton::IsHidden", "AFXTOOLBARBUTTON/CMFCToolBarButton::IsHorizontal", "AFXTOOLBARBUTTON/CMFCToolBarButton::IsLastInGroup", "AFXTOOLBARBUTTON/CMFCToolBarButton::IsLocked", "AFXTOOLBARBUTTON/CMFCToolBarButton::IsOwnerOf", "AFXTOOLBARBUTTON/CMFCToolBarButton::IsVisible", "AFXTOOLBARBUTTON/CMFCToolBarButton::IsWindowVisible", "AFXTOOLBARBUTTON/CMFCToolBarButton::NotifyCommand", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnAddToCustomizePage", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnBeforeDrag", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnBeforeDrop", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnCalculateSize", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnCancelMode", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnChangeParentWnd", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnClick", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnClickUp", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnContextHelp", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnCtlColor", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnCustomizeMenu", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnDblClk", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnDraw", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnDrawOnCustomizeList", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnGetCustomToolTipText", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnGlobalFontsChanged", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnMove", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnShow", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnSize", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnToolHitTest", "AFXTOOLBARBUTTON/CMFCToolBarButton::OnUpdateToolTip", "AFXTOOLBARBUTTON/CMFCToolBarButton::PrepareDrag", "AFXTOOLBARBUTTON/CMFCToolBarButton::Rect", "AFXTOOLBARBUTTON/CMFCToolBarButton::ResetImageToDefault", "AFXTOOLBARBUTTON/CMFCToolBarButton::SaveBarState", "AFXTOOLBARBUTTON/CMFCToolBarButton::Serialize", "AFXTOOLBARBUTTON/CMFCToolBarButton::SetACCData", "AFXTOOLBARBUTTON/CMFCToolBarButton::SetClipboardFormatName", "AFXTOOLBARBUTTON/CMFCToolBarButton::SetImage", "AFXTOOLBARBUTTON/CMFCToolBarButton::SetProtectedCommands", "AFXTOOLBARBUTTON/CMFCToolBarButton::SetRadio", "AFXTOOLBARBUTTON/CMFCToolBarButton::SetRect", "AFXTOOLBARBUTTON/CMFCToolBarButton::SetStyle", "AFXTOOLBARBUTTON/CMFCToolBarButton::SetVisible", "AFXTOOLBARBUTTON/CMFCToolBarButton::Show", "AFXTOOLBARBUTTON/CMFCToolBarButton::m_bImage", "AFXTOOLBARBUTTON/CMFCToolBarButton::m_bText", "AFXTOOLBARBUTTON/CMFCToolBarButton::m_bTextBelow", "AFXTOOLBARBUTTON/CMFCToolBarButton::m_bUserButton", "AFXTOOLBARBUTTON/CMFCToolBarButton::m_bWholeText", "AFXTOOLBARBUTTON/CMFCToolBarButton::m_bWrap", "AFXTOOLBARBUTTON/CMFCToolBarButton::m_bWrapText", "AFXTOOLBARBUTTON/CMFCToolBarButton::m_nID", "AFXTOOLBARBUTTON/CMFCToolBarButton::m_nStyle", "AFXTOOLBARBUTTON/CMFCToolBarButton::m_strText"] helpviewer_keywords: ["CMFCToolBarButton [MFC], CMFCToolBarButton", "CMFCToolBarButton [MFC], CanBeDropped", "CMFCToolBarButton [MFC], CanBeStored", "CMFCToolBarButton [MFC], CanBeStretched", "CMFCToolBarButton [MFC], CompareWith", "CMFCToolBarButton [MFC], CopyFrom", "CMFCToolBarButton [MFC], CreateFromOleData", "CMFCToolBarButton [MFC], EnableWindow", "CMFCToolBarButton [MFC], ExportToMenuButton", "CMFCToolBarButton [MFC], GetClipboardFormat", "CMFCToolBarButton [MFC], GetHwnd", "CMFCToolBarButton [MFC], GetImage", "CMFCToolBarButton [MFC], GetInvalidateRect", "CMFCToolBarButton [MFC], GetParentWnd", "CMFCToolBarButton [MFC], GetProtectedCommands", "CMFCToolBarButton [MFC], GetTextSize", "CMFCToolBarButton [MFC], HasFocus", "CMFCToolBarButton [MFC], HaveHotBorder", "CMFCToolBarButton [MFC], IsDrawImage", "CMFCToolBarButton [MFC], IsDrawText", "CMFCToolBarButton [MFC], IsDroppedDown", "CMFCToolBarButton [MFC], IsEditable", "CMFCToolBarButton [MFC], IsExtraSize", "CMFCToolBarButton [MFC], IsFirstInGroup", "CMFCToolBarButton [MFC], IsHidden", "CMFCToolBarButton [MFC], IsHorizontal", "CMFCToolBarButton [MFC], IsLastInGroup", "CMFCToolBarButton [MFC], IsLocked", "CMFCToolBarButton [MFC], IsOwnerOf", "CMFCToolBarButton [MFC], IsVisible", "CMFCToolBarButton [MFC], IsWindowVisible", "CMFCToolBarButton [MFC], NotifyCommand", "CMFCToolBarButton [MFC], OnAddToCustomizePage", "CMFCToolBarButton [MFC], OnBeforeDrag", "CMFCToolBarButton [MFC], OnBeforeDrop", "CMFCToolBarButton [MFC], OnCalculateSize", "CMFCToolBarButton [MFC], OnCancelMode", "CMFCToolBarButton [MFC], OnChangeParentWnd", "CMFCToolBarButton [MFC], OnClick", "CMFCToolBarButton [MFC], OnClickUp", "CMFCToolBarButton [MFC], OnContextHelp", "CMFCToolBarButton [MFC], OnCtlColor", "CMFCToolBarButton [MFC], OnCustomizeMenu", "CMFCToolBarButton [MFC], OnDblClk", "CMFCToolBarButton [MFC], OnDraw", "CMFCToolBarButton [MFC], OnDrawOnCustomizeList", "CMFCToolBarButton [MFC], OnGetCustomToolTipText", "CMFCToolBarButton [MFC], OnGlobalFontsChanged", "CMFCToolBarButton [MFC], OnMove", "CMFCToolBarButton [MFC], OnShow", "CMFCToolBarButton [MFC], OnSize", "CMFCToolBarButton [MFC], OnToolHitTest", "CMFCToolBarButton [MFC], OnUpdateToolTip", "CMFCToolBarButton [MFC], PrepareDrag", "CMFCToolBarButton [MFC], Rect", "CMFCToolBarButton [MFC], ResetImageToDefault", "CMFCToolBarButton [MFC], SaveBarState", "CMFCToolBarButton [MFC], Serialize", "CMFCToolBarButton [MFC], SetACCData", "CMFCToolBarButton [MFC], SetClipboardFormatName", "CMFCToolBarButton [MFC], SetImage", "CMFCToolBarButton [MFC], SetProtectedCommands", "CMFCToolBarButton [MFC], SetRadio", "CMFCToolBarButton [MFC], SetRect", "CMFCToolBarButton [MFC], SetStyle", "CMFCToolBarButton [MFC], SetVisible", "CMFCToolBarButton [MFC], Show", "CMFCToolBarButton [MFC], m_bImage", "CMFCToolBarButton [MFC], m_bText", "CMFCToolBarButton [MFC], m_bTextBelow", "CMFCToolBarButton [MFC], m_bUserButton", "CMFCToolBarButton [MFC], m_bWholeText", "CMFCToolBarButton [MFC], m_bWrap", "CMFCToolBarButton [MFC], m_bWrapText", "CMFCToolBarButton [MFC], m_nID", "CMFCToolBarButton [MFC], m_nStyle", "CMFCToolBarButton [MFC], m_strText"] -ms.assetid: 8a6ecffb-86b0-4f5c-8211-a9146b463efd --- # CMFCToolBarButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides button functionality to toolbars. ## Syntax diff --git a/docs/mfc/reference/cmfctoolbarcomboboxbutton-class.md b/docs/mfc/reference/cmfctoolbarcomboboxbutton-class.md index 33ad04efef8..90ef5256171 100644 --- a/docs/mfc/reference/cmfctoolbarcomboboxbutton-class.md +++ b/docs/mfc/reference/cmfctoolbarcomboboxbutton-class.md @@ -4,10 +4,12 @@ title: "CMFCToolBarComboBoxButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCToolBarComboBoxButton", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::CMFCToolBarComboBoxButton", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::AddItem", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::AddSortedItem", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::Compare", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::CreateEdit", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::DeleteItem", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::FindItem", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetByCmd", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetComboBox", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetCount", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetCountAll", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetCurSel", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetCurSelAll", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetEditCtrl", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetItem", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetItemAll", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetItemData", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetItemDataAll", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetItemDataPtrAll", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetText", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::GetTextAll", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::IsCenterVert", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::IsFlatMode", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::RemoveAllItems", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::SelectItem", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::SelectItemAll", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::SetCenterVert", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::SetDropDownHeight", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxButton::SetFlatMode"] helpviewer_keywords: ["CMFCToolBarComboBoxButton [MFC], CMFCToolBarComboBoxButton", "CMFCToolBarComboBoxButton [MFC], AddItem", "CMFCToolBarComboBoxButton [MFC], AddSortedItem", "CMFCToolBarComboBoxButton [MFC], Compare", "CMFCToolBarComboBoxButton [MFC], CreateEdit", "CMFCToolBarComboBoxButton [MFC], DeleteItem", "CMFCToolBarComboBoxButton [MFC], FindItem", "CMFCToolBarComboBoxButton [MFC], GetByCmd", "CMFCToolBarComboBoxButton [MFC], GetComboBox", "CMFCToolBarComboBoxButton [MFC], GetCount", "CMFCToolBarComboBoxButton [MFC], GetCountAll", "CMFCToolBarComboBoxButton [MFC], GetCurSel", "CMFCToolBarComboBoxButton [MFC], GetCurSelAll", "CMFCToolBarComboBoxButton [MFC], GetEditCtrl", "CMFCToolBarComboBoxButton [MFC], GetItem", "CMFCToolBarComboBoxButton [MFC], GetItemAll", "CMFCToolBarComboBoxButton [MFC], GetItemData", "CMFCToolBarComboBoxButton [MFC], GetItemDataAll", "CMFCToolBarComboBoxButton [MFC], GetItemDataPtrAll", "CMFCToolBarComboBoxButton [MFC], GetText", "CMFCToolBarComboBoxButton [MFC], GetTextAll", "CMFCToolBarComboBoxButton [MFC], IsCenterVert", "CMFCToolBarComboBoxButton [MFC], IsFlatMode", "CMFCToolBarComboBoxButton [MFC], RemoveAllItems", "CMFCToolBarComboBoxButton [MFC], SelectItem", "CMFCToolBarComboBoxButton [MFC], SelectItemAll", "CMFCToolBarComboBoxButton [MFC], SetCenterVert", "CMFCToolBarComboBoxButton [MFC], SetDropDownHeight", "CMFCToolBarComboBoxButton [MFC], SetFlatMode"] -ms.assetid: 32fa39f7-8e4e-4f0a-a31d-7b540d969a6c --- # CMFCToolBarComboBoxButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A toolbar button that contains a combo box control ( [CComboBox Class](../../mfc/reference/ccombobox-class.md)). ## Syntax diff --git a/docs/mfc/reference/cmfctoolbarcomboboxedit-class.md b/docs/mfc/reference/cmfctoolbarcomboboxedit-class.md index d3268930335..e967144ef94 100644 --- a/docs/mfc/reference/cmfctoolbarcomboboxedit-class.md +++ b/docs/mfc/reference/cmfctoolbarcomboboxedit-class.md @@ -4,10 +4,12 @@ title: "CMFCToolBarComboBoxEdit Class" ms.date: "11/04/2016" f1_keywords: ["CMFCToolBarComboBoxEdit", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxEdit", "AFXTOOLBARCOMBOBOXBUTTON/CMFCToolBarComboBoxEdit::CMFCToolBarComboBoxEdit"] helpviewer_keywords: ["CMFCToolBarComboBoxEdit [MFC], CMFCToolBarComboBoxEdit"] -ms.assetid: 4789c34a-ce58-48ba-a26f-38748b601352 --- # CMFCToolBarComboBoxEdit Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The framework uses the `CMFCToolBarComboBoxEdit` class to create a toolbar button that behaves like an editable combo box control. ## Syntax diff --git a/docs/mfc/reference/cmfctoolbardatetimectrl-class.md b/docs/mfc/reference/cmfctoolbardatetimectrl-class.md index 367cba596e9..8e6ff7c4dea 100644 --- a/docs/mfc/reference/cmfctoolbardatetimectrl-class.md +++ b/docs/mfc/reference/cmfctoolbardatetimectrl-class.md @@ -4,10 +4,12 @@ title: "CMFCToolBarDateTimeCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CMFCToolBarDateTimeCtrl", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::CMFCToolBarDateTimeCtrl", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::CanBeStretched", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::CopyFrom", "AFXTOOLBARDATETIMECTRL/CMFCToolBarButton::ExportToMenuButton", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::GetByCmd", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::GetDateTimeCtrl", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::GetHwnd", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::GetTime", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::GetTimeAll", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::HaveHotBorder", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::NotifyCommand", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::OnAddToCustomizePage", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::OnChangeParentWnd", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::OnClick", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::OnCtlColor", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::OnGlobalFontsChanged", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::OnMove", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::OnShow", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::OnUpdateToolTip", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::SetTime", "AFXTOOLBARDATETIMECTRL/CMFCToolBarDateTimeCtrl::SetTimeAll"] helpviewer_keywords: ["CMFCToolBarDateTimeCtrl [MFC], CMFCToolBarDateTimeCtrl", "CMFCToolBarDateTimeCtrl [MFC], CanBeStretched", "CMFCToolBarDateTimeCtrl [MFC], CopyFrom", "CMFCToolBarButton [MFC], ExportToMenuButton", "CMFCToolBarDateTimeCtrl [MFC], GetByCmd", "CMFCToolBarDateTimeCtrl [MFC], GetDateTimeCtrl", "CMFCToolBarDateTimeCtrl [MFC], GetHwnd", "CMFCToolBarDateTimeCtrl [MFC], GetTime", "CMFCToolBarDateTimeCtrl [MFC], GetTimeAll", "CMFCToolBarDateTimeCtrl [MFC], HaveHotBorder", "CMFCToolBarDateTimeCtrl [MFC], NotifyCommand", "CMFCToolBarDateTimeCtrl [MFC], OnAddToCustomizePage", "CMFCToolBarDateTimeCtrl [MFC], OnChangeParentWnd", "CMFCToolBarDateTimeCtrl [MFC], OnClick", "CMFCToolBarDateTimeCtrl [MFC], OnCtlColor", "CMFCToolBarDateTimeCtrl [MFC], OnGlobalFontsChanged", "CMFCToolBarDateTimeCtrl [MFC], OnMove", "CMFCToolBarDateTimeCtrl [MFC], OnShow", "CMFCToolBarDateTimeCtrl [MFC], OnUpdateToolTip", "CMFCToolBarDateTimeCtrl [MFC], SetTime", "CMFCToolBarDateTimeCtrl [MFC], SetTimeAll"] -ms.assetid: a3853cb9-8ebc-444f-a1e4-9cf905e24c18 --- # CMFCToolBarDateTimeCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A toolbar button that contains a date and time picker control. ## Syntax diff --git a/docs/mfc/reference/cmfctoolbareditboxbutton-class.md b/docs/mfc/reference/cmfctoolbareditboxbutton-class.md index bd00650204d..3d2790f18f1 100644 --- a/docs/mfc/reference/cmfctoolbareditboxbutton-class.md +++ b/docs/mfc/reference/cmfctoolbareditboxbutton-class.md @@ -4,10 +4,12 @@ title: "CMFCToolBarEditBoxButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCToolBarEditBoxButton", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::CMFCToolBarEditBoxButton", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::CanBeStretched", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::CopyFrom", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::GetByCmd", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::GetContentsAll", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::GetContextMenuID", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::GetEditBorder", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::GetHwnd", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::GetInvalidateRect", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::HaveHotBorder", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::IsFlatMode", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::NotifyCommand", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::OnAddToCustomizePage", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::OnChangeParentWnd", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::OnClick", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::OnCtlColor", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::OnGlobalFontsChanged", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::OnMove", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::OnShow", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::OnSize", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::OnUpdateToolTip", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::SetContextMenuID", "AFXTOOLBAREDITBOXBUTTON/CMFCToolBarEditBoxButton::SetFlatMode"] helpviewer_keywords: ["CMFCToolBarEditBoxButton [MFC], CMFCToolBarEditBoxButton", "CMFCToolBarEditBoxButton [MFC], CanBeStretched", "CMFCToolBarEditBoxButton [MFC], CopyFrom", "CMFCToolBarEditBoxButton [MFC], GetByCmd", "CMFCToolBarEditBoxButton [MFC], GetContentsAll", "CMFCToolBarEditBoxButton [MFC], GetContextMenuID", "CMFCToolBarEditBoxButton [MFC], GetEditBorder", "CMFCToolBarEditBoxButton [MFC], GetHwnd", "CMFCToolBarEditBoxButton [MFC], GetInvalidateRect", "CMFCToolBarEditBoxButton [MFC], HaveHotBorder", "CMFCToolBarEditBoxButton [MFC], IsFlatMode", "CMFCToolBarEditBoxButton [MFC], NotifyCommand", "CMFCToolBarEditBoxButton [MFC], OnAddToCustomizePage", "CMFCToolBarEditBoxButton [MFC], OnChangeParentWnd", "CMFCToolBarEditBoxButton [MFC], OnClick", "CMFCToolBarEditBoxButton [MFC], OnCtlColor", "CMFCToolBarEditBoxButton [MFC], OnGlobalFontsChanged", "CMFCToolBarEditBoxButton [MFC], OnMove", "CMFCToolBarEditBoxButton [MFC], OnShow", "CMFCToolBarEditBoxButton [MFC], OnSize", "CMFCToolBarEditBoxButton [MFC], OnUpdateToolTip", "CMFCToolBarEditBoxButton [MFC], SetContextMenuID", "CMFCToolBarEditBoxButton [MFC], SetFlatMode"] -ms.assetid: b21d9b67-6bf7-4ca9-bd62-b237756e0ab3 --- # CMFCToolBarEditBoxButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A toolbar button that contains an edit control ( [CEdit Class](../../mfc/reference/cedit-class.md)). ## Syntax diff --git a/docs/mfc/reference/cmfctoolbarfontcombobox-class.md b/docs/mfc/reference/cmfctoolbarfontcombobox-class.md index 4c8e05d3ad6..965f04c370b 100644 --- a/docs/mfc/reference/cmfctoolbarfontcombobox-class.md +++ b/docs/mfc/reference/cmfctoolbarfontcombobox-class.md @@ -4,10 +4,12 @@ title: "CMFCToolBarFontComboBox Class" ms.date: "11/04/2016" f1_keywords: ["CMFCToolBarFontComboBox", "AFXTOOLBARFONTCOMBOBOX/CMFCToolBarFontComboBox", "AFXTOOLBARFONTCOMBOBOX/CMFCToolBarFontComboBox::CMFCToolBarFontComboBox", "AFXTOOLBARFONTCOMBOBOX/CMFCToolBarFontComboBox::GetFontDesc", "AFXTOOLBARFONTCOMBOBOX/CMFCToolBarFontComboBox::SetFont"] helpviewer_keywords: ["CMFCToolBarFontComboBox [MFC], CMFCToolBarFontComboBox", "CMFCToolBarFontComboBox [MFC], GetFontDesc", "CMFCToolBarFontComboBox [MFC], SetFont"] -ms.assetid: 25f8e08c-aadd-4cb5-9581-a99d49d444b1 --- # CMFCToolBarFontComboBox Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A toolbar button that contains a combo box control that enables the user to select a font from a list of system fonts. ## Syntax diff --git a/docs/mfc/reference/cmfctoolbarfontsizecombobox-class.md b/docs/mfc/reference/cmfctoolbarfontsizecombobox-class.md index 8bb1581813f..7314ab35ff8 100644 --- a/docs/mfc/reference/cmfctoolbarfontsizecombobox-class.md +++ b/docs/mfc/reference/cmfctoolbarfontsizecombobox-class.md @@ -4,10 +4,12 @@ title: "CMFCToolBarFontSizeComboBox Class" ms.date: "11/04/2016" f1_keywords: ["CMFCToolBarFontSizeComboBox", "AFXTOOLBARFONTCOMBOBOX/CMFCToolBarFontSizeComboBox", "AFXTOOLBARFONTCOMBOBOX/CMFCToolBarFontSizeComboBox::CMFCToolBarFontSizeComboBox", "AFXTOOLBARFONTCOMBOBOX/CMFCToolBarFontSizeComboBox::GetTwipSize", "AFXTOOLBARFONTCOMBOBOX/CMFCToolBarFontSizeComboBox::RebuildFontSizes", "AFXTOOLBARFONTCOMBOBOX/CMFCToolBarFontSizeComboBox::SetTwipSize"] helpviewer_keywords: ["CMFCToolBarFontSizeComboBox [MFC], CMFCToolBarFontSizeComboBox", "CMFCToolBarFontSizeComboBox [MFC], GetTwipSize", "CMFCToolBarFontSizeComboBox [MFC], RebuildFontSizes", "CMFCToolBarFontSizeComboBox [MFC], SetTwipSize"] -ms.assetid: 72e0c44c-6a0e-4194-a71f-ab64e3afb9b5 --- # CMFCToolBarFontSizeComboBox Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A toolbar button that contains a combo box control that enables the user to select a font size. ## Syntax diff --git a/docs/mfc/reference/cmfctoolbarimages-class.md b/docs/mfc/reference/cmfctoolbarimages-class.md index 3fe00a3e0af..6a04928ba74 100644 --- a/docs/mfc/reference/cmfctoolbarimages-class.md +++ b/docs/mfc/reference/cmfctoolbarimages-class.md @@ -4,10 +4,12 @@ title: "CMFCToolBarImages Class" ms.date: "11/04/2016" f1_keywords: ["CMFCToolBarImages", "AFXTOOLBARIMAGES/CMFCToolBarImages", "AFXTOOLBARIMAGES/CMFCToolBarImages::CMFCToolBarImages", "AFXTOOLBARIMAGES/CMFCToolBarImages::AdaptColors", "AFXTOOLBARIMAGES/CMFCToolBarImages::AddIcon", "AFXTOOLBARIMAGES/CMFCToolBarImages::AddImage", "AFXTOOLBARIMAGES/CMFCToolBarImages::CleanUp", "AFXTOOLBARIMAGES/CMFCToolBarImages::Clear", "AFXTOOLBARIMAGES/CMFCToolBarImages::ConvertTo32Bits", "AFXTOOLBARIMAGES/CMFCToolBarImages::CopyImageToClipboard", "AFXTOOLBARIMAGES/CMFCToolBarImages::CopyTo", "AFXTOOLBARIMAGES/CMFCToolBarImages::CreateFromImageList", "AFXTOOLBARIMAGES/CMFCToolBarImages::CreateRegionFromImage", "AFXTOOLBARIMAGES/CMFCToolBarImages::DeleteImage", "AFXTOOLBARIMAGES/CMFCToolBarImages::Draw", "AFXTOOLBARIMAGES/CMFCToolBarImages::DrawEx", "AFXTOOLBARIMAGES/CMFCToolBarImages::EnableRTL", "AFXTOOLBARIMAGES/CMFCToolBarImages::EndDrawImage", "AFXTOOLBARIMAGES/CMFCToolBarImages::ExtractIcon", "AFXTOOLBARIMAGES/CMFCToolBarImages::FillDitheredRect", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetAlwaysLight", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetBitsPerPixel", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetCount", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetDisabledImageAlpha", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetFadedImageAlpha", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetImageSize", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetImageWell", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetImageWellLight", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetLastImageRect", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetLightPercentage", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetMapTo3DColors", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetMask", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetResourceOffset", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetScale", "AFXTOOLBARIMAGES/CMFCToolBarImages::GetTransparentColor", "AFXTOOLBARIMAGES/CMFCToolBarImages::GrayImages", "AFXTOOLBARIMAGES/CMFCToolBarImages::Is32BitTransparencySupported", "AFXTOOLBARIMAGES/CMFCToolBarImages::IsPreMultiplyAutoCheck", "AFXTOOLBARIMAGES/CMFCToolBarImages::IsRTL", "AFXTOOLBARIMAGES/CMFCToolBarImages::IsReadOnly", "AFXTOOLBARIMAGES/CMFCToolBarImages::IsScaled", "AFXTOOLBARIMAGES/CMFCToolBarImages::IsUserImagesList", "AFXTOOLBARIMAGES/CMFCToolBarImages::IsValid", "AFXTOOLBARIMAGES/CMFCToolBarImages::Load", "AFXTOOLBARIMAGES/CMFCToolBarImages::LoadStr", "AFXTOOLBARIMAGES/CMFCToolBarImages::MapFromSysColor", "AFXTOOLBARIMAGES/CMFCToolBarImages::MapTo3dColors", "AFXTOOLBARIMAGES/CMFCToolBarImages::MapToSysColor", "AFXTOOLBARIMAGES/CMFCToolBarImages::MapToSysColorAlpha", "AFXTOOLBARIMAGES/CMFCToolBarImages::Mirror", "AFXTOOLBARIMAGES/CMFCToolBarImages::MirrorBitmap", "AFXTOOLBARIMAGES/CMFCToolBarImages::MirrorBitmapVert", "AFXTOOLBARIMAGES/CMFCToolBarImages::MirrorVert", "AFXTOOLBARIMAGES/CMFCToolBarImages::OnSysColorChange", "AFXTOOLBARIMAGES/CMFCToolBarImages::PrepareDrawImage", "AFXTOOLBARIMAGES/CMFCToolBarImages::Save", "AFXTOOLBARIMAGES/CMFCToolBarImages::SetAlwaysLight", "AFXTOOLBARIMAGES/CMFCToolBarImages::SetDisabledImageAlpha", "AFXTOOLBARIMAGES/CMFCToolBarImages::SetFadedImageAlpha", "AFXTOOLBARIMAGES/CMFCToolBarImages::SetImageSize", "AFXTOOLBARIMAGES/CMFCToolBarImages::SetLightPercentage", "AFXTOOLBARIMAGES/CMFCToolBarImages::SetMapTo3DColors", "AFXTOOLBARIMAGES/CMFCToolBarImages::SetPreMultiplyAutoCheck", "AFXTOOLBARIMAGES/CMFCToolBarImages::SetSingleImage", "AFXTOOLBARIMAGES/CMFCToolBarImages::SetTransparentColor", "AFXTOOLBARIMAGES/CMFCToolBarImages::SmoothResize", "AFXTOOLBARIMAGES/CMFCToolBarImages::UpdateImage", "AFXTOOLBARIMAGES/CMFCToolBarImages::PreMultiplyAlpha", "AFXTOOLBARIMAGES/CMFCToolBarImages::m_bDisableTrueColorAlpha"] helpviewer_keywords: ["CMFCToolBarImages [MFC], CMFCToolBarImages", "CMFCToolBarImages [MFC], AdaptColors", "CMFCToolBarImages [MFC], AddIcon", "CMFCToolBarImages [MFC], AddImage", "CMFCToolBarImages [MFC], CleanUp", "CMFCToolBarImages [MFC], Clear", "CMFCToolBarImages [MFC], ConvertTo32Bits", "CMFCToolBarImages [MFC], CopyImageToClipboard", "CMFCToolBarImages [MFC], CopyTo", "CMFCToolBarImages [MFC], CreateFromImageList", "CMFCToolBarImages [MFC], CreateRegionFromImage", "CMFCToolBarImages [MFC], DeleteImage", "CMFCToolBarImages [MFC], Draw", "CMFCToolBarImages [MFC], DrawEx", "CMFCToolBarImages [MFC], EnableRTL", "CMFCToolBarImages [MFC], EndDrawImage", "CMFCToolBarImages [MFC], ExtractIcon", "CMFCToolBarImages [MFC], FillDitheredRect", "CMFCToolBarImages [MFC], GetAlwaysLight", "CMFCToolBarImages [MFC], GetBitsPerPixel", "CMFCToolBarImages [MFC], GetCount", "CMFCToolBarImages [MFC], GetDisabledImageAlpha", "CMFCToolBarImages [MFC], GetFadedImageAlpha", "CMFCToolBarImages [MFC], GetImageSize", "CMFCToolBarImages [MFC], GetImageWell", "CMFCToolBarImages [MFC], GetImageWellLight", "CMFCToolBarImages [MFC], GetLastImageRect", "CMFCToolBarImages [MFC], GetLightPercentage", "CMFCToolBarImages [MFC], GetMapTo3DColors", "CMFCToolBarImages [MFC], GetMask", "CMFCToolBarImages [MFC], GetResourceOffset", "CMFCToolBarImages [MFC], GetScale", "CMFCToolBarImages [MFC], GetTransparentColor", "CMFCToolBarImages [MFC], GrayImages", "CMFCToolBarImages [MFC], Is32BitTransparencySupported", "CMFCToolBarImages [MFC], IsPreMultiplyAutoCheck", "CMFCToolBarImages [MFC], IsRTL", "CMFCToolBarImages [MFC], IsReadOnly", "CMFCToolBarImages [MFC], IsScaled", "CMFCToolBarImages [MFC], IsUserImagesList", "CMFCToolBarImages [MFC], IsValid", "CMFCToolBarImages [MFC], Load", "CMFCToolBarImages [MFC], LoadStr", "CMFCToolBarImages [MFC], MapFromSysColor", "CMFCToolBarImages [MFC], MapTo3dColors", "CMFCToolBarImages [MFC], MapToSysColor", "CMFCToolBarImages [MFC], MapToSysColorAlpha", "CMFCToolBarImages [MFC], Mirror", "CMFCToolBarImages [MFC], MirrorBitmap", "CMFCToolBarImages [MFC], MirrorBitmapVert", "CMFCToolBarImages [MFC], MirrorVert", "CMFCToolBarImages [MFC], OnSysColorChange", "CMFCToolBarImages [MFC], PrepareDrawImage", "CMFCToolBarImages [MFC], Save", "CMFCToolBarImages [MFC], SetAlwaysLight", "CMFCToolBarImages [MFC], SetDisabledImageAlpha", "CMFCToolBarImages [MFC], SetFadedImageAlpha", "CMFCToolBarImages [MFC], SetImageSize", "CMFCToolBarImages [MFC], SetLightPercentage", "CMFCToolBarImages [MFC], SetMapTo3DColors", "CMFCToolBarImages [MFC], SetPreMultiplyAutoCheck", "CMFCToolBarImages [MFC], SetSingleImage", "CMFCToolBarImages [MFC], SetTransparentColor", "CMFCToolBarImages [MFC], SmoothResize", "CMFCToolBarImages [MFC], UpdateImage", "CMFCToolBarImages [MFC], PreMultiplyAlpha", "CMFCToolBarImages [MFC], m_bDisableTrueColorAlpha"] -ms.assetid: d4e50518-9ffc-406f-9996-f79e5cd38155 --- # CMFCToolBarImages Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The images on a toolbar. The `CMFCToolBarImages` class manages toolbar images loaded from application resources or from files. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfctoolbarinfo-class.md b/docs/mfc/reference/cmfctoolbarinfo-class.md index efec0c3afac..43a753a5169 100644 --- a/docs/mfc/reference/cmfctoolbarinfo-class.md +++ b/docs/mfc/reference/cmfctoolbarinfo-class.md @@ -4,10 +4,12 @@ title: "CMFCToolBarInfo Class" ms.date: "11/04/2016" f1_keywords: ["CMFCToolBarInfo", "AFXTOOLBAR/CMFCToolBarInfo", "AFXTOOLBAR/CMFCToolBarInfo::m_uiColdResID", "AFXTOOLBAR/CMFCToolBarInfo::m_uiDisabledResID", "AFXTOOLBAR/CMFCToolBarInfo::m_uiHotResID", "AFXTOOLBAR/CMFCToolBarInfo::m_uiLargeColdResID", "AFXTOOLBAR/CMFCToolBarInfo::m_uiLargeDisabledResID", "AFXTOOLBAR/CMFCToolBarInfo::m_uiLargeHotResID", "AFXTOOLBAR/CMFCToolBarInfo::m_uiMenuDisabledResID", "AFXTOOLBAR/CMFCToolBarInfo::m_uiMenuResID"] helpviewer_keywords: ["CMFCToolBarInfo [MFC], m_uiColdResID", "CMFCToolBarInfo [MFC], m_uiDisabledResID", "CMFCToolBarInfo [MFC], m_uiHotResID", "CMFCToolBarInfo [MFC], m_uiLargeColdResID", "CMFCToolBarInfo [MFC], m_uiLargeDisabledResID", "CMFCToolBarInfo [MFC], m_uiLargeHotResID", "CMFCToolBarInfo [MFC], m_uiMenuDisabledResID", "CMFCToolBarInfo [MFC], m_uiMenuResID"] -ms.assetid: 6dc84482-eaaa-491f-aa5d-dd7a57886b46 --- # CMFCToolBarInfo Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Contains the resource IDs of toolbar images in various states. `CMFCToolBarInfo` is a helper class that is used as a parameter of the [CMFCToolBar::LoadToolBarEx](../../mfc/reference/cmfctoolbar-class.md#loadtoolbarex) method. ## Syntax diff --git a/docs/mfc/reference/cmfctoolbarmenubutton-class.md b/docs/mfc/reference/cmfctoolbarmenubutton-class.md index 62f67ca32f7..aa9fbb43a60 100644 --- a/docs/mfc/reference/cmfctoolbarmenubutton-class.md +++ b/docs/mfc/reference/cmfctoolbarmenubutton-class.md @@ -4,10 +4,12 @@ title: "CMFCToolBarMenuButton Class" ms.date: "11/04/2016" f1_keywords: ["CMFCToolBarMenuButton", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::CMFCToolBarMenuButton", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::CompareWith", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::CopyFrom", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::CreateFromMenu", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::CreateMenu", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::CreatePopupMenu", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::EnableQuickCustomize", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::GetCommands", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::GetImageRect", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::GetPaletteRows", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::GetPopupMenu", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::HasButton", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::HaveHotBorder", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::IsBorder", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::IsClickedOnMenu", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::IsDroppedDown", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::IsEmptyMenuAllowed", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::IsExclusive", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::IsMenuPaletteMode", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::IsQuickMode", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::IsTearOffMenu", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::OnAfterCreatePopupMenu", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::OnBeforeDrag", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::OnCalculateSize", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::OnCancelMode", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::OnChangeParentWnd", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::OnClick", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::OnClickMenuItem", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::OnContextHelp", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::OnDraw", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::OnDrawOnCustomizeList", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::OpenPopupMenu", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::ResetImageToDefault", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::SaveBarState", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::Serialize", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::SetACCData", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::SetMenuOnly", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::SetMenuPaletteMode", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::SetMessageWnd", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::SetRadio", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::SetTearOff", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::DrawDocumentIcon", "AFXTOOLBARMENUBUTTON/CMFCToolBarMenuButton::m_bAlwaysCallOwnerDraw"] helpviewer_keywords: ["CMFCToolBarMenuButton [MFC], CMFCToolBarMenuButton", "CMFCToolBarMenuButton [MFC], CompareWith", "CMFCToolBarMenuButton [MFC], CopyFrom", "CMFCToolBarMenuButton [MFC], CreateFromMenu", "CMFCToolBarMenuButton [MFC], CreateMenu", "CMFCToolBarMenuButton [MFC], CreatePopupMenu", "CMFCToolBarMenuButton [MFC], EnableQuickCustomize", "CMFCToolBarMenuButton [MFC], GetCommands", "CMFCToolBarMenuButton [MFC], GetImageRect", "CMFCToolBarMenuButton [MFC], GetPaletteRows", "CMFCToolBarMenuButton [MFC], GetPopupMenu", "CMFCToolBarMenuButton [MFC], HasButton", "CMFCToolBarMenuButton [MFC], HaveHotBorder", "CMFCToolBarMenuButton [MFC], IsBorder", "CMFCToolBarMenuButton [MFC], IsClickedOnMenu", "CMFCToolBarMenuButton [MFC], IsDroppedDown", "CMFCToolBarMenuButton [MFC], IsEmptyMenuAllowed", "CMFCToolBarMenuButton [MFC], IsExclusive", "CMFCToolBarMenuButton [MFC], IsMenuPaletteMode", "CMFCToolBarMenuButton [MFC], IsQuickMode", "CMFCToolBarMenuButton [MFC], IsTearOffMenu", "CMFCToolBarMenuButton [MFC], OnAfterCreatePopupMenu", "CMFCToolBarMenuButton [MFC], OnBeforeDrag", "CMFCToolBarMenuButton [MFC], OnCalculateSize", "CMFCToolBarMenuButton [MFC], OnCancelMode", "CMFCToolBarMenuButton [MFC], OnChangeParentWnd", "CMFCToolBarMenuButton [MFC], OnClick", "CMFCToolBarMenuButton [MFC], OnClickMenuItem", "CMFCToolBarMenuButton [MFC], OnContextHelp", "CMFCToolBarMenuButton [MFC], OnDraw", "CMFCToolBarMenuButton [MFC], OnDrawOnCustomizeList", "CMFCToolBarMenuButton [MFC], OpenPopupMenu", "CMFCToolBarMenuButton [MFC], ResetImageToDefault", "CMFCToolBarMenuButton [MFC], SaveBarState", "CMFCToolBarMenuButton [MFC], Serialize", "CMFCToolBarMenuButton [MFC], SetACCData", "CMFCToolBarMenuButton [MFC], SetMenuOnly", "CMFCToolBarMenuButton [MFC], SetMenuPaletteMode", "CMFCToolBarMenuButton [MFC], SetMessageWnd", "CMFCToolBarMenuButton [MFC], SetRadio", "CMFCToolBarMenuButton [MFC], SetTearOff", "CMFCToolBarMenuButton [MFC], DrawDocumentIcon", "CMFCToolBarMenuButton [MFC], m_bAlwaysCallOwnerDraw"] -ms.assetid: cfa50176-7e4b-4527-9904-86a1b48fc1bc --- # CMFCToolBarMenuButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A toolbar button that contains a pop-up menu. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfctoolbarscustomizedialog-class.md b/docs/mfc/reference/cmfctoolbarscustomizedialog-class.md index af756deef39..ab98d47944b 100644 --- a/docs/mfc/reference/cmfctoolbarscustomizedialog-class.md +++ b/docs/mfc/reference/cmfctoolbarscustomizedialog-class.md @@ -4,10 +4,12 @@ title: "CMFCToolBarsCustomizeDialog Class" ms.date: "11/04/2016" f1_keywords: ["CMFCToolBarsCustomizeDialog", "AFXTOOLBARSCUSTOMIZEDIALOG/CMFCToolBarsCustomizeDialog", "AFXTOOLBARSCUSTOMIZEDIALOG/CMFCToolBarsCustomizeDialog::CMFCToolBarsCustomizeDialog", "AFXTOOLBARSCUSTOMIZEDIALOG/CMFCToolBarsCustomizeDialog::FillAllCommandsList", "AFXTOOLBARSCUSTOMIZEDIALOG/CMFCToolBarsCustomizeDialog::FillCategoriesComboBox", "AFXTOOLBARSCUSTOMIZEDIALOG/CMFCToolBarsCustomizeDialog::FillCategoriesListBox", "AFXTOOLBARSCUSTOMIZEDIALOG/CMFCToolBarsCustomizeDialog::GetCommandName", "AFXTOOLBARSCUSTOMIZEDIALOG/CMFCToolBarsCustomizeDialog::GetCountInCategory", "AFXTOOLBARSCUSTOMIZEDIALOG/CMFCToolBarsCustomizeDialog::GetFlags", "AFXTOOLBARSCUSTOMIZEDIALOG/CMFCToolBarsCustomizeDialog::OnInitDialog", "AFXTOOLBARSCUSTOMIZEDIALOG/CMFCToolBarsCustomizeDialog::PostNcDestroy"] helpviewer_keywords: ["CMFCToolBarsCustomizeDialog [MFC], CMFCToolBarsCustomizeDialog", "CMFCToolBarsCustomizeDialog [MFC], FillAllCommandsList", "CMFCToolBarsCustomizeDialog [MFC], FillCategoriesComboBox", "CMFCToolBarsCustomizeDialog [MFC], FillCategoriesListBox", "CMFCToolBarsCustomizeDialog [MFC], GetCommandName", "CMFCToolBarsCustomizeDialog [MFC], GetCountInCategory", "CMFCToolBarsCustomizeDialog [MFC], GetFlags", "CMFCToolBarsCustomizeDialog [MFC], OnInitDialog", "CMFCToolBarsCustomizeDialog [MFC], PostNcDestroy"] -ms.assetid: 78e2cddd-4f13-4097-afc3-1ad646a113f1 --- # CMFCToolBarsCustomizeDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A modeless tab dialog box ( [CPropertySheet Class](../../mfc/reference/cpropertysheet-class.md)) that enables the user to customize the toolbars, menus, keyboard shortcuts, user-defined tools, and visual style in an application. Typically, the user accesses this dialog box by selecting **Customize** from the **Tools** menu. The **Customize** dialog box has six tabs: **Commands**, **Toolbars**, **Tools**, **Keyboard**, **Menu**, and **Options**. diff --git a/docs/mfc/reference/cmfctooltipctrl-class.md b/docs/mfc/reference/cmfctooltipctrl-class.md index 9f75f1de911..9cf0b9adff4 100644 --- a/docs/mfc/reference/cmfctooltipctrl-class.md +++ b/docs/mfc/reference/cmfctooltipctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCToolTipCtrl [MFC], GetIconSize", "CMFCToolTipCtrl [MF --- # CMFCToolTipCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An extended tooltip implementation based on the [CToolTipCtrl Class](../../mfc/reference/ctooltipctrl-class.md). A tooltip based on the `CMFCToolTipCtrl` class can display an icon, a label, and a description. You can customize its visual appearance by using a gradient fill, custom text and border colors, bold text, rounded corners, or a balloon style. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfctooltipinfo-class.md b/docs/mfc/reference/cmfctooltipinfo-class.md index cefde9ab39f..4f9385a7fd7 100644 --- a/docs/mfc/reference/cmfctooltipinfo-class.md +++ b/docs/mfc/reference/cmfctooltipinfo-class.md @@ -4,10 +4,12 @@ title: "CMFCToolTipInfo Class" ms.date: "11/04/2016" f1_keywords: ["CMFCToolTipInfo", "AFXTOOLTIPCTRL/CMFCToolTipInfo", "AFXTOOLTIPCTRL/CMFCToolTipInfo::m_bBalloonTooltip", "AFXTOOLTIPCTRL/CMFCToolTipInfo::m_bBoldLabel", "AFXTOOLTIPCTRL/CMFCToolTipInfo::m_bDrawDescription", "AFXTOOLTIPCTRL/CMFCToolTipInfo::m_bDrawIcon", "AFXTOOLTIPCTRL/CMFCToolTipInfo::m_bDrawSeparator", "AFXTOOLTIPCTRL/CMFCToolTipInfo::m_bRoundedCorners", "AFXTOOLTIPCTRL/CMFCToolTipInfo::m_bVislManagerTheme", "AFXTOOLTIPCTRL/CMFCToolTipInfo::m_clrBorder", "AFXTOOLTIPCTRL/CMFCToolTipInfo::m_clrFill", "AFXTOOLTIPCTRL/CMFCToolTipInfo::m_clrFillGradient", "AFXTOOLTIPCTRL/CMFCToolTipInfo::m_clrText", "AFXTOOLTIPCTRL/CMFCToolTipInfo::m_nGradientAngle", "AFXTOOLTIPCTRL/CMFCToolTipInfo::m_nMaxDescrWidth"] helpviewer_keywords: ["CMFCToolTipInfo [MFC], m_bBalloonTooltip", "CMFCToolTipInfo [MFC], m_bBoldLabel", "CMFCToolTipInfo [MFC], m_bDrawDescription", "CMFCToolTipInfo [MFC], m_bDrawIcon", "CMFCToolTipInfo [MFC], m_bDrawSeparator", "CMFCToolTipInfo [MFC], m_bRoundedCorners", "CMFCToolTipInfo [MFC], m_bVislManagerTheme", "CMFCToolTipInfo [MFC], m_clrBorder", "CMFCToolTipInfo [MFC], m_clrFill", "CMFCToolTipInfo [MFC], m_clrFillGradient", "CMFCToolTipInfo [MFC], m_clrText", "CMFCToolTipInfo [MFC], m_nGradientAngle", "CMFCToolTipInfo [MFC], m_nMaxDescrWidth"] -ms.assetid: f9d3d7f8-1f08-4342-a7b2-683860e5d2a5 --- # CMFCToolTipInfo Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Stores information about the visual appearance of tooltips. ## Syntax diff --git a/docs/mfc/reference/cmfcvisualmanager-class.md b/docs/mfc/reference/cmfcvisualmanager-class.md index fe9a063078a..fbcf36dd516 100644 --- a/docs/mfc/reference/cmfcvisualmanager-class.md +++ b/docs/mfc/reference/cmfcvisualmanager-class.md @@ -4,10 +4,12 @@ title: "CMFCVisualManager Class" ms.date: "11/04/2016" f1_keywords: ["CMFCVisualManager", "AFXVISUALMANAGER/CMFCVisualManager", "AFXVISUALMANAGER/CMFCVisualManager::AdjustFrames", "AFXVISUALMANAGER/CMFCVisualManager::AdjustToolbars", "AFXVISUALMANAGER/CMFCVisualManager::AlwaysHighlight3DTabs", "AFXVISUALMANAGER/CMFCVisualManager::DestroyInstance", "AFXVISUALMANAGER/CMFCVisualManager::DoDrawHeaderSortArrow", "AFXVISUALMANAGER/CMFCVisualManager::DrawComboDropButtonWinXP", "AFXVISUALMANAGER/CMFCVisualManager::DrawPushButtonWinXP", "AFXVISUALMANAGER/CMFCVisualManager::DrawTextOnGlass", "AFXVISUALMANAGER/CMFCVisualManager::GetAutoHideButtonTextColor", "AFXVISUALMANAGER/CMFCVisualManager::GetButtonExtraBorder", "AFXVISUALMANAGER/CMFCVisualManager::GetCaptionBarTextColor", "AFXVISUALMANAGER/CMFCVisualManager::GetDockingTabsBordersSize", "AFXVISUALMANAGER/CMFCVisualManager::GetHighlightedMenuItemTextColor", "AFXVISUALMANAGER/CMFCVisualManager::GetInstance", "AFXVISUALMANAGER/CMFCVisualManager::GetMDITabsBordersSize", "AFXVISUALMANAGER/CMFCVisualManager::GetMenuItemTextColor", "AFXVISUALMANAGER/CMFCVisualManager::GetMenuShadowDepth", "AFXVISUALMANAGER/CMFCVisualManager::GetNcBtnSize", "AFXVISUALMANAGER/CMFCVisualManager::GetPopupMenuBorderSize", "AFXVISUALMANAGER/CMFCVisualManager::GetPropertyGridGroupColor", "AFXVISUALMANAGER/CMFCVisualManager::GetPropertyGridGroupTextColor", "AFXVISUALMANAGER/CMFCVisualManager::GetRibbonHyperlinkTextColor", "AFXVISUALMANAGER/CMFCVisualManager::GetRibbonPopupBorderSize", "AFXVISUALMANAGER/CMFCVisualManager::GetRibbonQuickAccessToolBarTextColor", "AFXVISUALMANAGER/CMFCVisualManager::GetRibbonSliderColors", "AFXVISUALMANAGER/CMFCVisualManager::GetShowAllMenuItemsHeight", "AFXVISUALMANAGER/CMFCVisualManager::GetSmartDockingBaseGuideColors", "AFXVISUALMANAGER/CMFCVisualManager::GetSmartDockingHighlightToneColor", "AFXVISUALMANAGER/CMFCVisualManager::GetSmartDockingTheme", "AFXVISUALMANAGER/CMFCVisualManager::GetStatusBarPaneTextColor", "AFXVISUALMANAGER/CMFCVisualManager::GetTabFrameColors", "AFXVISUALMANAGER/CMFCVisualManager::GetTabTextColor", "AFXVISUALMANAGER/CMFCVisualManager::GetToolbarButtonTextColor", "AFXVISUALMANAGER/CMFCVisualManager::GetToolbarDisabledTextColor", "AFXVISUALMANAGER/CMFCVisualManager::GetToolbarHighlightColor", "AFXVISUALMANAGER/CMFCVisualManager::GetToolTipInfo", "AFXVISUALMANAGER/CMFCVisualManager::HasOverlappedAutoHideButtons", "AFXVISUALMANAGER/CMFCVisualManager::IsDockingTabHasBorder", "AFXVISUALMANAGER/CMFCVisualManager::IsEmbossDisabledImage", "AFXVISUALMANAGER/CMFCVisualManager::IsFadeInactiveImage", "AFXVISUALMANAGER/CMFCVisualManager::IsMenuFlatLook", "AFXVISUALMANAGER/CMFCVisualManager::IsOfficeXPStyleMenus", "AFXVISUALMANAGER/CMFCVisualManager::IsOwnerDrawCaption", "AFXVISUALMANAGER/CMFCVisualManager::IsShadowHighlightedImage", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawAutoHideButtonBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawBarGripper", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawBrowseButton", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawButtonBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawButtonSeparator", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawCaptionBarBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawCaptionBarButtonBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawCaptionBarInfoArea", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawCaptionButton", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawCheckBox", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawCheckBoxEx", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawComboBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawComboDropButton", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawControlBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawDefaultRibbonImage", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawEditBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawExpandingBox", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawFloatingToolbarBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawHeaderCtrlBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawHeaderCtrlSortArrow", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawMenuArrowOnCustomizeList", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawMenuBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawMenuCheck", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawMenuItemButton", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawMenuLabel", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawMenuResizeBar", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawMenuScrollButton", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawMenuShadow", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawMenuSystemButton", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawMiniFrameBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawOutlookBarSplitter", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawOutlookPageButtonBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawPaneBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawPaneCaption", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawPaneDivider", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawPopupWindowBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawPopupWindowButtonBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawPopupWindowCaption", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonApplicationButton", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonButtonBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonButtonsGroup", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonCaption", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonCaptionButton", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonCategory", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonCategoryCaption", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonCategoryScroll", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonCategoryTab", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonCheckBoxOnList", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonColorPaletteBox", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonDefaultPaneButtonContext", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonDefaultPaneButton", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonDefaultPaneButtonIndicator", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonGalleryBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonGalleryButton", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonKeyTip", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonLabel", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonMainPanelButtonBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonMainPanelFrame", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonMenuCheckFrame", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonPanel", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonPanelCaption", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonProgressBar", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonQuickAccessToolBarSeparator", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonRecentFilesFrame", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonSliderChannel", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonSliderThumb", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonSliderZoomButton", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonStatusBarPane", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawRibbonTabsFrame", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawScrollButtons", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawSeparator", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawShowAllMenuItems", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawSpinButtons", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawSplitterBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawSplitterBox", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawStatusBarPaneBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawStatusBarProgress", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawStatusBarSizeBox", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawTab", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawTabCloseButton", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawTabContent", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawTabsButtonBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawTask", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawTasksGroupAreaBorder", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawTasksGroupCaption", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawTasksGroupIcon", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawTearOffCaption", "AFXVISUALMANAGER/CMFCVisualManager::OnDrawToolBoxFrame", "AFXVISUALMANAGER/CMFCVisualManager::OnEraseMDIClientArea", "AFXVISUALMANAGER/CMFCVisualManager::OnErasePopupWindowButton", "AFXVISUALMANAGER/CMFCVisualManager::OnEraseTabsArea", "AFXVISUALMANAGER/CMFCVisualManager::OnEraseTabsButton", "AFXVISUALMANAGER/CMFCVisualManager::OnEraseTabsFrame", "AFXVISUALMANAGER/CMFCVisualManager::OnFillAutoHideButtonBackground", "AFXVISUALMANAGER/CMFCVisualManager::OnFillBarBackground", "AFXVISUALMANAGER/CMFCVisualManager::OnFillButtonInterior", "AFXVISUALMANAGER/CMFCVisualManager::OnFillCaptionBarButton", "AFXVISUALMANAGER/CMFCVisualManager::OnFillCommandsListBackground", "AFXVISUALMANAGER/CMFCVisualManager::OnFillHeaderCtrlBackground", "AFXVISUALMANAGER/CMFCVisualManager::OnFillMiniFrameCaption", "AFXVISUALMANAGER/CMFCVisualManager::OnFillOutlookBarCaption", "AFXVISUALMANAGER/CMFCVisualManager::OnFillOutlookPageButton", "AFXVISUALMANAGER/CMFCVisualManager::OnFillPopupWindowBackground", "AFXVISUALMANAGER/CMFCVisualManager::OnFillRibbonButton", "AFXVISUALMANAGER/CMFCVisualManager::OnFillRibbonEdit", "AFXVISUALMANAGER/CMFCVisualManager::OnFillRibbonMainPanelButton", "AFXVISUALMANAGER/CMFCVisualManager::OnFillRibbonMenuFrame", "AFXVISUALMANAGER/CMFCVisualManager::OnFillRibbonQuickAccessToolBarPopup", "AFXVISUALMANAGER/CMFCVisualManager::OnFillSplitterBackground", "AFXVISUALMANAGER/CMFCVisualManager::OnFillTab", "AFXVISUALMANAGER/CMFCVisualManager::OnFillTasksGroupInterior", "AFXVISUALMANAGER/CMFCVisualManager::OnFillTasksPaneBackground", "AFXVISUALMANAGER/CMFCVisualManager::OnHighlightMenuItem", "AFXVISUALMANAGER/CMFCVisualManager::OnHighlightRarelyUsedMenuItems", "AFXVISUALMANAGER/CMFCVisualManager::OnNcPaint", "AFXVISUALMANAGER/CMFCVisualManager::OnSetWindowRegion", "AFXVISUALMANAGER/CMFCVisualManager::OnUpdateSystemColors", "AFXVISUALMANAGER/CMFCVisualManager::RedrawAll", "AFXVISUALMANAGER/CMFCVisualManager::RibbonCategoryColorToRGB", "AFXVISUALMANAGER/CMFCVisualManager::SetDefaultManager", "AFXVISUALMANAGER/CMFCVisualManager::SetEmbossDisabledImage", "AFXVISUALMANAGER/CMFCVisualManager::SetFadeInactiveImage", "AFXVISUALMANAGER/CMFCVisualManager::SetMenuFlatLook", "AFXVISUALMANAGER/CMFCVisualManager::SetMenuShadowDepth", "AFXVISUALMANAGER/CMFCVisualManager::SetShadowHighlightedImage"] helpviewer_keywords: ["CMFCVisualManager [MFC], AdjustFrames", "CMFCVisualManager [MFC], AdjustToolbars", "CMFCVisualManager [MFC], AlwaysHighlight3DTabs", "CMFCVisualManager [MFC], DestroyInstance", "CMFCVisualManager [MFC], DoDrawHeaderSortArrow", "CMFCVisualManager [MFC], DrawComboDropButtonWinXP", "CMFCVisualManager [MFC], DrawPushButtonWinXP", "CMFCVisualManager [MFC], DrawTextOnGlass", "CMFCVisualManager [MFC], GetAutoHideButtonTextColor", "CMFCVisualManager [MFC], GetButtonExtraBorder", "CMFCVisualManager [MFC], GetCaptionBarTextColor", "CMFCVisualManager [MFC], GetDockingTabsBordersSize", "CMFCVisualManager [MFC], GetHighlightedMenuItemTextColor", "CMFCVisualManager [MFC], GetInstance", "CMFCVisualManager [MFC], GetMDITabsBordersSize", "CMFCVisualManager [MFC], GetMenuItemTextColor", "CMFCVisualManager [MFC], GetMenuShadowDepth", "CMFCVisualManager [MFC], GetNcBtnSize", "CMFCVisualManager [MFC], GetPopupMenuBorderSize", "CMFCVisualManager [MFC], GetPropertyGridGroupColor", "CMFCVisualManager [MFC], GetPropertyGridGroupTextColor", "CMFCVisualManager [MFC], GetRibbonHyperlinkTextColor", "CMFCVisualManager [MFC], GetRibbonPopupBorderSize", "CMFCVisualManager [MFC], GetRibbonQuickAccessToolBarTextColor", "CMFCVisualManager [MFC], GetRibbonSliderColors", "CMFCVisualManager [MFC], GetShowAllMenuItemsHeight", "CMFCVisualManager [MFC], GetSmartDockingBaseGuideColors", "CMFCVisualManager [MFC], GetSmartDockingHighlightToneColor", "CMFCVisualManager [MFC], GetSmartDockingTheme", "CMFCVisualManager [MFC], GetStatusBarPaneTextColor", "CMFCVisualManager [MFC], GetTabFrameColors", "CMFCVisualManager [MFC], GetTabTextColor", "CMFCVisualManager [MFC], GetToolbarButtonTextColor", "CMFCVisualManager [MFC], GetToolbarDisabledTextColor", "CMFCVisualManager [MFC], GetToolbarHighlightColor", "CMFCVisualManager [MFC], GetToolTipInfo", "CMFCVisualManager [MFC], HasOverlappedAutoHideButtons", "CMFCVisualManager [MFC], IsDockingTabHasBorder", "CMFCVisualManager [MFC], IsEmbossDisabledImage", "CMFCVisualManager [MFC], IsFadeInactiveImage", "CMFCVisualManager [MFC], IsMenuFlatLook", "CMFCVisualManager [MFC], IsOfficeXPStyleMenus", "CMFCVisualManager [MFC], IsOwnerDrawCaption", "CMFCVisualManager [MFC], IsShadowHighlightedImage", "CMFCVisualManager [MFC], OnDrawAutoHideButtonBorder", "CMFCVisualManager [MFC], OnDrawBarGripper", "CMFCVisualManager [MFC], OnDrawBrowseButton", "CMFCVisualManager [MFC], OnDrawButtonBorder", "CMFCVisualManager [MFC], OnDrawButtonSeparator", "CMFCVisualManager [MFC], OnDrawCaptionBarBorder", "CMFCVisualManager [MFC], OnDrawCaptionBarButtonBorder", "CMFCVisualManager [MFC], OnDrawCaptionBarInfoArea", "CMFCVisualManager [MFC], OnDrawCaptionButton", "CMFCVisualManager [MFC], OnDrawCheckBox", "CMFCVisualManager [MFC], OnDrawCheckBoxEx", "CMFCVisualManager [MFC], OnDrawComboBorder", "CMFCVisualManager [MFC], OnDrawComboDropButton", "CMFCVisualManager [MFC], OnDrawControlBorder", "CMFCVisualManager [MFC], OnDrawDefaultRibbonImage", "CMFCVisualManager [MFC], OnDrawEditBorder", "CMFCVisualManager [MFC], OnDrawExpandingBox", "CMFCVisualManager [MFC], OnDrawFloatingToolbarBorder", "CMFCVisualManager [MFC], OnDrawHeaderCtrlBorder", "CMFCVisualManager [MFC], OnDrawHeaderCtrlSortArrow", "CMFCVisualManager [MFC], OnDrawMenuArrowOnCustomizeList", "CMFCVisualManager [MFC], OnDrawMenuBorder", "CMFCVisualManager [MFC], OnDrawMenuCheck", "CMFCVisualManager [MFC], OnDrawMenuItemButton", "CMFCVisualManager [MFC], OnDrawMenuLabel", "CMFCVisualManager [MFC], OnDrawMenuResizeBar", "CMFCVisualManager [MFC], OnDrawMenuScrollButton", "CMFCVisualManager [MFC], OnDrawMenuShadow", "CMFCVisualManager [MFC], OnDrawMenuSystemButton", "CMFCVisualManager [MFC], OnDrawMiniFrameBorder", "CMFCVisualManager [MFC], OnDrawOutlookBarSplitter", "CMFCVisualManager [MFC], OnDrawOutlookPageButtonBorder", "CMFCVisualManager [MFC], OnDrawPaneBorder", "CMFCVisualManager [MFC], OnDrawPaneCaption", "CMFCVisualManager [MFC], OnDrawPaneDivider", "CMFCVisualManager [MFC], OnDrawPopupWindowBorder", "CMFCVisualManager [MFC], OnDrawPopupWindowButtonBorder", "CMFCVisualManager [MFC], OnDrawPopupWindowCaption", "CMFCVisualManager [MFC], OnDrawRibbonApplicationButton", "CMFCVisualManager [MFC], OnDrawRibbonButtonBorder", "CMFCVisualManager [MFC], OnDrawRibbonButtonsGroup", "CMFCVisualManager [MFC], OnDrawRibbonCaption", "CMFCVisualManager [MFC], OnDrawRibbonCaptionButton", "CMFCVisualManager [MFC], OnDrawRibbonCategory", "CMFCVisualManager [MFC], OnDrawRibbonCategoryCaption", "CMFCVisualManager [MFC], OnDrawRibbonCategoryScroll", "CMFCVisualManager [MFC], OnDrawRibbonCategoryTab", "CMFCVisualManager [MFC], OnDrawRibbonCheckBoxOnList", "CMFCVisualManager [MFC], OnDrawRibbonColorPaletteBox", "CMFCVisualManager [MFC], OnDrawRibbonDefaultPaneButtonContext", "CMFCVisualManager [MFC], OnDrawRibbonDefaultPaneButton", "CMFCVisualManager [MFC], OnDrawRibbonDefaultPaneButtonIndicator", "CMFCVisualManager [MFC], OnDrawRibbonGalleryBorder", "CMFCVisualManager [MFC], OnDrawRibbonGalleryButton", "CMFCVisualManager [MFC], OnDrawRibbonKeyTip", "CMFCVisualManager [MFC], OnDrawRibbonLabel", "CMFCVisualManager [MFC], OnDrawRibbonMainPanelButtonBorder", "CMFCVisualManager [MFC], OnDrawRibbonMainPanelFrame", "CMFCVisualManager [MFC], OnDrawRibbonMenuCheckFrame", "CMFCVisualManager [MFC], OnDrawRibbonPanel", "CMFCVisualManager [MFC], OnDrawRibbonPanelCaption", "CMFCVisualManager [MFC], OnDrawRibbonProgressBar", "CMFCVisualManager [MFC], OnDrawRibbonQuickAccessToolBarSeparator", "CMFCVisualManager [MFC], OnDrawRibbonRecentFilesFrame", "CMFCVisualManager [MFC], OnDrawRibbonSliderChannel", "CMFCVisualManager [MFC], OnDrawRibbonSliderThumb", "CMFCVisualManager [MFC], OnDrawRibbonSliderZoomButton", "CMFCVisualManager [MFC], OnDrawRibbonStatusBarPane", "CMFCVisualManager [MFC], OnDrawRibbonTabsFrame", "CMFCVisualManager [MFC], OnDrawScrollButtons", "CMFCVisualManager [MFC], OnDrawSeparator", "CMFCVisualManager [MFC], OnDrawShowAllMenuItems", "CMFCVisualManager [MFC], OnDrawSpinButtons", "CMFCVisualManager [MFC], OnDrawSplitterBorder", "CMFCVisualManager [MFC], OnDrawSplitterBox", "CMFCVisualManager [MFC], OnDrawStatusBarPaneBorder", "CMFCVisualManager [MFC], OnDrawStatusBarProgress", "CMFCVisualManager [MFC], OnDrawStatusBarSizeBox", "CMFCVisualManager [MFC], OnDrawTab", "CMFCVisualManager [MFC], OnDrawTabCloseButton", "CMFCVisualManager [MFC], OnDrawTabContent", "CMFCVisualManager [MFC], OnDrawTabsButtonBorder", "CMFCVisualManager [MFC], OnDrawTask", "CMFCVisualManager [MFC], OnDrawTasksGroupAreaBorder", "CMFCVisualManager [MFC], OnDrawTasksGroupCaption", "CMFCVisualManager [MFC], OnDrawTasksGroupIcon", "CMFCVisualManager [MFC], OnDrawTearOffCaption", "CMFCVisualManager [MFC], OnDrawToolBoxFrame", "CMFCVisualManager [MFC], OnEraseMDIClientArea", "CMFCVisualManager [MFC], OnErasePopupWindowButton", "CMFCVisualManager [MFC], OnEraseTabsArea", "CMFCVisualManager [MFC], OnEraseTabsButton", "CMFCVisualManager [MFC], OnEraseTabsFrame", "CMFCVisualManager [MFC], OnFillAutoHideButtonBackground", "CMFCVisualManager [MFC], OnFillBarBackground", "CMFCVisualManager [MFC], OnFillButtonInterior", "CMFCVisualManager [MFC], OnFillCaptionBarButton", "CMFCVisualManager [MFC], OnFillCommandsListBackground", "CMFCVisualManager [MFC], OnFillHeaderCtrlBackground", "CMFCVisualManager [MFC], OnFillMiniFrameCaption", "CMFCVisualManager [MFC], OnFillOutlookBarCaption", "CMFCVisualManager [MFC], OnFillOutlookPageButton", "CMFCVisualManager [MFC], OnFillPopupWindowBackground", "CMFCVisualManager [MFC], OnFillRibbonButton", "CMFCVisualManager [MFC], OnFillRibbonEdit", "CMFCVisualManager [MFC], OnFillRibbonMainPanelButton", "CMFCVisualManager [MFC], OnFillRibbonMenuFrame", "CMFCVisualManager [MFC], OnFillRibbonQuickAccessToolBarPopup", "CMFCVisualManager [MFC], OnFillSplitterBackground", "CMFCVisualManager [MFC], OnFillTab", "CMFCVisualManager [MFC], OnFillTasksGroupInterior", "CMFCVisualManager [MFC], OnFillTasksPaneBackground", "CMFCVisualManager [MFC], OnHighlightMenuItem", "CMFCVisualManager [MFC], OnHighlightRarelyUsedMenuItems", "CMFCVisualManager [MFC], OnNcPaint", "CMFCVisualManager [MFC], OnSetWindowRegion", "CMFCVisualManager [MFC], OnUpdateSystemColors", "CMFCVisualManager [MFC], RedrawAll", "CMFCVisualManager [MFC], RibbonCategoryColorToRGB", "CMFCVisualManager [MFC], SetDefaultManager", "CMFCVisualManager [MFC], SetEmbossDisabledImage", "CMFCVisualManager [MFC], SetFadeInactiveImage", "CMFCVisualManager [MFC], SetMenuFlatLook", "CMFCVisualManager [MFC], SetMenuShadowDepth", "CMFCVisualManager [MFC], SetShadowHighlightedImage"] -ms.assetid: beed80f7-36a2-4d64-9f09-e807cfefc3fe --- # CMFCVisualManager Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides support for changing the appearance of your application at a global level. The `CMFCVisualManager` class works together with a class that provides instructions to draw the GUI controls of your application using a consistent style. These other classes are referred to as visual managers and they inherit from `CMFCBaseVisualManager`. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcvisualmanageroffice2003-class.md b/docs/mfc/reference/cmfcvisualmanageroffice2003-class.md index b7e77059dcf..3ae383f3c4c 100644 --- a/docs/mfc/reference/cmfcvisualmanageroffice2003-class.md +++ b/docs/mfc/reference/cmfcvisualmanageroffice2003-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMFCVisualManagerOffice2003 Class [MFC]"] --- # CMFCVisualManagerOffice2003 Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + `CMFCVisualManagerOffice2003` gives an application a Microsoft Office 2003 appearance. ## Syntax diff --git a/docs/mfc/reference/cmfcvisualmanageroffice2007-class.md b/docs/mfc/reference/cmfcvisualmanageroffice2007-class.md index b0620fe6b8f..ee13a6682b2 100644 --- a/docs/mfc/reference/cmfcvisualmanageroffice2007-class.md +++ b/docs/mfc/reference/cmfcvisualmanageroffice2007-class.md @@ -4,10 +4,12 @@ title: "CMFCVisualManagerOffice2007 Class" ms.date: "11/04/2016" f1_keywords: ["CMFCVisualManagerOffice2007", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::AlwaysHighlight3DTabs", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::CleanStyle", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetCaptionBarTextColor", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetHighlightedMenuItemTextColor", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetMenuItemTextColor", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetNcBtnSize", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetRibbonBar", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetRibbonHyperlinkTextColor", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetRibbonPopupBorderSize", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetRibbonQuickAccessToolBarChevronOffset", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetRibbonQuickAccessToolBarRightMargin", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetRibbonQuickAccessToolBarTextColor", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetRibbonStatusBarTextColor", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetShowAllMenuItemsHeight", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetStatusBarPaneTextColor", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetTabFrameColors", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetTabHorzMargin", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetTabTextColor", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetToolbarButtonTextColor", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetToolbarDisabledTextColor", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::GetToolTipInfo", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::IsHighlightWholeMenuItem", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::IsLayeredRibbonKeyTip", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::IsOwnerDrawCaption", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::IsOwnerDrawMenuCheck", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::IsRibbonPresent", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawBarGripper", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawButtonBorder", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawButtonSeparator", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawCaptionBarInfoArea", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawCheckBoxEx", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawComboBorder", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawComboDropButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawDefaultRibbonImage", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawEditBorder", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawFloatingToolbarBorder", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawHeaderCtrlBorder", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawMenuBorder", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawMenuCheck", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawMenuItemButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawMenuLabel", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawMenuResizeBar", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawMenuScrollButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawMenuSystemButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawMiniFrameBorder", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawOutlookBarSplitter", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawOutlookPageButtonBorder", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawPaneCaption", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawPopupWindowCaption", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawPropertySheetListItem", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonApplicationButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonButtonBorder", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonButtonsGroup", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonCaption", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonCaptionButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonCategory", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonCategoryCaption", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonCategoryScroll", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonCategoryTab", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonCheckBoxOnList", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonDefaultPaneButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonDefaultPaneButtonIndicator", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonGalleryBorder", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonGalleryButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonKeyTip", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonMainPanelButtonBorder", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonMainPanelFrame", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonMenuCheckFrame", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonPanel", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonPanelCaption", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonProgressBar", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonRecentFilesFrame", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonSliderChannel", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonSliderThumb", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonSliderZoomButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonStatusBarPane", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawRibbonTabsFrame", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawScrollButtons", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawSeparator", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawShowAllMenuItems", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawStatusBarPaneBorder", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawStatusBarSizeBox", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawTab", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawTabsButtonBorder", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawTask", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawTasksGroupCaption", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnDrawTearOffCaption", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnEraseMDIClientArea", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnEraseTabsArea", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnEraseTabsButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnEraseTabsFrame", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillBarBackground", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillButtonInterior", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillCaptionBarButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillHighlightedArea", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillMiniFrameCaption", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillOutlookBarCaption", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillOutlookPageButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillPopupWindowBackground", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillRibbonButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillRibbonEdit", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillRibbonMainPanelButton", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillRibbonMenuFrame", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillRibbonQuickAccessToolBarPopup", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnFillTab", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnHighlightMenuItem", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnHighlightRarelyUsedMenuItems", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnNcActivate", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnNcPaint", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnSetWindowRegion", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::OnUpdateSystemColors", "AFXVISUALMANAGEROFFICE2007/CMFCVisualManagerOffice2007::SetResourceHandle"] helpviewer_keywords: ["CMFCVisualManagerOffice2007 [MFC], AlwaysHighlight3DTabs", "CMFCVisualManagerOffice2007 [MFC], CleanStyle", "CMFCVisualManagerOffice2007 [MFC], GetCaptionBarTextColor", "CMFCVisualManagerOffice2007 [MFC], GetHighlightedMenuItemTextColor", "CMFCVisualManagerOffice2007 [MFC], GetMenuItemTextColor", "CMFCVisualManagerOffice2007 [MFC], GetNcBtnSize", "CMFCVisualManagerOffice2007 [MFC], GetRibbonBar", "CMFCVisualManagerOffice2007 [MFC], GetRibbonHyperlinkTextColor", "CMFCVisualManagerOffice2007 [MFC], GetRibbonPopupBorderSize", "CMFCVisualManagerOffice2007 [MFC], GetRibbonQuickAccessToolBarChevronOffset", "CMFCVisualManagerOffice2007 [MFC], GetRibbonQuickAccessToolBarRightMargin", "CMFCVisualManagerOffice2007 [MFC], GetRibbonQuickAccessToolBarTextColor", "CMFCVisualManagerOffice2007 [MFC], GetRibbonStatusBarTextColor", "CMFCVisualManagerOffice2007 [MFC], GetShowAllMenuItemsHeight", "CMFCVisualManagerOffice2007 [MFC], GetStatusBarPaneTextColor", "CMFCVisualManagerOffice2007 [MFC], GetTabFrameColors", "CMFCVisualManagerOffice2007 [MFC], GetTabHorzMargin", "CMFCVisualManagerOffice2007 [MFC], GetTabTextColor", "CMFCVisualManagerOffice2007 [MFC], GetToolbarButtonTextColor", "CMFCVisualManagerOffice2007 [MFC], GetToolbarDisabledTextColor", "CMFCVisualManagerOffice2007 [MFC], GetToolTipInfo", "CMFCVisualManagerOffice2007 [MFC], IsHighlightWholeMenuItem", "CMFCVisualManagerOffice2007 [MFC], IsLayeredRibbonKeyTip", "CMFCVisualManagerOffice2007 [MFC], IsOwnerDrawCaption", "CMFCVisualManagerOffice2007 [MFC], IsOwnerDrawMenuCheck", "CMFCVisualManagerOffice2007 [MFC], IsRibbonPresent", "CMFCVisualManagerOffice2007 [MFC], OnDrawBarGripper", "CMFCVisualManagerOffice2007 [MFC], OnDrawButtonBorder", "CMFCVisualManagerOffice2007 [MFC], OnDrawButtonSeparator", "CMFCVisualManagerOffice2007 [MFC], OnDrawCaptionBarInfoArea", "CMFCVisualManagerOffice2007 [MFC], OnDrawCheckBoxEx", "CMFCVisualManagerOffice2007 [MFC], OnDrawComboBorder", "CMFCVisualManagerOffice2007 [MFC], OnDrawComboDropButton", "CMFCVisualManagerOffice2007 [MFC], OnDrawDefaultRibbonImage", "CMFCVisualManagerOffice2007 [MFC], OnDrawEditBorder", "CMFCVisualManagerOffice2007 [MFC], OnDrawFloatingToolbarBorder", "CMFCVisualManagerOffice2007 [MFC], OnDrawHeaderCtrlBorder", "CMFCVisualManagerOffice2007 [MFC], OnDrawMenuBorder", "CMFCVisualManagerOffice2007 [MFC], OnDrawMenuCheck", "CMFCVisualManagerOffice2007 [MFC], OnDrawMenuItemButton", "CMFCVisualManagerOffice2007 [MFC], OnDrawMenuLabel", "CMFCVisualManagerOffice2007 [MFC], OnDrawMenuResizeBar", "CMFCVisualManagerOffice2007 [MFC], OnDrawMenuScrollButton", "CMFCVisualManagerOffice2007 [MFC], OnDrawMenuSystemButton", "CMFCVisualManagerOffice2007 [MFC], OnDrawMiniFrameBorder", "CMFCVisualManagerOffice2007 [MFC], OnDrawOutlookBarSplitter", "CMFCVisualManagerOffice2007 [MFC], OnDrawOutlookPageButtonBorder", "CMFCVisualManagerOffice2007 [MFC], OnDrawPaneCaption", "CMFCVisualManagerOffice2007 [MFC], OnDrawPopupWindowCaption", "CMFCVisualManagerOffice2007 [MFC], OnDrawPropertySheetListItem", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonApplicationButton", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonButtonBorder", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonButtonsGroup", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonCaption", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonCaptionButton", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonCategory", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonCategoryCaption", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonCategoryScroll", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonCategoryTab", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonCheckBoxOnList", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonDefaultPaneButton", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonDefaultPaneButtonIndicator", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonGalleryBorder", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonGalleryButton", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonKeyTip", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonMainPanelButtonBorder", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonMainPanelFrame", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonMenuCheckFrame", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonPanel", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonPanelCaption", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonProgressBar", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonRecentFilesFrame", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonSliderChannel", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonSliderThumb", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonSliderZoomButton", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonStatusBarPane", "CMFCVisualManagerOffice2007 [MFC], OnDrawRibbonTabsFrame", "CMFCVisualManagerOffice2007 [MFC], OnDrawScrollButtons", "CMFCVisualManagerOffice2007 [MFC], OnDrawSeparator", "CMFCVisualManagerOffice2007 [MFC], OnDrawShowAllMenuItems", "CMFCVisualManagerOffice2007 [MFC], OnDrawStatusBarPaneBorder", "CMFCVisualManagerOffice2007 [MFC], OnDrawStatusBarSizeBox", "CMFCVisualManagerOffice2007 [MFC], OnDrawTab", "CMFCVisualManagerOffice2007 [MFC], OnDrawTabsButtonBorder", "CMFCVisualManagerOffice2007 [MFC], OnDrawTask", "CMFCVisualManagerOffice2007 [MFC], OnDrawTasksGroupCaption", "CMFCVisualManagerOffice2007 [MFC], OnDrawTearOffCaption", "CMFCVisualManagerOffice2007 [MFC], OnEraseMDIClientArea", "CMFCVisualManagerOffice2007 [MFC], OnEraseTabsArea", "CMFCVisualManagerOffice2007 [MFC], OnEraseTabsButton", "CMFCVisualManagerOffice2007 [MFC], OnEraseTabsFrame", "CMFCVisualManagerOffice2007 [MFC], OnFillBarBackground", "CMFCVisualManagerOffice2007 [MFC], OnFillButtonInterior", "CMFCVisualManagerOffice2007 [MFC], OnFillCaptionBarButton", "CMFCVisualManagerOffice2007 [MFC], OnFillHighlightedArea", "CMFCVisualManagerOffice2007 [MFC], OnFillMiniFrameCaption", "CMFCVisualManagerOffice2007 [MFC], OnFillOutlookBarCaption", "CMFCVisualManagerOffice2007 [MFC], OnFillOutlookPageButton", "CMFCVisualManagerOffice2007 [MFC], OnFillPopupWindowBackground", "CMFCVisualManagerOffice2007 [MFC], OnFillRibbonButton", "CMFCVisualManagerOffice2007 [MFC], OnFillRibbonEdit", "CMFCVisualManagerOffice2007 [MFC], OnFillRibbonMainPanelButton", "CMFCVisualManagerOffice2007 [MFC], OnFillRibbonMenuFrame", "CMFCVisualManagerOffice2007 [MFC], OnFillRibbonQuickAccessToolBarPopup", "CMFCVisualManagerOffice2007 [MFC], OnFillTab", "CMFCVisualManagerOffice2007 [MFC], OnHighlightMenuItem", "CMFCVisualManagerOffice2007 [MFC], OnHighlightRarelyUsedMenuItems", "CMFCVisualManagerOffice2007 [MFC], OnNcActivate", "CMFCVisualManagerOffice2007 [MFC], OnNcPaint", "CMFCVisualManagerOffice2007 [MFC], OnSetWindowRegion", "CMFCVisualManagerOffice2007 [MFC], OnUpdateSystemColors", "CMFCVisualManagerOffice2007 [MFC], SetResourceHandle"] -ms.assetid: fb687c74-6d08-4c72-8acf-27f75dda6d6b --- # CMFCVisualManagerOffice2007 Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + `CMFCVisualManagerOffice2007` gives an application a Microsoft Office 2007 appearance. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcvisualmanagerofficexp-class.md b/docs/mfc/reference/cmfcvisualmanagerofficexp-class.md index ed358d6d4d4..4639abf5286 100644 --- a/docs/mfc/reference/cmfcvisualmanagerofficexp-class.md +++ b/docs/mfc/reference/cmfcvisualmanagerofficexp-class.md @@ -4,10 +4,12 @@ title: "CMFCVisualManagerOfficeXP Class" ms.date: "11/04/2016" f1_keywords: ["CMFCVisualManagerOfficeXP"] helpviewer_keywords: ["CMFCVisualManagerOfficeXP class [MFC]"] -ms.assetid: 46b6f854-37c2-4836-8f56-5cb6ff63c9af --- # CMFCVisualManagerOfficeXP Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCVisualManagerOfficeXP` gives an application a Microsoft Office XP appearance. ## Syntax diff --git a/docs/mfc/reference/cmfcvisualmanagervs2005-class.md b/docs/mfc/reference/cmfcvisualmanagervs2005-class.md index 4f612c6a6dc..0fd63adf20a 100644 --- a/docs/mfc/reference/cmfcvisualmanagervs2005-class.md +++ b/docs/mfc/reference/cmfcvisualmanagervs2005-class.md @@ -4,10 +4,12 @@ title: "CMFCVisualManagerVS2005 Class" ms.date: "11/04/2016" f1_keywords: ["CMFCVisualManagerVS2005", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::GetDockingTabsBordersSize", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::GetMDITabsBordersSize", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::GetPropertyGridGroupColor", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::GetTabFrameColors", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::HasOverlappedAutoHideButtons", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::OnDrawAutoHideButtonBorder", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::OnDrawCaptionButton", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::OnDrawPaneCaption", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::OnDrawSeparator", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::OnDrawTab", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::OnDrawToolBoxFrame", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::OnEraseTabsArea", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::OnFillAutoHideButtonBackground", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::OnFillHighlightedArea", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::OnFillMiniFrameCaption", "AFXVISUALMANAGERVS2005/CMFCVisualManagerVS2005::OnUpdateSystemColors"] helpviewer_keywords: ["CMFCVisualManagerVS2005 [MFC], GetDockingTabsBordersSize", "CMFCVisualManagerVS2005 [MFC], GetMDITabsBordersSize", "CMFCVisualManagerVS2005 [MFC], GetPropertyGridGroupColor", "CMFCVisualManagerVS2005 [MFC], GetTabFrameColors", "CMFCVisualManagerVS2005 [MFC], HasOverlappedAutoHideButtons", "CMFCVisualManagerVS2005 [MFC], OnDrawAutoHideButtonBorder", "CMFCVisualManagerVS2005 [MFC], OnDrawCaptionButton", "CMFCVisualManagerVS2005 [MFC], OnDrawPaneCaption", "CMFCVisualManagerVS2005 [MFC], OnDrawSeparator", "CMFCVisualManagerVS2005 [MFC], OnDrawTab", "CMFCVisualManagerVS2005 [MFC], OnDrawToolBoxFrame", "CMFCVisualManagerVS2005 [MFC], OnEraseTabsArea", "CMFCVisualManagerVS2005 [MFC], OnFillAutoHideButtonBackground", "CMFCVisualManagerVS2005 [MFC], OnFillHighlightedArea", "CMFCVisualManagerVS2005 [MFC], OnFillMiniFrameCaption", "CMFCVisualManagerVS2005 [MFC], OnUpdateSystemColors"] -ms.assetid: ea39b9ae-327e-4a51-bce7-dc84c78f005b --- # CMFCVisualManagerVS2005 Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + `CMFCVisualManagerVS2005` gives an application a Microsoft Visual Studio 2005 appearance. ## Syntax diff --git a/docs/mfc/reference/cmfcvisualmanagerwindows-class.md b/docs/mfc/reference/cmfcvisualmanagerwindows-class.md index 6579ed1aba2..0149e9a9721 100644 --- a/docs/mfc/reference/cmfcvisualmanagerwindows-class.md +++ b/docs/mfc/reference/cmfcvisualmanagerwindows-class.md @@ -4,10 +4,12 @@ title: "CMFCVisualManagerWindows Class" ms.date: "11/04/2016" f1_keywords: ["CMFCVisualManagerWindows", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::AlwaysHighlight3DTabs", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::DrawComboBorderWinXP", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::DrawComboDropButtonWinXP", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::DrawPushButtonWinXP", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::GetButtonExtraBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::GetCaptionButtonExtraBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::GetDockingPaneCaptionExtraHeight", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::GetHighlightedMenuItemTextColor", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::GetPopupMenuGap", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::GetToolbarButtonTextColor", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::IsDefaultWinXPPopupButton", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::IsHighlightWholeMenuItem", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::IsOfficeStyleMenus", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::IsOfficeXPStyleMenus", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::IsWindowsThemingSupported", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::IsWinXPThemeAvailable", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawBarGripper", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawBrowseButton", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawButtonBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawButtonSeparator", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawCaptionButton", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawCaptionButtonIcon", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawCheckBoxEx", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawComboBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawComboDropButton", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawControlBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawEditBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawExpandingBox", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawFloatingToolbarBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawHeaderCtrlBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawHeaderCtrlSortArrow", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawMenuBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawMenuSystemButton", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawMiniFrameBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawOutlookPageButtonBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawPaneBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawPaneCaption", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawPopupWindowButtonBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawScrollButtons", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawSeparator", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawSpinButtons", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawStatusBarPaneBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawStatusBarProgress", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawStatusBarSizeBox", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawTab", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawTabCloseButton", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawTabsButtonBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawTask", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawTasksGroupAreaBorder", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawTasksGroupCaption", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnDrawTearOffCaption", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnErasePopupWindowButton", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnEraseTabsArea", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnEraseTabsButton", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnEraseTabsFrame", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnFillBarBackground", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnFillButtonInterior", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnFillCommandsListBackground", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnFillMiniFrameCaption", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnFillOutlookPageButton", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnFillTasksGroupInterior", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnFillTasksPaneBackground", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnHighlightMenuItem", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnHighlightRarelyUsedMenuItems", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::OnUpdateSystemColors", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::SetOfficeStyleMenus", "AFXVISUALMANAGERWINDOWS/CMFCVisualManagerWindows::m_b3DTabsXPTheme"] helpviewer_keywords: ["CMFCVisualManagerWindows [MFC], AlwaysHighlight3DTabs", "CMFCVisualManagerWindows [MFC], DrawComboBorderWinXP", "CMFCVisualManagerWindows [MFC], DrawComboDropButtonWinXP", "CMFCVisualManagerWindows [MFC], DrawPushButtonWinXP", "CMFCVisualManagerWindows [MFC], GetButtonExtraBorder", "CMFCVisualManagerWindows [MFC], GetCaptionButtonExtraBorder", "CMFCVisualManagerWindows [MFC], GetDockingPaneCaptionExtraHeight", "CMFCVisualManagerWindows [MFC], GetHighlightedMenuItemTextColor", "CMFCVisualManagerWindows [MFC], GetPopupMenuGap", "CMFCVisualManagerWindows [MFC], GetToolbarButtonTextColor", "CMFCVisualManagerWindows [MFC], IsDefaultWinXPPopupButton", "CMFCVisualManagerWindows [MFC], IsHighlightWholeMenuItem", "CMFCVisualManagerWindows [MFC], IsOfficeStyleMenus", "CMFCVisualManagerWindows [MFC], IsOfficeXPStyleMenus", "CMFCVisualManagerWindows [MFC], IsWindowsThemingSupported", "CMFCVisualManagerWindows [MFC], IsWinXPThemeAvailable", "CMFCVisualManagerWindows [MFC], OnDrawBarGripper", "CMFCVisualManagerWindows [MFC], OnDrawBrowseButton", "CMFCVisualManagerWindows [MFC], OnDrawButtonBorder", "CMFCVisualManagerWindows [MFC], OnDrawButtonSeparator", "CMFCVisualManagerWindows [MFC], OnDrawCaptionButton", "CMFCVisualManagerWindows [MFC], OnDrawCaptionButtonIcon", "CMFCVisualManagerWindows [MFC], OnDrawCheckBoxEx", "CMFCVisualManagerWindows [MFC], OnDrawComboBorder", "CMFCVisualManagerWindows [MFC], OnDrawComboDropButton", "CMFCVisualManagerWindows [MFC], OnDrawControlBorder", "CMFCVisualManagerWindows [MFC], OnDrawEditBorder", "CMFCVisualManagerWindows [MFC], OnDrawExpandingBox", "CMFCVisualManagerWindows [MFC], OnDrawFloatingToolbarBorder", "CMFCVisualManagerWindows [MFC], OnDrawHeaderCtrlBorder", "CMFCVisualManagerWindows [MFC], OnDrawHeaderCtrlSortArrow", "CMFCVisualManagerWindows [MFC], OnDrawMenuBorder", "CMFCVisualManagerWindows [MFC], OnDrawMenuSystemButton", "CMFCVisualManagerWindows [MFC], OnDrawMiniFrameBorder", "CMFCVisualManagerWindows [MFC], OnDrawOutlookPageButtonBorder", "CMFCVisualManagerWindows [MFC], OnDrawPaneBorder", "CMFCVisualManagerWindows [MFC], OnDrawPaneCaption", "CMFCVisualManagerWindows [MFC], OnDrawPopupWindowButtonBorder", "CMFCVisualManagerWindows [MFC], OnDrawScrollButtons", "CMFCVisualManagerWindows [MFC], OnDrawSeparator", "CMFCVisualManagerWindows [MFC], OnDrawSpinButtons", "CMFCVisualManagerWindows [MFC], OnDrawStatusBarPaneBorder", "CMFCVisualManagerWindows [MFC], OnDrawStatusBarProgress", "CMFCVisualManagerWindows [MFC], OnDrawStatusBarSizeBox", "CMFCVisualManagerWindows [MFC], OnDrawTab", "CMFCVisualManagerWindows [MFC], OnDrawTabCloseButton", "CMFCVisualManagerWindows [MFC], OnDrawTabsButtonBorder", "CMFCVisualManagerWindows [MFC], OnDrawTask", "CMFCVisualManagerWindows [MFC], OnDrawTasksGroupAreaBorder", "CMFCVisualManagerWindows [MFC], OnDrawTasksGroupCaption", "CMFCVisualManagerWindows [MFC], OnDrawTearOffCaption", "CMFCVisualManagerWindows [MFC], OnErasePopupWindowButton", "CMFCVisualManagerWindows [MFC], OnEraseTabsArea", "CMFCVisualManagerWindows [MFC], OnEraseTabsButton", "CMFCVisualManagerWindows [MFC], OnEraseTabsFrame", "CMFCVisualManagerWindows [MFC], OnFillBarBackground", "CMFCVisualManagerWindows [MFC], OnFillButtonInterior", "CMFCVisualManagerWindows [MFC], OnFillCommandsListBackground", "CMFCVisualManagerWindows [MFC], OnFillMiniFrameCaption", "CMFCVisualManagerWindows [MFC], OnFillOutlookPageButton", "CMFCVisualManagerWindows [MFC], OnFillTasksGroupInterior", "CMFCVisualManagerWindows [MFC], OnFillTasksPaneBackground", "CMFCVisualManagerWindows [MFC], OnHighlightMenuItem", "CMFCVisualManagerWindows [MFC], OnHighlightRarelyUsedMenuItems", "CMFCVisualManagerWindows [MFC], OnUpdateSystemColors", "CMFCVisualManagerWindows [MFC], SetOfficeStyleMenus", "CMFCVisualManagerWindows [MFC], m_b3DTabsXPTheme"] -ms.assetid: 568b6e9e-8e67-4477-9a3d-2981cbd09861 --- # CMFCVisualManagerWindows Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + `CMFCVisualManagerWindows` mimics the appearance of Microsoft Windows XP or Microsoft Vista when the user selects a Windows XP or Vista theme. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmfcvisualmanagerwindows7-class.md b/docs/mfc/reference/cmfcvisualmanagerwindows7-class.md index d354cd2cc54..d2e9935e2e3 100644 --- a/docs/mfc/reference/cmfcvisualmanagerwindows7-class.md +++ b/docs/mfc/reference/cmfcvisualmanagerwindows7-class.md @@ -4,10 +4,12 @@ title: "CMFCVisualManagerWindows7 Class" ms.date: "03/27/2019" f1_keywords: ["CMFCVisualManagerWindows7", "AFXVISUALMANAGERWINDOWS7/CMFCVisualManagerWindows7", "AFXVISUALMANAGERWINDOWS7/CMFCVisualManagerWindows7::CMFCVisualManagerWindows7", "AFXVISUALMANAGERWINDOWS7/CMFCVisualManagerWindows7::GetRibbonEditBackgroundColor", "AFXVISUALMANAGERWINDOWS7/CMFCVisualManagerWindows7::OnFillMenuImageRect"] helpviewer_keywords: ["CMFCVisualManagerWindows7 Class [MFC]"] -ms.assetid: e8d87df1-0c09-4b58-8ade-4e911f796e42 --- # CMFCVisualManagerWindows7 Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCVisualManagerWindows7` gives an application the appearance of a Windows 7 application. ## Syntax diff --git a/docs/mfc/reference/cmfcwindowsmanagerdialog-class.md b/docs/mfc/reference/cmfcwindowsmanagerdialog-class.md index 3e82d4901f0..6e5f503419b 100644 --- a/docs/mfc/reference/cmfcwindowsmanagerdialog-class.md +++ b/docs/mfc/reference/cmfcwindowsmanagerdialog-class.md @@ -4,10 +4,12 @@ title: "CMFCWindowsManagerDialog Class" ms.date: "11/04/2016" f1_keywords: ["CMFCWindowsManagerDialog", "AFXWINDOWSMANAGERDIALOG/CMFCWindowsManagerDialog", "AFXWINDOWSMANAGERDIALOG/CMFCWindowsManagerDialog::CMFCWindowsManagerDialog"] helpviewer_keywords: ["CMFCWindowsManagerDialog [MFC], CMFCWindowsManagerDialog"] -ms.assetid: 35b4b0db-33c4-4b22-94d8-5e3396341340 --- # CMFCWindowsManagerDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMFCWindowsManagerDialog` object enables a user to manage MDI child windows in a MDI application. ## Syntax diff --git a/docs/mfc/reference/cminiframewnd-class.md b/docs/mfc/reference/cminiframewnd-class.md index c62e43effd8..ba3f3abbdb4 100644 --- a/docs/mfc/reference/cminiframewnd-class.md +++ b/docs/mfc/reference/cminiframewnd-class.md @@ -4,10 +4,12 @@ title: "CMiniFrameWnd Class" ms.date: "11/04/2016" f1_keywords: ["CMiniFrameWnd", "AFXWIN/CMiniFrameWnd", "AFXWIN/CMiniFrameWnd::CMiniFrameWnd", "AFXWIN/CMiniFrameWnd::Create", "AFXWIN/CMiniFrameWnd::CreateEx"] helpviewer_keywords: ["CMiniFrameWnd [MFC], CMiniFrameWnd", "CMiniFrameWnd [MFC], Create", "CMiniFrameWnd [MFC], CreateEx"] -ms.assetid: b8f534ed-0532-4d8e-9657-5595cf677749 --- # CMiniFrameWnd Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a half-height frame window typically seen around floating toolbars. ## Syntax diff --git a/docs/mfc/reference/cmonikerfile-class.md b/docs/mfc/reference/cmonikerfile-class.md index 56e7b9dac14..74ff22caf0c 100644 --- a/docs/mfc/reference/cmonikerfile-class.md +++ b/docs/mfc/reference/cmonikerfile-class.md @@ -4,10 +4,12 @@ title: "CMonikerFile Class" ms.date: "11/04/2016" f1_keywords: ["CMonikerFile", "AFXOLE/CMonikerFile", "AFXOLE/CMonikerFile::CMonikerFile", "AFXOLE/CMonikerFile::Close", "AFXOLE/CMonikerFile::Detach", "AFXOLE/CMonikerFile::GetMoniker", "AFXOLE/CMonikerFile::Open", "AFXOLE/CMonikerFile::CreateBindContext"] helpviewer_keywords: ["CMonikerFile [MFC], CMonikerFile", "CMonikerFile [MFC], Close", "CMonikerFile [MFC], Detach", "CMonikerFile [MFC], GetMoniker", "CMonikerFile [MFC], Open", "CMonikerFile [MFC], CreateBindContext"] -ms.assetid: 87be5966-f4f7-4235-bce2-1fa39e9417de --- # CMonikerFile Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a stream of data ( [IStream](/windows/win32/api/objidl/nn-objidl-istream)) named by an [IMoniker](/windows/win32/api/objidl/nn-objidl-imoniker). ## Syntax diff --git a/docs/mfc/reference/cmonthcalctrl-class.md b/docs/mfc/reference/cmonthcalctrl-class.md index e9ce4d517d5..033259412cf 100644 --- a/docs/mfc/reference/cmonthcalctrl-class.md +++ b/docs/mfc/reference/cmonthcalctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMonthCalCtrl [MFC], CMonthCalCtrl", "CMonthCalCtrl [MFC] --- # CMonthCalCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates the functionality of a month calendar control. ## Syntax diff --git a/docs/mfc/reference/cmousemanager-class.md b/docs/mfc/reference/cmousemanager-class.md index 92e14a9af3f..1f133903fae 100644 --- a/docs/mfc/reference/cmousemanager-class.md +++ b/docs/mfc/reference/cmousemanager-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CMouseManager [MFC], AddView", "CMouseManager [MFC], GetV --- # CMouseManager Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Allows a user to associate different commands with a particular [CView](../../mfc/reference/cview-class.md) object when the user double-clicks inside that view. ## Syntax diff --git a/docs/mfc/reference/cmultidoctemplate-class.md b/docs/mfc/reference/cmultidoctemplate-class.md index c103e3e9a82..532ac98e884 100644 --- a/docs/mfc/reference/cmultidoctemplate-class.md +++ b/docs/mfc/reference/cmultidoctemplate-class.md @@ -4,10 +4,12 @@ title: "CMultiDocTemplate Class" ms.date: "11/04/2016" f1_keywords: ["CMultiDocTemplate", "AFXWIN/CMultiDocTemplate", "AFXWIN/CMultiDocTemplate::CMultiDocTemplate"] helpviewer_keywords: ["CMultiDocTemplate [MFC], CMultiDocTemplate"] -ms.assetid: 5b8aa328-e461-41d0-b388-00594535e119 --- # CMultiDocTemplate Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Defines a document template that implements the multiple document interface (MDI). ## Syntax diff --git a/docs/mfc/reference/cmultilock-class.md b/docs/mfc/reference/cmultilock-class.md index c59e02672be..f04a88f1b54 100644 --- a/docs/mfc/reference/cmultilock-class.md +++ b/docs/mfc/reference/cmultilock-class.md @@ -4,10 +4,12 @@ title: "CMultiLock Class" ms.date: "11/04/2016" f1_keywords: ["CMultiLock", "AFXMT/CMultiLock", "AFXMT/CMultiLock::CMultiLock", "AFXMT/CMultiLock::IsLocked", "AFXMT/CMultiLock::Lock", "AFXMT/CMultiLock::Unlock"] helpviewer_keywords: ["CMultiLock [MFC], CMultiLock", "CMultiLock [MFC], IsLocked", "CMultiLock [MFC], Lock", "CMultiLock [MFC], Unlock"] -ms.assetid: c5b7c78b-1f81-4387-b7dd-2c813c5b6b61 --- # CMultiLock Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents the access-control mechanism used in controlling access to resources in a multithreaded program. ## Syntax diff --git a/docs/mfc/reference/cmultipagedhtmldialog-class.md b/docs/mfc/reference/cmultipagedhtmldialog-class.md index b47ead03872..328f588d532 100644 --- a/docs/mfc/reference/cmultipagedhtmldialog-class.md +++ b/docs/mfc/reference/cmultipagedhtmldialog-class.md @@ -4,10 +4,12 @@ title: "CMultiPageDHtmlDialog Class" ms.date: "03/27/2019" f1_keywords: ["CMultiPageDHtmlDialog", "AFXDHTML/CMultiPageDHtmlDialog", "AFXDHTML/CMultiPageDHtmlDialog::CMultiPageDHtmlDialog"] helpviewer_keywords: ["CMultiPageDHtmlDialog [MFC], CMultiPageDHtmlDialog"] -ms.assetid: 971accc1-824d-4df4-b4c1-b1a20e0f7e4f --- # CMultiPageDHtmlDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A multipage dialog displays multiple HTML pages sequentially and handles the events from each page. ## Syntax diff --git a/docs/mfc/reference/cmultipaneframewnd-class.md b/docs/mfc/reference/cmultipaneframewnd-class.md index 67427e554bf..f19fe3809ba 100644 --- a/docs/mfc/reference/cmultipaneframewnd-class.md +++ b/docs/mfc/reference/cmultipaneframewnd-class.md @@ -4,10 +4,12 @@ title: "CMultiPaneFrameWnd Class" ms.date: "11/04/2016" f1_keywords: ["CMultiPaneFrameWnd", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::AddPane", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::AddRecentPane", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::AdjustLayout", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::AdjustPaneFrames", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::CalcExpectedDockedRect", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::CanBeAttached", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::CanBeDockedToPane", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::CheckGripperVisibility", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::CloseMiniFrame", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::ConvertToTabbedDocument", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::DockFrame", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::DockPane", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::DockRecentPaneToMainFrame", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::GetCaptionText", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::GetPaneContainerManager", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::GetFirstVisiblePane", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::GetPane", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::GetPaneCount", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::GetVisiblePaneCount", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::InsertPane", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::LoadState", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::OnDockToRecentPos", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::OnKillRollUpTimer", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::OnPaneRecalcLayout", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::OnSetRollUpTimer", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::OnShowPane", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::PaneFromPoint", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::RemoveNonValidPanes", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::RemovePane", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::ReplacePane", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::SaveState", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::Serialize", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::SetDockState", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::SetLastFocusedPane", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::SetPreDockState", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::StoreRecentDockSiteInfo", "AFXMULTIPANEFRAMEWND/CMultiPaneFrameWnd::StoreRecentTabRelatedInfo"] helpviewer_keywords: ["CMultiPaneFrameWnd [MFC], AddPane", "CMultiPaneFrameWnd [MFC], AddRecentPane", "CMultiPaneFrameWnd [MFC], AdjustLayout", "CMultiPaneFrameWnd [MFC], AdjustPaneFrames", "CMultiPaneFrameWnd [MFC], CalcExpectedDockedRect", "CMultiPaneFrameWnd [MFC], CanBeAttached", "CMultiPaneFrameWnd [MFC], CanBeDockedToPane", "CMultiPaneFrameWnd [MFC], CheckGripperVisibility", "CMultiPaneFrameWnd [MFC], CloseMiniFrame", "CMultiPaneFrameWnd [MFC], ConvertToTabbedDocument", "CMultiPaneFrameWnd [MFC], DockFrame", "CMultiPaneFrameWnd [MFC], DockPane", "CMultiPaneFrameWnd [MFC], DockRecentPaneToMainFrame", "CMultiPaneFrameWnd [MFC], GetCaptionText", "CMultiPaneFrameWnd [MFC], GetPaneContainerManager", "CMultiPaneFrameWnd [MFC], GetFirstVisiblePane", "CMultiPaneFrameWnd [MFC], GetPane", "CMultiPaneFrameWnd [MFC], GetPaneCount", "CMultiPaneFrameWnd [MFC], GetVisiblePaneCount", "CMultiPaneFrameWnd [MFC], InsertPane", "CMultiPaneFrameWnd [MFC], LoadState", "CMultiPaneFrameWnd [MFC], OnDockToRecentPos", "CMultiPaneFrameWnd [MFC], OnKillRollUpTimer", "CMultiPaneFrameWnd [MFC], OnPaneRecalcLayout", "CMultiPaneFrameWnd [MFC], OnSetRollUpTimer", "CMultiPaneFrameWnd [MFC], OnShowPane", "CMultiPaneFrameWnd [MFC], PaneFromPoint", "CMultiPaneFrameWnd [MFC], RemoveNonValidPanes", "CMultiPaneFrameWnd [MFC], RemovePane", "CMultiPaneFrameWnd [MFC], ReplacePane", "CMultiPaneFrameWnd [MFC], SaveState", "CMultiPaneFrameWnd [MFC], Serialize", "CMultiPaneFrameWnd [MFC], SetDockState", "CMultiPaneFrameWnd [MFC], SetLastFocusedPane", "CMultiPaneFrameWnd [MFC], SetPreDockState", "CMultiPaneFrameWnd [MFC], StoreRecentDockSiteInfo", "CMultiPaneFrameWnd [MFC], StoreRecentTabRelatedInfo"] -ms.assetid: 989a548e-0d70-46b7-a513-8cf740e1be3e --- # CMultiPaneFrameWnd Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CMultiPaneFrameWnd` class extends [CPaneFrameWnd Class](../../mfc/reference/cpaneframewnd-class.md). It can support multiple panes. Instead of a single embedded handle to a control bar, `CMultiPaneFrameWnd` contains a [CPaneContainerManager Class](../../mfc/reference/cpanecontainermanager-class.md) object that enables the user to dock one `CMultiPaneFrameWnd` to another and dynamically create multiple floating, tabbed windows. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cmutex-class.md b/docs/mfc/reference/cmutex-class.md index a7267ffb085..e7a025cf985 100644 --- a/docs/mfc/reference/cmutex-class.md +++ b/docs/mfc/reference/cmutex-class.md @@ -4,10 +4,12 @@ title: "CMutex Class" ms.date: "11/04/2016" f1_keywords: ["CMutex", "AFXMT/CMutex", "AFXMT/CMutex::CMutex"] helpviewer_keywords: ["CMutex [MFC], CMutex"] -ms.assetid: 6330c050-4f01-4195-a099-2029b92f8cf1 --- # CMutex Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a "mutex" — a synchronization object that allows one thread mutually exclusive access to a resource. ## Syntax diff --git a/docs/mfc/reference/cnetaddressctrl-class.md b/docs/mfc/reference/cnetaddressctrl-class.md index 961b95a3943..97655606205 100644 --- a/docs/mfc/reference/cnetaddressctrl-class.md +++ b/docs/mfc/reference/cnetaddressctrl-class.md @@ -4,10 +4,12 @@ title: "CNetAddressCtrl Class" ms.date: "11/19/2018" f1_keywords: ["CNetAddressCtrl", "AFXCMN/CNetAddressCtrl", "AFXCMN/CNetAddressCtrl::CNetAddressCtrl", "AFXCMN/CNetAddressCtrl::Create", "AFXCMN/CNetAddressCtrl::CreateEx", "AFXCMN/CNetAddressCtrl::DisplayErrorTip", "AFXCMN/CNetAddressCtrl::GetAddress", "AFXCMN/CNetAddressCtrl::GetAllowType", "AFXCMN/CNetAddressCtrl::SetAllowType"] helpviewer_keywords: ["CNetAddressCtrl [MFC], CNetAddressCtrl", "CNetAddressCtrl [MFC], Create", "CNetAddressCtrl [MFC], CreateEx", "CNetAddressCtrl [MFC], DisplayErrorTip", "CNetAddressCtrl [MFC], GetAddress", "CNetAddressCtrl [MFC], GetAllowType", "CNetAddressCtrl [MFC], SetAllowType"] -ms.assetid: cb4c6aca-3f49-4b52-b76c-65f57096155b --- # CNetAddressCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CNetAddressCtrl` class represents the network address control, which you can use to input and validate the format of IPv4, IPv6, and named DNS addresses. ## Syntax diff --git a/docs/mfc/reference/cnotsupportedexception-class.md b/docs/mfc/reference/cnotsupportedexception-class.md index 91c32de3a13..4cb7a08ce51 100644 --- a/docs/mfc/reference/cnotsupportedexception-class.md +++ b/docs/mfc/reference/cnotsupportedexception-class.md @@ -4,10 +4,12 @@ title: "CNotSupportedException Class" ms.date: "11/04/2016" f1_keywords: ["CNotSupportedException", "AFX/CNotSupportedException", "AFX/CNotSupportedException::CNotSupportedException"] helpviewer_keywords: ["CNotSupportedException [MFC], CNotSupportedException"] -ms.assetid: e517391b-eb94-4c39-ae32-87b45bf7d624 --- # CNotSupportedException Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents an exception that is the result of a request for an unsupported feature. ## Syntax diff --git a/docs/mfc/reference/cobarray-class.md b/docs/mfc/reference/cobarray-class.md index 8dd735c1f0e..71356304785 100644 --- a/docs/mfc/reference/cobarray-class.md +++ b/docs/mfc/reference/cobarray-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CObArray [MFC], CObArray", "CObArray [MFC], Add", "CObArr --- # `CObArray` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports arrays of `CObject` pointers. ## Syntax diff --git a/docs/mfc/reference/cobject-class.md b/docs/mfc/reference/cobject-class.md index 1f712952c98..0eb328cc399 100644 --- a/docs/mfc/reference/cobject-class.md +++ b/docs/mfc/reference/cobject-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CObject [MFC], CObject", "CObject [MFC], AssertValid", "C --- # `CObject` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The principal base class for the Microsoft Foundation Class Library. ## Syntax diff --git a/docs/mfc/reference/coblist-class.md b/docs/mfc/reference/coblist-class.md index f62fd186b81..0e7810fc3d7 100644 --- a/docs/mfc/reference/coblist-class.md +++ b/docs/mfc/reference/coblist-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CObList [MFC], CObList", "CObList [MFC], AddHead", "CObLi --- # `CObList` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports ordered lists of nonunique `CObject` pointers accessible sequentially or by pointer value. ## Syntax diff --git a/docs/mfc/reference/coccmanager-class.md b/docs/mfc/reference/coccmanager-class.md index 8660c985c55..18a35b36a4a 100644 --- a/docs/mfc/reference/coccmanager-class.md +++ b/docs/mfc/reference/coccmanager-class.md @@ -4,10 +4,12 @@ title: "COccManager Class" ms.date: "11/04/2016" f1_keywords: ["COccManager", "AFXOCC/COccManager", "AFXOCC/COccManager::CreateContainer", "AFXOCC/COccManager::CreateDlgControls", "AFXOCC/COccManager::CreateSite", "AFXOCC/COccManager::GetDefBtnCode", "AFXOCC/COccManager::IsDialogMessage", "AFXOCC/COccManager::IsLabelControl", "AFXOCC/COccManager::IsMatchingMnemonic", "AFXOCC/COccManager::OnEvent", "AFXOCC/COccManager::PostCreateDialog", "AFXOCC/COccManager::PreCreateDialog", "AFXOCC/COccManager::SetDefaultButton", "AFXOCC/COccManager::SplitDialogTemplate"] helpviewer_keywords: ["COccManager [MFC], CreateContainer", "COccManager [MFC], CreateDlgControls", "COccManager [MFC], CreateSite", "COccManager [MFC], GetDefBtnCode", "COccManager [MFC], IsDialogMessage", "COccManager [MFC], IsLabelControl", "COccManager [MFC], IsMatchingMnemonic", "COccManager [MFC], OnEvent", "COccManager [MFC], PostCreateDialog", "COccManager [MFC], PreCreateDialog", "COccManager [MFC], SetDefaultButton", "COccManager [MFC], SplitDialogTemplate"] -ms.assetid: 7d47aeed-d1ab-48e3-b4cf-d429718e370a --- # COccManager Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Manages various custom control sites; implemented by `COleControlContainer` and `COleControlSite` objects. ## Syntax diff --git a/docs/mfc/reference/codbcfieldinfo-structure.md b/docs/mfc/reference/codbcfieldinfo-structure.md index 03a4573f045..ea89688707e 100644 --- a/docs/mfc/reference/codbcfieldinfo-structure.md +++ b/docs/mfc/reference/codbcfieldinfo-structure.md @@ -4,10 +4,12 @@ title: "CODBCFieldInfo Structure" ms.date: "11/04/2016" f1_keywords: ["CODBCFieldInfo"] helpviewer_keywords: ["ODBC [MFC], data source information", "CODBCFieldInfo structure [MFC]"] -ms.assetid: 92598b4f-facc-4108-b282-63a179ff79ab --- # CODBCFieldInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CODBCFieldInfo` structure contains information about the fields in an ODBC data source. ## Syntax diff --git a/docs/mfc/reference/colebusydialog-class.md b/docs/mfc/reference/colebusydialog-class.md index d9d615fe4e1..8a448182cce 100644 --- a/docs/mfc/reference/colebusydialog-class.md +++ b/docs/mfc/reference/colebusydialog-class.md @@ -4,10 +4,12 @@ title: "COleBusyDialog Class" ms.date: "11/04/2016" f1_keywords: ["COleBusyDialog", "AFXODLGS/COleBusyDialog", "AFXODLGS/COleBusyDialog::COleBusyDialog", "AFXODLGS/COleBusyDialog::DoModal", "AFXODLGS/COleBusyDialog::GetSelectionType", "AFXODLGS/COleBusyDialog::m_bz"] helpviewer_keywords: ["COleBusyDialog [MFC], COleBusyDialog", "COleBusyDialog [MFC], DoModal", "COleBusyDialog [MFC], GetSelectionType", "COleBusyDialog [MFC], m_bz"] -ms.assetid: c881a532-9672-4c41-b51b-5ce4a7246a6b --- # COleBusyDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Used for the OLE Server Not Responding or Server Busy dialog boxes. ## Syntax diff --git a/docs/mfc/reference/colechangeicondialog-class.md b/docs/mfc/reference/colechangeicondialog-class.md index 4aa41b2f9b8..f3215747770 100644 --- a/docs/mfc/reference/colechangeicondialog-class.md +++ b/docs/mfc/reference/colechangeicondialog-class.md @@ -4,10 +4,12 @@ title: "COleChangeIconDialog Class" ms.date: "11/04/2016" f1_keywords: ["COleChangeIconDialog", "AFXODLGS/COleChangeIconDialog", "AFXODLGS/COleChangeIconDialog::COleChangeIconDialog", "AFXODLGS/COleChangeIconDialog::DoChangeIcon", "AFXODLGS/COleChangeIconDialog::DoModal", "AFXODLGS/COleChangeIconDialog::GetIconicMetafile", "AFXODLGS/COleChangeIconDialog::m_ci"] helpviewer_keywords: ["COleChangeIconDialog [MFC], COleChangeIconDialog", "COleChangeIconDialog [MFC], DoChangeIcon", "COleChangeIconDialog [MFC], DoModal", "COleChangeIconDialog [MFC], GetIconicMetafile", "COleChangeIconDialog [MFC], m_ci"] -ms.assetid: 8d6e131b-ddbb-4dff-a432-f239efda8e3d --- # COleChangeIconDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Used for the OLE Change Icon dialog box. ## Syntax diff --git a/docs/mfc/reference/colechangesourcedialog-class.md b/docs/mfc/reference/colechangesourcedialog-class.md index dde0eeca7c4..9b66d040ee1 100644 --- a/docs/mfc/reference/colechangesourcedialog-class.md +++ b/docs/mfc/reference/colechangesourcedialog-class.md @@ -4,10 +4,12 @@ title: "COleChangeSourceDialog Class" ms.date: "11/04/2016" f1_keywords: ["COleChangeSourceDialog", "AFXODLGS/COleChangeSourceDialog", "AFXODLGS/COleChangeSourceDialog::COleChangeSourceDialog", "AFXODLGS/COleChangeSourceDialog::DoModal", "AFXODLGS/COleChangeSourceDialog::GetDisplayName", "AFXODLGS/COleChangeSourceDialog::GetFileName", "AFXODLGS/COleChangeSourceDialog::GetFromPrefix", "AFXODLGS/COleChangeSourceDialog::GetItemName", "AFXODLGS/COleChangeSourceDialog::GetToPrefix", "AFXODLGS/COleChangeSourceDialog::IsValidSource", "AFXODLGS/COleChangeSourceDialog::m_cs"] helpviewer_keywords: ["COleChangeSourceDialog [MFC], COleChangeSourceDialog", "COleChangeSourceDialog [MFC], DoModal", "COleChangeSourceDialog [MFC], GetDisplayName", "COleChangeSourceDialog [MFC], GetFileName", "COleChangeSourceDialog [MFC], GetFromPrefix", "COleChangeSourceDialog [MFC], GetItemName", "COleChangeSourceDialog [MFC], GetToPrefix", "COleChangeSourceDialog [MFC], IsValidSource", "COleChangeSourceDialog [MFC], m_cs"] -ms.assetid: d0e08be7-21ef-45e1-97af-fe27d99e3bac --- # COleChangeSourceDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Used for the OLE Change Source dialog box. ## Syntax diff --git a/docs/mfc/reference/coleclientitem-class.md b/docs/mfc/reference/coleclientitem-class.md index 356cf6cdba4..6d13579bde0 100644 --- a/docs/mfc/reference/coleclientitem-class.md +++ b/docs/mfc/reference/coleclientitem-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["COleClientItem [MFC], COleClientItem", "COleClientItem [M --- # COleClientItem Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Defines the container interface to OLE items. ## Syntax diff --git a/docs/mfc/reference/colecmdui-class.md b/docs/mfc/reference/colecmdui-class.md index 93442684f98..04cb24cec92 100644 --- a/docs/mfc/reference/colecmdui-class.md +++ b/docs/mfc/reference/colecmdui-class.md @@ -4,10 +4,12 @@ title: "COleCmdUI Class" ms.date: 07/24/2020 f1_keywords: ["COleCmdUI", "AFXDOCOBJ/COleCmdUI", "AFXDOCOBJ/COleCmdUI::COleCmdUI", "AFXDOCOBJ/COleCmdUI::Enable", "AFXDOCOBJ/COleCmdUI::SetCheck", "AFXDOCOBJ/COleCmdUI::SetText"] helpviewer_keywords: ["COleCmdUI [MFC], COleCmdUI", "COleCmdUI [MFC], Enable", "COleCmdUI [MFC], SetCheck", "COleCmdUI [MFC], SetText"] -ms.assetid: a2d5ce08-6657-45d3-8673-2a9f32d50eec --- # COleCmdUI Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a method for MFC to update the state of user-interface objects related to the `IOleCommandTarget`-driven features of your application. ## Syntax diff --git a/docs/mfc/reference/colecontrol-class.md b/docs/mfc/reference/colecontrol-class.md index 4fd5fcaaa04..c30561fbf89 100644 --- a/docs/mfc/reference/colecontrol-class.md +++ b/docs/mfc/reference/colecontrol-class.md @@ -4,10 +4,12 @@ title: "COleControl Class" ms.date: "08/27/2018" f1_keywords: ["COleControl", "AFXCTL/COleControl", "AFXCTL/COleControl::COleControl", "AFXCTL/COleControl::AmbientAppearance", "AFXCTL/COleControl::AmbientBackColor", "AFXCTL/COleControl::AmbientDisplayName", "AFXCTL/COleControl::AmbientFont", "AFXCTL/COleControl::AmbientForeColor", "AFXCTL/COleControl::AmbientLocaleID", "AFXCTL/COleControl::AmbientScaleUnits", "AFXCTL/COleControl::AmbientShowGrabHandles", "AFXCTL/COleControl::AmbientShowHatching", "AFXCTL/COleControl::AmbientTextAlign", "AFXCTL/COleControl::AmbientUIDead", "AFXCTL/COleControl::AmbientUserMode", "AFXCTL/COleControl::BoundPropertyChanged", "AFXCTL/COleControl::BoundPropertyRequestEdit", "AFXCTL/COleControl::ClientToParent", "AFXCTL/COleControl::ClipCaretRect", "AFXCTL/COleControl::ControlInfoChanged", "AFXCTL/COleControl::DisplayError", "AFXCTL/COleControl::DoClick", "AFXCTL/COleControl::DoPropExchange", "AFXCTL/COleControl::DoSuperclassPaint", "AFXCTL/COleControl::EnableSimpleFrame", "AFXCTL/COleControl::ExchangeExtent", "AFXCTL/COleControl::ExchangeStockProps", "AFXCTL/COleControl::ExchangeVersion", "AFXCTL/COleControl::FireClick", "AFXCTL/COleControl::FireDblClick", "AFXCTL/COleControl::FireError", "AFXCTL/COleControl::FireEvent", "AFXCTL/COleControl::FireKeyDown", "AFXCTL/COleControl::FireKeyPress", "AFXCTL/COleControl::FireKeyUp", "AFXCTL/COleControl::FireMouseDown", "AFXCTL/COleControl::FireMouseMove", "AFXCTL/COleControl::FireMouseUp", "AFXCTL/COleControl::FireReadyStateChange", "AFXCTL/COleControl::GetActivationPolicy", "AFXCTL/COleControl::GetAmbientProperty", "AFXCTL/COleControl::GetAppearance", "AFXCTL/COleControl::GetBackColor", "AFXCTL/COleControl::GetBorderStyle", "AFXCTL/COleControl::GetCapture", "AFXCTL/COleControl::GetClassID", "AFXCTL/COleControl::GetClientOffset", "AFXCTL/COleControl::GetClientRect", "AFXCTL/COleControl::GetClientSite", "AFXCTL/COleControl::GetControlFlags", "AFXCTL/COleControl::GetControlSize", "AFXCTL/COleControl::GetDC", "AFXCTL/COleControl::GetEnabled", "AFXCTL/COleControl::GetExtendedControl", "AFXCTL/COleControl::GetFocus", "AFXCTL/COleControl::GetFont", "AFXCTL/COleControl::GetFontTextMetrics", "AFXCTL/COleControl::GetForeColor", "AFXCTL/COleControl::GetHwnd", "AFXCTL/COleControl::GetMessageString", "AFXCTL/COleControl::GetNotSupported", "AFXCTL/COleControl::GetReadyState", "AFXCTL/COleControl::GetRectInContainer", "AFXCTL/COleControl::GetStockTextMetrics", "AFXCTL/COleControl::GetText", "AFXCTL/COleControl::GetWindowlessDropTarget", "AFXCTL/COleControl::InitializeIIDs", "AFXCTL/COleControl::InternalGetFont", "AFXCTL/COleControl::InternalGetText", "AFXCTL/COleControl::InternalSetReadyState", "AFXCTL/COleControl::InvalidateControl", "AFXCTL/COleControl::InvalidateRgn", "AFXCTL/COleControl::IsConvertingVBX", "AFXCTL/COleControl::IsModified", "AFXCTL/COleControl::IsOptimizedDraw", "AFXCTL/COleControl::IsSubclassedControl", "AFXCTL/COleControl::Load", "AFXCTL/COleControl::LockInPlaceActive", "AFXCTL/COleControl::OnAmbientPropertyChange", "AFXCTL/COleControl::OnAppearanceChanged", "AFXCTL/COleControl::OnBackColorChanged", "AFXCTL/COleControl::OnBorderStyleChanged", "AFXCTL/COleControl::OnClick", "AFXCTL/COleControl::OnClose", "AFXCTL/COleControl::OnDoVerb", "AFXCTL/COleControl::OnDraw", "AFXCTL/COleControl::OnDrawMetafile", "AFXCTL/COleControl::OnEdit", "AFXCTL/COleControl::OnEnabledChanged", "AFXCTL/COleControl::OnEnumVerbs", "AFXCTL/COleControl::OnEventAdvise", "AFXCTL/COleControl::OnFontChanged", "AFXCTL/COleControl::OnForeColorChanged", "AFXCTL/COleControl::OnFreezeEvents", "AFXCTL/COleControl::OnGetColorSet", "AFXCTL/COleControl::OnGetControlInfo", "AFXCTL/COleControl::OnGetDisplayString", "AFXCTL/COleControl::OnGetInPlaceMenu", "AFXCTL/COleControl::OnGetNaturalExtent", "AFXCTL/COleControl::OnGetPredefinedStrings", "AFXCTL/COleControl::OnGetPredefinedValue", "AFXCTL/COleControl::OnGetViewExtent", "AFXCTL/COleControl::OnGetViewRect", "AFXCTL/COleControl::OnGetViewStatus", "AFXCTL/COleControl::OnHideToolBars", "AFXCTL/COleControl::OnInactiveMouseMove", "AFXCTL/COleControl::OnInactiveSetCursor", "AFXCTL/COleControl::OnKeyDownEvent", "AFXCTL/COleControl::OnKeyPressEvent", "AFXCTL/COleControl::OnKeyUpEvent", "AFXCTL/COleControl::OnMapPropertyToPage", "AFXCTL/COleControl::OnMnemonic", "AFXCTL/COleControl::OnProperties", "AFXCTL/COleControl::OnQueryHitPoint", "AFXCTL/COleControl::OnQueryHitRect", "AFXCTL/COleControl::OnRenderData", "AFXCTL/COleControl::OnRenderFileData", "AFXCTL/COleControl::OnRenderGlobalData", "AFXCTL/COleControl::OnResetState", "AFXCTL/COleControl::OnSetClientSite", "AFXCTL/COleControl::OnSetData", "AFXCTL/COleControl::OnSetExtent", "AFXCTL/COleControl::OnSetObjectRects", "AFXCTL/COleControl::OnShowToolBars", "AFXCTL/COleControl::OnTextChanged", "AFXCTL/COleControl::OnWindowlessMessage", "AFXCTL/COleControl::ParentToClient", "AFXCTL/COleControl::PostModalDialog", "AFXCTL/COleControl::PreModalDialog", "AFXCTL/COleControl::RecreateControlWindow", "AFXCTL/COleControl::Refresh", "AFXCTL/COleControl::ReleaseCapture", "AFXCTL/COleControl::ReleaseDC", "AFXCTL/COleControl::ReparentControlWindow", "AFXCTL/COleControl::ResetStockProps", "AFXCTL/COleControl::ResetVersion", "AFXCTL/COleControl::ScrollWindow", "AFXCTL/COleControl::SelectFontObject", "AFXCTL/COleControl::SelectStockFont", "AFXCTL/COleControl::SerializeExtent", "AFXCTL/COleControl::SerializeStockProps", "AFXCTL/COleControl::SerializeVersion", "AFXCTL/COleControl::SetAppearance", "AFXCTL/COleControl::SetBackColor", "AFXCTL/COleControl::SetBorderStyle", "AFXCTL/COleControl::SetCapture", "AFXCTL/COleControl::SetControlSize", "AFXCTL/COleControl::SetEnabled", "AFXCTL/COleControl::SetFocus", "AFXCTL/COleControl::SetFont", "AFXCTL/COleControl::SetForeColor", "AFXCTL/COleControl::SetInitialSize", "AFXCTL/COleControl::SetModifiedFlag", "AFXCTL/COleControl::SetNotPermitted", "AFXCTL/COleControl::SetNotSupported", "AFXCTL/COleControl::SetRectInContainer", "AFXCTL/COleControl::SetText", "AFXCTL/COleControl::ThrowError", "AFXCTL/COleControl::TransformCoords", "AFXCTL/COleControl::TranslateColor", "AFXCTL/COleControl::WillAmbientsBeValidDuringLoad", "AFXCTL/COleControl::WindowProc", "AFXCTL/COleControl::DrawContent", "AFXCTL/COleControl::DrawMetafile", "AFXCTL/COleControl::IsInvokeAllowed", "AFXCTL/COleControl::SetInitialDataFormats"] helpviewer_keywords: ["COleControl [MFC], COleControl", "COleControl [MFC], AmbientAppearance", "COleControl [MFC], AmbientBackColor", "COleControl [MFC], AmbientDisplayName", "COleControl [MFC], AmbientFont", "COleControl [MFC], AmbientForeColor", "COleControl [MFC], AmbientLocaleID", "COleControl [MFC], AmbientScaleUnits", "COleControl [MFC], AmbientShowGrabHandles", "COleControl [MFC], AmbientShowHatching", "COleControl [MFC], AmbientTextAlign", "COleControl [MFC], AmbientUIDead", "COleControl [MFC], AmbientUserMode", "COleControl [MFC], BoundPropertyChanged", "COleControl [MFC], BoundPropertyRequestEdit", "COleControl [MFC], ClientToParent", "COleControl [MFC], ClipCaretRect", "COleControl [MFC], ControlInfoChanged", "COleControl [MFC], DisplayError", "COleControl [MFC], DoClick", "COleControl [MFC], DoPropExchange", "COleControl [MFC], DoSuperclassPaint", "COleControl [MFC], EnableSimpleFrame", "COleControl [MFC], ExchangeExtent", "COleControl [MFC], ExchangeStockProps", "COleControl [MFC], ExchangeVersion", "COleControl [MFC], FireClick", "COleControl [MFC], FireDblClick", "COleControl [MFC], FireError", "COleControl [MFC], FireEvent", "COleControl [MFC], FireKeyDown", "COleControl [MFC], FireKeyPress", "COleControl [MFC], FireKeyUp", "COleControl [MFC], FireMouseDown", "COleControl [MFC], FireMouseMove", "COleControl [MFC], FireMouseUp", "COleControl [MFC], FireReadyStateChange", "COleControl [MFC], GetActivationPolicy", "COleControl [MFC], GetAmbientProperty", "COleControl [MFC], GetAppearance", "COleControl [MFC], GetBackColor", "COleControl [MFC], GetBorderStyle", "COleControl [MFC], GetCapture", "COleControl [MFC], GetClassID", "COleControl [MFC], GetClientOffset", "COleControl [MFC], GetClientRect", "COleControl [MFC], GetClientSite", "COleControl [MFC], GetControlFlags", "COleControl [MFC], GetControlSize", "COleControl [MFC], GetDC", "COleControl [MFC], GetEnabled", "COleControl [MFC], GetExtendedControl", "COleControl [MFC], GetFocus", "COleControl [MFC], GetFont", "COleControl [MFC], GetFontTextMetrics", "COleControl [MFC], GetForeColor", "COleControl [MFC], GetHwnd", "COleControl [MFC], GetMessageString", "COleControl [MFC], GetNotSupported", "COleControl [MFC], GetReadyState", "COleControl [MFC], GetRectInContainer", "COleControl [MFC], GetStockTextMetrics", "COleControl [MFC], GetText", "COleControl [MFC], GetWindowlessDropTarget", "COleControl [MFC], InitializeIIDs", "COleControl [MFC], InternalGetFont", "COleControl [MFC], InternalGetText", "COleControl [MFC], InternalSetReadyState", "COleControl [MFC], InvalidateControl", "COleControl [MFC], InvalidateRgn", "COleControl [MFC], IsConvertingVBX", "COleControl [MFC], IsModified", "COleControl [MFC], IsOptimizedDraw", "COleControl [MFC], IsSubclassedControl", "COleControl [MFC], Load", "COleControl [MFC], LockInPlaceActive", "COleControl [MFC], OnAmbientPropertyChange", "COleControl [MFC], OnAppearanceChanged", "COleControl [MFC], OnBackColorChanged", "COleControl [MFC], OnBorderStyleChanged", "COleControl [MFC], OnClick", "COleControl [MFC], OnClose", "COleControl [MFC], OnDoVerb", "COleControl [MFC], OnDraw", "COleControl [MFC], OnDrawMetafile", "COleControl [MFC], OnEdit", "COleControl [MFC], OnEnabledChanged", "COleControl [MFC], OnEnumVerbs", "COleControl [MFC], OnEventAdvise", "COleControl [MFC], OnFontChanged", "COleControl [MFC], OnForeColorChanged", "COleControl [MFC], OnFreezeEvents", "COleControl [MFC], OnGetColorSet", "COleControl [MFC], OnGetControlInfo", "COleControl [MFC], OnGetDisplayString", "COleControl [MFC], OnGetInPlaceMenu", "COleControl [MFC], OnGetNaturalExtent", "COleControl [MFC], OnGetPredefinedStrings", "COleControl [MFC], OnGetPredefinedValue", "COleControl [MFC], OnGetViewExtent", "COleControl [MFC], OnGetViewRect", "COleControl [MFC], OnGetViewStatus", "COleControl [MFC], OnHideToolBars", "COleControl [MFC], OnInactiveMouseMove", "COleControl [MFC], OnInactiveSetCursor", "COleControl [MFC], OnKeyDownEvent", "COleControl [MFC], OnKeyPressEvent", "COleControl [MFC], OnKeyUpEvent", "COleControl [MFC], OnMapPropertyToPage", "COleControl [MFC], OnMnemonic", "COleControl [MFC], OnProperties", "COleControl [MFC], OnQueryHitPoint", "COleControl [MFC], OnQueryHitRect", "COleControl [MFC], OnRenderData", "COleControl [MFC], OnRenderFileData", "COleControl [MFC], OnRenderGlobalData", "COleControl [MFC], OnResetState", "COleControl [MFC], OnSetClientSite", "COleControl [MFC], OnSetData", "COleControl [MFC], OnSetExtent", "COleControl [MFC], OnSetObjectRects", "COleControl [MFC], OnShowToolBars", "COleControl [MFC], OnTextChanged", "COleControl [MFC], OnWindowlessMessage", "COleControl [MFC], ParentToClient", "COleControl [MFC], PostModalDialog", "COleControl [MFC], PreModalDialog", "COleControl [MFC], RecreateControlWindow", "COleControl [MFC], Refresh", "COleControl [MFC], ReleaseCapture", "COleControl [MFC], ReleaseDC", "COleControl [MFC], ReparentControlWindow", "COleControl [MFC], ResetStockProps", "COleControl [MFC], ResetVersion", "COleControl [MFC], ScrollWindow", "COleControl [MFC], SelectFontObject", "COleControl [MFC], SelectStockFont", "COleControl [MFC], SerializeExtent", "COleControl [MFC], SerializeStockProps", "COleControl [MFC], SerializeVersion", "COleControl [MFC], SetAppearance", "COleControl [MFC], SetBackColor", "COleControl [MFC], SetBorderStyle", "COleControl [MFC], SetCapture", "COleControl [MFC], SetControlSize", "COleControl [MFC], SetEnabled", "COleControl [MFC], SetFocus", "COleControl [MFC], SetFont", "COleControl [MFC], SetForeColor", "COleControl [MFC], SetInitialSize", "COleControl [MFC], SetModifiedFlag", "COleControl [MFC], SetNotPermitted", "COleControl [MFC], SetNotSupported", "COleControl [MFC], SetRectInContainer", "COleControl [MFC], SetText", "COleControl [MFC], ThrowError", "COleControl [MFC], TransformCoords", "COleControl [MFC], TranslateColor", "COleControl [MFC], WillAmbientsBeValidDuringLoad", "COleControl [MFC], WindowProc", "COleControl [MFC], DrawContent", "COleControl [MFC], DrawMetafile", "COleControl [MFC], IsInvokeAllowed", "COleControl [MFC], SetInitialDataFormats"] -ms.assetid: 53e95299-38e8-447b-9c5f-a381d27f5123 --- # COleControl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A powerful base class for developing OLE controls. ## Syntax diff --git a/docs/mfc/reference/colecontrolcontainer-class.md b/docs/mfc/reference/colecontrolcontainer-class.md index 5187c2d745f..ff21a7c3de1 100644 --- a/docs/mfc/reference/colecontrolcontainer-class.md +++ b/docs/mfc/reference/colecontrolcontainer-class.md @@ -4,10 +4,12 @@ title: "COleControlContainer Class" ms.date: "11/04/2016" f1_keywords: ["COleControlContainer", "AFXOCC/COleControlContainer", "AFXOCC/COleControlContainer::COleControlContainer", "AFXOCC/COleControlContainer::AttachControlSite", "AFXOCC/COleControlContainer::BroadcastAmbientPropertyChange", "AFXOCC/COleControlContainer::CheckDlgButton", "AFXOCC/COleControlContainer::CheckRadioButton", "AFXOCC/COleControlContainer::CreateControl", "AFXOCC/COleControlContainer::CreateOleFont", "AFXOCC/COleControlContainer::FindItem", "AFXOCC/COleControlContainer::FreezeAllEvents", "AFXOCC/COleControlContainer::GetAmbientProp", "AFXOCC/COleControlContainer::GetDlgItem", "AFXOCC/COleControlContainer::GetDlgItemInt", "AFXOCC/COleControlContainer::GetDlgItemText", "AFXOCC/COleControlContainer::HandleSetFocus", "AFXOCC/COleControlContainer::HandleWindowlessMessage", "AFXOCC/COleControlContainer::IsDlgButtonChecked", "AFXOCC/COleControlContainer::OnPaint", "AFXOCC/COleControlContainer::OnUIActivate", "AFXOCC/COleControlContainer::OnUIDeactivate", "AFXOCC/COleControlContainer::ScrollChildren", "AFXOCC/COleControlContainer::SendDlgItemMessage", "AFXOCC/COleControlContainer::SetDlgItemInt", "AFXOCC/COleControlContainer::SetDlgItemText", "AFXOCC/COleControlContainer::m_crBack", "AFXOCC/COleControlContainer::m_crFore", "AFXOCC/COleControlContainer::m_listSitesOrWnds", "AFXOCC/COleControlContainer::m_nWindowlessControls", "AFXOCC/COleControlContainer::m_pOleFont", "AFXOCC/COleControlContainer::m_pSiteCapture", "AFXOCC/COleControlContainer::m_pSiteFocus", "AFXOCC/COleControlContainer::m_pSiteUIActive", "AFXOCC/COleControlContainer::m_pWnd", "AFXOCC/COleControlContainer::m_siteMap"] helpviewer_keywords: ["COleControlContainer [MFC], COleControlContainer", "COleControlContainer [MFC], AttachControlSite", "COleControlContainer [MFC], BroadcastAmbientPropertyChange", "COleControlContainer [MFC], CheckDlgButton", "COleControlContainer [MFC], CheckRadioButton", "COleControlContainer [MFC], CreateControl", "COleControlContainer [MFC], CreateOleFont", "COleControlContainer [MFC], FindItem", "COleControlContainer [MFC], FreezeAllEvents", "COleControlContainer [MFC], GetAmbientProp", "COleControlContainer [MFC], GetDlgItem", "COleControlContainer [MFC], GetDlgItemInt", "COleControlContainer [MFC], GetDlgItemText", "COleControlContainer [MFC], HandleSetFocus", "COleControlContainer [MFC], HandleWindowlessMessage", "COleControlContainer [MFC], IsDlgButtonChecked", "COleControlContainer [MFC], OnPaint", "COleControlContainer [MFC], OnUIActivate", "COleControlContainer [MFC], OnUIDeactivate", "COleControlContainer [MFC], ScrollChildren", "COleControlContainer [MFC], SendDlgItemMessage", "COleControlContainer [MFC], SetDlgItemInt", "COleControlContainer [MFC], SetDlgItemText", "COleControlContainer [MFC], m_crBack", "COleControlContainer [MFC], m_crFore", "COleControlContainer [MFC], m_listSitesOrWnds", "COleControlContainer [MFC], m_nWindowlessControls", "COleControlContainer [MFC], m_pOleFont", "COleControlContainer [MFC], m_pSiteCapture", "COleControlContainer [MFC], m_pSiteFocus", "COleControlContainer [MFC], m_pSiteUIActive", "COleControlContainer [MFC], m_pWnd", "COleControlContainer [MFC], m_siteMap"] -ms.assetid: f7ce9246-0fb7-4f07-a83a-6c2390d0fdf8 --- # COleControlContainer Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Acts as a control container for ActiveX controls. ## Syntax diff --git a/docs/mfc/reference/colecontrolmodule-class.md b/docs/mfc/reference/colecontrolmodule-class.md index 27758f5eae1..6a03e9ed1c9 100644 --- a/docs/mfc/reference/colecontrolmodule-class.md +++ b/docs/mfc/reference/colecontrolmodule-class.md @@ -4,10 +4,12 @@ title: "COleControlModule Class" ms.date: "11/04/2016" f1_keywords: ["OleControlModule"] helpviewer_keywords: ["OLE control modules [MFC]", "MFC ActiveX controls [MFC], OLE control modules", "COleControlModule class [MFC]", "control modules [MFC]"] -ms.assetid: 0721724d-d4af-4eda-ad34-5a2b27810dd4 --- # COleControlModule Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class from which you derive an OLE control module object. ## Syntax diff --git a/docs/mfc/reference/colecontrolsite-class.md b/docs/mfc/reference/colecontrolsite-class.md index 1e7c3602a6e..e5b30a331c1 100644 --- a/docs/mfc/reference/colecontrolsite-class.md +++ b/docs/mfc/reference/colecontrolsite-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["COleControlSite [MFC], COleControlSite", "COleControlSite --- # COleControlSite Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides support for custom client-side control interfaces. ## Syntax diff --git a/docs/mfc/reference/coleconvertdialog-class.md b/docs/mfc/reference/coleconvertdialog-class.md index eda026d9681..4d73297fdc0 100644 --- a/docs/mfc/reference/coleconvertdialog-class.md +++ b/docs/mfc/reference/coleconvertdialog-class.md @@ -4,10 +4,12 @@ title: "COleConvertDialog Class" ms.date: "11/04/2016" f1_keywords: ["COleConvertDialog", "AFXODLGS/COleConvertDialog", "AFXODLGS/COleConvertDialog::COleConvertDialog", "AFXODLGS/COleConvertDialog::DoConvert", "AFXODLGS/COleConvertDialog::DoModal", "AFXODLGS/COleConvertDialog::GetClassID", "AFXODLGS/COleConvertDialog::GetDrawAspect", "AFXODLGS/COleConvertDialog::GetIconicMetafile", "AFXODLGS/COleConvertDialog::GetSelectionType", "AFXODLGS/COleConvertDialog::m_cv"] helpviewer_keywords: ["COleConvertDialog [MFC], COleConvertDialog", "COleConvertDialog [MFC], DoConvert", "COleConvertDialog [MFC], DoModal", "COleConvertDialog [MFC], GetClassID", "COleConvertDialog [MFC], GetDrawAspect", "COleConvertDialog [MFC], GetIconicMetafile", "COleConvertDialog [MFC], GetSelectionType", "COleConvertDialog [MFC], m_cv"] -ms.assetid: a7c57714-31e8-4b78-834d-8ddd1b856a1c --- # COleConvertDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For more information, see the [OLEUICONVERT](/windows/win32/api/oledlg/ns-oledlg-oleuiconvertw) structure in the Windows SDK. ## Syntax diff --git a/docs/mfc/reference/colecurrency-class.md b/docs/mfc/reference/colecurrency-class.md index 76b27412456..b440966b509 100644 --- a/docs/mfc/reference/colecurrency-class.md +++ b/docs/mfc/reference/colecurrency-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["COleCurrency [MFC], COleCurrency", "COleCurrency [MFC], F --- # COleCurrency Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates the `CURRENCY` data type of OLE automation. ## Syntax diff --git a/docs/mfc/reference/coledataobject-class.md b/docs/mfc/reference/coledataobject-class.md index 66f054c745a..db59686d70a 100644 --- a/docs/mfc/reference/coledataobject-class.md +++ b/docs/mfc/reference/coledataobject-class.md @@ -4,10 +4,12 @@ title: "COleDataObject Class" ms.date: "11/04/2016" f1_keywords: ["COleDataObject", "AFXOLE/COleDataObject", "AFXOLE/COleDataObject::COleDataObject", "AFXOLE/COleDataObject::Attach", "AFXOLE/COleDataObject::AttachClipboard", "AFXOLE/COleDataObject::BeginEnumFormats", "AFXOLE/COleDataObject::Detach", "AFXOLE/COleDataObject::GetData", "AFXOLE/COleDataObject::GetFileData", "AFXOLE/COleDataObject::GetGlobalData", "AFXOLE/COleDataObject::GetNextFormat", "AFXOLE/COleDataObject::IsDataAvailable", "AFXOLE/COleDataObject::Release"] helpviewer_keywords: ["COleDataObject [MFC], COleDataObject", "COleDataObject [MFC], Attach", "COleDataObject [MFC], AttachClipboard", "COleDataObject [MFC], BeginEnumFormats", "COleDataObject [MFC], Detach", "COleDataObject [MFC], GetData", "COleDataObject [MFC], GetFileData", "COleDataObject [MFC], GetGlobalData", "COleDataObject [MFC], GetNextFormat", "COleDataObject [MFC], IsDataAvailable", "COleDataObject [MFC], Release"] -ms.assetid: d1cc84be-2e1c-4bb3-a8a0-565eb08aaa34 --- # COleDataObject Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Used in data transfers for retrieving data in various formats from the Clipboard, through drag and drop, or from an embedded OLE item. ## Syntax diff --git a/docs/mfc/reference/coledatasource-class.md b/docs/mfc/reference/coledatasource-class.md index 8d0101c0358..b107af62451 100644 --- a/docs/mfc/reference/coledatasource-class.md +++ b/docs/mfc/reference/coledatasource-class.md @@ -4,10 +4,12 @@ title: "COleDataSource Class" ms.date: "11/04/2016" f1_keywords: ["COleDataSource", "AFXOLE/COleDataSource", "AFXOLE/COleDataSource::COleDataSource", "AFXOLE/COleDataSource::CacheData", "AFXOLE/COleDataSource::CacheGlobalData", "AFXOLE/COleDataSource::DelayRenderData", "AFXOLE/COleDataSource::DelayRenderFileData", "AFXOLE/COleDataSource::DelaySetData", "AFXOLE/COleDataSource::DoDragDrop", "AFXOLE/COleDataSource::Empty", "AFXOLE/COleDataSource::FlushClipboard", "AFXOLE/COleDataSource::GetClipboardOwner", "AFXOLE/COleDataSource::OnRenderData", "AFXOLE/COleDataSource::OnRenderFileData", "AFXOLE/COleDataSource::OnRenderGlobalData", "AFXOLE/COleDataSource::OnSetData", "AFXOLE/COleDataSource::SetClipboard"] helpviewer_keywords: ["COleDataSource [MFC], COleDataSource", "COleDataSource [MFC], CacheData", "COleDataSource [MFC], CacheGlobalData", "COleDataSource [MFC], DelayRenderData", "COleDataSource [MFC], DelayRenderFileData", "COleDataSource [MFC], DelaySetData", "COleDataSource [MFC], DoDragDrop", "COleDataSource [MFC], Empty", "COleDataSource [MFC], FlushClipboard", "COleDataSource [MFC], GetClipboardOwner", "COleDataSource [MFC], OnRenderData", "COleDataSource [MFC], OnRenderFileData", "COleDataSource [MFC], OnRenderGlobalData", "COleDataSource [MFC], OnSetData", "COleDataSource [MFC], SetClipboard"] -ms.assetid: 02c8ee7d-8e10-4463-8613-bb2a0305ca69 --- # COleDataSource Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Acts as a cache into which an application places the data that it will offer during data transfer operations, such as Clipboard or drag-and-drop operations. ## Syntax diff --git a/docs/mfc/reference/coledbrecordview-class.md b/docs/mfc/reference/coledbrecordview-class.md index b8ab8c78076..dda014b94d5 100644 --- a/docs/mfc/reference/coledbrecordview-class.md +++ b/docs/mfc/reference/coledbrecordview-class.md @@ -4,10 +4,12 @@ title: "COleDBRecordView Class" ms.date: "11/04/2016" f1_keywords: ["COleDBRecordView", "AFXOLEDB/COleDBRecordView", "AFXOLEDB/COleDBRecordView::COleDBRecordView", "AFXOLEDB/COleDBRecordView::OnGetRowset", "AFXOLEDB/COleDBRecordView::OnMove"] helpviewer_keywords: ["COleDBRecordView [MFC], COleDBRecordView", "COleDBRecordView [MFC], OnGetRowset", "COleDBRecordView [MFC], OnMove"] -ms.assetid: 98612427-c4c9-4760-b7e1-85b17448add9 --- # COleDBRecordView Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A view that displays database records in controls. ## Syntax diff --git a/docs/mfc/reference/coledialog-class.md b/docs/mfc/reference/coledialog-class.md index bc4e1f0d908..cc997aaebd4 100644 --- a/docs/mfc/reference/coledialog-class.md +++ b/docs/mfc/reference/coledialog-class.md @@ -4,10 +4,12 @@ title: "COleDialog Class" ms.date: "11/04/2016" f1_keywords: ["COleDialog", "AFXODLGS/COleDialog", "AFXODLGS/COleDialog::GetLastError"] helpviewer_keywords: ["COleDialog [MFC], GetLastError"] -ms.assetid: b1ed0aca-3914-4b00-af34-4a4fb491aec7 --- # COleDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides functionality common to dialog boxes for OLE. ## Syntax diff --git a/docs/mfc/reference/coledispatchdriver-class.md b/docs/mfc/reference/coledispatchdriver-class.md index 5984ecda38f..5a08820a954 100644 --- a/docs/mfc/reference/coledispatchdriver-class.md +++ b/docs/mfc/reference/coledispatchdriver-class.md @@ -4,10 +4,12 @@ title: "COleDispatchDriver Class" ms.date: "11/04/2016" f1_keywords: ["COleDispatchDriver", "AFXDISP/COleDispatchDriver", "AFXDISP/COleDispatchDriver::COleDispatchDriver", "AFXDISP/COleDispatchDriver::AttachDispatch", "AFXDISP/COleDispatchDriver::CreateDispatch", "AFXDISP/COleDispatchDriver::DetachDispatch", "AFXDISP/COleDispatchDriver::GetProperty", "AFXDISP/COleDispatchDriver::InvokeHelper", "AFXDISP/COleDispatchDriver::ReleaseDispatch", "AFXDISP/COleDispatchDriver::SetProperty", "AFXDISP/COleDispatchDriver::m_bAutoRelease", "AFXDISP/COleDispatchDriver::m_lpDispatch"] helpviewer_keywords: ["COleDispatchDriver [MFC], COleDispatchDriver", "COleDispatchDriver [MFC], AttachDispatch", "COleDispatchDriver [MFC], CreateDispatch", "COleDispatchDriver [MFC], DetachDispatch", "COleDispatchDriver [MFC], GetProperty", "COleDispatchDriver [MFC], InvokeHelper", "COleDispatchDriver [MFC], ReleaseDispatch", "COleDispatchDriver [MFC], SetProperty", "COleDispatchDriver [MFC], m_bAutoRelease", "COleDispatchDriver [MFC], m_lpDispatch"] -ms.assetid: 3ed98daf-cdc7-4374-8a0c-cf695a8d3657 --- # COleDispatchDriver Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the client side of OLE automation. ## Syntax diff --git a/docs/mfc/reference/coledispatchexception-class.md b/docs/mfc/reference/coledispatchexception-class.md index a37125f8492..c95af10037c 100644 --- a/docs/mfc/reference/coledispatchexception-class.md +++ b/docs/mfc/reference/coledispatchexception-class.md @@ -4,10 +4,12 @@ title: "COleDispatchException Class" ms.date: "11/04/2016" f1_keywords: ["COleDispatchException", "AFXDISP/COleDispatchException", "AFXDISP/COleDispatchException::m_dwHelpContext", "AFXDISP/COleDispatchException::m_strDescription", "AFXDISP/COleDispatchException::m_strHelpFile", "AFXDISP/COleDispatchException::m_strSource", "AFXDISP/COleDispatchException::m_wCode"] helpviewer_keywords: ["COleDispatchException [MFC], m_dwHelpContext", "COleDispatchException [MFC], m_strDescription", "COleDispatchException [MFC], m_strHelpFile", "COleDispatchException [MFC], m_strSource", "COleDispatchException [MFC], m_wCode"] -ms.assetid: 0e95c8be-e21a-490c-99ec-181c6a9a26d0 --- # COleDispatchException Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Handles exceptions specific to the OLE `IDispatch` interface, which is a key part of OLE automation. ## Syntax diff --git a/docs/mfc/reference/coledocobjectitem-class.md b/docs/mfc/reference/coledocobjectitem-class.md index 91854ce6bb8..5bf120dd054 100644 --- a/docs/mfc/reference/coledocobjectitem-class.md +++ b/docs/mfc/reference/coledocobjectitem-class.md @@ -4,10 +4,12 @@ title: "COleDocObjectItem Class" ms.date: "11/04/2016" f1_keywords: ["COleDocObjectItem", "AFXOLE/COleDocObjectItem", "AFXOLE/COleDocObjectItem::COleDocObjectItem", "AFXOLE/COleDocObjectItem::DoDefaultPrinting", "AFXOLE/COleDocObjectItem::ExecCommand", "AFXOLE/COleDocObjectItem::GetActiveView", "AFXOLE/COleDocObjectItem::GetPageCount", "AFXOLE/COleDocObjectItem::OnPreparePrinting", "AFXOLE/COleDocObjectItem::OnPrint", "AFXOLE/COleDocObjectItem::QueryCommand", "AFXOLE/COleDocObjectItem::Release"] helpviewer_keywords: ["COleDocObjectItem [MFC], COleDocObjectItem", "COleDocObjectItem [MFC], DoDefaultPrinting", "COleDocObjectItem [MFC], ExecCommand", "COleDocObjectItem [MFC], GetActiveView", "COleDocObjectItem [MFC], GetPageCount", "COleDocObjectItem [MFC], OnPreparePrinting", "COleDocObjectItem [MFC], OnPrint", "COleDocObjectItem [MFC], QueryCommand", "COleDocObjectItem [MFC], Release"] -ms.assetid: d150d306-8fd3-4831-b06d-afbe71d8fc9b --- # COleDocObjectItem Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements Active document containment. ## Syntax diff --git a/docs/mfc/reference/coledocument-class.md b/docs/mfc/reference/coledocument-class.md index fe1959bf1aa..9c792ffd574 100644 --- a/docs/mfc/reference/coledocument-class.md +++ b/docs/mfc/reference/coledocument-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["COleDocument [MFC], COleDocument", "COleDocument [MFC], A --- # COleDocument Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class for OLE documents that support visual editing. ## Syntax diff --git a/docs/mfc/reference/coledropsource-class.md b/docs/mfc/reference/coledropsource-class.md index 1681ecaa0d2..e00dc920b0b 100644 --- a/docs/mfc/reference/coledropsource-class.md +++ b/docs/mfc/reference/coledropsource-class.md @@ -4,10 +4,12 @@ title: "COleDropSource Class" ms.date: "11/04/2016" f1_keywords: ["COleDropSource", "AFXOLE/COleDropSource", "AFXOLE/COleDropSource::COleDropSource", "AFXOLE/COleDropSource::GiveFeedback", "AFXOLE/COleDropSource::OnBeginDrag", "AFXOLE/COleDropSource::QueryContinueDrag"] helpviewer_keywords: ["COleDropSource [MFC], COleDropSource", "COleDropSource [MFC], GiveFeedback", "COleDropSource [MFC], OnBeginDrag", "COleDropSource [MFC], QueryContinueDrag"] -ms.assetid: d3eecc5f-a70b-4a01-b705-7d2c098ebe17 --- # COleDropSource Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Allows data to be dragged to a drop target. ## Syntax diff --git a/docs/mfc/reference/coledroptarget-class.md b/docs/mfc/reference/coledroptarget-class.md index 302ff8d19da..e9bd9141c53 100644 --- a/docs/mfc/reference/coledroptarget-class.md +++ b/docs/mfc/reference/coledroptarget-class.md @@ -4,10 +4,12 @@ title: "COleDropTarget Class" ms.date: "11/04/2016" f1_keywords: ["COleDropTarget", "AFXOLE/COleDropTarget", "AFXOLE/COleDropTarget::COleDropTarget", "AFXOLE/COleDropTarget::OnDragEnter", "AFXOLE/COleDropTarget::OnDragLeave", "AFXOLE/COleDropTarget::OnDragOver", "AFXOLE/COleDropTarget::OnDragScroll", "AFXOLE/COleDropTarget::OnDrop", "AFXOLE/COleDropTarget::OnDropEx", "AFXOLE/COleDropTarget::Register", "AFXOLE/COleDropTarget::Revoke"] helpviewer_keywords: ["COleDropTarget [MFC], COleDropTarget", "COleDropTarget [MFC], OnDragEnter", "COleDropTarget [MFC], OnDragLeave", "COleDropTarget [MFC], OnDragOver", "COleDropTarget [MFC], OnDragScroll", "COleDropTarget [MFC], OnDrop", "COleDropTarget [MFC], OnDropEx", "COleDropTarget [MFC], Register", "COleDropTarget [MFC], Revoke"] -ms.assetid: a58c9a48-6a93-4357-b078-4594df258311 --- # COleDropTarget Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the communication mechanism between a window and the OLE libraries. ## Syntax diff --git a/docs/mfc/reference/coleexception-class.md b/docs/mfc/reference/coleexception-class.md index c9c34fbd723..f78ec5f29fb 100644 --- a/docs/mfc/reference/coleexception-class.md +++ b/docs/mfc/reference/coleexception-class.md @@ -4,10 +4,12 @@ title: "COleException Class" ms.date: "11/04/2016" f1_keywords: ["COleException", "AFXDISP/COleException", "AFXDISP/COleException::Process", "AFXDISP/COleException::m_sc"] helpviewer_keywords: ["COleException [MFC], Process", "COleException [MFC], m_sc"] -ms.assetid: 2571e9fe-26cc-42f0-9ad9-8ad5b4311ec1 --- # COleException Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents an exception condition related to an OLE operation. ## Syntax diff --git a/docs/mfc/reference/coleinsertdialog-class.md b/docs/mfc/reference/coleinsertdialog-class.md index 976c1cfaacb..229f2ae0ac3 100644 --- a/docs/mfc/reference/coleinsertdialog-class.md +++ b/docs/mfc/reference/coleinsertdialog-class.md @@ -4,10 +4,12 @@ title: "COleInsertDialog Class" ms.date: "11/04/2016" f1_keywords: ["COleInsertDialog", "AFXODLGS/COleInsertDialog", "AFXODLGS/COleInsertDialog::COleInsertDialog", "AFXODLGS/COleInsertDialog::CreateItem", "AFXODLGS/COleInsertDialog::DoModal", "AFXODLGS/COleInsertDialog::GetClassID", "AFXODLGS/COleInsertDialog::GetDrawAspect", "AFXODLGS/COleInsertDialog::GetIconicMetafile", "AFXODLGS/COleInsertDialog::GetPathName", "AFXODLGS/COleInsertDialog::GetSelectionType", "AFXODLGS/COleInsertDialog::m_io"] helpviewer_keywords: ["COleInsertDialog [MFC], COleInsertDialog", "COleInsertDialog [MFC], CreateItem", "COleInsertDialog [MFC], DoModal", "COleInsertDialog [MFC], GetClassID", "COleInsertDialog [MFC], GetDrawAspect", "COleInsertDialog [MFC], GetIconicMetafile", "COleInsertDialog [MFC], GetPathName", "COleInsertDialog [MFC], GetSelectionType", "COleInsertDialog [MFC], m_io"] -ms.assetid: a9ec610b-abde-431e-bd01-c40159a66dbb --- # COleInsertDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Used for the OLE Insert Object dialog box. ## Syntax diff --git a/docs/mfc/reference/coleipframewnd-class.md b/docs/mfc/reference/coleipframewnd-class.md index 268e34a20cd..01d3333f30c 100644 --- a/docs/mfc/reference/coleipframewnd-class.md +++ b/docs/mfc/reference/coleipframewnd-class.md @@ -4,10 +4,12 @@ title: "COleIPFrameWnd Class" ms.date: "11/04/2016" f1_keywords: ["COleIPFrameWnd", "AFXOLE/COleIPFrameWnd", "AFXOLE/COleIPFrameWnd::COleIPFrameWnd", "AFXOLE/COleIPFrameWnd::OnCreateControlBars", "AFXOLE/COleIPFrameWnd::RepositionFrame"] helpviewer_keywords: ["COleIPFrameWnd [MFC], COleIPFrameWnd", "COleIPFrameWnd [MFC], OnCreateControlBars", "COleIPFrameWnd [MFC], RepositionFrame"] -ms.assetid: 24abb2cb-826c-4dda-a287-d8a8900a5763 --- # COleIPFrameWnd Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base for your application's in-place editing window. ## Syntax diff --git a/docs/mfc/reference/coleipframewndex-class.md b/docs/mfc/reference/coleipframewndex-class.md index 51faf2f1521..e309d938cf8 100644 --- a/docs/mfc/reference/coleipframewndex-class.md +++ b/docs/mfc/reference/coleipframewndex-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["COleIPFrameWndEx [MFC], AddDockSite", "COleIPFrameWndEx [ --- # COleIPFrameWndEx Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `COleIPFrameWndEx` class implements an OLE container that supports MFC. You must derive the in-place frame window class for your application from the `COleIPFrameWndEx` class, instead of deriving it from the [COleIPFrameWnd](../../mfc/reference/coleipframewnd-class.md) class. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/colelinkingdoc-class.md b/docs/mfc/reference/colelinkingdoc-class.md index a0e9bc58586..e81abbb02b1 100644 --- a/docs/mfc/reference/colelinkingdoc-class.md +++ b/docs/mfc/reference/colelinkingdoc-class.md @@ -4,10 +4,12 @@ title: "COleLinkingDoc Class" ms.date: "11/04/2016" f1_keywords: ["COleLinkingDoc", "AFXOLE/COleLinkingDoc", "AFXOLE/COleLinkingDoc::COleLinkingDoc", "AFXOLE/COleLinkingDoc::Register", "AFXOLE/COleLinkingDoc::Revoke", "AFXOLE/COleLinkingDoc::OnFindEmbeddedItem", "AFXOLE/COleLinkingDoc::OnGetLinkedItem"] helpviewer_keywords: ["COleLinkingDoc [MFC], COleLinkingDoc", "COleLinkingDoc [MFC], Register", "COleLinkingDoc [MFC], Revoke", "COleLinkingDoc [MFC], OnFindEmbeddedItem", "COleLinkingDoc [MFC], OnGetLinkedItem"] -ms.assetid: 9f547f35-2f95-427f-b9c0-85c31940198b --- # COleLinkingDoc Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class for OLE container documents that support linking to the embedded items they contain. ## Syntax diff --git a/docs/mfc/reference/colelinksdialog-class.md b/docs/mfc/reference/colelinksdialog-class.md index 9f58c147848..af1f098034d 100644 --- a/docs/mfc/reference/colelinksdialog-class.md +++ b/docs/mfc/reference/colelinksdialog-class.md @@ -4,10 +4,12 @@ title: "COleLinksDialog Class" ms.date: "11/04/2016" f1_keywords: ["COleLinksDialog", "AFXODLGS/COleLinksDialog", "AFXODLGS/COleLinksDialog::COleLinksDialog", "AFXODLGS/COleLinksDialog::DoModal", "AFXODLGS/COleLinksDialog::m_el"] helpviewer_keywords: ["COleLinksDialog [MFC], COleLinksDialog", "COleLinksDialog [MFC], DoModal", "COleLinksDialog [MFC], m_el"] -ms.assetid: fb2eb638-2809-46db-ac74-392a732affc7 --- # COleLinksDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Used for the OLE Edit Links dialog box. ## Syntax diff --git a/docs/mfc/reference/colemessagefilter-class.md b/docs/mfc/reference/colemessagefilter-class.md index 4fe6409199c..51294d30e72 100644 --- a/docs/mfc/reference/colemessagefilter-class.md +++ b/docs/mfc/reference/colemessagefilter-class.md @@ -4,10 +4,12 @@ title: "COleMessageFilter Class" ms.date: "11/04/2016" f1_keywords: ["COleMessageFilter", "AFXOLE/COleMessageFilter", "AFXOLE/COleMessageFilter::COleMessageFilter", "AFXOLE/COleMessageFilter::BeginBusyState", "AFXOLE/COleMessageFilter::EnableBusyDialog", "AFXOLE/COleMessageFilter::EnableNotRespondingDialog", "AFXOLE/COleMessageFilter::EndBusyState", "AFXOLE/COleMessageFilter::OnMessagePending", "AFXOLE/COleMessageFilter::Register", "AFXOLE/COleMessageFilter::Revoke", "AFXOLE/COleMessageFilter::SetBusyReply", "AFXOLE/COleMessageFilter::SetMessagePendingDelay", "AFXOLE/COleMessageFilter::SetRetryReply"] helpviewer_keywords: ["COleMessageFilter [MFC], COleMessageFilter", "COleMessageFilter [MFC], BeginBusyState", "COleMessageFilter [MFC], EnableBusyDialog", "COleMessageFilter [MFC], EnableNotRespondingDialog", "COleMessageFilter [MFC], EndBusyState", "COleMessageFilter [MFC], OnMessagePending", "COleMessageFilter [MFC], Register", "COleMessageFilter [MFC], Revoke", "COleMessageFilter [MFC], SetBusyReply", "COleMessageFilter [MFC], SetMessagePendingDelay", "COleMessageFilter [MFC], SetRetryReply"] -ms.assetid: b1fd1639-fac4-4fd0-bf17-15172deba13c --- # COleMessageFilter Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Manages the concurrency required by the interaction of OLE applications. ## Syntax diff --git a/docs/mfc/reference/coleobjectfactory-class.md b/docs/mfc/reference/coleobjectfactory-class.md index e1b3a5411d5..08a19604d79 100644 --- a/docs/mfc/reference/coleobjectfactory-class.md +++ b/docs/mfc/reference/coleobjectfactory-class.md @@ -4,10 +4,12 @@ title: "COleObjectFactory Class" ms.date: "11/04/2016" f1_keywords: ["COleObjectFactory", "AFXDISP/COleObjectFactory", "AFXDISP/COleObjectFactory::COleObjectFactory", "AFXDISP/COleObjectFactory::GetClassID", "AFXDISP/COleObjectFactory::IsLicenseValid", "AFXDISP/COleObjectFactory::IsRegistered", "AFXDISP/COleObjectFactory::Register", "AFXDISP/COleObjectFactory::RegisterAll", "AFXDISP/COleObjectFactory::Revoke", "AFXDISP/COleObjectFactory::RevokeAll", "AFXDISP/COleObjectFactory::UnregisterAll", "AFXDISP/COleObjectFactory::UpdateRegistry", "AFXDISP/COleObjectFactory::UpdateRegistryAll", "AFXDISP/COleObjectFactory::GetLicenseKey", "AFXDISP/COleObjectFactory::OnCreateObject", "AFXDISP/COleObjectFactory::VerifyLicenseKey", "AFXDISP/COleObjectFactory::VerifyUserLicense"] helpviewer_keywords: ["COleObjectFactory [MFC], COleObjectFactory", "COleObjectFactory [MFC], GetClassID", "COleObjectFactory [MFC], IsLicenseValid", "COleObjectFactory [MFC], IsRegistered", "COleObjectFactory [MFC], Register", "COleObjectFactory [MFC], RegisterAll", "COleObjectFactory [MFC], Revoke", "COleObjectFactory [MFC], RevokeAll", "COleObjectFactory [MFC], UnregisterAll", "COleObjectFactory [MFC], UpdateRegistry", "COleObjectFactory [MFC], UpdateRegistryAll", "COleObjectFactory [MFC], GetLicenseKey", "COleObjectFactory [MFC], OnCreateObject", "COleObjectFactory [MFC], VerifyLicenseKey", "COleObjectFactory [MFC], VerifyUserLicense"] -ms.assetid: ab179c1e-4af2-44aa-a576-37c48149b427 --- # COleObjectFactory Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the OLE class factory, which creates OLE objects such as servers, automation objects, and documents. ## Syntax diff --git a/docs/mfc/reference/colepastespecialdialog-class.md b/docs/mfc/reference/colepastespecialdialog-class.md index cfc6e49021c..26e5fd4a445 100644 --- a/docs/mfc/reference/colepastespecialdialog-class.md +++ b/docs/mfc/reference/colepastespecialdialog-class.md @@ -4,10 +4,12 @@ title: "COlePasteSpecialDialog Class" ms.date: "11/04/2016" f1_keywords: ["COlePasteSpecialDialog", "AFXODLGS/COlePasteSpecialDialog", "AFXODLGS/COlePasteSpecialDialog::COlePasteSpecialDialog", "AFXODLGS/COlePasteSpecialDialog::AddFormat", "AFXODLGS/COlePasteSpecialDialog::AddLinkEntry", "AFXODLGS/COlePasteSpecialDialog::AddStandardFormats", "AFXODLGS/COlePasteSpecialDialog::CreateItem", "AFXODLGS/COlePasteSpecialDialog::DoModal", "AFXODLGS/COlePasteSpecialDialog::GetDrawAspect", "AFXODLGS/COlePasteSpecialDialog::GetIconicMetafile", "AFXODLGS/COlePasteSpecialDialog::GetPasteIndex", "AFXODLGS/COlePasteSpecialDialog::GetSelectionType", "AFXODLGS/COlePasteSpecialDialog::m_ps"] helpviewer_keywords: ["COlePasteSpecialDialog [MFC], COlePasteSpecialDialog", "COlePasteSpecialDialog [MFC], AddFormat", "COlePasteSpecialDialog [MFC], AddLinkEntry", "COlePasteSpecialDialog [MFC], AddStandardFormats", "COlePasteSpecialDialog [MFC], CreateItem", "COlePasteSpecialDialog [MFC], DoModal", "COlePasteSpecialDialog [MFC], GetDrawAspect", "COlePasteSpecialDialog [MFC], GetIconicMetafile", "COlePasteSpecialDialog [MFC], GetPasteIndex", "COlePasteSpecialDialog [MFC], GetSelectionType", "COlePasteSpecialDialog [MFC], m_ps"] -ms.assetid: 0e82ef9a-9bbe-457e-8240-42c86a0534f7 --- # COlePasteSpecialDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Used for the OLE Paste Special dialog box. ## Syntax diff --git a/docs/mfc/reference/colepropertiesdialog-class.md b/docs/mfc/reference/colepropertiesdialog-class.md index 55ad58f8271..c35ab0d70ec 100644 --- a/docs/mfc/reference/colepropertiesdialog-class.md +++ b/docs/mfc/reference/colepropertiesdialog-class.md @@ -4,10 +4,12 @@ title: "COlePropertiesDialog Class" ms.date: "11/04/2016" f1_keywords: ["COlePropertiesDialog", "AFXODLGS/COlePropertiesDialog", "AFXODLGS/COlePropertiesDialog::COlePropertiesDialog", "AFXODLGS/COlePropertiesDialog::DoModal", "AFXODLGS/COlePropertiesDialog::OnApplyScale", "AFXODLGS/COlePropertiesDialog::m_gp", "AFXODLGS/COlePropertiesDialog::m_lp", "AFXODLGS/COlePropertiesDialog::m_op", "AFXODLGS/COlePropertiesDialog::m_psh", "AFXODLGS/COlePropertiesDialog::m_vp"] helpviewer_keywords: ["COlePropertiesDialog [MFC], COlePropertiesDialog", "COlePropertiesDialog [MFC], DoModal", "COlePropertiesDialog [MFC], OnApplyScale", "COlePropertiesDialog [MFC], m_gp", "COlePropertiesDialog [MFC], m_lp", "COlePropertiesDialog [MFC], m_op", "COlePropertiesDialog [MFC], m_psh", "COlePropertiesDialog [MFC], m_vp"] -ms.assetid: a54dbc89-1447-4329-bd01-00e98ec9e935 --- # COlePropertiesDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates the Windows common OLE Object Properties dialog box. ## Syntax diff --git a/docs/mfc/reference/colepropertypage-class.md b/docs/mfc/reference/colepropertypage-class.md index bc1c760b238..e9d69c786df 100644 --- a/docs/mfc/reference/colepropertypage-class.md +++ b/docs/mfc/reference/colepropertypage-class.md @@ -4,10 +4,12 @@ title: "COlePropertyPage Class" ms.date: "11/04/2016" f1_keywords: ["COlePropertyPage", "AFXCTL/COlePropertyPage", "AFXCTL/COlePropertyPage::COlePropertyPage", "AFXCTL/COlePropertyPage::GetControlStatus", "AFXCTL/COlePropertyPage::GetObjectArray", "AFXCTL/COlePropertyPage::GetPageSite", "AFXCTL/COlePropertyPage::OVERWRITEApply", "AFXCTL/COlePropertyPage::IsModified", "AFXCTL/COlePropertyPage::OnEditProperty", "AFXCTL/COlePropertyPage::OnHelp", "AFXCTL/COlePropertyPage::OnInitDialog", "AFXCTL/COlePropertyPage::OnObjectsChanged", "AFXCTL/COlePropertyPage::OnSetPageSite", "AFXCTL/COlePropertyPage::SetControlStatus", "AFXCTL/COlePropertyPage::SetDialogResource", "AFXCTL/COlePropertyPage::SetHelpInfo", "AFXCTL/COlePropertyPage::SetModifiedFlag", "AFXCTL/COlePropertyPage::SetPageName"] helpviewer_keywords: ["COlePropertyPage [MFC], COlePropertyPage", "COlePropertyPage [MFC], GetControlStatus", "COlePropertyPage [MFC], GetObjectArray", "COlePropertyPage [MFC], GetPageSite", "COlePropertyPage [MFC], IgnoreApply", "COlePropertyPage [MFC], IsModified", "COlePropertyPage [MFC], OnEditProperty", "COlePropertyPage [MFC], OnHelp", "COlePropertyPage [MFC], OnInitDialog", "COlePropertyPage [MFC], OnObjectsChanged", "COlePropertyPage [MFC], OnSetPageSite", "COlePropertyPage [MFC], SetControlStatus", "COlePropertyPage [MFC], SetDialogResource", "COlePropertyPage [MFC], SetHelpInfo", "COlePropertyPage [MFC], SetModifiedFlag", "COlePropertyPage [MFC], SetPageName"] -ms.assetid: e9972872-8e6b-4550-905e-d36a274d64dc --- # COlePropertyPage Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Used to display the properties of a custom control in a graphical interface, similar to a dialog box. ## Syntax From 2348f344097a8ff6d6a52648caa490df36f0d020 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 20 Feb 2026 11:03:11 -0800 Subject: [PATCH 306/619] Batch 9: update files --- docs/mfc/reference/coleresizebar-class.md | 4 +++- docs/mfc/reference/colesafearray-class.md | 3 +++ docs/mfc/reference/coleserverdoc-class.md | 3 +++ docs/mfc/reference/coleserveritem-class.md | 4 +++- docs/mfc/reference/colestreamfile-class.md | 3 +++ docs/mfc/reference/coletemplateserver-class.md | 3 +++ docs/mfc/reference/coleupdatedialog-class.md | 4 +++- docs/mfc/reference/colevariant-class.md | 3 +++ docs/mfc/reference/collection-class-helpers.md | 3 +++ docs/mfc/reference/combo-box-handlers.md | 4 +++- .../compound-document-support-mfc-application-wizard.md | 4 +++- docs/mfc/reference/connection-maps.md | 3 +++ .../mfc/reference/control-names-mfc-activex-control-wizard.md | 4 +++- .../reference/control-settings-mfc-activex-control-wizard.md | 4 +++- docs/mfc/reference/cpagerctrl-class.md | 4 +++- docs/mfc/reference/cpagesetupdialog-class.md | 4 +++- docs/mfc/reference/cpaintdc-class.md | 3 +++ docs/mfc/reference/cpalette-class.md | 4 +++- docs/mfc/reference/cpane-class.md | 3 +++ docs/mfc/reference/cpanecontainer-class.md | 3 +++ docs/mfc/reference/cpanecontainermanager-class.md | 4 +++- docs/mfc/reference/cpanedialog-class.md | 4 +++- docs/mfc/reference/cpanedivider-class.md | 4 +++- docs/mfc/reference/cpaneframewnd-class.md | 4 +++- .../reference/cparabolictransitionfromacceleration-class.md | 4 +++- docs/mfc/reference/cpen-class.md | 3 +++ docs/mfc/reference/cpictureholder-class.md | 4 +++- docs/mfc/reference/cprintdialog-class.md | 3 +++ docs/mfc/reference/cprintdialogex-class.md | 4 +++- docs/mfc/reference/cprintinfo-structure.md | 4 +++- docs/mfc/reference/cprogressctrl-class.md | 3 +++ docs/mfc/reference/cpropertypage-class.md | 3 +++ docs/mfc/reference/cpropertysheet-class.md | 4 +++- docs/mfc/reference/cpropexchange-class.md | 4 +++- docs/mfc/reference/cptrarray-class.md | 4 +++- docs/mfc/reference/cptrlist-class.md | 4 +++- .../creating-a-file-explorer-style-mfc-application.md | 3 +++ docs/mfc/reference/creating-a-forms-based-mfc-application.md | 4 +++- .../reference/creating-a-web-browser-style-mfc-application.md | 3 +++ .../reference/creating-an-mfc-activex-control-container.md | 4 +++- docs/mfc/reference/creating-an-mfc-activex-control.md | 4 +++- docs/mfc/reference/creating-an-mfc-application.md | 3 +++ docs/mfc/reference/creating-an-mfc-dll-project.md | 4 +++- docs/mfc/reference/crebar-class.md | 4 +++- docs/mfc/reference/crebarctrl-class.md | 3 +++ docs/mfc/reference/crecentdocksiteinfo-class.md | 4 +++- docs/mfc/reference/crecentfilelist-class.md | 4 +++- docs/mfc/reference/crecordset-class.md | 3 +++ docs/mfc/reference/crecordview-class.md | 4 +++- docs/mfc/reference/crecttracker-class.md | 4 +++- docs/mfc/reference/crendertarget-class.md | 4 +++- docs/mfc/reference/cresourceexception-class.md | 4 +++- docs/mfc/reference/creversaltransition-class.md | 4 +++- docs/mfc/reference/crgn-class.md | 3 +++ docs/mfc/reference/cricheditcntritem-class.md | 4 +++- docs/mfc/reference/cricheditctrl-class.md | 3 +++ docs/mfc/reference/cricheditdoc-class.md | 4 +++- docs/mfc/reference/cricheditview-class.md | 4 +++- docs/mfc/reference/cruntimeclass-structure.md | 4 +++- docs/mfc/reference/cscrollbar-class.md | 3 +++ docs/mfc/reference/cscrollview-class.md | 3 +++ docs/mfc/reference/csemaphore-class.md | 3 +++ docs/mfc/reference/csettingsstore-class.md | 4 +++- docs/mfc/reference/csettingsstoresp-class.md | 4 +++- docs/mfc/reference/csharedfile-class.md | 4 +++- docs/mfc/reference/cshellmanager-class.md | 4 +++- docs/mfc/reference/csimpleexception-class.md | 4 +++- docs/mfc/reference/csingledoctemplate-class.md | 4 +++- docs/mfc/reference/csinglelock-class.md | 3 +++ docs/mfc/reference/csinusoidaltransitionfromrange-class.md | 4 +++- docs/mfc/reference/csinusoidaltransitionfromvelocity-class.md | 4 +++- docs/mfc/reference/csliderctrl-class.md | 3 +++ docs/mfc/reference/csmartdockinginfo-class.md | 4 +++- docs/mfc/reference/csmoothstoptransition-class.md | 4 +++- docs/mfc/reference/csocket-class.md | 4 +++- docs/mfc/reference/csocketfile-class.md | 4 +++- docs/mfc/reference/cspinbuttonctrl-class.md | 3 +++ docs/mfc/reference/csplitbutton-class.md | 4 +++- docs/mfc/reference/csplitterwnd-class.md | 3 +++ docs/mfc/reference/csplitterwndex-class.md | 4 +++- docs/mfc/reference/cstatic-class.md | 4 +++- docs/mfc/reference/cstatusbar-class.md | 3 +++ docs/mfc/reference/cstatusbarctrl-class.md | 4 +++- docs/mfc/reference/cstdiofile-class.md | 3 +++ .../reference/cstring-formatting-and-message-box-display.md | 4 +++- docs/mfc/reference/cstringarray-class.md | 3 +++ docs/mfc/reference/cstringlist-class.md | 3 +++ docs/mfc/reference/csyncobject-class.md | 4 +++- docs/mfc/reference/ctabbedpane-class.md | 4 +++- docs/mfc/reference/ctabctrl-class.md | 3 +++ docs/mfc/reference/ctabview-class.md | 3 +++ docs/mfc/reference/ctaskdialog-class.md | 4 +++- docs/mfc/reference/ctoolbar-class.md | 3 +++ docs/mfc/reference/ctoolbarctrl-class.md | 3 +++ docs/mfc/reference/ctooltipctrl-class.md | 3 +++ docs/mfc/reference/ctooltipmanager-class.md | 4 +++- docs/mfc/reference/ctreectrl-class.md | 4 +++- docs/mfc/reference/ctreeview-class.md | 4 +++- docs/mfc/reference/ctypedptrarray-class.md | 3 +++ docs/mfc/reference/ctypedptrlist-class.md | 3 +++ 100 files changed, 300 insertions(+), 61 deletions(-) diff --git a/docs/mfc/reference/coleresizebar-class.md b/docs/mfc/reference/coleresizebar-class.md index 1066e554e7a..5909bb78628 100644 --- a/docs/mfc/reference/coleresizebar-class.md +++ b/docs/mfc/reference/coleresizebar-class.md @@ -4,10 +4,12 @@ title: "COleResizeBar Class" ms.date: "11/04/2016" f1_keywords: ["COleResizeBar", "AFXOLE/COleResizeBar", "AFXOLE/COleResizeBar::COleResizeBar", "AFXOLE/COleResizeBar::Create"] helpviewer_keywords: ["COleResizeBar [MFC], COleResizeBar", "COleResizeBar [MFC], Create"] -ms.assetid: 56a708d9-28c5-4eb0-9404-77b688d91c63 --- # COleResizeBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A type of control bar that supports resizing of in-place OLE items. ## Syntax diff --git a/docs/mfc/reference/colesafearray-class.md b/docs/mfc/reference/colesafearray-class.md index f85c05baf87..322140c97cd 100644 --- a/docs/mfc/reference/colesafearray-class.md +++ b/docs/mfc/reference/colesafearray-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["COleSafeArray [MFC], COleSafeArray", "COleSafeArray [MFC] --- # COleSafeArray Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A class for working with arrays of arbitrary type and dimension. ## Syntax diff --git a/docs/mfc/reference/coleserverdoc-class.md b/docs/mfc/reference/coleserverdoc-class.md index b81a4ff6fdf..c9c350b8214 100644 --- a/docs/mfc/reference/coleserverdoc-class.md +++ b/docs/mfc/reference/coleserverdoc-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["COleServerDoc [MFC], COleServerDoc", "COleServerDoc [MFC] --- # COleServerDoc Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class for OLE server documents. ## Syntax diff --git a/docs/mfc/reference/coleserveritem-class.md b/docs/mfc/reference/coleserveritem-class.md index 44a7e5a498a..61718ed04e1 100644 --- a/docs/mfc/reference/coleserveritem-class.md +++ b/docs/mfc/reference/coleserveritem-class.md @@ -4,10 +4,12 @@ title: "COleServerItem Class" ms.date: "11/04/2016" f1_keywords: ["COleServerItem", "AFXOLE/COleServerItem", "AFXOLE/COleServerItem::COleServerItem", "AFXOLE/COleServerItem::AddOtherClipboardData", "AFXOLE/COleServerItem::CopyToClipboard", "AFXOLE/COleServerItem::DoDragDrop", "AFXOLE/COleServerItem::GetClipboardData", "AFXOLE/COleServerItem::GetDocument", "AFXOLE/COleServerItem::GetEmbedSourceData", "AFXOLE/COleServerItem::GetItemName", "AFXOLE/COleServerItem::GetLinkSourceData", "AFXOLE/COleServerItem::GetObjectDescriptorData", "AFXOLE/COleServerItem::IsConnected", "AFXOLE/COleServerItem::IsLinkedItem", "AFXOLE/COleServerItem::NotifyChanged", "AFXOLE/COleServerItem::OnDoVerb", "AFXOLE/COleServerItem::OnDraw", "AFXOLE/COleServerItem::OnDrawEx", "AFXOLE/COleServerItem::OnGetClipboardData", "AFXOLE/COleServerItem::OnGetExtent", "AFXOLE/COleServerItem::OnInitFromData", "AFXOLE/COleServerItem::OnQueryUpdateItems", "AFXOLE/COleServerItem::OnRenderData", "AFXOLE/COleServerItem::OnRenderFileData", "AFXOLE/COleServerItem::OnRenderGlobalData", "AFXOLE/COleServerItem::OnSetColorScheme", "AFXOLE/COleServerItem::OnSetData", "AFXOLE/COleServerItem::OnSetExtent", "AFXOLE/COleServerItem::OnUpdate", "AFXOLE/COleServerItem::OnUpdateItems", "AFXOLE/COleServerItem::SetItemName", "AFXOLE/COleServerItem::GetDataSource", "AFXOLE/COleServerItem::OnHide", "AFXOLE/COleServerItem::OnOpen", "AFXOLE/COleServerItem::OnShow", "AFXOLE/COleServerItem::m_sizeExtent"] helpviewer_keywords: ["COleServerItem [MFC], COleServerItem", "COleServerItem [MFC], AddOtherClipboardData", "COleServerItem [MFC], CopyToClipboard", "COleServerItem [MFC], DoDragDrop", "COleServerItem [MFC], GetClipboardData", "COleServerItem [MFC], GetDocument", "COleServerItem [MFC], GetEmbedSourceData", "COleServerItem [MFC], GetItemName", "COleServerItem [MFC], GetLinkSourceData", "COleServerItem [MFC], GetObjectDescriptorData", "COleServerItem [MFC], IsConnected", "COleServerItem [MFC], IsLinkedItem", "COleServerItem [MFC], NotifyChanged", "COleServerItem [MFC], OnDoVerb", "COleServerItem [MFC], OnDraw", "COleServerItem [MFC], OnDrawEx", "COleServerItem [MFC], OnGetClipboardData", "COleServerItem [MFC], OnGetExtent", "COleServerItem [MFC], OnInitFromData", "COleServerItem [MFC], OnQueryUpdateItems", "COleServerItem [MFC], OnRenderData", "COleServerItem [MFC], OnRenderFileData", "COleServerItem [MFC], OnRenderGlobalData", "COleServerItem [MFC], OnSetColorScheme", "COleServerItem [MFC], OnSetData", "COleServerItem [MFC], OnSetExtent", "COleServerItem [MFC], OnUpdate", "COleServerItem [MFC], OnUpdateItems", "COleServerItem [MFC], SetItemName", "COleServerItem [MFC], GetDataSource", "COleServerItem [MFC], OnHide", "COleServerItem [MFC], OnOpen", "COleServerItem [MFC], OnShow", "COleServerItem [MFC], m_sizeExtent"] -ms.assetid: 80256df6-3888-4256-944b-787d4b2e6b0d --- # COleServerItem Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the server interface to OLE items. ## Syntax diff --git a/docs/mfc/reference/colestreamfile-class.md b/docs/mfc/reference/colestreamfile-class.md index 964fe4e4dd8..62128112f58 100644 --- a/docs/mfc/reference/colestreamfile-class.md +++ b/docs/mfc/reference/colestreamfile-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["COleStreamFile [MFC], COleStreamFile", "COleStreamFile [M --- # COleStreamFile Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a stream of data (`IStream`) in a compound file as part of OLE Structured Storage. ## Syntax diff --git a/docs/mfc/reference/coletemplateserver-class.md b/docs/mfc/reference/coletemplateserver-class.md index 79a0b6e661b..2c2175eb464 100644 --- a/docs/mfc/reference/coletemplateserver-class.md +++ b/docs/mfc/reference/coletemplateserver-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["COleTemplateServer [MFC], COleTemplateServer", "COleTempl --- # COleTemplateServer Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Used for OLE visual editing servers, automation servers, and link containers (applications that support links to embeddings). ## Syntax diff --git a/docs/mfc/reference/coleupdatedialog-class.md b/docs/mfc/reference/coleupdatedialog-class.md index 326d47c4ada..fecc99693b3 100644 --- a/docs/mfc/reference/coleupdatedialog-class.md +++ b/docs/mfc/reference/coleupdatedialog-class.md @@ -4,10 +4,12 @@ title: "COleUpdateDialog Class" ms.date: "11/04/2016" f1_keywords: ["COleUpdateDialog", "AFXODLGS/COleUpdateDialog", "AFXODLGS/COleUpdateDialog::COleUpdateDialog", "AFXODLGS/COleUpdateDialog::DoModal"] helpviewer_keywords: ["COleUpdateDialog [MFC], COleUpdateDialog", "COleUpdateDialog [MFC], DoModal"] -ms.assetid: 699ca980-52b1-4cf8-9ab1-ac6767ad5b0e --- # COleUpdateDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Used for a special case of the OLE Edit Links dialog box, which should be used when you need to update only existing linked or embedded objects in a document. ## Syntax diff --git a/docs/mfc/reference/colevariant-class.md b/docs/mfc/reference/colevariant-class.md index f3bc198514a..2bea4e14753 100644 --- a/docs/mfc/reference/colevariant-class.md +++ b/docs/mfc/reference/colevariant-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["COleVariant [MFC], COleVariant", "COleVariant [MFC], Atta --- # COleVariant Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates the [VARIANT](/windows/win32/api/oaidl/ns-oaidl-variant) data type. ## Syntax diff --git a/docs/mfc/reference/collection-class-helpers.md b/docs/mfc/reference/collection-class-helpers.md index ca02e0d281f..b89b18ac671 100644 --- a/docs/mfc/reference/collection-class-helpers.md +++ b/docs/mfc/reference/collection-class-helpers.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["DestructElements function", "ConstructElements function", --- # Collection Class Helpers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The collection classes `CMap`, `CList`, and `CArray` use templated global helper functions for such purposes as comparing, copying, and serializing elements. As part of your implementation of classes based on `CMap`, `CList`, and `CArray`, you must override these functions as necessary with versions tailored to the type of data stored in your map, list, or array. For information on overriding helper functions such as `SerializeElements`, see the article [Collections: How to Make a Type-Safe Collection](../../mfc/how-to-make-a-type-safe-collection.md). Note that `ConstructElements` and `DestructElements` have been deprecated. The Microsoft Foundation Class Library provides the following global functions in afxtempl.h to help you customize your collection classes: diff --git a/docs/mfc/reference/combo-box-handlers.md b/docs/mfc/reference/combo-box-handlers.md index 46257dcaf02..f95c442ef4c 100644 --- a/docs/mfc/reference/combo-box-handlers.md +++ b/docs/mfc/reference/combo-box-handlers.md @@ -4,10 +4,12 @@ title: "Combo Box Handlers" ms.date: "11/04/2016" f1_keywords: ["ON_CBN_KILLFOCUS", "ON_CBN_ERRSPACE", "ON_CBN_EDITCHANGE", "ON_CBN_CLOSEUP", "ON_CBN_DBLCLK", "ON_CBN_EDITUPDATE", "ON_CBN_DROPDOWN", "ON_CBN_SELENDOK", "ON_CBN_SELCHANGE", "ON_CBN_SETFOCUS", "ON_CBN_SELENDCANCEL"] helpviewer_keywords: ["ON_CBN_CLOSEUP", "ON_CBN_SETFOCUS", "ON_CBN_DBLCLK", "ON_CBN_SELENDCANCEL", "ON_CBN_DROPDOWN", "ON_CBN_EDITUPDATE", "ON_CBN_KILLFOCUS", "combo boxes [MFC], handlers", "ON_CBN_EDITCHANGE", "ON_CBN_ERRSPACE", "ON_CBN_SELENDOK", "ON_CBN_SELCHANGE"] -ms.assetid: 7f092412-01b7-4242-95ec-41ba506b9d71 --- # Combo Box Handlers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entries correspond to the function prototypes. |Map entry|Function prototype| diff --git a/docs/mfc/reference/compound-document-support-mfc-application-wizard.md b/docs/mfc/reference/compound-document-support-mfc-application-wizard.md index cf2cac48dfd..6ad2ec8f2f1 100644 --- a/docs/mfc/reference/compound-document-support-mfc-application-wizard.md +++ b/docs/mfc/reference/compound-document-support-mfc-application-wizard.md @@ -3,10 +3,12 @@ description: "Learn more about: Compound Document Support, MFC Application Wizar title: "Compound Document Support, MFC Application Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.mfc.exe.compdoc"] -ms.assetid: 42e1af83-12c4-438d-92eb-13835afdb148 --- # Compound Document Support, MFC Application Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In this page of the MFC Application Wizard, indicate to what level your application provides compound and active document support. Your application must support the document/view architecture to support compound documents and document templates. By default, the application contains no compound document support. If you accept this default, your application cannot support active documents or compound files. diff --git a/docs/mfc/reference/connection-maps.md b/docs/mfc/reference/connection-maps.md index 021a53eeade..db3d8ce0988 100644 --- a/docs/mfc/reference/connection-maps.md +++ b/docs/mfc/reference/connection-maps.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["connection maps"] # Connection maps +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + OLE controls are able to expose interfaces to other applications. These interfaces only allow access from a container into that control. If an OLE control wants to access external interfaces of other OLE objects, a connection point must be established. This connection point allows a control outgoing access to external dispatch maps, such as event maps or notification functions. The Microsoft Foundation Class Library offers a programming model that supports connection points. In this model, "connection maps" are used to designate interfaces or connection points for the OLE control. Connection maps contain one macro for each connection point. For more information on connection maps, see the [`CConnectionPoint`](../../mfc/reference/cconnectionpoint-class.md) class. diff --git a/docs/mfc/reference/control-names-mfc-activex-control-wizard.md b/docs/mfc/reference/control-names-mfc-activex-control-wizard.md index 9d6baedbd15..1ee01d5de06 100644 --- a/docs/mfc/reference/control-names-mfc-activex-control-wizard.md +++ b/docs/mfc/reference/control-names-mfc-activex-control-wizard.md @@ -4,10 +4,12 @@ title: "Control Names, MFC ActiveX Control Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.mfc.ctl.names"] helpviewer_keywords: ["MFC ActiveX Control Wizard, control names"] -ms.assetid: 9b8b81d2-36df-48ed-b58a-a771a0e269ee --- # Control Names, MFC ActiveX Control Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Specify the names for the control class and property page class, the type names, and type identifiers for your control. With the exception of **Short name**, all other fields can be edited independently. If you change the text for **Short name**, the change is reflected in the names of all other fields in this page. This naming behavior is designed to make all the names easily identifiable for you as you develop your control. - **Short name** diff --git a/docs/mfc/reference/control-settings-mfc-activex-control-wizard.md b/docs/mfc/reference/control-settings-mfc-activex-control-wizard.md index 6fe38cbe3b5..6c7a98c6210 100644 --- a/docs/mfc/reference/control-settings-mfc-activex-control-wizard.md +++ b/docs/mfc/reference/control-settings-mfc-activex-control-wizard.md @@ -4,10 +4,12 @@ title: "Control Settings, MFC ActiveX Control Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.mfc.ctl.settings"] helpviewer_keywords: ["MFC ActiveX Control Wizard, control settings"] -ms.assetid: 2ccaa4fc-0d52-413e-afa3-ecd474c3f6f0 --- # Control Settings, MFC ActiveX Control Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Use this page of the wizard to specify how you want the control to behave. For example, you can base the control on standard Windows control types, optimize its behavior and appearance, or indicate that the control can act as a container for other controls. For more information about how to select options on this page to maximize the efficiency of the control, see [MFC ActiveX Controls: Optimization](../../mfc/mfc-activex-controls-optimization.md). diff --git a/docs/mfc/reference/cpagerctrl-class.md b/docs/mfc/reference/cpagerctrl-class.md index 78da74a2235..e04ec30cc21 100644 --- a/docs/mfc/reference/cpagerctrl-class.md +++ b/docs/mfc/reference/cpagerctrl-class.md @@ -4,10 +4,12 @@ title: "CPagerCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CPagerCtrl", "AFXCMN/CPagerCtrl", "AFXCMN/CPagerCtrl::CPagerCtrl", "AFXCMN/CPagerCtrl::Create", "AFXCMN/CPagerCtrl::CreateEx", "AFXCMN/CPagerCtrl::ForwardMouse", "AFXCMN/CPagerCtrl::GetBkColor", "AFXCMN/CPagerCtrl::GetBorder", "AFXCMN/CPagerCtrl::GetButtonSize", "AFXCMN/CPagerCtrl::GetButtonState", "AFXCMN/CPagerCtrl::GetDropTarget", "AFXCMN/CPagerCtrl::GetScrollPos", "AFXCMN/CPagerCtrl::IsButtonDepressed", "AFXCMN/CPagerCtrl::IsButtonGrayed", "AFXCMN/CPagerCtrl::IsButtonHot", "AFXCMN/CPagerCtrl::IsButtonInvisible", "AFXCMN/CPagerCtrl::IsButtonNormal", "AFXCMN/CPagerCtrl::RecalcSize", "AFXCMN/CPagerCtrl::SetBkColor", "AFXCMN/CPagerCtrl::SetBorder", "AFXCMN/CPagerCtrl::SetButtonSize", "AFXCMN/CPagerCtrl::SetChild", "AFXCMN/CPagerCtrl::SetScrollPos"] helpviewer_keywords: ["CPagerCtrl [MFC], CPagerCtrl", "CPagerCtrl [MFC], Create", "CPagerCtrl [MFC], CreateEx", "CPagerCtrl [MFC], ForwardMouse", "CPagerCtrl [MFC], GetBkColor", "CPagerCtrl [MFC], GetBorder", "CPagerCtrl [MFC], GetButtonSize", "CPagerCtrl [MFC], GetButtonState", "CPagerCtrl [MFC], GetDropTarget", "CPagerCtrl [MFC], GetScrollPos", "CPagerCtrl [MFC], IsButtonDepressed", "CPagerCtrl [MFC], IsButtonGrayed", "CPagerCtrl [MFC], IsButtonHot", "CPagerCtrl [MFC], IsButtonInvisible", "CPagerCtrl [MFC], IsButtonNormal", "CPagerCtrl [MFC], RecalcSize", "CPagerCtrl [MFC], SetBkColor", "CPagerCtrl [MFC], SetBorder", "CPagerCtrl [MFC], SetButtonSize", "CPagerCtrl [MFC], SetChild", "CPagerCtrl [MFC], SetScrollPos"] -ms.assetid: 65ac58dd-4f5e-4b7e-b15c-e0d435a7e884 --- # CPagerCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CPagerCtrl` class wraps the Windows pager control, which can scroll into view a contained window that does not fit the containing window. ## Syntax diff --git a/docs/mfc/reference/cpagesetupdialog-class.md b/docs/mfc/reference/cpagesetupdialog-class.md index bf629aa89cc..296f1412590 100644 --- a/docs/mfc/reference/cpagesetupdialog-class.md +++ b/docs/mfc/reference/cpagesetupdialog-class.md @@ -4,10 +4,12 @@ title: "CPageSetupDialog Class" ms.date: "11/04/2016" f1_keywords: ["CPageSetupDialog", "AFXDLGS/CPageSetupDialog", "AFXDLGS/CPageSetupDialog::CPageSetupDialog", "AFXDLGS/CPageSetupDialog::CreatePrinterDC", "AFXDLGS/CPageSetupDialog::DoModal", "AFXDLGS/CPageSetupDialog::GetDeviceName", "AFXDLGS/CPageSetupDialog::GetDevMode", "AFXDLGS/CPageSetupDialog::GetDriverName", "AFXDLGS/CPageSetupDialog::GetMargins", "AFXDLGS/CPageSetupDialog::GetPaperSize", "AFXDLGS/CPageSetupDialog::GetPortName", "AFXDLGS/CPageSetupDialog::OnDrawPage", "AFXDLGS/CPageSetupDialog::PreDrawPage", "AFXDLGS/CPageSetupDialog::m_psd"] helpviewer_keywords: ["CPageSetupDialog [MFC], CPageSetupDialog", "CPageSetupDialog [MFC], CreatePrinterDC", "CPageSetupDialog [MFC], DoModal", "CPageSetupDialog [MFC], GetDeviceName", "CPageSetupDialog [MFC], GetDevMode", "CPageSetupDialog [MFC], GetDriverName", "CPageSetupDialog [MFC], GetMargins", "CPageSetupDialog [MFC], GetPaperSize", "CPageSetupDialog [MFC], GetPortName", "CPageSetupDialog [MFC], OnDrawPage", "CPageSetupDialog [MFC], PreDrawPage", "CPageSetupDialog [MFC], m_psd"] -ms.assetid: 049c0ac8-f254-4854-9414-7a8271d1447a --- # CPageSetupDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates the services provided by the Windows common OLE Page Setup dialog box with additional support for setting and modifying print margins. ## Syntax diff --git a/docs/mfc/reference/cpaintdc-class.md b/docs/mfc/reference/cpaintdc-class.md index dc01823c28e..9f5268f8d58 100644 --- a/docs/mfc/reference/cpaintdc-class.md +++ b/docs/mfc/reference/cpaintdc-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CPaintDC [MFC], CPaintDC", "CPaintDC [MFC], m_ps", "CPain --- # `CPaintDC` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A device-context class derived from [`CDC`](../../mfc/reference/cdc-class.md). ## Syntax diff --git a/docs/mfc/reference/cpalette-class.md b/docs/mfc/reference/cpalette-class.md index c07f7e48beb..7c40fbda689 100644 --- a/docs/mfc/reference/cpalette-class.md +++ b/docs/mfc/reference/cpalette-class.md @@ -4,10 +4,12 @@ title: "CPalette Class" ms.date: "11/04/2016" f1_keywords: ["CPalette", "AFXWIN/CPalette", "AFXWIN/CPalette::CPalette", "AFXWIN/CPalette::AnimatePalette", "AFXWIN/CPalette::CreateHalftonePalette", "AFXWIN/CPalette::CreatePalette", "AFXWIN/CPalette::FromHandle", "AFXWIN/CPalette::GetEntryCount", "AFXWIN/CPalette::GetNearestPaletteIndex", "AFXWIN/CPalette::GetPaletteEntries", "AFXWIN/CPalette::ResizePalette", "AFXWIN/CPalette::SetPaletteEntries"] helpviewer_keywords: ["CPalette [MFC], CPalette", "CPalette [MFC], AnimatePalette", "CPalette [MFC], CreateHalftonePalette", "CPalette [MFC], CreatePalette", "CPalette [MFC], FromHandle", "CPalette [MFC], GetEntryCount", "CPalette [MFC], GetNearestPaletteIndex", "CPalette [MFC], GetPaletteEntries", "CPalette [MFC], ResizePalette", "CPalette [MFC], SetPaletteEntries"] -ms.assetid: 8cd95498-53ed-4852-85e1-70e522541114 --- # CPalette Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a Windows color palette. ## Syntax diff --git a/docs/mfc/reference/cpane-class.md b/docs/mfc/reference/cpane-class.md index 72daa26442a..b80f5cbffa5 100644 --- a/docs/mfc/reference/cpane-class.md +++ b/docs/mfc/reference/cpane-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CPane [MFC], AdjustSizeImmediate", "CPane [MFC], AllocEle --- # CPane Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CPane` class is an enhancement of the [CControlBar Class](../../mfc/reference/ccontrolbar-class.md). If you are upgrading an existing MFC project, replace all occurrences of `CControlBar` with `CPane`. ## Syntax diff --git a/docs/mfc/reference/cpanecontainer-class.md b/docs/mfc/reference/cpanecontainer-class.md index 46fbe336ba1..3dfdcf4bdca 100644 --- a/docs/mfc/reference/cpanecontainer-class.md +++ b/docs/mfc/reference/cpanecontainer-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CPaneContainer [MFC], CPaneContainer", "CPaneContainer [M --- # CPaneContainer Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CPaneContainer` class is a basic component of the docking model implemented by MFC. An object of this class stores pointers to two docking panes or to two instances of `CPaneContainer`. It also stores a pointer to the divider that separates the panes (or the containers). By nesting containers inside containers, the framework can build a binary tree that represents complex docking layouts. The root of the binary tree is stored in a [CPaneContainerManager](../../mfc/reference/cpanecontainermanager-class.md) object. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cpanecontainermanager-class.md b/docs/mfc/reference/cpanecontainermanager-class.md index 0adabe6f729..65836da7866 100644 --- a/docs/mfc/reference/cpanecontainermanager-class.md +++ b/docs/mfc/reference/cpanecontainermanager-class.md @@ -4,10 +4,12 @@ title: "CPaneContainerManager Class" ms.date: "11/04/2016" f1_keywords: ["CPaneContainerManager", "AFXPANECONTAINERMANAGER/CPaneContainerManager", "AFXPANECONTAINERMANAGER/CPaneContainerManager::AddPane", "AFXPANECONTAINERMANAGER/CPaneContainerManager::AddPaneContainerManager", "AFXPANECONTAINERMANAGER/CPaneContainerManager::AddPaneContainerManagerToDockablePane", "AFXPANECONTAINERMANAGER/CPaneContainerManager::AddPanesToList", "AFXPANECONTAINERMANAGER/CPaneContainerManager::AddPaneToList", "AFXPANECONTAINERMANAGER/CPaneContainerManager::AddPaneToRecentPaneContainer", "AFXPANECONTAINERMANAGER/CPaneContainerManager::CalcRects", "AFXPANECONTAINERMANAGER/CPaneContainerManager::CanBeAttached", "AFXPANECONTAINERMANAGER/CPaneContainerManager::CheckAndRemoveNonValidPane", "AFXPANECONTAINERMANAGER/CPaneContainerManager::CheckForMiniFrameAndCaption", "AFXPANECONTAINERMANAGER/CPaneContainerManager::Create", "AFXPANECONTAINERMANAGER/CPaneContainerManager::DoesAllowDynInsertBefore", "AFXPANECONTAINERMANAGER/CPaneContainerManager::DoesContainFloatingPane", "AFXPANECONTAINERMANAGER/CPaneContainerManager::EnableGrippers", "AFXPANECONTAINERMANAGER/CPaneContainerManager::FindPaneContainer", "AFXPANECONTAINERMANAGER/CPaneContainerManager::FindTabbedPane", "AFXPANECONTAINERMANAGER/CPaneContainerManager::GetAvailableSpace", "AFXPANECONTAINERMANAGER/CPaneContainerManager::GetDefaultPaneDivider", "AFXPANECONTAINERMANAGER/CPaneContainerManager::GetDockSiteFrameWnd", "AFXPANECONTAINERMANAGER/CPaneContainerManager::GetFirstPane", "AFXPANECONTAINERMANAGER/CPaneContainerManager::GetFirstVisiblePane", "AFXPANECONTAINERMANAGER/CPaneContainerManager::GetMinMaxOffset", "AFXPANECONTAINERMANAGER/CPaneContainerManager::GetMinSize", "AFXPANECONTAINERMANAGER/CPaneContainerManager::GetNodeCount", "AFXPANECONTAINERMANAGER/CPaneContainerManager::GetPaneContainerRTC", "AFXPANECONTAINERMANAGER/CPaneContainerManager::GetPaneCount", "AFXPANECONTAINERMANAGER/CPaneContainerManager::GetTotalRefCount", "AFXPANECONTAINERMANAGER/CPaneContainerManager::GetVisiblePaneCount", "AFXPANECONTAINERMANAGER/CPaneContainerManager::GetWindowRect", "AFXPANECONTAINERMANAGER/CPaneContainerManager::HideAll", "AFXPANECONTAINERMANAGER/CPaneContainerManager::InsertPane", "AFXPANECONTAINERMANAGER/CPaneContainerManager::IsAutoHideMode", "AFXPANECONTAINERMANAGER/CPaneContainerManager::IsEmpty", "AFXPANECONTAINERMANAGER/CPaneContainerManager::IsRootPaneContainerVisible", "AFXPANECONTAINERMANAGER/CPaneContainerManager::NotifyPaneDivider", "AFXPANECONTAINERMANAGER/CPaneContainerManager::OnPaneDividerMove", "AFXPANECONTAINERMANAGER/CPaneContainerManager::OnShowPane", "AFXPANECONTAINERMANAGER/CPaneContainerManager::PaneFromPoint", "AFXPANECONTAINERMANAGER/CPaneContainerManager::ReleaseEmptyPaneContainers", "AFXPANECONTAINERMANAGER/CPaneContainerManager::RemoveAllPanesAndPaneDividers", "AFXPANECONTAINERMANAGER/CPaneContainerManager::RemoveNonValidPanes", "AFXPANECONTAINERMANAGER/CPaneContainerManager::RemovePaneDivider", "AFXPANECONTAINERMANAGER/CPaneContainerManager::RemovePaneFromPaneContainer", "AFXPANECONTAINERMANAGER/CPaneContainerManager::ReplacePane", "AFXPANECONTAINERMANAGER/CPaneContainerManager::ResizePaneContainers", "AFXPANECONTAINERMANAGER/CPaneContainerManager::Serialize", "AFXPANECONTAINERMANAGER/CPaneContainerManager::SetDefaultPaneDividerForPanes", "AFXPANECONTAINERMANAGER/CPaneContainerManager::SetPaneContainerRTC", "AFXPANECONTAINERMANAGER/CPaneContainerManager::SetResizeMode", "AFXPANECONTAINERMANAGER/CPaneContainerManager::StoreRecentDockSiteInfo"] helpviewer_keywords: ["CPaneContainerManager [MFC], AddPane", "CPaneContainerManager [MFC], AddPaneContainerManager", "CPaneContainerManager [MFC], AddPaneContainerManagerToDockablePane", "CPaneContainerManager [MFC], AddPanesToList", "CPaneContainerManager [MFC], AddPaneToList", "CPaneContainerManager [MFC], AddPaneToRecentPaneContainer", "CPaneContainerManager [MFC], CalcRects", "CPaneContainerManager [MFC], CanBeAttached", "CPaneContainerManager [MFC], CheckAndRemoveNonValidPane", "CPaneContainerManager [MFC], CheckForMiniFrameAndCaption", "CPaneContainerManager [MFC], Create", "CPaneContainerManager [MFC], DoesAllowDynInsertBefore", "CPaneContainerManager [MFC], DoesContainFloatingPane", "CPaneContainerManager [MFC], EnableGrippers", "CPaneContainerManager [MFC], FindPaneContainer", "CPaneContainerManager [MFC], FindTabbedPane", "CPaneContainerManager [MFC], GetAvailableSpace", "CPaneContainerManager [MFC], GetDefaultPaneDivider", "CPaneContainerManager [MFC], GetDockSiteFrameWnd", "CPaneContainerManager [MFC], GetFirstPane", "CPaneContainerManager [MFC], GetFirstVisiblePane", "CPaneContainerManager [MFC], GetMinMaxOffset", "CPaneContainerManager [MFC], GetMinSize", "CPaneContainerManager [MFC], GetNodeCount", "CPaneContainerManager [MFC], GetPaneContainerRTC", "CPaneContainerManager [MFC], GetPaneCount", "CPaneContainerManager [MFC], GetTotalRefCount", "CPaneContainerManager [MFC], GetVisiblePaneCount", "CPaneContainerManager [MFC], GetWindowRect", "CPaneContainerManager [MFC], HideAll", "CPaneContainerManager [MFC], InsertPane", "CPaneContainerManager [MFC], IsAutoHideMode", "CPaneContainerManager [MFC], IsEmpty", "CPaneContainerManager [MFC], IsRootPaneContainerVisible", "CPaneContainerManager [MFC], NotifyPaneDivider", "CPaneContainerManager [MFC], OnPaneDividerMove", "CPaneContainerManager [MFC], OnShowPane", "CPaneContainerManager [MFC], PaneFromPoint", "CPaneContainerManager [MFC], ReleaseEmptyPaneContainers", "CPaneContainerManager [MFC], RemoveAllPanesAndPaneDividers", "CPaneContainerManager [MFC], RemoveNonValidPanes", "CPaneContainerManager [MFC], RemovePaneDivider", "CPaneContainerManager [MFC], RemovePaneFromPaneContainer", "CPaneContainerManager [MFC], ReplacePane", "CPaneContainerManager [MFC], ResizePaneContainers", "CPaneContainerManager [MFC], Serialize", "CPaneContainerManager [MFC], SetDefaultPaneDividerForPanes", "CPaneContainerManager [MFC], SetPaneContainerRTC", "CPaneContainerManager [MFC], SetResizeMode", "CPaneContainerManager [MFC], StoreRecentDockSiteInfo"] -ms.assetid: 3d974c15-a62f-4648-bb5b-cc31ab7950af --- # CPaneContainerManager Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CPaneContainerManager` class manages the storage and display of the current docking layout. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cpanedialog-class.md b/docs/mfc/reference/cpanedialog-class.md index 71d8ba02273..43078a07946 100644 --- a/docs/mfc/reference/cpanedialog-class.md +++ b/docs/mfc/reference/cpanedialog-class.md @@ -4,10 +4,12 @@ title: "CPaneDialog Class" ms.date: "11/04/2016" f1_keywords: ["CPaneDialog", "AFXPANEDIALOG/CPaneDialog", "AFXPANEDIALOG/CPaneDialog::Create", "AFXPANEDIALOG/CPaneDialog::HandleInitDialog", "AFXPANEDIALOG/CPaneDialog::SetOccDialogInfo"] helpviewer_keywords: ["CPaneDialog [MFC], Create", "CPaneDialog [MFC], HandleInitDialog", "CPaneDialog [MFC], SetOccDialogInfo"] -ms.assetid: 48a6bb91-4b92-40f5-8907-b3270b146cf6 --- # CPaneDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CPaneDialog` class supports a modeless, dockable dialog box. ## Syntax diff --git a/docs/mfc/reference/cpanedivider-class.md b/docs/mfc/reference/cpanedivider-class.md index 23ca314fbe4..49f3d48bc3d 100644 --- a/docs/mfc/reference/cpanedivider-class.md +++ b/docs/mfc/reference/cpanedivider-class.md @@ -4,10 +4,12 @@ title: "CPaneDivider Class" ms.date: "11/04/2016" f1_keywords: ["CPaneDivider", "AFXPANEDIVIDER/CPaneDivider", "AFXPANEDIVIDER/CPaneDivider::CPaneDivider", "AFXPANEDIVIDER/CPaneDivider::AddPaneContainer", "AFXPANEDIVIDER/CPaneDivider::AddPane", "AFXPANEDIVIDER/CPaneDivider::AddRecentPane", "AFXPANEDIVIDER/CPaneDivider::CalcExpectedDockedRect", "AFXPANEDIVIDER/CPaneDivider::CalcFixedLayout", "AFXPANEDIVIDER/CPaneDivider::CheckVisibility", "AFXPANEDIVIDER/CPaneDivider::CreateEx", "AFXPANEDIVIDER/CPaneDivider::DoesAllowDynInsertBefore", "AFXPANEDIVIDER/CPaneDivider::DoesContainFloatingPane", "AFXPANEDIVIDER/CPaneDivider::FindPaneContainer", "AFXPANEDIVIDER/CPaneDivider::FindTabbedPane", "AFXPANEDIVIDER/CPaneDivider::GetDefaultWidth", "AFXPANEDIVIDER/CPaneDivider::GetFirstPane", "AFXPANEDIVIDER/CPaneDivider::GetPaneDividerStyle", "AFXPANEDIVIDER/CPaneDivider::GetRootContainerRect", "AFXPANEDIVIDER/CPaneDivider::GetWidth", "AFXPANEDIVIDER/CPaneDivider::Init", "AFXPANEDIVIDER/CPaneDivider::InsertPane", "AFXPANEDIVIDER/CPaneDivider::IsAutoHideMode", "AFXPANEDIVIDER/CPaneDivider::IsDefault", "AFXPANEDIVIDER/CPaneDivider::IsHorizontal", "AFXPANEDIVIDER/CPaneDivider::Move", "AFXPANEDIVIDER/CPaneDivider::NotifyAboutRelease", "AFXPANEDIVIDER/CPaneDivider::OnShowPane", "AFXPANEDIVIDER/CPaneDivider::ReleaseEmptyPaneContainers", "AFXPANEDIVIDER/CPaneDivider::RemovePane", "AFXPANEDIVIDER/CPaneDivider::ReplacePane", "AFXPANEDIVIDER/CPaneDivider::RepositionPanes", "AFXPANEDIVIDER/CPaneDivider::Serialize", "AFXPANEDIVIDER/CPaneDivider::SetAutoHideMode", "AFXPANEDIVIDER/CPaneDivider::SetPaneContainerManager", "AFXPANEDIVIDER/CPaneDivider::ShowWindow", "AFXPANEDIVIDER/CPaneDivider::StoreRecentDockSiteInfo", "AFXPANEDIVIDER/CPaneDivider::StoreRecentTabRelatedInfo", "AFXPANEDIVIDER/CPaneDivider::GetPanes", "AFXPANEDIVIDER/CPaneDivider::GetPaneDividers", "AFXPANEDIVIDER/CPaneDivider::m_nDefaultWidth", "AFXPANEDIVIDER/CPaneDivider::m_pSliderRTC"] helpviewer_keywords: ["CPaneDivider [MFC], CPaneDivider", "CPaneDivider [MFC], AddPaneContainer", "CPaneDivider [MFC], AddPane", "CPaneDivider [MFC], AddRecentPane", "CPaneDivider [MFC], CalcExpectedDockedRect", "CPaneDivider [MFC], CalcFixedLayout", "CPaneDivider [MFC], CheckVisibility", "CPaneDivider [MFC], CreateEx", "CPaneDivider [MFC], DoesAllowDynInsertBefore", "CPaneDivider [MFC], DoesContainFloatingPane", "CPaneDivider [MFC], FindPaneContainer", "CPaneDivider [MFC], FindTabbedPane", "CPaneDivider [MFC], GetDefaultWidth", "CPaneDivider [MFC], GetFirstPane", "CPaneDivider [MFC], GetPaneDividerStyle", "CPaneDivider [MFC], GetRootContainerRect", "CPaneDivider [MFC], GetWidth", "CPaneDivider [MFC], Init", "CPaneDivider [MFC], InsertPane", "CPaneDivider [MFC], IsAutoHideMode", "CPaneDivider [MFC], IsDefault", "CPaneDivider [MFC], IsHorizontal", "CPaneDivider [MFC], Move", "CPaneDivider [MFC], NotifyAboutRelease", "CPaneDivider [MFC], OnShowPane", "CPaneDivider [MFC], ReleaseEmptyPaneContainers", "CPaneDivider [MFC], RemovePane", "CPaneDivider [MFC], ReplacePane", "CPaneDivider [MFC], RepositionPanes", "CPaneDivider [MFC], Serialize", "CPaneDivider [MFC], SetAutoHideMode", "CPaneDivider [MFC], SetPaneContainerManager", "CPaneDivider [MFC], ShowWindow", "CPaneDivider [MFC], StoreRecentDockSiteInfo", "CPaneDivider [MFC], StoreRecentTabRelatedInfo", "CPaneDivider [MFC], GetPanes", "CPaneDivider [MFC], GetPaneDividers", "CPaneDivider [MFC], m_nDefaultWidth", "CPaneDivider [MFC], m_pSliderRTC"] -ms.assetid: 8e828a5d-232f-4127-b8e3-7fa45a7a476e --- # CPaneDivider Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. The `CPaneDivider` class divides two panes, divides two groups of panes, or separates a group of panes from the client area of the main frame window. diff --git a/docs/mfc/reference/cpaneframewnd-class.md b/docs/mfc/reference/cpaneframewnd-class.md index 3c281c3f41c..5c73ad4d607 100644 --- a/docs/mfc/reference/cpaneframewnd-class.md +++ b/docs/mfc/reference/cpaneframewnd-class.md @@ -4,10 +4,12 @@ title: "CPaneFrameWnd Class" ms.date: "11/04/2016" f1_keywords: ["CPaneFrameWnd", "AFXPANEFRAMEWND/CPaneFrameWnd", "AFXPANEFRAMEWND/CPaneFrameWnd::AddPane", "AFXPANEFRAMEWND/CPaneFrameWnd::AddRemovePaneFromGlobalList", "AFXPANEFRAMEWND/CPaneFrameWnd::AdjustLayout", "AFXPANEFRAMEWND/CPaneFrameWnd::AdjustPaneFrames", "AFXPANEFRAMEWND/CPaneFrameWnd::CalcBorderSize", "AFXPANEFRAMEWND/CPaneFrameWnd::CalcExpectedDockedRect", "AFXPANEFRAMEWND/CPaneFrameWnd::CanBeAttached", "AFXPANEFRAMEWND/CPaneFrameWnd::CanBeDockedToPane", "AFXPANEFRAMEWND/CPaneFrameWnd::CheckGripperVisibility", "AFXPANEFRAMEWND/CPaneFrameWnd::ConvertToTabbedDocument", "AFXPANEFRAMEWND/CPaneFrameWnd::Create", "AFXPANEFRAMEWND/CPaneFrameWnd::CreateEx", "AFXPANEFRAMEWND/CPaneFrameWnd::DockPane", "AFXPANEFRAMEWND/CPaneFrameWnd::FindFloatingPaneByID", "AFXPANEFRAMEWND/CPaneFrameWnd::FrameFromPoint", "AFXPANEFRAMEWND/CPaneFrameWnd::GetCaptionHeight", "AFXPANEFRAMEWND/CPaneFrameWnd::GetCaptionRect", "AFXPANEFRAMEWND/CPaneFrameWnd::GetCaptionText", "AFXPANEFRAMEWND/CPaneFrameWnd::GetDockingManager", "AFXPANEFRAMEWND/CPaneFrameWnd::GetDockingMode", "AFXPANEFRAMEWND/CPaneFrameWnd::GetFirstVisiblePane", "AFXPANEFRAMEWND/CPaneFrameWnd::GetHotPoint", "AFXPANEFRAMEWND/CPaneFrameWnd::GetPane", "AFXPANEFRAMEWND/CPaneFrameWnd::GetPaneCount", "AFXPANEFRAMEWND/CPaneFrameWnd::GetParent", "AFXPANEFRAMEWND/CPaneFrameWnd::GetPinState", "AFXPANEFRAMEWND/CPaneFrameWnd::GetRecentFloatingRect", "AFXPANEFRAMEWND/CPaneFrameWnd::GetVisiblePaneCount", "AFXPANEFRAMEWND/CPaneFrameWnd::HitTest", "AFXPANEFRAMEWND/CPaneFrameWnd::IsCaptured", "AFXPANEFRAMEWND/CPaneFrameWnd::IsDelayShow", "AFXPANEFRAMEWND/CPaneFrameWnd::IsRollDown", "AFXPANEFRAMEWND/CPaneFrameWnd::IsRollUp", "AFXPANEFRAMEWND/CPaneFrameWnd::KillDockingTimer", "AFXPANEFRAMEWND/CPaneFrameWnd::LoadState", "AFXPANEFRAMEWND/CPaneFrameWnd::OnBeforeDock", "AFXPANEFRAMEWND/CPaneFrameWnd::OnDockToRecentPos", "AFXPANEFRAMEWND/CPaneFrameWnd::OnKillRollUpTimer", "AFXPANEFRAMEWND/CPaneFrameWnd::OnMovePane", "AFXPANEFRAMEWND/CPaneFrameWnd::OnPaneRecalcLayout", "AFXPANEFRAMEWND/CPaneFrameWnd::OnSetRollUpTimer", "AFXPANEFRAMEWND/CPaneFrameWnd::OnShowPane", "AFXPANEFRAMEWND/CPaneFrameWnd::PaneFromPoint", "AFXPANEFRAMEWND/CPaneFrameWnd::Pin", "AFXPANEFRAMEWND/CPaneFrameWnd::RedrawAll", "AFXPANEFRAMEWND/CPaneFrameWnd::RemoveNonValidPanes", "AFXPANEFRAMEWND/CPaneFrameWnd::RemovePane", "AFXPANEFRAMEWND/CPaneFrameWnd::ReplacePane", "AFXPANEFRAMEWND/CPaneFrameWnd::SaveState", "AFXPANEFRAMEWND/CPaneFrameWnd::SetCaptionButtons", "AFXPANEFRAMEWND/CPaneFrameWnd::SetDelayShow", "AFXPANEFRAMEWND/CPaneFrameWnd::SetDockingManager", "AFXPANEFRAMEWND/CPaneFrameWnd::SetDockingTimer", "AFXPANEFRAMEWND/CPaneFrameWnd::SetDockState", "AFXPANEFRAMEWND/CPaneFrameWnd::SetHotPoint", "AFXPANEFRAMEWND/CPaneFrameWnd::SetPreDockState", "AFXPANEFRAMEWND/CPaneFrameWnd::SizeToContent", "AFXPANEFRAMEWND/CPaneFrameWnd::StartTearOff", "AFXPANEFRAMEWND/CPaneFrameWnd::StoreRecentDockSiteInfo", "AFXPANEFRAMEWND/CPaneFrameWnd::StoreRecentTabRelatedInfo", "AFXPANEFRAMEWND/CPaneFrameWnd::OnCheckRollState", "AFXPANEFRAMEWND/CPaneFrameWnd::OnDrawBorder", "AFXPANEFRAMEWND/CPaneFrameWnd::m_bUseSaveBits"] helpviewer_keywords: ["CPaneFrameWnd [MFC], AddPane", "CPaneFrameWnd [MFC], AddRemovePaneFromGlobalList", "CPaneFrameWnd [MFC], AdjustLayout", "CPaneFrameWnd [MFC], AdjustPaneFrames", "CPaneFrameWnd [MFC], CalcBorderSize", "CPaneFrameWnd [MFC], CalcExpectedDockedRect", "CPaneFrameWnd [MFC], CanBeAttached", "CPaneFrameWnd [MFC], CanBeDockedToPane", "CPaneFrameWnd [MFC], CheckGripperVisibility", "CPaneFrameWnd [MFC], ConvertToTabbedDocument", "CPaneFrameWnd [MFC], Create", "CPaneFrameWnd [MFC], CreateEx", "CPaneFrameWnd [MFC], DockPane", "CPaneFrameWnd [MFC], FindFloatingPaneByID", "CPaneFrameWnd [MFC], FrameFromPoint", "CPaneFrameWnd [MFC], GetCaptionHeight", "CPaneFrameWnd [MFC], GetCaptionRect", "CPaneFrameWnd [MFC], GetCaptionText", "CPaneFrameWnd [MFC], GetDockingManager", "CPaneFrameWnd [MFC], GetDockingMode", "CPaneFrameWnd [MFC], GetFirstVisiblePane", "CPaneFrameWnd [MFC], GetHotPoint", "CPaneFrameWnd [MFC], GetPane", "CPaneFrameWnd [MFC], GetPaneCount", "CPaneFrameWnd [MFC], GetParent", "CPaneFrameWnd [MFC], GetPinState", "CPaneFrameWnd [MFC], GetRecentFloatingRect", "CPaneFrameWnd [MFC], GetVisiblePaneCount", "CPaneFrameWnd [MFC], HitTest", "CPaneFrameWnd [MFC], IsCaptured", "CPaneFrameWnd [MFC], IsDelayShow", "CPaneFrameWnd [MFC], IsRollDown", "CPaneFrameWnd [MFC], IsRollUp", "CPaneFrameWnd [MFC], KillDockingTimer", "CPaneFrameWnd [MFC], LoadState", "CPaneFrameWnd [MFC], OnBeforeDock", "CPaneFrameWnd [MFC], OnDockToRecentPos", "CPaneFrameWnd [MFC], OnKillRollUpTimer", "CPaneFrameWnd [MFC], OnMovePane", "CPaneFrameWnd [MFC], OnPaneRecalcLayout", "CPaneFrameWnd [MFC], OnSetRollUpTimer", "CPaneFrameWnd [MFC], OnShowPane", "CPaneFrameWnd [MFC], PaneFromPoint", "CPaneFrameWnd [MFC], Pin", "CPaneFrameWnd [MFC], RedrawAll", "CPaneFrameWnd [MFC], RemoveNonValidPanes", "CPaneFrameWnd [MFC], RemovePane", "CPaneFrameWnd [MFC], ReplacePane", "CPaneFrameWnd [MFC], SaveState", "CPaneFrameWnd [MFC], SetCaptionButtons", "CPaneFrameWnd [MFC], SetDelayShow", "CPaneFrameWnd [MFC], SetDockingManager", "CPaneFrameWnd [MFC], SetDockingTimer", "CPaneFrameWnd [MFC], SetDockState", "CPaneFrameWnd [MFC], SetHotPoint", "CPaneFrameWnd [MFC], SetPreDockState", "CPaneFrameWnd [MFC], SizeToContent", "CPaneFrameWnd [MFC], StartTearOff", "CPaneFrameWnd [MFC], StoreRecentDockSiteInfo", "CPaneFrameWnd [MFC], StoreRecentTabRelatedInfo", "CPaneFrameWnd [MFC], OnCheckRollState", "CPaneFrameWnd [MFC], OnDrawBorder", "CPaneFrameWnd [MFC], m_bUseSaveBits"] -ms.assetid: ea3423a3-2763-482e-b763-817036ded10d --- # CPaneFrameWnd Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. Implements a mini-frame window that contains one pane. The pane fills the client area of the window. diff --git a/docs/mfc/reference/cparabolictransitionfromacceleration-class.md b/docs/mfc/reference/cparabolictransitionfromacceleration-class.md index ec6569ac474..669010b4e3d 100644 --- a/docs/mfc/reference/cparabolictransitionfromacceleration-class.md +++ b/docs/mfc/reference/cparabolictransitionfromacceleration-class.md @@ -4,10 +4,12 @@ title: "CParabolicTransitionFromAcceleration Class" ms.date: "11/04/2016" f1_keywords: ["CParabolicTransitionFromAcceleration", "AFXANIMATIONCONTROLLER/CParabolicTransitionFromAcceleration", "AFXANIMATIONCONTROLLER/CParabolicTransitionFromAcceleration::CParabolicTransitionFromAcceleration", "AFXANIMATIONCONTROLLER/CParabolicTransitionFromAcceleration::Create", "AFXANIMATIONCONTROLLER/CParabolicTransitionFromAcceleration::m_dblAcceleration", "AFXANIMATIONCONTROLLER/CParabolicTransitionFromAcceleration::m_dblFinalValue", "AFXANIMATIONCONTROLLER/CParabolicTransitionFromAcceleration::m_dblFinalVelocity"] helpviewer_keywords: ["CParabolicTransitionFromAcceleration [MFC], CParabolicTransitionFromAcceleration", "CParabolicTransitionFromAcceleration [MFC], Create", "CParabolicTransitionFromAcceleration [MFC], m_dblAcceleration", "CParabolicTransitionFromAcceleration [MFC], m_dblFinalValue", "CParabolicTransitionFromAcceleration [MFC], m_dblFinalVelocity"] -ms.assetid: 1e59b86f-358b-4da0-a4fd-8eaf5e85e00f --- # CParabolicTransitionFromAcceleration Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a parabolic-acceleration transition. ## Syntax diff --git a/docs/mfc/reference/cpen-class.md b/docs/mfc/reference/cpen-class.md index c891d6bff1f..3dfc6ed53ac 100644 --- a/docs/mfc/reference/cpen-class.md +++ b/docs/mfc/reference/cpen-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CPen [MFC], CPen", "CPen [MFC], CreatePen", "CPen [MFC], --- # `CPen` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a Windows graphics device interface (GDI) pen. ## Syntax diff --git a/docs/mfc/reference/cpictureholder-class.md b/docs/mfc/reference/cpictureholder-class.md index 27354c1940f..98e8a242e74 100644 --- a/docs/mfc/reference/cpictureholder-class.md +++ b/docs/mfc/reference/cpictureholder-class.md @@ -4,10 +4,12 @@ title: "CPictureHolder Class" ms.date: "11/04/2016" f1_keywords: ["CPictureHolder", "AFXCTL/CPictureHolder", "AFXCTL/CPictureHolder::CPictureHolder", "AFXCTL/CPictureHolder::CreateEmpty", "AFXCTL/CPictureHolder::CreateFromBitmap", "AFXCTL/CPictureHolder::CreateFromIcon", "AFXCTL/CPictureHolder::CreateFromMetafile", "AFXCTL/CPictureHolder::GetDisplayString", "AFXCTL/CPictureHolder::GetPictureDispatch", "AFXCTL/CPictureHolder::GetType", "AFXCTL/CPictureHolder::Render", "AFXCTL/CPictureHolder::SetPictureDispatch", "AFXCTL/CPictureHolder::m_pPict"] helpviewer_keywords: ["CPictureHolder [MFC], CPictureHolder", "CPictureHolder [MFC], CreateEmpty", "CPictureHolder [MFC], CreateFromBitmap", "CPictureHolder [MFC], CreateFromIcon", "CPictureHolder [MFC], CreateFromMetafile", "CPictureHolder [MFC], GetDisplayString", "CPictureHolder [MFC], GetPictureDispatch", "CPictureHolder [MFC], GetType", "CPictureHolder [MFC], Render", "CPictureHolder [MFC], SetPictureDispatch", "CPictureHolder [MFC], m_pPict"] -ms.assetid: a4f59775-704a-41dd-b5bd-2e531c95127a --- # CPictureHolder Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a Picture property, which allows the user to display a picture in your control. ## Syntax diff --git a/docs/mfc/reference/cprintdialog-class.md b/docs/mfc/reference/cprintdialog-class.md index d4c03521ce6..093f0f5844a 100644 --- a/docs/mfc/reference/cprintdialog-class.md +++ b/docs/mfc/reference/cprintdialog-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CPrintDialog [MFC], CPrintDialog", "CPrintDialog [MFC], C --- # `CPrintDialog` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates the services provided by the Windows common dialog box for printing. ## Syntax diff --git a/docs/mfc/reference/cprintdialogex-class.md b/docs/mfc/reference/cprintdialogex-class.md index 1a6cb91c882..dced4c2fffb 100644 --- a/docs/mfc/reference/cprintdialogex-class.md +++ b/docs/mfc/reference/cprintdialogex-class.md @@ -4,10 +4,12 @@ title: "CPrintDialogEx Class" ms.date: "11/04/2016" f1_keywords: ["CPrintDialogEx", "AFXDLGS/CPrintDialogEx", "AFXDLGS/CPrintDialogEx::CPrintDialogEx", "AFXDLGS/CPrintDialogEx::CreatePrinterDC", "AFXDLGS/CPrintDialogEx::DoModal", "AFXDLGS/CPrintDialogEx::GetCopies", "AFXDLGS/CPrintDialogEx::GetDefaults", "AFXDLGS/CPrintDialogEx::GetDeviceName", "AFXDLGS/CPrintDialogEx::GetDevMode", "AFXDLGS/CPrintDialogEx::GetDriverName", "AFXDLGS/CPrintDialogEx::GetPortName", "AFXDLGS/CPrintDialogEx::GetPrinterDC", "AFXDLGS/CPrintDialogEx::PrintAll", "AFXDLGS/CPrintDialogEx::PrintCollate", "AFXDLGS/CPrintDialogEx::PrintCurrentPage", "AFXDLGS/CPrintDialogEx::PrintRange", "AFXDLGS/CPrintDialogEx::PrintSelection", "AFXDLGS/CPrintDialogEx::m_pdex"] helpviewer_keywords: ["CPrintDialogEx [MFC], CPrintDialogEx", "CPrintDialogEx [MFC], CreatePrinterDC", "CPrintDialogEx [MFC], DoModal", "CPrintDialogEx [MFC], GetCopies", "CPrintDialogEx [MFC], GetDefaults", "CPrintDialogEx [MFC], GetDeviceName", "CPrintDialogEx [MFC], GetDevMode", "CPrintDialogEx [MFC], GetDriverName", "CPrintDialogEx [MFC], GetPortName", "CPrintDialogEx [MFC], GetPrinterDC", "CPrintDialogEx [MFC], PrintAll", "CPrintDialogEx [MFC], PrintCollate", "CPrintDialogEx [MFC], PrintCurrentPage", "CPrintDialogEx [MFC], PrintRange", "CPrintDialogEx [MFC], PrintSelection", "CPrintDialogEx [MFC], m_pdex"] -ms.assetid: 1d506703-ee1c-44cc-b4ce-4e778fec26b8 --- # CPrintDialogEx Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates the services provided by the Windows Print property sheet. ## Syntax diff --git a/docs/mfc/reference/cprintinfo-structure.md b/docs/mfc/reference/cprintinfo-structure.md index 45508f935e3..988a7d8cb56 100644 --- a/docs/mfc/reference/cprintinfo-structure.md +++ b/docs/mfc/reference/cprintinfo-structure.md @@ -4,10 +4,12 @@ title: "CPrintInfo Structure" ms.date: "11/04/2016" f1_keywords: ["CPrintInfo"] helpviewer_keywords: ["CPrintInfo structure [MFC]"] -ms.assetid: 0b3de849-d050-4386-9a14-f4c1a25684f7 --- # CPrintInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Stores information about a print or print-preview job. ## Syntax diff --git a/docs/mfc/reference/cprogressctrl-class.md b/docs/mfc/reference/cprogressctrl-class.md index d6eaee52925..7ae4d353fc7 100644 --- a/docs/mfc/reference/cprogressctrl-class.md +++ b/docs/mfc/reference/cprogressctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CProgressCtrl [MFC], CProgressCtrl", "CProgressCtrl [MFC] --- # `CProgressCtrl` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the Windows common progress bar control. ## Syntax diff --git a/docs/mfc/reference/cpropertypage-class.md b/docs/mfc/reference/cpropertypage-class.md index cfddd645dea..178080adc1f 100644 --- a/docs/mfc/reference/cpropertypage-class.md +++ b/docs/mfc/reference/cpropertypage-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CPropertyPage [MFC], CPropertyPage", "CPropertyPage [MFC] --- # `CPropertyPage` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents individual pages of a property sheet, otherwise known as a tab dialog box. ## Syntax diff --git a/docs/mfc/reference/cpropertysheet-class.md b/docs/mfc/reference/cpropertysheet-class.md index 000ec9eb63c..e383f0c4105 100644 --- a/docs/mfc/reference/cpropertysheet-class.md +++ b/docs/mfc/reference/cpropertysheet-class.md @@ -4,10 +4,12 @@ title: "CPropertySheet Class" ms.date: "11/04/2016" f1_keywords: ["CPropertySheet", "AFXDLGS/CPropertySheet", "AFXDLGS/CPropertySheet::CPropertySheet", "AFXDLGS/CPropertySheet::AddPage", "AFXDLGS/CPropertySheet::Construct", "AFXDLGS/CPropertySheet::Create", "AFXDLGS/CPropertySheet::DoModal", "AFXDLGS/CPropertySheet::EnableStackedTabs", "AFXDLGS/CPropertySheet::EndDialog", "AFXDLGS/CPropertySheet::GetActiveIndex", "AFXDLGS/CPropertySheet::GetActivePage", "AFXDLGS/CPropertySheet::GetPage", "AFXDLGS/CPropertySheet::GetPageCount", "AFXDLGS/CPropertySheet::GetPageIndex", "AFXDLGS/CPropertySheet::GetTabControl", "AFXDLGS/CPropertySheet::MapDialogRect", "AFXDLGS/CPropertySheet::OnInitDialog", "AFXDLGS/CPropertySheet::PressButton", "AFXDLGS/CPropertySheet::RemovePage", "AFXDLGS/CPropertySheet::SetActivePage", "AFXDLGS/CPropertySheet::SetFinishText", "AFXDLGS/CPropertySheet::SetTitle", "AFXDLGS/CPropertySheet::SetWizardButtons", "AFXDLGS/CPropertySheet::SetWizardMode", "AFXDLGS/CPropertySheet::m_psh"] helpviewer_keywords: ["CPropertySheet [MFC], CPropertySheet", "CPropertySheet [MFC], AddPage", "CPropertySheet [MFC], Construct", "CPropertySheet [MFC], Create", "CPropertySheet [MFC], DoModal", "CPropertySheet [MFC], EnableStackedTabs", "CPropertySheet [MFC], EndDialog", "CPropertySheet [MFC], GetActiveIndex", "CPropertySheet [MFC], GetActivePage", "CPropertySheet [MFC], GetPage", "CPropertySheet [MFC], GetPageCount", "CPropertySheet [MFC], GetPageIndex", "CPropertySheet [MFC], GetTabControl", "CPropertySheet [MFC], MapDialogRect", "CPropertySheet [MFC], OnInitDialog", "CPropertySheet [MFC], PressButton", "CPropertySheet [MFC], RemovePage", "CPropertySheet [MFC], SetActivePage", "CPropertySheet [MFC], SetFinishText", "CPropertySheet [MFC], SetTitle", "CPropertySheet [MFC], SetWizardButtons", "CPropertySheet [MFC], SetWizardMode", "CPropertySheet [MFC], m_psh"] -ms.assetid: 8461ccff-d14f-46e0-a746-42ad642ef94e --- # `CPropertySheet` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents property sheets, also known as tab dialog boxes. ## Syntax diff --git a/docs/mfc/reference/cpropexchange-class.md b/docs/mfc/reference/cpropexchange-class.md index 4292d4b07dd..6af0cb17262 100644 --- a/docs/mfc/reference/cpropexchange-class.md +++ b/docs/mfc/reference/cpropexchange-class.md @@ -4,10 +4,12 @@ title: "CPropExchange Class" ms.date: "11/04/2016" f1_keywords: ["CPropExchange", "AFXCTL/CPropExchange", "AFXCTL/CPropExchange::ExchangeBlobProp", "AFXCTL/CPropExchange::ExchangeFontProp", "AFXCTL/CPropExchange::ExchangePersistentProp", "AFXCTL/CPropExchange::ExchangeProp", "AFXCTL/CPropExchange::ExchangeVersion", "AFXCTL/CPropExchange::GetVersion", "AFXCTL/CPropExchange::IsAsynchronous", "AFXCTL/CPropExchange::IsLoading"] helpviewer_keywords: ["CPropExchange [MFC], ExchangeBlobProp", "CPropExchange [MFC], ExchangeFontProp", "CPropExchange [MFC], ExchangePersistentProp", "CPropExchange [MFC], ExchangeProp", "CPropExchange [MFC], ExchangeVersion", "CPropExchange [MFC], GetVersion", "CPropExchange [MFC], IsAsynchronous", "CPropExchange [MFC], IsLoading"] -ms.assetid: ed872180-e770-4942-892a-92139d501fab --- # CPropExchange Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports the implementation of persistence for your OLE controls. ## Syntax diff --git a/docs/mfc/reference/cptrarray-class.md b/docs/mfc/reference/cptrarray-class.md index 74865d07bc0..d96c8b72602 100644 --- a/docs/mfc/reference/cptrarray-class.md +++ b/docs/mfc/reference/cptrarray-class.md @@ -4,10 +4,12 @@ title: "CPtrArray Class" ms.date: "11/04/2016" f1_keywords: ["CPtrArray", "AFXCOLL/CPtrArray", "AFXCOLL/CPtrArray::CPtrArray", "AFXCOLL/CPtrArray::Add", "AFXCOLL/CPtrArray::Append", "AFXCOLL/CPtrArray::Copy", "AFXCOLL/CPtrArray::ElementAt", "AFXCOLL/CPtrArray::FreeExtra", "AFXCOLL/CPtrArray::GetAt", "AFXCOLL/CPtrArray::GetCount", "AFXCOLL/CPtrArray::GetData", "AFXCOLL/CPtrArray::GetSize", "AFXCOLL/CPtrArray::GetUpperBound", "AFXCOLL/CPtrArray::InsertAt", "AFXCOLL/CPtrArray::IsEmpty", "AFXCOLL/CPtrArray::RemoveAll", "AFXCOLL/CPtrArray::RemoveAt", "AFXCOLL/CPtrArray::SetAt", "AFXCOLL/CPtrArray::SetAtGrow", "AFXCOLL/CPtrArray::SetSize"] helpviewer_keywords: ["CPtrArray [MFC], CPtrArray", "CPtrArray [MFC], Add", "CPtrArray [MFC], Append", "CPtrArray [MFC], Copy", "CPtrArray [MFC], ElementAt", "CPtrArray [MFC], FreeExtra", "CPtrArray [MFC], GetAt", "CPtrArray [MFC], GetCount", "CPtrArray [MFC], GetData", "CPtrArray [MFC], GetSize", "CPtrArray [MFC], GetUpperBound", "CPtrArray [MFC], InsertAt", "CPtrArray [MFC], IsEmpty", "CPtrArray [MFC], RemoveAll", "CPtrArray [MFC], RemoveAt", "CPtrArray [MFC], SetAt", "CPtrArray [MFC], SetAtGrow", "CPtrArray [MFC], SetSize"] -ms.assetid: c23b87a3-bf84-49d6-a66b-61e999d0938a --- # CPtrArray Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports arrays of void pointers. ## Syntax diff --git a/docs/mfc/reference/cptrlist-class.md b/docs/mfc/reference/cptrlist-class.md index 452efb1d46e..46437ca882e 100644 --- a/docs/mfc/reference/cptrlist-class.md +++ b/docs/mfc/reference/cptrlist-class.md @@ -4,10 +4,12 @@ title: "CPtrList Class" ms.date: "11/04/2016" f1_keywords: ["CPtrList"] helpviewer_keywords: ["lists, generic", "CPtrList class [MFC]", "generic lists"] -ms.assetid: 4139a09c-4338-4f42-9eea-51336120b43c --- # CPtrList Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports lists of void pointers. ## Syntax diff --git a/docs/mfc/reference/creating-a-file-explorer-style-mfc-application.md b/docs/mfc/reference/creating-a-file-explorer-style-mfc-application.md index 896201ac5fc..14dba910556 100644 --- a/docs/mfc/reference/creating-a-file-explorer-style-mfc-application.md +++ b/docs/mfc/reference/creating-a-file-explorer-style-mfc-application.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["browsers [MFC], Explorer-style applications", "MFC applic --- # Creating a File Explorer-Style MFC Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Many Windows system applications use the user interface (UI) for File Explorer. When you start File Explorer, for example, you see an application with a vertical splitter bar dividing the client area. The left side of the client area provides navigation and browsing features, and the right side of the client area shows details pertinent to the selection in the left pane. When a user clicks an item in the left pane, the application repopulates the right pane. In an MDI application, you can use commands on the **View** menu to change the amount of detail shown in the right pane. (In an SDI or multiple top-level document application, you can change the detail using the toolbar buttons only.) The contents of the panes depend on the application. In a file-system browser, the left pane shows a hierarchical view of directories or machines, or machine groups, while the right pane displays folders, individual files, or machines, and details about them. The contents don't necessarily have to be files. They could be e-mail messages, error reports, or other items in a database. diff --git a/docs/mfc/reference/creating-a-forms-based-mfc-application.md b/docs/mfc/reference/creating-a-forms-based-mfc-application.md index 1378686ea70..0c5b3bef019 100644 --- a/docs/mfc/reference/creating-a-forms-based-mfc-application.md +++ b/docs/mfc/reference/creating-a-forms-based-mfc-application.md @@ -4,10 +4,12 @@ title: "Creating a Forms-Based MFC Application" ms.date: "09/09/2019" f1_keywords: ["vc.appwiz.mfcforms.project"] helpviewer_keywords: ["applications [MFC], forms-based", "forms-based applications [MFC]"] -ms.assetid: 048d2f7d-b60d-4386-ad8e-71d49af9c05e --- # Creating a Forms-Based MFC Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A form is a dialog box with controls that let a user access and possibly change data. You may want to develop an application in which the user selects from a selection of forms. Commonly, a forms-based application lets the user access forms by click **New** from the **File** menu. A dialog-based application, which does not give users access to a **New** option in the **File** menu, is also considered a forms-based application. A single document interface (SDI), forms-based application allows only one instance of a particular form to run at a time. It is possible to run different forms at the same time from an SDI forms-based application by selecting a new form from the **New** option in the **File** menu. diff --git a/docs/mfc/reference/creating-a-web-browser-style-mfc-application.md b/docs/mfc/reference/creating-a-web-browser-style-mfc-application.md index ab5e862682c..b955619f604 100644 --- a/docs/mfc/reference/creating-a-web-browser-style-mfc-application.md +++ b/docs/mfc/reference/creating-a-web-browser-style-mfc-application.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["MFC, Web applications", "Web browsers, creating from MFC --- # Creating a Web Browser-Style MFC Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A Web browser-style application can access information from the Internet (such as HTML or active documents) or an intranet, as well as folders in the local file system and on a network. By deriving the application's view class from [`CHtmlView`](../../mfc/reference/chtmlview-class.md), effectively you make the application a Web browser by providing the view with the WebBrowser control. ## To create a Web browser application based on the MFC document/view architecture diff --git a/docs/mfc/reference/creating-an-mfc-activex-control-container.md b/docs/mfc/reference/creating-an-mfc-activex-control-container.md index bf2998f393f..09e8ca13391 100644 --- a/docs/mfc/reference/creating-an-mfc-activex-control-container.md +++ b/docs/mfc/reference/creating-an-mfc-activex-control-container.md @@ -4,10 +4,12 @@ title: "Creating an MFC ActiveX Control Container" ms.date: "09/12/2018" f1_keywords: ["vc.appwiz.activex.container"] helpviewer_keywords: ["MFC ActiveX controls [MFC], containers", "ActiveX control containers [MFC], creating", "containers [MFC], creating", "OLE controls [MFC], containers"] -ms.assetid: ec70e137-7c14-4940-bd0e-fd4edcc63ea5 --- # Creating an MFC ActiveX Control Container +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An ActiveX control container is a parent program that supplies the environment for an ActiveX (formerly OLE) control to run. You can create an application capable of containing ActiveX controls with or without MFC, but it is much easier to do with MFC. >[!IMPORTANT] diff --git a/docs/mfc/reference/creating-an-mfc-activex-control.md b/docs/mfc/reference/creating-an-mfc-activex-control.md index af40e85640b..699fd44cc35 100644 --- a/docs/mfc/reference/creating-an-mfc-activex-control.md +++ b/docs/mfc/reference/creating-an-mfc-activex-control.md @@ -4,10 +4,12 @@ title: "Creating an MFC ActiveX Control" ms.date: "08/19/2019" f1_keywords: ["vc.appwiz.activex.project"] helpviewer_keywords: ["MFC ActiveX controls [MFC], creating", "ActiveX controls [MFC], creating"] -ms.assetid: 8bd5a93c-d04d-414e-bb28-163fdc1c0dd5 --- # Creating an MFC ActiveX Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + ActiveX control programs are modular programs designed to give a specific type of functionality to a parent application. For example, you can create a control such as a button for use in a dialog, or toolbar for use in a Web page. >[!IMPORTANT] diff --git a/docs/mfc/reference/creating-an-mfc-application.md b/docs/mfc/reference/creating-an-mfc-application.md index 6d366fb7b8a..5a7719ffafc 100644 --- a/docs/mfc/reference/creating-an-mfc-application.md +++ b/docs/mfc/reference/creating-an-mfc-application.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["applications [MFC]", "MFC, creating applications", "MFC a --- # Creating an MFC Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An MFC application is an executable application for Windows that is based on the Microsoft Foundation Class (MFC) Library. MFC executables generally fall into five types: standard Windows applications, dialog boxes, forms-based applications, Explorer-style applications, and Web browser-style applications. For more information, see: - [Using the Classes to Write Windows Applications](../../mfc/using-the-classes-to-write-applications-for-windows.md) diff --git a/docs/mfc/reference/creating-an-mfc-dll-project.md b/docs/mfc/reference/creating-an-mfc-dll-project.md index 783d8204a23..0db9eb054b6 100644 --- a/docs/mfc/reference/creating-an-mfc-dll-project.md +++ b/docs/mfc/reference/creating-an-mfc-dll-project.md @@ -4,10 +4,12 @@ title: "Creating an MFC DLL Project" ms.date: "08/19/2019" f1_keywords: ["vc.appwiz.mfcdll.project"] helpviewer_keywords: ["MFC DLLs [MFC], creating projects", "DLLs [MFC], MFC", "projects [MFC], creating", "DLLs [MFC], creating"] -ms.assetid: 05540b93-4781-4a90-aadf-55158313f5b2 --- # Creating an MFC DLL Project +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An MFC DLL is a binary file that acts as a shared library of functions that can be used simultaneously by multiple applications. The easiest way to create an MFC DLL project is to use the MFC DLL Wizard. > [!NOTE] diff --git a/docs/mfc/reference/crebar-class.md b/docs/mfc/reference/crebar-class.md index 52ee6e4ec94..16cc85e331b 100644 --- a/docs/mfc/reference/crebar-class.md +++ b/docs/mfc/reference/crebar-class.md @@ -4,10 +4,12 @@ title: "CReBar Class" ms.date: "11/19/2018" f1_keywords: ["CReBar", "AFXEXT/CReBar", "AFXEXT/CReBar::AddBar", "AFXEXT/CReBar::Create", "AFXEXT/CReBar::GetReBarCtrl"] helpviewer_keywords: ["CReBar [MFC], AddBar", "CReBar [MFC], Create", "CReBar [MFC], GetReBarCtrl"] -ms.assetid: c1ad2720-1d33-4106-8e4e-80aa84f93559 --- # CReBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A control bar that provides layout, persistence, and state information for rebar controls. ## Syntax diff --git a/docs/mfc/reference/crebarctrl-class.md b/docs/mfc/reference/crebarctrl-class.md index 7d66ed8b7f6..970ef6e7e42 100644 --- a/docs/mfc/reference/crebarctrl-class.md +++ b/docs/mfc/reference/crebarctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CReBarCtrl [MFC], CReBarCtrl", "CReBarCtrl [MFC], BeginDr --- # CReBarCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates the functionality of a rebar control, which is a container for a child window. ## Syntax diff --git a/docs/mfc/reference/crecentdocksiteinfo-class.md b/docs/mfc/reference/crecentdocksiteinfo-class.md index 88bf440c502..2c9a20d7337 100644 --- a/docs/mfc/reference/crecentdocksiteinfo-class.md +++ b/docs/mfc/reference/crecentdocksiteinfo-class.md @@ -4,10 +4,12 @@ title: "CRecentDockSiteInfo Class" ms.date: "11/04/2016" f1_keywords: ["CRecentDockSiteInfo", "AFXRECENTDOCKSITEINFO/CRecentDockSiteInfo", "AFXRECENTDOCKSITEINFO/CRecentDockSiteInfo::CleanUp", "AFXRECENTDOCKSITEINFO/CRecentDockSiteInfo::GetRecentDefaultPaneDivider", "AFXRECENTDOCKSITEINFO/CRecentDockSiteInfo::GetRecentDockedPercent", "AFXRECENTDOCKSITEINFO/CRecentDockSiteInfo::GetRecentDockedRect", "AFXRECENTDOCKSITEINFO/CRecentDockSiteInfo::GetRecentListOfPanes", "AFXRECENTDOCKSITEINFO/CRecentDockSiteInfo::GetRecentPaneContainer", "AFXRECENTDOCKSITEINFO/CRecentDockSiteInfo::GetRecentTabContainer", "AFXRECENTDOCKSITEINFO/CRecentDockSiteInfo::Init", "AFXRECENTDOCKSITEINFO/CRecentDockSiteInfo::IsRecentLeftPane", "AFXRECENTDOCKSITEINFO/CRecentDockSiteInfo::SaveListOfRecentPanes", "AFXRECENTDOCKSITEINFO/CRecentDockSiteInfo::SetInfo", "AFXRECENTDOCKSITEINFO/CRecentDockSiteInfo::StoreDockInfo"] helpviewer_keywords: ["CRecentDockSiteInfo [MFC], CleanUp", "CRecentDockSiteInfo [MFC], GetRecentDefaultPaneDivider", "CRecentDockSiteInfo [MFC], GetRecentDockedPercent", "CRecentDockSiteInfo [MFC], GetRecentDockedRect", "CRecentDockSiteInfo [MFC], GetRecentListOfPanes", "CRecentDockSiteInfo [MFC], GetRecentPaneContainer", "CRecentDockSiteInfo [MFC], GetRecentTabContainer", "CRecentDockSiteInfo [MFC], Init", "CRecentDockSiteInfo [MFC], IsRecentLeftPane", "CRecentDockSiteInfo [MFC], SaveListOfRecentPanes", "CRecentDockSiteInfo [MFC], SetInfo", "CRecentDockSiteInfo [MFC], StoreDockInfo"] -ms.assetid: 2dd14f95-d5a2-4461-a7a5-2c6c36a3a165 --- # CRecentDockSiteInfo Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CRecentDockSiteInfo` class is a helper class that stores recent state information for the [CPane Class](../../mfc/reference/cpane-class.md). ## Syntax diff --git a/docs/mfc/reference/crecentfilelist-class.md b/docs/mfc/reference/crecentfilelist-class.md index d1254290dfa..01ada3f09c3 100644 --- a/docs/mfc/reference/crecentfilelist-class.md +++ b/docs/mfc/reference/crecentfilelist-class.md @@ -4,10 +4,12 @@ title: "CRecentFileList Class" ms.date: "11/04/2016" f1_keywords: ["CRecentFileList", "AFXADV/CRecentFileList", "AFXADV/CRecentFileList::CRecentFileList", "AFXADV/CRecentFileList::Add", "AFXADV/CRecentFileList::GetDisplayName", "AFXADV/CRecentFileList::GetSize", "AFXADV/CRecentFileList::ReadList", "AFXADV/CRecentFileList::Remove", "AFXADV/CRecentFileList::UpdateMenu", "AFXADV/CRecentFileList::WriteList"] helpviewer_keywords: ["CRecentFileList [MFC], CRecentFileList", "CRecentFileList [MFC], Add", "CRecentFileList [MFC], GetDisplayName", "CRecentFileList [MFC], GetSize", "CRecentFileList [MFC], ReadList", "CRecentFileList [MFC], Remove", "CRecentFileList [MFC], UpdateMenu", "CRecentFileList [MFC], WriteList"] -ms.assetid: a77f0524-7584-4582-849a-7e97b76d186e --- # CRecentFileList Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports control of the most recently used (MRU) file list. ## Syntax diff --git a/docs/mfc/reference/crecordset-class.md b/docs/mfc/reference/crecordset-class.md index ec14c8d5d1e..4e04679a569 100644 --- a/docs/mfc/reference/crecordset-class.md +++ b/docs/mfc/reference/crecordset-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CRecordset [MFC], CRecordset", "CRecordset [MFC], AddNew" --- # `CRecordset` class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a set of records selected from a data source. ## Syntax diff --git a/docs/mfc/reference/crecordview-class.md b/docs/mfc/reference/crecordview-class.md index f4e471911b4..6fd8701e014 100644 --- a/docs/mfc/reference/crecordview-class.md +++ b/docs/mfc/reference/crecordview-class.md @@ -4,10 +4,12 @@ title: "CRecordView Class" ms.date: "11/04/2016" f1_keywords: ["CRecordView", "AFXDB/CRecordView", "AFXDB/CRecordView::CRecordView", "AFXDB/CRecordView::IsOnFirstRecord", "AFXDB/CRecordView::IsOnLastRecord", "AFXDB/CRecordView::OnGetRecordset", "AFXDB/CRecordView::OnMove"] helpviewer_keywords: ["CRecordView [MFC], CRecordView", "CRecordView [MFC], IsOnFirstRecord", "CRecordView [MFC], IsOnLastRecord", "CRecordView [MFC], OnGetRecordset", "CRecordView [MFC], OnMove", "CRecordView [MFC], OnMove"] -ms.assetid: 9b4b0897-bd50-4d48-a0b4-f3323f5ccc55 --- # CRecordView Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A view that displays database records in controls. ## Syntax diff --git a/docs/mfc/reference/crecttracker-class.md b/docs/mfc/reference/crecttracker-class.md index 19a028ee9c3..5fe0fff5ac8 100644 --- a/docs/mfc/reference/crecttracker-class.md +++ b/docs/mfc/reference/crecttracker-class.md @@ -4,10 +4,12 @@ title: "CRectTracker Class" ms.date: "11/19/2018" f1_keywords: ["CRectTracker", "AFXEXT/CRectTracker", "AFXEXT/CRectTracker::CRectTracker", "AFXEXT/CRectTracker::AdjustRect", "AFXEXT/CRectTracker::Draw", "AFXEXT/CRectTracker::DrawTrackerRect", "AFXEXT/CRectTracker::GetHandleMask", "AFXEXT/CRectTracker::GetTrueRect", "AFXEXT/CRectTracker::HitTest", "AFXEXT/CRectTracker::NormalizeHit", "AFXEXT/CRectTracker::OnChangedRect", "AFXEXT/CRectTracker::SetCursor", "AFXEXT/CRectTracker::Track", "AFXEXT/CRectTracker::TrackRubberBand", "AFXEXT/CRectTracker::m_nHandleSize", "AFXEXT/CRectTracker::m_nStyle", "AFXEXT/CRectTracker::m_rect", "AFXEXT/CRectTracker::m_sizeMin"] helpviewer_keywords: ["CRectTracker [MFC], CRectTracker", "CRectTracker [MFC], AdjustRect", "CRectTracker [MFC], Draw", "CRectTracker [MFC], DrawTrackerRect", "CRectTracker [MFC], GetHandleMask", "CRectTracker [MFC], GetTrueRect", "CRectTracker [MFC], HitTest", "CRectTracker [MFC], NormalizeHit", "CRectTracker [MFC], OnChangedRect", "CRectTracker [MFC], SetCursor", "CRectTracker [MFC], Track", "CRectTracker [MFC], TrackRubberBand", "CRectTracker [MFC], m_nHandleSize", "CRectTracker [MFC], m_nStyle", "CRectTracker [MFC], m_rect", "CRectTracker [MFC], m_sizeMin"] -ms.assetid: 99caa7f2-3c0d-4a42-bbee-e5d1d342d4ee --- # CRectTracker Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Allows an item to be displayed, moved, and resized in different fashions. ## Syntax diff --git a/docs/mfc/reference/crendertarget-class.md b/docs/mfc/reference/crendertarget-class.md index 3c031ef53a6..c03c1adaece 100644 --- a/docs/mfc/reference/crendertarget-class.md +++ b/docs/mfc/reference/crendertarget-class.md @@ -4,10 +4,12 @@ title: "CRenderTarget Class" ms.date: "03/27/2019" f1_keywords: ["CRenderTarget", "AFXRENDERTARGET/CRenderTarget", "AFXRENDERTARGET/CRenderTarget::CRenderTarget", "AFXRENDERTARGET/CRenderTarget::Attach", "AFXRENDERTARGET/CRenderTarget::BeginDraw", "AFXRENDERTARGET/CRenderTarget::Clear", "AFXRENDERTARGET/CRenderTarget::COLORREF_TO_D2DCOLOR", "AFXRENDERTARGET/CRenderTarget::CreateCompatibleRenderTarget", "AFXRENDERTARGET/CRenderTarget::Destroy", "AFXRENDERTARGET/CRenderTarget::Detach", "AFXRENDERTARGET/CRenderTarget::DrawBitmap", "AFXRENDERTARGET/CRenderTarget::DrawEllipse", "AFXRENDERTARGET/CRenderTarget::DrawGeometry", "AFXRENDERTARGET/CRenderTarget::DrawGlyphRun", "AFXRENDERTARGET/CRenderTarget::DrawLine", "AFXRENDERTARGET/CRenderTarget::DrawRectangle", "AFXRENDERTARGET/CRenderTarget::DrawRoundedRectangle", "AFXRENDERTARGET/CRenderTarget::DrawText", "AFXRENDERTARGET/CRenderTarget::DrawTextLayout", "AFXRENDERTARGET/CRenderTarget::EndDraw", "AFXRENDERTARGET/CRenderTarget::FillEllipse", "AFXRENDERTARGET/CRenderTarget::FillGeometry", "AFXRENDERTARGET/CRenderTarget::FillMesh", "AFXRENDERTARGET/CRenderTarget::FillOpacityMask", "AFXRENDERTARGET/CRenderTarget::FillRectangle", "AFXRENDERTARGET/CRenderTarget::FillRoundedRectangle", "AFXRENDERTARGET/CRenderTarget::Flush", "AFXRENDERTARGET/CRenderTarget::GetAntialiasMode", "AFXRENDERTARGET/CRenderTarget::GetDpi", "AFXRENDERTARGET/CRenderTarget::GetMaximumBitmapSize", "AFXRENDERTARGET/CRenderTarget::GetPixelFormat", "AFXRENDERTARGET/CRenderTarget::GetPixelSize", "AFXRENDERTARGET/CRenderTarget::GetRenderTarget", "AFXRENDERTARGET/CRenderTarget::GetSize", "AFXRENDERTARGET/CRenderTarget::GetTags", "AFXRENDERTARGET/CRenderTarget::GetTextAntialiasMode", "AFXRENDERTARGET/CRenderTarget::GetTextRenderingParams", "AFXRENDERTARGET/CRenderTarget::GetTransform", "AFXRENDERTARGET/CRenderTarget::IsSupported", "AFXRENDERTARGET/CRenderTarget::IsValid", "AFXRENDERTARGET/CRenderTarget::PopAxisAlignedClip", "AFXRENDERTARGET/CRenderTarget::PopLayer", "AFXRENDERTARGET/CRenderTarget::PushAxisAlignedClip", "AFXRENDERTARGET/CRenderTarget::PushLayer", "AFXRENDERTARGET/CRenderTarget::RestoreDrawingState", "AFXRENDERTARGET/CRenderTarget::SaveDrawingState", "AFXRENDERTARGET/CRenderTarget::SetAntialiasMode", "AFXRENDERTARGET/CRenderTarget::SetDpi", "AFXRENDERTARGET/CRenderTarget::SetTags", "AFXRENDERTARGET/CRenderTarget::SetTextAntialiasMode", "AFXRENDERTARGET/CRenderTarget::SetTextRenderingParams", "AFXRENDERTARGET/CRenderTarget::SetTransform", "AFXRENDERTARGET/CRenderTarget::VerifyResource", "AFXRENDERTARGET/CRenderTarget::m_lstResources", "AFXRENDERTARGET/CRenderTarget::m_pRenderTarget", "AFXRENDERTARGET/CRenderTarget::m_pTextFormatDefault"] helpviewer_keywords: ["CRenderTarget [MFC], CRenderTarget", "CRenderTarget [MFC], Attach", "CRenderTarget [MFC], BeginDraw", "CRenderTarget [MFC], Clear", "CRenderTarget [MFC], COLORREF_TO_D2DCOLOR", "CRenderTarget [MFC], CreateCompatibleRenderTarget", "CRenderTarget [MFC], Destroy", "CRenderTarget [MFC], Detach", "CRenderTarget [MFC], DrawBitmap", "CRenderTarget [MFC], DrawEllipse", "CRenderTarget [MFC], DrawGeometry", "CRenderTarget [MFC], DrawGlyphRun", "CRenderTarget [MFC], DrawLine", "CRenderTarget [MFC], DrawRectangle", "CRenderTarget [MFC], DrawRoundedRectangle", "CRenderTarget [MFC], DrawText", "CRenderTarget [MFC], DrawTextLayout", "CRenderTarget [MFC], EndDraw", "CRenderTarget [MFC], FillEllipse", "CRenderTarget [MFC], FillGeometry", "CRenderTarget [MFC], FillMesh", "CRenderTarget [MFC], FillOpacityMask", "CRenderTarget [MFC], FillRectangle", "CRenderTarget [MFC], FillRoundedRectangle", "CRenderTarget [MFC], Flush", "CRenderTarget [MFC], GetAntialiasMode", "CRenderTarget [MFC], GetDpi", "CRenderTarget [MFC], GetMaximumBitmapSize", "CRenderTarget [MFC], GetPixelFormat", "CRenderTarget [MFC], GetPixelSize", "CRenderTarget [MFC], GetRenderTarget", "CRenderTarget [MFC], GetSize", "CRenderTarget [MFC], GetTags", "CRenderTarget [MFC], GetTextAntialiasMode", "CRenderTarget [MFC], GetTextRenderingParams", "CRenderTarget [MFC], GetTransform", "CRenderTarget [MFC], IsSupported", "CRenderTarget [MFC], IsValid", "CRenderTarget [MFC], PopAxisAlignedClip", "CRenderTarget [MFC], PopLayer", "CRenderTarget [MFC], PushAxisAlignedClip", "CRenderTarget [MFC], PushLayer", "CRenderTarget [MFC], RestoreDrawingState", "CRenderTarget [MFC], SaveDrawingState", "CRenderTarget [MFC], SetAntialiasMode", "CRenderTarget [MFC], SetDpi", "CRenderTarget [MFC], SetTags", "CRenderTarget [MFC], SetTextAntialiasMode", "CRenderTarget [MFC], SetTextRenderingParams", "CRenderTarget [MFC], SetTransform", "CRenderTarget [MFC], VerifyResource", "CRenderTarget [MFC], m_lstResources", "CRenderTarget [MFC], m_pRenderTarget", "CRenderTarget [MFC], m_pTextFormatDefault"] -ms.assetid: 30d1607d-68d3-4d14-ac36-fdbd0ef903a1 --- # CRenderTarget Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for ID2D1RenderTarget. ## Syntax diff --git a/docs/mfc/reference/cresourceexception-class.md b/docs/mfc/reference/cresourceexception-class.md index 2fb51f30a9f..7092e28d4cf 100644 --- a/docs/mfc/reference/cresourceexception-class.md +++ b/docs/mfc/reference/cresourceexception-class.md @@ -4,10 +4,12 @@ title: "CResourceException Class" ms.date: "11/04/2016" f1_keywords: ["CResourceException", "AFXWIN/CResourceException", "AFXWIN/CResourceException::CResourceException"] helpviewer_keywords: ["CResourceException [MFC], CResourceException"] -ms.assetid: af6ae043-d124-4bfd-b35e-7bb0db67d289 --- # CResourceException Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Generated when Windows cannot find or allocate a requested resource. ## Syntax diff --git a/docs/mfc/reference/creversaltransition-class.md b/docs/mfc/reference/creversaltransition-class.md index ce0eea97765..a5d5fd66648 100644 --- a/docs/mfc/reference/creversaltransition-class.md +++ b/docs/mfc/reference/creversaltransition-class.md @@ -4,10 +4,12 @@ title: "CReversalTransition Class" ms.date: "11/04/2016" f1_keywords: ["CReversalTransition", "AFXANIMATIONCONTROLLER/CReversalTransition", "AFXANIMATIONCONTROLLER/CReversalTransition::CReversalTransition", "AFXANIMATIONCONTROLLER/CReversalTransition::Create", "AFXANIMATIONCONTROLLER/CReversalTransition::m_duration"] helpviewer_keywords: ["CReversalTransition [MFC], CReversalTransition", "CReversalTransition [MFC], Create", "CReversalTransition [MFC], m_duration"] -ms.assetid: e89516be-2d07-4885-95a8-fc278f46e3ad --- # CReversalTransition Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a reversal transition. ## Syntax diff --git a/docs/mfc/reference/crgn-class.md b/docs/mfc/reference/crgn-class.md index 6568c4df1c5..3f188fbc505 100644 --- a/docs/mfc/reference/crgn-class.md +++ b/docs/mfc/reference/crgn-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CRgn [MFC], CRgn", "CRgn [MFC], CombineRgn", "CRgn [MFC], --- # CRgn Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a Windows graphics device interface (GDI) region. ## Syntax diff --git a/docs/mfc/reference/cricheditcntritem-class.md b/docs/mfc/reference/cricheditcntritem-class.md index 54de9aee098..98ad504bdb2 100644 --- a/docs/mfc/reference/cricheditcntritem-class.md +++ b/docs/mfc/reference/cricheditcntritem-class.md @@ -4,10 +4,12 @@ title: "CRichEditCntrItem Class" ms.date: "11/04/2016" f1_keywords: ["CRichEditCntrItem", "AFXRICH/CRichEditCntrItem", "AFXRICH/CRichEditCntrItem::CRichEditCntrItem", "AFXRICH/CRichEditCntrItem::SyncToRichEditObject"] helpviewer_keywords: ["CRichEditCntrItem [MFC], CRichEditCntrItem", "CRichEditCntrItem [MFC], SyncToRichEditObject"] -ms.assetid: 6c0b4efe-0fb8-4621-b5e1-fdcb8ec48c3b --- # CRichEditCntrItem Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + With [CRichEditView](../../mfc/reference/cricheditview-class.md) and [CRichEditDoc](../../mfc/reference/cricheditdoc-class.md), provides the functionality of the rich edit control within the context of MFC's document view architecture. ## Syntax diff --git a/docs/mfc/reference/cricheditctrl-class.md b/docs/mfc/reference/cricheditctrl-class.md index 146d92aecf4..9a34e6cb057 100644 --- a/docs/mfc/reference/cricheditctrl-class.md +++ b/docs/mfc/reference/cricheditctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CRichEditCtrl [MFC], CRichEditCtrl", "CRichEditCtrl [MFC] --- # `CRichEditCtrl` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the rich edit control. ## Syntax diff --git a/docs/mfc/reference/cricheditdoc-class.md b/docs/mfc/reference/cricheditdoc-class.md index 3897e50c9b2..5dfa99a29a0 100644 --- a/docs/mfc/reference/cricheditdoc-class.md +++ b/docs/mfc/reference/cricheditdoc-class.md @@ -4,10 +4,12 @@ title: "CRichEditDoc Class" ms.date: "11/04/2016" f1_keywords: ["CRichEditDoc", "AFXRICH/CRichEditDoc", "AFXRICH/CRichEditDoc::CreateClientItem", "AFXRICH/CRichEditDoc::GetStreamFormat", "AFXRICH/CRichEditDoc::GetView", "AFXRICH/CRichEditDoc::m_bRTF"] helpviewer_keywords: ["CRichEditDoc [MFC], CreateClientItem", "CRichEditDoc [MFC], GetStreamFormat", "CRichEditDoc [MFC], GetView", "CRichEditDoc [MFC], m_bRTF"] -ms.assetid: c936ec18-d516-49d4-b7fb-c9aa0229eddc --- # CRichEditDoc Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + With [CRichEditView](../../mfc/reference/cricheditview-class.md) and [CRichEditCntrItem](../../mfc/reference/cricheditcntritem-class.md), provides the functionality of the rich edit control within the context of MFC's document view architecture. ## Syntax diff --git a/docs/mfc/reference/cricheditview-class.md b/docs/mfc/reference/cricheditview-class.md index 7cab1642800..23d301f4091 100644 --- a/docs/mfc/reference/cricheditview-class.md +++ b/docs/mfc/reference/cricheditview-class.md @@ -4,10 +4,12 @@ title: "CRichEditView Class" ms.date: "11/04/2016" f1_keywords: ["CRichEditView", "AFXRICH/CRichEditView", "AFXRICH/CRichEditView::CRichEditView", "AFXRICH/CRichEditView::AdjustDialogPosition", "AFXRICH/CRichEditView::CanPaste", "AFXRICH/CRichEditView::DoPaste", "AFXRICH/CRichEditView::FindText", "AFXRICH/CRichEditView::FindTextSimple", "AFXRICH/CRichEditView::GetCharFormatSelection", "AFXRICH/CRichEditView::GetDocument", "AFXRICH/CRichEditView::GetInPlaceActiveItem", "AFXRICH/CRichEditView::GetMargins", "AFXRICH/CRichEditView::GetPageRect", "AFXRICH/CRichEditView::GetPaperSize", "AFXRICH/CRichEditView::GetParaFormatSelection", "AFXRICH/CRichEditView::GetPrintRect", "AFXRICH/CRichEditView::GetPrintWidth", "AFXRICH/CRichEditView::GetRichEditCtrl", "AFXRICH/CRichEditView::GetSelectedItem", "AFXRICH/CRichEditView::GetTextLength", "AFXRICH/CRichEditView::GetTextLengthEx", "AFXRICH/CRichEditView::InsertFileAsObject", "AFXRICH/CRichEditView::InsertItem", "AFXRICH/CRichEditView::IsRichEditFormat", "AFXRICH/CRichEditView::OnCharEffect", "AFXRICH/CRichEditView::OnParaAlign", "AFXRICH/CRichEditView::OnUpdateCharEffect", "AFXRICH/CRichEditView::OnUpdateParaAlign", "AFXRICH/CRichEditView::PrintInsideRect", "AFXRICH/CRichEditView::PrintPage", "AFXRICH/CRichEditView::SetCharFormat", "AFXRICH/CRichEditView::SetMargins", "AFXRICH/CRichEditView::SetPaperSize", "AFXRICH/CRichEditView::SetParaFormat", "AFXRICH/CRichEditView::TextNotFound", "AFXRICH/CRichEditView::GetClipboardData", "AFXRICH/CRichEditView::GetContextMenu", "AFXRICH/CRichEditView::IsSelected", "AFXRICH/CRichEditView::OnFindNext", "AFXRICH/CRichEditView::OnInitialUpdate", "AFXRICH/CRichEditView::OnPasteNativeObject", "AFXRICH/CRichEditView::OnPrinterChanged", "AFXRICH/CRichEditView::OnReplaceAll", "AFXRICH/CRichEditView::OnReplaceSel", "AFXRICH/CRichEditView::OnTextNotFound", "AFXRICH/CRichEditView::QueryAcceptData", "AFXRICH/CRichEditView::WrapChanged", "AFXRICH/CRichEditView::m_nBulletIndent", "AFXRICH/CRichEditView::m_nWordWrap"] helpviewer_keywords: ["CRichEditView [MFC], CRichEditView", "CRichEditView [MFC], AdjustDialogPosition", "CRichEditView [MFC], CanPaste", "CRichEditView [MFC], DoPaste", "CRichEditView [MFC], FindText", "CRichEditView [MFC], FindTextSimple", "CRichEditView [MFC], GetCharFormatSelection", "CRichEditView [MFC], GetDocument", "CRichEditView [MFC], GetInPlaceActiveItem", "CRichEditView [MFC], GetMargins", "CRichEditView [MFC], GetPageRect", "CRichEditView [MFC], GetPaperSize", "CRichEditView [MFC], GetParaFormatSelection", "CRichEditView [MFC], GetPrintRect", "CRichEditView [MFC], GetPrintWidth", "CRichEditView [MFC], GetRichEditCtrl", "CRichEditView [MFC], GetSelectedItem", "CRichEditView [MFC], GetTextLength", "CRichEditView [MFC], GetTextLengthEx", "CRichEditView [MFC], InsertFileAsObject", "CRichEditView [MFC], InsertItem", "CRichEditView [MFC], IsRichEditFormat", "CRichEditView [MFC], OnCharEffect", "CRichEditView [MFC], OnParaAlign", "CRichEditView [MFC], OnUpdateCharEffect", "CRichEditView [MFC], OnUpdateParaAlign", "CRichEditView [MFC], PrintInsideRect", "CRichEditView [MFC], PrintPage", "CRichEditView [MFC], SetCharFormat", "CRichEditView [MFC], SetMargins", "CRichEditView [MFC], SetPaperSize", "CRichEditView [MFC], SetParaFormat", "CRichEditView [MFC], TextNotFound", "CRichEditView [MFC], GetClipboardData", "CRichEditView [MFC], GetContextMenu", "CRichEditView [MFC], IsSelected", "CRichEditView [MFC], OnFindNext", "CRichEditView [MFC], OnInitialUpdate", "CRichEditView [MFC], OnPasteNativeObject", "CRichEditView [MFC], OnPrinterChanged", "CRichEditView [MFC], OnReplaceAll", "CRichEditView [MFC], OnReplaceSel", "CRichEditView [MFC], OnTextNotFound", "CRichEditView [MFC], QueryAcceptData", "CRichEditView [MFC], WrapChanged", "CRichEditView [MFC], m_nBulletIndent", "CRichEditView [MFC], m_nWordWrap"] -ms.assetid: bd576b10-4cc0-4050-8f76-e1a0548411e4 --- # CRichEditView Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + With [CRichEditDoc](../../mfc/reference/cricheditdoc-class.md) and [CRichEditCntrItem](../../mfc/reference/cricheditcntritem-class.md), provides the functionality of the rich edit control within the context of MFC's document view architecture. ## Syntax diff --git a/docs/mfc/reference/cruntimeclass-structure.md b/docs/mfc/reference/cruntimeclass-structure.md index 6f396b5818b..c6772976abc 100644 --- a/docs/mfc/reference/cruntimeclass-structure.md +++ b/docs/mfc/reference/cruntimeclass-structure.md @@ -4,10 +4,12 @@ title: "CRuntimeClass Structure" ms.date: "11/04/2016" f1_keywords: ["CRuntimeClass"] helpviewer_keywords: ["CRuntimeClass structure [MFC]", "dynamic class information [MFC]", "runtime [MFC], class information", "run-time class [MFC], CRuntimeClass structure"] -ms.assetid: de62b6ef-90d4-420f-8c70-f58b36976a2b --- # CRuntimeClass Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Each class derived from `CObject` is associated with a `CRuntimeClass` structure that you can use to obtain information about an object or its base class at run time. ## Syntax diff --git a/docs/mfc/reference/cscrollbar-class.md b/docs/mfc/reference/cscrollbar-class.md index b5e379b5299..b489841cf9e 100644 --- a/docs/mfc/reference/cscrollbar-class.md +++ b/docs/mfc/reference/cscrollbar-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CScrollBar [MFC], CScrollBar", "CScrollBar [MFC], Create" --- # `CScrollBar` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of a Windows scroll-bar control. ## Syntax diff --git a/docs/mfc/reference/cscrollview-class.md b/docs/mfc/reference/cscrollview-class.md index 17e1c7e1bd3..9103f4b0a7c 100644 --- a/docs/mfc/reference/cscrollview-class.md +++ b/docs/mfc/reference/cscrollview-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CScrollView [MFC], CScrollView", "CScrollView [MFC], Chec --- # `CScrollView` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A [`CView`](../../mfc/reference/cview-class.md) with scrolling capabilities. ## Syntax diff --git a/docs/mfc/reference/csemaphore-class.md b/docs/mfc/reference/csemaphore-class.md index a31a4590ab9..e2d61659cf4 100644 --- a/docs/mfc/reference/csemaphore-class.md +++ b/docs/mfc/reference/csemaphore-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CSemaphore [MFC], CSemaphore"] --- # CSemaphore Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An object of class `CSemaphore` represents a "semaphore". A semaphore is a synchronization object that controls access to shared resources and prevents race conditions. ## Syntax diff --git a/docs/mfc/reference/csettingsstore-class.md b/docs/mfc/reference/csettingsstore-class.md index d54d021a525..cb4f6c83294 100644 --- a/docs/mfc/reference/csettingsstore-class.md +++ b/docs/mfc/reference/csettingsstore-class.md @@ -4,10 +4,12 @@ title: "CSettingsStore Class" ms.date: "11/04/2016" f1_keywords: ["CSettingsStore", "AFXSETTINGSSTORE/CSettingsStore", "AFXSETTINGSSTORE/CSettingsStore::CSettingsStore", "AFXSETTINGSSTORE/CSettingsStore::Close", "AFXSETTINGSSTORE/CSettingsStore::CreateKey", "AFXSETTINGSSTORE/CSettingsStore::DeleteKey", "AFXSETTINGSSTORE/CSettingsStore::DeleteValue", "AFXSETTINGSSTORE/CSettingsStore::Open", "AFXSETTINGSSTORE/CSettingsStore::Read", "AFXSETTINGSSTORE/CSettingsStore::Write"] helpviewer_keywords: ["CSettingsStore [MFC], CSettingsStore", "CSettingsStore [MFC], Close", "CSettingsStore [MFC], CreateKey", "CSettingsStore [MFC], DeleteKey", "CSettingsStore [MFC], DeleteValue", "CSettingsStore [MFC], Open", "CSettingsStore [MFC], Read", "CSettingsStore [MFC], Write"] -ms.assetid: 0ea181de-a13e-4b29-b560-7c43838223ff --- # CSettingsStore Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Wraps Windows API functions, providing an object-oriented interface that you use to access the registry. ## Syntax diff --git a/docs/mfc/reference/csettingsstoresp-class.md b/docs/mfc/reference/csettingsstoresp-class.md index 460f1d63a96..aeede5a5af0 100644 --- a/docs/mfc/reference/csettingsstoresp-class.md +++ b/docs/mfc/reference/csettingsstoresp-class.md @@ -4,10 +4,12 @@ title: "CSettingsStoreSP Class" ms.date: "11/04/2016" f1_keywords: ["CSettingsStoreSP", "AFXSETTINGSSTORE/CSettingsStoreSP", "AFXSETTINGSSTORE/CSettingsStoreSP::CSettingsStoreSP", "AFXSETTINGSSTORE/CSettingsStoreSP::Create", "AFXSETTINGSSTORE/CSettingsStoreSP::SetRuntimeClass"] helpviewer_keywords: ["CSettingsStoreSP [MFC], CSettingsStoreSP", "CSettingsStoreSP [MFC], Create", "CSettingsStoreSP [MFC], SetRuntimeClass"] -ms.assetid: bcd37f40-cfd4-4d17-a5ce-3bfabe995dcc --- # CSettingsStoreSP Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CSettingsStoreSP` class is a helper class that you can use to create instances of the [CSettingsStore Class](../../mfc/reference/csettingsstore-class.md). ## Syntax diff --git a/docs/mfc/reference/csharedfile-class.md b/docs/mfc/reference/csharedfile-class.md index 9b41513705b..f337246813d 100644 --- a/docs/mfc/reference/csharedfile-class.md +++ b/docs/mfc/reference/csharedfile-class.md @@ -4,10 +4,12 @@ title: "CSharedFile Class" ms.date: "11/04/2016" f1_keywords: ["CSharedFile", "AFXADV/CSharedFile", "AFXADV/CSharedFile::CSharedFile", "AFXADV/CSharedFile::Detach", "AFXADV/CSharedFile::SetHandle"] helpviewer_keywords: ["CSharedFile [MFC], CSharedFile", "CSharedFile [MFC], Detach", "CSharedFile [MFC], SetHandle"] -ms.assetid: 5d000422-9ede-4318-a8c9-f7412b674f39 --- # CSharedFile Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The [CMemFile](../../mfc/reference/cmemfile-class.md)-derived class that supports shared memory files. ## Syntax diff --git a/docs/mfc/reference/cshellmanager-class.md b/docs/mfc/reference/cshellmanager-class.md index 83bc1cbf6f1..3a4b20fb72a 100644 --- a/docs/mfc/reference/cshellmanager-class.md +++ b/docs/mfc/reference/cshellmanager-class.md @@ -4,10 +4,12 @@ title: "CShellManager Class" ms.date: "11/04/2016" f1_keywords: ["CShellManager", "AFXSHELLMANAGER/CShellManager", "AFXSHELLMANAGER/CShellManager::CShellManager", "AFXSHELLMANAGER/CShellManager::BrowseForFolder", "AFXSHELLMANAGER/CShellManager::ConcatenateItem", "AFXSHELLMANAGER/CShellManager::CopyItem", "AFXSHELLMANAGER/CShellManager::CreateItem", "AFXSHELLMANAGER/CShellManager::FreeItem", "AFXSHELLMANAGER/CShellManager::GetItemCount", "AFXSHELLMANAGER/CShellManager::GetItemSize", "AFXSHELLMANAGER/CShellManager::GetNextItem", "AFXSHELLMANAGER/CShellManager::GetParentItem", "AFXSHELLMANAGER/CShellManager::ItemFromPath"] helpviewer_keywords: ["CShellManager [MFC], CShellManager", "CShellManager [MFC], BrowseForFolder", "CShellManager [MFC], ConcatenateItem", "CShellManager [MFC], CopyItem", "CShellManager [MFC], CreateItem", "CShellManager [MFC], FreeItem", "CShellManager [MFC], GetItemCount", "CShellManager [MFC], GetItemSize", "CShellManager [MFC], GetNextItem", "CShellManager [MFC], GetParentItem", "CShellManager [MFC], ItemFromPath"] -ms.assetid: f15c4c1a-6fae-487d-9913-9b7369b33da0 --- # CShellManager Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements several methods that enable you to work with pointers to identifier lists (PIDLs). ## Syntax diff --git a/docs/mfc/reference/csimpleexception-class.md b/docs/mfc/reference/csimpleexception-class.md index 177145f514b..3e53ac0ac49 100644 --- a/docs/mfc/reference/csimpleexception-class.md +++ b/docs/mfc/reference/csimpleexception-class.md @@ -4,10 +4,12 @@ title: "CSimpleException Class" ms.date: "11/04/2016" f1_keywords: ["CSimpleException", "AFX/CSimpleException", "AFX/CSimpleException::CSimpleException", "AFX/CSimpleException::GetErrorMessage"] helpviewer_keywords: ["CSimpleException [MFC], CSimpleException", "CSimpleException [MFC], GetErrorMessage"] -ms.assetid: be0eb8ef-e5b9-47d6-b0fb-efaff2d1e666 --- # CSimpleException Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This class is a base class for resource-critical MFC exceptions. ## Syntax diff --git a/docs/mfc/reference/csingledoctemplate-class.md b/docs/mfc/reference/csingledoctemplate-class.md index ef86c373897..91c62bd2ca8 100644 --- a/docs/mfc/reference/csingledoctemplate-class.md +++ b/docs/mfc/reference/csingledoctemplate-class.md @@ -4,10 +4,12 @@ title: "CSingleDocTemplate Class" ms.date: "11/04/2016" f1_keywords: ["CSingleDocTemplate", "AFXWIN/CSingleDocTemplate", "AFXWIN/CSingleDocTemplate::CSingleDocTemplate"] helpviewer_keywords: ["CSingleDocTemplate [MFC], CSingleDocTemplate"] -ms.assetid: 4f3a8212-81ee-48a0-ad22-e0ed7c36a391 --- # CSingleDocTemplate Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Defines a document template that implements the single document interface (SDI). ## Syntax diff --git a/docs/mfc/reference/csinglelock-class.md b/docs/mfc/reference/csinglelock-class.md index 25559869d57..514ffb67131 100644 --- a/docs/mfc/reference/csinglelock-class.md +++ b/docs/mfc/reference/csinglelock-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CSingleLock [MFC], CSingleLock", "CSingleLock [MFC], IsLo --- # `CSingleLock` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents the access-control mechanism used in controlling access to a resource in a multithreaded program. ## Syntax diff --git a/docs/mfc/reference/csinusoidaltransitionfromrange-class.md b/docs/mfc/reference/csinusoidaltransitionfromrange-class.md index 71e765f9e7a..0781edb9065 100644 --- a/docs/mfc/reference/csinusoidaltransitionfromrange-class.md +++ b/docs/mfc/reference/csinusoidaltransitionfromrange-class.md @@ -4,10 +4,12 @@ title: "CSinusoidalTransitionFromRange Class" ms.date: "11/04/2016" f1_keywords: ["CSinusoidalTransitionFromRange", "AFXANIMATIONCONTROLLER/CSinusoidalTransitionFromRange", "AFXANIMATIONCONTROLLER/CSinusoidalTransitionFromRange::CSinusoidalTransitionFromRange", "AFXANIMATIONCONTROLLER/CSinusoidalTransitionFromRange::Create", "AFXANIMATIONCONTROLLER/CSinusoidalTransitionFromRange::m_dblMaximumValue", "AFXANIMATIONCONTROLLER/CSinusoidalTransitionFromRange::m_dblMinimumValue", "AFXANIMATIONCONTROLLER/CSinusoidalTransitionFromRange::m_duration", "AFXANIMATIONCONTROLLER/CSinusoidalTransitionFromRange::m_period", "AFXANIMATIONCONTROLLER/CSinusoidalTransitionFromRange::m_slope"] helpviewer_keywords: ["CSinusoidalTransitionFromRange [MFC], CSinusoidalTransitionFromRange", "CSinusoidalTransitionFromRange [MFC], Create", "CSinusoidalTransitionFromRange [MFC], m_dblMaximumValue", "CSinusoidalTransitionFromRange [MFC], m_dblMinimumValue", "CSinusoidalTransitionFromRange [MFC], m_duration", "CSinusoidalTransitionFromRange [MFC], m_period", "CSinusoidalTransitionFromRange [MFC], m_slope"] -ms.assetid: 8b66a729-5f10-431a-b055-e3600d0065da --- # CSinusoidalTransitionFromRange Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a sinusoidal-range transition that has a given range of oscillation. ## Syntax diff --git a/docs/mfc/reference/csinusoidaltransitionfromvelocity-class.md b/docs/mfc/reference/csinusoidaltransitionfromvelocity-class.md index 5340dcf776b..035fcb9bc5f 100644 --- a/docs/mfc/reference/csinusoidaltransitionfromvelocity-class.md +++ b/docs/mfc/reference/csinusoidaltransitionfromvelocity-class.md @@ -4,10 +4,12 @@ title: "CSinusoidalTransitionFromVelocity Class" ms.date: "11/04/2016" f1_keywords: ["CSinusoidalTransitionFromVelocity", "AFXANIMATIONCONTROLLER/CSinusoidalTransitionFromVelocity", "AFXANIMATIONCONTROLLER/CSinusoidalTransitionFromVelocity::CSinusoidalTransitionFromVelocity", "AFXANIMATIONCONTROLLER/CSinusoidalTransitionFromVelocity::Create", "AFXANIMATIONCONTROLLER/CSinusoidalTransitionFromVelocity::m_duration", "AFXANIMATIONCONTROLLER/CSinusoidalTransitionFromVelocity::m_period"] helpviewer_keywords: ["CSinusoidalTransitionFromVelocity [MFC], CSinusoidalTransitionFromVelocity", "CSinusoidalTransitionFromVelocity [MFC], Create", "CSinusoidalTransitionFromVelocity [MFC], m_duration", "CSinusoidalTransitionFromVelocity [MFC], m_period"] -ms.assetid: cc885f17-b84b-45ee-8f1f-36a8bbb7adad --- # CSinusoidalTransitionFromVelocity Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a sinusoidal-velocity transition that has an amplitude that is determined by the initial velocity of the animation variable. ## Syntax diff --git a/docs/mfc/reference/csliderctrl-class.md b/docs/mfc/reference/csliderctrl-class.md index 28afb9140de..2618ebf579c 100644 --- a/docs/mfc/reference/csliderctrl-class.md +++ b/docs/mfc/reference/csliderctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CSliderCtrl [MFC], CSliderCtrl", "CSliderCtrl [MFC], Clea --- # `CSliderCtrl` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the Windows common slider control. ## Syntax diff --git a/docs/mfc/reference/csmartdockinginfo-class.md b/docs/mfc/reference/csmartdockinginfo-class.md index d7944553b9c..eb889a8c47a 100644 --- a/docs/mfc/reference/csmartdockinginfo-class.md +++ b/docs/mfc/reference/csmartdockinginfo-class.md @@ -4,10 +4,12 @@ title: "CSmartDockingInfo Class" ms.date: "11/19/2018" f1_keywords: ["CSmartDockingInfo", "AFXDOCKINGMANAGER/CSmartDockingInfo", "AFXDOCKINGMANAGER/CSmartDockingInfo::CopyTo", "AFXDOCKINGMANAGER/CSmartDockingInfo::m_bUseThemeColorInShading", "AFXDOCKINGMANAGER/CSmartDockingInfo::m_clrBaseBackground", "AFXDOCKINGMANAGER/CSmartDockingInfo::m_clrToneDest", "AFXDOCKINGMANAGER/CSmartDockingInfo::m_clrToneSrc", "AFXDOCKINGMANAGER/CSmartDockingInfo::m_clrTransparent", "AFXDOCKINGMANAGER/CSmartDockingInfo::m_nCentralGroupOffset", "AFXDOCKINGMANAGER/CSmartDockingInfo::m_sizeTotal", "AFXDOCKINGMANAGER/CSmartDockingInfo::m_uiMarkerBmpResID", "AFXDOCKINGMANAGER/CSmartDockingInfo::m_uiMarkerLightBmpResID"] helpviewer_keywords: ["CSmartDockingInfo [MFC], CopyTo", "CSmartDockingInfo [MFC], m_bUseThemeColorInShading", "CSmartDockingInfo [MFC], m_clrBaseBackground", "CSmartDockingInfo [MFC], m_clrToneDest", "CSmartDockingInfo [MFC], m_clrToneSrc", "CSmartDockingInfo [MFC], m_clrTransparent", "CSmartDockingInfo [MFC], m_nCentralGroupOffset", "CSmartDockingInfo [MFC], m_sizeTotal", "CSmartDockingInfo [MFC], m_uiMarkerBmpResID", "CSmartDockingInfo [MFC], m_uiMarkerLightBmpResID"] -ms.assetid: cab04f38-4bc1-4378-9337-c56fc87fbd68 --- # CSmartDockingInfo Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Defines the appearance of smart docking markers. ## Syntax diff --git a/docs/mfc/reference/csmoothstoptransition-class.md b/docs/mfc/reference/csmoothstoptransition-class.md index 039271bcb5e..9d7b0d6b78f 100644 --- a/docs/mfc/reference/csmoothstoptransition-class.md +++ b/docs/mfc/reference/csmoothstoptransition-class.md @@ -4,10 +4,12 @@ title: "CSmoothStopTransition Class" ms.date: "11/04/2016" f1_keywords: ["CSmoothStopTransition", "AFXANIMATIONCONTROLLER/CSmoothStopTransition", "AFXANIMATIONCONTROLLER/CSmoothStopTransition::CSmoothStopTransition", "AFXANIMATIONCONTROLLER/CSmoothStopTransition::Create", "AFXANIMATIONCONTROLLER/CSmoothStopTransition::m_dblFinalValue", "AFXANIMATIONCONTROLLER/CSmoothStopTransition::m_maximumDuration"] helpviewer_keywords: ["CSmoothStopTransition [MFC], CSmoothStopTransition", "CSmoothStopTransition [MFC], Create", "CSmoothStopTransition [MFC], m_dblFinalValue", "CSmoothStopTransition [MFC], m_maximumDuration"] -ms.assetid: e1a4b476-6f96-43dd-90db-870a64406b85 --- # CSmoothStopTransition Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a smooth-stop transition. ## Syntax diff --git a/docs/mfc/reference/csocket-class.md b/docs/mfc/reference/csocket-class.md index b7cb5b69c98..d317b7cced5 100644 --- a/docs/mfc/reference/csocket-class.md +++ b/docs/mfc/reference/csocket-class.md @@ -4,10 +4,12 @@ title: "CSocket Class" ms.date: "11/04/2016" f1_keywords: ["CSocket", "AFXSOCK/CSocket", "AFXSOCK/CSocket::CSocket", "AFXSOCK/CSocket::Attach", "AFXSOCK/CSocket::CancelBlockingCall", "AFXSOCK/CSocket::Create", "AFXSOCK/CSocket::FromHandle", "AFXSOCK/CSocket::IsBlocking", "AFXSOCK/CSocket::OnMessagePending"] helpviewer_keywords: ["CSocket [MFC], CSocket", "CSocket [MFC], Attach", "CSocket [MFC], CancelBlockingCall", "CSocket [MFC], Create", "CSocket [MFC], FromHandle", "CSocket [MFC], IsBlocking", "CSocket [MFC], OnMessagePending"] -ms.assetid: 7f23c081-d24d-42e3-b511-8053ca53d729 --- # `CSocket` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Derives from `CAsyncSocket`, inherits its encapsulation of the Windows Sockets API, and represents a higher level of abstraction than that of a `CAsyncSocket` object. ## Syntax diff --git a/docs/mfc/reference/csocketfile-class.md b/docs/mfc/reference/csocketfile-class.md index 5a6596fbcf7..77c50de870a 100644 --- a/docs/mfc/reference/csocketfile-class.md +++ b/docs/mfc/reference/csocketfile-class.md @@ -4,10 +4,12 @@ title: "CSocketFile Class" ms.date: "11/04/2016" f1_keywords: ["CSocketFile", "AFXSOCK/CSocketFile", "AFXSOCK/CSocketFile::CSocketFile"] helpviewer_keywords: ["CSocketFile [MFC], CSocketFile"] -ms.assetid: 7924c098-5f72-40d6-989d-42800a47958f --- # CSocketFile Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A `CFile` object used for sending and receiving data across a network via Windows Sockets. ## Syntax diff --git a/docs/mfc/reference/cspinbuttonctrl-class.md b/docs/mfc/reference/cspinbuttonctrl-class.md index d5fc72a6e4e..35a334b4672 100644 --- a/docs/mfc/reference/cspinbuttonctrl-class.md +++ b/docs/mfc/reference/cspinbuttonctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CSpinButtonCtrl [MFC], CSpinButtonCtrl", "CSpinButtonCtrl --- # CSpinButtonCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the Windows common spin button control. ## Syntax diff --git a/docs/mfc/reference/csplitbutton-class.md b/docs/mfc/reference/csplitbutton-class.md index 1e57c08c497..e946d578adf 100644 --- a/docs/mfc/reference/csplitbutton-class.md +++ b/docs/mfc/reference/csplitbutton-class.md @@ -4,10 +4,12 @@ title: "CSplitButton Class" ms.date: "11/19/2018" f1_keywords: ["CSplitButton", "AFXCMN/CSplitButton", "AFXCMN/CSplitButton::CSplitButton", "AFXCMN/CSplitButton::Create", "AFXCMN/CSplitButton::SetDropDownMenu", "AFXCMN/CSplitButton::OnDropDown"] helpviewer_keywords: ["CSplitButton [MFC], CSplitButton", "CSplitButton [MFC], Create", "CSplitButton [MFC], SetDropDownMenu", "CSplitButton [MFC], OnDropDown"] -ms.assetid: 6844d0a9-6408-4e44-9b5f-57628ed8bad6 --- # CSplitButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CSplitButton` class represents a split button control. The split button control performs a default behavior when a user clicks the main part of the button, and displays a drop-down menu when a user clicks the drop-down arrow of the button. ## Syntax diff --git a/docs/mfc/reference/csplitterwnd-class.md b/docs/mfc/reference/csplitterwnd-class.md index da72f6e13bb..f84ab903751 100644 --- a/docs/mfc/reference/csplitterwnd-class.md +++ b/docs/mfc/reference/csplitterwnd-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CSplitterWnd [MFC], CSplitterWnd", "CSplitterWnd [MFC], A --- # `CSplitterWnd` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of a splitter window, which is a window that contains multiple panes. ## Syntax diff --git a/docs/mfc/reference/csplitterwndex-class.md b/docs/mfc/reference/csplitterwndex-class.md index 58ba5c4a4b3..187fb96b481 100644 --- a/docs/mfc/reference/csplitterwndex-class.md +++ b/docs/mfc/reference/csplitterwndex-class.md @@ -4,10 +4,12 @@ title: "CSplitterWndEx Class" ms.date: "11/04/2016" f1_keywords: ["CSplitterWndEx", "AFXSPLITTERWNDEX/CSplitterWndEx", "AFXSPLITTERWNDEX/CSplitterWndEx::OnDrawSplitter"] helpviewer_keywords: ["CSplitterWndEx [MFC], OnDrawSplitter"] -ms.assetid: 33e5eef3-05e1-4a07-a968-bf9207ce8598 --- # CSplitterWndEx Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a customized splitter window. ## Syntax diff --git a/docs/mfc/reference/cstatic-class.md b/docs/mfc/reference/cstatic-class.md index bce8cd9cc13..00eb9afd387 100644 --- a/docs/mfc/reference/cstatic-class.md +++ b/docs/mfc/reference/cstatic-class.md @@ -4,10 +4,12 @@ title: "CStatic Class" ms.date: "11/04/2016" f1_keywords: ["CStatic", "AFXWIN/CStatic", "AFXWIN/CStatic::CStatic", "AFXWIN/CStatic::Create", "AFXWIN/CStatic::DrawItem", "AFXWIN/CStatic::GetBitmap", "AFXWIN/CStatic::GetCursor", "AFXWIN/CStatic::GetEnhMetaFile", "AFXWIN/CStatic::GetIcon", "AFXWIN/CStatic::SetBitmap", "AFXWIN/CStatic::SetCursor", "AFXWIN/CStatic::SetEnhMetaFile", "AFXWIN/CStatic::SetIcon"] helpviewer_keywords: ["CStatic [MFC], CStatic", "CStatic [MFC], Create", "CStatic [MFC], DrawItem", "CStatic [MFC], GetBitmap", "CStatic [MFC], GetCursor", "CStatic [MFC], GetEnhMetaFile", "CStatic [MFC], GetIcon", "CStatic [MFC], SetBitmap", "CStatic [MFC], SetCursor", "CStatic [MFC], SetEnhMetaFile", "CStatic [MFC], SetIcon"] -ms.assetid: e7c94cd9-5ebd-428a-aa30-b3e51f8efb95 --- # `CStatic` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of a Windows static control. ## Syntax diff --git a/docs/mfc/reference/cstatusbar-class.md b/docs/mfc/reference/cstatusbar-class.md index ccbf9e66028..c6c9f11a58f 100644 --- a/docs/mfc/reference/cstatusbar-class.md +++ b/docs/mfc/reference/cstatusbar-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CStatusBar [MFC], CStatusBar", "CStatusBar [MFC], Command --- # CStatusBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A control bar with a row of text output panes, or "indicators." ## Syntax diff --git a/docs/mfc/reference/cstatusbarctrl-class.md b/docs/mfc/reference/cstatusbarctrl-class.md index a8e884c9e38..aed31b1090e 100644 --- a/docs/mfc/reference/cstatusbarctrl-class.md +++ b/docs/mfc/reference/cstatusbarctrl-class.md @@ -4,10 +4,12 @@ title: "CStatusBarCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CStatusBarCtrl", "AFXCMN/CStatusBarCtrl", "AFXCMN/CStatusBarCtrl::CStatusBarCtrl", "AFXCMN/CStatusBarCtrl::Create", "AFXCMN/CStatusBarCtrl::CreateEx", "AFXCMN/CStatusBarCtrl::DrawItem", "AFXCMN/CStatusBarCtrl::GetBorders", "AFXCMN/CStatusBarCtrl::GetIcon", "AFXCMN/CStatusBarCtrl::GetParts", "AFXCMN/CStatusBarCtrl::GetRect", "AFXCMN/CStatusBarCtrl::GetText", "AFXCMN/CStatusBarCtrl::GetTextLength", "AFXCMN/CStatusBarCtrl::GetTipText", "AFXCMN/CStatusBarCtrl::IsSimple", "AFXCMN/CStatusBarCtrl::SetBkColor", "AFXCMN/CStatusBarCtrl::SetIcon", "AFXCMN/CStatusBarCtrl::SetMinHeight", "AFXCMN/CStatusBarCtrl::SetParts", "AFXCMN/CStatusBarCtrl::SetSimple", "AFXCMN/CStatusBarCtrl::SetText", "AFXCMN/CStatusBarCtrl::SetTipText"] helpviewer_keywords: ["CStatusBarCtrl [MFC], CStatusBarCtrl", "CStatusBarCtrl [MFC], Create", "CStatusBarCtrl [MFC], CreateEx", "CStatusBarCtrl [MFC], DrawItem", "CStatusBarCtrl [MFC], GetBorders", "CStatusBarCtrl [MFC], GetIcon", "CStatusBarCtrl [MFC], GetParts", "CStatusBarCtrl [MFC], GetRect", "CStatusBarCtrl [MFC], GetText", "CStatusBarCtrl [MFC], GetTextLength", "CStatusBarCtrl [MFC], GetTipText", "CStatusBarCtrl [MFC], IsSimple", "CStatusBarCtrl [MFC], SetBkColor", "CStatusBarCtrl [MFC], SetIcon", "CStatusBarCtrl [MFC], SetMinHeight", "CStatusBarCtrl [MFC], SetParts", "CStatusBarCtrl [MFC], SetSimple", "CStatusBarCtrl [MFC], SetText", "CStatusBarCtrl [MFC], SetTipText"] -ms.assetid: 8504ad38-7b91-4746-aede-ac98886eb47b --- # CStatusBarCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the Windows common status bar control. ## Syntax diff --git a/docs/mfc/reference/cstdiofile-class.md b/docs/mfc/reference/cstdiofile-class.md index fd2ff46ab5a..5cc9c21d9d5 100644 --- a/docs/mfc/reference/cstdiofile-class.md +++ b/docs/mfc/reference/cstdiofile-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CStdioFile [MFC], CStdioFile", "CStdioFile [MFC], Open", --- # `CStdioFile` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a C run-time stream file as opened by the run-time function [`fopen`](../../c-runtime-library/reference/fopen-wfopen.md). ## Syntax diff --git a/docs/mfc/reference/cstring-formatting-and-message-box-display.md b/docs/mfc/reference/cstring-formatting-and-message-box-display.md index 51932cc807a..9a02bc6164b 100644 --- a/docs/mfc/reference/cstring-formatting-and-message-box-display.md +++ b/docs/mfc/reference/cstring-formatting-and-message-box-display.md @@ -3,10 +3,12 @@ description: "Learn more about: CString Formatting and Message-Box Display" title: "CString Formatting and Message-Box Display" ms.date: "11/04/2016" helpviewer_keywords: ["CString objects [MFC], formatting and message boxes"] -ms.assetid: d1068cf4-9cc5-4952-b9e7-d612c53cbc28 --- # `CString` Formatting and Message-Box Display +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A number of functions are provided to format and parse `CString` objects. You can use these functions whenever you have to manipulate `CString` objects, but they are particularly useful for formatting strings that will appear in message-box text. This group of functions also includes a global routine for displaying a message box. diff --git a/docs/mfc/reference/cstringarray-class.md b/docs/mfc/reference/cstringarray-class.md index f8d656bcbbf..89df9c7e97b 100644 --- a/docs/mfc/reference/cstringarray-class.md +++ b/docs/mfc/reference/cstringarray-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CStringArray [MFC], CStringArray", "CStringArray [MFC], A --- # `CStringArray` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports arrays of [`CString`](../../atl-mfc-shared/using-cstring.md) objects. ## Syntax diff --git a/docs/mfc/reference/cstringlist-class.md b/docs/mfc/reference/cstringlist-class.md index 06dfe5f2c01..323ca43963e 100644 --- a/docs/mfc/reference/cstringlist-class.md +++ b/docs/mfc/reference/cstringlist-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CStringList [MFC], CStringList", "CStringList [MFC], AddH --- # `CStringList` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports lists of `CString` objects. ## Syntax diff --git a/docs/mfc/reference/csyncobject-class.md b/docs/mfc/reference/csyncobject-class.md index 535d9aaaa81..3ba190fb667 100644 --- a/docs/mfc/reference/csyncobject-class.md +++ b/docs/mfc/reference/csyncobject-class.md @@ -4,10 +4,12 @@ title: "CSyncObject Class" ms.date: "11/04/2016" f1_keywords: ["CSyncObject", "AFXMT/CSyncObject", "AFXMT/CSyncObject::CSyncObject", "AFXMT/CSyncObject::Lock", "AFXMT/CSyncObject::Unlock", "AFXMT/CSyncObject::m_hObject"] helpviewer_keywords: ["CSyncObject [MFC], CSyncObject", "CSyncObject [MFC], Lock", "CSyncObject [MFC], Unlock", "CSyncObject [MFC], m_hObject"] -ms.assetid: c62ea6eb-a17b-4e01-aed4-321fc435a5f4 --- # CSyncObject Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A pure virtual class that provides functionality common to the synchronization objects in Win32. ## Syntax diff --git a/docs/mfc/reference/ctabbedpane-class.md b/docs/mfc/reference/ctabbedpane-class.md index f6b051754f6..939efc4a2c1 100644 --- a/docs/mfc/reference/ctabbedpane-class.md +++ b/docs/mfc/reference/ctabbedpane-class.md @@ -4,10 +4,12 @@ title: "CTabbedPane Class" ms.date: "11/04/2016" f1_keywords: ["CTabbedPane", "AFXTABBEDPANE/CTabbedPane", "AFXTABBEDPANE/CTabbedPane::DetachPane", "AFXTABBEDPANE/CTabbedPane::EnableTabAutoColor", "AFXTABBEDPANE/CTabbedPane::FloatTab", "AFXTABBEDPANE/CTabbedPane::GetTabArea", "AFXTABBEDPANE/CTabbedPane::GetTabWnd", "AFXTABBEDPANE/CTabbedPane::HasAutoHideMode", "AFXTABBEDPANE/CTabbedPane::IsTabLocationBottom", "AFXTABBEDPANE/CTabbedPane::ResetTabs", "AFXTABBEDPANE/CTabbedPane::SetTabAutoColors", "AFXTABBEDPANE/CTabbedPane::m_bTabsAlwaysTop", "AFXTABBEDPANE/CTabbedPane::m_pTabWndRTC"] helpviewer_keywords: ["CTabbedPane [MFC], DetachPane", "CTabbedPane [MFC], EnableTabAutoColor", "CTabbedPane [MFC], FloatTab", "CTabbedPane [MFC], GetTabArea", "CTabbedPane [MFC], GetTabWnd", "CTabbedPane [MFC], HasAutoHideMode", "CTabbedPane [MFC], IsTabLocationBottom", "CTabbedPane [MFC], ResetTabs", "CTabbedPane [MFC], SetTabAutoColors", "CTabbedPane [MFC], m_bTabsAlwaysTop", "CTabbedPane [MFC], m_pTabWndRTC"] -ms.assetid: f4dc5215-b789-4f2d-8c62-477aceda3578 --- # CTabbedPane Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the functionality of a pane with detachable tabs. or more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/ctabctrl-class.md b/docs/mfc/reference/ctabctrl-class.md index 1a2461f10b1..8e2ee485435 100644 --- a/docs/mfc/reference/ctabctrl-class.md +++ b/docs/mfc/reference/ctabctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CTabCtrl [MFC], CTabCtrl", "CTabCtrl [MFC], AdjustRect", --- # `CTabCtrl` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the Windows common tab control. ## Syntax diff --git a/docs/mfc/reference/ctabview-class.md b/docs/mfc/reference/ctabview-class.md index 82983a5e29a..2a38b3edd1b 100644 --- a/docs/mfc/reference/ctabview-class.md +++ b/docs/mfc/reference/ctabview-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CTabView [MFC], AddView", "CTabView [MFC], FindTab", "CTa --- # CTabView Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CTabView` class simplifies the use of the tab control class ( [CMFCTabCtrl](../../mfc/reference/ctabview-class.md)) in applications that use MFC's document/view architecture. ## Syntax diff --git a/docs/mfc/reference/ctaskdialog-class.md b/docs/mfc/reference/ctaskdialog-class.md index 2f1d87a8197..c7d5d84e1a4 100644 --- a/docs/mfc/reference/ctaskdialog-class.md +++ b/docs/mfc/reference/ctaskdialog-class.md @@ -4,10 +4,12 @@ title: "CTaskDialog Class" ms.date: "11/19/2018" f1_keywords: ["CTaskDialog", "AFXTASKDIALOG/CTaskDialog", "AFXTASKDIALOG/CTaskDialog::CTaskDialog", "AFXTASKDIALOG/CTaskDialog::AddCommandControl", "AFXTASKDIALOG/CTaskDialog::AddRadioButton", "AFXTASKDIALOG/CTaskDialog::ClickCommandControl", "AFXTASKDIALOG/CTaskDialog::ClickRadioButton", "AFXTASKDIALOG/CTaskDialog::DoModal", "AFXTASKDIALOG/CTaskDialog::GetCommonButtonCount", "AFXTASKDIALOG/CTaskDialog::GetCommonButtonFlag", "AFXTASKDIALOG/CTaskDialog::GetCommonButtonId", "AFXTASKDIALOG/CTaskDialog::GetOptions", "AFXTASKDIALOG/CTaskDialog::GetSelectedCommandControlID", "AFXTASKDIALOG/CTaskDialog::GetSelectedRadioButtonID", "AFXTASKDIALOG/CTaskDialog::GetVerificationCheckboxState", "AFXTASKDIALOG/CTaskDialog::IsCommandControlEnabled", "AFXTASKDIALOG/CTaskDialog::IsRadioButtonEnabled", "AFXTASKDIALOG/CTaskDialog::IsSupported", "AFXTASKDIALOG/CTaskDialog::LoadCommandControls", "AFXTASKDIALOG/CTaskDialog::LoadRadioButtons", "AFXTASKDIALOG/CTaskDialog::NavigateTo", "AFXTASKDIALOG/CTaskDialog::OnCommandControlClick", "AFXTASKDIALOG/CTaskDialog::OnCreate", "AFXTASKDIALOG/CTaskDialog::OnDestroy", "AFXTASKDIALOG/CTaskDialog::OnExpandButtonClick", "AFXTASKDIALOG/CTaskDialog::OnHelp", "AFXTASKDIALOG/CTaskDialog::OnHyperlinkClick", "AFXTASKDIALOG/CTaskDialog::OnInit", "AFXTASKDIALOG/CTaskDialog::OnNavigatePage", "AFXTASKDIALOG/CTaskDialog::OnRadioButtonClick", "AFXTASKDIALOG/CTaskDialog::OnTimer", "AFXTASKDIALOG/CTaskDialog::OnVerificationCheckboxClick", "AFXTASKDIALOG/CTaskDialog::RemoveAllCommandControls", "AFXTASKDIALOG/CTaskDialog::RemoveAllRadioButtons", "AFXTASKDIALOG/CTaskDialog::SetCommandControlOptions", "AFXTASKDIALOG/CTaskDialog::SetCommonButtonOptions", "AFXTASKDIALOG/CTaskDialog::SetCommonButtons", "AFXTASKDIALOG/CTaskDialog::SetContent", "AFXTASKDIALOG/CTaskDialog::SetDefaultCommandControl", "AFXTASKDIALOG/CTaskDialog::SetDefaultRadioButton", "AFXTASKDIALOG/CTaskDialog::SetDialogWidth", "AFXTASKDIALOG/CTaskDialog::SetExpansionArea", "AFXTASKDIALOG/CTaskDialog::SetFooterIcon", "AFXTASKDIALOG/CTaskDialog::SetFooterText", "AFXTASKDIALOG/CTaskDialog::SetMainIcon", "AFXTASKDIALOG/CTaskDialog::SetMainInstruction", "AFXTASKDIALOG/CTaskDialog::SetOptions", "AFXTASKDIALOG/CTaskDialog::SetProgressBarMarquee", "AFXTASKDIALOG/CTaskDialog::SetProgressBarPosition", "AFXTASKDIALOG/CTaskDialog::SetProgressBarRange", "AFXTASKDIALOG/CTaskDialog::SetProgressBarState", "AFXTASKDIALOG/CTaskDialog::SetRadioButtonOptions", "AFXTASKDIALOG/CTaskDialog::SetVerificationCheckbox", "AFXTASKDIALOG/CTaskDialog::SetVerificationCheckboxText", "AFXTASKDIALOG/CTaskDialog::SetWindowTitle", "AFXTASKDIALOG/CTaskDialog::ShowDialog", "AFXTASKDIALOG/CTaskDialog::TaskDialogCallback"] helpviewer_keywords: ["CTaskDialog [MFC], CTaskDialog", "CTaskDialog [MFC], AddCommandControl", "CTaskDialog [MFC], AddRadioButton", "CTaskDialog [MFC], ClickCommandControl", "CTaskDialog [MFC], ClickRadioButton", "CTaskDialog [MFC], DoModal", "CTaskDialog [MFC], GetCommonButtonCount", "CTaskDialog [MFC], GetCommonButtonFlag", "CTaskDialog [MFC], GetCommonButtonId", "CTaskDialog [MFC], GetOptions", "CTaskDialog [MFC], GetSelectedCommandControlID", "CTaskDialog [MFC], GetSelectedRadioButtonID", "CTaskDialog [MFC], GetVerificationCheckboxState", "CTaskDialog [MFC], IsCommandControlEnabled", "CTaskDialog [MFC], IsRadioButtonEnabled", "CTaskDialog [MFC], IsSupported", "CTaskDialog [MFC], LoadCommandControls", "CTaskDialog [MFC], LoadRadioButtons", "CTaskDialog [MFC], NavigateTo", "CTaskDialog [MFC], OnCommandControlClick", "CTaskDialog [MFC], OnCreate", "CTaskDialog [MFC], OnDestroy", "CTaskDialog [MFC], OnExpandButtonClick", "CTaskDialog [MFC], OnHelp", "CTaskDialog [MFC], OnHyperlinkClick", "CTaskDialog [MFC], OnInit", "CTaskDialog [MFC], OnNavigatePage", "CTaskDialog [MFC], OnRadioButtonClick", "CTaskDialog [MFC], OnTimer", "CTaskDialog [MFC], OnVerificationCheckboxClick", "CTaskDialog [MFC], RemoveAllCommandControls", "CTaskDialog [MFC], RemoveAllRadioButtons", "CTaskDialog [MFC], SetCommandControlOptions", "CTaskDialog [MFC], SetCommonButtonOptions", "CTaskDialog [MFC], SetCommonButtons", "CTaskDialog [MFC], SetContent", "CTaskDialog [MFC], SetDefaultCommandControl", "CTaskDialog [MFC], SetDefaultRadioButton", "CTaskDialog [MFC], SetDialogWidth", "CTaskDialog [MFC], SetExpansionArea", "CTaskDialog [MFC], SetFooterIcon", "CTaskDialog [MFC], SetFooterText", "CTaskDialog [MFC], SetMainIcon", "CTaskDialog [MFC], SetMainInstruction", "CTaskDialog [MFC], SetOptions", "CTaskDialog [MFC], SetProgressBarMarquee", "CTaskDialog [MFC], SetProgressBarPosition", "CTaskDialog [MFC], SetProgressBarRange", "CTaskDialog [MFC], SetProgressBarState", "CTaskDialog [MFC], SetRadioButtonOptions", "CTaskDialog [MFC], SetVerificationCheckbox", "CTaskDialog [MFC], SetVerificationCheckboxText", "CTaskDialog [MFC], SetWindowTitle", "CTaskDialog [MFC], ShowDialog", "CTaskDialog [MFC], TaskDialogCallback"] -ms.assetid: 1991ec98-ae56-4483-958b-233809c8c559 --- # CTaskDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A pop-up dialog box that functions like a message box but can display additional information to the user. The `CTaskDialog` also includes functionality for gathering information from the user. ## Syntax diff --git a/docs/mfc/reference/ctoolbar-class.md b/docs/mfc/reference/ctoolbar-class.md index 33cab610164..0374063757d 100644 --- a/docs/mfc/reference/ctoolbar-class.md +++ b/docs/mfc/reference/ctoolbar-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CToolBar [MFC], CToolBar", "CToolBar [MFC], CommandToInde --- # `CToolBar` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Control bars that have a row of bitmapped buttons and optional separators. ## Syntax diff --git a/docs/mfc/reference/ctoolbarctrl-class.md b/docs/mfc/reference/ctoolbarctrl-class.md index e213031818b..b4ff4996576 100644 --- a/docs/mfc/reference/ctoolbarctrl-class.md +++ b/docs/mfc/reference/ctoolbarctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CToolBarCtrl [MFC], CToolBarCtrl", "CToolBarCtrl [MFC], A --- # `CToolBarCtrl` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the Windows toolbar common control. ## Syntax diff --git a/docs/mfc/reference/ctooltipctrl-class.md b/docs/mfc/reference/ctooltipctrl-class.md index ceaf49a6f03..258feb52633 100644 --- a/docs/mfc/reference/ctooltipctrl-class.md +++ b/docs/mfc/reference/ctooltipctrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CToolTipCtrl [MFC], CToolTipCtrl", "CToolTipCtrl [MFC], A --- # `CToolTipCtrl` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates the functionality of a "tooltip control," a small pop-up window that displays a single line of text describing the purpose of a tool in an application. ## Syntax diff --git a/docs/mfc/reference/ctooltipmanager-class.md b/docs/mfc/reference/ctooltipmanager-class.md index 4a495081f92..a8ed2b9ada1 100644 --- a/docs/mfc/reference/ctooltipmanager-class.md +++ b/docs/mfc/reference/ctooltipmanager-class.md @@ -4,10 +4,12 @@ title: "CTooltipManager Class" ms.date: "11/04/2016" f1_keywords: ["CTooltipManager", "AFXTOOLTIPMANAGER/CTooltipManager", "AFXTOOLTIPMANAGER/CTooltipManager::CreateToolTip", "AFXTOOLTIPMANAGER/CTooltipManager::DeleteToolTip", "AFXTOOLTIPMANAGER/CTooltipManager::SetTooltipParams", "AFXTOOLTIPMANAGER/CTooltipManager::SetTooltipText", "AFXTOOLTIPMANAGER/CTooltipManager::UpdateTooltips"] helpviewer_keywords: ["CTooltipManager [MFC], CreateToolTip", "CTooltipManager [MFC], DeleteToolTip", "CTooltipManager [MFC], SetTooltipParams", "CTooltipManager [MFC], SetTooltipText", "CTooltipManager [MFC], UpdateTooltips"] -ms.assetid: c71779d7-8b6e-47ef-8500-d4552731fe86 --- # CTooltipManager Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Maintains runtime information about tooltips. The `CTooltipManager` class is instantiated one time per application. ## Syntax diff --git a/docs/mfc/reference/ctreectrl-class.md b/docs/mfc/reference/ctreectrl-class.md index 81ce2a29cb7..f3679f9e9bc 100644 --- a/docs/mfc/reference/ctreectrl-class.md +++ b/docs/mfc/reference/ctreectrl-class.md @@ -4,10 +4,12 @@ title: "CTreeCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CTreeCtrl", "AFXCMN/CTreeCtrl", "AFXCMN/CTreeCtrl::CTreeCtrl", "AFXCMN/CTreeCtrl::Create", "AFXCMN/CTreeCtrl::CreateDragImage", "AFXCMN/CTreeCtrl::CreateEx", "AFXCMN/CTreeCtrl::DeleteAllItems", "AFXCMN/CTreeCtrl::DeleteItem", "AFXCMN/CTreeCtrl::EditLabel", "AFXCMN/CTreeCtrl::EndEditLabelNow", "AFXCMN/CTreeCtrl::EnsureVisible", "AFXCMN/CTreeCtrl::Expand", "AFXCMN/CTreeCtrl::GetBkColor", "AFXCMN/CTreeCtrl::GetCheck", "AFXCMN/CTreeCtrl::GetChildItem", "AFXCMN/CTreeCtrl::GetCount", "AFXCMN/CTreeCtrl::GetDropHilightItem", "AFXCMN/CTreeCtrl::GetEditControl", "AFXCMN/CTreeCtrl::GetExtendedStyle", "AFXCMN/CTreeCtrl::GetFirstVisibleItem", "AFXCMN/CTreeCtrl::GetImageList", "AFXCMN/CTreeCtrl::GetIndent", "AFXCMN/CTreeCtrl::GetInsertMarkColor", "AFXCMN/CTreeCtrl::GetItem", "AFXCMN/CTreeCtrl::GetItemData", "AFXCMN/CTreeCtrl::GetItemExpandedImageIndex", "AFXCMN/CTreeCtrl::GetItemHeight", "AFXCMN/CTreeCtrl::GetItemImage", "AFXCMN/CTreeCtrl::GetItemPartRect", "AFXCMN/CTreeCtrl::GetItemRect", "AFXCMN/CTreeCtrl::GetItemState", "AFXCMN/CTreeCtrl::GetItemStateEx", "AFXCMN/CTreeCtrl::GetItemText", "AFXCMN/CTreeCtrl::GetLastVisibleItem", "AFXCMN/CTreeCtrl::GetLineColor", "AFXCMN/CTreeCtrl::GetNextItem", "AFXCMN/CTreeCtrl::GetNextSiblingItem", "AFXCMN/CTreeCtrl::GetNextVisibleItem", "AFXCMN/CTreeCtrl::GetParentItem", "AFXCMN/CTreeCtrl::GetPrevSiblingItem", "AFXCMN/CTreeCtrl::GetPrevVisibleItem", "AFXCMN/CTreeCtrl::GetRootItem", "AFXCMN/CTreeCtrl::GetScrollTime", "AFXCMN/CTreeCtrl::GetSelectedCount", "AFXCMN/CTreeCtrl::GetSelectedItem", "AFXCMN/CTreeCtrl::GetTextColor", "AFXCMN/CTreeCtrl::GetToolTips", "AFXCMN/CTreeCtrl::GetVisibleCount", "AFXCMN/CTreeCtrl::HitTest", "AFXCMN/CTreeCtrl::InsertItem", "AFXCMN/CTreeCtrl::ItemHasChildren", "AFXCMN/CTreeCtrl::MapAccIdToItem", "AFXCMN/CTreeCtrl::MapItemToAccID", "AFXCMN/CTreeCtrl::Select", "AFXCMN/CTreeCtrl::SelectDropTarget", "AFXCMN/CTreeCtrl::SelectItem", "AFXCMN/CTreeCtrl::SelectSetFirstVisible", "AFXCMN/CTreeCtrl::SetAutoscrollInfo", "AFXCMN/CTreeCtrl::SetBkColor", "AFXCMN/CTreeCtrl::SetCheck", "AFXCMN/CTreeCtrl::SetExtendedStyle", "AFXCMN/CTreeCtrl::SetImageList", "AFXCMN/CTreeCtrl::SetIndent", "AFXCMN/CTreeCtrl::SetInsertMark", "AFXCMN/CTreeCtrl::SetInsertMarkColor", "AFXCMN/CTreeCtrl::SetItem", "AFXCMN/CTreeCtrl::SetItemData", "AFXCMN/CTreeCtrl::SetItemExpandedImageIndex", "AFXCMN/CTreeCtrl::SetItemHeight", "AFXCMN/CTreeCtrl::SetItemImage", "AFXCMN/CTreeCtrl::SetItemState", "AFXCMN/CTreeCtrl::SetItemStateEx", "AFXCMN/CTreeCtrl::SetItemText", "AFXCMN/CTreeCtrl::SetLineColor", "AFXCMN/CTreeCtrl::SetScrollTime", "AFXCMN/CTreeCtrl::SetTextColor", "AFXCMN/CTreeCtrl::SetToolTips", "AFXCMN/CTreeCtrl::ShowInfoTip", "AFXCMN/CTreeCtrl::SortChildren", "AFXCMN/CTreeCtrl::SortChildrenCB"] helpviewer_keywords: ["CTreeCtrl [MFC], CTreeCtrl", "CTreeCtrl [MFC], Create", "CTreeCtrl [MFC], CreateDragImage", "CTreeCtrl [MFC], CreateEx", "CTreeCtrl [MFC], DeleteAllItems", "CTreeCtrl [MFC], DeleteItem", "CTreeCtrl [MFC], EditLabel", "CTreeCtrl [MFC], EndEditLabelNow", "CTreeCtrl [MFC], EnsureVisible", "CTreeCtrl [MFC], Expand", "CTreeCtrl [MFC], GetBkColor", "CTreeCtrl [MFC], GetCheck", "CTreeCtrl [MFC], GetChildItem", "CTreeCtrl [MFC], GetCount", "CTreeCtrl [MFC], GetDropHilightItem", "CTreeCtrl [MFC], GetEditControl", "CTreeCtrl [MFC], GetExtendedStyle", "CTreeCtrl [MFC], GetFirstVisibleItem", "CTreeCtrl [MFC], GetImageList", "CTreeCtrl [MFC], GetIndent", "CTreeCtrl [MFC], GetInsertMarkColor", "CTreeCtrl [MFC], GetItem", "CTreeCtrl [MFC], GetItemData", "CTreeCtrl [MFC], GetItemExpandedImageIndex", "CTreeCtrl [MFC], GetItemHeight", "CTreeCtrl [MFC], GetItemImage", "CTreeCtrl [MFC], GetItemPartRect", "CTreeCtrl [MFC], GetItemRect", "CTreeCtrl [MFC], GetItemState", "CTreeCtrl [MFC], GetItemStateEx", "CTreeCtrl [MFC], GetItemText", "CTreeCtrl [MFC], GetLastVisibleItem", "CTreeCtrl [MFC], GetLineColor", "CTreeCtrl [MFC], GetNextItem", "CTreeCtrl [MFC], GetNextSiblingItem", "CTreeCtrl [MFC], GetNextVisibleItem", "CTreeCtrl [MFC], GetParentItem", "CTreeCtrl [MFC], GetPrevSiblingItem", "CTreeCtrl [MFC], GetPrevVisibleItem", "CTreeCtrl [MFC], GetRootItem", "CTreeCtrl [MFC], GetScrollTime", "CTreeCtrl [MFC], GetSelectedCount", "CTreeCtrl [MFC], GetSelectedItem", "CTreeCtrl [MFC], GetTextColor", "CTreeCtrl [MFC], GetToolTips", "CTreeCtrl [MFC], GetVisibleCount", "CTreeCtrl [MFC], HitTest", "CTreeCtrl [MFC], InsertItem", "CTreeCtrl [MFC], ItemHasChildren", "CTreeCtrl [MFC], MapAccIdToItem", "CTreeCtrl [MFC], MapItemToAccID", "CTreeCtrl [MFC], Select", "CTreeCtrl [MFC], SelectDropTarget", "CTreeCtrl [MFC], SelectItem", "CTreeCtrl [MFC], SelectSetFirstVisible", "CTreeCtrl [MFC], SetAutoscrollInfo", "CTreeCtrl [MFC], SetBkColor", "CTreeCtrl [MFC], SetCheck", "CTreeCtrl [MFC], SetExtendedStyle", "CTreeCtrl [MFC], SetImageList", "CTreeCtrl [MFC], SetIndent", "CTreeCtrl [MFC], SetInsertMark", "CTreeCtrl [MFC], SetInsertMarkColor", "CTreeCtrl [MFC], SetItem", "CTreeCtrl [MFC], SetItemData", "CTreeCtrl [MFC], SetItemExpandedImageIndex", "CTreeCtrl [MFC], SetItemHeight", "CTreeCtrl [MFC], SetItemImage", "CTreeCtrl [MFC], SetItemState", "CTreeCtrl [MFC], SetItemStateEx", "CTreeCtrl [MFC], SetItemText", "CTreeCtrl [MFC], SetLineColor", "CTreeCtrl [MFC], SetScrollTime", "CTreeCtrl [MFC], SetTextColor", "CTreeCtrl [MFC], SetToolTips", "CTreeCtrl [MFC], ShowInfoTip", "CTreeCtrl [MFC], SortChildren", "CTreeCtrl [MFC], SortChildrenCB"] -ms.assetid: 96e20031-6161-4143-8c12-8d1816c66d90 --- # `CTreeCtrl` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the Windows common tree view control. ## Syntax diff --git a/docs/mfc/reference/ctreeview-class.md b/docs/mfc/reference/ctreeview-class.md index 7511efdd06c..4419e23af0a 100644 --- a/docs/mfc/reference/ctreeview-class.md +++ b/docs/mfc/reference/ctreeview-class.md @@ -4,10 +4,12 @@ title: "CTreeView Class" ms.date: "11/04/2016" f1_keywords: ["CTreeView", "AFXCVIEW/CTreeView", "AFXCVIEW/CTreeView::CTreeView", "AFXCVIEW/CTreeView::GetTreeCtrl"] helpviewer_keywords: ["CTreeView [MFC], CTreeView", "CTreeView [MFC], GetTreeCtrl"] -ms.assetid: 5df583a6-d69f-42ca-9d8d-57e04558afff --- # CTreeView Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Simplifies use of the tree control and of [CTreeCtrl](../../mfc/reference/ctreectrl-class.md), the class that encapsulates tree-control functionality, with MFC's document-view architecture. ## Syntax diff --git a/docs/mfc/reference/ctypedptrarray-class.md b/docs/mfc/reference/ctypedptrarray-class.md index db37f7ca4af..0ece714e621 100644 --- a/docs/mfc/reference/ctypedptrarray-class.md +++ b/docs/mfc/reference/ctypedptrarray-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CTypedPtrArray [MFC], Add", "CTypedPtrArray [MFC], Append --- # CTypedPtrArray Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides a type-safe "wrapper" for objects of class `CPtrArray` or `CObArray`. ## Syntax diff --git a/docs/mfc/reference/ctypedptrlist-class.md b/docs/mfc/reference/ctypedptrlist-class.md index d06daa00f41..0ffa8e30f0f 100644 --- a/docs/mfc/reference/ctypedptrlist-class.md +++ b/docs/mfc/reference/ctypedptrlist-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CTypedPtrList [MFC], AddHead", "CTypedPtrList [MFC], AddT --- # CTypedPtrList Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides a type-safe "wrapper" for objects of class `CPtrList`. ## Syntax From 9deec15e164e455d7116586577635ce4150e283f Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 20 Feb 2026 12:44:46 -0800 Subject: [PATCH 307/619] Batch 1: update files (#6258) --- docs/atl/recommendations-for-choosing-between-atl-and-mfc.md | 4 +++- docs/data/data-access-programming-mfc-atl.md | 4 +++- docs/mfc/a-portrait-of-the-document-view-architecture.md | 4 +++- docs/mfc/accessing-all-members-of-a-collection.md | 4 +++- docs/mfc/accessing-file-status.md | 4 +++- docs/mfc/accessing-run-time-class-information.md | 4 +++- docs/mfc/accessing-the-embedded-month-calendar-control.md | 4 +++- docs/mfc/activation-cpp.md | 4 +++- docs/mfc/activation-verbs.md | 3 +++ docs/mfc/active-document-classes.md | 4 +++- docs/mfc/active-document-containers.md | 4 +++- docs/mfc/active-document-containment.md | 4 +++- docs/mfc/active-document-servers.md | 4 +++- docs/mfc/active-documents.md | 4 +++- docs/mfc/active-technology-on-the-internet.md | 4 +++- ...ners-connecting-an-activex-control-to-a-member-variable.md | 4 +++- ...trol-containers-handling-events-from-an-activex-control.md | 4 +++- ...ontainers-manually-enabling-activex-control-containment.md | 4 +++- ...rol-containers-using-controls-in-a-non-dialog-container.md | 4 +++- ...rol-containers-viewing-and-modifying-control-properties.md | 4 +++- docs/mfc/activex-control-containers.md | 4 +++- docs/mfc/activex-controls-on-the-internet.md | 4 +++- docs/mfc/activex-controls.md | 4 +++- docs/mfc/adding-columns-to-the-control-report-view.md | 4 +++- docs/mfc/adding-controls-by-hand.md | 4 +++- docs/mfc/adding-controls-to-a-property-sheet.md | 4 +++- docs/mfc/adding-items-to-the-control.md | 4 +++- docs/mfc/adding-items-to-the-header-control.md | 4 +++- docs/mfc/adding-multiple-views-to-a-single-document.md | 4 +++- docs/mfc/adding-tabs-to-a-tab-control.md | 4 +++- docs/mfc/advantages-of-the-document-view-architecture.md | 4 +++- docs/mfc/allocating-and-deallocating-window-memory.md | 4 +++- docs/mfc/allocating-gdi-resources.md | 4 +++- docs/mfc/alternatives-to-the-document-view-architecture.md | 4 +++- docs/mfc/application-and-thread-support-classes.md | 4 +++- docs/mfc/application-design-choices.md | 4 +++- docs/mfc/application-framework.md | 4 +++- docs/mfc/array-list-and-map-classes.md | 4 +++- docs/mfc/asynchronous-monikers-on-the-internet.md | 4 +++- docs/mfc/automation-clients-using-type-libraries.md | 4 +++- docs/mfc/automation-clients.md | 4 +++- docs/mfc/automation-servers-object-lifetime-issues.md | 4 +++- docs/mfc/automation-servers.md | 4 +++- docs/mfc/automation.md | 4 +++- docs/mfc/bottomless-rich-edit-controls.md | 4 +++- .../build-requirements-for-windows-vista-common-controls.md | 4 +++- docs/mfc/building-on-the-framework.md | 4 +++- docs/mfc/bypassing-the-serialization-mechanism.md | 4 +++- docs/mfc/callback-items-and-the-callback-mask.md | 4 +++- docs/mfc/changing-list-control-styles.md | 4 +++- docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md | 4 +++- docs/mfc/character-formatting-in-rich-edit-controls.md | 4 +++- docs/mfc/class-library-overview.md | 4 +++- docs/mfc/classes-related-to-rich-edit-controls.md | 4 +++- docs/mfc/cleaning-up-documents-and-views.md | 4 +++- docs/mfc/clipboard-adding-other-formats.md | 4 +++- docs/mfc/clipboard-copying-and-pasting-data.md | 4 +++- docs/mfc/clipboard-operations-in-rich-edit-controls.md | 4 +++- docs/mfc/clipboard-using-the-ole-clipboard-mechanism.md | 4 +++- docs/mfc/clipboard-using-the-windows-clipboard.md | 4 +++- docs/mfc/clipboard-when-to-use-each-clipboard-mechanism.md | 4 +++- docs/mfc/clipboard.md | 4 +++- docs/mfc/closing-files.md | 4 +++- docs/mfc/closing-the-dialog-box.md | 4 +++- docs/mfc/cobject-class-frequently-asked-questions.md | 4 +++- docs/mfc/collections.md | 4 +++- docs/mfc/com-interface-entry-points.md | 4 +++- docs/mfc/command-ids.md | 4 +++- docs/mfc/command-routing-classes.md | 4 +++- docs/mfc/command-routing-illustration.md | 4 +++- docs/mfc/command-routing.md | 4 +++- docs/mfc/command-targets.md | 4 +++- docs/mfc/common-control-sample-list.md | 4 +++- docs/mfc/common-dialog-classes.md | 4 +++- docs/mfc/commonly-added-member-functions.md | 4 +++- docs/mfc/commonly-overridden-member-functions.md | 4 +++- docs/mfc/communicating-with-a-tree-control.md | 4 +++- docs/mfc/connection-points.md | 4 +++- docs/mfc/containers-advanced-features.md | 4 +++- docs/mfc/containers-client-item-notifications.md | 4 +++- docs/mfc/containers-client-item-states.md | 4 +++- docs/mfc/containers-client-items.md | 4 +++- docs/mfc/containers-compound-files.md | 4 +++- docs/mfc/containers-for-activex-controls.md | 4 +++- docs/mfc/containers-implementing-a-container.md | 4 +++- docs/mfc/containers-user-interface-issues.md | 4 +++- docs/mfc/containers.md | 4 +++- docs/mfc/control-bar-classes.md | 4 +++- docs/mfc/control-bars.md | 4 +++- docs/mfc/control-classes.md | 4 +++- docs/mfc/controls-mfc.md | 4 +++- docs/mfc/creating-a-ctoolbarctrl-object.md | 4 +++- docs/mfc/creating-a-dialog-class-with-code-wizards.md | 4 +++- docs/mfc/creating-a-modeless-property-sheet.md | 4 +++- docs/mfc/creating-a-rebar-control.md | 4 +++- docs/mfc/creating-an-active-document-container-application.md | 4 +++- docs/mfc/creating-an-extended-combo-box-control.md | 4 +++- docs/mfc/creating-and-displaying-dialog-boxes.md | 4 +++- docs/mfc/creating-document-frame-windows.md | 4 +++- docs/mfc/creating-modal-dialog-boxes.md | 4 +++- 100 files changed, 300 insertions(+), 99 deletions(-) diff --git a/docs/atl/recommendations-for-choosing-between-atl-and-mfc.md b/docs/atl/recommendations-for-choosing-between-atl-and-mfc.md index 2fc4145a2b8..df9f94e0a58 100644 --- a/docs/atl/recommendations-for-choosing-between-atl-and-mfc.md +++ b/docs/atl/recommendations-for-choosing-between-atl-and-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Recommendations for Choosing Between ATL and MFC title: "Recommendations for Choosing Between ATL and MFC" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, ATL support", "ATL, vs. MFC"] -ms.assetid: 269325bb-11a8-4330-ad2b-a14a2458679e --- # Recommendations for Choosing Between ATL and MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) and Active Template Library (ATL) libraries continue to be supported. However, we're no longer adding features or updating the documentation. + When developing components and applications, you can choose between two approaches — ATL and MFC (the Microsoft Foundation Class Library). ## Using ATL diff --git a/docs/data/data-access-programming-mfc-atl.md b/docs/data/data-access-programming-mfc-atl.md index c2dda6ed1d6..f98e765142a 100644 --- a/docs/data/data-access-programming-mfc-atl.md +++ b/docs/data/data-access-programming-mfc-atl.md @@ -3,10 +3,12 @@ description: "Learn more about: Data Access Programming (MFC/ATL)" title: "Data Access Programming (MFC-ATL)" ms.date: "11/16/2018" helpviewer_keywords: ["MFC [C++], data access applications", "databases [C++], MFC", "OLE DB [C++], data access technologies", "data [C++], data access technologies", "data access [C++], class libraries for databases"] -ms.assetid: def97b2c-b5a6-445f-afeb-308050fd4852 --- # Data Access Programming (MFC/ATL) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) and Active Template Library (ATL) libraries continue to be supported. However, we're no longer adding features or updating the documentation. + Over the years, Visual C++ has provided several ways to work with databases. In 2011 Microsoft announced that it is aligning on Open Database Connectivity (ODBC) as the preferred technology for accessing SQL Server products from native code. ODBC is an industry standard, and by using it you gain maximum portability of your code over multiple platforms and data sources. Most SQL database products and many NoSQL products support ODBC. You can use ODBC directly by calling the low-level ODBC APIs, or you can use the MFC ODBC wrapper classes, or a third-party C++ wrapper library. OLE DB is a low-level, high-performance API based on the COM specification, and is only supported on Windows. Use OLE DB if your program is accessing [linked servers](/sql/relational-databases/linked-servers/linked-servers-database-engine). ATL provides OLE DB templates that make it easier to create custom OLE DB providers and consumers. The most recent provider for Microsoft SQL Server can be found in the documentation for the [OLE DB Driver for SQL Server](/sql/connect/oledb/oledb-driver-for-sql-server). diff --git a/docs/mfc/a-portrait-of-the-document-view-architecture.md b/docs/mfc/a-portrait-of-the-document-view-architecture.md index 2fa6b524004..de319b5b0da 100644 --- a/docs/mfc/a-portrait-of-the-document-view-architecture.md +++ b/docs/mfc/a-portrait-of-the-document-view-architecture.md @@ -3,10 +3,12 @@ description: "Learn more about: A Portrait of the Document/View Architecture" title: "A Portrait of the Document-View Architecture" ms.date: "11/04/2016" helpviewer_keywords: ["documents [MFC], views", "multiple views [MFC], updating from document", "document/view architecture [MFC]", "views [MFC], and user input", "documents [MFC], accessing data from view", "views [MFC], updating", "input [MFC], view class", "documents [MFC], multiple views", "document/view architecture [MFC], accessing data from view", "document/view architecture [MFC], about document/view architecture", "views [MFC], accessing document data from"] -ms.assetid: 4e7f65dc-b166-45d8-bcd5-9bb0d399b946 --- # A Portrait of the Document/View Architecture +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Documents and views are paired in a typical MFC application. Data is stored in the document, but the view has privileged access to the data. The separation of document from view separates the storage and maintenance of data from its display. ## Gaining Access to Document Data from the View diff --git a/docs/mfc/accessing-all-members-of-a-collection.md b/docs/mfc/accessing-all-members-of-a-collection.md index 0cd39499410..3ee1f74208c 100644 --- a/docs/mfc/accessing-all-members-of-a-collection.md +++ b/docs/mfc/accessing-all-members-of-a-collection.md @@ -3,11 +3,13 @@ description: "Learn more about: Accessing All Members of a Collection" title: "Accessing All Members of a Collection" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, collections", "enumerations [MFC]", "enumerating collections [MFC]", "collections [MFC], accessing", "collection classes [MFC]", ", ", ", ", ", ", ", ", ", ", ", ", ", "] -ms.assetid: 7bbae518-062e-4393-81f9-b22abd2e5f59 ms.topic: how-to --- # Accessing All Members of a Collection +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The MFC array collection classes — both template-based and not — use indexes to access their elements. The MFC list and map collection classes — both template-based and not — use an indicator of type **POSITION** to describe a given position within the collection. To access one or more members of these collections, you first initialize the position indicator and then repeatedly pass that position to the collection and ask it to return the next element. The collection is not responsible for maintaining state information about the progress of the iteration. That information is kept in the position indicator. But, given a particular position, the collection is responsible for returning the next element. The following procedures show how to iterate over the three main types of collections provided with MFC: diff --git a/docs/mfc/accessing-file-status.md b/docs/mfc/accessing-file-status.md index f582a6558bc..6e75ed88b8d 100644 --- a/docs/mfc/accessing-file-status.md +++ b/docs/mfc/accessing-file-status.md @@ -3,11 +3,13 @@ description: "Learn more about: Accessing File Status" title: "Accessing File Status" ms.date: "11/04/2016" helpviewer_keywords: ["files [MFC], status information", "examples [MFC], file status", "files [MFC], accessing", "file status [MFC]", "status of files [MFC]"] -ms.assetid: 1b8891d6-eb0f-4037-a837-4928fe595222 ms.topic: how-to --- # Accessing File Status +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + `CFile` also supports getting file status, including whether the file exists, creation and modification dates and times, logical size, and path. ### To get file status diff --git a/docs/mfc/accessing-run-time-class-information.md b/docs/mfc/accessing-run-time-class-information.md index e0981fe062a..167bf60b463 100644 --- a/docs/mfc/accessing-run-time-class-information.md +++ b/docs/mfc/accessing-run-time-class-information.md @@ -3,11 +3,13 @@ description: "Learn more about: Accessing Run-Time Class Information" title: "Accessing Run-Time Class Information" ms.date: "11/04/2016" helpviewer_keywords: ["CObject class [MFC], and RTTI", "CObject class [MFC], using IsKindOf method [MFC]", "run time [MFC], class information", "RUNTIME_CLASS macro [MFC]", "CObject class [MFC], using RUNTIME_CLASS macro [MFC]", "RTTI compiler option [MFC]", "CObject class [MFC], accessing run-time class information", "run time [MFC]", "IsKindOf method method [MFC]", "run-time class [MFC], accessing information", "classes [MFC], run-time class information", "run-time class [MFC]", "RUNTIME_CLASS macro, using"] -ms.assetid: 3445a9af-0bd6-4496-95c3-aa59b964570b ms.topic: how-to --- # Accessing Run-Time Class Information +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how to access information about the class of an object at run time. > [!NOTE] diff --git a/docs/mfc/accessing-the-embedded-month-calendar-control.md b/docs/mfc/accessing-the-embedded-month-calendar-control.md index c8c09084768..d325e55ce73 100644 --- a/docs/mfc/accessing-the-embedded-month-calendar-control.md +++ b/docs/mfc/accessing-the-embedded-month-calendar-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Accessing the Embedded Month Calendar Control" title: "Accessing the Embedded Month Calendar Control" ms.date: "11/04/2016" helpviewer_keywords: ["DateTimePicker control [MFC], accessing month calendar", "CDateTimeCtrl class [MFC], accessing embedded control", "month calendar controls [MFC], embedded in date/time picker", "CMonthCalCtrl class [MFC], changing the font", "month calendar controls [MFC], changing the font", "DateTimePicker control [MFC]"] -ms.assetid: 355e97ed-cf81-4df3-a2f8-9ddbbde93227 ms.topic: concept-article --- # Accessing the Embedded Month Calendar Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The embedded month calendar control object can be accessed from the `CDateTimeCtrl` object with a call to the [GetMonthCalCtrl](reference/cdatetimectrl-class.md#getmonthcalctrl) member function. > [!NOTE] diff --git a/docs/mfc/activation-cpp.md b/docs/mfc/activation-cpp.md index 89aafcdbd30..d40b7871b57 100644 --- a/docs/mfc/activation-cpp.md +++ b/docs/mfc/activation-cpp.md @@ -3,10 +3,12 @@ description: "Learn more about: Activation (C++)" title: "Activation (C++)" ms.date: "11/04/2016" helpviewer_keywords: ["OLE server applications [MFC], activation", "OLE items [MFC], visual editing", "activation [MFC]", "OLE [MFC], in-place activation", "OLE [MFC], activation", "in-place activation, embedded and linked items", "activating objects", "visual editing, activation", "visual editing", "documents [MFC], OLE", "embedded objects [MFC]", "OLE [MFC], editing", "in-place activation", "activation [MFC], embedded OLE items", "OLE activation [MFC]"] -ms.assetid: ed8357d9-e487-4aaa-aa6b-2edc4de25dfa --- # Activation (C++) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the role of activation in the visual editing of OLE items. After a user has embedded an OLE item in a container document, it may need to be used. To do this, the user double-clicks the item, which activates that item. The most frequent activity for activation is editing. Many current OLE items, when activated for editing, cause the menus and toolbars in the current frame window to change to reflect those belonging to the server application that created the item. This behavior, known as in-place activation, allows the user to edit any embedded item in a compound document without leaving the container document's window. It is also possible to edit embedded OLE items in a separate window. This will happen if either the container or server application does not support in-place activation. In this case, when the user double-clicks an embedded item, the server application is launched in a separate window and the embedded item appears as its own document. The user edits the item in this window. When editing is complete, the user closes the server application and returns to the container application. diff --git a/docs/mfc/activation-verbs.md b/docs/mfc/activation-verbs.md index 31e35ddfed5..44f8e4f2030 100644 --- a/docs/mfc/activation-verbs.md +++ b/docs/mfc/activation-verbs.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["verbs [MFC]", "OLE [MFC], activation", "edit verb [MFC]", --- # Activation: Verbs +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the role primary and secondary verbs play in OLE [activation](activation-cpp.md). Usually, double-clicking an embedded item allows the user to edit it. However, certain items do not behave this way. For example, double-clicking an item created with the Sound Recorder application does not open the server in a separate window; instead, it plays the sound. diff --git a/docs/mfc/active-document-classes.md b/docs/mfc/active-document-classes.md index b5d917abefd..2e21e90ff3e 100644 --- a/docs/mfc/active-document-classes.md +++ b/docs/mfc/active-document-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: Active Document Classes" title: "Active Document Classes" ms.date: "11/04/2016" helpviewer_keywords: ["Active document classes [MFC]"] -ms.assetid: cc20af37-b658-406d-8148-7670737f4c03 --- # Active Document Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Active documents can be displayed either in the entire client window of a Web browser, such as Internet Explorer 5.5, or in an Active container, such as the Microsoft Office Binder, that supports Active documents. [CDocObjectServer](reference/cdocobjectserver-class.md)
diff --git a/docs/mfc/active-document-containers.md b/docs/mfc/active-document-containers.md index 1a73274136f..04fd6aedac2 100644 --- a/docs/mfc/active-document-containers.md +++ b/docs/mfc/active-document-containers.md @@ -3,10 +3,12 @@ description: "Learn more about: Active Document Containers" title: "Active Document Containers" ms.date: "11/19/2018" helpviewer_keywords: ["active documents [MFC], containers", "active document containers [MFC]", "containers [MFC], active document", "MFC COM, active document containment"] -ms.assetid: ba20183a-8b4c-440f-9031-e5fcc41d391b --- # Active Document Containers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An active document container, such as Microsoft Office Binder or Internet Explorer, allows you to work with several documents of different application types within a single frame (instead of forcing you to create and use multiple application frames for each document type). MFC provides full support for active document containers in the `COleDocObjectItem` class. You can use the MFC Application Wizard to create an active document container by selecting the **Active document container** check box on the **Compound Document Support** page of the MFC Application Wizard. For more information, see [Creating an Active Document Container Application](creating-an-active-document-container-application.md). diff --git a/docs/mfc/active-document-containment.md b/docs/mfc/active-document-containment.md index 0220c7fe079..457e75cb97b 100644 --- a/docs/mfc/active-document-containment.md +++ b/docs/mfc/active-document-containment.md @@ -3,10 +3,12 @@ description: "Learn more about: Active Document Containment" title: "Active Document Containment" ms.date: "11/04/2016" helpviewer_keywords: ["active documents [MFC], containers", "containers [MFC], active document", "MFC, COM support", "active document containers [MFC], about active document containers", "MFC COM, active document containment"] -ms.assetid: b8dfa74b-75ce-47df-b75e-fc87b7f7d687 --- # Active Document Containment +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Active document containment is a technology that provides a single frame in which to work with documents, instead of forcing you to create and use multiple application frames for each document type. It differs from basic OLE technology in that OLE works with embedded objects within a compound document in which only a single piece of content can be active. With active document containment, you activate an entire document (that is, an entire application, including associated menus, toolbars, and so on) within the context of a single frame. The active document containment technology was originally developed for Microsoft Office to implement Office Binder. However, the technology is flexible enough to support active document containers other than Office Binder and can support document servers other than Office and Office-compatible applications. diff --git a/docs/mfc/active-document-servers.md b/docs/mfc/active-document-servers.md index e277d81825e..441a9c8f1be 100644 --- a/docs/mfc/active-document-servers.md +++ b/docs/mfc/active-document-servers.md @@ -3,10 +3,12 @@ description: "Learn more about: Active Document Servers" title: "Active Document Servers" ms.date: "11/04/2016" helpviewer_keywords: ["active documents [MFC], servers", "servers [MFC], active document", "active document servers [MFC]"] -ms.assetid: 131fec1e-02a0-4305-a7ab-903b911232a7 --- # Active Document Servers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Active document servers such as Word, Excel, or PowerPoint host documents of other application types called active documents. Unlike OLE embedded objects (which are simply displayed within the page of another document), Active documents provide the full interface and complete native functionality of the server application that creates them. Users can create documents using the full power of their favorite applications (if they are active document enabled), yet can treat the resulting project as a single entity. Active documents can have more than one page and are always in-place active. Active documents control part of the user interface, merging their menus with the **File** and **Help** menus of the container. They occupy the entire editing area of the container and control the views and the layout of the printer page (margins, footers, and so on). diff --git a/docs/mfc/active-documents.md b/docs/mfc/active-documents.md index bbaebd0e747..235ed0d653c 100644 --- a/docs/mfc/active-documents.md +++ b/docs/mfc/active-documents.md @@ -3,10 +3,12 @@ description: "Learn more about: Active Documents" title: "Active Documents" ms.date: "11/04/2016" helpviewer_keywords: ["active documents [MFC]", "active documents [MFC], requirements", "view objects [MFC], requirements", "OLE [MFC], active documents", "views [MFC], active documents", "active documents [MFC], views"] -ms.assetid: 1378f18e-aaa6-420b-8501-4b974905baa0 --- # Active Documents +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Active documents extend the compound document technology of OLE. These extensions are provided in the form of additional interfaces that manage views, so that objects can function within containers and yet retain control over their display and printing functions. This process makes it possible to display documents both in foreign frames (such as the Microsoft Office Binder or Microsoft Internet Explorer) and in native frames (such as the product's own view ports). This section describes the functional [requirements for active documents](#requirements_for_active_documents). The active document owns a set of data and has access to storage where the data can be saved and retrieved. It can create and manage one or more views on its data. In addition to supporting the usual embedding and in-place activation interfaces of OLE documents, the active document communicates its ability to create views through `IOleDocument`. Through this interface, the container can ask to create (and possibly enumerate) the views that the active document can display. Through this interface, the active document can also provide miscellaneous information about itself, such as whether it supports multiple views or complex rectangles. diff --git a/docs/mfc/active-technology-on-the-internet.md b/docs/mfc/active-technology-on-the-internet.md index 6a0a0ae5513..18e010b6426 100644 --- a/docs/mfc/active-technology-on-the-internet.md +++ b/docs/mfc/active-technology-on-the-internet.md @@ -3,10 +3,12 @@ description: "Learn more about: Active Technology on the Internet" title: "Active Technology on the Internet" ms.date: "09/12/2018" helpviewer_keywords: ["Internet applications [MFC], Active technology"] -ms.assetid: 6f782aa1-5c2f-47a2-9e63-ddd0829d5a08 --- # Active Technology on the Internet +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Active technology is an open platform that lets developers create exciting, dynamic content and applications for the global Internet, or for a company's internal network, known as an intranet. The major technologies provided by Microsoft for Internet programming are described below. >[!IMPORTANT] diff --git a/docs/mfc/activex-control-containers-connecting-an-activex-control-to-a-member-variable.md b/docs/mfc/activex-control-containers-connecting-an-activex-control-to-a-member-variable.md index 1fa92bf4510..cd88ec1938a 100644 --- a/docs/mfc/activex-control-containers-connecting-an-activex-control-to-a-member-variable.md +++ b/docs/mfc/activex-control-containers-connecting-an-activex-control-to-a-member-variable.md @@ -3,10 +3,12 @@ description: "Learn more about: ActiveX Control Containers: Connecting an Active title: "ActiveX Control Containers: Connecting an ActiveX Control to a Member Variable" ms.date: "11/04/2016" helpviewer_keywords: ["ActiveX control containers [MFC], accessing ActiveX controls", "ActiveX controls [MFC], member variables of project", "connecting ActiveX controls to container member variables", "ActiveX controls [MFC], accessing", "member variables [MFC], ActiveX controls in project", "ActiveX control containers [MFC], ActiveX controls as member variables"] -ms.assetid: 7898a336-440d-4a60-be43-cb062b807aee --- # ActiveX Control Containers: Connecting an ActiveX Control to a Member Variable +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The easiest way to access an ActiveX control from within its control container application is to associate the ActiveX control with a member variable of the dialog class that will contain the control. > [!NOTE] diff --git a/docs/mfc/activex-control-containers-handling-events-from-an-activex-control.md b/docs/mfc/activex-control-containers-handling-events-from-an-activex-control.md index 90af06c7fc7..acd9cb66f89 100644 --- a/docs/mfc/activex-control-containers-handling-events-from-an-activex-control.md +++ b/docs/mfc/activex-control-containers-handling-events-from-an-activex-control.md @@ -3,10 +3,12 @@ description: "Learn more about: ActiveX Control Containers: Handling Events from title: "ActiveX Control Containers: Handling Events from an ActiveX Control" ms.date: "09/12/2018" helpviewer_keywords: ["event handlers [MFC], ActiveX controls", "ActiveX control containers [MFC], event sinks", "event handling [MFC], ActiveX controls", "ON_EVENT macro [MFC]", "ActiveX controls [MFC], events [MFC]", "END_EVENTSINK_MAP macro, using", "events [MFC], ActiveX controls", "BEGIN_EVENTSINK_MAP macro"] -ms.assetid: f9c106db-052f-4e32-82ad-750646aa760b --- # ActiveX Control Containers: Handling Events from an ActiveX Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article discusses using the **Properties** window (in **Class View**) to install event handlers for ActiveX controls in an ActiveX control container. The event handlers are used to receive notifications (from the control) of certain events and perform some action in response. This notification is called "firing" the event. >[!IMPORTANT] diff --git a/docs/mfc/activex-control-containers-manually-enabling-activex-control-containment.md b/docs/mfc/activex-control-containers-manually-enabling-activex-control-containment.md index f4e37044710..f7cb6480473 100644 --- a/docs/mfc/activex-control-containers-manually-enabling-activex-control-containment.md +++ b/docs/mfc/activex-control-containers-manually-enabling-activex-control-containment.md @@ -3,10 +3,12 @@ description: "Learn more about: ActiveX Control Containers: Manually Enabling Ac title: "ActiveX Control Containers: Manually Enabling ActiveX Control Containment" ms.date: "09/12/2018" helpviewer_keywords: ["AfxEnableControlContainer method [MFC]", "ActiveX control containers [MFC], enabling", "ActiveX controls [MFC], enabling containers"] -ms.assetid: 833bcde9-c9ad-4709-ad12-2fc2150fb6a5 --- # ActiveX Control Containers: Manually Enabling ActiveX Control Containment +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If you did not enable ActiveX control support when you used the MFC Application Wizard to generate your application, you will have to add this support manually. This article describes the process for manually adding ActiveX control containment to an existing OLE container application. If you know in advance that you want ActiveX control support in your OLE container, see the article [Creating an MFC ActiveX Control Container](reference/creating-an-mfc-activex-control-container.md). >[!IMPORTANT] diff --git a/docs/mfc/activex-control-containers-using-controls-in-a-non-dialog-container.md b/docs/mfc/activex-control-containers-using-controls-in-a-non-dialog-container.md index 5c203ddbf53..516e4ac55a1 100644 --- a/docs/mfc/activex-control-containers-using-controls-in-a-non-dialog-container.md +++ b/docs/mfc/activex-control-containers-using-controls-in-a-non-dialog-container.md @@ -3,10 +3,12 @@ description: "Learn more about: ActiveX Control Containers: Using Controls in a title: "ActiveX Control Containers: Using Controls in a Non-Dialog Container" ms.date: "11/04/2016" helpviewer_keywords: ["Create method [MFC], ActiveX controls", "CreateControl method [MFC]", "ActiveX controls [MFC], creating", "ActiveX control containers [MFC], non-dialog containers", "ActiveX control containers [MFC], inserting controls"] -ms.assetid: 46f195b0-b8ca-4409-8cca-fbfaf2c9ab9f --- # ActiveX Control Containers: Using Controls in a Non-Dialog Container +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In some applications, such as an SDI or MDI application, you will want to embed a control in a window of the application. The **Create** member function of the wrapper class, inserted by Visual Studio, can create an instance of the control dynamically, without the need for a dialog box. The **Create** member function has the following parameters: diff --git a/docs/mfc/activex-control-containers-viewing-and-modifying-control-properties.md b/docs/mfc/activex-control-containers-viewing-and-modifying-control-properties.md index 2cd819edbd2..201a108b84d 100644 --- a/docs/mfc/activex-control-containers-viewing-and-modifying-control-properties.md +++ b/docs/mfc/activex-control-containers-viewing-and-modifying-control-properties.md @@ -3,10 +3,12 @@ description: "Learn more about: ActiveX Control Containers: Viewing and Modifyin title: "ActiveX Control Containers: Viewing and Modifying Control Properties" ms.date: "11/04/2016" helpviewer_keywords: ["properties [MFC], viewing and modifying", "ActiveX control containers [MFC], viewing and modifying properties", "resource editors, viewing and modifying ActiveX controls", "ActiveX controls [MFC], properties", "controls [MFC], properties"] -ms.assetid: 14ce5152-742b-4e0d-a9ab-c7b456e32918 --- # ActiveX Control Containers: Viewing and Modifying Control Properties +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When you insert an ActiveX control into a project, it is useful to view and change the properties supported by the ActiveX control. This article discusses how to use the Visual Studio resource editor to do this. If your ActiveX control container application uses embedded controls, you can view and modify the control's properties while in the resource editor. You can also use the resource editor to set property values during design time. The resource editor then automatically saves these values in the project's resource file. Any instance of the control will then have its properties initialized to these values. diff --git a/docs/mfc/activex-control-containers.md b/docs/mfc/activex-control-containers.md index 25f68beb623..30261c43b4f 100644 --- a/docs/mfc/activex-control-containers.md +++ b/docs/mfc/activex-control-containers.md @@ -3,10 +3,12 @@ description: "Learn more about: ActiveX Control Containers" title: "ActiveX Control Containers" ms.date: "09/12/2018" helpviewer_keywords: ["ActiveX control containers [MFC]", "OLE controls [MFC], containers"] -ms.assetid: 0eb1a713-e607-4c79-a0c7-67c5f1fd5fab --- # ActiveX Control Containers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An ActiveX control container is a container that fully supports ActiveX controls and can incorporate them into its own windows or dialogs. An ActiveX control is a reusable software element that you can use in many development projects. Controls allow your application's user to access databases, monitor data, and make various selections within your applications. For more information on ActiveX controls, see the article [MFC ActiveX Controls](mfc-activex-controls.md). >[!IMPORTANT] diff --git a/docs/mfc/activex-controls-on-the-internet.md b/docs/mfc/activex-controls-on-the-internet.md index 9a73da8ce82..915bab82eb5 100644 --- a/docs/mfc/activex-controls-on-the-internet.md +++ b/docs/mfc/activex-controls-on-the-internet.md @@ -3,10 +3,12 @@ description: "Learn more about: ActiveX Controls on the Internet" title: "ActiveX Controls on the Internet" ms.date: "09/12/2018" helpviewer_keywords: ["ActiveX controls [MFC], creating", "ActiveX controls [MFC], Internet", "downloading data with ActiveX controls", "OLE controls [MFC], upgrading to ActiveX", "Internet applications [MFC], ActiveX controls", "networks [MFC], downloading with ActiveX controls"] -ms.assetid: 7ab943c8-2022-41df-9065-d629b616eeec --- # ActiveX Controls on the Internet +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + ActiveX controls are the updated version of the OLE control specification. >[!IMPORTANT] diff --git a/docs/mfc/activex-controls.md b/docs/mfc/activex-controls.md index a2beb263314..6dcea4cccbb 100644 --- a/docs/mfc/activex-controls.md +++ b/docs/mfc/activex-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: ActiveX Controls" title: "ActiveX Controls" ms.date: "09/12/2018" helpviewer_keywords: ["ActiveX controls [MFC]"] -ms.assetid: 52aaec4d-3889-402e-b57d-758078f8ac57 --- # ActiveX Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In Visual Studio you can create ActiveX controls using MFC or ATL. >[!IMPORTANT] diff --git a/docs/mfc/adding-columns-to-the-control-report-view.md b/docs/mfc/adding-columns-to-the-control-report-view.md index 829a912284b..825e9915515 100644 --- a/docs/mfc/adding-columns-to-the-control-report-view.md +++ b/docs/mfc/adding-columns-to-the-control-report-view.md @@ -3,11 +3,13 @@ description: "Learn more about: Adding Columns to the Control (Report View)" title: "Adding Columns to the Control (Report View)" ms.date: "11/04/2016" helpviewer_keywords: ["CListCtrl class [MFC], adding columns", "report view in CListCtrl class [MFC]", "views [MFC], report", "columns [MFC], adding to CListCtrl", "CListCtrl class [MFC], report view"] -ms.assetid: 7392c0d7-f8a5-4e7b-9ae7-b53dc9dd80ae ms.topic: concept-article --- # Adding Columns to the Control (Report View) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following procedure applies to either a [CListView](reference/clistview-class.md) or [CListCtrl](reference/clistctrl-class.md) object. diff --git a/docs/mfc/adding-controls-by-hand.md b/docs/mfc/adding-controls-by-hand.md index 8945ca7e2a3..1ccec0f6760 100644 --- a/docs/mfc/adding-controls-by-hand.md +++ b/docs/mfc/adding-controls-by-hand.md @@ -3,11 +3,13 @@ description: "Learn more about: Adding Controls By Hand" title: "Adding Controls By Hand" ms.date: "11/04/2016" helpviewer_keywords: ["Windows common controls [MFC], adding", "dialog box controls [MFC], adding to dialog boxes", "controlling input focus", "input focus control", "focus, controlling input [MFC]", "controls [MFC], adding to dialog boxes", "common controls [MFC], adding"] -ms.assetid: bc843e59-0c51-4b5b-8bf2-343f716469d2 ms.topic: concept-article --- # Adding Controls By Hand +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can either [add controls to a dialog box with the dialog editor](using-the-dialog-editor-to-add-controls.md) or add them yourself, with code. To create a control object yourself, you will usually embed the C++ control object in a C++ dialog or frame-window object. Like many other objects in the framework, controls require two-stage construction. You should call the control's **Create** member function as part of creating the parent dialog box or frame window. For dialog boxes, this is usually done in [OnInitDialog](reference/cdialog-class.md#oninitdialog), and for frame windows, in [OnCreate](reference/cwnd-class.md#oncreate). diff --git a/docs/mfc/adding-controls-to-a-property-sheet.md b/docs/mfc/adding-controls-to-a-property-sheet.md index f9fd7130061..c9f162f38b7 100644 --- a/docs/mfc/adding-controls-to-a-property-sheet.md +++ b/docs/mfc/adding-controls-to-a-property-sheet.md @@ -3,11 +3,13 @@ description: "Learn more about: Adding Controls to a Property Sheet" title: "Adding Controls to a Property Sheet" ms.date: "11/04/2016" helpviewer_keywords: ["controls [MFC], adding to property sheets", "property sheets, adding controls"] -ms.assetid: 24ad4c0b-c1db-4850-b9f0-34aae8d74571 ms.topic: concept-article --- # Adding Controls to a Property Sheet +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + By default, a property sheet allocates window area for the property pages, the tab index, and the OK, Cancel, and Apply buttons. (A modeless property sheet does not have the OK, Cancel, and Apply buttons.) You can add other controls to the property sheet. For example, you can add a preview window to the right of the property page area to show the user what the current settings would look like if applied to an external object. You can add controls to the property sheet dialog in the `OnCreate` handler. Accommodating additional controls usually requires expanding the size of the property sheet dialog. After calling the base class **CPropertySheet::OnCreate**, call [GetWindowRect](reference/cwnd-class.md#getwindowrect) to get the width and height of the currently allocated property sheet window, expand the rectangle's dimensions, and call [MoveWindow](reference/cwnd-class.md#movewindow) to change the size of the property sheet window. diff --git a/docs/mfc/adding-items-to-the-control.md b/docs/mfc/adding-items-to-the-control.md index 9019df5d8f5..8d8a14a0003 100644 --- a/docs/mfc/adding-items-to-the-control.md +++ b/docs/mfc/adding-items-to-the-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Adding Items to the Control" title: "Adding Items to the Control" ms.date: "11/04/2016" helpviewer_keywords: ["CListCtrl class [MFC], adding items"] -ms.assetid: 715994bd-340d-4ad2-9882-411654137830 ms.topic: concept-article --- # Adding Items to the Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To add items to the list control ([CListCtrl](reference/clistctrl-class.md)), call one of several versions of the [InsertItem](reference/clistctrl-class.md#insertitem) member function, depending on what information you have. One version takes a [LVITEM](/windows/win32/api/commctrl/ns-commctrl-lvitemw) structure that you prepare. Because the `LVITEM` structure contains numerous members, you have greater control over the attributes of the list control item. Two important members (in regard to the report view) of the `LVITEM` structure are the `iItem` and `iSubItem` members. The `iItem` member is the zero-based index of the item the structure is referencing and the `iSubItem` member is the one-based index of a subitem, or zero if the structure contains information about an item. With these two members you determine, per item, the type and value of subitem information that is displayed when the list control is in report view. For more information, see [CListCtrl::SetItem](reference/clistctrl-class.md#setitem). diff --git a/docs/mfc/adding-items-to-the-header-control.md b/docs/mfc/adding-items-to-the-header-control.md index ad9b3d20dc5..359e8a45b4f 100644 --- a/docs/mfc/adding-items-to-the-header-control.md +++ b/docs/mfc/adding-items-to-the-header-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Adding Items to the Header Control" title: "Adding Items to the Header Control" ms.date: "11/04/2016" helpviewer_keywords: ["controls [MFC], header", "CHeaderCtrl class [MFC], adding items", "header controls [MFC], adding items to"] -ms.assetid: 2e9a28b1-7302-4a93-8037-c5a4183e589a ms.topic: how-to --- # Adding Items to the Header Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + After creating your header control ([CHeaderCtrl](reference/cheaderctrl-class.md)) in its parent window, add as many "header items" as you need: usually one per column. ### To add a header item diff --git a/docs/mfc/adding-multiple-views-to-a-single-document.md b/docs/mfc/adding-multiple-views-to-a-single-document.md index b8e7fd427b4..500f35c74f9 100644 --- a/docs/mfc/adding-multiple-views-to-a-single-document.md +++ b/docs/mfc/adding-multiple-views-to-a-single-document.md @@ -3,11 +3,13 @@ description: "Learn more about: Adding Multiple Views to a Single Document" title: "Adding Multiple Views to a Single Document" ms.date: "11/04/2016" helpviewer_keywords: ["multiple views [MFC], SDI applications", "documents [MFC], multiple views", "single document interface (SDI), adding views", "views [MFC], SDI applications"] -ms.assetid: 86d0c134-01d5-429c-b672-36cfb956dc01 ms.topic: concept-article --- # Adding Multiple Views to a Single Document +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In a single-document interface (SDI) application created with the Microsoft Foundation Class (MFC) Library, each document type is associated with a single view type. In some cases, it is desirable to have the ability to switch the current view of a document with a new view. > [!TIP] diff --git a/docs/mfc/adding-tabs-to-a-tab-control.md b/docs/mfc/adding-tabs-to-a-tab-control.md index b4312763c36..860f6ce1ea2 100644 --- a/docs/mfc/adding-tabs-to-a-tab-control.md +++ b/docs/mfc/adding-tabs-to-a-tab-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Adding Tabs to a Tab Control" title: "Adding Tabs to a Tab Control" ms.date: "11/04/2016" helpviewer_keywords: ["tab controls [MFC], adding tabs", "putting tabs on CTabCtrls [MFC]", "CTabCtrl class [MFC], adding tabs", "tabs [MFC], adding to CTabCtrl class [MFC]"] -ms.assetid: 7f3d9340-e3c7-4c71-9912-be57534ecc78 ms.topic: how-to --- # Adding Tabs to a Tab Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + After creating the tab control ([CTabCtrl](reference/ctabctrl-class.md)), add as many tabs as you need. ### To add a tab item diff --git a/docs/mfc/advantages-of-the-document-view-architecture.md b/docs/mfc/advantages-of-the-document-view-architecture.md index 68755dbc77f..5baaa817716 100644 --- a/docs/mfc/advantages-of-the-document-view-architecture.md +++ b/docs/mfc/advantages-of-the-document-view-architecture.md @@ -3,10 +3,12 @@ description: "Learn more about: Advantages of the Document/View Architecture" title: "Advantages of the Document-View Architecture" ms.date: "11/04/2016" helpviewer_keywords: ["views [MFC], advantages", "document/view architecture [MFC], advantages of"] -ms.assetid: 0bc27071-e120-4889-939c-ce1e61fb9cb3 --- # Advantages of the Document/View Architecture +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The key advantage to using the MFC document/view architecture is that the architecture supports multiple views of the same document particularly well. (If you don't need multiple views and the small overhead of document/view is excessive in your application, you can avoid the architecture. [Alternatives to the Document/View Architecture](alternatives-to-the-document-view-architecture.md).) Suppose your application lets users view numerical data either in spreadsheet form or in chart form. A user might want to see simultaneously both the raw data, in spreadsheet form, and a chart that results from the data. You display these separate views in separate frame windows or in splitter panes within a single window. Now suppose the user can edit the data in the spreadsheet and see the changes instantly reflected in the chart. diff --git a/docs/mfc/allocating-and-deallocating-window-memory.md b/docs/mfc/allocating-and-deallocating-window-memory.md index 5e5645446a9..c8fb0b9f318 100644 --- a/docs/mfc/allocating-and-deallocating-window-memory.md +++ b/docs/mfc/allocating-and-deallocating-window-memory.md @@ -3,11 +3,13 @@ description: "Learn more about: Allocating and Deallocating Window Memory" title: "Allocating and Deallocating Window Memory" ms.date: "11/04/2016" helpviewer_keywords: ["memory allocation, window objects", "memory deallocation", "storage for window objects [MFC]", "memory deallocation, window memory", "window objects [MFC], deallocating memory for", "storage for window objects [MFC], allocating"] -ms.assetid: 7c962539-8461-4846-b5ca-fe3b15c313dc ms.topic: concept-article --- # Allocating and Deallocating Window Memory +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Do not use the C++ **`delete`** operator to destroy a frame window or view. Instead, call the `CWnd` member function `DestroyWindow`. Frame windows, therefore, should be allocated on the heap with operator **`new`**. Be careful when allocating frame windows on the stack frame or globally. Other windows should be allocated on the stack frame whenever possible. ## What do you want to know more about diff --git a/docs/mfc/allocating-gdi-resources.md b/docs/mfc/allocating-gdi-resources.md index d9b1a739458..fb4dc60d44d 100644 --- a/docs/mfc/allocating-gdi-resources.md +++ b/docs/mfc/allocating-gdi-resources.md @@ -3,11 +3,13 @@ description: "Learn more about: Allocating GDI Resources" title: "Allocating GDI Resources" ms.date: "06/03/2019" helpviewer_keywords: ["resources [MFC], printing", "GDI objects [MFC], allocating during printing", "printing [MFC], allocating GDI resources"] -ms.assetid: cef7e94d-5a27-4aea-a9ee-8369fc895d3a ms.topic: concept-article --- # Allocating GDI Resources +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how to allocate and deallocate the Windows graphics device interface (GDI) objects needed for printing. > [!NOTE] diff --git a/docs/mfc/alternatives-to-the-document-view-architecture.md b/docs/mfc/alternatives-to-the-document-view-architecture.md index b89b6dbc905..aea82ec47b9 100644 --- a/docs/mfc/alternatives-to-the-document-view-architecture.md +++ b/docs/mfc/alternatives-to-the-document-view-architecture.md @@ -3,10 +3,12 @@ description: "Learn more about: Alternatives to the Document/View Architecture" title: "Alternatives to the Document-View Architecture" ms.date: "11/04/2016" helpviewer_keywords: ["documents [MFC], applications without", "CDocument class [MFC], space requirements", "views [MFC], applications without"] -ms.assetid: 2c22f352-a137-45ce-9971-c142173496fb --- # Alternatives to the Document/View Architecture +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC applications normally use the document/view architecture to manage information, file formats, and the visual representation of data to users. For the majority of desktop applications, the document/view architecture is an appropriate and efficient application architecture. This architecture separates data from viewing and, in most cases, simplifies your application and reduces redundant code. However, the document/view architecture is not appropriate for some situations. Consider these examples: diff --git a/docs/mfc/application-and-thread-support-classes.md b/docs/mfc/application-and-thread-support-classes.md index b05bbbcc85f..dd028a163fd 100644 --- a/docs/mfc/application-and-thread-support-classes.md +++ b/docs/mfc/application-and-thread-support-classes.md @@ -4,10 +4,12 @@ title: "Application and Thread Support Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.support"] helpviewer_keywords: ["application objects [MFC], thread support classes", "lock classes [MFC]", "thread support classes [MFC]", "threading [MFC]", "synchronization classes [MFC], multithreading", "application support classes [MFC]"] -ms.assetid: 3c1d14fd-c35c-48f1-86ce-1e0f9a32c36d --- # Application and Thread Support Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Each application has one and only one application object; this object coordinates other objects in the running program and is derived from `CWinApp`. The Microsoft Foundation Class (MFC) Library supports multiple threads of execution within an application. All applications must have at least one thread; the thread used by your `CWinApp` object is this primary thread. diff --git a/docs/mfc/application-design-choices.md b/docs/mfc/application-design-choices.md index 398024a1216..c4d54447abd 100644 --- a/docs/mfc/application-design-choices.md +++ b/docs/mfc/application-design-choices.md @@ -3,10 +3,12 @@ description: "Learn more about: Application Design Choices" title: "Application Design Choices" ms.date: "09/12/2019" helpviewer_keywords: ["design", "application design [MFC], design goals", "application design [MFC], Internet applications", "Internet applications [MFC], designing applications", "Internet [MFC], vs. intranets", "applications [MFC], Internet", "server applications [MFC], vs. client applications on Internet", "client applications [MFC], vs. server applications on Internet"] -ms.assetid: 9b96172c-b4d4-4c69-bfb2-226ce0de6d08 --- # Application Design Choices +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article discusses some of the design issues to consider when programming for the Internet. Topics covered in this article include: diff --git a/docs/mfc/application-framework.md b/docs/mfc/application-framework.md index 3d7b573f4a3..247ee9f23cd 100644 --- a/docs/mfc/application-framework.md +++ b/docs/mfc/application-framework.md @@ -3,10 +3,12 @@ description: "Learn more about: Application Framework" title: "Application Framework" ms.date: "11/04/2016" helpviewer_keywords: ["application framework [MFC], building applications", "applications [MFC]", "application framework [MFC]"] -ms.assetid: 912684e6-4418-49dc-9877-a4cd19d69d20 --- # Application Framework +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The core of the Microsoft Foundation Class (MFC) Library is an encapsulation of a large portion of the Windows API in C++ form. Library classes represent windows, dialog boxes, device contexts, common GDI objects such as brushes and pens, controls, and other standard Windows items. These classes provide a convenient C++ member function interface to the structures in Windows that they encapsulate. For more about using these classes, see [Window Object Topics](window-objects.md). But the MFC Library also supplies a layer of additional application functionality built on the C++ encapsulation of the Windows API. This layer is a working application framework for Windows that provides most of the common user interface expected of programs for Windows, including toolbars, status bars, printing, print preview, database support, and ActiveX support. [Using the Classes to Write Applications for Windows](using-the-classes-to-write-applications-for-windows.md) explains the framework in detail. diff --git a/docs/mfc/array-list-and-map-classes.md b/docs/mfc/array-list-and-map-classes.md index b0fa8481746..381ad523acb 100644 --- a/docs/mfc/array-list-and-map-classes.md +++ b/docs/mfc/array-list-and-map-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: Array, List, and Map Classes" title: "Array, List, and Map Classes" ms.date: "11/04/2016" helpviewer_keywords: ["arrays [MFC], classes", "list classes [MFC]", "collection classes [MFC], maps", "map classes [MFC]", "collection classes [MFC], lists"] -ms.assetid: 81a13a7f-0c2c-4efd-b6bb-b4e624a0743d --- # Array, List, and Map Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For handling aggregates of data, the class library provides a group of collection classes — arrays, lists, and maps — that can hold a variety of object and predefined types. The collections are dynamically sized. These classes can be used in any program, whether written for Windows or not. However, they are most useful for implementing the data structures that define your document classes in the application framework. You can readily derive specialized collection classes from these, or you can create them based on the template classes. For more information about these approaches, see the article [Collections](collections.md). For a list of the template collection classes, see the article [Template Classes for Arrays, Lists, and Maps](template-classes-for-arrays-lists-and-maps.md). Arrays are one-dimensional data structures that are stored contiguously in memory. They support very fast random access since the memory address of any given element can be calculated by multiplying the index of the element by the size of an element and adding the result to the base address of the array. But arrays are very expensive if you have to insert elements into the array, since the entire array past the element inserted has to be moved to make room for the element to be inserted. Arrays can grow and shrink as necessary. diff --git a/docs/mfc/asynchronous-monikers-on-the-internet.md b/docs/mfc/asynchronous-monikers-on-the-internet.md index f9ea5ad99cd..0387ba229f9 100644 --- a/docs/mfc/asynchronous-monikers-on-the-internet.md +++ b/docs/mfc/asynchronous-monikers-on-the-internet.md @@ -3,10 +3,12 @@ description: "Learn more about: Asynchronous Monikers on the Internet" title: "Asynchronous Monikers on the Internet" ms.date: "11/04/2016" helpviewer_keywords: ["ActiveX controls [MFC], asynchronous", "MFC, asynchronous monikers", "asynchronous monikers [MFC]", "Web applications [MFC], asynchronous", "downloading Internet resources and asynchronous monikers", "optimization [MFC], asynchronous downloading across Internet", "Internet [MFC], asynchronous downloading"] -ms.assetid: 418b0c64-0046-4dae-8118-c9c762b5822e --- # Asynchronous Monikers on the Internet +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Internet requires new approaches to application design because of its slow network access. Applications should perform network access asynchronously to avoid stalling the user interface. The MFC class [CAsyncMonikerFile](reference/casyncmonikerfile-class.md) provides asynchronous support for downloading files. With asynchronous monikers, you can extend your COM application to download asynchronously across the Internet and to provide progressive rendering of large objects such as bitmaps and VRML objects. Asynchronous monikers enable an ActiveX control property or a file on the Internet to be downloaded without blocking the response of the user interface. diff --git a/docs/mfc/automation-clients-using-type-libraries.md b/docs/mfc/automation-clients-using-type-libraries.md index 4c8eb1cb81e..5f0c32dc7aa 100644 --- a/docs/mfc/automation-clients-using-type-libraries.md +++ b/docs/mfc/automation-clients-using-type-libraries.md @@ -4,10 +4,12 @@ title: "Automation Clients: Using Type Libraries" ms.date: "11/04/2016" f1_keywords: ["MkTypLib"] helpviewer_keywords: ["clients, Automation", "dispatch class [MFC]", "Automation clients, type libraries", "type libraries, Automation clients", "ODL (Object Description Language)", "ODL files", "classes [MFC], dispatch", "MkTypLib tool", ".odl files"] -ms.assetid: d405bc47-118d-4786-b371-920d035b2047 --- # Automation Clients: Using Type Libraries +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Automation clients must have information about server objects' properties and methods if the clients are to manipulate the servers' objects. Properties have data types; methods often return values and accept parameters. The client requires information about the data types of all of these in order to statically bind to the server object type. This type information can be made known in several ways. The recommended way is to create a type library. diff --git a/docs/mfc/automation-clients.md b/docs/mfc/automation-clients.md index 989c65eed90..f54f51f9a75 100644 --- a/docs/mfc/automation-clients.md +++ b/docs/mfc/automation-clients.md @@ -3,10 +3,12 @@ description: "Learn more about: Automation Clients" title: "Automation Clients" ms.date: "11/04/2016" helpviewer_keywords: ["clients, Automation", "Automation clients", "type libraries, Automation clients", "clients"] -ms.assetid: 84e34a79-06f6-4752-a33b-ae0ede1d8ecf --- # Automation Clients +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Automation makes it possible for your application to manipulate objects implemented in another application, or to expose objects so they can be manipulated. An Automation client is an application that can manipulate exposed objects belonging to another application. The application that exposes the objects is called the Automation server. The client manipulates the server application's objects by accessing those objects' properties and functions. ### Types of Automation Clients diff --git a/docs/mfc/automation-servers-object-lifetime-issues.md b/docs/mfc/automation-servers-object-lifetime-issues.md index 457ac5ea555..6f33844414c 100644 --- a/docs/mfc/automation-servers-object-lifetime-issues.md +++ b/docs/mfc/automation-servers-object-lifetime-issues.md @@ -3,10 +3,12 @@ description: "Learn more about: Automation Servers: Object-Lifetime Issues" title: "Automation Servers: Object-Lifetime Issues" ms.date: "11/04/2016" helpviewer_keywords: ["objects [MFC], lifetime", "lifetime, automation server", "Automation servers, object lifetime", "servers, lifetime of Automation"] -ms.assetid: 342baacf-4015-4a0e-be2f-321424f1cb43 --- # Automation Servers: Object-Lifetime Issues +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When an Automation client creates or activates an OLE item, the server passes the client a pointer to that object. The client establishes a reference to the object through a call to the OLE function [IUnknown::AddRef](/windows/win32/api/unknwn/nf-unknwn-iunknown-addref). This reference is in effect until the client calls [IUnknown::Release](/windows/win32/api/unknwn/nf-unknwn-iunknown-release). (Client applications written with the Microsoft Foundation Class Library's OLE classes need not make these calls; the framework does so.) The OLE system and the server itself may establish references to the object. A server should not destroy an object as long as external references to the object remain in effect. The framework maintains an internal count of the number of references to any server object derived from [CCmdTarget](reference/ccmdtarget-class.md). This count is updated when an Automation client or other entity adds or releases a reference to the object. diff --git a/docs/mfc/automation-servers.md b/docs/mfc/automation-servers.md index 848c8d97b37..18100344f5f 100644 --- a/docs/mfc/automation-servers.md +++ b/docs/mfc/automation-servers.md @@ -3,10 +3,12 @@ description: "Learn more about: Automation Servers" title: "Automation Servers" ms.date: "11/04/2016" helpviewer_keywords: ["Automation servers", "COM components, Automation servers", "dispatch maps [MFC], Automation servers", "servers, Automation"] -ms.assetid: 523fd155-51ce-4f91-b986-b74bdbdd7d92 --- # Automation Servers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Automation makes it possible for your application to manipulate objects implemented in another application, or to expose objects so they can be manipulated. An Automation server is an application that exposes programmable objects (called Automation objects) to other applications (called [Automation clients](automation-clients.md)). Automation servers are sometimes called Automation components. Exposing Automation objects enables clients to automate certain procedures by directly accessing the objects and functionality the server makes available. Exposing objects this way is beneficial when applications provide functionality that is useful for other applications. For example, a word processor might expose its spell-checking functionality so that other programs can use it. Exposure of objects thus enables vendors to improve their applications' functionality by using the ready-made functionality of other applications. diff --git a/docs/mfc/automation.md b/docs/mfc/automation.md index 9951fd3eff3..82f2e62b4e8 100644 --- a/docs/mfc/automation.md +++ b/docs/mfc/automation.md @@ -3,10 +3,12 @@ description: "Learn more about: Automation" title: "Automation" ms.date: "11/04/2016" helpviewer_keywords: ["Automation servers, about Automation servers", "clients, Automation", "programmatic control [MFC]", "properties [MFC], Automation", "MFC, COM support", "OLE Automation", "Automation", "servers [MFC], Automation", "Automation clients", "sample applications [MFC], Automation", "methods [MFC]", "passing parameters, Automation", "Automation method [MFC]", "Automation, passing parameters", "Automation property [MFC]", "MFC COM, Automation", "methods [MFC], Automation"] -ms.assetid: 329117f0-c1aa-4680-a901-bfb71277dfba --- # Automation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Automation (formerly known as OLE Automation) makes it possible for one application to manipulate objects implemented in another application, or to expose objects so they can be manipulated. An [Automation server](automation-servers.md) is an application (a type of COM server) that exposes its functionality through COM interfaces to other applications, called [Automation clients](automation-clients.md). The exposure enables Automation clients to automate certain functions by directly accessing objects and using the services they provide. diff --git a/docs/mfc/bottomless-rich-edit-controls.md b/docs/mfc/bottomless-rich-edit-controls.md index c157bbf3bd6..a967cd0b048 100644 --- a/docs/mfc/bottomless-rich-edit-controls.md +++ b/docs/mfc/bottomless-rich-edit-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Bottomless Rich Edit Controls" title: "Bottomless Rich Edit Controls" ms.date: "11/04/2016" helpviewer_keywords: ["bottomless rich edit controls", "rich edit controls [MFC], bottomless", "CRichEditCtrl class [MFC], bottomless"] -ms.assetid: 2877dd32-1e9a-4fd1-98c0-66dcbbeef1de --- # Bottomless Rich Edit Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Your application can resize a rich edit control ([CRichEditCtrl](reference/cricheditctrl-class.md)) as needed so that it is always the same size as its contents. A rich edit control supports this so-called "bottomless" functionality by sending its parent window an [EN_REQUESTRESIZE](/windows/win32/Controls/en-requestresize) notification message whenever the size of its contents changes. When processing the **EN_REQUESTRESIZE** notification message, an application should resize the control to the dimensions in the specified [REQRESIZE](/windows/win32/api/richedit/ns-richedit-reqresize) structure. An application might also move any information near the control to accommodate the control's change in height. To resize the control, you can use the `CWnd` function [SetWindowPos](reference/cwnd-class.md#setwindowpos). diff --git a/docs/mfc/build-requirements-for-windows-vista-common-controls.md b/docs/mfc/build-requirements-for-windows-vista-common-controls.md index 1120d633c74..b54c1c9796d 100644 --- a/docs/mfc/build-requirements-for-windows-vista-common-controls.md +++ b/docs/mfc/build-requirements-for-windows-vista-common-controls.md @@ -3,11 +3,13 @@ description: "Learn more about: Build Requirements for Windows Common Controls" title: "Build Requirements for Windows Common Controls" ms.date: "08/19/2019" helpviewer_keywords: ["Common Controls (MFC), build requirements", "Common Controls (MFC)"] -ms.assetid: 025f7d55-55a2-4dcd-8f62-02424e3dcc04 ms.topic: how-to --- # Build Requirements for Windows Common Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Class (MFC) library supports [Windows Common Controls](/windows/win32/controls/common-controls-intro). The Common Controls are included in Windows and the library is included in Visual Studio. The MFC library provides new methods that enhance existing classes, and additional classes and methods that support Windows Common Controls. When you build your application, you should follow the compilation and migration requirements that are described in the following sections. ## Compilation Requirements diff --git a/docs/mfc/building-on-the-framework.md b/docs/mfc/building-on-the-framework.md index 7b339c588e9..e11f3d9f318 100644 --- a/docs/mfc/building-on-the-framework.md +++ b/docs/mfc/building-on-the-framework.md @@ -3,11 +3,13 @@ description: "Learn more about: Building on the Framework" title: "Building on the Framework" ms.date: "11/04/2016" helpviewer_keywords: ["application-specific classes [MFC]", "application framework [MFC], building applications", "applications [MFC]", "MFC, application development"] -ms.assetid: 883f0f19-866f-4221-8a3d-5607941dc8d0 ms.topic: concept-article --- # Building on the Framework +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Your role in configuring an application with the MFC framework is to supply the application-specific source code and to connect the components by defining what messages and commands to which they respond. You use the C++ language and standard C++ techniques to derive your own application-specific classes from those supplied by the class library and to override and augment the base class's behavior. In related topics, the following tables describe the general sequence of operations you will typically follow and your responsibilities versus the framework's responsibilities: diff --git a/docs/mfc/bypassing-the-serialization-mechanism.md b/docs/mfc/bypassing-the-serialization-mechanism.md index 045392c70cc..0ea67bc23c5 100644 --- a/docs/mfc/bypassing-the-serialization-mechanism.md +++ b/docs/mfc/bypassing-the-serialization-mechanism.md @@ -3,11 +3,13 @@ description: "Learn more about: Bypassing the Serialization Mechanism" title: "Bypassing the Serialization Mechanism" ms.date: "11/04/2016" helpviewer_keywords: ["archive objects [MFC]", "bypassing serialization", "archives [MFC], serialization", "serialization [MFC], bypassing", "archives [MFC]", "serialization [MFC], role of framework", "serialization [MFC], overriding"] -ms.assetid: 48d4a279-b51c-4ba5-81cd-ed043312b582 ms.topic: concept-article --- # Bypassing the Serialization Mechanism +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As you have seen, the framework provides a default way to read and write data to and from files. Serializing through an archive object suits the needs of a great many applications. Such an application reads a file entirely into memory, lets the user update the file, and then writes the updated version to disk again. However, some applications operate on data very differently, and for these applications serialization through an archive is not suitable. Examples include database programs, programs that edit only parts of large files, programs that write text-only files, and programs that share data files. diff --git a/docs/mfc/callback-items-and-the-callback-mask.md b/docs/mfc/callback-items-and-the-callback-mask.md index d94e970a78f..b130b9c51b1 100644 --- a/docs/mfc/callback-items-and-the-callback-mask.md +++ b/docs/mfc/callback-items-and-the-callback-mask.md @@ -3,10 +3,12 @@ description: "Learn more about: Callback Items and the Callback Mask" title: "Callback Items and the Callback Mask" ms.date: "11/04/2016" helpviewer_keywords: ["callback items in CListCtrl class [MFC]", "CListCtrl class [MFC], callback item and callback mask"] -ms.assetid: 67c1f76f-6144-453e-9376-6712f89430ae --- # Callback Items and the Callback Mask +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For each of its items, a list view control typically stores the label text, the image list index of the item's icons, and a set of bit flags for the item's state. You can define individual items as callback items, which are useful if your application already stores some of the information for an item. You define an item as a callback item by specifying appropriate values for the `pszText` and `iImage` members of the `LVITEM` structure (see [CListCtrl::GetItem](reference/clistctrl-class.md#getitem)). If the application maintains the item's or subitem's text, specify the **LPSTR_TEXTCALLBACK** value for the `pszText` member. If the application keeps track of the icon for the item, specify the **I_IMAGECALLBACK** value for the `iImage` member. diff --git a/docs/mfc/changing-list-control-styles.md b/docs/mfc/changing-list-control-styles.md index 3f64060811f..3dbf36eb17a 100644 --- a/docs/mfc/changing-list-control-styles.md +++ b/docs/mfc/changing-list-control-styles.md @@ -3,11 +3,13 @@ description: "Learn more about: Changing List Control Styles" title: "Changing List Control Styles" ms.date: "11/04/2016" helpviewer_keywords: ["styles [MFC], CListCtrl", "CListCtrl class [MFC], styles", "CListCtrl class [MFC], changing styles"] -ms.assetid: be74a005-0795-417c-9056-f6342aa74b26 ms.topic: concept-article --- # Changing List Control Styles +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can change the window style of a list control ([CListCtrl](reference/clistctrl-class.md)) at any time after you create it. By changing the window style, you change the kind of view the control uses. For example, to emulate the Explorer, you might supply menu items or toolbar buttons for switching the control between different views: icon view, list view, and so on. For example, when the user selects your menu item, you could make a call to [GetWindowLong](/windows/win32/api/winuser/nf-winuser-getwindowlongw) to retrieve the current style of the control and then call [SetWindowLong](/windows/win32/api/winuser/nf-winuser-setwindowlongw) to reset the style. For more information, see [Using List View Controls](/windows/win32/Controls/using-list-view-controls) in the Windows SDK. diff --git a/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md b/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md index eb6d87a53c4..cd497f782a3 100644 --- a/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md +++ b/docs/mfc/changing-the-styles-of-a-window-created-by-mfc.md @@ -3,11 +3,13 @@ description: "Learn more about: Changing the Styles of a Window Created by MFC" title: "Changing the Styles of a Window Created by MFC" ms.date: "11/04/2016" helpviewer_keywords: ["window styles [MFC]", "WS_OVERLAPPEDWINDOW macro [MFC]", "single document interface (SDI), changing window attributes", "MDI [MFC], window styles", "windows [MFC], MFC", "child windows [MFC], styles", "MFC, windows", "CFrameWnd class [MFC], window styles", "CREATESTRUCT macro [MFC]", "CMDIChildWnd class [MFC], changing window styles", "multidocument interface style", "PreCreateWindow method [MFC], window styles", "single document interface (SDI), style", "default window style", "defaults [MFC], window style", "PreCreateWindow method [MFC], changing window styles", "CMainFrame class [MFC]", "styles [MFC], windows"] -ms.assetid: 77fa4f03-96b4-4687-9ade-41e46f7e4b0a ms.topic: concept-article --- # Changing the Styles of a Window Created by MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In its version of the `WinMain` function, MFC registers several standard window classes for you. Because you don't normally edit MFC's `WinMain`, that function gives you no opportunity to change the MFC default window styles. This article explains how you can change the styles of such a preregistered window class in an existing application. ## Changing Styles in a New MFC Application diff --git a/docs/mfc/character-formatting-in-rich-edit-controls.md b/docs/mfc/character-formatting-in-rich-edit-controls.md index 640717720d1..ed92e73f6da 100644 --- a/docs/mfc/character-formatting-in-rich-edit-controls.md +++ b/docs/mfc/character-formatting-in-rich-edit-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Character Formatting in Rich Edit Controls" title: "Character Formatting in Rich Edit Controls" ms.date: "11/04/2016" helpviewer_keywords: ["formatting [MFC], characters", "rich edit controls [MFC], character formatting in", "CRichEditCtrl class [MFC], character formatting in"] -ms.assetid: c80f4305-75ad-45f9-8d17-d83d0fe79be5 --- # Character Formatting in Rich Edit Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can use member functions of the rich edit control ([CRichEditCtrl](reference/cricheditctrl-class.md)) to format characters and to retrieve formatting information. For characters, you can specify typeface, size, color, and effects such as bold, italic, and protected. You can apply character formatting by using the [SetSelectionCharFormat](reference/cricheditctrl-class.md#setselectioncharformat) and [SetWordCharFormat](reference/cricheditctrl-class.md#setwordcharformat) member functions. To determine the current character formatting for the selected text, use the [GetSelectionCharFormat](reference/cricheditctrl-class.md#getselectioncharformat) member function. The [CHARFORMAT](/windows/win32/api/richedit/ns-richedit-charformata) structure is used with these member functions to specify character attributes. One of the important members of **CHARFORMAT** is **dwMask**. In `SetSelectionCharFormat` and `SetWordCharFormat`, **dwMask** specifies which character attributes will be set by this function call. `GetSelectionCharFormat` reports the attributes of the first character in the selection; **dwMask** specifies the attributes that are consistent throughout the selection. diff --git a/docs/mfc/class-library-overview.md b/docs/mfc/class-library-overview.md index 514443b1180..95f1076e12d 100644 --- a/docs/mfc/class-library-overview.md +++ b/docs/mfc/class-library-overview.md @@ -4,11 +4,13 @@ title: "Class Library Overview" ms.date: "09/17/2019" f1_keywords: ["vc.classes.mfc"] helpviewer_keywords: ["grouping MFC classes", "MFC, class library", "classes [MFC], MFC", "class libraries, MFC", "class libraries"] -ms.assetid: 9b0e3152-ac39-4f52-91b4-f20aa3a674aa ms.topic: concept-article --- # Class Library Overview +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This overview categorizes and describes the classes in the Microsoft Foundation Class Library (MFC) version 9.0. The classes in MFC, taken together, constitute an application framework — the framework of an application written for the Windows API. Your programming task is to fill in the code that is specific to your application. The library's classes are presented here in the following categories: diff --git a/docs/mfc/classes-related-to-rich-edit-controls.md b/docs/mfc/classes-related-to-rich-edit-controls.md index 2f7155637b6..de2b4a37401 100644 --- a/docs/mfc/classes-related-to-rich-edit-controls.md +++ b/docs/mfc/classes-related-to-rich-edit-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Classes Related to Rich Edit Controls" title: "Classes Related to Rich Edit Controls" ms.date: "11/04/2016" helpviewer_keywords: ["rich edit controls [MFC], and CRichEditItem", "CRichEditCtrl class [MFC], related classes", "CRichEditDoc class [MFC], Rich Edit controls", "rich edit controls [MFC], classes related to", "classes [MFC], related to rich edit controls", "rich edit controls [MFC], and CRichEditView", "CRichEditCtrlItem class and CRichEditCtrl", "rich edit controls [MFC], and CRichEditDoc", "CRichEditView class [MFC], and CRichEditCtrl"] -ms.assetid: 4b31c2cc-6ea1-4146-b7c5-b0b5b419f14d --- # Classes Related to Rich Edit Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The [CRichEditView](reference/cricheditview-class.md), [CRichEditDoc](reference/cricheditdoc-class.md), and [CRichEditCntrItem](reference/cricheditcntritem-class.md) classes provide the functionality of the rich edit control ([CRichEditCtrl](reference/cricheditctrl-class.md)) within the context of MFC's document/view architecture. `CRichEditView` maintains the text and formatting characteristic of text. `CRichEditDoc` maintains the list of OLE client items that are in the view. `CRichEditCntrItem` provides container-side access to the OLE client item. To modify the contents of a `CRichEditView`, use [CRichEditView::GetRichEditCtrl](reference/cricheditview-class.md#getricheditctrl) to access the underlying rich edit control. ## See also diff --git a/docs/mfc/cleaning-up-documents-and-views.md b/docs/mfc/cleaning-up-documents-and-views.md index ff3d94b0ca2..91b6ec01c28 100644 --- a/docs/mfc/cleaning-up-documents-and-views.md +++ b/docs/mfc/cleaning-up-documents-and-views.md @@ -3,11 +3,13 @@ description: "Learn more about: Cleaning Up Documents and Views" title: "Cleaning Up Documents and Views" ms.date: "11/04/2016" helpviewer_keywords: ["views [MFC], cleaning up", "documents [MFC], cleaning up", "documents [MFC], closing"] -ms.assetid: 0c454db2-3644-434d-9e53-8108a7aedfe1 ms.topic: concept-article --- # Cleaning Up Documents and Views +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When a document is closing, the framework first calls its [DeleteContents](reference/cdocument-class.md#deletecontents) member function. If you allocated any memory on the heap during the course of the document's operation, `DeleteContents` is the best place to deallocate it. > [!NOTE] diff --git a/docs/mfc/clipboard-adding-other-formats.md b/docs/mfc/clipboard-adding-other-formats.md index f3e9ef9e30b..235d391e58c 100644 --- a/docs/mfc/clipboard-adding-other-formats.md +++ b/docs/mfc/clipboard-adding-other-formats.md @@ -3,10 +3,12 @@ description: "Learn more about: Clipboard: Adding Other Formats" title: "Clipboard: Adding Other Formats" ms.date: "11/04/2016" helpviewer_keywords: ["formats [MFC], Clipboard", "Clipboard, formats", "custom formats, placing on Clipboard", "custom formats", "registering custom Clipboard data formats", "custom Clipboard data formats"] -ms.assetid: aea58159-65ed-4385-aeaa-3d9d5281903b --- # Clipboard: Adding Other Formats +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic explains how to expand the list of supported formats, particularly for OLE support. The topic [Clipboard: Copying and Pasting Data](clipboard-copying-and-pasting-data.md) describes the minimum implementation necessary to support copying and pasting from the Clipboard. If this is all you implement, the only formats placed on the Clipboard are **CF_METAFILEPICT**, **CF_EMBEDSOURCE**, **CF_OBJECTDESCRIPTOR**, and possibly **CF_LINKSOURCE**. Most applications will need more formats on the Clipboard than these three. ## Registering Custom Formats diff --git a/docs/mfc/clipboard-copying-and-pasting-data.md b/docs/mfc/clipboard-copying-and-pasting-data.md index 4225da141bf..f2e50f84159 100644 --- a/docs/mfc/clipboard-copying-and-pasting-data.md +++ b/docs/mfc/clipboard-copying-and-pasting-data.md @@ -3,10 +3,12 @@ description: "Learn more about: Clipboard: Copying and Pasting Data" title: "Clipboard: Copying and Pasting Data" ms.date: "11/04/2016" helpviewer_keywords: ["Clipboard, copying data to", "Clipboard, pasting"] -ms.assetid: 580e10be-241f-4f9f-94cf-8302edc5beef --- # Clipboard: Copying and Pasting Data +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic describes the minimum work necessary to implement copying to and pasting from the Clipboard in your OLE application. It is recommended that you read the [Data Objects and Data Sources (OLE)](data-objects-and-data-sources-ole.md) topics before proceeding. Before you can implement either copying or pasting, you must first provide functions to handle the Copy, Cut, and Paste options on the Edit menu. diff --git a/docs/mfc/clipboard-operations-in-rich-edit-controls.md b/docs/mfc/clipboard-operations-in-rich-edit-controls.md index 972af313345..08b46730de2 100644 --- a/docs/mfc/clipboard-operations-in-rich-edit-controls.md +++ b/docs/mfc/clipboard-operations-in-rich-edit-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Clipboard Operations in Rich Edit Controls" title: "Clipboard Operations in Rich Edit Controls" ms.date: "11/04/2016" helpviewer_keywords: ["pasting Clipboard data", "CRichEditCtrl class [MFC], paste operation", "cut operation in CRichEditCtrl class [MFC]", "CRichEditCtrl class [MFC], Clipboard operations", "copy operations in rich edit controls", "Clipboard, operations in CRichEditCtrl", "rich edit controls [MFC], Clipboard operations"] -ms.assetid: 15ce66bc-2636-4a35-a2ae-d52285dc1af6 --- # Clipboard Operations in Rich Edit Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Your application can paste the contents of the Clipboard into a rich edit control ([CRichEditCtrl](reference/cricheditctrl-class.md)) using either the best available Clipboard format or a specific Clipboard format. You can also determine whether a rich edit control is capable of pasting a Clipboard format. You can copy or cut the contents of the current selection by using the [Copy](reference/cricheditctrl-class.md#copy) or [Cut](reference/cricheditctrl-class.md#cut) member function. Similarly, you can paste the contents of the Clipboard into a rich edit control by using the [Paste](reference/cricheditctrl-class.md#paste) member function. The control pastes the first available format that it recognizes, which presumably is the most descriptive format. diff --git a/docs/mfc/clipboard-using-the-ole-clipboard-mechanism.md b/docs/mfc/clipboard-using-the-ole-clipboard-mechanism.md index 53da3be2654..288e42cffd2 100644 --- a/docs/mfc/clipboard-using-the-ole-clipboard-mechanism.md +++ b/docs/mfc/clipboard-using-the-ole-clipboard-mechanism.md @@ -3,10 +3,12 @@ description: "Learn more about: Clipboard: Using the OLE Clipboard Mechanism" title: "Clipboard: Using the OLE Clipboard Mechanism" ms.date: "11/04/2016" helpviewer_keywords: ["applications [OLE], Clipboard", "OLE Clipboard", "Clipboard [MFC], OLE formats", "OLE Clipboard, formats", "formats [MFC], Clipboard for OLE"] -ms.assetid: 229cc610-5bb1-435e-bd20-2c8b9964d1af --- # Clipboard: Using the OLE Clipboard Mechanism +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + OLE uses standard formats and some OLE-specific formats for transferring data through the Clipboard. When you cut or copy data from an application, the data is stored on the Clipboard to be used later in paste operations. This data is in a variety of formats. When a user chooses to paste data from the Clipboard, the application can choose which of these formats to use. The application should be written to choose the format that provides the most information, unless the user specifically asks for a certain format, using Paste Special. Before continuing, you may want to read the [Data Objects and Data Sources (OLE)](data-objects-and-data-sources-ole.md) topics. They describe the fundamentals of how data transfers work, and how to implement them in your applications. diff --git a/docs/mfc/clipboard-using-the-windows-clipboard.md b/docs/mfc/clipboard-using-the-windows-clipboard.md index e07d461aecc..648e989ca4f 100644 --- a/docs/mfc/clipboard-using-the-windows-clipboard.md +++ b/docs/mfc/clipboard-using-the-windows-clipboard.md @@ -3,10 +3,12 @@ description: "Learn more about: Clipboard: Using the Windows Clipboard" title: "Clipboard: Using the Windows Clipboard" ms.date: "11/04/2016" helpviewer_keywords: ["Clipboard commands", "Cut/Copy and Paste command handler functions [MFC]", "handler functions, Cut/Copy and Paste commands", "Clipboard [MFC], commands", "commands [MFC], implementing Edit", "Clipboard commands [MFC], implementing", "Windows Clipboard [MFC]", "Clipboard [MFC], Windows Clipboard API"] -ms.assetid: 24415b42-9301-4a70-b69a-44c97918319f --- # Clipboard: Using the Windows Clipboard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic describes how to use the standard Windows Clipboard API within your MFC application. Most applications for Windows support cutting or copying data to the Windows Clipboard and pasting data from the Clipboard. The Clipboard data formats vary among applications. The framework supports only a limited number of Clipboard formats for a limited number of classes. You will normally implement the Clipboard-related commands — Cut, Copy, and Paste — on the Edit menu for your view. The class library defines the command IDs for these commands: **ID_EDIT_CUT**, **ID_EDIT_COPY**, and **ID_EDIT_PASTE**. Their message-line prompts are also defined. diff --git a/docs/mfc/clipboard-when-to-use-each-clipboard-mechanism.md b/docs/mfc/clipboard-when-to-use-each-clipboard-mechanism.md index b9c8f734ae9..28de3cdfcfc 100644 --- a/docs/mfc/clipboard-when-to-use-each-clipboard-mechanism.md +++ b/docs/mfc/clipboard-when-to-use-each-clipboard-mechanism.md @@ -3,10 +3,12 @@ description: "Learn more about: Clipboard: When to Use Each Clipboard Mechanism" title: "Clipboard: When to Use Each Clipboard Mechanism" ms.date: "11/04/2016" helpviewer_keywords: ["applications [OLE], Clipboard", "OLE Clipboard, guidelines", "Clipboard [MFC], mechanisms", "OLE Clipboard, formats", "formats [MFC], Clipboard for OLE", "Clipboard [MFC], formats"] -ms.assetid: fd071996-ef8c-488b-81bd-89057095a201 --- # Clipboard: When to Use Each Clipboard Mechanism +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Follow these guidelines in using the Clipboard: - Use the OLE Clipboard mechanism now to enable new capabilities in the future. While the standard Clipboard API will be maintained, the OLE mechanism is the future of data transfer. diff --git a/docs/mfc/clipboard.md b/docs/mfc/clipboard.md index 9e667377481..cbbc987570c 100644 --- a/docs/mfc/clipboard.md +++ b/docs/mfc/clipboard.md @@ -3,10 +3,12 @@ description: "Learn more about: Clipboard" title: "Clipboard" ms.date: "11/04/2016" helpviewer_keywords: ["cutting and copying data", "copying data", "Clipboard", "Clipboard, programming", "transferring data"] -ms.assetid: a71b2824-1f14-4914-8816-54578d73ad4e --- # Clipboard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This family of articles explains how to implement support for the Windows Clipboard in MFC applications. The Windows Clipboard is used in two ways: - Implementing standard Edit menu commands, such as Cut, Copy, and Paste. diff --git a/docs/mfc/closing-files.md b/docs/mfc/closing-files.md index 2e72fde16a9..84f96abc670 100644 --- a/docs/mfc/closing-files.md +++ b/docs/mfc/closing-files.md @@ -3,11 +3,13 @@ description: "Learn more about: Closing Files" title: "Closing Files" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, file operations", "files [MFC], closing"] -ms.assetid: 8415a3a8-3c75-45b0-ac2a-d5385f49bdb3 ms.topic: how-to --- # Closing Files +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As usual in I/O operations, once you finish with a file, you must close it. #### To close a file diff --git a/docs/mfc/closing-the-dialog-box.md b/docs/mfc/closing-the-dialog-box.md index 38ab0e8290a..bd987c2dd53 100644 --- a/docs/mfc/closing-the-dialog-box.md +++ b/docs/mfc/closing-the-dialog-box.md @@ -3,11 +3,13 @@ description: "Learn more about: Closing the Dialog Box" title: "Closing the Dialog Box" ms.date: "11/04/2016" helpviewer_keywords: ["MFC dialog boxes [MFC], closing", "dialog boxes [MFC], closing"] -ms.assetid: 946f5675-c482-46a4-a5dd-34fe138ffae5 ms.topic: concept-article --- # Closing the Dialog Box +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A modal dialog box closes when the user chooses one of its buttons, typically the OK button or the Cancel button. Choosing the OK or Cancel button causes Windows to send the dialog object a **BN_CLICKED** control-notification message with the button's ID, either **IDOK** or **IDCANCEL**. `CDialog` provides default handler functions for these messages: `OnOK` and `OnCancel`. The default handlers call the `EndDialog` member function to close the dialog window. You can also call `EndDialog` from your own code. For more information, see the [EndDialog](reference/cdialog-class.md#enddialog) member function of class `CDialog` in the *MFC Reference*. To arrange for closing and deleting a modeless dialog box, override `PostNcDestroy` and invoke the **`delete`** operator on the **`this`** pointer. [Destroying the Dialog Box](destroying-the-dialog-box.md) explains what happens next. diff --git a/docs/mfc/cobject-class-frequently-asked-questions.md b/docs/mfc/cobject-class-frequently-asked-questions.md index 2689374466d..9e356260f82 100644 --- a/docs/mfc/cobject-class-frequently-asked-questions.md +++ b/docs/mfc/cobject-class-frequently-asked-questions.md @@ -3,11 +3,13 @@ description: "Learn more about: CObject Class: Frequently Asked Questions" title: "CObject Class: Frequently Asked Questions" ms.date: "11/04/2016" helpviewer_keywords: ["CObject class [MFC], FAQ"] -ms.assetid: 809a8b99-a2f8-4e16-8b4b-023c94f4125c ms.topic: faq --- # CObject Class: Frequently Asked Questions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This section covers questions on class `CObject`. ## What do you want to know more about diff --git a/docs/mfc/collections.md b/docs/mfc/collections.md index 7d2d849f052..233816a3beb 100644 --- a/docs/mfc/collections.md +++ b/docs/mfc/collections.md @@ -3,10 +3,12 @@ description: "Learn more about: Collections" title: "Collections" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, collections", "arrays [MFC], classes", "MFC collection classes", "shapes, collection", "collection classes [MFC], MFC", "collections, about collections", "array templates [MFC]", "collection classes [MFC], template-based", "collection classes [MFC], about collection classes", "collection classes [MFC], maps", "collection classes [MFC], arrays", "shapes", "collection classes [MFC], lists", "collection classes [MFC], shapes"] -ms.assetid: 02586e4c-851d-41d0-a722-feb11c17c74c --- # Collections +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Class Library provides collection classes to manage groups of objects. These classes are of two types: - [Collection classes created from C++ templates](#_core_the_template_based_collection_classes) diff --git a/docs/mfc/com-interface-entry-points.md b/docs/mfc/com-interface-entry-points.md index 1a35f4c9324..b91a767e41c 100644 --- a/docs/mfc/com-interface-entry-points.md +++ b/docs/mfc/com-interface-entry-points.md @@ -3,10 +3,12 @@ description: "Learn more about: COM Interface Entry Points" title: "COM Interface Entry Points" ms.date: "03/27/2019" helpviewer_keywords: ["entry points, COM interfaces", "state management, OLE/COM interfaces", "MFC COM, COM interface entry points", "OLE, interface entry points", "MFC, managing state data", "COM interfaces, entry points"] -ms.assetid: 9e7421dc-0731-4748-9e1b-90acbaf26d77 --- # COM Interface Entry Points +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For member functions of a COM interface, use the `METHOD_PROLOGUE` macro to maintain the proper global state when calling methods of an exported interface. Typically, member functions of interfaces implemented by `CCmdTarget`-derived objects already use this macro to provide automatic initialization of the `pThis` pointer. For example: diff --git a/docs/mfc/command-ids.md b/docs/mfc/command-ids.md index d5508f8a545..250be8c082e 100644 --- a/docs/mfc/command-ids.md +++ b/docs/mfc/command-ids.md @@ -3,10 +3,12 @@ description: "Learn more about: Command IDs" title: "Command IDs" ms.date: "11/04/2016" helpviewer_keywords: ["command IDs, MFC", "command IDs"] -ms.assetid: e0171a2b-45b9-41fa-945d-ec2f7602ded0 --- # Command IDs +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A command is fully described by its command ID alone (encoded in the **WM_COMMAND** message). This ID is assigned to the user-interface object that generates the command. Typically, IDs are named for the functionality of the user-interface object they are assigned to. For example, a Clear All item in the Edit menu might be assigned an ID such as **ID_EDIT_CLEAR_ALL**. The class library predefines some IDs, particularly for commands that the framework handles itself, such as **ID_EDIT_CLEAR_ALL** or **ID_FILE_OPEN**. You will create other command IDs yourself. diff --git a/docs/mfc/command-routing-classes.md b/docs/mfc/command-routing-classes.md index 267d4b9b8ef..e77f0a2b5bd 100644 --- a/docs/mfc/command-routing-classes.md +++ b/docs/mfc/command-routing-classes.md @@ -4,10 +4,12 @@ title: "Command Routing Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.command"] helpviewer_keywords: ["MFC, command routing", "command routing [MFC], classes"] -ms.assetid: 4b50e689-2c54-4e6c-90f0-37333e22b2a1 --- # Command Routing Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As the user interacts with the application by choosing menus or control-bar buttons with the mouse, the application sends messages from the affected user-interface object to an appropriate command-target object. Command-target classes derived from `CCmdTarget` include [CWinApp](reference/cwinapp-class.md), [CWnd](reference/cwnd-class.md), [CDocTemplate](reference/cdoctemplate-class.md), [CDocument](reference/cdocument-class.md), [CView](reference/cview-class.md), and the classes derived from them. The framework supports automatic command routing so that commands can be handled by the most appropriate object currently active in the application. An object of class `CCmdUI` is passed to your command targets' update command UI ([ON_UPDATE_COMMAND_UI](reference/message-map-macros-mfc.md#on_update_command_ui)) handlers to allow you to update the state of the user interface for a particular command (for instance, to check or remove the check from menu items). You call member functions of the `CCmdUI` object to update the state of the UI object. This process is the same whether the UI object associated with a particular command is a menu item or a button or both. diff --git a/docs/mfc/command-routing-illustration.md b/docs/mfc/command-routing-illustration.md index 29ae9a7f00a..4274d6930bd 100644 --- a/docs/mfc/command-routing-illustration.md +++ b/docs/mfc/command-routing-illustration.md @@ -3,11 +3,13 @@ description: "Learn more about: Command Routing Illustration" title: "Command Routing Illustration" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, command routing", "command handling [MFC], routing commands", "command routing [MFC], OnCmdMsg handler"] -ms.assetid: 4b7b4741-565f-4878-b076-fd85c670f87f ms.topic: how-to --- # Command Routing Illustration +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To illustrate, consider a command message from a Clear All menu item in an MDI application's Edit menu. Suppose the handler function for this command happens to be a member function of the application's document class. Here's how that command reaches its handler after the user chooses the menu item: 1. The main frame window receives the command message first. diff --git a/docs/mfc/command-routing.md b/docs/mfc/command-routing.md index a3514eb4e28..8f140daaf38 100644 --- a/docs/mfc/command-routing.md +++ b/docs/mfc/command-routing.md @@ -3,11 +3,13 @@ description: "Learn more about: Command Routing" title: "Command Routing" ms.date: "09/06/2019" helpviewer_keywords: ["MFC, command routing", "command handling [MFC], routing commands", "handlers [MFC]", "handlers, command [MFC]", "command routing"] -ms.assetid: 9393a956-bdd4-47c5-9013-dbd680433f93 ms.topic: how-to --- # Command Routing +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Your responsibility in working with commands is limited to making message-map connections between commands and their handler functions, a task for which you use the [MFC Class Wizard](reference/mfc-class-wizard.md). You must also write the code for the command handlers. Windows messages are usually sent to the main frame window, but command messages are then routed to other objects. The framework routes commands through a standard sequence of command-target objects, one of which is expected to have a handler for the command. Each command-target object checks its message map to see if it can handle the incoming message. diff --git a/docs/mfc/command-targets.md b/docs/mfc/command-targets.md index 5e7a2bf8afd..74b9485cd3e 100644 --- a/docs/mfc/command-targets.md +++ b/docs/mfc/command-targets.md @@ -3,10 +3,12 @@ description: "Learn more about: Command Targets" title: "Command Targets" ms.date: "11/04/2016" helpviewer_keywords: ["command targets", "command mapping", "messages, command [MFC]", "command routing [MFC], command targets"] -ms.assetid: b0f784e5-c6dc-4391-9e71-aa7b7dcbe9f0 --- # Command Targets +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The figure [Commands in the Framework](user-interface-objects-and-command-ids.md) shows the connection between a user-interface object, such as a menu item, and the handler function that the framework calls to carry out the resulting command when the object is clicked. Windows sends messages that are not command messages directly to a window whose handler for the message is then called. However, the framework routes commands to a number of candidate objects — called "command targets" — one of which normally invokes a handler for the command. The handler functions work the same way for both commands and standard Windows messages, but the mechanisms by which they are called are different, as explained in [How the Framework Calls a Handler](how-the-framework-calls-a-handler.md). diff --git a/docs/mfc/common-control-sample-list.md b/docs/mfc/common-control-sample-list.md index 4f4e326f4d2..b28e441457f 100644 --- a/docs/mfc/common-control-sample-list.md +++ b/docs/mfc/common-control-sample-list.md @@ -3,10 +3,12 @@ description: "Learn more about: Common Control Sample List" title: "Common Control Sample List" ms.date: "11/04/2016" helpviewer_keywords: ["sample applications [MFC], common controls"] -ms.assetid: 8ae39e2d-12a8-4b17-909d-5bf155749123 --- # Common Control Sample List +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + See the following sample programs that illustrate common controls: - [CMNCTRL1](../overview/visual-cpp-samples.md) diff --git a/docs/mfc/common-dialog-classes.md b/docs/mfc/common-dialog-classes.md index f6221b488d6..329144187af 100644 --- a/docs/mfc/common-dialog-classes.md +++ b/docs/mfc/common-dialog-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: Common Dialog Classes" title: "Common Dialog Classes" ms.date: "11/04/2016" helpviewer_keywords: ["dialog classes [MFC]", "dialog boxes [MFC], Windows common dialogs", "common dialog boxes [MFC], common dialog classes", "common dialog classes [MFC]", "MFC dialog boxes [MFC], Windows common dialogs", "Windows common dialogs [MFC]", "dialog classes [MFC], common", "common dialog boxes [MFC]"] -ms.assetid: 5c4f6443-896c-4b05-a7df-8169fdadc71d --- # Common Dialog Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In addition to class [CDialog](reference/cdialog-class.md), MFC supplies several classes derived from `CDialog` that encapsulate commonly used dialog boxes, as shown in the following table. The dialog boxes encapsulated are called the "common dialog boxes" and are part of the Windows common dialog library (COMMDLG.DLL). The dialog-template resources and code for these classes are provided in the Windows common dialog boxes that are part of Windows versions 3.1 and later. ### Common Dialog Classes diff --git a/docs/mfc/commonly-added-member-functions.md b/docs/mfc/commonly-added-member-functions.md index b5fb6d99fda..0fb89df0040 100644 --- a/docs/mfc/commonly-added-member-functions.md +++ b/docs/mfc/commonly-added-member-functions.md @@ -3,10 +3,12 @@ description: "Learn more about: Commonly Added Member Functions" title: "Commonly Added Member Functions" ms.date: "11/04/2016" helpviewer_keywords: ["CDialog class [MFC], members", "MFC dialog boxes [MFC], control-notification messages", "dialog classes [MFC], commonly added member functions"] -ms.assetid: f6bd50e8-872a-4039-9996-a85bfccea18d --- # Commonly Added Member Functions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If your dialog box contains pushbuttons other than OK or Cancel, you need to write message-handler member functions in your dialog class to respond to the control-notification messages they generate. For an example, see the [Scribble](../overview/visual-cpp-samples.md) sample program. You can also handle control-notification messages from other controls in your dialog box. ## See also diff --git a/docs/mfc/commonly-overridden-member-functions.md b/docs/mfc/commonly-overridden-member-functions.md index 41cd982858e..5e25df0d7ef 100644 --- a/docs/mfc/commonly-overridden-member-functions.md +++ b/docs/mfc/commonly-overridden-member-functions.md @@ -3,10 +3,12 @@ description: "Learn more about: Commonly Overridden Member Functions" title: "Commonly Overridden Member Functions" ms.date: "09/06/2019" helpviewer_keywords: ["CDialog class [MFC], members", "OnInitDialog function", "dialog classes [MFC], commonly overridden member functions", "OnCancel function", "overriding, dialog class members", "OnOK function", "MFC dialog boxes [MFC], overriding member functions"] -ms.assetid: 78eb566c-e361-4c86-8db5-c7e2791b249a --- # Commonly Overridden Member Functions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following table lists the most likely member functions to override in your `CDialog`-derived class. ### Commonly Overridden Member Functions of Class CDialog diff --git a/docs/mfc/communicating-with-a-tree-control.md b/docs/mfc/communicating-with-a-tree-control.md index 959c9f1fbd6..cc35ab04f2f 100644 --- a/docs/mfc/communicating-with-a-tree-control.md +++ b/docs/mfc/communicating-with-a-tree-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Communicating with a Tree Control" title: "Communicating with a Tree Control" ms.date: "11/04/2016" helpviewer_keywords: ["tree controls [MFC], communicating with", "CTreeCtrl class [MFC], calling member functions", "communications, tree controls", "tree controls"] -ms.assetid: 680ad9ee-b11f-452d-93fa-501ca7d7e069 ms.topic: concept-article --- # Communicating with a Tree Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You use different methods for calling member functions in a [CTreeCtrl](reference/ctreectrl-class.md) object depending on how the object was created: - If the tree control is in a dialog box, use a member variable of type `CTreeCtrl` that you create in the dialog box class. diff --git a/docs/mfc/connection-points.md b/docs/mfc/connection-points.md index fff0b34d7c8..239f9206513 100644 --- a/docs/mfc/connection-points.md +++ b/docs/mfc/connection-points.md @@ -4,10 +4,12 @@ title: "Connection Points" ms.date: "11/19/2018" f1_keywords: ["IConnectionPoint"] helpviewer_keywords: ["IConnectionPoint interface", "connections, connection points", "OLE COM connection points", "MFC COM, connection points", "COM, connection points", "interfaces, IConnectionPoint", "MFC, COM support", "connection points [MFC]", "CCmdTarget class [MFC], and connection points", "sinks, connection points"] -ms.assetid: bc9fd7c7-8df6-4752-ac8c-0b177442c88d --- # Connection Points +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how to implement connection points (formerly known as OLE connection points) using the MFC classes `CCmdTarget` and `CConnectionPoint`. In the past, the Component Object Model (COM) defined a general mechanism (`IUnknown::QueryInterface`*) that allowed objects to implement and expose functionality in interfaces. However, a corresponding mechanism that allowed objects to expose their capability to call specific interfaces was not defined. That is, COM defined how incoming pointers to objects (pointers to that object's interfaces) were handled, but it did not have an explicit model for outgoing interfaces (pointers the object holds to other objects' interfaces). COM now has a model, called connection points, that supports this functionality. diff --git a/docs/mfc/containers-advanced-features.md b/docs/mfc/containers-advanced-features.md index 41c1ce872bf..e4eff569a72 100644 --- a/docs/mfc/containers-advanced-features.md +++ b/docs/mfc/containers-advanced-features.md @@ -3,10 +3,12 @@ description: "Learn more about: Containers: Advanced Features" title: "Containers: Advanced Features" ms.date: "11/04/2016" helpviewer_keywords: ["links [MFC], to embedded OLE objects", "containers [MFC], links to embedded OLE objects", "containers [MFC], advanced features", "container/server applications [MFC]", "embedded objects [MFC]", "OLE controls [MFC], containers", "OLE containers [MFC], advanced features", "server/container applications [MFC]", "containers [MFC], container applications"] -ms.assetid: 221fd99c-b138-40fa-ad6a-974e3b3ad1f8 --- # Containers: Advanced Features +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes the steps necessary to incorporate optional advanced features into existing container applications. These features are: - [An application that is both a container and a server](#_core_creating_a_container_server_application) diff --git a/docs/mfc/containers-client-item-notifications.md b/docs/mfc/containers-client-item-notifications.md index aff7be898fc..81b3d44d4b9 100644 --- a/docs/mfc/containers-client-item-notifications.md +++ b/docs/mfc/containers-client-item-notifications.md @@ -3,10 +3,12 @@ description: "Learn more about: Containers: Client-Item Notifications" title: "Containers: Client-Item Notifications" ms.date: "11/04/2016" helpviewer_keywords: ["notifications [MFC], container client item", "OLE containers [MFC], client-item notifications", "client items and OLE containers"] -ms.assetid: e1f1c427-01f5-45f2-b496-c5bce3d76340 --- # Containers: Client-Item Notifications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article discusses the overridable functions that the MFC framework calls when server applications modify items in your client application's document. [COleClientItem](reference/coleclientitem-class.md) defines several overridable functions that are called in response to requests from the component application, which is also called the server application. These overridables usually act as notifications. They inform the container application of various events, such as scrolling, activation, or a change of position, and of changes that the user makes when editing or otherwise manipulating the item. diff --git a/docs/mfc/containers-client-item-states.md b/docs/mfc/containers-client-item-states.md index 3c0cd589309..a457c8b1b25 100644 --- a/docs/mfc/containers-client-item-states.md +++ b/docs/mfc/containers-client-item-states.md @@ -3,10 +3,12 @@ description: "Learn more about: Containers: Client-Item States" title: "Containers: Client-Item States" ms.date: "11/04/2016" helpviewer_keywords: ["OLE containers [MFC], client-item states", "states, OLE container client-item", "lifetime, lifetime states and OLE container client items", "client items and OLE containers"] -ms.assetid: e7021caa-bd07-4adb-976e-f5f3d025bc53 --- # Containers: Client-Item States +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the different states a client item passes through in its lifetime. A client item passes through several states as it is created, activated, modified, and saved. Each time the item's state changes, the framework calls [COleClientItem::OnChange](reference/coleclientitem-class.md#onchange) with the **OLE_CHANGED_STATE** notification. The second parameter is a value from the `COleClientItem::ItemState` enumeration. It can be one of the following: diff --git a/docs/mfc/containers-client-items.md b/docs/mfc/containers-client-items.md index f2e17257faa..9778f9c51c1 100644 --- a/docs/mfc/containers-client-items.md +++ b/docs/mfc/containers-client-items.md @@ -3,10 +3,12 @@ description: "Learn more about: Containers: Client Items" title: "Containers: Client Items" ms.date: "11/04/2016" helpviewer_keywords: ["OLE containers [MFC], client items", "client items and OLE containers"] -ms.assetid: 231528b5-0744-4f83-8897-083bf55ed087 --- # Containers: Client Items +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains what client items are and from what classes your application should derive its client items. Client items are data items belonging to another application that are either contained in or referenced by an OLE container application's document. Client items whose data is contained within the document are embedded; those whose data is stored in another location referenced by the container document are linked. diff --git a/docs/mfc/containers-compound-files.md b/docs/mfc/containers-compound-files.md index 0ae34087ac0..bfd759966e5 100644 --- a/docs/mfc/containers-compound-files.md +++ b/docs/mfc/containers-compound-files.md @@ -3,10 +3,12 @@ description: "Learn more about: Containers: Compound Files" title: "Containers: Compound Files" ms.date: "11/04/2016" helpviewer_keywords: ["compound files [MFC]", "compound documents", "containers [MFC], compound files", "OLE documents [MFC], compound files", "performance [MFC], compound files", "files [MFC], compound", "standardized file structure compound files", "documents [MFC], compound", "documents [MFC], OLE", "OLE containers [MFC], compound files", "access modes for files [MFC]"] -ms.assetid: 8b83cb3e-76c8-4bbe-ba16-737092b36f49 --- # Containers: Compound Files +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the components and implementation of compound files and the advantages and disadvantages of using compound files in your OLE applications. Compound files are an integral part of OLE. They are used to facilitate data transfer and OLE document storage. Compound files are an implementation of the Active structured storage model. Consistent interfaces exist that support serialization to a storage, a stream, or a file object. Compound files are supported in the Microsoft Foundation Class Library by the classes `COleStreamFile` and `COleDocument`. diff --git a/docs/mfc/containers-for-activex-controls.md b/docs/mfc/containers-for-activex-controls.md index 8b5adeba287..08fb52eff64 100644 --- a/docs/mfc/containers-for-activex-controls.md +++ b/docs/mfc/containers-for-activex-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Containers for ActiveX Controls" title: "Containers for ActiveX Controls" ms.date: "09/12/2018" helpviewer_keywords: ["ActiveX control containers [MFC], application support"] -ms.assetid: 5ff0bf37-07f4-49aa-ad9c-c63d3756243a --- # Containers for ActiveX Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can use ActiveX controls developed in Visual Studio in other applications, as long as they support ActiveX control containment. A number of Microsoft applications, beginning with the versions listed, support ActiveX control containment. >[!IMPORTANT] diff --git a/docs/mfc/containers-implementing-a-container.md b/docs/mfc/containers-implementing-a-container.md index c6dbc10dc32..4fa39bc520c 100644 --- a/docs/mfc/containers-implementing-a-container.md +++ b/docs/mfc/containers-implementing-a-container.md @@ -3,10 +3,12 @@ description: "Learn more about: Containers: Implementing a Container" title: "Containers: Implementing a Container" ms.date: "11/04/2016" helpviewer_keywords: ["applications [OLE], OLE container", "OLE containers [MFC], implementing"] -ms.assetid: af1e2079-619a-4eac-9327-985ad875823a --- # Containers: Implementing a Container +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article summarizes the procedure for implementing a container and points you to other articles that provide more detailed explanations about implementing containers. It also lists some optional OLE features you may want to implement and the articles describing these features. #### To prepare your CWinApp-derived class diff --git a/docs/mfc/containers-user-interface-issues.md b/docs/mfc/containers-user-interface-issues.md index 1e9cd232f72..94b3f0aa1d9 100644 --- a/docs/mfc/containers-user-interface-issues.md +++ b/docs/mfc/containers-user-interface-issues.md @@ -3,10 +3,12 @@ description: "Learn more about: Containers: User-Interface Issues" title: "Containers: User-Interface Issues" ms.date: "11/04/2016" helpviewer_keywords: ["containers [MFC], user-interface issues", "OLE containers [MFC], user interface", "user interface issues"] -ms.assetid: c833c249-a633-4f1c-82d6-ec6b4892863a --- # Containers: User-Interface Issues +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You must add a number of features to a container application's user interface to adequately manage linked and embedded items. These features involve changes to the menu structure and to the events that the application handles. For detailed information about them, see the following articles: |For information on|See| diff --git a/docs/mfc/containers.md b/docs/mfc/containers.md index a7fff2b8a52..8936ef14fca 100644 --- a/docs/mfc/containers.md +++ b/docs/mfc/containers.md @@ -3,10 +3,12 @@ description: "Learn more about: Containers" title: "Containers" ms.date: "11/04/2016" helpviewer_keywords: ["containers [MFC]", "OLE containers", "application containers [MFC]", "containers [MFC], OLE container applications", "containers [MFC], container applications"] -ms.assetid: b19d7c05-4d02-44bd-b76a-4a6c25994a62 --- # Containers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A container application is an application that can incorporate embedded or linked items into its own documents. The documents managed by a container application must be able to store and display OLE compound document components as well as data created by the application itself. A container application must also allow users to insert new items or edit existing items. ## In This Section diff --git a/docs/mfc/control-bar-classes.md b/docs/mfc/control-bar-classes.md index 83d7dc63c7e..e24776d9fd5 100644 --- a/docs/mfc/control-bar-classes.md +++ b/docs/mfc/control-bar-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: Control Bar Classes" title: "Control Bar Classes" ms.date: "11/04/2016" helpviewer_keywords: ["control bars [MFC], classes"] -ms.assetid: 11009103-cad8-4309-85ce-3d2e858e1818 --- # Control Bar Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Control bars are attached to a frame window. They contain buttons, status panes, or a dialog template. Free-floating control bars, also called tool palettes, are implemented by attaching them to a [CMiniFrameWnd](reference/cminiframewnd-class.md) object. ## Framework Control Bars diff --git a/docs/mfc/control-bars.md b/docs/mfc/control-bars.md index 70b65d5e778..d4aa5c879e2 100644 --- a/docs/mfc/control-bars.md +++ b/docs/mfc/control-bars.md @@ -3,10 +3,12 @@ description: "Learn more about: Control Bars" title: "Control Bars" ms.date: "11/04/2016" helpviewer_keywords: ["command bars [MFC], types of", "toolbars [MFC], control bars", "control bars [MFC]", "MFC, control bars", "control bars [MFC], types of", "CDialogBar class [MFC], control bars", "status bars [MFC], control bars", "CControlBar class [MFC], MFC control bars", "dialog bars [MFC], control bars", "CToolBar class [MFC], control bars", "CStatusBar class [MFC], control bars"] -ms.assetid: 31831910-3d23-4d70-9e71-03cc02f01ec4 --- # Control Bars +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + "Control bar" is the general name for toolbars, status bars, and dialog bars. MFC classes `CToolBar`, `CStatusBar`, `CDialogBar`, `COleResizeBar`, and `CReBar` derive from class [CControlBar](reference/ccontrolbar-class.md), which implements their common functionality. Control bars are windows that display rows of controls with which users can select options, execute commands, or obtain program information. Types of control bars include toolbars, dialog bars, and status bars. diff --git a/docs/mfc/control-classes.md b/docs/mfc/control-classes.md index 39a211802cc..10517c135b1 100644 --- a/docs/mfc/control-classes.md +++ b/docs/mfc/control-classes.md @@ -4,10 +4,12 @@ title: "Control Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.control"] helpviewer_keywords: ["static display controls [MFC]", "control classes [MFC]", "buttons, MFC control classes", "controls [MFC], MFC control classes", "controls [MFC]", "list boxes [MFC], MFC control classes", "control classes [MFC], MFC", "text, controls for input [MFC]", "user input [MFC], MFC control classes"] -ms.assetid: f9876606-9f5b-44cb-9135-213298d1df8f --- # Control Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Control classes encapsulate a wide variety of standard Windows controls ranging from static text controls to tree controls. In addition, MFC provides some new controls, including buttons with bitmaps and control bars. The controls whose class names end in "**Ctrl**" were new in Windows 95 and Windows NT version 3.51. diff --git a/docs/mfc/controls-mfc.md b/docs/mfc/controls-mfc.md index 2fe0a205f76..c5801b29796 100644 --- a/docs/mfc/controls-mfc.md +++ b/docs/mfc/controls-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Controls (MFC)" title: "Controls (MFC)" ms.date: "11/04/2016" helpviewer_keywords: ["Windows common controls [MFC]", "common controls [MFC]", "controls [MFC]"] -ms.assetid: b2842884-6435-4b8f-933b-21671bf8af95 --- # Controls (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Controls are objects that users can interact with to enter or manipulate data. They commonly appear in dialog boxes or on toolbars. This topic family covers three main kinds of controls: - Windows common controls, including owner-drawn controls diff --git a/docs/mfc/creating-a-ctoolbarctrl-object.md b/docs/mfc/creating-a-ctoolbarctrl-object.md index a474106b412..f5bc8b35611 100644 --- a/docs/mfc/creating-a-ctoolbarctrl-object.md +++ b/docs/mfc/creating-a-ctoolbarctrl-object.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating a CToolBarCtrl Object" title: "Creating a CToolBarCtrl Object" ms.date: "11/04/2016" helpviewer_keywords: ["toolbar controls [MFC], creating", "CToolBarCtrl class [MFC], creating toolbars"] -ms.assetid: a4f6bf0c-0195-4dbf-a09e-aee503e19dc3 ms.topic: how-to --- # Creating a CToolBarCtrl Object +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + [CToolBarCtrl](reference/ctoolbarctrl-class.md) objects contain several internal data structures — a list of button image bitmaps, a list of button label strings, and a list of `TBBUTTON` structures — that associate an image and/or string with the position, style, state, and command ID of the button. Each of the elements of these data structures is referred to by a zero-based index. Before you can use a `CToolBarCtrl` object, you must set up these data structures. For a list of the data structures, see [Toolbar Controls](controls-mfc.md) in the Windows SDK. The list of strings can only be used for button labels; you cannot retrieve strings from the toolbar. To use a `CToolBarCtrl` object, you will typically follow these steps: diff --git a/docs/mfc/creating-a-dialog-class-with-code-wizards.md b/docs/mfc/creating-a-dialog-class-with-code-wizards.md index b57a8a37d9f..392782ede1d 100644 --- a/docs/mfc/creating-a-dialog-class-with-code-wizards.md +++ b/docs/mfc/creating-a-dialog-class-with-code-wizards.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating a Dialog Class with Code Wizards" title: "Creating a Dialog Class with Code Wizards" ms.date: "11/04/2016" helpviewer_keywords: ["dialog boxes [MFC], creating", "MFC dialog boxes, creating", "code wizards", "dialog classes [MFC], creating"] -ms.assetid: a7157b9d-f1a8-4381-a4cf-180cd2c7f1b2 ms.topic: concept-article --- # Creating a Dialog Class with Code Wizards +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following table lists dialog-related tasks that Code Wizards help you manage. ### Dialog-Related Tasks diff --git a/docs/mfc/creating-a-modeless-property-sheet.md b/docs/mfc/creating-a-modeless-property-sheet.md index 923076c45a7..0301f3ffcbc 100644 --- a/docs/mfc/creating-a-modeless-property-sheet.md +++ b/docs/mfc/creating-a-modeless-property-sheet.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating a Modeless Property Sheet" title: "Creating a Modeless Property Sheet" ms.date: "11/04/2016" helpviewer_keywords: ["modeless property sheets", "property sheets, modeless", "Create method [MFC], property sheets"] -ms.assetid: eafd8a92-cc67-4a69-a5fb-742c920d1ae8 ms.topic: concept-article --- # Creating a Modeless Property Sheet +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Normally, the property sheets you create will be modal. When using a modal property sheet, the user must close the property sheet before using any other part of the application. This article describes methods you can use to create a modeless property sheet that allows the user to keep the property sheet open while using other parts of the application. To display a property sheet as a modeless dialog box instead of as a modal dialog box, call [CPropertySheet::Create](reference/cpropertysheet-class.md#create) instead of [DoModal](reference/cpropertysheet-class.md#domodal). You must also implement some extra tasks to support a modeless property sheet. diff --git a/docs/mfc/creating-a-rebar-control.md b/docs/mfc/creating-a-rebar-control.md index ecbd59c97a3..08b253503eb 100644 --- a/docs/mfc/creating-a-rebar-control.md +++ b/docs/mfc/creating-a-rebar-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating a Rebar Control" title: "Creating a Rebar Control" ms.date: "11/04/2016" helpviewer_keywords: ["rebar controls [MFC], creating", "CReBarCtrl class [MFC], creating"] -ms.assetid: 0a012e08-772b-4f6a-af86-7cb651d11d3e ms.topic: how-to --- # Creating a Rebar Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + [CReBarCtrl](reference/crebarctrl-class.md) objects should be created before the parent object is visible. This minimizes the possibilities of painting problems. For instance, rebar controls (used in frame window objects) are commonly used as parent windows for toolbar controls. Therefore, the parent of the rebar control is the frame window object. Because the frame window object is the parent, the `OnCreate` member function (of the parent) is an excellent place to create the rebar control. diff --git a/docs/mfc/creating-an-active-document-container-application.md b/docs/mfc/creating-an-active-document-container-application.md index c1ef6e9ac2d..397172bbc4c 100644 --- a/docs/mfc/creating-an-active-document-container-application.md +++ b/docs/mfc/creating-an-active-document-container-application.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating an Active Document Container Applicatio title: "Creating an Active Document Container Application" ms.date: "11/04/2016" helpviewer_keywords: ["active documents [MFC], containers", "containers [MFC], active document", "active document containers [MFC], creating", "MFC COM, active document containment", "applications [MFC], active document container"] -ms.assetid: 14e2d022-a6c5-4249-8712-706b0f4433f7 ms.topic: how-to --- # Creating an Active Document Container Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The simplest and most recommended way to create an active document container application is to create an MFC EXE container application using the MFC Application Wizard, then modify the application to support active document containment. #### To create an active document container application diff --git a/docs/mfc/creating-an-extended-combo-box-control.md b/docs/mfc/creating-an-extended-combo-box-control.md index c39f606ba2e..3d49c2a16d3 100644 --- a/docs/mfc/creating-an-extended-combo-box-control.md +++ b/docs/mfc/creating-an-extended-combo-box-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating an Extended Combo Box Control" title: "Creating an Extended Combo Box Control" ms.date: "11/04/2016" helpviewer_keywords: ["extended combo boxes", "CComboBoxEx class [MFC], creating extended combo box controls", "extended combo boxes [MFC], creating"] -ms.assetid: a964267e-97b6-4e77-9f89-55bb5c68913f ms.topic: how-to --- # Creating an Extended Combo Box Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + How the extended combo box control is created depends on whether you are using the control in a dialog box or creating it in a nondialog window. ### To use CComboBoxEx directly in a dialog box diff --git a/docs/mfc/creating-and-displaying-dialog-boxes.md b/docs/mfc/creating-and-displaying-dialog-boxes.md index 233faf62b31..cb4c355f408 100644 --- a/docs/mfc/creating-and-displaying-dialog-boxes.md +++ b/docs/mfc/creating-and-displaying-dialog-boxes.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating and Displaying Dialog Boxes" title: "Creating and Displaying Dialog Boxes" ms.date: "11/04/2016" helpviewer_keywords: ["modal dialog boxes [MFC], creating", "opening dialog boxes", "modeless dialog boxes [MFC], creating", "MFC dialog boxes [MFC], creating", "MFC dialog boxes [MFC], displaying"] -ms.assetid: 1c5219ee-8b46-44bc-9708-83705d4f248b ms.topic: concept-article --- # Creating and Displaying Dialog Boxes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Creating a dialog object is a two-phase operation. First, construct the dialog object, then create the dialog window. Modal and modeless dialog boxes differ somewhat in the process used to create and display them. The following table lists how modal and modeless dialog boxes are normally constructed and displayed. ### Dialog Creation diff --git a/docs/mfc/creating-document-frame-windows.md b/docs/mfc/creating-document-frame-windows.md index 5c2f43a082b..8004e63a1ac 100644 --- a/docs/mfc/creating-document-frame-windows.md +++ b/docs/mfc/creating-document-frame-windows.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating Document Frame Windows" title: "Creating Document Frame Windows" ms.date: "11/04/2016" helpviewer_keywords: ["frame windows [MFC], creating", "document templates [MFC], and document frame windows", "windows [MFC], creating", "runtime, class information", "run-time class [MFC], and document frame window creation", "document frame windows [MFC], creating", "MFC, frame windows"] -ms.assetid: 8671e239-b76f-4dea-afa8-7024e6e58ff5 ms.topic: concept-article --- # Creating Document Frame Windows +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + [Document/View Creation](document-view-creation.md) shows how the [CDocTemplate](reference/cdoctemplate-class.md) object orchestrates creating the frame window, document, and view and connecting them all together. Three [CRuntimeClass](reference/cruntimeclass-structure.md) arguments to the `CDocTemplate` constructor specify the frame window, document, and view classes that the document template creates dynamically in response to user commands such as the New command on the File menu or the New Window command on an MDI Window menu. The document template stores this information for later use when it creates a frame window for a view and document. For the [RUNTIME_CLASS](reference/run-time-object-model-services.md#runtime_class) mechanism to work correctly, your derived frame-window classes must be declared with the [DECLARE_DYNCREATE](reference/run-time-object-model-services.md#declare_dyncreate) macro. This is because the framework needs to create document frame windows using the dynamic construction mechanism of class `CObject`. diff --git a/docs/mfc/creating-modal-dialog-boxes.md b/docs/mfc/creating-modal-dialog-boxes.md index 6275a7e461f..a9a4c045f99 100644 --- a/docs/mfc/creating-modal-dialog-boxes.md +++ b/docs/mfc/creating-modal-dialog-boxes.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating Modal Dialog Boxes" title: "Creating Modal Dialog Boxes" ms.date: "11/04/2016" helpviewer_keywords: ["modal dialog boxes [MFC], creating", "MFC dialog boxes [MFC], creating", "MFC dialog boxes [MFC], modal"] -ms.assetid: 26c7a68c-79f6-4862-a5a8-6024984644d2 ms.topic: concept-article --- # Creating Modal Dialog Boxes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To create a modal dialog box, call either of the two public constructors declared in [CDialog](reference/cdialog-class.md). Next, call the dialog object's [DoModal](reference/cdialog-class.md#domodal) member function to display the dialog box and manage interaction with it until the user chooses OK or Cancel. This management by `DoModal` is what makes the dialog box modal. For modal dialog boxes, `DoModal` loads the dialog resource. ## See also From 600ddb7f547b54b70ef5100a409a704818c4dd9f Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 20 Feb 2026 12:50:07 -0800 Subject: [PATCH 308/619] Batch 2: update files (#6257) --- docs/mfc/creating-modeless-dialog-boxes.md | 4 +++- docs/mfc/creating-new-documents-windows-and-views.md | 4 +++- docs/mfc/creating-stack-and-queue-collections.md | 4 +++- docs/mfc/creating-the-date-and-time-picker-control.md | 4 +++- docs/mfc/creating-the-dialog-resource.md | 4 +++- docs/mfc/creating-the-header-control.md | 4 +++- docs/mfc/creating-the-image-lists.md | 4 +++- docs/mfc/creating-the-list-control.md | 4 +++- docs/mfc/creating-the-month-calendar-control.md | 4 +++- docs/mfc/creating-the-tab-control.md | 4 +++- docs/mfc/creating-windows.md | 4 +++- docs/mfc/creating-your-dialog-class.md | 4 +++- docs/mfc/crebar-vs-crebarctrl.md | 4 +++- docs/mfc/ctreectrl-vs-ctreeview.md | 4 +++- docs/mfc/current-selection-in-a-rich-edit-control.md | 4 +++- docs/mfc/customization-for-mfc.md | 4 +++- docs/mfc/customizing-the-appearance-of-a-toolbar-control.md | 4 +++- docs/mfc/customizing-the-header-item-s-appearance.md | 4 +++- docs/mfc/cwinapp-and-the-mfc-application-wizard.md | 4 +++- docs/mfc/cwinapp-the-application-class.md | 4 +++- docs/mfc/dao-classes.md | 4 +++- .../data-objects-and-data-sources-creation-and-destruction.md | 4 +++- docs/mfc/data-objects-and-data-sources-manipulation.md | 4 +++- docs/mfc/data-objects-and-data-sources-ole.md | 4 +++- docs/mfc/date-and-time-picker-control-examples.md | 4 +++- docs/mfc/debugging-and-exception-classes.md | 4 +++- docs/mfc/debugging-support-classes.md | 4 +++- docs/mfc/declaring-message-handler-functions.md | 4 +++- docs/mfc/deleting-all-objects-in-a-cobject-collection.md | 4 +++- docs/mfc/deprecated-ansi-apis.md | 4 +++- docs/mfc/derived-message-maps.md | 4 +++- docs/mfc/derived-view-classes-available-in-mfc.md | 4 +++- docs/mfc/derived-window-classes.md | 4 +++- docs/mfc/deriving-a-class-from-cobject.md | 4 +++- docs/mfc/deriving-a-document-class-from-cdocument.md | 4 +++- docs/mfc/deriving-controls-from-a-standard-control.md | 4 +++- docs/mfc/destroying-frame-windows.md | 4 +++- docs/mfc/destroying-the-dialog-box.md | 4 +++- docs/mfc/destroying-the-list-control.md | 4 +++- docs/mfc/destroying-window-objects.md | 4 +++- docs/mfc/detaching-a-cwnd-from-its-hwnd.md | 4 +++- docs/mfc/device-contexts.md | 4 +++- docs/mfc/dialog-bars.md | 4 +++- docs/mfc/dialog-box-classes.md | 4 +++- docs/mfc/dialog-box-components-in-the-framework.md | 4 +++- docs/mfc/dialog-boxes-in-ole.md | 4 +++- docs/mfc/dialog-boxes.md | 4 +++- docs/mfc/dialog-data-exchange-and-validation.md | 4 +++- docs/mfc/dialog-data-exchange.md | 4 +++- docs/mfc/dialog-data-validation.md | 4 +++- docs/mfc/dialog-sample-list.md | 4 +++- docs/mfc/do-i-have-to-derive-new-classes-from-cobject-q.md | 4 +++- docs/mfc/docking-and-floating-toolbars.md | 4 +++- ...-and-view-classes-created-by-the-mfc-application-wizard.md | 4 +++- docs/mfc/document-classes.md | 4 +++- docs/mfc/document-template-classes.md | 4 +++- docs/mfc/document-template-creation.md | 4 +++- ...cument-templates-and-the-document-view-creation-process.md | 4 +++- docs/mfc/document-view-architecture.md | 4 +++- docs/mfc/document-view-creation.md | 4 +++- docs/mfc/document-view-sample-list.md | 4 +++- docs/mfc/documents-views-and-the-framework.md | 4 +++- docs/mfc/drag-and-drop-ole.md | 4 +++- docs/mfc/dragging-and-dropping-files-in-a-frame-window.md | 4 +++- docs/mfc/dragging-images-from-an-image-list.md | 4 +++- docs/mfc/drawing-and-printing-classes.md | 4 +++- docs/mfc/drawing-images-from-an-image-list.md | 4 +++- docs/mfc/drawing-in-a-view.md | 4 +++- docs/mfc/drawing-tool-classes.md | 4 +++- docs/mfc/dynamic-layout.md | 4 +++- docs/mfc/dynamic-object-creation.md | 3 +++ docs/mfc/enabling-tool-tips.md | 4 +++- .../mfc/example-displaying-a-dialog-box-via-a-menu-command.md | 4 +++- .../example-of-active-document-containment-office-binder.md | 4 +++- docs/mfc/exception-classes.md | 4 +++- docs/mfc/exception-handling-in-mfc.md | 3 +++ docs/mfc/exceptions-catching-and-deleting-exceptions.md | 4 +++- .../exceptions-changes-to-exception-macros-in-version-3-0.md | 4 +++- docs/mfc/exceptions-converting-from-mfc-exception-macros.md | 4 +++- docs/mfc/exceptions-database-exceptions.md | 4 +++- docs/mfc/exceptions-examining-exception-contents.md | 4 +++- docs/mfc/exceptions-exceptions-in-constructors.md | 4 +++- docs/mfc/exceptions-freeing-objects-in-exceptions.md | 4 +++- docs/mfc/exceptions-ole-exceptions.md | 4 +++- .../exceptions-throwing-exceptions-from-your-own-functions.md | 4 +++- docs/mfc/exceptions-using-mfc-macros-and-cpp-exceptions.md | 4 +++- docs/mfc/exchanging-data.md | 4 +++- docs/mfc/exitinstance-member-function.md | 4 +++- docs/mfc/exported-dll-function-entry-points.md | 4 +++- docs/mfc/file-and-database-classes.md | 4 +++- docs/mfc/file-i-o-classes.md | 4 +++- docs/mfc/file-menu-in-an-mfc-database-application.md | 4 +++- docs/mfc/files-in-mfc.md | 4 +++- docs/mfc/form-views-mfc.md | 4 +++- docs/mfc/frame-window-classes-architecture.md | 4 +++- .../frame-window-classes-created-by-the-application-wizard.md | 4 +++- docs/mfc/frame-window-classes-windows.md | 4 +++- docs/mfc/frame-window-classes.md | 4 +++- docs/mfc/frame-window-styles-cpp.md | 4 +++- docs/mfc/frame-windows.md | 4 +++- 100 files changed, 300 insertions(+), 98 deletions(-) diff --git a/docs/mfc/creating-modeless-dialog-boxes.md b/docs/mfc/creating-modeless-dialog-boxes.md index 92236e26218..4c730a660a6 100644 --- a/docs/mfc/creating-modeless-dialog-boxes.md +++ b/docs/mfc/creating-modeless-dialog-boxes.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating Modeless Dialog Boxes" title: "Creating Modeless Dialog Boxes" ms.date: "11/04/2016" helpviewer_keywords: ["MFC dialog boxes [MFC], modeless", "modeless dialog boxes [MFC], creating", "MFC dialog boxes [MFC], creating"] -ms.assetid: 70d78c7f-3d40-477b-9f78-0f33c359f88b ms.topic: concept-article --- # Creating Modeless Dialog Boxes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For a modeless dialog box, you must provide your own public constructor in your dialog class. To create a modeless dialog box, call your public constructor and then call the dialog object's [Create](reference/cdialog-class.md#create) member function to load the dialog resource. You can call **Create** either during or after the constructor call. If the dialog resource has the property **WS_VISIBLE**, the dialog box appears immediately. If not, you must call its [ShowWindow](reference/cwnd-class.md#showwindow) member function. ## See also diff --git a/docs/mfc/creating-new-documents-windows-and-views.md b/docs/mfc/creating-new-documents-windows-and-views.md index c5a9792921f..43a0eca8ee3 100644 --- a/docs/mfc/creating-new-documents-windows-and-views.md +++ b/docs/mfc/creating-new-documents-windows-and-views.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating New Documents, Windows, and Views" title: "Creating New Documents, Windows, and Views" ms.date: "11/19/2018" helpviewer_keywords: ["MDI [MFC], creating windows", "window objects [MFC], creating", "objects [MFC], creating document objects", "MFC default objects", "frame windows [MFC], creating", "windows [MFC], MDI", "MFC, documents", "view objects [MFC], creating", "windows [MFC], creating", "overriding, default view behavior", "views [MFC], initializing", "customizing MFC default objects", "MFC, frame windows", "MFC, views", "MDI [MFC], frame windows", "child windows [MFC], creating MDI", "view objects [MFC]", "document objects [MFC], creating", "MFC default objects [MFC], customizing", "views [MFC], overriding default behavior", "initializing views [MFC]"] -ms.assetid: 88aa1f5f-2078-4603-b16b-a2b4c7b4a2a3 ms.topic: concept-article --- # Creating New Documents, Windows, and Views +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following figures give an overview of the creation process for documents, views, and frame windows. Other articles that focus on the participating objects provide further details. Upon completion of this process, the cooperating objects exist and store pointers to each other. The following figures show the sequence in which objects are created. You can follow the sequence from figure to figure. diff --git a/docs/mfc/creating-stack-and-queue-collections.md b/docs/mfc/creating-stack-and-queue-collections.md index e0e1c818970..f61a62a9391 100644 --- a/docs/mfc/creating-stack-and-queue-collections.md +++ b/docs/mfc/creating-stack-and-queue-collections.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating Stack and Queue Collections" title: "Creating Stack and Queue Collections" ms.date: "11/04/2016" helpviewer_keywords: ["MFC collection classes [MFC], stack collections", "collections, stack", "stack", "collection classes [MFC], creating", "queue collections", "MFC collection classes [MFC], queue collections", "stack collections", "collections, queue"] -ms.assetid: 3c7bc198-35f0-4fc3-aaed-6005a0f22638 ms.topic: how-to --- # Creating Stack and Queue Collections +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how to create other data structures, such as [stacks](#_core_stacks) and [queues](#_core_queues), from MFC list classes. The examples use classes derived from `CList`, but you can use `CList` directly unless you need to add functionality. ## Stacks diff --git a/docs/mfc/creating-the-date-and-time-picker-control.md b/docs/mfc/creating-the-date-and-time-picker-control.md index 1c30cd048b0..633c5441142 100644 --- a/docs/mfc/creating-the-date-and-time-picker-control.md +++ b/docs/mfc/creating-the-date-and-time-picker-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating the Date and Time Picker Control" title: "Creating the Date and Time Picker Control" ms.date: "11/04/2016" helpviewer_keywords: ["DateTimePicker control [MFC], creating", "CDateTimeCtrl class [MFC], creating"] -ms.assetid: 764ec2fb-98cd-478b-a5f2-d63f0bb12279 ms.topic: how-to --- # Creating the Date and Time Picker Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + How the date and time picker control is created depends on whether you are using the control in a dialog box or creating it in a nondialog window. ### To use CDateTimeCtrl directly in a dialog box diff --git a/docs/mfc/creating-the-dialog-resource.md b/docs/mfc/creating-the-dialog-resource.md index 7aa4d5179b2..811a843a8aa 100644 --- a/docs/mfc/creating-the-dialog-resource.md +++ b/docs/mfc/creating-the-dialog-resource.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating the Dialog Resource" title: "Creating the Dialog Resource" ms.date: "11/04/2016" helpviewer_keywords: ["dialog resources", "MFC dialog boxes [MFC], creating", "dialog templates [MFC], creating dialog resource", "templates [MFC], creating", "resources [MFC], creating dialog boxes", "MFC dialog boxes [MFC], dialog resource"] -ms.assetid: 0b83bd33-14d3-4611-8129-fccdae18053e ms.topic: concept-article --- # Creating the Dialog Resource +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To design the [dialog box](dialog-boxes.md) and create the dialog resource, you use the [dialog editor](../windows/dialog-editor.md). In the dialog editor, you can: - Adjust the size and location your dialog box will have when it appears. diff --git a/docs/mfc/creating-the-header-control.md b/docs/mfc/creating-the-header-control.md index e16b83e1204..9ed0680f794 100644 --- a/docs/mfc/creating-the-header-control.md +++ b/docs/mfc/creating-the-header-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating the Header Control" title: "Creating the Header Control" ms.date: "11/04/2016" helpviewer_keywords: ["CHeaderCtrl class [MFC], creating", "header controls [MFC], creating"] -ms.assetid: 7864d9d2-4a2c-4622-b58b-7b110a1e28d2 ms.topic: how-to --- # Creating the Header Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The header control is not directly available in the dialog editor (although you can add a list control, which includes a header control). ### To put a header control in a dialog box diff --git a/docs/mfc/creating-the-image-lists.md b/docs/mfc/creating-the-image-lists.md index da8197206e5..39744f3dc26 100644 --- a/docs/mfc/creating-the-image-lists.md +++ b/docs/mfc/creating-the-image-lists.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating the Image Lists" title: "Creating the Image Lists" ms.date: "11/04/2016" helpviewer_keywords: ["CListCtrl class [MFC], creating image lists for", "image lists [MFC], creating for CListCtrl", "lists [MFC], image"] -ms.assetid: c2768515-deba-49e8-a6f3-5be6482afb19 ms.topic: concept-article --- # Creating the Image Lists +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Creating image lists is the same whether you use [CListView](reference/clistview-class.md) or [CListCtrl](reference/clistctrl-class.md). > [!NOTE] diff --git a/docs/mfc/creating-the-list-control.md b/docs/mfc/creating-the-list-control.md index cd17ed745c3..d5944f1b37b 100644 --- a/docs/mfc/creating-the-list-control.md +++ b/docs/mfc/creating-the-list-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating the List Control" title: "Creating the List Control" ms.date: "11/04/2016" helpviewer_keywords: ["CListCtrl class [MFC], creating control", "list controls [MFC]"] -ms.assetid: a4cb1729-31b6-4d2b-a44b-367474848a39 ms.topic: how-to --- # Creating the List Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + How the list control ([CListCtrl](reference/clistctrl-class.md)) is created depends on whether you're using the control directly or using class [CListView](reference/clistview-class.md) instead. If you use `CListView`, the framework constructs the view as part of its document/view creation sequence. Creating the list view creates the list control as well (the two are the same thing). The control is created in the view's [OnCreate](reference/cwnd-class.md#oncreate) handler function. In this case, the control is ready for you to add items, via a call to [GetListCtrl](reference/clistview-class.md#getlistctrl). ### To use CListCtrl directly in a dialog box diff --git a/docs/mfc/creating-the-month-calendar-control.md b/docs/mfc/creating-the-month-calendar-control.md index 21319b9e5bf..92ff0854f8e 100644 --- a/docs/mfc/creating-the-month-calendar-control.md +++ b/docs/mfc/creating-the-month-calendar-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating the Month Calendar Control" title: "Creating the Month Calendar Control" ms.date: "11/04/2016" helpviewer_keywords: ["CMonthCalCtrl class [MFC], creating", "month calendar controls [MFC], creating", "month calendar controls [MFC]"] -ms.assetid: 185cc642-85e9-4365-8a4c-d90b75b010f7 ms.topic: how-to --- # Creating the Month Calendar Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + How the month calendar control is created depends on whether you are using the control in a dialog box or creating it in a nondialog window. ### To use CMonthCalCtrl directly in a dialog box diff --git a/docs/mfc/creating-the-tab-control.md b/docs/mfc/creating-the-tab-control.md index ec4d8a7626b..f8db4aabfc9 100644 --- a/docs/mfc/creating-the-tab-control.md +++ b/docs/mfc/creating-the-tab-control.md @@ -4,11 +4,13 @@ title: "Creating the Tab Control" ms.date: "11/04/2016" f1_keywords: ["TCS_EX_REGISTERDROP", "TCS_EX_FLATSEPARATORS"] helpviewer_keywords: ["TCS_EX_REGISTERDROP extended style [MFC]", "tab controls [MFC], creating", "CTabCtrl class [MFC], creating", "TCS_EX_FLATSEPARATORS extended style"] -ms.assetid: 3a9c2d64-f5f4-41ea-84ab-fceb73c3dbdc ms.topic: how-to --- # Creating the Tab Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + How the tab control is created depends on whether you are using the control in a dialog box or creating it in a nondialog window. ### To use CTabCtrl directly in a dialog box diff --git a/docs/mfc/creating-windows.md b/docs/mfc/creating-windows.md index ffa63d22eda..0c1a016b3bb 100644 --- a/docs/mfc/creating-windows.md +++ b/docs/mfc/creating-windows.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating Windows" title: "Creating Windows" ms.date: "11/04/2016" helpviewer_keywords: ["object creation [MFC], windows", "windows [MFC], creating", "CWnd objects [MFC]", "CWnd objects [MFC], creating"] -ms.assetid: f5ff91a6-4069-47d7-9177-1e6c80d3792c ms.topic: concept-article --- # Creating Windows +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The framework automatically creates most of the windows you need in a framework program. [Document/View Creation](document-view-creation.md) shows how the framework creates the frame windows associated with documents and views. But for special purposes you can create your own windows — including your own child windows of frame windows or views — in addition to the windows supplied by the framework. ## What do you want to know more about diff --git a/docs/mfc/creating-your-dialog-class.md b/docs/mfc/creating-your-dialog-class.md index 904e6f42875..c637e47bc34 100644 --- a/docs/mfc/creating-your-dialog-class.md +++ b/docs/mfc/creating-your-dialog-class.md @@ -3,11 +3,13 @@ description: "Learn more about: Creating Your Dialog Class" title: "Creating Your Dialog Class" ms.date: "09/06/2019" helpviewer_keywords: ["dialog boxes [MFC], creating", "MFC dialog boxes [MFC], creating", "files [MFC], creating", "dialog classes [MFC], Add Class Wizard", "dialog classes [MFC], creating"] -ms.assetid: d5321741-da41-47a8-bb1c-6a0e8b28c4c1 ms.topic: concept-article --- # Creating Your Dialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For each dialog box in your program, create a new dialog class to work with the dialog resource. [Adding a Class](../ide/adding-a-class-visual-cpp.md) explains how to create a new dialog class. When you create a dialog class with the [Class Wizard](reference/mfc-class-wizard.md), it writes the following items in the .h and .cpp files you specify: diff --git a/docs/mfc/crebar-vs-crebarctrl.md b/docs/mfc/crebar-vs-crebarctrl.md index 34ddc168552..8e03bf97fca 100644 --- a/docs/mfc/crebar-vs-crebarctrl.md +++ b/docs/mfc/crebar-vs-crebarctrl.md @@ -3,10 +3,12 @@ description: "Learn more about: CReBar vs. CReBarCtrl" title: "CReBar vs. CReBarCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["CReBar class [MFC], vs. CReBarCtrl", "rebar controls [MFC], CReBarCtrl class [MFC]", "GetReBarCtrl class [MFC]"] -ms.assetid: 7f9c1d7e-5d5f-4956-843c-69ed3df688d0 --- # CReBar vs. CReBarCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC provides two classes to create rebars: [CReBar](reference/crebar-class.md) and [CReBarCtrl](reference/crebarctrl-class.md) (which wraps the Windows common control API). `CReBar` provides all of the functionality of the rebar common control, and it handles many of the required common control settings and structures for you. `CReBarCtrl` is a wrapper class for the Win32 rebar control, and therefore may be easier to implement if you do not intend to integrate the rebar into the MFC architecture. If you plan to use `CReBarCtrl` and integrate the rebar into the MFC architecture, you must take additional care to communicate rebar control manipulations to MFC. This communication is not difficult; however, it is additional work that is unneeded when you use `CReBar`. diff --git a/docs/mfc/ctreectrl-vs-ctreeview.md b/docs/mfc/ctreectrl-vs-ctreeview.md index bc46617de0a..08205c2d697 100644 --- a/docs/mfc/ctreectrl-vs-ctreeview.md +++ b/docs/mfc/ctreectrl-vs-ctreeview.md @@ -3,10 +3,12 @@ description: "Learn more about: CTreeCtrl vs. CTreeView" title: "CTreeCtrl vs. CTreeView" ms.date: "11/04/2016" helpviewer_keywords: ["tree view controls", "CTreeCtrl class [MFC], vs. CTreeView class [MFC]", "CTreeView class [MFC], vs. CTreeCtrl class [MFC]", "tree controls [MFC], and tree view"] -ms.assetid: bba5af25-103f-4b53-84d3-071bc9bd6494 --- # CTreeCtrl vs. CTreeView +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC provides two classes that encapsulate tree controls: [CTreeCtrl](reference/ctreectrl-class.md) and [CTreeView](reference/ctreeview-class.md). Each class is useful in different situations. Use `CTreeCtrl` when you need a plain child window control; for instance, in a dialog box. You'd especially want to use `CTreeCtrl` if there will be other child controls in the window, as in a typical dialog box. diff --git a/docs/mfc/current-selection-in-a-rich-edit-control.md b/docs/mfc/current-selection-in-a-rich-edit-control.md index 71ba0c09d26..77b23d0394b 100644 --- a/docs/mfc/current-selection-in-a-rich-edit-control.md +++ b/docs/mfc/current-selection-in-a-rich-edit-control.md @@ -3,10 +3,12 @@ description: "Learn more about: Current Selection in a Rich Edit Control" title: "Current Selection in a Rich Edit Control" ms.date: "11/04/2016" helpviewer_keywords: ["current selection in CRichEditCtrls", "CRichEditCtrl class [MFC], current selection in", "rich edit controls [MFC], current selection in", "selection, current in CRichEditCtrl"] -ms.assetid: f6b2a2b6-5481-4ad3-9720-6dd772ea6fc8 --- # Current Selection in a Rich Edit Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The user can select text in a rich edit control ([CRichEditCtrl](reference/cricheditctrl-class.md)) by using the mouse or the keyboard. The current selection is the range of selected characters, or the position of the insertion point if no characters are selected. An application can get information about the current selection, set the current selection, determine when the current selection changes, and show or hide the selection highlight. To determine the current selection in a rich edit control, use the [GetSel](reference/cricheditctrl-class.md#getsel) member function. To set the current selection, use the [SetSel](reference/cricheditctrl-class.md#setsel) member function. The [CHARRANGE](/windows/win32/api/richedit/ns-richedit-charrange) structure is used with these functions to specify a range of characters. To retrieve information about the contents of the current selection, you can use the [GetSelectionType](reference/cricheditctrl-class.md#getselectiontype) member function. diff --git a/docs/mfc/customization-for-mfc.md b/docs/mfc/customization-for-mfc.md index 2ab4a09f1d1..f8e4330ef35 100644 --- a/docs/mfc/customization-for-mfc.md +++ b/docs/mfc/customization-for-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Customization for MFC" title: "Customization for MFC" ms.date: "11/04/2016" helpviewer_keywords: ["customizations, MFC Extensions"] -ms.assetid: 3b1b7532-8cc9-48dc-9bbe-7fd4060530b5 --- # Customization for MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic provides tips for customizing an MFC application. ## General Customizations diff --git a/docs/mfc/customizing-the-appearance-of-a-toolbar-control.md b/docs/mfc/customizing-the-appearance-of-a-toolbar-control.md index 7a40c5a6116..5825ee08448 100644 --- a/docs/mfc/customizing-the-appearance-of-a-toolbar-control.md +++ b/docs/mfc/customizing-the-appearance-of-a-toolbar-control.md @@ -4,11 +4,13 @@ title: "Customizing the Appearance of a Toolbar Control" ms.date: "11/04/2016" f1_keywords: ["TBSTYLE_"] helpviewer_keywords: ["flat toolbars", "CToolBar class [MFC], styles", "transparent toolbars", "TBSTYLE_ styles [MFC]", "CToolBarCtrl class [MFC], object styles", "toolbar controls [MFC], style"] -ms.assetid: fd0a73db-7ad1-4fe4-889b-02c3980f49e8 ms.topic: concept-article --- # Customizing the Appearance of a Toolbar Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Class `CToolBarCtrl` provides many styles that affect the appearance (and, occasionally, the behavior) of the toolbar object. Modify the toolbar object by setting the `dwCtrlStyle` parameter of the `CToolBarCtrl::Create` (or `CToolBar::CreateEx`) member function, when you first create the toolbar control. The following styles affect the "3D" aspect of the toolbar buttons and the placement of the button text: diff --git a/docs/mfc/customizing-the-header-item-s-appearance.md b/docs/mfc/customizing-the-header-item-s-appearance.md index 7324136f93a..990ecb305fe 100644 --- a/docs/mfc/customizing-the-header-item-s-appearance.md +++ b/docs/mfc/customizing-the-header-item-s-appearance.md @@ -3,11 +3,13 @@ description: "Learn more about: Customizing the Header Item's Appearance" title: "Customizing the Header Item's Appearance" ms.date: "11/04/2016" helpviewer_keywords: ["header controls [MFC], customization of items", "CHeaderCtrl class [MFC], customizing the items", "HDS_ styles"] -ms.assetid: b1e1e326-ec7d-4dbd-a46f-96a3e2055618 ms.topic: concept-article --- # Customizing the Header Item's Appearance +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + By setting the *dwStyle* parameter when you first create a header control ([CHeaderCtrl::Create](reference/cheaderctrl-class.md#create)), you can define the appearance and behavior of header items or of the header control itself. Here is a sampling of the styles you can set, and their purpose: diff --git a/docs/mfc/cwinapp-and-the-mfc-application-wizard.md b/docs/mfc/cwinapp-and-the-mfc-application-wizard.md index 530934f7d79..7e8e4cd5464 100644 --- a/docs/mfc/cwinapp-and-the-mfc-application-wizard.md +++ b/docs/mfc/cwinapp-and-the-mfc-application-wizard.md @@ -3,10 +3,12 @@ description: "Learn more about: CWinApp and the MFC Application Wizard" title: "CWinApp and the MFC Application Wizard" ms.date: "11/04/2016" helpviewer_keywords: ["application wizards [MFC], and CWinApp", "CWinApp class [MFC], and MFC Application Wizard", "MFC, wizards"] -ms.assetid: f8ac0491-3302-4e46-981d-0790624eb8a2 --- # CWinApp and the MFC Application Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When it creates a skeleton application, the MFC Application Wizard declares an application class derived from [CWinApp](reference/cwinapp-class.md). The MFC Application Wizard also generates an implementation file that contains the following items: - A message map for the application class. diff --git a/docs/mfc/cwinapp-the-application-class.md b/docs/mfc/cwinapp-the-application-class.md index a34f9b55a13..b24b92f4b3f 100644 --- a/docs/mfc/cwinapp-the-application-class.md +++ b/docs/mfc/cwinapp-the-application-class.md @@ -3,10 +3,12 @@ description: "Learn more about: CWinApp: The Application Class" title: "CWinApp: The Application Class" ms.date: "11/04/2016" helpviewer_keywords: ["application class [MFC]", "CWinApp class [MFC], CWinThread", "MFC, WinMain and", "CWinApp class [MFC], multithreading", "CWinThread class [MFC], and CWinApp", "InitApplication method [MFC]", "WinMain method [MFC]", "WinMain method [MFC], in MFC", "CWinApp class [MFC], WinMain"] -ms.assetid: 935822bb-d463-481b-a5f6-9719d68ed1d5 --- # CWinApp: The Application Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The main application class in MFC encapsulates the initialization, running, and termination of an application for the Windows operating system. An application built on the framework must have one and only one object of a class derived from [CWinApp](reference/cwinapp-class.md). This object is constructed before windows are created. `CWinApp` is derived from `CWinThread`, which represents the main thread of execution for your application, which might have one or more threads. In recent versions of MFC, the `InitInstance`, **Run**, `ExitInstance`, and `OnIdle` member functions are actually in class `CWinThread`. These functions are discussed here as if they were `CWinApp` members instead, because the discussion concerns the object's role as application object rather than as primary thread. diff --git a/docs/mfc/dao-classes.md b/docs/mfc/dao-classes.md index 85553ceccae..f7dcafbd128 100644 --- a/docs/mfc/dao-classes.md +++ b/docs/mfc/dao-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: DAO Classes" title: "DAO Classes" ms.date: "09/17/2019" helpviewer_keywords: ["database classes [MFC], DAO", "DAO [MFC], classes"] -ms.assetid: b15d0cd6-328b-4288-9c19-d037a795db57 --- # DAO Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. These classes work with the other application framework classes to give easy access to Data Access Object (DAO) databases, which use the same database engine as Microsoft Visual Basic and Microsoft Access. The DAO classes can also access a wide variety of databases for which Open Database Connectivity (ODBC) drivers are available. diff --git a/docs/mfc/data-objects-and-data-sources-creation-and-destruction.md b/docs/mfc/data-objects-and-data-sources-creation-and-destruction.md index 440ec543ee4..55a6a472b33 100644 --- a/docs/mfc/data-objects-and-data-sources-creation-and-destruction.md +++ b/docs/mfc/data-objects-and-data-sources-creation-and-destruction.md @@ -3,10 +3,12 @@ description: "Learn more about: Data Objects and Data Sources: Creation and Dest title: "Data Objects and Data Sources: Creation and Destruction" ms.date: "11/04/2016" helpviewer_keywords: ["destroying data objects [MFC]", "object creation [MFC], data source objects", "data sources [MFC], and data objects", "data source objects [MFC], creating", "destruction [MFC], data sources", "data source objects [MFC], destroying", "data objects [MFC], creating", "data objects [MFC], destroying", "data sources [MFC], role", "data sources [MFC], destroying", "destruction [MFC], data objects", "data sources [MFC], creating"] -ms.assetid: ac216d54-3ca5-4ce7-850d-cd1f6a90d4f1 --- # Data Objects and Data Sources: Creation and Destruction +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As explained in the article [Data Objects and Data Sources (OLE)](data-objects-and-data-sources-ole.md), data objects and data sources represent both sides of a data transfer. This article explains when to create and destroy these objects and sources to perform your data transfers properly, including: - [Creating data objects](#_core_creating_data_objects) diff --git a/docs/mfc/data-objects-and-data-sources-manipulation.md b/docs/mfc/data-objects-and-data-sources-manipulation.md index 012da4d435b..44b560e727f 100644 --- a/docs/mfc/data-objects-and-data-sources-manipulation.md +++ b/docs/mfc/data-objects-and-data-sources-manipulation.md @@ -3,10 +3,12 @@ description: "Learn more about: Data Objects and Data Sources: Manipulation" title: "Data Objects and Data Sources: Manipulation" ms.date: "11/04/2016" helpviewer_keywords: ["data objects [MFC], manipulating", "data sources [MFC], data operations", "data sources [MFC], inserting data", "Clipboard [MFC], determining available formats", "OLE [MFC], data objects", "Clipboard [MFC], passing format information", "data sources [MFC], determining available formats", "delayed rendering [MFC]", "OLE [MFC], data sources"] -ms.assetid: f7f27e77-bb5d-4131-b819-d71bf929ebaf --- # Data Objects and Data Sources: Manipulation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + After a data object or data source has been created, you can perform a number of common operations on the data, such as inserting and removing data, enumerating the formats the data is in, and more. This article describes the techniques necessary to complete the most common operations. Topics include: - [Inserting data into a data source](#_core_inserting_data_into_a_data_source) diff --git a/docs/mfc/data-objects-and-data-sources-ole.md b/docs/mfc/data-objects-and-data-sources-ole.md index 5b5e949d4f0..a3b803d8bd8 100644 --- a/docs/mfc/data-objects-and-data-sources-ole.md +++ b/docs/mfc/data-objects-and-data-sources-ole.md @@ -3,10 +3,12 @@ description: "Learn more about: Data Objects and Data Sources (OLE)" title: "Data Objects and Data Sources (OLE)" ms.date: "11/04/2016" helpviewer_keywords: ["data objects [MFC], definition", "data transfer [MFC]", "OLE [MFC], data transfer", "data sources [MFC], definition", "data transfer [MFC], definition", "OLE [MFC], data objects", "OLE [MFC], data sources"] -ms.assetid: 8f68eed8-0ce8-4489-a4cc-f95554f89090 --- # Data Objects and Data Sources (OLE) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When you perform a data transfer, either by using the Clipboard or drag and drop, the data has a source and a destination. One application provides the data for copying and another application accepts it for pasting. Each side of the transfer needs to perform different operations on the same data for the transfer to succeed. The Microsoft Foundation Class (MFC) Library provides two classes that represent each side of this transfer: - Data sources (as implemented by `COleDataSource` objects) represent the source side of the data transfer. They are created by the source application when data is to be copied to the Clipboard, or when data is provided for a drag-and-drop operation. diff --git a/docs/mfc/date-and-time-picker-control-examples.md b/docs/mfc/date-and-time-picker-control-examples.md index 26eb0b317a0..10d189a5237 100644 --- a/docs/mfc/date-and-time-picker-control-examples.md +++ b/docs/mfc/date-and-time-picker-control-examples.md @@ -3,10 +3,12 @@ description: "Learn more about: Date and Time Picker Control Examples" title: "Date and Time Picker Control Examples" ms.date: "11/04/2016" helpviewer_keywords: ["DateTimePicker control [MFC]"] -ms.assetid: f03c3a22-7725-45eb-8f8e-dddb2d15c3ca --- # Date and Time Picker Control Examples +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The [CMNCTRL1](../overview/visual-cpp-samples.md) sample demonstrates the various attributes of the `CDateTimeCtrl` class. A separate page contains a date and time picker control that the user can manipulate by changing various attributes and testing the basic functionality of the control. ## See also diff --git a/docs/mfc/debugging-and-exception-classes.md b/docs/mfc/debugging-and-exception-classes.md index 95670e20ee0..aa2e150d6cf 100644 --- a/docs/mfc/debugging-and-exception-classes.md +++ b/docs/mfc/debugging-and-exception-classes.md @@ -4,11 +4,13 @@ title: "Debugging and Exception Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.debug"] helpviewer_keywords: ["debugging [MFC], exception classes", "debugging [MFC], classes for debugging"] -ms.assetid: 0d158efd-2e62-452e-9d2a-d3c30dfee7f9 ms.topic: concept-article --- # Debugging and Exception Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These classes provide support for debugging dynamic memory allocation and for passing exception information from the function where the exception is thrown to the function where it is caught. Use classes [CDumpContext](reference/cdumpcontext-class.md) and [CMemoryState](reference/cmemorystate-structure.md) during development to assist with debugging, as described in [Debugging MFC Applications](/visualstudio/debugger/mfc-debugging-techniques). Use [CRuntimeClass](reference/cruntimeclass-structure.md) to determine the class of any object at run time, as described in the article [Accessing Run-Time Class Information](accessing-run-time-class-information.md). The framework uses `CRuntimeClass` to create objects of a particular class dynamically. diff --git a/docs/mfc/debugging-support-classes.md b/docs/mfc/debugging-support-classes.md index e9b03065b8c..1e40250262b 100644 --- a/docs/mfc/debugging-support-classes.md +++ b/docs/mfc/debugging-support-classes.md @@ -3,11 +3,13 @@ description: "Learn more about: Debugging Support Classes" title: "Debugging Support Classes" ms.date: "11/04/2016" helpviewer_keywords: ["debugging memory leaks, MFC", "memory allocation, debugging dynamic", "debugging [MFC], classes for debugging", "memory allocation, debugging dynamic allocation", "dynamic memory allocation", "debugging [MFC], memory leaks", "memory leaks, MFC debug classes"] -ms.assetid: d79e084a-8326-4251-8700-4efac07c511e ms.topic: concept-article --- # Debugging Support Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC provides the following classes to help you debug dynamic memory allocation problems. [CDumpContext](reference/cdumpcontext-class.md)
diff --git a/docs/mfc/declaring-message-handler-functions.md b/docs/mfc/declaring-message-handler-functions.md index cc9258d87a0..d917ba04e53 100644 --- a/docs/mfc/declaring-message-handler-functions.md +++ b/docs/mfc/declaring-message-handler-functions.md @@ -3,11 +3,13 @@ description: "Learn more about: Declaring Message Handler Functions" title: "Declaring Message Handler Functions" ms.date: "11/04/2016" helpviewer_keywords: ["declaring functions, message handler functions [MFC]"] -ms.assetid: f8d3dbc1-4500-4f1e-a18d-7371edf36386 ms.topic: concept-article --- # Declaring Message Handler Functions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Certain rules and conventions govern the names of your message-handler functions. These depend on the message category, as described in the following topics: - [Handlers for standard Windows messages](handlers-for-standard-windows-messages.md) diff --git a/docs/mfc/deleting-all-objects-in-a-cobject-collection.md b/docs/mfc/deleting-all-objects-in-a-cobject-collection.md index d57fae1c586..8e78fc10564 100644 --- a/docs/mfc/deleting-all-objects-in-a-cobject-collection.md +++ b/docs/mfc/deleting-all-objects-in-a-cobject-collection.md @@ -3,11 +3,13 @@ description: "Learn more about: Deleting All Objects in a CObject Collection" title: "Deleting All Objects in a CObject Collection" ms.date: "11/04/2016" helpviewer_keywords: ["objects [MFC], deleting in collections", "objects in CObject collections, deleting", "CObject class [MFC], deleting in collection", "collection classes [MFC], deleting all objects", "CObject class collection", "objects in CObject collections", "collection classes [MFC], shared objects"] -ms.assetid: 81d2c1d5-a0a5-46e1-8ab9-82b45cf7afd2 ms.topic: how-to --- # Deleting All Objects in a CObject Collection +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how to delete all objects in a collection (without deleting the collection object itself). To delete all the objects in a collection of `CObject`s (or of objects derived from `CObject`), you use one of the iteration techniques described in the article [Accessing All Members of a Collection](accessing-all-members-of-a-collection.md) to delete each object in turn. diff --git a/docs/mfc/deprecated-ansi-apis.md b/docs/mfc/deprecated-ansi-apis.md index 6268b9613e7..6fd26ff2d70 100644 --- a/docs/mfc/deprecated-ansi-apis.md +++ b/docs/mfc/deprecated-ansi-apis.md @@ -3,10 +3,12 @@ description: "Learn more about: Deprecated ANSI APIs" title: "Deprecated ANSI APIs" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, ANSI deprecated methods"] -ms.assetid: c7c5a6fd-95e4-4bee-b3d5-d3826c30947d --- # Deprecated ANSI APIs +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Class (MFC) library is migrating toward classes and methods that are based on the Unicode character set. Consequently, the ANSI versions of several MFC methods are deprecated. Use the Unicode versions of these methods in your future applications. Starting with Windows Common Controls version 6.1, which ships in Windows Vista, the following ANSI methods are deprecated. diff --git a/docs/mfc/derived-message-maps.md b/docs/mfc/derived-message-maps.md index 97dd244acdc..f178feedb75 100644 --- a/docs/mfc/derived-message-maps.md +++ b/docs/mfc/derived-message-maps.md @@ -3,10 +3,12 @@ title: "Derived Message Maps" description: "Describes MFC message handling." ms.date: "09/23/2020" helpviewer_keywords: ["message handling [MFC], derived message handlers", "messages, routing", "message maps [MFC], derived", "derived message maps"] -ms.assetid: 21829556-6e64-40c3-8279-fed85d99de77 --- # Derived Message Maps +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + During message handling, checking a class's own message map is not the end of the message-map story. What happens if class `CMyView` (derived from `CView`) has no matching entry for a message? Keep in mind that `CView`, the base class of `CMyView`, is derived in turn from `CWnd`. Thus `CMyView` *is* a `CView` and *is* a `CWnd`. Each of those classes has its own message map. The figure below shows the hierarchical relationship of the classes, but keep in mind that a `CMyView` object is a single object that has the characteristics of all three classes. diff --git a/docs/mfc/derived-view-classes-available-in-mfc.md b/docs/mfc/derived-view-classes-available-in-mfc.md index 90f9c090011..852150b4b4a 100644 --- a/docs/mfc/derived-view-classes-available-in-mfc.md +++ b/docs/mfc/derived-view-classes-available-in-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Derived View Classes Available in MFC" title: "Derived View Classes Available in MFC" ms.date: "11/04/2016" helpviewer_keywords: ["CView class [MFC], classes derived from", "classes [MFC], derived", "derived classes [MFC], view classes", "view classes [MFC], derived"] -ms.assetid: dba42178-7459-4ccc-b025-f3d9b8a4b737 --- # Derived View Classes Available in MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following table shows MFC's view classes and their relationships to one another. The capabilities of your view class depend on the MFC view class from which it derives. ### View Classes diff --git a/docs/mfc/derived-window-classes.md b/docs/mfc/derived-window-classes.md index 8102ecae4f0..2f6f1b9221c 100644 --- a/docs/mfc/derived-window-classes.md +++ b/docs/mfc/derived-window-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: Derived window classes" title: "Derived window classes" ms.date: "11/04/2016" helpviewer_keywords: ["window class hierarchy", "hierarchies, window classes", "classes [MFC], derived", "CWnd class [MFC], classes derived from", "derived classes [MFC], window classes", "window classes [MFC], derived"] -ms.assetid: 6f7e437e-fbde-4a06-bfab-72d9dbf05292 --- # Derived window classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can create windows directly from [`CWnd`](reference/cwnd-class.md), or derive new window classes from `CWnd`. It's how you typically create your own custom windows. However, most windows used in a framework program are instead created from one of the `CWnd`-derived frame-window classes supplied by MFC. ## Frame window classes diff --git a/docs/mfc/deriving-a-class-from-cobject.md b/docs/mfc/deriving-a-class-from-cobject.md index bde7b72bbb9..20793426d80 100644 --- a/docs/mfc/deriving-a-class-from-cobject.md +++ b/docs/mfc/deriving-a-class-from-cobject.md @@ -3,11 +3,13 @@ description: "Learn more about: Deriving a Class from CObject" title: "Deriving a Class from CObject" ms.date: "11/04/2016" helpviewer_keywords: ["DECLARE_DYNCREATE macro [MFC]", "DECLARE_SERIAL macro [MFC]", "macros [MFC], serialization", "serialization [MFC], macros", "DECLARE_DYNAMIC macro [MFC]", "derived classes [MFC], from CObject", "CObject class [MFC], deriving serializable classes", "CObject class [MFC], deriving from"] -ms.assetid: 5ea4ea41-08b5-4bd8-b247-c5de8c152a27 ms.topic: how-to --- # Deriving a Class from CObject +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes the minimum steps necessary to derive a class from [CObject](reference/cobject-class.md). Other `CObject` class articles describe the steps needed to take advantage of specific `CObject` features, such as serialization and diagnostic debugging support. In the discussions of `CObject`, the terms "interface file" and "implementation file" are used frequently. The interface file (often called the header file, or .H file) contains the class declaration and any other information needed to use the class. The implementation file (or .CPP file) contains the class definition as well as the code that implements the class member functions. For example, for a class named `CPerson`, you would typically create an interface file named PERSON.H and an implementation file named PERSON.CPP. However, for some small classes that will not be shared among applications, it is sometimes easier to combine the interface and implementation into a single .CPP file. diff --git a/docs/mfc/deriving-a-document-class-from-cdocument.md b/docs/mfc/deriving-a-document-class-from-cdocument.md index 1184517b913..67e3cbdb776 100644 --- a/docs/mfc/deriving-a-document-class-from-cdocument.md +++ b/docs/mfc/deriving-a-document-class-from-cdocument.md @@ -3,11 +3,13 @@ description: "Learn more about: Deriving a Document Class from CDocument" title: "Deriving a Document Class from CDocument" ms.date: "11/04/2016" helpviewer_keywords: ["CDocument class [MFC], deriving from", "classes [MFC], deriving from CDocument", "document objects [MFC], derived", "derived classes [MFC], functions often overridden", "document classes [MFC], functions often overridden"] -ms.assetid: e6a198e0-9799-43c0-83c5-04174d8b532c ms.topic: concept-article --- # Deriving a Document Class from CDocument +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Documents contain and manage your application's data. To use the MFC Application Wizard-supplied document class, you must do the following: - Derive a class from `CDocument` for each type of document. diff --git a/docs/mfc/deriving-controls-from-a-standard-control.md b/docs/mfc/deriving-controls-from-a-standard-control.md index 3489abe0ff7..eec1f103ace 100644 --- a/docs/mfc/deriving-controls-from-a-standard-control.md +++ b/docs/mfc/deriving-controls-from-a-standard-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Deriving Controls from a Standard Control" title: "Deriving Controls from a Standard Control" ms.date: "11/04/2016" helpviewer_keywords: ["standard controls [MFC], deriving controls from", "common controls [MFC], deriving from", "derived controls", "controls [MFC], derived", "Windows common controls [MFC], deriving from", "standard controls"] -ms.assetid: a6f84315-7007-4e0e-8576-78be81254802 ms.topic: how-to --- # Deriving Controls from a Standard Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As with any [CWnd](reference/cwnd-class.md)-derived class, you can modify a control's behavior by deriving a new class from an existing control class. ### To create a derived control class diff --git a/docs/mfc/destroying-frame-windows.md b/docs/mfc/destroying-frame-windows.md index 4bd96d2b29f..ae0d33b240c 100644 --- a/docs/mfc/destroying-frame-windows.md +++ b/docs/mfc/destroying-frame-windows.md @@ -4,11 +4,13 @@ title: "Destroying Frame Windows" ms.date: "11/04/2016" f1_keywords: ["PostNcDestroy"] helpviewer_keywords: ["Default method [MFC]", "DestroyWindow method [MFC]", "frame windows [MFC], destroying", "OnNcDestroy method, and frame windows", "document frame windows [MFC], destroying", "destroying frame windows", "MFC, frame windows", "windows [MFC], destroying", "OnClose method [MFC]", "PostNcDestroy method [MFC]"] -ms.assetid: 5affca77-1999-4507-a2b2-9aa226611b4b ms.topic: concept-article --- # Destroying Frame Windows +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The MFC framework manages window destruction as well as creation for those windows associated with framework documents and views. If you create additional windows, you are responsible for destroying them. In the framework, when the user closes the frame window, the window's default [OnClose](reference/cwnd-class.md#onclose) handler calls [DestroyWindow](reference/cwnd-class.md#destroywindow). The last member function called when the Windows window is destroyed is [OnNcDestroy](reference/cwnd-class.md#onncdestroy), which does some cleanup, calls the [Default](reference/cwnd-class.md#default) member function to perform Windows cleanup, and lastly calls the virtual member function [PostNcDestroy](reference/cwnd-class.md#postncdestroy). The [CFrameWnd](reference/cframewnd-class.md) implementation of `PostNcDestroy` deletes the C++ window object. You should never use the C++ **`delete`** operator on a frame window. Use `DestroyWindow` instead. diff --git a/docs/mfc/destroying-the-dialog-box.md b/docs/mfc/destroying-the-dialog-box.md index c8a2f0dbfbf..b519e064233 100644 --- a/docs/mfc/destroying-the-dialog-box.md +++ b/docs/mfc/destroying-the-dialog-box.md @@ -3,11 +3,13 @@ description: "Learn more about: Destroying the Dialog Box" title: "Destroying the Dialog Box" ms.date: "11/04/2016" helpviewer_keywords: ["dialog boxes [MFC], deleting", "destruction, dialog box", "dialog boxes [MFC], destroying", "dialog boxes [MFC], removing", "modeless dialog boxes [MFC], destroying", "MFC dialog boxes [MFC], destroying", "modal dialog boxes [MFC], destroying"] -ms.assetid: dabceee7-3639-4d85-bf34-73515441b3d0 ms.topic: concept-article --- # Destroying the Dialog Box +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Modal dialog boxes are normally created on the stack frame and destroyed when the function that created them ends. The dialog object's destructor is called when the object goes out of scope. Modeless dialog boxes are normally created and owned by a parent view or frame window — the application's main frame window or a document frame window. The default [OnClose](reference/cwnd-class.md#onclose) handler calls [DestroyWindow](reference/cwnd-class.md#destroywindow), which destroys the dialog-box window. If the dialog box stands alone, with no pointers to it or other special ownership semantics, you should override [PostNcDestroy](reference/cwnd-class.md#postncdestroy) to destroy the C++ dialog object. You should also override [OnCancel](reference/cdialog-class.md#oncancel) and call `DestroyWindow` from within it. If not, the owner of the dialog box should destroy the C++ object when it is no longer necessary. diff --git a/docs/mfc/destroying-the-list-control.md b/docs/mfc/destroying-the-list-control.md index 760823ee5d8..38792c165d3 100644 --- a/docs/mfc/destroying-the-list-control.md +++ b/docs/mfc/destroying-the-list-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Destroying the List Control" title: "Destroying the List Control" ms.date: "11/04/2016" helpviewer_keywords: ["list controls [MFC], destroying", "CListCtrl class [MFC], destroying controls"] -ms.assetid: 513ec820-3a02-49d2-b073-a6a7a3fc91b3 ms.topic: concept-article --- # Destroying the List Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If you embed your [CListCtrl](reference/clistctrl-class.md) object as a data member of a view or dialog class, it is destroyed when its owner is destroyed. If you use a [CListView](reference/clistview-class.md), the framework destroys the control when it destroys the view. If you arrange for some of your list data to be stored in the application rather than the list control, you will need to arrange for its deallocation. For more information, see [Callback Items and the Callback Mask](/windows/win32/Controls/using-list-view-controls) in the Windows SDK. diff --git a/docs/mfc/destroying-window-objects.md b/docs/mfc/destroying-window-objects.md index 3a02e91f0bc..9ef30b2dc40 100644 --- a/docs/mfc/destroying-window-objects.md +++ b/docs/mfc/destroying-window-objects.md @@ -3,11 +3,13 @@ description: "Learn more about: Destroying Window Objects" title: "Destroying Window Objects" ms.date: "11/04/2016" helpviewer_keywords: ["frame windows [MFC], destroying", "window objects [MFC], deleting", "window objects [MFC], destroying", "window objects [MFC], removing"] -ms.assetid: 3241fea0-c614-4a25-957d-20f21bd5fd0c ms.topic: concept-article --- # Destroying Window Objects +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Care must be taken with your own child windows to destroy the C++ window object when the user is finished with the window. If these objects are not destroyed, your application will not recover their memory. Fortunately, the framework manages window destruction as well as creation for frame windows, views, and dialog boxes. If you create additional windows, you are responsible for destroying them. ## What do you want to know more about diff --git a/docs/mfc/detaching-a-cwnd-from-its-hwnd.md b/docs/mfc/detaching-a-cwnd-from-its-hwnd.md index abacdcd81f5..ce2d2c3d3e2 100644 --- a/docs/mfc/detaching-a-cwnd-from-its-hwnd.md +++ b/docs/mfc/detaching-a-cwnd-from-its-hwnd.md @@ -3,11 +3,13 @@ description: "Learn more about: Detaching a CWnd from Its HWND" title: "Detaching a CWnd from Its HWND" ms.date: "11/04/2016" helpviewer_keywords: ["HWND, detaching CWnd from", "removing HWNDs from CWnds", "CWnd objects [MFC], detaching from HWND", "detaching CWnds from HWNDs", "Detach method (CWnd class)"] -ms.assetid: 6efadf84-0517-4a3f-acfd-216e088f19c6 ms.topic: concept-article --- # Detaching a CWnd from Its HWND +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If you need to circumvent the object-`HWND` relationship, MFC provides another `CWnd` member function, [Detach](reference/cwnd-class.md#detach), which disconnects the C++ window object from the Windows window. This prevents the destructor from destroying the Windows window when the object is destroyed. ## What do you want to know more about diff --git a/docs/mfc/device-contexts.md b/docs/mfc/device-contexts.md index 6662d7c60ec..535c3f4debf 100644 --- a/docs/mfc/device-contexts.md +++ b/docs/mfc/device-contexts.md @@ -3,10 +3,12 @@ description: "Learn more about: Device Contexts" title: "Device Contexts" ms.date: "11/04/2016" helpviewer_keywords: ["OnPrepareDC method [MFC]", "windows [MFC], and device context", "drawing [MFC], device context", "CClientDC class [MFC], and GetDC method [MFC]", "drawing [MFC], in mouse and device contexts", "CDC class [MFC], objects", "device contexts [MFC]", "client areas", "CMetaFileDC class [MFC], and OnPrepareDC method [MFC]", "GDI objects [MFC], device contexts", "graphic objects [MFC], device contexts", "frame windows [MFC], device contexts", "metafiles and device contexts", "EndPaint method [MFC]", "printers [MFC], device contexts", "mouse [MFC], drawing and device contexts", "BeginPaint method, CPaintDC", "CPaintDC class [MFC], device context for painting", "windows [MFC], drawing directly into", "client areas, and device context", "device contexts [MFC], CDC class [MFC]", "user interface [MFC], device contexts", "device-independent drawing", "GetDC method and CClientDC class [MFC]", "CClientDC class [MFC], and ReleaseDC method [MFC]", "ReleaseDC method [MFC]", "device contexts [MFC], about device contexts", "drawing [MFC], directly into windows", "painting and device context"] -ms.assetid: d0cd51f1-f778-4c7e-bf50-d738d10433c7 --- # Device Contexts +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A device context is a Windows data structure containing information about the drawing attributes of a device such as a display or a printer. All drawing calls are made through a device-context object, which encapsulates the Windows APIs for drawing lines, shapes, and text. Device contexts allow device-independent drawing in Windows. Device contexts can be used to draw to the screen, to the printer, or to a metafile. [CPaintDC](reference/cpaintdc-class.md) objects encapsulate the common idiom of Windows, calling the `BeginPaint` function, then drawing in the device context, then calling the `EndPaint` function. The `CPaintDC` constructor calls `BeginPaint` for you, and the destructor calls `EndPaint`. The simplified process is to create the [CDC](reference/cdc-class.md) object, draw, and then destroy the `CDC` object. In the framework, much of even this process is automated. In particular, your `OnDraw` function is passed a `CPaintDC` already prepared (via `OnPrepareDC`), and you simply draw into it. It is destroyed by the framework and the underlying device context is released to Windows upon return from the call to your `OnDraw` function. diff --git a/docs/mfc/dialog-bars.md b/docs/mfc/dialog-bars.md index f1d629b751a..269c5c03e94 100644 --- a/docs/mfc/dialog-bars.md +++ b/docs/mfc/dialog-bars.md @@ -3,10 +3,12 @@ description: "Learn more about: Dialog Bars" title: "Dialog Bars" ms.date: "11/19/2018" helpviewer_keywords: ["MFC, control bars", "CDialogBar class [MFC], dialog bars", "control bars [MFC], dialog bars", "dialog bars", "dialog bars [MFC], about dialog bars"] -ms.assetid: 485c8055-6bb0-4051-8417-dd2971499321 --- # Dialog Bars +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A dialog bar is a toolbar, a kind of [control bar](control-bars.md) that can contain any kind of control. Because it has the characteristics of a modeless dialog box, a [CDialogBar](reference/cdialogbar-class.md) object provides a more powerful toolbar. There are several key differences between a toolbar and a `CDialogBar` object. A `CDialogBar` object is created from a dialog-template resource, which you can create with the Visual Studio dialog editor and which can contain any kind of Windows control. The user can tab from control to control. And you can specify an alignment style to align the dialog bar with any part of the parent frame window or even to leave it in place if the parent is resized. The following figure shows a dialog bar with a variety of controls. diff --git a/docs/mfc/dialog-box-classes.md b/docs/mfc/dialog-box-classes.md index 2924f1f55a3..d0bb082decc 100644 --- a/docs/mfc/dialog-box-classes.md +++ b/docs/mfc/dialog-box-classes.md @@ -4,10 +4,12 @@ title: "Dialog Box Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.dialog"] helpviewer_keywords: ["property sheet classes", "dialog box classes", "OLE common dialog classes", "common dialog classes [MFC]", "tab dialog boxes"] -ms.assetid: db75da23-4eff-4c6c-beae-79cf046fbce9 --- # Dialog Box Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Class `CDialog` and its derived classes encapsulate dialog-box functionality. Since a dialog box is a special kind of window, `CDialog` is derived from `CWnd`. Derive your dialog classes from `CDialog` or use one of the common dialog classes for standard dialog boxes, such as opening or saving a file, printing, selecting a font or color, initiating a search-and-replace operation, or performing various OLE-related operations. [CDialog](reference/cdialog-class.md)
diff --git a/docs/mfc/dialog-box-components-in-the-framework.md b/docs/mfc/dialog-box-components-in-the-framework.md index 84a07119c71..3f47a6a863e 100644 --- a/docs/mfc/dialog-box-components-in-the-framework.md +++ b/docs/mfc/dialog-box-components-in-the-framework.md @@ -3,10 +3,12 @@ description: "Learn more about: Dialog-Box Components in the Framework" title: "Dialog-Box Components in the Framework" ms.date: "11/04/2016" helpviewer_keywords: ["MFC dialog boxes [MFC], creating", "dialog classes [MFC], dialog box components", "MFC dialog boxes [MFC], about MFC dialog boxes", "dialog templates [MFC], MFC framework", "MFC dialog boxes [MFC], dialog resource"] -ms.assetid: 592db160-0a8a-49be-ac72-ead278aca53f --- # Dialog-Box Components in the Framework +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In the MFC framework, a dialog box has two components: - A dialog-template resource that specifies the dialog box's controls and their placement. diff --git a/docs/mfc/dialog-boxes-in-ole.md b/docs/mfc/dialog-boxes-in-ole.md index dbd432b73d1..c9bbb23247c 100644 --- a/docs/mfc/dialog-boxes-in-ole.md +++ b/docs/mfc/dialog-boxes-in-ole.md @@ -3,10 +3,12 @@ description: "Learn more about: Dialog boxes in OLE" title: "Dialog boxes in OLE" ms.date: "11/04/2016" helpviewer_keywords: ["MFC dialog boxes [MFC], OLE dialog boxes", "OLE dialog boxes", "dialog boxes", "OLE dialog boxes [MFC], about OLE dialog boxes", "dialog boxes [MFC], about dialog boxes", "dialog boxes [MFC], OLE", "Insert object"] -ms.assetid: 73c41eb8-738a-4d02-9212-d3395bb09a3a --- # Dialog boxes in OLE +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + While a user runs an OLE-enabled application, there are times when the application needs information from the user to carry out the operation. The MFC OLE classes provide default dialog boxes to gather the required information. This article lists the tasks handled by the OLE dialog boxes and the classes needed to display those dialog boxes. For details on OLE dialog boxes and the structures used to customize their behavior, see [MFC Reference](mfc-desktop-applications.md). ## Common dialog boxes diff --git a/docs/mfc/dialog-boxes.md b/docs/mfc/dialog-boxes.md index 52ff46b668e..542ef59b938 100644 --- a/docs/mfc/dialog-boxes.md +++ b/docs/mfc/dialog-boxes.md @@ -3,10 +3,12 @@ description: "Learn more about: Dialog Boxes" title: "Dialog Boxes" ms.date: "11/04/2016" helpviewer_keywords: ["modeless dialog boxes [MFC], MFC dialog boxes", "MFC, dialog boxes", "modal dialog boxes [MFC], MFC dialog boxes", "CDialog class [MFC], MFC dialog boxes", "MFC dialog boxes"] -ms.assetid: e4feea1a-8360-4ccb-9b84-507f1ccd9ef3 --- # Dialog Boxes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Applications for Windows frequently communicate with the user through dialog boxes. Class [CDialog](reference/cdialog-class.md) provides an interface for managing dialog boxes, the Visual Studio dialog editor makes it easy to design dialog boxes and create their dialog-template resources, and Code wizards simplify the process of initializing and validating the controls in a dialog box and of gathering the values entered by the user. Dialog boxes contain controls, including: diff --git a/docs/mfc/dialog-data-exchange-and-validation.md b/docs/mfc/dialog-data-exchange-and-validation.md index 7ed85e5f7ed..c8742600b4a 100644 --- a/docs/mfc/dialog-data-exchange-and-validation.md +++ b/docs/mfc/dialog-data-exchange-and-validation.md @@ -3,10 +3,12 @@ description: "Learn more about: Dialog Data Exchange and Validation" title: "Dialog Data Exchange and Validation" ms.date: "11/04/2016" helpviewer_keywords: ["data validation [MFC], dialog boxes", "dialog box data [MFC]", "dialog boxes [MFC], validating data", "validating data [MFC], dialog box data entry", "DDX (dialog data exchange) [MFC], data validation", "dialog box data [MFC], retrieving", "Windows common controls [MFC], dialog boxes", "DDV (dialog data validation) [MFC]", "data [MFC], dialog boxes", "common controls [MFC], dialog boxes", "dialog boxes [MFC], retrieving data", "retrieving dialog box data"] -ms.assetid: 7d373554-7330-43ae-abf1-4bb14e437b4a --- # Dialog Data Exchange and Validation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Dialog data exchange (DDX) is an easy way to initialize the controls in your dialog box and to gather data input by the user. Dialog data validation (DDV) is an easy way to validate data entry in a dialog box. To take advantage of DDX and DDV in your dialog boxes, use the [Add Member Variable Wizard](../ide/adding-a-member-variable-visual-cpp.md#add-member-variable-wizard) to create the data members and set their data types and specify validation rules. ## What do you want to know more about diff --git a/docs/mfc/dialog-data-exchange.md b/docs/mfc/dialog-data-exchange.md index ca1f737fc19..0e039bd13c1 100644 --- a/docs/mfc/dialog-data-exchange.md +++ b/docs/mfc/dialog-data-exchange.md @@ -3,10 +3,12 @@ description: "Learn more about: Dialog Data Exchange" title: "Dialog Data Exchange" ms.date: "11/19/2018" helpviewer_keywords: ["initializing dialog boxes", "canceling data exchange", "dialog box data, retrieving", "DDX (dialog data exchange), data exchange mechanism", "dialog boxes [MFC], initializing", "dialog boxes [MFC], retrieving user input using DDX", "dialog box data", "dialog boxes [MFC], data exchange", "CDataExchange class [MFC], using DDX", "DoDataExchange method [MFC]", "user input [MFC], retrieving from MFC dialog boxes", "capturing user input [MFC]", "transferring dialog box data", "DDX (dialog data exchange), canceling", "UpdateData method [MFC]", "retrieving dialog box data [MFC]"] -ms.assetid: 4675f63b-41d2-45ed-b6c3-235ad8ab924b --- # Dialog Data Exchange +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If you use the DDX mechanism, you set the initial values of the dialog object's member variables, typically in your `OnInitDialog` handler or the dialog constructor. Immediately before the dialog is displayed, the framework's DDX mechanism transfers the values of the member variables to the controls in the dialog box, where they appear when the dialog box itself appears in response to `DoModal` or `Create`. The default implementation of `OnInitDialog` in `CDialog` calls the `UpdateData` member function of class `CWnd` to initialize the controls in the dialog box. The same mechanism transfers values from the controls to the member variables when the user clicks the OK button (or whenever you call the `UpdateData` member function with the argument **TRUE**). The dialog data validation mechanism validates any data items for which you specified validation rules. diff --git a/docs/mfc/dialog-data-validation.md b/docs/mfc/dialog-data-validation.md index 0be1815d2cc..9814f2715db 100644 --- a/docs/mfc/dialog-data-validation.md +++ b/docs/mfc/dialog-data-validation.md @@ -3,10 +3,12 @@ description: "Learn more about: Dialog Data Validation" title: "Dialog Data Validation" ms.date: "11/04/2016" helpviewer_keywords: ["validating data [MFC], message boxes", "data validation [MFC], dialog boxes", "dialog boxes [MFC], validating data", "validating data [MFC], dialog box data entry", "DDV (dialog data validation) [MFC]", "data validation [MFC], message boxes"] -ms.assetid: f070c309-2044-4ff2-8c92-1ec1ea84af58 --- # Dialog Data Validation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can specify validation in addition to data exchange by calling DDV functions, as shown in the example in [Dialog Data Exchange](dialog-data-exchange.md). The `DDV_MaxChars` call in the example validates that the string entered in the text-box control is not longer than 20 characters. The DDV function typically alerts the user with a message box if the validation fails and puts the focus on the offending control so the user can reenter the data. A DDV function for a given control must be called immediately after the DDX function for the same control. You can also define your own custom DDX and DDV routines. For details on this and other aspects of DDX and DDV, see [MFC Technical Note 26](tn026-ddx-and-ddv-routines.md). diff --git a/docs/mfc/dialog-sample-list.md b/docs/mfc/dialog-sample-list.md index f68785df172..cc8169fc3c6 100644 --- a/docs/mfc/dialog-sample-list.md +++ b/docs/mfc/dialog-sample-list.md @@ -3,10 +3,12 @@ description: "Learn more about: Dialog Sample List" title: "Dialog Sample List" ms.date: "11/04/2016" helpviewer_keywords: ["sample applications [MFC], dialog boxes"] -ms.assetid: 3fc7dd7c-d758-4c43-96bb-0ea638ca1ad7 --- # Dialog Sample List +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + See the following sample programs that illustrate dialog boxes and property sheets: *MDI Sample Application with Dialog Boxes* diff --git a/docs/mfc/do-i-have-to-derive-new-classes-from-cobject-q.md b/docs/mfc/do-i-have-to-derive-new-classes-from-cobject-q.md index 4881b3a4054..9e391415b09 100644 --- a/docs/mfc/do-i-have-to-derive-new-classes-from-cobject-q.md +++ b/docs/mfc/do-i-have-to-derive-new-classes-from-cobject-q.md @@ -3,10 +3,12 @@ description: "Learn more about: Do I Have to Derive New Classes from CObject?" title: "Do I Have to Derive New Classes from CObject?" ms.date: "11/04/2016" helpviewer_keywords: ["derived classes [MFC], from CObject", "CObject class [MFC], when to use"] -ms.assetid: 26021031-feaf-424c-80d1-9547c4409d6a --- # Do I Have to Derive New Classes from CObject? +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + No, you don't. Derive a class from [CObject](reference/cobject-class.md) when you need the facilities it provides, such as serialization or dynamic creatability. Many data classes need to be serialized to files, so it's often a good idea to derive them from `CObject`. For an example of a class derived from `CObject`, see the [Scribble sample](../overview/visual-cpp-samples.md). diff --git a/docs/mfc/docking-and-floating-toolbars.md b/docs/mfc/docking-and-floating-toolbars.md index 2dc9f54a2a7..ed02a6e6554 100644 --- a/docs/mfc/docking-and-floating-toolbars.md +++ b/docs/mfc/docking-and-floating-toolbars.md @@ -4,11 +4,13 @@ title: "Docking and Floating Toolbars" ms.date: "11/04/2016" f1_keywords: ["CBRS_SIZE_DYNAMIC", "CBRS_SIZE_FIXED"] helpviewer_keywords: ["size [MFC], toolbars", "size", "frame windows [MFC], toolbar docking", "CBRS_ALIGN_ANY constant [MFC]", "palettes, floating", "toolbars [MFC], docking", "CBRS_SIZE_DYNAMIC constant [MFC]", "floating toolbars", "toolbars [MFC], size", "toolbars [MFC], floating", "fixed-size toolbars", "CBRS_SIZE_FIXED constant [MFC]", "toolbar controls [MFC], wrapping", "toolbars [MFC], wrapping", "floating palettes"] -ms.assetid: b7f9f9d4-f629-47d2-a3c4-2b33fa6b51e4 ms.topic: concept-article --- # Docking and Floating Toolbars +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Class Library supports dockable toolbars. A dockable toolbar can be attached, or docked, to any side of its parent window, or it can be detached, or floated, in its own mini-frame window. This article explains how to use dockable toolbars in your applications. If you use the Application Wizard to generate the skeleton of your application, you are asked to choose whether you want dockable toolbars. By default, the Application Wizard generates the code that performs the three actions necessary to place a dockable toolbar in your application: diff --git a/docs/mfc/document-and-view-classes-created-by-the-mfc-application-wizard.md b/docs/mfc/document-and-view-classes-created-by-the-mfc-application-wizard.md index 5ebeea6596b..926435cf6f8 100644 --- a/docs/mfc/document-and-view-classes-created-by-the-mfc-application-wizard.md +++ b/docs/mfc/document-and-view-classes-created-by-the-mfc-application-wizard.md @@ -3,10 +3,12 @@ description: "Learn more about: Document and View Classes Created by the MFC App title: "Document and View Classes Created by the MFC Application Wizard" ms.date: "11/04/2016" helpviewer_keywords: ["document classes [MFC]", "document classes [MFC], created by application wizards", "application wizards [MFC], document/view classes created", "view classes [MFC], created by application wizards"] -ms.assetid: 70c34a60-2701-4981-acea-c08a5787d8e6 --- # Document and View Classes Created by the MFC Application Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The MFC Application Wizard gives you a head start on your program development by creating skeletal document and view classes for you. You can then [map commands and messages to these classes](reference/mapping-messages-to-functions.md) and use the Visual Studio source code editor to write their member functions. The document class created by the MFC Application Wizard is derived from class [CDocument](reference/cdocument-class.md). The view class is derived from [CView](reference/cview-class.md). The names that the Application Wizard gives these classes and the files that contain them are based on the project name you supply in the Application Wizard dialog box. In the Application Wizard, you can use the Generated Classes page to alter the default names. diff --git a/docs/mfc/document-classes.md b/docs/mfc/document-classes.md index 7e160a90e8c..85f0ffe26cf 100644 --- a/docs/mfc/document-classes.md +++ b/docs/mfc/document-classes.md @@ -4,10 +4,12 @@ title: "Document Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.document"] helpviewer_keywords: ["document classes [MFC]"] -ms.assetid: 4bf19b02-0a4f-4319-b68e-cddcba2705cb --- # Document Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Document class objects, created by document-template objects, manage the application's data. You will derive a class for your documents from one of these classes. Document class objects interact with view objects. View objects represent the client area of a window, display a document's data, and allow users to interact with it. Documents and views are created by a document-template object. diff --git a/docs/mfc/document-template-classes.md b/docs/mfc/document-template-classes.md index d4eb01a7d6e..ba612259b59 100644 --- a/docs/mfc/document-template-classes.md +++ b/docs/mfc/document-template-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: Document-Template Classes" title: "Document-Template Classes" ms.date: "11/04/2016" helpviewer_keywords: ["document templates [MFC], classes"] -ms.assetid: 901749e9-8048-44a0-b5e2-361554650a73 --- # Document-Template Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Document-template objects coordinate the creation of document, view, and frame window objects when a new document or view is created. [CDocTemplate](reference/cdoctemplate-class.md)
diff --git a/docs/mfc/document-template-creation.md b/docs/mfc/document-template-creation.md index 5efdb1673b1..1aab92815f0 100644 --- a/docs/mfc/document-template-creation.md +++ b/docs/mfc/document-template-creation.md @@ -3,10 +3,12 @@ description: "Learn more about: Document Template Creation" title: "Document Template Creation" ms.date: "11/04/2016" helpviewer_keywords: ["document templates [MFC]", "constructors [MFC], document template", "document templates [MFC], creating", "MFC, document templates", "templates [MFC], document templates"] -ms.assetid: c87f1821-7cbf-442e-9690-f126ae7fb783 --- # Document Template Creation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When creating a new document in response to a **New** or **Open** command from the **File** menu, the document template also creates a new frame window through which to view the document. The document-template constructor specifies what types of documents, windows, and views the template will be able to create. This is determined by the arguments you pass to the document-template constructor. The following code illustrates creation of a [CMultiDocTemplate](reference/cmultidoctemplate-class.md) for a sample application: diff --git a/docs/mfc/document-templates-and-the-document-view-creation-process.md b/docs/mfc/document-templates-and-the-document-view-creation-process.md index a768e96d1e7..977df497b81 100644 --- a/docs/mfc/document-templates-and-the-document-view-creation-process.md +++ b/docs/mfc/document-templates-and-the-document-view-creation-process.md @@ -3,10 +3,12 @@ description: "Learn more about: Document Templates and the Document/View Creatio title: "Document Templates and the Document-View Creation Process" ms.date: "11/19/2018" helpviewer_keywords: ["icons, for multiple document templates", "document templates [MFC], and views", "document/view architecture [MFC], creating document/view", "single document template", "MFC, document templates", "multiple document template", "CDocTemplate class [MFC]", "templates [MFC], document templates"] -ms.assetid: 311ce4cd-fbdf-4ea1-a51b-5bb043abbcee --- # Document Templates and the Document/View Creation Process +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To manage the complex process of creating documents with their associated views and frame windows, the framework uses two document template classes: [CSingleDocTemplate](reference/csingledoctemplate-class.md) for SDI applications and [CMultiDocTemplate](reference/cmultidoctemplate-class.md) for MDI applications. A `CSingleDocTemplate` can create and store one document of one type at a time. A `CMultiDocTemplate` keeps a list of many open documents of one type. Some applications support multiple document types. For example, an application might support text documents and graphics documents. In such an application, when the user chooses the New command on the File menu, a dialog box shows a list of possible new document types to open. For each supported document type, the application uses a distinct document template object. The following figure illustrates the configuration of an MDI application that supports two document types and shows several open documents. diff --git a/docs/mfc/document-view-architecture.md b/docs/mfc/document-view-architecture.md index 1f09850246f..e782f90ac5b 100644 --- a/docs/mfc/document-view-architecture.md +++ b/docs/mfc/document-view-architecture.md @@ -3,10 +3,12 @@ description: "Learn more about: Document/View Architecture" title: "Document-View Architecture" ms.date: "11/19/2018" helpviewer_keywords: ["CView class [MFC], view architecture", "CDocument class [MFC]", "MFC, views", "views [MFC], MFC document/view model", "document objects [MFC]", "document objects [MFC], MFC document/view model", "MFC, documents", "documents [MFC], MFC document/view model", "document objects [MFC], document/view architecture"] -ms.assetid: 6127768a-553f-462a-b01b-a5ee6068c81e --- # Document/View Architecture +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + By default, the MFC Application Wizard creates an application skeleton with a document class and a view class. MFC separates data management into these two classes. The document stores the data and manages printing the data and coordinates updating multiple views of the data. The view displays the data and manages user interaction with it, including selection and editing. In this model, an MFC document object reads and writes data to persistent storage. The document may also provide an interface to the data wherever it resides (such as in a database). A separate view object manages data display, from rendering the data in a window to user selection and editing of data. The view obtains display data from the document and communicates back to the document any data changes. diff --git a/docs/mfc/document-view-creation.md b/docs/mfc/document-view-creation.md index 094a7ff5e85..dbdaa81bd3b 100644 --- a/docs/mfc/document-view-creation.md +++ b/docs/mfc/document-view-creation.md @@ -3,10 +3,12 @@ description: "Learn more about: Document/View Creation" title: "Document-View Creation" ms.date: "11/04/2016" helpviewer_keywords: ["documents [MFC], creating", "views [MFC], and frame windows", "views [MFC], creating", "tables [MFC]", "MFC, views", "document/view architecture [MFC], creating document/view", "object creators", "MFC, documents", "tables [MFC], objects each MFC object creates"] -ms.assetid: bda14f41-ed50-439d-af9e-591174e7dd64 --- # Document/View Creation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The framework supplies implementations of the **New** and **Open** commands (among others) on the **File** menu. Creation of a new document and its associated view and frame window is a cooperative effort among the application object, a document template, the newly created document, and the newly created frame window. The following table summarizes which objects create what. ### Object Creators diff --git a/docs/mfc/document-view-sample-list.md b/docs/mfc/document-view-sample-list.md index c72a073f76c..9bb5f66511c 100644 --- a/docs/mfc/document-view-sample-list.md +++ b/docs/mfc/document-view-sample-list.md @@ -2,10 +2,12 @@ description: "Learn more about: Document/View Sample List" title: "Document-View Sample List" ms.date: "11/04/2016" -ms.assetid: 6f087ce8-2f46-433c-b674-4c110743b289 --- # Document/View Sample List +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + See the following sample programs that illustrate using MFC's document/view architecture in interesting ways: *Document/View Variations* diff --git a/docs/mfc/documents-views-and-the-framework.md b/docs/mfc/documents-views-and-the-framework.md index 4c9fca0aceb..cf396b37ddd 100644 --- a/docs/mfc/documents-views-and-the-framework.md +++ b/docs/mfc/documents-views-and-the-framework.md @@ -3,10 +3,12 @@ title: "Documents, views, and the Microsoft Foundation Class (MFC) library frame description: "A description of documents and views in the Microsoft Foundation Class (MFC) library." ms.date: "09/25/2020" helpviewer_keywords: ["document templates [MFC], template objects", "applications [MFC]", "MFC, application framework", "application objects [MFC], relation to other MFC objects", "documents [MFC]", "MFC, documents", "document objects [MFC], in relation to other MFC objects", "view objects [MFC], relation to other MFC objects", "MFC, views", "document/view architecture [MFC], about document/view architecture", "objects [MFC], MFC applications", "MFC object relationships", "thread objects [MFC]"] -ms.assetid: 409ddd9b-66ad-4625-84f7-bf55a41d697b --- # Documents, views, and the framework +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + At the heart of the MFC framework are the concepts of document and view. A document is a data object with which the user interacts in an editing session. It's created by the **New** or **Open** command on the **File** menu and is typically saved in a file. (Standard MFC documents, derived from class `CDocument`, are different from Active documents and OLE compound documents.) A view is a window object through which the user interacts with a document. The key objects in a running application are: diff --git a/docs/mfc/drag-and-drop-ole.md b/docs/mfc/drag-and-drop-ole.md index 3e7d26ae827..f87bbd28647 100644 --- a/docs/mfc/drag-and-drop-ole.md +++ b/docs/mfc/drag-and-drop-ole.md @@ -3,10 +3,12 @@ title: "OLE drag and drop" description: "Overview of Microsoft Foundation Classes (MFC) OLE drag and drop, how to implement a drop source, a drop target, and how to customize drag and drop." ms.date: "02/09/2020" helpviewer_keywords: ["OLE server applications [MFC], drag and drop", "drag and drop [MFC]", "OLE applications [MFC], drag and drop", "File Manager drag and drop support [MFC]", "drag and drop [MFC], about OLE drag and drop", "OLE drag and drop [MFC]", ] -ms.assetid: a4595350-ca06-4400-88a1-f0175c76b77b --- # OLE drag and drop +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The drag-and-drop feature of OLE is primarily a shortcut for copying and pasting data. When you use the Clipboard to copy or paste data, a number of steps are required. You select the data, and choose **Cut** or **Copy** from the **Edit** menu. Then you move to the destination app or window, and place the cursor in the target location. Finally, you choose **Edit** > **Paste** from the menu. The OLE drag-and-drop feature is different from the File Manager drag-and-drop mechanism. The File Manager can only handle filenames, and is designed specifically to pass filenames to applications. Drag and drop in OLE is much more general. It allows you to drag and drop any data that could also be placed on the Clipboard. diff --git a/docs/mfc/dragging-and-dropping-files-in-a-frame-window.md b/docs/mfc/dragging-and-dropping-files-in-a-frame-window.md index f3ecc1650ed..d59c75f98b1 100644 --- a/docs/mfc/dragging-and-dropping-files-in-a-frame-window.md +++ b/docs/mfc/dragging-and-dropping-files-in-a-frame-window.md @@ -3,11 +3,13 @@ description: "Learn more about: Dragging and Dropping Files in a Frame Window" title: "Dragging and Dropping Files in a Frame Window" ms.date: "11/04/2016" helpviewer_keywords: ["drag and drop [MFC], files", "drag and drop [MFC], File Manager", "Windows Explorer [MFC]", "File Manager drag and drop support [MFC]", "files [MFC], drag and drop", "frame windows [MFC], dragging and dropping files in", "drag and drop [MFC], Windows Explorer"] -ms.assetid: 85560fe9-121b-4105-bd7b-216b966e19fa ms.topic: concept-article --- # Dragging and Dropping Files in a Frame Window +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The frame window manages a relationship with File Explorer or File Manager. By adding a few initializing calls in your override of the `CWinApp` member function `InitInstance`, as described in [CWinApp: The Application Class](cwinapp-the-application-class.md), you can have your frame window indirectly open files dragged from File Explorer or File Manager and dropped in the frame window. See [File Manager Drag and Drop](special-cwinapp-services.md). diff --git a/docs/mfc/dragging-images-from-an-image-list.md b/docs/mfc/dragging-images-from-an-image-list.md index ecea5051da3..3d782945ac2 100644 --- a/docs/mfc/dragging-images-from-an-image-list.md +++ b/docs/mfc/dragging-images-from-an-image-list.md @@ -3,11 +3,13 @@ description: "Learn more about: Dragging Images from an Image List" title: "Dragging Images from an Image List" ms.date: "11/04/2016" helpviewer_keywords: ["CImageList class [MFC], dragging images from", "dragging images from image lists [MFC]", "image lists [MFC], dragging images from", "images [MFC], dragging from image lists"] -ms.assetid: af691db8-e4f0-4046-b7b9-9acc68d3713d ms.topic: concept-article --- # Dragging Images from an Image List +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + [CImageList](reference/cimagelist-class.md) includes functions for dragging an image on the screen. The dragging functions move an image smoothly, in color, and without any flashing of the cursor. Both masked and unmasked images can be dragged. The [BeginDrag](reference/cimagelist-class.md#begindrag) member function begins a drag operation. The parameters include the index of the image to drag and the location of the hot spot within the image. The hot spot is a single pixel that the dragging functions recognize as the exact screen location of the image. Typically, an application sets the hot spot so that it coincides with the hot spot of the mouse cursor. The [DragMove](reference/cimagelist-class.md#dragmove) member function moves the image to a new location. diff --git a/docs/mfc/drawing-and-printing-classes.md b/docs/mfc/drawing-and-printing-classes.md index d43f6e9affa..97c8131d852 100644 --- a/docs/mfc/drawing-and-printing-classes.md +++ b/docs/mfc/drawing-and-printing-classes.md @@ -3,11 +3,13 @@ description: "Learn more about: Drawing and Printing Classes" title: "Drawing and Printing Classes" ms.date: "11/04/2016" helpviewer_keywords: ["output [MFC], graphical classes", "drawing [MFC], classes", "printing classes [MFC]", "graphics [MFC], graphical output classes"] -ms.assetid: 2781c599-a038-462a-98ca-634b07ee22b0 ms.topic: concept-article --- # Drawing and Printing Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In Windows, all graphical output is drawn on a virtual drawing area called a device context (DC). MFC provides classes to encapsulate the various types of DCs, as well as encapsulations for Windows drawing tools such as bitmaps, brushes, palettes, and pens. ## See also diff --git a/docs/mfc/drawing-images-from-an-image-list.md b/docs/mfc/drawing-images-from-an-image-list.md index 0f0e5cd6019..a2e7dc7581a 100644 --- a/docs/mfc/drawing-images-from-an-image-list.md +++ b/docs/mfc/drawing-images-from-an-image-list.md @@ -3,11 +3,13 @@ description: "Learn more about: Drawing Images from an Image List" title: "Drawing Images from an Image List" ms.date: "11/04/2016" helpviewer_keywords: ["CImageList class [MFC], drawing images from", "drawing [MFC], images from image lists", "image lists [MFC], drawing images from", "images [MFC], drawing"] -ms.assetid: 2f6063fb-1c28-45f8-a333-008c064db11c ms.topic: concept-article --- # Drawing Images from an Image List +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To draw an image, use the [CImageList::Draw](reference/cimagelist-class.md#draw) member function. You'll specify a pointer to a device context object, the index of the image to draw, the location in the device context at which to draw the image, and a set of flags to indicate the drawing style. When you specify the **ILD_TRANSPARENT** style, `Draw` uses a two-step process to draw a masked image. First, it performs a logical-AND operation on the bits of the image and the bits of the mask. Then it performs a logical-XOR operation on the results of the first operation and the background bits of the destination device context. This process creates transparent areas in the resulting image; that is, each white bit in the mask causes the corresponding bit in the resulting image to be transparent. diff --git a/docs/mfc/drawing-in-a-view.md b/docs/mfc/drawing-in-a-view.md index ecd59ea9512..5993704da68 100644 --- a/docs/mfc/drawing-in-a-view.md +++ b/docs/mfc/drawing-in-a-view.md @@ -3,11 +3,13 @@ description: "Learn more about: Drawing in a View" title: "Drawing in a View" ms.date: "11/04/2016" helpviewer_keywords: ["drawing [MFC], in views", "views [MFC], printing", "views [MFC], updating", "printing [MFC], views", "views [MFC], rendering", "printing views [MFC]", "paint messages in view class [MFC]", "device contexts, screen drawings"] -ms.assetid: e3761db6-0f19-4482-a4cd-ac38ef7c4d3a ms.topic: how-to --- # Drawing in a View +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Nearly all drawing in your application occurs in the view's `OnDraw` member function, which you must override in your view class. (The exception is mouse drawing, discussed in [Interpreting User Input Through a View](interpreting-user-input-through-a-view.md).) Your `OnDraw` override: 1. Gets data by calling the document member functions you provide. diff --git a/docs/mfc/drawing-tool-classes.md b/docs/mfc/drawing-tool-classes.md index 0e33ab2346e..05411c8d738 100644 --- a/docs/mfc/drawing-tool-classes.md +++ b/docs/mfc/drawing-tool-classes.md @@ -4,11 +4,13 @@ title: "Drawing Tool Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.drawing"] helpviewer_keywords: ["drawing [MFC], tool classes", "screen output classes [MFC]", "output classes [MFC]"] -ms.assetid: e907bd89-38b5-47c9-b76a-95e0bf3bb41d ms.topic: concept-article --- # Drawing Tool Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These classes encapsulate drawing tools that are used to draw on a device context. [CGdiObject](reference/cgdiobject-class.md)
diff --git a/docs/mfc/dynamic-layout.md b/docs/mfc/dynamic-layout.md index f92eca0ea56..460b4f46d7f 100644 --- a/docs/mfc/dynamic-layout.md +++ b/docs/mfc/dynamic-layout.md @@ -2,10 +2,12 @@ description: "Learn more about: Dynamic Layout" title: "Dynamic Layout" ms.date: "09/09/2019" -ms.assetid: 8598cfb2-c8d4-4f5a-bf2b-59dc4653e042 --- # Dynamic Layout +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + With MFC in Visual Studio 2015, you can create dialogs that the user can resize, and you can control the way the layout adjusts to the change in size. For example, you can attach buttons at the bottom of a dialog to the bottom edge so they always stay at the bottom. You can also set up certain controls such as listboxes, editboxes, and text fields to expand as the user expands the dialog. ## Specifying dynamic layout settings for an MFC dialog box diff --git a/docs/mfc/dynamic-object-creation.md b/docs/mfc/dynamic-object-creation.md index a7e77c3fe66..e41eb57dc31 100644 --- a/docs/mfc/dynamic-object-creation.md +++ b/docs/mfc/dynamic-object-creation.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["object creation [MFC], dynamically at run time", "CObject --- # Dynamic Object Creation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how to create an object dynamically at run time. The procedure uses run-time class information, as discussed in the article [Accessing Run-Time Class Information](accessing-run-time-class-information.md). #### Dynamically create an object given its run-time class diff --git a/docs/mfc/enabling-tool-tips.md b/docs/mfc/enabling-tool-tips.md index 4f59728c5a1..f29d9439621 100644 --- a/docs/mfc/enabling-tool-tips.md +++ b/docs/mfc/enabling-tool-tips.md @@ -3,11 +3,13 @@ description: "Learn more about: Enabling Tool Tips" title: "Enabling Tool Tips" ms.date: "11/04/2016" helpviewer_keywords: ["initializing tool tips [MFC]", "enabling tool tips [MFC]", "tool tips [MFC], initializing", "tool tips [MFC], enabling"] -ms.assetid: 06b7c889-7722-4ce6-8b88-9efa50fe6369 ms.topic: how-to --- # Enabling Tool Tips +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can enable tool tip support for the child controls of a window (such as the controls on a form view or dialog box). ### To enable tool tips for the child controls of a window diff --git a/docs/mfc/example-displaying-a-dialog-box-via-a-menu-command.md b/docs/mfc/example-displaying-a-dialog-box-via-a-menu-command.md index b357a9e58f3..03c56551940 100644 --- a/docs/mfc/example-displaying-a-dialog-box-via-a-menu-command.md +++ b/docs/mfc/example-displaying-a-dialog-box-via-a-menu-command.md @@ -3,10 +3,12 @@ description: "Learn more about: Example: Displaying a Dialog Box via a Menu Comm title: "Example: Displaying a Dialog Box via a Menu Command" ms.date: "09/07/2019" helpviewer_keywords: ["MFC dialog boxes [MFC], examples", "MFC dialog boxes [MFC], displaying", "modeless dialog boxes [MFC], displaying", "dialog boxes [MFC], MFC", "modal dialog boxes [MFC], displaying", "examples [MFC], dialog boxes", "menu items [MFC], examples"] -ms.assetid: e8692549-acd7-478f-9c5e-ba310ce8cccd --- # Example: Displaying a Dialog Box via a Menu Command +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic contains procedures to: - Display a modal dialog box through a menu command. diff --git a/docs/mfc/example-of-active-document-containment-office-binder.md b/docs/mfc/example-of-active-document-containment-office-binder.md index 81ef5fd2faf..e09e13f91c3 100644 --- a/docs/mfc/example-of-active-document-containment-office-binder.md +++ b/docs/mfc/example-of-active-document-containment-office-binder.md @@ -3,10 +3,12 @@ description: "Learn more about: Example of Active Document Containment: Office B title: "Example of Active Document Containment: Office Binder" ms.date: "11/04/2016" helpviewer_keywords: ["active documents [MFC], containers", "examples [MFC], active document containment", "containers [MFC], active document", "active document containers [MFC], examples", "Office Binder [MFC]", "MFC COM, active document containment"] -ms.assetid: 70dd8568-e8bc-44ac-bf5e-678767efe8e3 --- # Example of Active Document Containment: Office Binder +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Office Binder is an example of an active document container. An Office Binder includes two primary panes, as containers typically do. The left pane contains icons that correspond to active documents in the Binder. Each document is called a *section* within the Binder. For example, a Binder can contain Word documents, PowerPoint files, Excel spreadsheets, and so on. Clicking an icon in the left pane activates the corresponding active document. The right pane of the Binder then displays the contents of the currently selected active document. diff --git a/docs/mfc/exception-classes.md b/docs/mfc/exception-classes.md index beaf14841a8..2b4a56ffe2a 100644 --- a/docs/mfc/exception-classes.md +++ b/docs/mfc/exception-classes.md @@ -4,10 +4,12 @@ title: "Exception Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.exception"] helpviewer_keywords: ["exception classes [MFC]", "exception handling [MFC], exception classes", "MFC, exceptions"] -ms.assetid: 1a2caf12-b3e9-4189-86d2-bf7a595bf025 --- # Exception Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The class library provides an exception-handling mechanism based on class `CException`. The application framework uses exceptions in its code; you can also use them in yours. For more information, see the article [Exceptions](exception-handling-in-mfc.md). You can derive your own exception types from `CException`. MFC provides an exception class from which you can derive your own exception as well as exception classes for all of the exceptions it supports. diff --git a/docs/mfc/exception-handling-in-mfc.md b/docs/mfc/exception-handling-in-mfc.md index 29b8e759bf4..e91a99ec97f 100644 --- a/docs/mfc/exception-handling-in-mfc.md +++ b/docs/mfc/exception-handling-in-mfc.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["DAO [MFC], exceptions", "assertions [MFC], When to use ex --- # Exception Handling in MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the exception-handling mechanisms available in MFC. Two mechanisms are available: - C++ exceptions, available in MFC version 3.0 and later diff --git a/docs/mfc/exceptions-catching-and-deleting-exceptions.md b/docs/mfc/exceptions-catching-and-deleting-exceptions.md index cd5ef814784..afd5555844f 100644 --- a/docs/mfc/exceptions-catching-and-deleting-exceptions.md +++ b/docs/mfc/exceptions-catching-and-deleting-exceptions.md @@ -3,10 +3,12 @@ description: "Learn more about: Exceptions: Catching and Deleting Exceptions" title: "Exceptions: Catching and Deleting Exceptions" ms.date: "11/04/2016" helpviewer_keywords: ["exceptions [MFC], deleting", "AND_CATCH macro [MFC]", "try-catch exception handling [MFC], catching and deleting exceptions", "exception handling [MFC], catching and deleting exceptions", "catch blocks [MFC], catching and deleting exceptions", "execution [MFC], returns from within catch block"] -ms.assetid: 7c233ff0-89de-4de0-a68a-9e9cdb164311 --- # Exceptions: Catching and Deleting Exceptions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following instructions and examples show you how to catch and delete exceptions. For more information on the **`try`**, **`catch`**, and **`throw`** keywords, see [Modern C++ best practices for exceptions and error handling](../cpp/errors-and-exception-handling-modern-cpp.md). Your exception handlers must delete exception objects they handle, because failure to delete the exception causes a memory leak whenever that code catches an exception. diff --git a/docs/mfc/exceptions-changes-to-exception-macros-in-version-3-0.md b/docs/mfc/exceptions-changes-to-exception-macros-in-version-3-0.md index 0dde24bae2e..9304a90cde0 100644 --- a/docs/mfc/exceptions-changes-to-exception-macros-in-version-3-0.md +++ b/docs/mfc/exceptions-changes-to-exception-macros-in-version-3-0.md @@ -3,10 +3,12 @@ description: "Learn more about: Exceptions: Changes to Exception Macros in Versi title: "Exceptions: Changes to Exception Macros in Version 3.0" ms.date: "11/04/2016" helpviewer_keywords: ["C++ exception handling [MFC], upgrade considerations", "CATCH macro [MFC]", "exceptions [MFC], what's changed", "THROW_LAST macro [MFC]"] -ms.assetid: 3aa20d8c-229e-449c-995c-ab879eac84bc --- # Exceptions: Changes to Exception Macros in Version 3.0 +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This is an advanced topic. In MFC version 3.0 and later, the exception-handling macros have been changed to use C++ exceptions. This article tells how those changes can affect the behavior of existing code that uses the macros. diff --git a/docs/mfc/exceptions-converting-from-mfc-exception-macros.md b/docs/mfc/exceptions-converting-from-mfc-exception-macros.md index 70337d79971..e258734d362 100644 --- a/docs/mfc/exceptions-converting-from-mfc-exception-macros.md +++ b/docs/mfc/exceptions-converting-from-mfc-exception-macros.md @@ -3,10 +3,12 @@ description: "Learn more about: Exceptions: Converting from MFC Exception Macros title: "Exceptions: Converting from MFC Exception Macros" ms.date: "08/27/2018" helpviewer_keywords: ["converting exceptions [MFC]", "exception objects [MFC]", "conversions [MFC], code written with MFC macros", "keywords [MFC], macros", "macrosv, C++ keywords", "exception objects [MFC], deleting", "CException class [MFC], deleting CException class objects", "exceptions [MFC], converting", "exceptions [MFC], deleting exception objects", "catch blocks [MFC], delimiting", "exception handling [MFC], converting exceptions"] -ms.assetid: bd3ac3b3-f3ce-4fdd-a168-a2cff13ed796 --- # Exceptions: Converting from MFC Exception Macros +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This is an advanced topic. This article explains how to convert existing code written with Microsoft Foundation Class macros — **TRY**, **CATCH**, **THROW**, and so on — to use the C++ exception-handling keywords **`try`**, **`catch`**, and **`throw`**. Topics include: diff --git a/docs/mfc/exceptions-database-exceptions.md b/docs/mfc/exceptions-database-exceptions.md index 097ddc2d7ff..ceb25baab4d 100644 --- a/docs/mfc/exceptions-database-exceptions.md +++ b/docs/mfc/exceptions-database-exceptions.md @@ -3,10 +3,12 @@ description: "Learn more about: Exceptions: Database Exceptions" title: "Exceptions: Database Exceptions" ms.date: "09/17/2019" helpviewer_keywords: ["DAO [MFC], exceptions", "exceptions [MFC], database", "exception handling [MFC], databases", "ODBC exceptions [MFC]", "ODBC [MFC], exceptions", "database exceptions [MFC]", "databases [MFC], exception handling", "error codes [MFC], database exception handling"] -ms.assetid: 28daf260-f824-4be6-aecc-1f859e6dec26 --- # Exceptions: Database Exceptions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how to handle database exceptions. Most of the material in this article applies whether you are working with the MFC classes for Open Database Connectivity (ODBC) or the MFC classes for Data Access Objects (DAO). Material specific to one or the other model is explicitly marked. Topics include: - [Approaches to exception handling](#_core_approaches_to_exception_handling) diff --git a/docs/mfc/exceptions-examining-exception-contents.md b/docs/mfc/exceptions-examining-exception-contents.md index f2bedc83ebb..ea65efd6985 100644 --- a/docs/mfc/exceptions-examining-exception-contents.md +++ b/docs/mfc/exceptions-examining-exception-contents.md @@ -3,10 +3,12 @@ description: "Learn more about: Exceptions: Examining Exception Contents" title: "Exceptions: Examining Exception Contents" ms.date: "11/04/2016" helpviewer_keywords: ["exception handling [MFC], MFC", "try-catch exception handling [MFC], MFC function exceptions", "catch blocks, MFC function exceptions", "CException class [MFC], class exceptions", "try-catch exception handling [MFC], exception contents", "throwing exceptions [MFC], exception contents"] -ms.assetid: dfda4782-b969-4f60-b867-cc204ea7f33a --- # Exceptions: Examining Exception Contents +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Although a **`catch`** block's argument can be of almost any data type, the MFC functions throw exceptions of types derived from the class `CException`. To catch an exception thrown by an MFC function, then, you write a **`catch`** block whose argument is a pointer to a `CException` object (or an object derived from `CException`, such as `CMemoryException`). Depending on the exact type of the exception, you can examine the data members of the exception object to gather information about the specific cause of the exception. For example, the `CFileException` type has the `m_cause` data member, which contains an enumerated type that specifies the cause of the file exception. Some examples of the possible return values are `CFileException::fileNotFound` and `CFileException::readOnly`. diff --git a/docs/mfc/exceptions-exceptions-in-constructors.md b/docs/mfc/exceptions-exceptions-in-constructors.md index 239bf4c5625..e2d860490cf 100644 --- a/docs/mfc/exceptions-exceptions-in-constructors.md +++ b/docs/mfc/exceptions-exceptions-in-constructors.md @@ -3,10 +3,12 @@ description: "Learn more about: Exceptions: Exceptions in Constructors" title: "Exceptions: Exceptions in Constructors" ms.date: "11/04/2016" helpviewer_keywords: ["constructors [MFC], exceptions", "throwing exceptions [MFC], in constructors", "exceptions [MFC], in constructors"] -ms.assetid: a78eae5a-5821-4b27-9478-1436320ed1e1 --- # Exceptions: Exceptions in Constructors +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When throwing an exception in a constructor, clean up whatever objects and memory allocations you have made prior to throwing the exception, as explained in [Exceptions: Throwing Exceptions from Your Own Functions](exceptions-throwing-exceptions-from-your-own-functions.md). When throwing an exception in a constructor, the memory for the object itself has already been allocated by the time the constructor is called. So, the compiler will automatically deallocate the memory occupied by the object after the exception is thrown. diff --git a/docs/mfc/exceptions-freeing-objects-in-exceptions.md b/docs/mfc/exceptions-freeing-objects-in-exceptions.md index de0c17158d3..f3057b12262 100644 --- a/docs/mfc/exceptions-freeing-objects-in-exceptions.md +++ b/docs/mfc/exceptions-freeing-objects-in-exceptions.md @@ -3,10 +3,12 @@ description: "Learn more about: Exceptions: Freeing Objects in Exceptions" title: "Exceptions: Freeing Objects in Exceptions" ms.date: "11/04/2016" helpviewer_keywords: ["throwing exceptions [MFC], freeing objects in exceptions", "local exception handling", "memory leaks, caused by exception", "try-catch exception handling [MFC], destroying objects", "destroying objects [MFC]", "freeing objects [MFC]", "throwing exceptions [MFC], after destroying", "exception handling [MFC], destroying objects"] -ms.assetid: 3b14b4ee-e789-4ed2-b8e3-984950441d97 --- # Exceptions: Freeing Objects in Exceptions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the need and the method of freeing objects when an exception occurs. Topics include: - [Handling the exception locally](#_core_handling_the_exception_locally) diff --git a/docs/mfc/exceptions-ole-exceptions.md b/docs/mfc/exceptions-ole-exceptions.md index edf6080508e..0f58a8466ee 100644 --- a/docs/mfc/exceptions-ole-exceptions.md +++ b/docs/mfc/exceptions-ole-exceptions.md @@ -3,10 +3,12 @@ description: "Learn more about: Exceptions: OLE Exceptions" title: "Exceptions: OLE Exceptions" ms.date: "11/04/2016" helpviewer_keywords: ["OLE, exceptions", "OLE exceptions [MFC]", "exceptions [MFC], OLE", "exception handling [MFC], OLE", "OLE exceptions [MFC], classes for handling"] -ms.assetid: 2f8e0161-b94f-48bb-a5a2-6f644b192527 --- # Exceptions: OLE Exceptions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The techniques and facilities for handling exceptions in OLE are the same as those for handling other exceptions. For further information on exception handling, see the article [Modern C++ best practices for exceptions and error handling](../cpp/errors-and-exception-handling-modern-cpp.md). All exception objects are derived from the abstract base class `CException`. MFC provides two classes for handling OLE exceptions: diff --git a/docs/mfc/exceptions-throwing-exceptions-from-your-own-functions.md b/docs/mfc/exceptions-throwing-exceptions-from-your-own-functions.md index acc4fcb8df0..2eeea63f2be 100644 --- a/docs/mfc/exceptions-throwing-exceptions-from-your-own-functions.md +++ b/docs/mfc/exceptions-throwing-exceptions-from-your-own-functions.md @@ -3,10 +3,12 @@ description: "Learn more about: Exceptions: Throwing Exceptions from Your Own Fu title: "Exceptions: Throwing Exceptions from Your Own Functions" ms.date: "11/04/2016" helpviewer_keywords: ["throwing exceptions [MFC], from functions", "functions [MFC], throwing exceptions", "exceptions [MFC], throwing"] -ms.assetid: 492976e8-8804-4234-8e8f-30dffd0501be --- # Exceptions: Throwing Exceptions from Your Own Functions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + It is possible to use the MFC exception-handling paradigm solely to catch exceptions thrown by functions in MFC or other libraries. In addition to catching exceptions thrown by library code, you can throw exceptions from your own code if you are writing functions that can encounter exceptional conditions. When an exception is thrown, execution of the current function is stopped and jumps directly to the **`catch`** block of the innermost exception frame. The exception mechanism bypasses the normal exit path from a function. Therefore, you must be sure to delete those memory blocks that would be deleted in a normal exit. diff --git a/docs/mfc/exceptions-using-mfc-macros-and-cpp-exceptions.md b/docs/mfc/exceptions-using-mfc-macros-and-cpp-exceptions.md index e8816115764..5a1929373cb 100644 --- a/docs/mfc/exceptions-using-mfc-macros-and-cpp-exceptions.md +++ b/docs/mfc/exceptions-using-mfc-macros-and-cpp-exceptions.md @@ -3,10 +3,12 @@ description: "Learn more about: Exceptions: Using MFC Macros and C++ Exceptions" title: "Exceptions: Using MFC Macros and C++ Exceptions" ms.date: "11/04/2016" helpviewer_keywords: ["exception objects [MFC]", "memory leaks [MFC], exception object not deleted", "exception handling [MFC], MFC", "try-catch exception handling [MFC], mixing MFC macros and C++ keywords", "exception objects [MFC], deleting", "exceptions [MFC], MFC macros vs. C++ keywords", "catch blocks [MFC], mixed", "exception handling [MFC], mixed-language", "nested try blocks [MFC]", "catch blocks [MFC], explicitly deleting code in", "try-catch exception handling [MFC], nested try blocks", "heap corruption [MFC]", "nested catch blocks [MFC]"] -ms.assetid: d664a83d-879b-44d4-bdf0-029f0aca69e9 --- # Exceptions: Using MFC Macros and C++ Exceptions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article discusses considerations for writing code that uses both the MFC exception-handling macros and the C++ exception-handling keywords. This article covers the following topics: diff --git a/docs/mfc/exchanging-data.md b/docs/mfc/exchanging-data.md index 8ea303ddf53..82d3ffc820b 100644 --- a/docs/mfc/exchanging-data.md +++ b/docs/mfc/exchanging-data.md @@ -3,11 +3,13 @@ description: "Learn more about: Exchanging Data" title: "Exchanging Data" ms.date: "11/04/2016" helpviewer_keywords: ["property sheets [MFC], data exchange", "exchanging data with property sheets [MFC]", "DDX (dialog data exchange) [MFC], property sheets"] -ms.assetid: 689f02d0-51a9-455b-8ffb-5b44f0aefa28 ms.topic: concept-article --- # Exchanging Data +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As with most dialog boxes, the exchange of data between the property sheet and the application is one of the most important functions of the property sheet. This article describes how to accomplish this task. Exchanging data with a property sheet is actually a matter of exchanging data with the individual property pages of the property sheet. The procedure for exchanging data with a property page is the same as for exchanging data with a dialog box, since a [CPropertyPage](reference/cpropertypage-class.md) object is just a specialized [CDialog](reference/cdialog-class.md) object. The procedure takes advantage of the framework's dialog data exchange (DDX) facility, which exchanges data between controls in a dialog box and member variables of the dialog box object. diff --git a/docs/mfc/exitinstance-member-function.md b/docs/mfc/exitinstance-member-function.md index 7cf3e1afdee..fe4fa52c6b6 100644 --- a/docs/mfc/exitinstance-member-function.md +++ b/docs/mfc/exitinstance-member-function.md @@ -4,10 +4,12 @@ title: "ExitInstance Member Function" ms.date: "11/04/2016" f1_keywords: [] helpviewer_keywords: ["programs [MFC], terminating", "CWinApp class [MFC], ExitInstance", "ExitInstance method [MFC]"] -ms.assetid: 5bb597bd-8dab-4d49-8bcf-9c45aa8be4a2 --- # ExitInstance Member Function +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The [ExitInstance](reference/cwinapp-class.md#exitinstance) member function of class [CWinApp](reference/cwinapp-class.md) is called each time a copy of your application terminates, usually as a result of the user quitting the application. Override `ExitInstance` if you need special cleanup processing, such as freeing graphics device interface (GDI) resources or deallocating memory used during program execution. Cleanup of standard items such as documents and views, however, is provided by the framework, with other overridable functions for doing special cleanup specific to those objects. diff --git a/docs/mfc/exported-dll-function-entry-points.md b/docs/mfc/exported-dll-function-entry-points.md index 0a9cbd7ae47..92c099b46ed 100644 --- a/docs/mfc/exported-dll-function-entry-points.md +++ b/docs/mfc/exported-dll-function-entry-points.md @@ -3,10 +3,12 @@ description: "Learn more about: Exported DLL Function Entry Points" title: "Exported DLL Function Entry Points" ms.date: "11/04/2016" helpviewer_keywords: ["exporting DLLs [MFC], functions", "MFC, managing state data", "state management [MFC], exported DLLs"] -ms.assetid: 3268666e-d24b-44f2-80e8-7c80f73b93ca --- # Exported DLL Function Entry Points +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For exported functions of a DLL, use the [AFX_MANAGE_STATE](reference/extension-dll-macros.md#afx_manage_state) macro to maintain the proper global state when switching from the DLL module to the calling application's DLL. When called, this macro sets `pModuleState`, a pointer to an `AFX_MODULE_STATE` structure containing global data for the module, as the effective module state for the remainder of the containing scope of the function. Upon leaving the scope containing the macro, the previous effective module state is automatically restored. diff --git a/docs/mfc/file-and-database-classes.md b/docs/mfc/file-and-database-classes.md index 0ac75d36c90..59b0f159140 100644 --- a/docs/mfc/file-and-database-classes.md +++ b/docs/mfc/file-and-database-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: File and Database Classes" title: "File and Database Classes" ms.date: "11/04/2016" helpviewer_keywords: ["database classes [MFC], MFC", "database classes [MFC]", "file classes [MFC]"] -ms.assetid: 580b169c-e26e-4395-b128-5408d08c98fe --- # File and Database Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These classes allow you to store information to a database or a disk file. There are three sets of database classes — OLE DB, ODBC, and DAO — that provide similar functionality. The OLE DB group is implemented using OLE DB and works with the OLE DB consumer templates, the DAO group is implemented using the Data Access Object, and the ODBC group is implemented using Open Database Connectivity. There are also a set of classes for manipulating standard files, Active streams, and HTML streams. The following categories of classes support data persistence. diff --git a/docs/mfc/file-i-o-classes.md b/docs/mfc/file-i-o-classes.md index f9b697305f7..6a988af054b 100644 --- a/docs/mfc/file-i-o-classes.md +++ b/docs/mfc/file-i-o-classes.md @@ -4,10 +4,12 @@ title: "File I-O Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.file"] helpviewer_keywords: ["disk file classes [MFC]", "stdio classes [MFC]", "OLE streams [MFC]", "I/O [MFC], MFC classes", "translated stream classes [MFC]", "file I/O classes [MFC]", "I/O [MFC], classes", "sockets classes [MFC]", "stream classes [MFC]", "memory file classes [MFC]"] -ms.assetid: 92821c3f-d9e1-47f6-98c9-3b632d86e811 --- # File I/O Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These classes provide an interface to traditional disk files, in-memory files, Active streams, and Windows sockets. All of the classes derived from `CFile` can be used with a `CArchive` object to perform serialization. Use the following classes, particularly `CArchive` and `CFile`, if you write your own input/output processing. Normally you do not need to derive from these classes. If you use the application framework, the default implementations of the **Open** and **Save** commands on the **File** menu will handle file I/O (using class `CArchive`), as long as you override your document's `Serialize` function to supply details about how a document serializes its contents. For more information about the file classes and serialization, see the article [Files in MFC](files-in-mfc.md) and the article [Serialization](serialization-in-mfc.md). diff --git a/docs/mfc/file-menu-in-an-mfc-database-application.md b/docs/mfc/file-menu-in-an-mfc-database-application.md index adfb60edf14..c246ff31b94 100644 --- a/docs/mfc/file-menu-in-an-mfc-database-application.md +++ b/docs/mfc/file-menu-in-an-mfc-database-application.md @@ -3,10 +3,12 @@ description: "Learn more about: File Menu in an MFC Database Application" title: "File Menu in an MFC Database Application" ms.date: "11/04/2016" helpviewer_keywords: ["File menu", "database applications [MFC], File menu commands"] -ms.assetid: 92dafb75-c1b3-4860-80a0-87a83bfc36f2 --- # File Menu in an MFC Database Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If you create an MFC database application and don't use serialization, how should you interpret the Open, Close, Save, and Save As commands on the File menu While there are no style guidelines for this question, here are a few suggestions: - Eliminate the File menu's Open command entirely. diff --git a/docs/mfc/files-in-mfc.md b/docs/mfc/files-in-mfc.md index e942e997405..8c6b346b7e6 100644 --- a/docs/mfc/files-in-mfc.md +++ b/docs/mfc/files-in-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Files in MFC" title: "Files in MFC" ms.date: "11/04/2016" helpviewer_keywords: ["serialization [MFC], MFC files", "I/O [MFC], MFC classes", "files [MFC], MFC", "files [MFC], serialization", "binary access, binary file operations in MFC", "file I/O classes [MFC]", "I/O [MFC]", "persistence [MFC]", "MFC, file operations", "files [MFC], manipulating", "binary access [MFC]"] -ms.assetid: ae25e2c5-2859-4679-ab97-438824e93ce1 --- # Files in MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In the Microsoft Foundation Class Library (MFC), class [CFile](reference/cfile-class.md) handles normal file I/O operations. This family of articles explains how to open and close files as well as read and write data to those files. It also discusses file status operations. For a description of how to use the object-based serialization features of MFC as an alternative way of reading and writing data in files, see the article [Serialization](serialization-in-mfc.md). > [!NOTE] diff --git a/docs/mfc/form-views-mfc.md b/docs/mfc/form-views-mfc.md index 61a5a4bd8d9..d776257f447 100644 --- a/docs/mfc/form-views-mfc.md +++ b/docs/mfc/form-views-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Form Views (MFC)" title: "Form Views (MFC)" ms.date: "11/04/2016" helpviewer_keywords: ["user interfaces [MFC], forms", "forms [MFC]", "applications [MFC], forms-based", "forms-based applications [MFC]", "forms [MFC], adding to applications"] -ms.assetid: efbe73c1-4ca4-4613-aac2-30d916e92c0e --- # Form Views (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can add forms to any Visual C++ application that supports the MFC libraries, including a [forms-based application](reference/creating-a-forms-based-mfc-application.md) (one whose view class is derived from `CFormView`). If you did not initially create your application to support forms, Visual Studio will add this support for you when you insert a new form. In an SDI or MDI application, which implements the default [document/view architecture](document-view-architecture.md), when the user chooses the **New** command (by default, on the **File** menu), Visual Studio prompts the user to choose from the available forms. With an SDI application, when the user chooses the **New** command, the current instance of the form continues to run but a new instance of the application with the selected form is created if one is not found. In an MDI application, the current instance of the form continues to run when the user chooses the **New** command. diff --git a/docs/mfc/frame-window-classes-architecture.md b/docs/mfc/frame-window-classes-architecture.md index 9ec58fb318a..0ce3de51c25 100644 --- a/docs/mfc/frame-window-classes-architecture.md +++ b/docs/mfc/frame-window-classes-architecture.md @@ -3,10 +3,12 @@ description: "Learn more about: Frame Window Classes (Architecture)" title: "Frame Window Classes (Architecture)" ms.date: "11/04/2016" helpviewer_keywords: ["frame window classes [MFC], document/view architecture"] -ms.assetid: 5da01fb4-f531-46cc-914f-e422e4f07f5d --- # Frame Window Classes (Architecture) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In document/view architecture, frame windows are windows that contain a view window. They also support having control bars attached to them. In multiple document interface (MDI) applications, the main window is derived from `CMDIFrameWnd`. It indirectly contains the documents' frames, which are `CMDIChildWnd` objects. The `CMDIChildWnd` objects, in turn, contain the documents' views. diff --git a/docs/mfc/frame-window-classes-created-by-the-application-wizard.md b/docs/mfc/frame-window-classes-created-by-the-application-wizard.md index 746bebc3b4e..d6ff9610d4c 100644 --- a/docs/mfc/frame-window-classes-created-by-the-application-wizard.md +++ b/docs/mfc/frame-window-classes-created-by-the-application-wizard.md @@ -4,10 +4,12 @@ title: "Frame-Window Classes Created by the Application Wizard" ms.date: "11/04/2016" f1_keywords: ["CMainFrame"] helpviewer_keywords: ["application wizards [MFC], frame window classes created by", "window classes [MFC]", "classes [MFC], frame-window", "CMDIFrameWnd class [MFC], frame windows", "window classes [MFC], frame", "CFrameWnd class [MFC], frame windows", "CMDIChildWnd class [MFC], frame windows", "frame window classes [MFC], created by application wizards", "CMainFrame class [MFC]"] -ms.assetid: 9947df73-4470-49a0-ac61-7b6ee401a74e --- # Frame-Window Classes Created by the Application Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When you to create a new MFC project from the **New Project** dialog, in addition to application, document, and view classes, the Application Wizard creates a derived frame-window class for your application's main frame window. The class is called `CMainFrame` by default, and the files that contain it are named MAINFRM.H and MAINFRM.CPP. If your application is SDI, your `CMainFrame` class is derived from class [CFrameWnd](reference/cframewnd-class.md). diff --git a/docs/mfc/frame-window-classes-windows.md b/docs/mfc/frame-window-classes-windows.md index 0f875746e21..ee535bfbb9d 100644 --- a/docs/mfc/frame-window-classes-windows.md +++ b/docs/mfc/frame-window-classes-windows.md @@ -4,10 +4,12 @@ title: "Frame Window Classes (Windows)" ms.date: "11/04/2016" f1_keywords: ["vc.classes.frame"] helpviewer_keywords: ["frame window classes [MFC], reference"] -ms.assetid: 6342ec5f-f922-4da8-a78e-2f5f994c7142 --- # Frame Window Classes (Windows) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Frame windows are windows that frame an application or a part of an application. Frame windows usually contain other windows, such as views, tool bars, and status bars. In the case of `CMDIFrameWnd`, they may contain `CMDIChildWnd` objects indirectly. [CFrameWnd](reference/cframewnd-class.md)
diff --git a/docs/mfc/frame-window-classes.md b/docs/mfc/frame-window-classes.md index b0c19b7b4d5..6b3ddcc18b3 100644 --- a/docs/mfc/frame-window-classes.md +++ b/docs/mfc/frame-window-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: Frame-Window Classes" title: "Frame-Window Classes" ms.date: "11/04/2016" helpviewer_keywords: ["frame window classes [MFC], about frame window classes", "frame window classes [MFC]", "windows [MFC], MDI", "document frame windows [MFC], classes", "single document interface (SDI), frame windows", "window classes [MFC], frame", "MFC, frame windows", "MDI [MFC], frame windows", "classes [MFC], window"] -ms.assetid: c27e43a7-8ad0-4759-b1b7-43f4725f4132 --- # Frame-Window Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Each application has one "main frame window," a desktop window that usually has the application name in its caption. Each document usually has one "document frame window." A document frame window contains at least one view, which presents the document's data. ## Frame Windows in SDI and MDI Applications diff --git a/docs/mfc/frame-window-styles-cpp.md b/docs/mfc/frame-window-styles-cpp.md index 68735c8e2b4..8a8c08fbcb7 100644 --- a/docs/mfc/frame-window-styles-cpp.md +++ b/docs/mfc/frame-window-styles-cpp.md @@ -3,10 +3,12 @@ description: "Learn more about: Frame-Window Styles (C++)" title: "Frame-Window Styles (C++)" ms.date: "11/04/2016" helpviewer_keywords: ["window styles [MFC]", "PreCreateWindow method, setting window styles", "windows [MFC], MFC", "frame windows [MFC], styles", "MFC, frame windows", "styles [MFC], windows"] -ms.assetid: fc5058c1-eec8-48d8-9f76-3fc01cfa53f7 --- # Frame-Window Styles (C++) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The frame windows you get with the framework are suitable for most programs, but you can gain additional flexibility by using the advanced functions [PreCreateWindow](reference/cwnd-class.md#precreatewindow) and the MFC global function [AfxRegisterWndClass](reference/application-information-and-management.md#afxregisterwndclass). `PreCreateWindow` is a member function of `CWnd`. If you apply the **WS_HSCROLL** and **WS_VSCROLL** styles to the main frame window, they are instead applied to the **MDICLIENT** window so users can scroll the **MDICLIENT** area. diff --git a/docs/mfc/frame-windows.md b/docs/mfc/frame-windows.md index 8c8089e2eac..1bd2f9d2309 100644 --- a/docs/mfc/frame-windows.md +++ b/docs/mfc/frame-windows.md @@ -3,10 +3,12 @@ description: "Learn more about: Frame Windows" title: "Frame Windows" ms.date: "11/19/2018" helpviewer_keywords: ["document frame windows [MFC]", "windows [MFC], MDI", "window classes [MFC], frame", "single document interface (SDI) [MFC]", "single document interface (SDI) [MFC], frame windows", "views [MFC], and frame windows", "CFrameWnd class [MFC], frame windows", "frame windows [MFC]", "frame windows [MFC], about frame windows", "MFC, frame windows", "MDI [MFC], frame windows", "splitter windows [MFC], and frame windows"] -ms.assetid: 40677339-8135-4f5e-aba6-3fced3078077 --- # Frame Windows +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When an application runs under Windows, the user interacts with documents displayed in frame windows. A document frame window has two major components: the frame and the contents that it frames. A document frame window can be a [single document interface](sdi-and-mdi.md) (SDI) frame window or a [multiple document interface](sdi-and-mdi.md) (MDI) child window. Windows manages most of the user's interaction with the frame window: moving and resizing the window, closing it, and minimizing and maximizing it. You manage the contents inside the frame. ## Frame Windows and Views From 77a8e7d8972e057743ec96ee8b3a81f47d3fde9f Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 20 Feb 2026 12:51:34 -0800 Subject: [PATCH 309/619] Batch 3: update files (#6256) --- docs/mfc/framework-mfc.md | 4 +++- docs/mfc/general-class-design-philosophy.md | 4 +++- docs/mfc/general-mfc-topics.md | 4 +++- docs/mfc/general-window-creation-sequence.md | 4 +++- docs/mfc/global-hot-keys.md | 4 +++- docs/mfc/graphic-objects.md | 4 +++- docs/mfc/handlers-for-commands-and-control-notifications.md | 4 +++- docs/mfc/handlers-for-message-map-ranges.md | 4 +++- docs/mfc/handlers-for-standard-windows-messages.md | 4 +++- docs/mfc/handling-commands-in-the-document.md | 4 +++- docs/mfc/handling-customization-notifications.md | 4 +++- docs/mfc/handling-reflected-messages.md | 4 +++- docs/mfc/handling-the-apply-button.md | 4 +++- docs/mfc/handling-tool-tip-notifications.md | 4 +++- docs/mfc/handling-ttn-needtext-notification-for-tool-tips.md | 4 +++- docs/mfc/handling-windows-messages-in-your-dialog-box.md | 4 +++- docs/mfc/header-control-and-list-control.md | 4 +++- docs/mfc/header-control-examples.md | 4 +++- docs/mfc/header-items-in-a-header-control.md | 4 +++- docs/mfc/headers-and-footers.md | 4 +++- docs/mfc/help-menu-merging.md | 4 +++- docs/mfc/hierarchy-chart-categories.md | 4 +++- docs/mfc/hierarchy-chart.md | 4 +++- docs/mfc/how-default-printing-is-done.md | 4 +++- ...-makes-it-easier-to-create-internet-client-applications.md | 4 +++- docs/mfc/how-noncommand-messages-reach-their-handlers.md | 4 +++- docs/mfc/how-the-framework-calls-a-handler.md | 4 +++- docs/mfc/how-the-framework-calls-your-code.md | 4 +++- docs/mfc/how-the-framework-searches-message-maps.md | 4 +++- docs/mfc/how-to-add-restart-manager-support.md | 4 +++- docs/mfc/how-to-add-ribbon-controls-and-event-handlers.md | 4 +++- ...-to-convert-an-existing-mfc-ribbon-to-a-ribbon-resource.md | 4 +++- docs/mfc/how-to-create-a-message-map-for-a-template-class.md | 4 +++- docs/mfc/how-to-customize-the-application-button.md | 4 +++- docs/mfc/how-to-customize-the-quick-access-toolbar.md | 4 +++- .../how-to-display-command-information-in-the-status-bar.md | 4 +++- docs/mfc/how-to-implement-tracking-in-your-code.md | 4 +++- .../how-to-load-a-ribbon-resource-from-an-mfc-application.md | 4 +++- docs/mfc/how-to-make-a-type-safe-collection.md | 4 +++- docs/mfc/how-to-update-user-interface-objects.md | 4 +++- ...-makes-it-easier-to-create-internet-client-applications.md | 4 +++- docs/mfc/html-basics.md | 4 +++- .../mfc/html-help-context-sensitive-help-for-your-programs.md | 4 +++- docs/mfc/idle-loop-processing.md | 4 +++- docs/mfc/image-information-in-image-lists.md | 4 +++- docs/mfc/image-overlays-in-image-lists.md | 4 +++- docs/mfc/implementing-working-areas-in-list-controls.md | 4 +++- docs/mfc/initializing-and-cleaning-up-documents-and-views.md | 4 +++- docs/mfc/initializing-documents-and-views.md | 4 +++- docs/mfc/initializing-the-dialog-box.md | 4 +++- docs/mfc/initializing-the-parts-of-a-cstatusbarctrl-object.md | 4 +++- docs/mfc/initinstance-member-function.md | 4 +++- ...nserting-a-control-into-a-control-container-application.md | 4 +++- docs/mfc/inserting-a-form-into-a-project.md | 4 +++- docs/mfc/interface-elements.md | 4 +++- docs/mfc/internet-and-networking-classes.md | 4 +++- docs/mfc/internet-information-by-task.md | 4 +++- docs/mfc/internet-information-by-topic.md | 4 +++- docs/mfc/internet-related-mfc-classes.md | 4 +++- docs/mfc/internet-security-cpp.md | 4 +++- docs/mfc/interpreting-user-input-through-a-view.md | 4 +++- docs/mfc/isolation-of-the-mfc-common-controls-library.md | 4 +++- docs/mfc/keyboard-and-mouse-customization.md | 4 +++- docs/mfc/life-cycle-of-a-dialog-box.md | 4 +++- docs/mfc/list-control-and-list-view.md | 4 +++- docs/mfc/list-items-and-image-lists.md | 4 +++- docs/mfc/making-and-using-controls.md | 4 +++- docs/mfc/making-owner-drawn-header-controls.md | 4 +++- docs/mfc/making-owner-drawn-tabs.md | 4 +++- docs/mfc/managing-data-with-document-data-variables.md | 4 +++- docs/mfc/managing-mdi-child-windows.md | 4 +++- docs/mfc/managing-menus-control-bars-and-accelerators.md | 4 +++- docs/mfc/managing-the-current-view.md | 4 +++- docs/mfc/managing-the-state-data-of-mfc-modules.md | 4 +++- docs/mfc/manipulating-image-lists.md | 4 +++- docs/mfc/manipulating-menus-during-program-execution.md | 4 +++- docs/mfc/manipulating-the-progress-control.md | 4 +++- docs/mfc/manipulating-the-tool-tip-control.md | 4 +++- docs/mfc/mapi-samples.md | 4 +++- docs/mfc/mapi-support-in-mfc.md | 4 +++- docs/mfc/mapi.md | 4 +++- docs/mfc/mapping-messages.md | 4 +++- docs/mfc/mapping-windows-messages-to-your-class.md | 4 +++- docs/mfc/mdi-tabbed-groups.md | 4 +++- docs/mfc/memory-management-examples.md | 4 +++- docs/mfc/memory-management-frame-allocation.md | 4 +++- docs/mfc/memory-management-heap-allocation.md | 4 +++- docs/mfc/memory-management-resizable-memory-blocks.md | 4 +++- docs/mfc/memory-management.md | 4 +++- docs/mfc/menu-sample-list.md | 4 +++- docs/mfc/menus-and-resources-container-additions.md | 4 +++- docs/mfc/menus-and-resources-menu-merging.md | 4 +++- docs/mfc/menus-and-resources-ole.md | 4 +++- docs/mfc/menus-and-resources-server-additions.md | 4 +++- docs/mfc/menus-mfc.md | 4 +++- docs/mfc/message-categories.md | 4 +++- docs/mfc/message-handlers.md | 4 +++- docs/mfc/message-handling-and-command-targets.md | 4 +++- docs/mfc/message-handling-and-mapping.md | 4 +++- docs/mfc/message-sending-and-receiving.md | 4 +++- 100 files changed, 300 insertions(+), 100 deletions(-) diff --git a/docs/mfc/framework-mfc.md b/docs/mfc/framework-mfc.md index 0bd459a85d7..e7db2e8352d 100644 --- a/docs/mfc/framework-mfc.md +++ b/docs/mfc/framework-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Framework (MFC)" title: "Framework (MFC)" ms.date: "09/17/2019" helpviewer_keywords: ["encapsulation [MFC], Win32 API", "MFC, application framework", "wrapper classes [MFC], explained", "Win32 [MFC], API encapsulation by MFC", "application framework [MFC], about MFC application framework", "APIs [MFC], encapsulation by MFC Win32", "encapsulation [MFC]", "Windows API [MFC], encapsulation by MFC", "encapsulated Win32 API [MFC]"] -ms.assetid: 3be0fec8-9843-4119-ae42-ece993ef500b --- # Framework (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Your work with the Microsoft Foundation Class (MFC) Library framework is based largely on a few major classes and several Visual C++ tools. Some classes encapsulate a large portion of the Win32 application programming interface (API). Other classes encapsulate application concepts such as documents, views, and the application itself. Still others encapsulate OLE features and ODBC and DAO data-access functionality. (DAO is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete.) For example, Win32's concept of window is encapsulated by MFC class `CWnd`. That is, a C++ class called `CWnd` encapsulates or "wraps" the `HWND` handle that represents a Windows window. Likewise, class `CDialog` encapsulates Win32 dialog boxes. diff --git a/docs/mfc/general-class-design-philosophy.md b/docs/mfc/general-class-design-philosophy.md index 0057725329e..f38f1d3c423 100644 --- a/docs/mfc/general-class-design-philosophy.md +++ b/docs/mfc/general-class-design-philosophy.md @@ -3,10 +3,12 @@ description: "Learn more about: General Class Design Philosophy" title: "General Class Design Philosophy" ms.date: "11/04/2016" helpviewer_keywords: ["designing classes [MFC]", "MFC, Windows API", "Visual C, Windows API calls", "classes [MFC], MFC class design", "Windows API [MFC], and MFC"] -ms.assetid: e6861ae0-1581-4d9c-9ddf-63f9afcdb913 --- # General Class Design Philosophy +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Microsoft Windows was designed long before the C++ language became popular. Because thousands of applications use the C-language Windows application programming interface (API), that interface will be maintained for the foreseeable future. Any C++ Windows interface must therefore be built on top of the procedural C-language API. This guarantees that C++ applications will be able to coexist with C applications. The Microsoft Foundation Class Library is an object-oriented interface to Windows that meets the following design goals: diff --git a/docs/mfc/general-mfc-topics.md b/docs/mfc/general-mfc-topics.md index d1164397dce..2f263111a30 100644 --- a/docs/mfc/general-mfc-topics.md +++ b/docs/mfc/general-mfc-topics.md @@ -3,10 +3,12 @@ description: "Learn more about: General MFC Topics" title: "General MFC Topics" ms.date: "09/17/2019" helpviewer_keywords: ["MFC", "class libraries [MFC], MFC", "MFC, application development"] -ms.assetid: 617e9945-9bb3-471d-a3ba-e235fcfb55d1 --- # General MFC Topics +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This family of articles includes technical details about the Microsoft Foundation Class (MFC) Library and provides an overview of the MFC framework and its key components and subsystems. The Microsoft Foundation Class Library is an application framework for programming in Microsoft Windows. Written in C++, MFC provides much of the code necessary for managing windows, menus, and dialog boxes; performing basic input/output; storing collections of data objects; and so on. All you need to do is add your application-specific code into this framework. Given the nature of C++ class programming, it is easy to extend or override the basic functionality that [the MFC framework](framework-mfc.md) supplies. diff --git a/docs/mfc/general-window-creation-sequence.md b/docs/mfc/general-window-creation-sequence.md index ae89ab7bece..b8c0f220f2c 100644 --- a/docs/mfc/general-window-creation-sequence.md +++ b/docs/mfc/general-window-creation-sequence.md @@ -3,10 +3,12 @@ description: "Learn more about: General Window Creation Sequence" title: "General Window Creation Sequence" ms.date: "11/04/2016" helpviewer_keywords: ["sequence [MFC], window creation", "frame windows [MFC], creating", "windows [MFC], creating", "sequence [MFC]"] -ms.assetid: 9cd8c7ea-5e24-429e-b6d9-d7b6041d8ba6 --- # General Window Creation Sequence +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When you create a window of your own, such as a child window, the framework uses much the same process as that described in [Document/View Creation](document-view-creation.md). All the window classes provided by MFC employ [two-stage construction](one-stage-and-two-stage-construction-of-objects.md). That is, during an invocation of the C++ **`new`** operator, the constructor allocates and initializes a C++ object but does not create a corresponding Windows window. That is done afterward by calling the [Create](reference/cwnd-class.md#create) member function of the window object. diff --git a/docs/mfc/global-hot-keys.md b/docs/mfc/global-hot-keys.md index 004ba568eab..4387b3750b4 100644 --- a/docs/mfc/global-hot-keys.md +++ b/docs/mfc/global-hot-keys.md @@ -3,10 +3,12 @@ description: "Learn more about: Global Hot Keys" title: "Global Hot Keys" ms.date: "11/04/2016" helpviewer_keywords: ["keyboard shortcuts [MFC], hot keys", "CHotKeyCtrl class [MFC], global hot keys", "access keys [MFC], hot keys", "global hot keys [MFC]"] -ms.assetid: e0b95d14-c571-4c9a-9cd1-e7fc1f0e278d --- # Global Hot Keys +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A global hot key is associated with a particular nonchild window. It allows the user to activate the window from any part of the system. An application sets a global hot key for a particular window by sending the [WM_SETHOTKEY](/windows/win32/inputdev/wm-sethotkey) message to that window. For instance, if `m_HotKeyCtrl` is the [CHotKeyCtrl](reference/chotkeyctrl-class.md) object and `pMainWnd` is a pointer to the window to be activated when the hot key is pressed, you could use the following code to associate the hot key specified in the control with the window pointed to by `pMainWnd`. [!code-cpp[NVC_MFCControlLadenDialog#18](codesnippet/cpp/global-hot-keys_1.cpp)] diff --git a/docs/mfc/graphic-objects.md b/docs/mfc/graphic-objects.md index 5d7445e9f6e..196ecb4edba 100644 --- a/docs/mfc/graphic-objects.md +++ b/docs/mfc/graphic-objects.md @@ -4,10 +4,12 @@ title: "Graphic Objects" ms.date: "11/04/2016" f1_keywords: ["HRGN", "HFONT", "HBITMAP"] helpviewer_keywords: ["CRgn class [MFC], HRGN handle type", "HPEN [MFC]", "objects [MFC], graphic", "palettes [MFC], creating in device context", "pens [MFC], creating in device context", "bitmaps [MFC], creating in device contexts", "palette objects [MFC]", "memory [MFC], display contexts", "MFC, graphic objects", "regions [MFC], creating in device context", "CPen class [MFC], HPEN handle type", "GDI objects [MFC]", "HRGN [MFC]", "graphic objects [MFC]", "GDI objects [MFC], graphic-object classes", "CFont class [MFC], HFONT handle type", "HFONT and class CFont [MFC]", "HBITMAP and class CBitmap [MFC]", "fonts [MFC], creating in device context", "images [MFC], graphic objects [MFC]", "CBitmap class [MFC], HBITMAP handle type", "HPALETTE and class CPalette [MFC]", "CBrush class [MFC], HBRUSH handle type", "objects [MFC], graphic objects", "drawing [MFC], in device contexts", "device contexts [MFC], graphic objects [MFC]", "brushes [MFC], creating in device context", "region objects [MFC]", "pen objects [MFC]", "GDI [MFC], graphic-object classes", "graphic objects [MFC], creating in device context", "HBRUSH and class CBrush [MFC]", "painting and device context [MFC]", "CPalette class [MFC], HPALETTE handle type"] -ms.assetid: 41963b25-34b7-4343-8446-34ba516b83ca --- # Graphic Objects +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Windows provides a variety of drawing tools to use in device contexts. It provides pens to draw lines, brushes to fill interiors, and fonts to draw text. MFC provides graphic-object classes equivalent to the drawing tools in Windows. The table below shows the available classes and the equivalent Windows graphics device interface (GDI) handle types. > [!NOTE] diff --git a/docs/mfc/handlers-for-commands-and-control-notifications.md b/docs/mfc/handlers-for-commands-and-control-notifications.md index 739d0f6dcf0..dda508b3e70 100644 --- a/docs/mfc/handlers-for-commands-and-control-notifications.md +++ b/docs/mfc/handlers-for-commands-and-control-notifications.md @@ -3,10 +3,12 @@ description: "Learn more about: Handlers for Commands and Control Notifications" title: "Handlers for Commands and Control Notifications" ms.date: "11/04/2016" helpviewer_keywords: ["commands [MFC], handlers for", "functions [MFC], handler", "handlers [MFC]", "controls [MFC], notifications", "handlers [MFC], control notification [MFC]", "notifications [MFC], handlers for control", "handlers [MFC], command"] -ms.assetid: 20f57f4a-f577-4c09-80a2-43faf32a1c2e --- # Handlers for Commands and Control Notifications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + There are no default handlers for commands or control-notification messages. Therefore, you are bound only by convention in naming your handlers for these categories of messages. When you map the command or control notification to a handler, the [Class Wizard](reference/mfc-class-wizard.md) proposes a name based on the command ID or control-notification code. You can accept the proposed name, change it, or replace it. Convention suggests that you name handlers in both categories for the user-interface object they represent. Thus a handler for the Cut command on the Edit menu might be named diff --git a/docs/mfc/handlers-for-message-map-ranges.md b/docs/mfc/handlers-for-message-map-ranges.md index 6e74a048aaf..d7e36d824a8 100644 --- a/docs/mfc/handlers-for-message-map-ranges.md +++ b/docs/mfc/handlers-for-message-map-ranges.md @@ -3,10 +3,12 @@ description: "Learn more about: Handlers for Message-Map Ranges" title: "Handlers for Message-Map Ranges" ms.date: "11/04/2016" helpviewer_keywords: ["message handlers [MFC]", "handlers [MFC], message-map ranges", "message maps [MFC], message handler functions", "message maps [MFC], ranges", "control-notification messages [MFC]", "command IDs [MFC], message mapping", "message-map ranges [MFC]", "handlers [MFC]", "message handling [MFC], message handler functions", "mappings [MFC], message ranges", "command handling [MFC], command update handlers", "controls [MFC], notifications", "handler functions [MFC], message-map ranges", "handler functions [MFC]", "command update handlers [MFC]", "command routing [MFC], command update handlers", "message ranges [MFC]", "handler functions [MFC], declaring", "message ranges [MFC], mapping"] -ms.assetid: a271478b-5e1c-46f5-9f29-e5be44b27d08 --- # Handlers for Message-Map Ranges +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how to map a range of messages to a single message handler function (instead of mapping one message to only one function). There are times when you need to process more than one message or control notification in exactly the same way. At such times, you might wish to map all of the messages to a single handler function. Message-map ranges allow you to do this for a contiguous range of messages: diff --git a/docs/mfc/handlers-for-standard-windows-messages.md b/docs/mfc/handlers-for-standard-windows-messages.md index 7554c3d59ea..5292702cde8 100644 --- a/docs/mfc/handlers-for-standard-windows-messages.md +++ b/docs/mfc/handlers-for-standard-windows-messages.md @@ -4,10 +4,12 @@ title: "Handlers for Standard Windows Messages" ms.date: "11/04/2016" f1_keywords: ["afx_msg"] helpviewer_keywords: ["Windows messages [MFC], handlers", "message handling [MFC], Windows message handlers", "handler functions, standard Windows messages", "functions [MFC], handler", "messages [MFC], Windows"] -ms.assetid: 19412a8b-2c38-4502-81da-13c823c7e36c --- # Handlers for Standard Windows Messages +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Default handlers for standard Windows messages (**WM_**) are predefined in class `CWnd`. The class library bases names for these handlers on the message name. For example, the handler for the **WM_PAINT** message is declared in `CWnd` as: `afx_msg void OnPaint();` diff --git a/docs/mfc/handling-commands-in-the-document.md b/docs/mfc/handling-commands-in-the-document.md index f821152d3ec..48f29840f9e 100644 --- a/docs/mfc/handling-commands-in-the-document.md +++ b/docs/mfc/handling-commands-in-the-document.md @@ -3,11 +3,13 @@ description: "Learn more about: Handling Commands in the Document" title: "Handling Commands in the Document" ms.date: "11/04/2016" helpviewer_keywords: ["message maps [MFC], in document class", "command handling [MFC]", "documents [MFC], message maps", "message handling [MFC], WM_COMMAND messages", "command handling [MFC], commands in documents", "documents [MFC], handling messages in"] -ms.assetid: c7375584-27af-4275-b2fd-afea476785d0 ms.topic: concept-article --- # Handling Commands in the Document +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Your document class may also handle certain commands generated by menu items, toolbar buttons, or accelerator keys. By default, `CDocument` handles the Save and Save As commands on the File menu, using serialization. Other commands that affect the data may also be handled by member functions of your document. For example, in the Scribble program, class `CScribDoc` provides a handler for the Edit Clear All command, which deletes all of the data currently stored in the document. Documents can have message maps, but unlike views, documents cannot handle standard Windows messages — only **WM_COMMAND** messages, or "commands." ## See also diff --git a/docs/mfc/handling-customization-notifications.md b/docs/mfc/handling-customization-notifications.md index 1d2ffb237db..9a28ecd13b4 100644 --- a/docs/mfc/handling-customization-notifications.md +++ b/docs/mfc/handling-customization-notifications.md @@ -4,11 +4,13 @@ title: "Handling Customization Notifications" ms.date: "11/04/2016" f1_keywords: ["TBN_CUSTHELP", "TBN_QUERYINSERT", "TBNOTIFY", "NMHDR", "TBN_TOOLBARCHANGE", "TBN_ENDDRAG", "NM_SETFOCUS", "TBN_RESET", "NM_RETURN", "NM_ENDWAIT", "NM_STARTWAIT", "TBN_BEGINDRAG", "NM_OUTOFMEMORY", "TBN_QUERYDELETE", "NM_DBLCLK", "TBN_ENDADJUST", "NM_KILLFOCUS", "NM_RCLICK", "TBN_BEGINADJUST", "NM_CLICK"] helpviewer_keywords: ["TBN_ENDADJUST notification [MFC]", "TBNOTIFY notification [MFC]", "TBN_BEGINDRAG notification [MFC]", "TBN_TOOLBARCHANGE notification [MFC]", "NM_CLICK notification [MFC]", "NM_RETURN notification [MFC]", "NM_RCLICK notification [MFC]", "TBN_ENDDRAG notification [MFC]", "TBN_BEGINADJUST notification [MFC]", "NM_ENDWAIT notification [MFC]", "NM_KILLFOCUS notification [MFC]", "NM_SETFOCUS notification [MFC]", "NM_OUTOFMEMORY notification [MFC]", "TBN_QUERYINSERT notification [MFC]", "NMHDR [MFC]", "NM_STARTWAIT notification [MFC]", "CToolBarCtrl class [MFC], handling notifications", "TBN_CUSTHELP notification [MFC]", "TBN_RESET notification [MFC]", "NM_DBLCLK notification [MFC]", "TBN_QUERYDELETE notification [MFC]", "NM_RDBLCLK notification [MFC]", "TBN_GETBUTTONINFO notification [MFC]"] -ms.assetid: 219ea08e-7515-4b98-85cb-47120f08c0a2 ms.topic: concept-article --- # Handling Customization Notifications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A Windows toolbar common control has built-in customization features, including a system-defined customization dialog box, which allow the user to insert, delete, or rearrange toolbar buttons. The application determines whether the customization features are available and controls the extent to which the user can customize the toolbar. You can make these customization features available to the user by giving the toolbar the **CCS_ADJUSTABLE** style. The customization features allow the user to drag a button to a new position or to remove a button by dragging it off the toolbar. In addition, the user can double-click the toolbar to display the **Customize Toolbar** dialog box, which allows the user to add, delete, and rearrange toolbar buttons. The application can display the dialog box by using the [Customize](reference/ctoolbarctrl-class.md#customize) member function. diff --git a/docs/mfc/handling-reflected-messages.md b/docs/mfc/handling-reflected-messages.md index f7d74de5c86..ccb42f01c17 100644 --- a/docs/mfc/handling-reflected-messages.md +++ b/docs/mfc/handling-reflected-messages.md @@ -3,11 +3,13 @@ description: "Learn more about: Handling Reflected Messages" title: "Handling Reflected Messages" ms.date: "11/04/2016" helpviewer_keywords: ["message handling [MFC], reflected messages", "reflected messages, handling"] -ms.assetid: 147a4e0c-51cc-4447-a8e1-c28b4cece578 ms.topic: concept-article --- # Handling Reflected Messages +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Message reflection lets you handle messages for a control, such as **WM_CTLCOLOR**, **WM_COMMAND**, and **WM_NOTIFY**, within the control itself. This makes the control more self-contained and portable. The mechanism works with Windows common controls as well as with ActiveX controls (formerly called OLE controls). Message reflection lets you reuse your `CWnd`-derived classes more readily. Message reflection works via [CWnd::OnChildNotify](reference/cwnd-class.md#onchildnotify), using special **ON_XXX_REFLECT** message map entries: for example, **ON_CTLCOLOR_REFLECT** and **ON_CONTROL_REFLECT**. [Technical Note 62](tn062-message-reflection-for-windows-controls.md) explains message reflection in more detail. diff --git a/docs/mfc/handling-the-apply-button.md b/docs/mfc/handling-the-apply-button.md index 3cfdef6bf9d..bb46aa7c06c 100644 --- a/docs/mfc/handling-the-apply-button.md +++ b/docs/mfc/handling-the-apply-button.md @@ -3,11 +3,13 @@ description: "Learn more about: Handling the Apply Button" title: "Handling the Apply Button" ms.date: "11/04/2016" helpviewer_keywords: ["Apply button in property sheet", "property sheets, Apply button"] -ms.assetid: 7e977015-59b8-406f-b545-aad0bfd8d55b ms.topic: concept-article --- # Handling the Apply Button +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Property sheets have a capability that standard dialog boxes do not: They allow the user to apply changes they have made before closing the property sheet. This is done using the Apply button. This article discusses methods you can use to implement this feature properly. Modal dialog boxes usually apply the settings to an external object when the user clicks OK to close the dialog box. The same is true for a property sheet: When the user clicks OK, the new settings in the property sheet take effect. diff --git a/docs/mfc/handling-tool-tip-notifications.md b/docs/mfc/handling-tool-tip-notifications.md index 8c1ed327ee5..8d03fb75ae9 100644 --- a/docs/mfc/handling-tool-tip-notifications.md +++ b/docs/mfc/handling-tool-tip-notifications.md @@ -3,11 +3,13 @@ description: "Learn more about: Handling Tool Tip Notifications" title: "Handling Tool Tip Notifications" ms.date: "11/04/2016" helpviewer_keywords: ["TOOLTIPTEXT structure [MFC]", "CToolBarCtrl class [MFC], handling notifications", "notifications [MFC], tool tips", "tool tips [MFC], notifications"] -ms.assetid: ddb93b5f-2e4f-4537-8053-3453c86e2bbb ms.topic: concept-article --- # Handling Tool Tip Notifications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When you specify the **TBSTYLE_TOOLTIPS** style, the toolbar creates and manages a tool tip control. A tool tip is a small pop-up window that contains a line of text describing a toolbar button. The tool tip is hidden, appearing only when the user puts the cursor on a toolbar button and leaves it there for approximately one-half second. The tool tip is displayed near the cursor. Before the tool tip is displayed, the **TTN_NEEDTEXT** notification message is sent to the toolbar's owner window to retrieve the descriptive text for the button. If the toolbar's owner window is a `CFrameWnd` window, tool tips are displayed without any extra effort, because `CFrameWnd` has a default handler for the **TTN_NEEDTEXT** notification. If the toolbar's owner window is not derived from `CFrameWnd`, such as a dialog box or form view, you must add an entry to your owner window's message map and provide a notification handler in the message map. The entry to your owner window's message map is as follows: diff --git a/docs/mfc/handling-ttn-needtext-notification-for-tool-tips.md b/docs/mfc/handling-ttn-needtext-notification-for-tool-tips.md index 12058fb2d4e..8e0115299df 100644 --- a/docs/mfc/handling-ttn-needtext-notification-for-tool-tips.md +++ b/docs/mfc/handling-ttn-needtext-notification-for-tool-tips.md @@ -4,11 +4,13 @@ title: "Handling TTN_NEEDTEXT Notification for Tool Tips" ms.date: "11/04/2016" f1_keywords: ["TTN_NEEDTEXT"] helpviewer_keywords: ["TTN_NEEDTEXT message [MFC]", "notifications [MFC], tool tips", "tool tips [MFC], notifications"] -ms.assetid: d0370a65-21ba-4676-bcc5-8cf851bbb15c ms.topic: concept-article --- # Handling TTN_NEEDTEXT Notification for Tool Tips +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As part of [enabling tool tips](enabling-tool-tips.md), you handle the **TTN_NEEDTEXT** message by adding the following entry to your owner window's message map: [!code-cpp[NVC_MFCControlLadenDialog#40](codesnippet/cpp/handling-ttn-needtext-notification-for-tool-tips_1.cpp)] diff --git a/docs/mfc/handling-windows-messages-in-your-dialog-box.md b/docs/mfc/handling-windows-messages-in-your-dialog-box.md index 66db7e66085..d2c9173a4d9 100644 --- a/docs/mfc/handling-windows-messages-in-your-dialog-box.md +++ b/docs/mfc/handling-windows-messages-in-your-dialog-box.md @@ -3,11 +3,13 @@ description: "Learn more about: Handling Windows Messages in Your Dialog Box" title: "Handling Windows Messages in Your Dialog Box" ms.date: "09/05/2019" helpviewer_keywords: ["MFC dialog boxes [MFC], Windows messages", "Windows messages [MFC], handling", "message handling [MFC], in dialog boxes"] -ms.assetid: 4af0c9cb-09da-4b15-97df-a1cfb89def79 ms.topic: concept-article --- # Handling Windows Messages in Your Dialog Box +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Dialog boxes are windows, so they can handle Windows messages if you supply the appropriate handler functions. When you create your dialog class with the [Class Wizard](reference/mfc-class-wizard.md), the wizard adds an empty message map to the class. Use the wizard to map any Windows messages or commands you want your class to handle. See [Mapping Windows Messages to Your Dialog Class](mapping-windows-messages-to-your-class.md) for more information. diff --git a/docs/mfc/header-control-and-list-control.md b/docs/mfc/header-control-and-list-control.md index 447a06ef773..fe9450fb237 100644 --- a/docs/mfc/header-control-and-list-control.md +++ b/docs/mfc/header-control-and-list-control.md @@ -3,10 +3,12 @@ description: "Learn more about: Header Control and List Control" title: "Header Control and List Control" ms.date: "11/04/2016" helpviewer_keywords: ["CListCtrl class [MFC], with CHeaderCtrl", "CListCtrl class [MFC], header controls", "CHeaderCtrl class [MFC], with CListCtrl", "controls [MFC], header", "header controls [MFC]", "header controls [MFC], list controls used with"] -ms.assetid: b20194b1-1a6b-4e2f-b890-1b3cca6650bc --- # Header Control and List Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In most cases, you will use the header control that is embedded in a [CListCtrl](reference/clistctrl-class.md) or [CListView](reference/clistview-class.md) object. However, there are cases where a separate header control object is desirable, such as manipulating data, arranged in columns or rows, in a [CView](reference/cview-class.md)-derived object. In these cases, you need greater control over the appearance and default behavior of an embedded header control. In the common case that you want a header control to provide standard, default behavior, you may want to use [CListCtrl](reference/clistctrl-class.md) or [CListView](reference/clistview-class.md) instead. Use `CListCtrl` when you want the functionality of a default header control, embedded in a list view common control. Use [CListView](reference/clistview-class.md) when you want the functionality of a default header control, embedded in a view object. diff --git a/docs/mfc/header-control-examples.md b/docs/mfc/header-control-examples.md index 19e93cf27ee..831c040b22e 100644 --- a/docs/mfc/header-control-examples.md +++ b/docs/mfc/header-control-examples.md @@ -3,10 +3,12 @@ description: "Learn more about: Header Control Examples" title: "Header Control Examples" ms.date: "11/04/2016" helpviewer_keywords: ["sample applications [MFC], header controls", "controls [MFC], header"] -ms.assetid: 30050732-d53e-4eab-88d7-61aac52914c9 --- # Header Control Examples +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For examples of header controls, see the [Header Controls](/windows/win32/Controls/header-controls) in the Windows SDK. ## See also diff --git a/docs/mfc/header-items-in-a-header-control.md b/docs/mfc/header-items-in-a-header-control.md index 86592027737..6090d24d31c 100644 --- a/docs/mfc/header-items-in-a-header-control.md +++ b/docs/mfc/header-items-in-a-header-control.md @@ -3,10 +3,12 @@ description: "Learn more about: Header Items in a Header Control" title: "Header Items in a Header Control" ms.date: "11/04/2016" helpviewer_keywords: ["header controls [MFC], header items in", "header items in header controls [MFC]", "CHeaderCtrl class [MFC], header items in", "controls [MFC], header"] -ms.assetid: ac79ef1f-a671-4ab2-93e9-b1aa016a48bf --- # Header Items in a Header Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You have considerable control over the appearance and behavior of the header items that make up a header control ([CHeaderCtrl](reference/cheaderctrl-class.md)). Each header item can have a string, a bitmapped image, an image from an associated image list, or an application-defined 32-bit value associated with it. The string, bitmap, or image is displayed in the header item. You can customize the appearance and contents of new items when they are created by making a call [CHeaderCtrl::InsertItem](reference/cheaderctrl-class.md#insertitem) or by modifying an existing item, with a call to [CHeaderCtrl::GetItem](reference/cheaderctrl-class.md#getitem) and [CHeaderCtrl::SetItem](reference/cheaderctrl-class.md#setitem). diff --git a/docs/mfc/headers-and-footers.md b/docs/mfc/headers-and-footers.md index 52ce6bbb624..56c7002ac02 100644 --- a/docs/mfc/headers-and-footers.md +++ b/docs/mfc/headers-and-footers.md @@ -3,10 +3,12 @@ description: "Learn more about: Headers and Footers" title: "Headers and Footers" ms.date: "11/04/2016" helpviewer_keywords: ["printing [MFC], multipage documents", "page headers [MFC], printing", "headers [MFC], printing", "footers [MFC], printing", "page footers [MFC], printing", "page headers [MFC]", "printing [MFC], headers and footers", "page footers [MFC]"] -ms.assetid: b0be9c53-5773-4955-a777-3c15da745128 --- # Headers and Footers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how to add headers and footers to a printed document. When you look at a document on the screen, the name of the document and your current location in the document are commonly displayed in a title bar and a status bar. When looking at a printed copy of a document, it's useful to have the name and page number shown in a header or footer. This is a common way in which even WYSIWYG programs differ in how they perform printing and screen display. diff --git a/docs/mfc/help-menu-merging.md b/docs/mfc/help-menu-merging.md index 39addc15747..4034238ed17 100644 --- a/docs/mfc/help-menu-merging.md +++ b/docs/mfc/help-menu-merging.md @@ -3,10 +3,12 @@ description: "Learn more about: Help Menu Merging" title: "Help Menu Merging" ms.date: "11/04/2016" helpviewer_keywords: ["menus [MFC], merging", "merging Help menus [MFC]", "Help [MFC], for active document containers"] -ms.assetid: 9d615999-79ba-471a-9288-718f0c903d49 --- # Help Menu Merging +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When an object is active within a container, the menu merging protocol of OLE Documents gives the object complete control of the **Help** menu. As a result, the container's Help topics are not available unless the user deactivates the object. The active document containment architecture expands on the rules for in-place menu merging to allow both the container and an active document that is active to share the menu. The new rules are simply additional conventions about what component owns what part of the menu and how the shared menu is constructed. The new convention is simple. In active documents, the **Help** menu has two top-level menu items organized as follows: diff --git a/docs/mfc/hierarchy-chart-categories.md b/docs/mfc/hierarchy-chart-categories.md index 288eb786579..4dc22030a09 100644 --- a/docs/mfc/hierarchy-chart-categories.md +++ b/docs/mfc/hierarchy-chart-categories.md @@ -3,10 +3,12 @@ description: "Learn more about: Hierarchy Chart Categories" title: "Hierarchy Chart Categories" ms.date: "11/19/2018" helpviewer_keywords: ["MFC, hierarchy"] -ms.assetid: 1f109428-4b84-4f7c-90a9-e71fe071311e --- # Hierarchy Chart Categories +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + ![MFC hierarchy chart categories.](../mfc/media/vc369r1.png "MFC hierarchy chart categories") ## See also diff --git a/docs/mfc/hierarchy-chart.md b/docs/mfc/hierarchy-chart.md index 7f7b93ff509..97e09c128bd 100644 --- a/docs/mfc/hierarchy-chart.md +++ b/docs/mfc/hierarchy-chart.md @@ -3,10 +3,12 @@ description: "See the MFC class hierarchy in chart form." title: "MFC class hierarchy chart" ms.date: 09/10/2021 helpviewer_keywords: ["object models, MFC", "classes [MFC], MFC hierarchy", "MFC, object model"] -ms.assetid: 19d70341-e391-4a72-94c6-35755ce975d4 --- # MFC class hierarchy chart +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following illustration represents the MFC classes derived from `CObject`: :::image type="content" source="../mfc/media/mfc-hierarchy-chart-part-1-of-3.png" alt-text="Chart that lists the MFC classes derived from CObject."::: diff --git a/docs/mfc/how-default-printing-is-done.md b/docs/mfc/how-default-printing-is-done.md index 1226570b146..df9f6291768 100644 --- a/docs/mfc/how-default-printing-is-done.md +++ b/docs/mfc/how-default-printing-is-done.md @@ -3,10 +3,12 @@ description: "Learn more about: How Default Printing Is Done" title: "How Default Printing Is Done" ms.date: "11/04/2016" helpviewer_keywords: ["default printing", "printing [MFC], default", "defaults, printing"] -ms.assetid: 0f698459-0fc9-4d43-97da-29cf0f65daa2 --- # How Default Printing Is Done +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the default printing process in Windows in terms of the MFC framework. In MFC applications, the view class has a member function named `OnDraw` that contains all the drawing code. `OnDraw` takes a pointer to a [CDC](reference/cdc-class.md) object as a parameter. That `CDC` object represents the device context to receive the image produced by `OnDraw`. When the window displaying the document receives a [WM_PAINT](/windows/win32/gdi/wm-paint) message, the framework calls `OnDraw` and passes it a device context for the screen (a [CPaintDC](reference/cpaintdc-class.md) object, to be specific). Accordingly, `OnDraw`'s output goes to the screen. diff --git a/docs/mfc/how-mfc-makes-it-easier-to-create-internet-client-applications.md b/docs/mfc/how-mfc-makes-it-easier-to-create-internet-client-applications.md index 543a3124945..ec12c0c8a4c 100644 --- a/docs/mfc/how-mfc-makes-it-easier-to-create-internet-client-applications.md +++ b/docs/mfc/how-mfc-makes-it-easier-to-create-internet-client-applications.md @@ -3,10 +3,12 @@ description: "Learn more about: How MFC Makes It Easier to Create Internet Clien title: "How MFC Makes It Easier to Create Internet Client Applications" ms.date: "11/04/2016" helpviewer_keywords: ["Internet client applications [MFC], MFC", "Internet applications [MFC], MFC", "MFC, Internet applications"] -ms.assetid: 94437b3f-f15c-437d-b5fd-264a2efec9ab --- # How MFC Makes It Easier to Create Internet Client Applications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Classes encapsulate the Win32 Internet Extension (WinInet) functions in a manner that provides a familiar context for MFC programmers. MFC provides three Internet file classes ([CInternetFile](reference/cinternetfile-class.md), [CHttpFile](reference/chttpfile-class.md), and [CGopherFile](reference/cgopherfile-class.md)) derived from the [CStdioFile](reference/cstdiofile-class.md) class. Not only do these classes make retrieving and manipulating Internet data familiar to programmers who have used `CStdioFile` for local files, but with these classes you can handle local files and Internet files in a consistent, transparent manner. The MFC WinInet classes provide the same functionality as `CStdioFile` for data that is transferred across the Internet. These classes abstract the Internet protocols for HTTP, FTP, and gopher into a high-level application programming interface, providing a fast and straightforward path to making applications Internet-aware. For example, connecting to an FTP server still requires several steps at a low level, but as an MFC developer, you only need to make one call to `CInternetSession::GetFTPConnection` to create that connection. diff --git a/docs/mfc/how-noncommand-messages-reach-their-handlers.md b/docs/mfc/how-noncommand-messages-reach-their-handlers.md index 8f7350006f1..ff32666a224 100644 --- a/docs/mfc/how-noncommand-messages-reach-their-handlers.md +++ b/docs/mfc/how-noncommand-messages-reach-their-handlers.md @@ -3,10 +3,12 @@ description: "Learn more about: How Noncommand Messages Reach Their Handlers" title: "How Noncommand Messages Reach Their Handlers" ms.date: "11/04/2016" helpviewer_keywords: ["messages [MFC], routing", "noncommand messages", "Windows messages [MFC], routing", "message handling [MFC], noncommand messages"] -ms.assetid: e7df8aef-9fae-41f4-9c11-881d8465f602 --- # How Noncommand Messages Reach Their Handlers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Unlike commands, standard Windows messages do not get routed through a chain of command targets but are usually handled by the window to which Windows sends the message. The window might be a main frame window, an MDI child window, a standard control, a dialog box, a view, or some other kind of child window. At run time, each Windows window is attached to a window object (derived directly or indirectly from `CWnd`) that has its own associated message map and handler functions. The framework uses the message map — as for a command — to map incoming messages to handlers. diff --git a/docs/mfc/how-the-framework-calls-a-handler.md b/docs/mfc/how-the-framework-calls-a-handler.md index 9faf7aa2bb0..b3989ca0b58 100644 --- a/docs/mfc/how-the-framework-calls-a-handler.md +++ b/docs/mfc/how-the-framework-calls-a-handler.md @@ -3,10 +3,12 @@ description: "Learn more about: How the Framework Calls a Handler" title: "How the Framework Calls a Handler" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, command routing", "handler functions, MFC framework", "command handling [MFC], calling handlers and code in MFC", "command routing [MFC], MFC"] -ms.assetid: d79bceba-4ff6-417a-9d52-6b6af62a909d --- # How the Framework Calls a Handler +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following topics first examine how the framework routes commands, then examine how other messages and control notifications are sent to windows: - [Message sending and receiving](message-sending-and-receiving.md) diff --git a/docs/mfc/how-the-framework-calls-your-code.md b/docs/mfc/how-the-framework-calls-your-code.md index af6f336b695..eb3f6d02366 100644 --- a/docs/mfc/how-the-framework-calls-your-code.md +++ b/docs/mfc/how-the-framework-calls-your-code.md @@ -3,10 +3,12 @@ description: "Learn more about: How the Framework Calls Your Code" title: "How the Framework Calls Your Code" ms.date: "11/04/2016" helpviewer_keywords: ["control flow [MFC], MFC framework and your code", "events [MFC], command routing in MFC", "command routing [MFC], framework", "command handling [MFC], calling handlers and code in MFC", "events [MFC], event-driven programming", "MFC, calling code from", "MFC, calling code", "application-specific events [MFC]", "command routing [MFC], MFC"] -ms.assetid: 39e68189-a580-40d0-9e35-bf5cd24a8ecf --- # How the Framework Calls Your Code +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + It is crucial to understand the relationship between your source code and the code in the MFC framework. When your application runs, most of the flow of control resides in the framework's code. The framework manages the message loop that gets messages from Windows as the user chooses commands and edits data in a view. Events that the framework can handle by itself do not rely on your code at all. For example, the framework knows how to close windows and how to exit the application in response to user commands. As it handles these tasks, the framework uses message handlers and C++ virtual functions to give you opportunities to respond to these events as well. Your code is not in control, however; the framework is. The framework calls your code for application-specific events. For example, when the user chooses a menu command, the framework routes the command along a sequence of C++ objects: the current view and frame window, the document associated with the view, the document's document template, and the application object. If one of these objects can handle the command, it does so, calling the appropriate message-handler function. For any given command, the code called may be yours or it may be the framework's. diff --git a/docs/mfc/how-the-framework-searches-message-maps.md b/docs/mfc/how-the-framework-searches-message-maps.md index f5b25c415ba..02d172cda6d 100644 --- a/docs/mfc/how-the-framework-searches-message-maps.md +++ b/docs/mfc/how-the-framework-searches-message-maps.md @@ -3,10 +3,12 @@ description: "Learn more about: How the Framework Searches Message Maps" title: "How the Framework Searches Message Maps" ms.date: "11/04/2016" helpviewer_keywords: ["message maps [MFC], searching"] -ms.assetid: fd1df878-5601-45d7-bd1f-b8f8e65b9a17 --- # How the Framework Searches Message Maps +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The framework searches the message-map table for matches with incoming messages. Once you write a message-map entry for each message you want a class to handle and write the corresponding handlers, the framework calls your handlers automatically. The following topics explain message-map searching: - [Where to find message maps](where-to-find-message-maps.md) diff --git a/docs/mfc/how-to-add-restart-manager-support.md b/docs/mfc/how-to-add-restart-manager-support.md index f568efe5421..18bf6bfd20f 100644 --- a/docs/mfc/how-to-add-restart-manager-support.md +++ b/docs/mfc/how-to-add-restart-manager-support.md @@ -3,10 +3,12 @@ description: "Learn more about: How to: Add Restart Manager Support" title: "How to: Add Restart Manager Support" ms.date: "11/04/2016" helpviewer_keywords: ["Restart manager [MFC]", "C++, application crash support"] -ms.assetid: 7f3f5867-d4bc-4ba8-b3c9-dc1e7be93642 --- # How to: Add Restart Manager Support +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The restart manager is a feature added to Visual Studio for Windows Vista or later operating systems. The restart manager adds support for your application if it unexpectedly closes or restarts. The behavior of the restart manager depends on the type of your application. If your application is a document editor, the restart manager enabled your application to automatically save the state and content of any open documents and restarts your application after an unexpected closure. If your application is not a document editor, the restart manager will restart the application, but it cannot save the state of the application by default. After restart, the application displays a task dialog box if the application is Unicode. If it is an ANSI application, the application displays a Windows Message box. At this point, the user chooses whether to restore the automatically saved documents. If the user does not restore the automatically saved documents, the restart manager discards the temporary files. diff --git a/docs/mfc/how-to-add-ribbon-controls-and-event-handlers.md b/docs/mfc/how-to-add-ribbon-controls-and-event-handlers.md index 803855f0314..ce22746e9f4 100644 --- a/docs/mfc/how-to-add-ribbon-controls-and-event-handlers.md +++ b/docs/mfc/how-to-add-ribbon-controls-and-event-handlers.md @@ -3,10 +3,12 @@ description: "Learn more about: How to: Add Ribbon Controls and Event Handlers" title: "How to: Add Ribbon Controls and Event Handlers" ms.date: "11/04/2016" helpviewer_keywords: ["event handlers [MFC], adding", "ribbon controls [MFC], adding"] -ms.assetid: b31f25bc-ede7-49c3-9e3c-dffe4e174a69 --- # How to: Add Ribbon Controls and Event Handlers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Ribbon controls are elements, such as buttons and combo boxes, that you add to panels. Panels are areas of the ribbon bar that display a group of related controls. In this topic, you will open the Ribbon Designer, add a button, and then link an event that displays "Hello World". diff --git a/docs/mfc/how-to-convert-an-existing-mfc-ribbon-to-a-ribbon-resource.md b/docs/mfc/how-to-convert-an-existing-mfc-ribbon-to-a-ribbon-resource.md index e0e84a33917..c33c9d6e5f6 100644 --- a/docs/mfc/how-to-convert-an-existing-mfc-ribbon-to-a-ribbon-resource.md +++ b/docs/mfc/how-to-convert-an-existing-mfc-ribbon-to-a-ribbon-resource.md @@ -3,10 +3,12 @@ description: "Learn more about: How to: Convert an Existing MFC Ribbon to a Ribb title: "How to: Convert an Existing MFC Ribbon to a Ribbon Resource" ms.date: "11/04/2016" helpviewer_keywords: ["ribbon resource, converting from an MFC ribbon", "MFC ribbon, converting to a ribbon resource"] -ms.assetid: 324b7ff6-58f9-4691-96a9-9836a79d0fb6 --- # How to: Convert an Existing MFC Ribbon to a Ribbon Resource +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Ribbon resources are easier to visualize, modify, and maintain than manually coded ribbons. This topic describes how to convert a manually coded ribbon in an MFC Project into a ribbon resource. You must have an existing MFC project that has code that uses the MFC ribbon classes, for example, [CMFCRibbonBar Class](reference/cmfcribbonbar-class.md). diff --git a/docs/mfc/how-to-create-a-message-map-for-a-template-class.md b/docs/mfc/how-to-create-a-message-map-for-a-template-class.md index 39e4c4ec594..56465c75912 100644 --- a/docs/mfc/how-to-create-a-message-map-for-a-template-class.md +++ b/docs/mfc/how-to-create-a-message-map-for-a-template-class.md @@ -3,10 +3,12 @@ description: "Learn more about: How to: Create a Message Map for a Template Clas title: "How to: Create a Message Map for a Template Class" ms.date: "11/04/2016" helpviewer_keywords: ["template classes [MFC], creating message maps", "message maps [MFC], template classes"] -ms.assetid: 4e7e24f8-06df-4b46-82aa-7435c8650de3 --- # How to: Create a Message Map for a Template Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Message mapping in MFC provides an efficient way to direct Windows messages to an appropriate C++ object instance. Examples of MFC message map targets include application classes, document and view classes, control classes, and so on. Traditional MFC message maps are declared using the [BEGIN_MESSAGE_MAP](reference/message-map-macros-mfc.md#begin_message_map) macro to declare the start of the message map, a macro entry for each message-handler class method, and finally the [END_MESSAGE_MAP](reference/message-map-macros-mfc.md#end_message_map) macro to declare the end of the message map. diff --git a/docs/mfc/how-to-customize-the-application-button.md b/docs/mfc/how-to-customize-the-application-button.md index 8a9c8abbdae..9685a0d1b5b 100644 --- a/docs/mfc/how-to-customize-the-application-button.md +++ b/docs/mfc/how-to-customize-the-application-button.md @@ -3,10 +3,12 @@ description: "Learn more about: How to: Customize the Application Button" title: "How to: Customize the Application Button" ms.date: "09/07/2019" helpviewer_keywords: ["application button [MFC], customizing"] -ms.assetid: ebb11180-ab20-43df-a234-801feca9eb38 --- # How to: Customize the Application Button +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When you click the Application button, a menu of commands is displayed. Typically, the menu contains file-related commands such as **Open**, **Save**, **Print**, and **Exit**. ![MFC Ribbon Application Button.](../mfc/media/application_button.png "MFC Ribbon Application Button") diff --git a/docs/mfc/how-to-customize-the-quick-access-toolbar.md b/docs/mfc/how-to-customize-the-quick-access-toolbar.md index fd1992a269c..432b7813070 100644 --- a/docs/mfc/how-to-customize-the-quick-access-toolbar.md +++ b/docs/mfc/how-to-customize-the-quick-access-toolbar.md @@ -3,10 +3,12 @@ description: "Learn more about: How to: Customize the Quick Access Toolbar" title: "How to: Customize the Quick Access Toolbar" ms.date: "09/07/2019" helpviewer_keywords: ["quick access toolbar [MFC], customization"] -ms.assetid: 2554099b-0c89-4605-9249-31bf9cbcefe0 --- # How to: Customize the Quick Access Toolbar +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Quick Access Toolbar (QAT) is a customizable toolbar that contains a set of commands that are either displayed next to the Application button or under the category tabs. The following illustration shows a typical Quick Access Toolbar. ![MFC Ribbon Quick Access Toolbar.](../mfc/media/quick_access_toolbar.png "MFC Ribbon Quick Access Toolbar") diff --git a/docs/mfc/how-to-display-command-information-in-the-status-bar.md b/docs/mfc/how-to-display-command-information-in-the-status-bar.md index 88c1169ad69..04bda0d0edd 100644 --- a/docs/mfc/how-to-display-command-information-in-the-status-bar.md +++ b/docs/mfc/how-to-display-command-information-in-the-status-bar.md @@ -3,10 +3,12 @@ description: "Learn more about: How to: Display Command Information in the Statu title: "How to: Display Command Information in the Status Bar" ms.date: "11/04/2016" helpviewer_keywords: ["prompts [MFC]", "displaying command status [MFC]", "status bars [MFC], message area", "status bars [MFC], displaying command information"] -ms.assetid: de895cbe-61ee-46bf-9787-76b247527d6d --- # How to: Display Command Information in the Status Bar +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When you run the Application Wizard to create the skeleton of your application, you can support a toolbar and a status bar. Just one option in the Application Wizard supports both. When a status bar is present, the application automatically provides helpful feedback as the user moves the pointer over items on the menus. The application automatically displays a prompt string in the status bar when the menu item is highlighted. For example, when the user moves the pointer over the **Cut** command on the **Edit** menu, the status bar might display "Cuts the selection and puts it on the Clipboard" in the message area of the status bar. The prompt helps the user understand the purpose of the menu item. This also works when the user clicks a toolbar button. You can add to this status-bar help by defining prompt strings for menu items that you add to the program. To do this, provide the prompt strings when you edit the properties of the menu item in the menu editor. The strings you define are stored in the application resource file; they have the same IDs as the commands they explain. diff --git a/docs/mfc/how-to-implement-tracking-in-your-code.md b/docs/mfc/how-to-implement-tracking-in-your-code.md index 7d46e6634e7..b007c680d57 100644 --- a/docs/mfc/how-to-implement-tracking-in-your-code.md +++ b/docs/mfc/how-to-implement-tracking-in-your-code.md @@ -3,10 +3,12 @@ description: "Learn more about: How to: Implement Tracking in Your Code" title: "How to: Implement Tracking in Your Code" ms.date: "11/04/2016" helpviewer_keywords: ["CRectTracker class [MFC], implementing trackers"] -ms.assetid: baaeca2c-5114-485f-bf58-8807db1bc973 --- # How to: Implement Tracking in Your Code +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To track an OLE item, you must handle certain events related to the item, such as clicking the item or updating the view of the document. In all cases, it is sufficient to declare a temporary [CRectTracker](reference/crecttracker-class.md) object and manipulate the item by means of this object. When a user selects an item or inserts an object with a menu command, you must initialize the tracker with the proper styles to represent the state of the OLE item. The following table outlines the conventions used by the OCLIENT sample. For more information on these styles, see `CRectTracker`. diff --git a/docs/mfc/how-to-load-a-ribbon-resource-from-an-mfc-application.md b/docs/mfc/how-to-load-a-ribbon-resource-from-an-mfc-application.md index f86fcec8eeb..10204cff33c 100644 --- a/docs/mfc/how-to-load-a-ribbon-resource-from-an-mfc-application.md +++ b/docs/mfc/how-to-load-a-ribbon-resource-from-an-mfc-application.md @@ -3,10 +3,12 @@ description: "Learn more about: How to: Load a Ribbon Resource from an MFC Appli title: "How to: Load a Ribbon Resource from an MFC Application" ms.date: "11/04/2016" helpviewer_keywords: ["ribbon resource [MFC], loading"] -ms.assetid: 1c76bb8f-6345-414a-9f3f-128815ceadc5 --- # How to: Load a Ribbon Resource from an MFC Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To use the ribbon resource in your application, modify the application to load the ribbon resource. ### To load a ribbon resource diff --git a/docs/mfc/how-to-make-a-type-safe-collection.md b/docs/mfc/how-to-make-a-type-safe-collection.md index 3b507e6d543..c1c4dac4865 100644 --- a/docs/mfc/how-to-make-a-type-safe-collection.md +++ b/docs/mfc/how-to-make-a-type-safe-collection.md @@ -3,10 +3,12 @@ description: "Learn more about: How to: Make a Type-Safe Collection" title: "How to: Make a Type-Safe Collection" ms.date: "11/04/2016" helpviewer_keywords: ["type-safe collections [MFC]", "serializing collection-class elements [MFC]", "collection classes [MFC], type safety", "SerializeElements function [MFC]", "collection classes [MFC], template-based", "serialization [MFC], collection classes", "collection classes [MFC], deriving from nontemplate"] -ms.assetid: 7230b2db-4283-4083-b098-eb231bf5b89e --- # How to: Make a Type-Safe Collection +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how to make type-safe collections for your own data types. Topics include: - [Using template-based classes for type safety](#_core_using_template.2d.based_classes_for_type_safety) diff --git a/docs/mfc/how-to-update-user-interface-objects.md b/docs/mfc/how-to-update-user-interface-objects.md index 2b5fa11a2d1..0a9e902847d 100644 --- a/docs/mfc/how-to-update-user-interface-objects.md +++ b/docs/mfc/how-to-update-user-interface-objects.md @@ -3,10 +3,12 @@ description: "Learn more about: How to: Update User-Interface Objects" title: "How to: Update User-Interface Objects" ms.date: "11/04/2016" helpviewer_keywords: ["menus [MFC], updating as context changes", "user interface objects [MFC], updating", "user interface objects [MFC]", "update handlers [MFC]", "enabling UI elements [MFC]", "disabling menus [MFC]", "updating user-interface objects [MFC]", "disabling UI elements [MFC]", "commands [MFC], updating UI", "enabling menus [MFC]"] -ms.assetid: 82f09773-c978-427b-b321-05a6143b7369 --- # How to: Update User-Interface Objects +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Typically, menu items and toolbar buttons have more than one state. For example, a menu item is grayed (dimmed) if it is unavailable in the present context. Menu items can also be checked or unchecked. A toolbar button can also be disabled if unavailable, or it can be checked. Who updates the state of these items as program conditions change Logically, if a menu item generates a command that is handled by, say, a document, it makes sense to have the document update the menu item. The document probably contains the information on which the update is based. diff --git a/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md b/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md index 4b8cec07283..ac1c59f2b1d 100644 --- a/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md +++ b/docs/mfc/how-wininet-makes-it-easier-to-create-internet-client-applications.md @@ -3,10 +3,12 @@ description: "Learn more about: How WinInet Makes It Easier to Create Internet C title: "How WinInet Makes It Easier to Create Internet Client Applications" ms.date: "11/04/2016" helpviewer_keywords: ["Windows Sockets [MFC], vs. WinInet", "WinInet classes [MFC], vs. WinSock", "WinInet classes [MFC], Internet client applications"] -ms.assetid: dc0f9f47-3184-4e7a-8074-2c63e0359885 --- # How WinInet Makes It Easier to Create Internet Client Applications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Win32 Internet Extensions, or WinInet, provide access to common Internet protocols, including gopher, FTP, and HTTP. Using WinInet, you can write Internet client applications at a higher level of programming, without having to deal with WinSock, TCP/IP, or the details of specific Internet protocols. WinInet provides a consistent set of functions for all three protocols, with a familiar Win32 API interface. This consistency minimizes code changes you need to make if the underlying protocol changes (for example, from FTP to HTTP). Visual C++ provides two ways for you to use WinInet. You can call the Win32 Internet functions directly (see the OLE documentation in the Windows SDK for more information) or you can use WinInet through the [MFC WinInet classes](mfc-classes-for-creating-internet-client-applications.md). diff --git a/docs/mfc/html-basics.md b/docs/mfc/html-basics.md index 88e3e02b5ad..52a2ba0cd3c 100644 --- a/docs/mfc/html-basics.md +++ b/docs/mfc/html-basics.md @@ -3,10 +3,12 @@ description: "Learn more about: HTML Basics" title: "HTML Basics" ms.date: "11/04/2016" helpviewer_keywords: ["HTML [MFC], about HTML"] -ms.assetid: aab8ea9f-12d4-4bdd-a585-ac3124081a2a --- # HTML Basics +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Most browsers have the capability of examining the HTML source of the pages you browse. When you view the source you will see a number of HTML (Hypertext markup language) tags, surrounded by angle brackets(<>), interspersed with text. The steps below use HTML tags to build a simple Web page. In these steps, you'll type plain text into a file in Notepad, make a few changes, save the file, and reload your page in the browser to see your changes. diff --git a/docs/mfc/html-help-context-sensitive-help-for-your-programs.md b/docs/mfc/html-help-context-sensitive-help-for-your-programs.md index ecadee9898f..592b23b3a8d 100644 --- a/docs/mfc/html-help-context-sensitive-help-for-your-programs.md +++ b/docs/mfc/html-help-context-sensitive-help-for-your-programs.md @@ -3,10 +3,12 @@ description: "Learn more about: HTML Help: Context-Sensitive Help for Your Progr title: "HTML Help: Context-Sensitive Help for Your Programs" ms.date: "11/04/2016" helpviewer_keywords: ["context-sensitive Help [MFC], HTML Help", "HTML Help [MFC], context-sensitive"] -ms.assetid: f2eabbbb-0796-43f3-a483-5f7cf00f2e7c --- # HTML Help: Context-Sensitive Help for Your Programs +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!IMPORTANT] > HTML Help is not supported in this version of MFC. diff --git a/docs/mfc/idle-loop-processing.md b/docs/mfc/idle-loop-processing.md index 04bee6c2f4a..abf173d9f42 100644 --- a/docs/mfc/idle-loop-processing.md +++ b/docs/mfc/idle-loop-processing.md @@ -3,10 +3,12 @@ description: "Learn more about: Idle Loop Processing" title: "Idle Loop Processing" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, background processing", "PeekMessage method [MFC], elsewhere than message loop", "PeekMessage method [MFC]", "MFC, messages", "messages [MFC], loops", "OnIdle method [MFC]", "processing [MFC], background", "idle loop processing [MFC]", "idle processing [MFC]", "threading [MFC], alternatives to multithreading", "processing, during idle loop", "processing [MFC]", "background processing [MFC]"] -ms.assetid: 5c7c46c1-6107-4304-895f-480983bb1e44 --- # Idle Loop Processing +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Many applications perform lengthy processing "in the background." Sometimes performance considerations dictate using multithreading for such work. Threads involve extra development overhead, so they are not recommended for simple tasks like the idle-time work that MFC does in the [OnIdle](reference/cwinthread-class.md#onidle) function. This article focuses on idle processing. For more information about multithreading, see [Multithreading Topics](../parallel/multithreading-support-for-older-code-visual-cpp.md). Some kinds of background processing are appropriately done during intervals that the user is not otherwise interacting with the application. In an application developed for the Microsoft Windows operating system, an application can perform idle-time processing by splitting a lengthy process into many small fragments. After processing each fragment, the application yields execution control to Windows using a [PeekMessage](/windows/win32/api/winuser/nf-winuser-peekmessagew) loop. diff --git a/docs/mfc/image-information-in-image-lists.md b/docs/mfc/image-information-in-image-lists.md index 85fb338f183..11ca2a4de11 100644 --- a/docs/mfc/image-information-in-image-lists.md +++ b/docs/mfc/image-information-in-image-lists.md @@ -3,10 +3,12 @@ description: "Learn more about: Image Information in Image Lists" title: "Image Information in Image Lists" ms.date: "11/04/2016" helpviewer_keywords: ["CImageList class [MFC], image information in", "image lists [MFC], image information in"] -ms.assetid: 73c41543-fa91-405d-b15b-0feffa6a72c1 --- # Image Information in Image Lists +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + [CImageList](reference/cimagelist-class.md) includes a number of functions that retrieve information from an image list. The [GetImageInfo](reference/cimagelist-class.md#getimageinfo) member function fills an `IMAGEINFO` structure with information about a single image, including the handles of the image and mask bitmaps, the number of color planes and bits per pixel, and the bounding rectangle of the image within the image bitmap. You can use this information to directly manipulate the bitmaps for the image. The [GetImageCount](reference/cimagelist-class.md#getimagecount) member function retrieves the number of images in an image list. diff --git a/docs/mfc/image-overlays-in-image-lists.md b/docs/mfc/image-overlays-in-image-lists.md index 808d498a425..1822b3e0149 100644 --- a/docs/mfc/image-overlays-in-image-lists.md +++ b/docs/mfc/image-overlays-in-image-lists.md @@ -3,10 +3,12 @@ description: "Learn more about: Image Overlays in Image Lists" title: "Image Overlays in Image Lists" ms.date: "11/04/2016" helpviewer_keywords: ["overlays [MFC]", "image lists [MFC], image overlays in", "CImageList class [MFC], image overlays in"] -ms.assetid: aaf4e1c4-cd12-42c8-9af4-1bb458889b4e --- # Image Overlays in Image Lists +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Every image list ([CImageList](reference/cimagelist-class.md)) includes a list of images to use as overlay masks. An "overlay mask" is an image drawn transparently over another image. Any image can be used as an overlay mask. You can specify up to four overlay masks per image list. You add the index of an image to the list of overlay masks by using the [SetOverlayImage](reference/cimagelist-class.md#setoverlayimage) member function, the index of an image, and the index of an overlay mask. Note that the indices for the overlay masks are one-based rather than zero-based. diff --git a/docs/mfc/implementing-working-areas-in-list-controls.md b/docs/mfc/implementing-working-areas-in-list-controls.md index 0ee8d8fcbfa..5379ff13fea 100644 --- a/docs/mfc/implementing-working-areas-in-list-controls.md +++ b/docs/mfc/implementing-working-areas-in-list-controls.md @@ -3,11 +3,13 @@ description: "Learn more about: Implementing Working Areas in List Controls" title: "Implementing Working Areas in List Controls" ms.date: "11/04/2016" helpviewer_keywords: ["list controls [MFC], working areas", "working areas in list control [MFC]"] -ms.assetid: fbbb356b-3359-4348-8603-f1cb114cadde ms.topic: concept-article --- # Implementing Working Areas in List Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + By default, a list control arranges all items in a standard grid fashion. However, another method is supported, working areas, that arranges the list items into rectangular groups. For an image of a list control that implements working areas, see Using List-View Controls in the Windows SDK. > [!NOTE] diff --git a/docs/mfc/initializing-and-cleaning-up-documents-and-views.md b/docs/mfc/initializing-and-cleaning-up-documents-and-views.md index 9245198be4d..a5475344903 100644 --- a/docs/mfc/initializing-and-cleaning-up-documents-and-views.md +++ b/docs/mfc/initializing-and-cleaning-up-documents-and-views.md @@ -3,11 +3,13 @@ description: "Learn more about: Initializing and Cleaning Up Documents and Views title: "Initializing and Cleaning Up Documents and Views" ms.date: "11/04/2016" helpviewer_keywords: ["initializing documents [MFC]", "views [MFC], cleaning up", "documents [MFC], initializing", "documents [MFC], cleaning up", "views [MFC], initializing", "initializing objects [MFC], document objects", "document objects [MFC], life cycle of", "initializing views [MFC]"] -ms.assetid: 95d6f09b-a047-4079-856a-ae7d0548e9d2 ms.topic: how-to --- # Initializing and Cleaning Up Documents and Views +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Use the following guidelines for initializing and cleaning up after your documents and views: - The MFC framework initializes documents and views; you initialize any data you add to them. diff --git a/docs/mfc/initializing-documents-and-views.md b/docs/mfc/initializing-documents-and-views.md index 43ac07fab7a..9df47617166 100644 --- a/docs/mfc/initializing-documents-and-views.md +++ b/docs/mfc/initializing-documents-and-views.md @@ -3,11 +3,13 @@ description: "Learn more about: Initializing Documents and Views" title: "Initializing Documents and Views" ms.date: "11/04/2016" helpviewer_keywords: ["initializing documents [MFC]", "documents [MFC], initializing", "views [MFC], initializing", "initializing objects [MFC], document objects", "initializing views [MFC]"] -ms.assetid: 33cb8643-8a16-478c-bc26-eccc734e3661 ms.topic: concept-article --- # Initializing Documents and Views +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Documents are created in two different ways, so your document class must support both ways. First, the user can create a new, empty document with the File New command. In that case, initialize the document in your override of the [OnNewDocument](reference/cdocument-class.md#onnewdocument) member function of class [CDocument](reference/cdocument-class.md). Second, the user can use the Open command on the File menu to create a new document whose contents are read from a file. In that case, initialize the document in your override of the [OnOpenDocument](reference/cdocument-class.md#onopendocument) member function of class `CDocument`. If both initializations are the same, you can call a common member function from both overrides, or `OnOpenDocument` can call `OnNewDocument` to initialize a clean document and then finish the open operation. Views are created after their documents are created. The best time to initialize a view is after the framework has finished creating the document, frame window, and view. You can initialize your view by overriding the [OnInitialUpdate](reference/cview-class.md#oninitialupdate) member function of [CView](reference/cview-class.md). If you need to reinitialize or adjust anything each time the document changes, you can override [OnUpdate](reference/cview-class.md#onupdate). diff --git a/docs/mfc/initializing-the-dialog-box.md b/docs/mfc/initializing-the-dialog-box.md index ba9d129545f..a023246ae63 100644 --- a/docs/mfc/initializing-the-dialog-box.md +++ b/docs/mfc/initializing-the-dialog-box.md @@ -3,11 +3,13 @@ description: "Learn more about: Initializing the Dialog Box" title: "Initializing the Dialog Box" ms.date: "11/04/2016" helpviewer_keywords: ["initializing dialog boxes [MFC]", "OnInitDialog method [MFC]", "modal dialog boxes [MFC], initializing", "modeless dialog boxes [MFC], initializing", "MFC dialog boxes [MFC], initializing"] -ms.assetid: 968142f5-19f9-4b34-a1d4-8e6412d4379b ms.topic: concept-article --- # Initializing the Dialog Box +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + After the dialog box and all of its controls are created but just before the dialog box (of either type) appears on the screen, the dialog object's [OnInitDialog](reference/cdialog-class.md#oninitdialog) member function is called. For a modal dialog box, this occurs during the `DoModal` call. For a modeless dialog box, `OnInitDialog` is called when `Create` is called. You typically override `OnInitDialog` to initialize the dialog box's controls, such as setting the initial text of an edit box. You must call the `OnInitDialog` member function of the base class, `CDialog`, from your `OnInitDialog` override. If you want to set your dialog box's background color (and that of all other dialog boxes in your application), see [Setting the Dialog Box's Background Color](setting-the-dialog-boxs-background-color.md). diff --git a/docs/mfc/initializing-the-parts-of-a-cstatusbarctrl-object.md b/docs/mfc/initializing-the-parts-of-a-cstatusbarctrl-object.md index af5b7bc529b..fb6a19352f3 100644 --- a/docs/mfc/initializing-the-parts-of-a-cstatusbarctrl-object.md +++ b/docs/mfc/initializing-the-parts-of-a-cstatusbarctrl-object.md @@ -3,11 +3,13 @@ description: "Learn more about: Initializing the Parts of a CStatusBarCtrl Objec title: "Initializing the Parts of a CStatusBarCtrl Object" ms.date: "11/04/2016" helpviewer_keywords: ["CStatusBarCtrl class [MFC], simple mode", "status bars [MFC], declaring parts of", "simple status bars [MFC]", "status bars [MFC], icons", "status bars [MFC], simple mode", "icons, using in status bars", "CStatusBarCtrl class [MFC], declaring parts of"] -ms.assetid: 60e8f285-d2d8-424a-a6ea-2fc548370303 ms.topic: concept-article --- # Initializing the Parts of a CStatusBarCtrl Object +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + By default, a status bar displays status information using separate panes. These panes (also referred to as parts) can contain either a text string, an icon, or both. Use [SetParts](reference/cstatusbarctrl-class.md#setparts) to define how many parts, and the length, the status bar will have. After you have created the parts of the status bar, make calls to [SetText](reference/cstatusbarctrl-class.md#settext) and [SetIcon](reference/cstatusbarctrl-class.md#seticon) to set the text or icon for a specific part of the status bar. Once the part has been successfully set, the control is automatically redrawn. diff --git a/docs/mfc/initinstance-member-function.md b/docs/mfc/initinstance-member-function.md index adea53e37d0..a9b498541b8 100644 --- a/docs/mfc/initinstance-member-function.md +++ b/docs/mfc/initinstance-member-function.md @@ -4,10 +4,12 @@ title: "InitInstance Member Function" ms.date: "11/04/2016" f1_keywords: ["InitInstance"] helpviewer_keywords: ["InitInstance method [MFC]", "applications [MFC], initializing", "MFC, initializing", "initializing MFC applications"] -ms.assetid: 4ef09267-ff7f-4c39-91a0-57454a264f83 --- # InitInstance Member Function +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Windows operating system allows you to run more than one copy, or "instance," of the same application. `WinMain` calls [InitInstance](reference/cwinapp-class.md#initinstance) every time a new instance of the application starts. The standard `InitInstance` implementation created by the MFC Application Wizard performs the following tasks: diff --git a/docs/mfc/inserting-a-control-into-a-control-container-application.md b/docs/mfc/inserting-a-control-into-a-control-container-application.md index dd5b98f83e8..d53eaffac01 100644 --- a/docs/mfc/inserting-a-control-into-a-control-container-application.md +++ b/docs/mfc/inserting-a-control-into-a-control-container-application.md @@ -3,10 +3,12 @@ description: "Learn more about: ActiveX Control Containers: Inserting a Control title: "ActiveX Control Containers: Inserting a Control into a Control Container Application" ms.date: "11/04/2016" helpviewer_keywords: ["ActiveX control containers [MFC], inserting controls", "ActiveX controls [MFC], adding to projects"] -ms.assetid: bbb617ff-872f-43d8-b4d6-c49adb16b148 --- # ActiveX Control Containers: Inserting a Control into a Control Container Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Before you can access an ActiveX control from an ActiveX control container application, you must add the ActiveX control to the container application using the [Insert ActiveX Control](../windows/adding-editing-or-deleting-controls.md) dialog box. To add an ActiveX control to the ActiveX control container project, see [Viewing and Adding ActiveX Controls to a Dialog Box](../windows/adding-editing-or-deleting-controls.md). diff --git a/docs/mfc/inserting-a-form-into-a-project.md b/docs/mfc/inserting-a-form-into-a-project.md index ad08c10130e..657302adc43 100644 --- a/docs/mfc/inserting-a-form-into-a-project.md +++ b/docs/mfc/inserting-a-form-into-a-project.md @@ -3,11 +3,13 @@ description: "Learn more about: Inserting a Form into a Project" title: "Inserting a Form into a Project" ms.date: "11/04/2016" helpviewer_keywords: ["inserting forms [MFC]", "Insert New dialog box [MFC]", "forms, adding to projects"] -ms.assetid: f3bd2998-3ce2-496d-ac5c-57ca70eec7cb ms.topic: how-to --- # Inserting a Form into a Project +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Forms provide a convenient container for controls. You can easily insert an MFC-based form into your application as long as the application supports the MFC libraries. ### To insert a form into your project diff --git a/docs/mfc/interface-elements.md b/docs/mfc/interface-elements.md index 28c6b293ffe..04cd91cdafe 100644 --- a/docs/mfc/interface-elements.md +++ b/docs/mfc/interface-elements.md @@ -3,10 +3,12 @@ description: "Learn more about: Interface Elements" title: "Interface Elements" ms.date: "11/19/2018" helpviewer_keywords: ["architecture [MFC], MFC Feature Pack", "MFC Feature Pack, architecture"] -ms.assetid: eead6827-9602-40a3-8038-8986e8207385 --- # Interface Elements +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This document describes interface elements that were introduced in Visual Studio 2008 SP1, and also describes differences with the earlier version of the library. The following illustration shows an application that was built by using the new interface elements. diff --git a/docs/mfc/internet-and-networking-classes.md b/docs/mfc/internet-and-networking-classes.md index 4832f616532..a7f0d4040c6 100644 --- a/docs/mfc/internet-and-networking-classes.md +++ b/docs/mfc/internet-and-networking-classes.md @@ -4,10 +4,12 @@ title: "Internet and Networking Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.net"] helpviewer_keywords: ["Internet classes [MFC]", "networking classes [MFC]"] -ms.assetid: 1acf793d-ebf2-4fac-97be-703d62e3897e --- # Internet and Networking Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These classes allow you to exchange information with another computer using a Windows Socket or Win32 Internet (WinInet). There are also a set of classes for manipulating Windows Sockets. The following categories of classes support connectivity. diff --git a/docs/mfc/internet-information-by-task.md b/docs/mfc/internet-information-by-task.md index 7493ce32c50..246ca26a540 100644 --- a/docs/mfc/internet-information-by-task.md +++ b/docs/mfc/internet-information-by-task.md @@ -3,10 +3,12 @@ description: "Learn more about: Internet Information by Task" title: "Internet Information by Task" ms.date: "09/12/2018" helpviewer_keywords: ["MFC, Internet applications"] -ms.assetid: da078bf5-53c3-4167-b1ef-509b5a544ad9 --- # Internet Information by Task +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The tasks listed in this topic are sorted based on the task you want to accomplish. >[!IMPORTANT] diff --git a/docs/mfc/internet-information-by-topic.md b/docs/mfc/internet-information-by-topic.md index c23fba8b600..a8b769f525f 100644 --- a/docs/mfc/internet-information-by-topic.md +++ b/docs/mfc/internet-information-by-topic.md @@ -3,10 +3,12 @@ description: "Learn more about: Internet Information by Topic" title: "Internet Information by Topic" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, Internet applications"] -ms.assetid: 93a8b6c9-d274-492a-90b3-cf43a77edb1d --- # Internet Information by Topic +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For information on programming with a specific Internet technology, see: ## WinInet diff --git a/docs/mfc/internet-related-mfc-classes.md b/docs/mfc/internet-related-mfc-classes.md index 25f83f8c5cc..9dbcbb7a9ca 100644 --- a/docs/mfc/internet-related-mfc-classes.md +++ b/docs/mfc/internet-related-mfc-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: Internet-Related MFC Classes" title: "Internet-Related MFC Classes" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, Internet classes"] -ms.assetid: e50c6b39-4b65-4b8a-8101-8934d0780723 --- # Internet-Related MFC Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For information about Internet-related classes and functions, see: ## Global functions diff --git a/docs/mfc/internet-security-cpp.md b/docs/mfc/internet-security-cpp.md index c66886c7db5..8aed9355989 100644 --- a/docs/mfc/internet-security-cpp.md +++ b/docs/mfc/internet-security-cpp.md @@ -3,10 +3,12 @@ description: "Learn more about: Internet Security (C++)" title: "Internet Security (C++)" ms.date: "11/04/2016" helpviewer_keywords: ["code signing [MFC], Internet security", "sandboxing [MFC]", "digital signatures [MFC], Internet security", "code signing [MFC]", "Web application security [MFC]", "code access security [MFC], Internet security considerations", "security [MFC]", "security [MFC], Internet", "Internet applications [MFC], security", "Web application security [MFC], Internet security approaches"] -ms.assetid: bf0da697-81bc-41f0-83fa-d7f82ed83df8 --- # Internet Security (C++) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Code safety is a major issue for developers and for users of Internet applications. There are risks: malicious code, code that has been tampered with, and code from unknown sites or authors. There are two basic approaches to security when developing for the Internet. The first is called "sandboxing." In this approach, an application is restricted to a particular set of APIs, and excluded from potentially dangerous ones such as file I/O where a program could destroy data on a user's computer. The second is implemented using digital signatures. This approach is referred to as "shrinkwrap" for the Internet. Code is verified and signed using private key/public key technology. Before the code is run, its digital signature is verified to ensure that the code is from a known authenticated source, and that the code has not been altered since it has been signed. diff --git a/docs/mfc/interpreting-user-input-through-a-view.md b/docs/mfc/interpreting-user-input-through-a-view.md index 6e1086bbe15..190fcef5aef 100644 --- a/docs/mfc/interpreting-user-input-through-a-view.md +++ b/docs/mfc/interpreting-user-input-through-a-view.md @@ -3,11 +3,13 @@ description: "Learn more about: Interpreting User Input Through a View" title: "Interpreting User Input Through a View" ms.date: "11/04/2016" helpviewer_keywords: ["interpreting user input through views [MFC]", "views [MFC], user interface and input", "input [MFC], view class [MFC]", "CView class [MFC], interpreting user input", "user input [MFC], interpreting through view class [MFC]"] -ms.assetid: f0302a70-661f-4781-8fe7-78f082bef2a5 ms.topic: concept-article --- # Interpreting User Input Through a View +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Other member functions of the view handle and interpret all user input. You will usually define message-handler member functions in your view class to process: - Windows [messages](messages.md) generated by mouse and keyboard actions. diff --git a/docs/mfc/isolation-of-the-mfc-common-controls-library.md b/docs/mfc/isolation-of-the-mfc-common-controls-library.md index 9f038e52807..7fac241cdb5 100644 --- a/docs/mfc/isolation-of-the-mfc-common-controls-library.md +++ b/docs/mfc/isolation-of-the-mfc-common-controls-library.md @@ -3,10 +3,12 @@ description: "Learn more about: Isolation of the MFC Common Controls Library" title: "Isolation of the MFC Common Controls Library" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, Common Controls library"] -ms.assetid: 7471e6f0-49b0-47f7-86e7-8d6bc3541694 --- # Isolation of the MFC Common Controls Library +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Common Controls library is now isolated within MFC, allowing different modules (such as user DLLs) to use different versions of the Common Controls library by specifying the version in their manifests. An MFC application (or user code called by MFC) makes calls to Common Controls library APIs through wrapper functions named `Afx`*FunctionName*, where *FunctionName* is the name of a Common Controls API. Those wrapper functions are defined in afxcomctl32.h and afxcomctl32.inl. diff --git a/docs/mfc/keyboard-and-mouse-customization.md b/docs/mfc/keyboard-and-mouse-customization.md index 9e1e28242fb..749fbb102eb 100644 --- a/docs/mfc/keyboard-and-mouse-customization.md +++ b/docs/mfc/keyboard-and-mouse-customization.md @@ -3,10 +3,12 @@ description: "Learn more about: Keyboard and Mouse Customization" title: "Keyboard and Mouse Customization" ms.date: "11/19/2018" helpviewer_keywords: ["customizations [MFC], keyboard and mouse (MFC Extensions)", "keyboard and mouse customizations (MFC Extensions)"] -ms.assetid: 1f789f1b-5f2e-4b11-b974-e3e2a2e49d82 --- # Keyboard and Mouse Customization +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC allows the user of your application to customize how it handles keyboard and mouse input. The user can customize keyboard input by assigning keyboard shortcuts to commands. The user can also customize the mouse input by selecting the command that should be executed when the user double-clicks inside specific windows of the application. This topic explains how to customize the input for your application. In the **Customization** dialog box, the user can change the custom controls for the mouse and the keyboard. To display this dialog box, the user points to **Customize** on the **View** menu and then clicks **Toolbars and Docking**. In the dialog box, the user clicks either the **Keyboard** tab or the **Mouse** tab. diff --git a/docs/mfc/life-cycle-of-a-dialog-box.md b/docs/mfc/life-cycle-of-a-dialog-box.md index f178c1f0676..38d347f2d30 100644 --- a/docs/mfc/life-cycle-of-a-dialog-box.md +++ b/docs/mfc/life-cycle-of-a-dialog-box.md @@ -3,11 +3,13 @@ description: "Learn more about: Working with Dialog Boxes in MFC" title: "Working with Dialog Boxes in MFC" ms.date: "09/27/2019" helpviewer_keywords: ["dialog boxes [MFC], life cycle", "modal dialog boxes [MFC], life cycle", "modeless dialog boxes [MFC], life cycle", "MFC dialog boxes [MFC], life cycle", "life cycle of dialog boxes [MFC]"] -ms.assetid: e16fd78e-238d-4f31-8c9d-8564f3953bd9 ms.topic: concept-article --- # Working with Dialog Boxes in MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + During the life cycle of a dialog box, the user invokes the dialog box, typically inside a command handler that creates and initializes the dialog object, the user interacts with the dialog box, then dialog box closes. For modal dialog boxes, your handler gathers any data the user entered once the dialog box closes. Since the dialog object exists after its dialog window has closed, you can simply use the member variables of your dialog class to extract the data. diff --git a/docs/mfc/list-control-and-list-view.md b/docs/mfc/list-control-and-list-view.md index 80c769cd219..20e0d4b2792 100644 --- a/docs/mfc/list-control-and-list-view.md +++ b/docs/mfc/list-control-and-list-view.md @@ -3,10 +3,12 @@ description: "Learn more about: List Control and List View" title: "List Control and List View" ms.date: "11/04/2016" helpviewer_keywords: ["CListView class [MFC], and CListCtrl", "views [MFC], list and list control", "CListCtrl class [MFC], and CListView", "list views [MFC]", "list controls [MFC], List view"] -ms.assetid: 7aee1c48-b158-4399-be0b-be366993665e --- # List Control and List View +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For convenience, MFC encapsulates the list control in two ways. You can use list controls: - Directly, by embedding a [CListCtrl](reference/clistctrl-class.md) object in a dialog class. diff --git a/docs/mfc/list-items-and-image-lists.md b/docs/mfc/list-items-and-image-lists.md index 27c772c67c3..9c6bf25f89a 100644 --- a/docs/mfc/list-items-and-image-lists.md +++ b/docs/mfc/list-items-and-image-lists.md @@ -3,10 +3,12 @@ description: "Learn more about: List Items and Image Lists" title: "List Items and Image Lists" ms.date: "11/04/2016" helpviewer_keywords: ["CImageList class [MFC], and list items", "image lists [MFC], list items", "CListCtrl class [MFC], image lists", "list items [MFC], image lists"] -ms.assetid: 317d095f-f978-47da-acb6-7bfe7dd3bc69 --- # List Items and Image Lists +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An "item" in a list control ([CListCtrl](reference/clistctrl-class.md)) consists of an icon, a label, and possibly other information (in "subitems"). The icons for list control items are contained in image lists. One image list contains full-sized icons used in icon view. A second, optional, image list contains smaller versions of the same icons for use in other views of the control. A third optional list contains "state" images, such as check boxes, for display in front of the small icons in certain views. A fourth optional list contains images that are displayed in individual header items of the list control. diff --git a/docs/mfc/making-and-using-controls.md b/docs/mfc/making-and-using-controls.md index 8cba3f0fffc..e09293f71d9 100644 --- a/docs/mfc/making-and-using-controls.md +++ b/docs/mfc/making-and-using-controls.md @@ -3,11 +3,13 @@ description: "Learn more about: Making and Using Controls" title: "Making and Using Controls" ms.date: "11/04/2016" helpviewer_keywords: ["controls [MFC], creating for dialog boxes", "Windows common controls [MFC], about common controls", "common controls [MFC], about common controls"] -ms.assetid: a252acad-3cc0-440e-bbc6-43eaaf8cb7bb ms.topic: concept-article --- # Making and Using Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You make most controls for dialog boxes in the Visual Studio [dialog editor](../windows/dialog-editor.md). But you can also create controls in any dialog box or window. ## What do you want to know more about diff --git a/docs/mfc/making-owner-drawn-header-controls.md b/docs/mfc/making-owner-drawn-header-controls.md index 68a3e251f9d..e57f2484f92 100644 --- a/docs/mfc/making-owner-drawn-header-controls.md +++ b/docs/mfc/making-owner-drawn-header-controls.md @@ -3,11 +3,13 @@ description: "Learn more about: Making Owner-Drawn Header Controls" title: "Making Owner-Drawn Header Controls" ms.date: "11/04/2016" helpviewer_keywords: ["header controls [MFC], owner-drawn", "drawing [MFC], header controls", "CHeaderCtrl class [MFC], making owner-drawn", "controls [MFC], header", "owner-drawn header controls [MFC]"] -ms.assetid: 455c113b-e8d0-400c-8690-dbb92cba0d05 ms.topic: concept-article --- # Making Owner-Drawn Header Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can define individual items of a header control ([CHeaderCtrl](reference/cheaderctrl-class.md)) to be owner-drawn items. For more information, see [Owner-Drawn Header Controls](/windows/win32/Controls/header-controls) in the Windows SDK. ## See also diff --git a/docs/mfc/making-owner-drawn-tabs.md b/docs/mfc/making-owner-drawn-tabs.md index f3421ab838c..31d9bdfbc57 100644 --- a/docs/mfc/making-owner-drawn-tabs.md +++ b/docs/mfc/making-owner-drawn-tabs.md @@ -3,11 +3,13 @@ description: "Learn more about: Making Owner-Drawn Tabs" title: "Making Owner-Drawn Tabs" ms.date: "11/04/2016" helpviewer_keywords: ["owner-drawn tabs [MFC]", "tabs [MFC], owner-drawn", "CTabCtrl class [MFC], owner-drawn tabs", "drawing [MFC], tabs"] -ms.assetid: 11af2926-41d7-47e3-9eec-c595283f6371 ms.topic: concept-article --- # Making Owner-Drawn Tabs +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can define individual items of a tab control ([CTabCtrl](reference/ctabctrl-class.md)) to be owner-drawn items. For more information, see [Owner-Drawn Tabs](/windows/win32/Controls/tab-controls) in the Windows SDK. ## See also diff --git a/docs/mfc/managing-data-with-document-data-variables.md b/docs/mfc/managing-data-with-document-data-variables.md index be73faee851..0375973e8be 100644 --- a/docs/mfc/managing-data-with-document-data-variables.md +++ b/docs/mfc/managing-data-with-document-data-variables.md @@ -3,11 +3,13 @@ description: "Learn more about: Managing Data with Document Data Variables" title: "Managing Data with Document Data Variables" ms.date: "11/04/2016" helpviewer_keywords: ["documents [MFC], data storage", "friend classes [MFC]", "classes [MFC], friend", "data [MFC]", "data [MFC], documents", "collection classes [MFC], used by document object", "document data [MFC]", "member variables [MFC], document class [MFC]"] -ms.assetid: e70b87f4-8c30-49e5-8986-521c2ff91704 ms.topic: concept-article --- # Managing Data with Document Data Variables +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implement your document's data as member variables of your document class. For example, the Scribble program declares a data member of type `CObList` — a linked list that stores pointers to `CObject` objects. This list is used to store arrays of points that make up a freehand line drawing. How you implement your document's member data depends on the nature of your application. To help you out, MFC supplies a group of "collection classes" — arrays, lists, and maps (dictionaries), including collections based on C++ templates — along with classes that encapsulate a variety of common data types such as `CString`, `CRect`, `CPoint`, `CSize`, and `CTime`. For more information about these classes, see the [Class Library Overview](class-library-overview.md) in the *MFC Reference*. diff --git a/docs/mfc/managing-mdi-child-windows.md b/docs/mfc/managing-mdi-child-windows.md index beca42fc238..f0426cace5d 100644 --- a/docs/mfc/managing-mdi-child-windows.md +++ b/docs/mfc/managing-mdi-child-windows.md @@ -4,11 +4,13 @@ title: "Managing MDI Child Windows" ms.date: "11/19/2018" f1_keywords: ["MDICLIENT"] helpviewer_keywords: ["MDI [MFC], child windows", "child windows [MFC], and MDICLIENT window", "MDICLIENT window [MFC]", "windows [MFC], MDI", "frame windows [MFC], MDI child windows", "child windows [MFC]", "MDI [MFC], frame windows"] -ms.assetid: 1828d96e-a561-48ae-a661-ba9701de6bee ms.topic: concept-article --- # Managing MDI Child Windows +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MDI main frame windows (one per application) contain a special child window called the MDICLIENT window. The MDICLIENT window manages the client area of the main frame window, and itself has child windows: the document windows, derived from `CMDIChildWnd`. Because the document windows are frame windows themselves (MDI child windows), they can also have their own children. In all of these cases, the parent window manages its child windows and forwards some commands to them. In an MDI frame window, the frame window manages the MDICLIENT window, repositioning it in conjunction with control bars. The MDICLIENT window, in turn, manages all MDI child frame windows. The following figure shows the relationship between an MDI frame window, its MDICLIENT window, and its child document frame windows. diff --git a/docs/mfc/managing-menus-control-bars-and-accelerators.md b/docs/mfc/managing-menus-control-bars-and-accelerators.md index 329610e659a..4830ec1e010 100644 --- a/docs/mfc/managing-menus-control-bars-and-accelerators.md +++ b/docs/mfc/managing-menus-control-bars-and-accelerators.md @@ -3,11 +3,13 @@ description: "Learn more about: Managing Menus, Control Bars, and Accelerators" title: "Managing Menus, Control Bars, and Accelerators" ms.date: "11/04/2016" helpviewer_keywords: ["MDI [MFC], frame windows", "control bars [MFC], updating in frame windows", "menus [MFC], updating as context changes", "user interface objects [MFC], updating", "accelerator tables [MFC]", "sharing menus [MFC]", "updating user-interface objects [MFC]", "frame windows [MFC], updating", "status bars [MFC], updating"] -ms.assetid: 97ca1997-06df-4373-b023-4f7ecd81047b ms.topic: concept-article --- # Managing Menus, Control Bars, and Accelerators +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The frame window manages updating user-interface objects, including menus, toolbar buttons, the status bar, and accelerators. It also manages sharing the menu bar in MDI applications. ## Managing Menus diff --git a/docs/mfc/managing-the-current-view.md b/docs/mfc/managing-the-current-view.md index ecd15ad51ec..59c278a4d13 100644 --- a/docs/mfc/managing-the-current-view.md +++ b/docs/mfc/managing-the-current-view.md @@ -3,11 +3,13 @@ description: "Learn more about: Managing the Current View" title: "Managing the Current View" ms.date: "11/04/2016" helpviewer_keywords: ["views [MFC], and OnActivateView method [MFC]", "views [MFC], deactivating", "views [MFC], activating", "frame windows [MFC], current view", "OnActivateView method [MFC]", "views [MFC], current", "deactivating views [MFC]", "current view in frame window [MFC]"] -ms.assetid: 0a1cc22d-d646-4536-9ad2-3cb6d7092e4a ms.topic: concept-article --- # Managing the Current View +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As part of the default implementation of frame windows, a frame window keeps track of a currently active view. If the frame window contains more than one view, as for example in a splitter window, the current view is the most recent view in use. The active view is independent of the active window in Windows or the current input focus. When the active view changes, the framework notifies the current view by calling its [OnActivateView](reference/cview-class.md#onactivateview) member function. You can tell whether the view is being activated or deactivated by examining `OnActivateView`'s *bActivate* parameter. By default, `OnActivateView` sets the focus to the current view on activation. You can override `OnActivateView` to perform any special processing when the view is deactivated or reactivated. For example, you might want to provide special visual cues to distinguish the active view from other, inactive views. diff --git a/docs/mfc/managing-the-state-data-of-mfc-modules.md b/docs/mfc/managing-the-state-data-of-mfc-modules.md index 37c7bead209..31871e32640 100644 --- a/docs/mfc/managing-the-state-data-of-mfc-modules.md +++ b/docs/mfc/managing-the-state-data-of-mfc-modules.md @@ -3,11 +3,13 @@ description: "Learn more about: Managing the State Data of MFC Modules" title: "Managing the State Data of MFC Modules" ms.date: "11/19/2018" helpviewer_keywords: ["global state [MFC]", "data management [MFC], MFC modules", "window procedure entry points [MFC]", "exported interfaces and global state [MFC]", "module states [MFC], saving and restoring", "data management [MFC]", "MFC, managing state data", "multiple modules [MFC]", "module state restored [MFC]"] -ms.assetid: 81889c11-0101-4a66-ab3c-f81cf199e1bb ms.topic: concept-article --- # Managing the State Data of MFC Modules +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article discusses the state data of MFC modules and how this state is updated when the flow of execution (the path code takes through an application when executing) enters and leaves a module. Switching module states with the AFX_MANAGE_STATE and METHOD_PROLOGUE macros is also discussed. > [!NOTE] diff --git a/docs/mfc/manipulating-image-lists.md b/docs/mfc/manipulating-image-lists.md index 6d92caf6d4f..2f2e7a0d6a3 100644 --- a/docs/mfc/manipulating-image-lists.md +++ b/docs/mfc/manipulating-image-lists.md @@ -3,11 +3,13 @@ description: "Learn more about: Manipulating Image Lists" title: "Manipulating Image Lists" ms.date: "11/04/2016" helpviewer_keywords: ["image lists [MFC], manipulating", "lists [MFC], image", "CImageList class [MFC], manipulating"] -ms.assetid: 043418f8-077e-4dce-b8bb-2b7b0d7b5156 ms.topic: concept-article --- # Manipulating Image Lists +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The [Replace](reference/cimagelist-class.md#replace) member function replaces an image in an image list ([CImageList](reference/cimagelist-class.md)) with a new image. This function is also useful if you need to dynamically increase the number of images in an image list object. The [SetImageCount](reference/cimagelist-class.md#setimagecount) function dynamically changes the number of images stored in the image list. If you increase the size of the image list, call `Replace` to add images to the new image slots. If you decrease the size of the image list, the images beyond the new size are freed. The [Remove](reference/cimagelist-class.md#remove) member function removes an image from an image list. The [Copy](reference/cimagelist-class.md#copy) member function can copy or swap images within an image list. This function allows you to indicate whether the source image should be copied to the destination index or the source and destination images should be swapped. diff --git a/docs/mfc/manipulating-menus-during-program-execution.md b/docs/mfc/manipulating-menus-during-program-execution.md index 830ad98dea8..272a383e298 100644 --- a/docs/mfc/manipulating-menus-during-program-execution.md +++ b/docs/mfc/manipulating-menus-during-program-execution.md @@ -3,11 +3,13 @@ description: "Learn more about: Manipulating Menus During Program Execution" title: "Manipulating Menus During Program Execution" ms.date: "11/04/2016" helpviewer_keywords: ["menus [MFC], editing during execution", "menus during execution [MFC], deleting", "CMenu class [MFC], manipulating menus during execution", "menus [MFC], manipulating during execution", "menus during execution"] -ms.assetid: 722c7c00-4be2-4967-877d-f96aaa604396 ms.topic: concept-article --- # Manipulating Menus During Program Execution +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Use class `CMenu` to manipulate menus and menu items on the fly. `CMenu` encapsulates a Windows HMENU handle and supplies member functions for working with menus. See the overview for class [CMenu](reference/cmenu-class.md) for details. diff --git a/docs/mfc/manipulating-the-progress-control.md b/docs/mfc/manipulating-the-progress-control.md index 364d495b2c7..ab103759dc1 100644 --- a/docs/mfc/manipulating-the-progress-control.md +++ b/docs/mfc/manipulating-the-progress-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Manipulating the Progress Control" title: "Manipulating the Progress Control" ms.date: "11/04/2016" helpviewer_keywords: ["CProgressCtrl class [MFC], working with", "progress controls [MFC], manipulating", "CProgressCtrl class [MFC], manipulating", "controlling progress controls [MFC]", "CProgressCtrl class [MFC], using"] -ms.assetid: 9af561d1-980b-4003-a6da-ff79be15bf23 ms.topic: how-to --- # Manipulating the Progress Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + There are three ways to change the current position of a progress control ([CProgressCtrl](reference/cprogressctrl-class.md)). - The position can be changed by a preset increment amount. diff --git a/docs/mfc/manipulating-the-tool-tip-control.md b/docs/mfc/manipulating-the-tool-tip-control.md index a368c8f8955..ea50fc35323 100644 --- a/docs/mfc/manipulating-the-tool-tip-control.md +++ b/docs/mfc/manipulating-the-tool-tip-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Manipulating the Tool Tip Control" title: "Manipulating the Tool Tip Control" ms.date: "11/04/2016" helpviewer_keywords: ["CToolTipCtrl class [MFC], manipulating tool tip attributes", "tool tips [MFC], attributes"] -ms.assetid: 3600afe5-712a-4b56-8456-96e85fe879af ms.topic: concept-article --- # Manipulating the Tool Tip Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Class `CToolTipCtrl` provides a group of member functions that control the various attributes of the `CToolTipCtrl` object and the tool tip window. The initial, pop-up, and reshow durations for the tool tip windows can be set and retrieved with calls to [GetDelayTime](reference/ctooltipctrl-class.md#getdelaytime) and [SetDelayTime](reference/ctooltipctrl-class.md#setdelaytime). diff --git a/docs/mfc/mapi-samples.md b/docs/mfc/mapi-samples.md index cf952047442..87c7684e026 100644 --- a/docs/mfc/mapi-samples.md +++ b/docs/mfc/mapi-samples.md @@ -3,10 +3,12 @@ description: "Learn more about: MAPI Samples" title: "MAPI Samples" ms.date: "11/04/2016" helpviewer_keywords: ["MAPI, MFC", "sample applications [MFC], MAPI"] -ms.assetid: 3af3085c-8c8f-47c9-a966-b82311a20bf6 --- # MAPI Samples +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + See the following sample programs that illustrate Microsoft Messaging Application Programming Interface (MAPI) functionality: - [NPP](../overview/visual-cpp-samples.md) diff --git a/docs/mfc/mapi-support-in-mfc.md b/docs/mfc/mapi-support-in-mfc.md index 10329e6fd07..b241e223917 100644 --- a/docs/mfc/mapi-support-in-mfc.md +++ b/docs/mfc/mapi-support-in-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: MAPI Support in MFC" title: "MAPI Support in MFC" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, MAPI support", "MAPI support in MFC", "CDocument class [MFC], and MAPI", "OnUpdateFileSendMail method [MFC]", "MAPI, MFC", "OnFileSendMail method [MFC]"] -ms.assetid: cafbecb1-0427-4077-b4b8-159bae5b49b8 --- # MAPI Support in MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC supplies support for a subset of the Microsoft Messaging Application Program Interface (MAPI) in class `CDocument`. Specifically, `CDocument` has member functions that determine whether mail support is present on the end-user's machine and, if so, enable a Send Mail command whose standard command ID is ID_FILE_SEND_MAIL. The MFC handler function for this command allows the user to send a document through electronic mail. > [!TIP] diff --git a/docs/mfc/mapi.md b/docs/mfc/mapi.md index 70bc8612b7c..55667986b9f 100644 --- a/docs/mfc/mapi.md +++ b/docs/mfc/mapi.md @@ -3,10 +3,12 @@ description: "Learn more about: MAPI" title: "MAPI" ms.date: "11/04/2016" helpviewer_keywords: ["messaging [MFC], client applications", "enabling applications for MAPI [MFC]", "MAPI support in MFC", "e-mail [MFC], enabling", "mail [MFC], enabling your application", "MAPI, MFC", "enabling applications for mail [MFC]"] -ms.assetid: 193449f7-b131-4ab0-9301-8d4f6cd1e7c4 --- # MAPI +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes the Microsoft Messaging Application Programming Interface (MAPI) for client message application developers. MFC supplies support for a subset of MAPI in class `CDocument` but does not encapsulate the entire API. For more information, see [MAPI Support in MFC](mapi-support-in-mfc.md). MAPI is a set of functions that mail-enabled and mail-aware applications use to create, manipulate, transfer, and store mail messages. It gives application developers the tools to define the purpose and content of mail messages and gives them flexibility in their management of stored mail messages. MAPI also provides a common interface that application developers can use to create mail-enabled and mail-aware applications independent of the underlying messaging system. diff --git a/docs/mfc/mapping-messages.md b/docs/mfc/mapping-messages.md index 2f59ba6b40e..ebd242a4c18 100644 --- a/docs/mfc/mapping-messages.md +++ b/docs/mfc/mapping-messages.md @@ -3,11 +3,13 @@ description: "Learn more about: Mapping Messages" title: "Mapping Messages" ms.date: "11/04/2016" helpviewer_keywords: ["message maps [MFC], about message maps", "mappings [MFC], commands", "commands [MFC], mapping", "command mapping [MFC]", "message handling [MFC], connecting to handler functions", "commands [MFC], connecting to handler functions", "mappings [MFC], messages", "messages [MFC], mapping"] -ms.assetid: 996f0652-0698-4b8c-b893-cdaa836d9d0f ms.topic: concept-article --- # Mapping Messages +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Each framework class that can receive messages or commands has its own "message map." The framework uses message maps to connect messages and commands to their handler functions. Any class derived from class `CCmdTarget` can have a message map. Other articles explain message maps in detail and describe how to use them. In spite of the name "message map," message maps handle both messages and commands — all three categories of messages listed in [Message Categories](message-categories.md). diff --git a/docs/mfc/mapping-windows-messages-to-your-class.md b/docs/mfc/mapping-windows-messages-to-your-class.md index f34a3d5da29..115e49cc2d1 100644 --- a/docs/mfc/mapping-windows-messages-to-your-class.md +++ b/docs/mfc/mapping-windows-messages-to-your-class.md @@ -3,11 +3,13 @@ description: "Learn more about: Mapping Windows Messages to Your Class" title: "Mapping Windows Messages to Your Class" ms.date: "09/06/2019" helpviewer_keywords: ["MFC dialog boxes [MFC], Windows messages", "message maps [MFC], in dialog class", "Windows messages [MFC], mapping in dialog classes", "messages to dialog class [MFC]", "mappings [MFC], messages to dialog class [MFC]", "message maps [MFC], mapping Windows messages to classes", "messages to dialog class [MFC], mapping", "Class Wizard [MFC]"] -ms.assetid: a4c6fd1f-1d33-47c9-baa0-001755746d6d ms.topic: concept-article --- # Mapping Windows Messages to Your Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If you need your dialog box to handle Windows messages, override the appropriate handler functions. To do so, choose the **Class View** tab in **Solution Explorer**, right click on the class that represents the dialog box, and choose [Class Wizard](reference/mfc-class-wizard.md). Use the wizard to [map the messages](reference/mapping-messages-to-functions.md) to the dialog class. This writes a message-map entry for each message and adds the message-handler member functions to the class. Use the code editor to write code in the message handlers. You can also override member functions of [CDialog](reference/cdialog-class.md) and its base classes, especially [CWnd](reference/cwnd-class.md). diff --git a/docs/mfc/mdi-tabbed-groups.md b/docs/mfc/mdi-tabbed-groups.md index c4b435c6ecf..ad7e811bbfb 100644 --- a/docs/mfc/mdi-tabbed-groups.md +++ b/docs/mfc/mdi-tabbed-groups.md @@ -3,10 +3,12 @@ description: "Learn more about: MDI Tabbed Groups" title: "MDI Tabbed Groups" ms.date: "11/04/2016" helpviewer_keywords: ["mdi [MFC], tabbed groups", "tabbed grous [MFC]"] -ms.assetid: 0a464f36-39b7-4e68-8b67-ec175de28377 --- # MDI Tabbed Groups +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The multiple document interface (MDI) tabbed groups feature enables multiple document interface (MDI) applications to display one or more tabbed windows (or groups of tabbed windows, known as *tabbed groups*) in the MDI client area. The tabbed windows can be aligned vertically or horizontally. If an application hosts more than one MDI tabbed group, the groups are separated by splitters. ## Features diff --git a/docs/mfc/memory-management-examples.md b/docs/mfc/memory-management-examples.md index c76643dce83..398fc193af1 100644 --- a/docs/mfc/memory-management-examples.md +++ b/docs/mfc/memory-management-examples.md @@ -3,10 +3,12 @@ description: "Learn more about: Memory Management: Examples" title: "Memory Management: Examples" ms.date: "11/04/2016" helpviewer_keywords: ["objects [MFC], memory allocation", "data structures [MFC]", "arrays [MFC], allocating resources", "objects [MFC], allocating memory", "data structures [MFC], allocating memory", "examples [MFC], memory allocation", "heap allocation [MFC], examples", "memory allocation [MFC], arrays", "MFC, memory management", "struct memory allocation [MFC]", "types [MFC], memory allocation", "memory allocation [MFC], objects", "memory allocation [MFC], examples", "arrays [MFC], memory management", "frame allocation [MFC]", "memory allocation [MFC], data structures"] -ms.assetid: f10240f8-b698-4c83-9288-97a54318930b --- # Memory Management: Examples +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes how MFC performs frame allocations and heap allocations for each of the three typical kinds of memory allocations: - [An array of bytes](#_core_allocation_of_an_array_of_bytes) diff --git a/docs/mfc/memory-management-frame-allocation.md b/docs/mfc/memory-management-frame-allocation.md index dc3cfa5d7a0..0bb639b12c0 100644 --- a/docs/mfc/memory-management-frame-allocation.md +++ b/docs/mfc/memory-management-frame-allocation.md @@ -3,10 +3,12 @@ description: "Learn more about: Memory Management: Frame Allocation" title: "Memory Management: Frame Allocation" ms.date: "11/04/2016" helpviewer_keywords: ["memory leaks [MFC], frame allocation", "memory [MFC], detecting leaks", "memory [MFC], reclaiming", "memory allocation [MFC], frames", "frame variables [MFC], automatic deletion of", "scope [MFC], frame variables", "heap allocation [MFC], vs. frame allocation", "variables [MFC], frame variables", "memory leaks [MFC], detecting", "memory, releasing [MFC]", "stack frames [MFC]", "memory leaks [MFC], allocating objects on the frame", "detecting memory leaks [MFC]", "frame allocation [MFC]", "frame variables [MFC]"] -ms.assetid: 945a211a-6f4f-4679-bb6a-b0f2a0d4a6c1 --- # Memory Management: Frame Allocation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Allocation on the frame takes its name from the "stack frame" that is set up whenever a function is called. The stack frame is an area of memory that temporarily holds the arguments to the function as well as any variables that are defined local to the function. Frame variables are often called "automatic" variables because the compiler automatically allocates the space for them. There are two key characteristics of frame allocations. First, when you define a local variable, enough space is allocated on the stack frame to hold the entire variable, even if it is a large array or data structure. Second, frame variables are automatically deleted when they go out of scope: diff --git a/docs/mfc/memory-management-heap-allocation.md b/docs/mfc/memory-management-heap-allocation.md index 4d0992fab1f..d9fe3cec85e 100644 --- a/docs/mfc/memory-management-heap-allocation.md +++ b/docs/mfc/memory-management-heap-allocation.md @@ -3,10 +3,12 @@ description: "Learn more about: Memory Management: Heap Allocation" title: "Memory Management: Heap Allocation" ms.date: "11/04/2016" helpviewer_keywords: ["memory [MFC], detecting leaks", "delete operator [MFC], using with debug MFC", "heap allocation [MFC], described", "memory allocation [MFC], heap memory", "memory leaks [MFC], detecting", "new operator [MFC], using with debug MFC", "heap allocation [MFC]", "detecting memory leaks [MFC]"] -ms.assetid: a5d949c6-1b79-476e-9c66-513a558203d9 --- # Memory Management: Heap Allocation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The heap is reserved for the memory allocation needs of the program. It is an area apart from the program code and the stack. Typical C programs use the functions **malloc** and **free** to allocate and deallocate heap memory. The Debug version of MFC provides modified versions of the C++ built-in operators **`new`** and **`delete`** to allocate and deallocate objects in heap memory. When you use **`new`** and **`delete`** instead of **malloc** and **free**, you are able to take advantage of the class library's memory-management debugging enhancements, which can be useful in detecting memory leaks. When you build your program with the Release version of MFC, the standard versions of the **`new`** and **`delete`** operators provide an efficient way to allocate and deallocate memory (the Release version of MFC does not provide modified versions of these operators). diff --git a/docs/mfc/memory-management-resizable-memory-blocks.md b/docs/mfc/memory-management-resizable-memory-blocks.md index 7223f4180ad..6ac07cbf65b 100644 --- a/docs/mfc/memory-management-resizable-memory-blocks.md +++ b/docs/mfc/memory-management-resizable-memory-blocks.md @@ -3,10 +3,12 @@ description: "Learn more about: Memory Management: Resizable Memory Blocks" title: "Memory Management: Resizable Memory Blocks" ms.date: "11/04/2016" helpviewer_keywords: ["memory blocks [MFC], resizable", "memory [MFC], corruption", "memory allocation [MFC], memory block size", "memory blocks [MFC], allocating", "blocks [MFC], memory allocation", "resizable memory blocks [MFC]"] -ms.assetid: f0efe6f4-a3ed-4541-9195-51ec1291967a --- # Memory Management: Resizable Memory Blocks +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The **`new`** and **`delete`** operators, described in the article [Memory Management: Examples](memory-management-examples.md), are good for allocating and deallocating fixed-size memory blocks and objects. Occasionally, your application may need resizable memory blocks. You must use the standard C run-time library functions [malloc](../c-runtime-library/reference/malloc.md), [realloc](../c-runtime-library/reference/realloc.md), and [free](../c-runtime-library/reference/free.md) to manage resizable memory blocks on the heap. > [!IMPORTANT] diff --git a/docs/mfc/memory-management.md b/docs/mfc/memory-management.md index 89b67110a51..7e8e4f29121 100644 --- a/docs/mfc/memory-management.md +++ b/docs/mfc/memory-management.md @@ -3,10 +3,12 @@ description: "Learn more about: Memory Management" title: "Memory Management" ms.date: "11/04/2016" helpviewer_keywords: ["memory [MFC]", "MFC, memory management", "memory allocation [MFC]", "memory [MFC], managing", "memory allocation [MFC], MFC"] -ms.assetid: 934ac81b-d630-4232-88e5-ea74f7187987 --- # Memory Management +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This group of articles describes how to take advantage of the general-purpose services of the Microsoft Foundation Class Library (MFC) related to memory management. Memory allocation can be divided into two main categories: frame allocations and heap allocations. One main difference between the two allocation techniques is that with frame allocation you typically work with the actual memory block itself, while with heap allocation you are always given a pointer to the memory block. Another major difference between the two schemes is that frame objects are automatically deleted, while heap objects must be explicitly deleted by the programmer. diff --git a/docs/mfc/menu-sample-list.md b/docs/mfc/menu-sample-list.md index 5c9810c792f..5cccff447db 100644 --- a/docs/mfc/menu-sample-list.md +++ b/docs/mfc/menu-sample-list.md @@ -3,10 +3,12 @@ description: "Learn more about: Menu Sample List" title: "Menu Sample List" ms.date: "11/04/2016" helpviewer_keywords: ["sample applications [MFC], menus"] -ms.assetid: 6d89c723-03d6-474e-8ca5-e98f93bd41cc --- # Menu Sample List +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + See the following sample programs that illustrate creating, editing, and updating menus: *MDI Sample: Enable and Disable Menu Items* diff --git a/docs/mfc/menus-and-resources-container-additions.md b/docs/mfc/menus-and-resources-container-additions.md index 7ece3400513..09b822aea90 100644 --- a/docs/mfc/menus-and-resources-container-additions.md +++ b/docs/mfc/menus-and-resources-container-additions.md @@ -4,10 +4,12 @@ title: "Menus and Resources: Container Additions" ms.date: "11/04/2016" f1_keywords: ["IDP_OLE_INIT_FAILED", "IDP_FAILED_TO_CREATE", "VK_ESCAPE"] helpviewer_keywords: ["application accelerator table [MFC]", "VK_ESCAPE key [MFC]", "IDP_FAILED_TO_CREATE macro [MFC]", "visual editing, application menus and resources", "OLE containers [MFC], menus and resources", "accelerator tables [MFC], container applications", "IDP_OLE_INIT_FAILED macro [MFC]", "CONTAIN tutorial [MFC]", "Links menu item [MFC]"] -ms.assetid: 425448be-8ca0-412e-909a-a3a9ce845288 --- # Menus and Resources: Container Additions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the changes that need to be made to the menus and other resources in a visual editing container application. In container applications, two types of changes need to be made: modifications to existing resources to support OLE visual editing and addition of new resources used for in-place activation. If you use the application wizard to create your container application, these steps will be done for you, but they may require some customization. diff --git a/docs/mfc/menus-and-resources-menu-merging.md b/docs/mfc/menus-and-resources-menu-merging.md index b418a729ab0..523cbbb818e 100644 --- a/docs/mfc/menus-and-resources-menu-merging.md +++ b/docs/mfc/menus-and-resources-menu-merging.md @@ -3,10 +3,12 @@ description: "Learn more about: Menus and Resources: Menu Merging" title: "Menus and Resources: Menu Merging" ms.date: "11/04/2016" helpviewer_keywords: ["status bars [MFC], OLE document applications", "visual editing [MFC], application menus and resources", "coordinating menu layouts [MFC]", "OLE containers [MFC], menus and resources", "toolbars [MFC], OLE document applications", "merging toolbar and status bar [MFC]", "menus [MFC], OLE document applications"] -ms.assetid: 80b6bb17-d830-4122-83f0-651fc112d4d1 --- # Menus and Resources: Menu Merging +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article details the steps necessary for OLE document applications to handle visual editing and in-place activation properly. In-place activation poses a challenge for both container and server (component) applications. The user remains in the same frame window (within the context of the container document) but is actually running another application (the server). This requires coordination between the resources of the container and server applications. Topics covered in this article include: diff --git a/docs/mfc/menus-and-resources-ole.md b/docs/mfc/menus-and-resources-ole.md index 8cc71f8bc8a..577625c40ba 100644 --- a/docs/mfc/menus-and-resources-ole.md +++ b/docs/mfc/menus-and-resources-ole.md @@ -3,10 +3,12 @@ description: "Learn more about: Menus and Resources (OLE)" title: "Menus and Resources (OLE)" ms.date: "11/04/2016" helpviewer_keywords: ["OLE visual editing servers [MFC]", "status bars [MFC], OLE document applications", "visual editing [MFC], application menus and resources", "string tables [MFC], visual editing applications", "OLE containers [MFC], menus and resources", "OLE applications [MFC], menus and resources", "OLE server applications [MFC], menus and resources", "toolbars [MFC], OLE document applications", "string editing [MFC], visual editing applications", "server applications [MFC], OLE menus and resources", "applications [OLE], menus and resources", "menus [MFC], OLE document applications", "in-place activation [MFC], OLE menus and resources", "containers [MFC], OLE container applications", "OLE menus and resources [MFC]"] -ms.assetid: 52bfa086-7d3d-466f-94c7-c7061f3bdb3a --- # Menus and Resources (OLE) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This group of articles explains the use of menus and resources in MFC OLE document applications. OLE visual editing places additional requirements on the menu and other resources provided by OLE document applications because there are a number of modes in which both container and server (component) applications can be started and used. For example, a full-server application can run in any of these three modes: diff --git a/docs/mfc/menus-and-resources-server-additions.md b/docs/mfc/menus-and-resources-server-additions.md index dda5aca9ad4..0bdebe03ea2 100644 --- a/docs/mfc/menus-and-resources-server-additions.md +++ b/docs/mfc/menus-and-resources-server-additions.md @@ -3,10 +3,12 @@ description: "Learn more about: Menus and Resources: Server Additions" title: "Menus and Resources: Server Additions" ms.date: "11/04/2016" helpviewer_keywords: ["OLE visual editing servers [MFC]", "accelerator tables [MFC], server applications", "visual editing [MFC], application menus and resources", "server applications [MFC], accelerator table", "string tables [MFC], visual editing applications", "servers [MFC], menu additions", "resources [MFC], server applications", "OLE server applications [MFC], menus and resources", "string editing [MFC], visual editing applications", "IDP_OLE_INIT_FAILED macro [MFC]", "server applications [MFC], OLE menus and resources", "OLE initialization failure [MFC]"] -ms.assetid: 56ce9e8d-8f41-4db8-8dee-e8b0702d057c --- # Menus and Resources: Server Additions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the changes that need to be made to the menus and other resources in a visual editing server (component) application. A server application requires many additions to the menu structure and other resources because it can be started in one of three modes: stand alone, embedded, or in place. As described in the [Menus and Resources (OLE)](menus-and-resources-ole.md) article, there are a maximum of four sets of menus. All four are used for an MDI full-server application, while only three are used for a miniserver. The application wizard will create the menu layout necessary for the type of server you want. Some customization may be necessary. If you do not use the application wizard, you may want to look at HIERSVR.RC, the resource script for the MFC sample application [HIERSVR](../overview/visual-cpp-samples.md), to see how these changes are implemented. diff --git a/docs/mfc/menus-mfc.md b/docs/mfc/menus-mfc.md index 8bbd4098c79..c1abbae69f7 100644 --- a/docs/mfc/menus-mfc.md +++ b/docs/mfc/menus-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Menus (MFC)" title: "Menus (MFC)" ms.date: "11/04/2016" helpviewer_keywords: ["menus [MFC], updating as context changes", "menus [MFC], MFC resources for working with", "menus [MFC], manipulating during execution", "menus [MFC]"] -ms.assetid: 6a181495-47a9-4356-83fc-b89152d6cb4c --- # Menus (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC supplies two elements to help you work with menus: - Class [CMenu](reference/cmenu-class.md) for manipulating your program's menus at run time. Use the documentation for `CMenu` and the sample to learn how to use `CMenu` effectively. diff --git a/docs/mfc/message-categories.md b/docs/mfc/message-categories.md index 8f26f6242e0..ad100f126fb 100644 --- a/docs/mfc/message-categories.md +++ b/docs/mfc/message-categories.md @@ -3,11 +3,13 @@ description: "Learn more about: Message Categories" title: "Message Categories" ms.date: "11/04/2016" helpviewer_keywords: ["messages [MFC], categories", "control-notification messages [MFC]", "Windows messages [MFC], categories", "controls [MFC], notifications", "command messages [MFC]", "messages [MFC], Windows", "message handling [MFC], message types"] -ms.assetid: 68e1db75-9da6-4a4d-b2c2-dc4d59f8d87b ms.topic: how-to --- # Message Categories +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + What kinds of messages do you write handlers for There are three main categories: 1. Windows messages diff --git a/docs/mfc/message-handlers.md b/docs/mfc/message-handlers.md index 5e8c2495f70..60944d82359 100644 --- a/docs/mfc/message-handlers.md +++ b/docs/mfc/message-handlers.md @@ -3,10 +3,12 @@ description: "Learn more about: Message Handlers" title: "Message Handlers" ms.date: "11/04/2016" helpviewer_keywords: ["message handlers [MFC]", "command handling [MFC], message handlers", "handlers [MFC]", "message handling [MFC], message handler functions", "handlers [MFC], command", "handlers [MFC], message"] -ms.assetid: 51bc4e76-dbe3-4cc2-b026-3199d56b2fa9 --- # Message Handlers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In MFC, a dedicated *handler* function processes each separate message. Message-handler functions are member functions of a class. This documentation uses the terms *message-handler member function*, *message-handler function*, *message handler*, and *handler* interchangeably. Some kinds of message handlers are also called "command handlers." Writing message handlers accounts for a large proportion of your work in writing a framework application. This article family describes how the message-processing mechanism works. diff --git a/docs/mfc/message-handling-and-command-targets.md b/docs/mfc/message-handling-and-command-targets.md index b6f6fe862a7..f53661b8363 100644 --- a/docs/mfc/message-handling-and-command-targets.md +++ b/docs/mfc/message-handling-and-command-targets.md @@ -4,10 +4,12 @@ title: "Message Handling and Command Targets" ms.date: "11/04/2016" f1_keywords: ["IOleCommandTarget"] helpviewer_keywords: ["command targets [MFC]", "message handling [MFC], active documents", "IOleCommandTarget interface [MFC]", "command routing [MFC], command targets"] -ms.assetid: e45ce14c-e6b6-4262-8f3b-4e891e0ec2a3 --- # Message Handling and Command Targets +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The command dispatch interface `IOleCommandTarget` defines a simple and extensible mechanism to query and execute commands. This mechanism is simpler than Automation's `IDispatch` because it relies entirely on a standard set of commands; commands rarely have arguments, and no type information is involved (type safety is diminished for command arguments as well). In the command dispatch interface design, each command belongs to a "command group" which is itself identified with a **GUID**. Therefore, anyone can define a new group and define all the commands within that group without any need to coordinate with Microsoft or any other vendor. (This is essentially the same means of definition as a **dispinterface** plus **dispIDs** in Automation. There is overlap here, although this command routing mechanism is only for command routing and not for scripting/programmability on a large scale as Automation handles.) diff --git a/docs/mfc/message-handling-and-mapping.md b/docs/mfc/message-handling-and-mapping.md index bbbbaee3203..ee575c92be8 100644 --- a/docs/mfc/message-handling-and-mapping.md +++ b/docs/mfc/message-handling-and-mapping.md @@ -3,10 +3,12 @@ description: "Learn more about: Message Handling and Mapping" title: "Message Handling and Mapping" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, messages", "message handling [MFC]", "message maps [MFC]"] -ms.assetid: 62fe2a1b-944c-449d-a0f0-63c11ee0a3cb --- # Message Handling and Mapping +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article family describes how messages and commands are processed by the MFC framework and how you connect them to their handler functions. In traditional programs for Windows, Windows messages are handled in a large switch statement in a window procedure. MFC instead uses [message maps](message-categories.md) to map direct messages to distinct class member functions. Message maps are more efficient than virtual functions for this purpose, and they allow messages to be handled by the most appropriate C++ object — application, document, view, and so on. You can map a single message or a range of messages, command IDs, or control IDs. diff --git a/docs/mfc/message-sending-and-receiving.md b/docs/mfc/message-sending-and-receiving.md index 0aa04b4cd8e..95b7873283f 100644 --- a/docs/mfc/message-sending-and-receiving.md +++ b/docs/mfc/message-sending-and-receiving.md @@ -3,10 +3,12 @@ description: "Learn more about: Message Sending and Receiving" title: "Message Sending and Receiving" ms.date: "11/04/2016" helpviewer_keywords: ["Windows messages [MFC], handling in MFC", "control-notification messages [MFC]", "messages [MFC], receiving", "messages [MFC], MFC", "MFC, messages", "messages [MFC], sending"] -ms.assetid: 9ce189cb-b259-4c3b-b6f2-9cfbed18b98b --- # Message Sending and Receiving +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Consider the sending part of the process and how the framework responds. Most messages result from user interaction with the program. Commands are generated by mouse clicks in menu items or toolbar buttons or by accelerator keystrokes. The user also generates Windows messages by, for example, moving or resizing a window. Other Windows messages are sent when events such as program startup or termination occur, as windows get or lose the focus, and so on. Control-notification messages are generated by mouse clicks or other user interactions with a control, such as a button or list-box control in a dialog box. From ee86516c5a1f4a382e3dc939c2782c44dabadff3 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 20 Feb 2026 12:53:10 -0800 Subject: [PATCH 310/619] Batch 4: update files (#6253) --- docs/mfc/messages-and-commands-in-the-framework.md | 4 +++- docs/mfc/messages.md | 4 +++- docs/mfc/methods-of-creating-a-status-bar.md | 4 +++- docs/mfc/methods-of-creating-a-toolbar.md | 4 +++- docs/mfc/methods-of-creating-tool-tips.md | 4 +++- .../mfc-activex-controls-accessing-ambient-properties.md | 4 +++- ...-activex-controls-adding-another-custom-property-page.md | 4 +++- docs/mfc/mfc-activex-controls-adding-custom-events.md | 4 +++- docs/mfc/mfc-activex-controls-adding-custom-methods.md | 4 +++- docs/mfc/mfc-activex-controls-adding-custom-properties.md | 4 +++- ...ex-controls-adding-stock-events-to-an-activex-control.md | 4 +++- docs/mfc/mfc-activex-controls-adding-stock-methods.md | 4 +++- docs/mfc/mfc-activex-controls-adding-stock-properties.md | 4 +++- ...mfc-activex-controls-advanced-property-implementation.md | 4 +++- docs/mfc/mfc-activex-controls-advanced-topics.md | 4 +++- .../mfc-activex-controls-creating-an-automation-server.md | 4 +++- .../mfc-activex-controls-distributing-activex-controls.md | 4 +++- docs/mfc/mfc-activex-controls-events.md | 4 +++- .../mfc-activex-controls-licensing-an-activex-control.md | 4 +++- .../mfc-activex-controls-localizing-an-activex-control.md | 4 +++- docs/mfc/mfc-activex-controls-methods.md | 4 +++- docs/mfc/mfc-activex-controls-optimization.md | 4 +++- .../mfc/mfc-activex-controls-painting-an-activex-control.md | 4 +++- docs/mfc/mfc-activex-controls-properties.md | 4 +++- docs/mfc/mfc-activex-controls-property-pages.md | 4 +++- ...-activex-controls-returning-error-codes-from-a-method.md | 4 +++- docs/mfc/mfc-activex-controls-serializing.md | 4 +++- .../mfc-activex-controls-subclassing-a-windows-control.md | 4 +++- ...vex-controls-using-data-binding-in-an-activex-control.md | 4 +++- docs/mfc/mfc-activex-controls-using-fonts.md | 3 +++ ...activex-controls-using-pictures-in-an-activex-control.md | 4 +++- docs/mfc/mfc-activex-controls-using-stock-property-pages.md | 4 +++- docs/mfc/mfc-activex-controls.md | 4 +++- docs/mfc/mfc-and-atl.md | 6 ++++-- docs/mfc/mfc-application-architecture-classes.md | 3 +++ ...mfc-classes-for-creating-internet-client-applications.md | 4 +++- docs/mfc/mfc-com.md | 3 +++ docs/mfc/mfc-concepts.md | 3 +++ docs/mfc/mfc-desktop-applications.md | 4 +++- docs/mfc/mfc-internet-programming-basics.md | 4 +++- docs/mfc/mfc-internet-programming-tasks.md | 4 +++- docs/mfc/mfc-library-versions.md | 3 +++ docs/mfc/mfc-mbcs-dll-add-on.md | 3 +++ docs/mfc/mfc-technical-notes.md | 4 +++- docs/mfc/mfc-toolbar-implementation.md | 4 +++- docs/mfc/modal-and-modeless-dialog-boxes.md | 4 +++- docs/mfc/month-calendar-control-examples.md | 4 +++- docs/mfc/multipage-documents.md | 4 +++- docs/mfc/multiple-document-types-views-and-frame-windows.md | 4 +++- docs/mfc/notifications-from-a-rich-edit-control.md | 4 +++- docs/mfc/notifications-sent-by-animation-controls.md | 4 +++- docs/mfc/odbc-classes.md | 4 +++- docs/mfc/ole-automation-classes.md | 4 +++- docs/mfc/ole-background-containers-and-servers.md | 4 +++- docs/mfc/ole-background-implementation-strategies.md | 4 +++- docs/mfc/ole-background-linking-and-embedding.md | 4 +++- docs/mfc/ole-background-mfc-implementation.md | 4 +++- docs/mfc/ole-background.md | 4 +++- docs/mfc/ole-classes.md | 4 +++- docs/mfc/ole-common-dialog-classes.md | 4 +++- docs/mfc/ole-container-classes.md | 4 +++- docs/mfc/ole-control-classes.md | 4 +++- docs/mfc/ole-db-classes.md | 4 +++- docs/mfc/ole-drag-and-drop-and-data-transfer-classes.md | 4 +++- docs/mfc/ole-in-mfc.md | 4 +++- docs/mfc/ole-mfc.md | 4 +++- docs/mfc/ole-related-classes.md | 4 +++- docs/mfc/ole-server-classes.md | 4 +++- docs/mfc/on-update-command-ui-macro.md | 4 +++- docs/mfc/oncmdmsg-handler.md | 4 +++- docs/mfc/one-stage-and-two-stage-construction-of-objects.md | 4 +++- docs/mfc/onidle-member-function.md | 4 +++- docs/mfc/opening-files.md | 4 +++- docs/mfc/optimizing-control-drawing.md | 4 +++- docs/mfc/optimizing-persistence-and-initialization.md | 4 +++- docs/mfc/orchestrating-other-window-actions.md | 4 +++- docs/mfc/ordering-items-in-the-header-control.md | 4 +++- docs/mfc/output-device-context-classes.md | 4 +++- docs/mfc/overridable-cwinapp-member-functions.md | 4 +++- docs/mfc/overriding-the-standard-command-routing.md | 4 +++- docs/mfc/overview-of-the-rich-edit-control.md | 4 +++- docs/mfc/paragraph-formatting-in-rich-edit-controls.md | 4 +++- docs/mfc/prerequisites-for-internet-client-classes.md | 4 +++- docs/mfc/print-preview-architecture.md | 4 +++- docs/mfc/printing-and-print-preview.md | 4 +++- docs/mfc/printing-in-rich-edit-controls.md | 4 +++- docs/mfc/printing.md | 4 +++- docs/mfc/processing-header-control-notifications.md | 4 +++- .../processing-notification-messages-in-a-rebar-control.md | 4 +++- ...otification-messages-in-date-and-time-picker-controls.md | 4 +++- ...-notification-messages-in-extended-combo-box-controls.md | 4 +++- .../processing-notification-messages-in-list-controls.md | 4 +++- ...sing-notification-messages-in-month-calendar-controls.md | 4 +++- docs/mfc/processing-tab-control-notification-messages.md | 4 +++- docs/mfc/programmatic-printing.md | 4 +++- ...mming-activex-controls-in-a-activex-control-container.md | 4 +++- docs/mfc/property-sheets-and-property-pages-in-mfc.md | 4 +++- docs/mfc/property-sheets-and-property-pages-mfc.md | 4 +++- docs/mfc/property-sheets-as-wizards.md | 4 +++- docs/mfc/property-sheets-mfc.md | 4 +++- 100 files changed, 301 insertions(+), 95 deletions(-) diff --git a/docs/mfc/messages-and-commands-in-the-framework.md b/docs/mfc/messages-and-commands-in-the-framework.md index 9cb53a25e9f..023b2947a2e 100644 --- a/docs/mfc/messages-and-commands-in-the-framework.md +++ b/docs/mfc/messages-and-commands-in-the-framework.md @@ -3,10 +3,12 @@ description: "Learn more about: Messages and Commands in the Framework" title: "Messages and Commands in the Framework" ms.date: "11/04/2016" helpviewer_keywords: ["events [MFC], command routing in MFC", "event-driven programming [MFC]", "events [MFC], event-driven programming", "message-driven programming [MFC]"] -ms.assetid: d799ed8c-6a9f-4f05-be5d-29cb5bc6d185 --- # Messages and Commands in the Framework +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Applications written for Microsoft Windows are "message driven." In response to events such as mouse clicks, keystrokes, window movements, and so on, Windows sends messages to the proper window. Framework applications process Windows messages like any other application for Windows. But the framework also provides some enhancements that make processing messages easier, more maintainable, and better encapsulated. The following topics introduce the key terms used in the rest of the article family to discuss messages and commands: diff --git a/docs/mfc/messages.md b/docs/mfc/messages.md index 2d0f33dd300..13d244746fa 100644 --- a/docs/mfc/messages.md +++ b/docs/mfc/messages.md @@ -3,10 +3,12 @@ description: "Learn more about: Messages" title: "Messages" ms.date: "11/04/2016" helpviewer_keywords: ["messages, MFC", "messages [MFC]"] -ms.assetid: b1476310-a135-42ca-817c-444fb3675491 --- # Messages +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The message loop in the `Run` member function of class `CWinApp` retrieves queued messages generated by various events. For example, when the user clicks the mouse, Windows sends several mouse-related messages, such as WM_LBUTTONDOWN when the left mouse button is pressed and WM_LBUTTONUP when the left mouse button is released. The framework's implementation of the application message loop dispatches the message to the appropriate window. The important categories of messages are described in [Message Categories](message-categories.md). diff --git a/docs/mfc/methods-of-creating-a-status-bar.md b/docs/mfc/methods-of-creating-a-status-bar.md index 7d4e9bc4cf0..0eaad577a3f 100644 --- a/docs/mfc/methods-of-creating-a-status-bar.md +++ b/docs/mfc/methods-of-creating-a-status-bar.md @@ -3,10 +3,12 @@ description: "Learn more about: Methods of Creating a Status Bar" title: "Methods of Creating a Status Bar" ms.date: "11/04/2016" helpviewer_keywords: ["CStatusBar class [MFC], vs. CStatusBarCtrl", "methods [MFC], creating status bars", "CStatusBarCtrl class [MFC], vs. CStatusBar", "CStatusBarCtrl class [MFC], creating", "methods [MFC]", "status bars [MFC], creating"] -ms.assetid: 9aeaf290-7099-4762-a5ba-9c26705333c9 --- # Methods of Creating a Status Bar +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC provides two classes to create status bars: [CStatusBar](reference/cstatusbar-class.md) and [CStatusBarCtrl](reference/cstatusbarctrl-class.md) (which wraps the Windows common control API). `CStatusBar` provides all of the functionality of the status bar common control, it automatically interacts with menus and toolbars, and it handles many of the required common control settings and structures for you; however, your resulting executable usually will be larger than that created by using `CStatusBarCtrl`. `CStatusBarCtrl` usually results in a smaller executable, and you may prefer to use `CStatusBarCtrl` if you do not intend to integrate the status bar into the MFC architecture. If you plan to use `CStatusBarCtrl` and integrate the status bar into the MFC architecture, you must take additional care to communicate status bar control manipulations to MFC. This communication is not difficult; however, it is additional work that is unneeded when you use `CStatusBar`. diff --git a/docs/mfc/methods-of-creating-a-toolbar.md b/docs/mfc/methods-of-creating-a-toolbar.md index aca7ea41dc3..b3c940a3ae1 100644 --- a/docs/mfc/methods-of-creating-a-toolbar.md +++ b/docs/mfc/methods-of-creating-a-toolbar.md @@ -3,10 +3,12 @@ description: "Learn more about: Methods of Creating a Toolbar" title: "Methods of Creating a Toolbar" ms.date: "11/04/2016" helpviewer_keywords: ["CToolBarCtrl class [MFC], and CToolBar class [MFC]", "CToolBar class [MFC], creating toolbars", "MFC toolbars", "toolbar controls [MFC]", "toolbar controls [MFC], creating", "CToolBarCtrl class [MFC], creating toolbars"] -ms.assetid: f19d8d65-d49f-445c-abe8-d47d3e4101c8 --- # Methods of Creating a Toolbar +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC provides two classes to create toolbars: [CToolBar](reference/ctoolbar-class.md) and [CToolBarCtrl](reference/ctoolbarctrl-class.md) (which wraps the Windows common control API). `CToolBar` provides all of the functionality of the toolbar common control, and it handles many of the required common control settings and structures for you; however, your resulting executable usually will be larger than that created by using `CToolBarCtrl`. `CToolBarCtrl` usually results in a smaller executable, and you may prefer to use `CToolBarCtrl` if you do not intend to integrate the toolbar into the MFC architecture. If you plan to use `CToolBarCtrl` and integrate the toolbar into the MFC architecture, you must take additional care to communicate toolbar control manipulations to MFC. This communication is not difficult; however, it is additional work that is unneeded when you use `CToolBar`. diff --git a/docs/mfc/methods-of-creating-tool-tips.md b/docs/mfc/methods-of-creating-tool-tips.md index a51f80a85ad..7d3de35c5cd 100644 --- a/docs/mfc/methods-of-creating-tool-tips.md +++ b/docs/mfc/methods-of-creating-tool-tips.md @@ -3,10 +3,12 @@ description: "Learn more about: Methods of Creating Tool Tips" title: "Methods of Creating Tool Tips" ms.date: "11/04/2016" helpviewer_keywords: ["CToolTipCtrl class [MFC], creating tool tips", "tool tips [MFC], tool tip controls", "tool tips [MFC], creating"] -ms.assetid: b015e9f4-ddfb-49a4-a5a6-fa2d45e4d328 --- # Methods of Creating Tool Tips +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC provides three classes to create and manage the tool tip control: [CWnd](reference/cwnd-class.md), [CToolBarCtrl](reference/ctoolbarctrl-class.md), [CToolTipCtrl](reference/ctooltipctrl-class.md) and [CMFCToolTipCtrl](reference/cmfctooltipctrl-class.md). The tool tip member functions in these classes wrap the Windows common control API. Class `CToolBarCtrl` and class `CToolTipCtrl` are derived from class `CWnd`. `CWnd` provides four member functions to create and manage tool tips: [EnableToolTips](reference/cwnd-class.md#enabletooltips), [CancelToolTips](reference/cwnd-class.md#canceltooltips), [FilterToolTipMessage](reference/cwnd-class.md#filtertooltipmessage), and [OnToolHitTest](reference/cwnd-class.md#ontoolhittest). See these individual member functions for more information about how they implement tool tips. diff --git a/docs/mfc/mfc-activex-controls-accessing-ambient-properties.md b/docs/mfc/mfc-activex-controls-accessing-ambient-properties.md index 1d6babaf05f..613eacca7a6 100644 --- a/docs/mfc/mfc-activex-controls-accessing-ambient-properties.md +++ b/docs/mfc/mfc-activex-controls-accessing-ambient-properties.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Accessing Ambient Properti title: "MFC ActiveX Controls: Accessing Ambient Properties" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ActiveX controls [MFC], accessing ambient properties", "properties [MFC], accessing ambient"] -ms.assetid: fdc9db29-e6b0-45d2-a879-8bd60e2058a7 --- # MFC ActiveX Controls: Accessing Ambient Properties +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article discusses how an ActiveX control can access the ambient properties of its control container. A control can obtain information about its container by accessing the container's ambient properties. These properties expose visual characteristics, such as the container's background color, the current font used by the container, and operational characteristics, such as whether the container is currently in user mode or designer mode. A control can use ambient properties to tailor its appearance and behavior to the particular container in which it is embedded. However, a control should never assume that its container will support any particular ambient property. In fact, some containers may not support any ambient properties at all. In the absence of an ambient property, a control should assume a reasonable default value. diff --git a/docs/mfc/mfc-activex-controls-adding-another-custom-property-page.md b/docs/mfc/mfc-activex-controls-adding-another-custom-property-page.md index 7cac0772199..1cc40a9fbaf 100644 --- a/docs/mfc/mfc-activex-controls-adding-another-custom-property-page.md +++ b/docs/mfc/mfc-activex-controls-adding-another-custom-property-page.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Adding Another Custom Prop title: "MFC ActiveX Controls: Adding Another Custom Property Page" ms.date: "11/04/2016" helpviewer_keywords: ["property pages [MFC], MFC ActiveX controls", "custom property pages [MFC]", "ActiveX controls [MFC], property pages", "MFC ActiveX controls [MFC], property pages"] -ms.assetid: fcf7e119-9f29-41a9-908d-e9b1607e08af --- # MFC ActiveX Controls: Adding Another Custom Property Page +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Occasionally, an ActiveX control will have more properties than can reasonably fit on one property page. In this case, you can add property pages to the ActiveX control to display these properties. This article discusses adding new property pages to an ActiveX control that already has at least one property page. For more information on adding stock property pages (font, picture, or color), see the article [MFC ActiveX Controls: Using Stock Property Pages](mfc-activex-controls-using-stock-property-pages.md). diff --git a/docs/mfc/mfc-activex-controls-adding-custom-events.md b/docs/mfc/mfc-activex-controls-adding-custom-events.md index c89a3bcb620..034ada14256 100644 --- a/docs/mfc/mfc-activex-controls-adding-custom-events.md +++ b/docs/mfc/mfc-activex-controls-adding-custom-events.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Adding Custom Events" title: "MFC ActiveX Controls: Adding Custom Events" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ActiveX controls [MFC], events [MFC]", "EVENT_CUSTOM prefix [MFC]", "custom events [MFC], adding to ActiveX controls", "EVENT_CUSTOM macro [MFC]", "InCircle method [MFC]", "ClickIn event", "FireClickIn event", "COleControl class [MFC], custom events [MFC]", "Click event, custom events [MFC]", "events [MFC], ActiveX controls", "custom events [MFC]", "FireEvent method, adding custom events"] -ms.assetid: c584d053-1e34-47aa-958e-37d3e9b85892 --- # MFC ActiveX Controls: Adding Custom Events +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Custom events differ from stock events in that they are not automatically fired by class `COleControl`. A custom event recognizes a certain action, determined by the control developer, as an event. The event map entries for custom events are represented by the EVENT_CUSTOM macro. The following section implements a custom event for an ActiveX control project that was created using the ActiveX Control Wizard. ## Adding a Custom Event with the Add Event Wizard diff --git a/docs/mfc/mfc-activex-controls-adding-custom-methods.md b/docs/mfc/mfc-activex-controls-adding-custom-methods.md index 3886e34488c..a1b2c458c84 100644 --- a/docs/mfc/mfc-activex-controls-adding-custom-methods.md +++ b/docs/mfc/mfc-activex-controls-adding-custom-methods.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Adding Custom Methods" title: "MFC ActiveX Controls: Adding Custom Methods" ms.date: "09/12/2018" helpviewer_keywords: ["MFC ActiveX controls [MFC], methods", "PtInCircle custom method [MFC]"] -ms.assetid: 8f8dc344-44a0-4021-8db5-4cdd3d700e18 --- # MFC ActiveX Controls: Adding Custom Methods +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Custom methods differ from stock methods in that they are not already implemented by `COleControl`. You must supply the implementation for each custom method you add to your control. >[!IMPORTANT] diff --git a/docs/mfc/mfc-activex-controls-adding-custom-properties.md b/docs/mfc/mfc-activex-controls-adding-custom-properties.md index a14b72ef64c..f6f15299fde 100644 --- a/docs/mfc/mfc-activex-controls-adding-custom-properties.md +++ b/docs/mfc/mfc-activex-controls-adding-custom-properties.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Adding Custom Properties" title: "MFC ActiveX Controls: Adding Custom Properties" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ActiveX controls [MFC], properties", "properties [MFC], custom"] -ms.assetid: 85af5167-74c7-427b-b8f3-e0d7b73942e5 --- # MFC ActiveX Controls: Adding Custom Properties +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Custom properties differ from stock properties in that custom properties are not already implemented by the `COleControl` class. A custom property is used to expose a certain state or appearance of an ActiveX control to a programmer using the control. This article describes how to add a custom property to the ActiveX control using the Add Property Wizard and explains the resulting code modifications. Topics include: diff --git a/docs/mfc/mfc-activex-controls-adding-stock-events-to-an-activex-control.md b/docs/mfc/mfc-activex-controls-adding-stock-events-to-an-activex-control.md index 6199bcbffa9..ee97fd6f354 100644 --- a/docs/mfc/mfc-activex-controls-adding-stock-events-to-an-activex-control.md +++ b/docs/mfc/mfc-activex-controls-adding-stock-events-to-an-activex-control.md @@ -4,10 +4,12 @@ title: "MFC ActiveX Controls: Adding Stock Events to an ActiveX Control" ms.date: "11/04/2016" f1_keywords: ["EVENT__STOCK_ERROR", "EVENT__STOCK_READYSTATECHANGE", "ReadyStateChange", "EVENT__STOCK_MOUSEMOVE", "EVENT__STOCK_MOUSEUP", "EVENT__STOCK_DBLCLICK", "KeyPress", "EVENT__STOCK_KEYDOWN", "EVENT__STOCK", "EVENT__STOCK_MOUSEDOWN", "EVENT__STOCK_KEYPRESS", "EVENT__STOCK_CLICK", "EVENT__STOCK_KEYUP"] helpviewer_keywords: ["MFC ActiveX controls [MFC], events", "KeyPress event", "FireDblClick event", "FireMouseDown event", "events [MFC], stock", "FireKeyPress event", "EVENT_STOCK_MOUSEMOVE event", "EVENT_STOCK_CLICK event", "FireClick event", "FireKeyUp event", "FireMouseUp event", "EVENT_STOCK_ERROREVENT event", "EVENT_STOCK_KEYDOWN event", "EVENT_STOCK_MOUSEDOWN event", "EVENT_STOCK_KEYPRESS macro [MFC]", "EVENT_STOCK_KEYUP event", "EVENT_STOCK_DBLCLICK event", "FireError event", "FireKeyDown event", "ReadyStateChange event", "EVENT_STOCK_MOUSEUP event", "FireMouseMove event", "EVENT_STOCK prefix", "EVENT_STOCK_READYSTATECHANGE event", "EVENT_STOCK_KEYPRESS event"] -ms.assetid: 3eeadc67-4b3d-4444-8caa-53054073988a --- # MFC ActiveX Controls: Adding Stock Events to an ActiveX Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Stock events differ from custom events in that they are automatically fired by class [COleControl](reference/colecontrol-class.md). `COleControl` contains predefined member functions that fire events resulting from common actions. Some common actions implemented by `COleControl` include single- and double-clicks on the control, keyboard events, and changes in the state of the mouse buttons. Event map entries for stock events are always preceded by the EVENT_STOCK prefix. ## Stock Events Supported by the Add Event Wizard diff --git a/docs/mfc/mfc-activex-controls-adding-stock-methods.md b/docs/mfc/mfc-activex-controls-adding-stock-methods.md index 7764a1a974e..408b9945866 100644 --- a/docs/mfc/mfc-activex-controls-adding-stock-methods.md +++ b/docs/mfc/mfc-activex-controls-adding-stock-methods.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Adding Stock Methods" title: "MFC ActiveX Controls: Adding Stock Methods" ms.date: "09/12/2018" helpviewer_keywords: ["MFC ActiveX controls [MFC], stock methods", "MFC ActiveX controls [MFC], methods", "DoClick method [MFC]"] -ms.assetid: bc4fad78-cabd-4cc0-a798-464b1a682f0b --- # MFC ActiveX Controls: Adding Stock Methods +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A stock method differs from a custom method in that it is already implemented by class [COleControl](reference/colecontrol-class.md). For example, `COleControl` contains a predefined member function that supports the Refresh method for your control. The dispatch map entry for this stock method is DISP_STOCKFUNC_REFRESH. >[!IMPORTANT] diff --git a/docs/mfc/mfc-activex-controls-adding-stock-properties.md b/docs/mfc/mfc-activex-controls-adding-stock-properties.md index 8d70bbf4929..574cf734613 100644 --- a/docs/mfc/mfc-activex-controls-adding-stock-properties.md +++ b/docs/mfc/mfc-activex-controls-adding-stock-properties.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Adding Stock Properties" title: "MFC ActiveX Controls: Adding Stock Properties" ms.date: "11/04/2016" helpviewer_keywords: ["BackColor property [MFC]", "properties [MFC], adding stock", "ForeColor property [MFC]", "MFC ActiveX controls [MFC], properties", "foreground colors, ActiveX controls", "foreground colors [MFC]"] -ms.assetid: 8b98c8c5-5b69-4366-87bf-0e61e6668ecb --- # MFC ActiveX Controls: Adding Stock Properties +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Stock properties differ from custom properties in that they are already implemented by the class `COleControl`. `COleControl` contains predefined member functions that support common properties for the control. Some common properties include the control's caption and the foreground and background colors. For information on other stock properties, see [Stock Properties Supported by the Add Property Wizard](#_core_stock_properties_supported_by_classwizard) later in this article. The dispatch map entries for stock properties are always prefixed by DISP_STOCKPROP. This article describes how to add a stock property (in this case, Caption) to an ActiveX control using the Add Property Wizard and explains the resulting code modifications. Topics include: diff --git a/docs/mfc/mfc-activex-controls-advanced-property-implementation.md b/docs/mfc/mfc-activex-controls-advanced-property-implementation.md index 03227889216..d9fd955fb6f 100644 --- a/docs/mfc/mfc-activex-controls-advanced-property-implementation.md +++ b/docs/mfc/mfc-activex-controls-advanced-property-implementation.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Advanced Property Implemen title: "MFC ActiveX Controls: Advanced Property Implementation" ms.date: "09/12/2018" helpviewer_keywords: ["MFC ActiveX controls [MFC], error codes", "properties [MFC], ActiveX controls", "MFC ActiveX controls [MFC], properties"] -ms.assetid: ec2e6759-5a8e-41d8-a275-99af8ff6f32e --- # MFC ActiveX Controls: Advanced Property Implementation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes topics related to implementing advanced properties in an ActiveX control. >[!IMPORTANT] diff --git a/docs/mfc/mfc-activex-controls-advanced-topics.md b/docs/mfc/mfc-activex-controls-advanced-topics.md index ecf01fac6b0..4cf57c98d20 100644 --- a/docs/mfc/mfc-activex-controls-advanced-topics.md +++ b/docs/mfc/mfc-activex-controls-advanced-topics.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Advanced Topics" title: "MFC ActiveX Controls: Advanced Topics" ms.date: "09/12/2018" helpviewer_keywords: ["MFC ActiveX controls [MFC], error codes", "MFC ActiveX controls [MFC], accessing invisible dialog controls", "MFC ActiveX controls [MFC], advanced topics", "FireError method [MFC]", "MFC ActiveX controls [MFC], database classes", "MFC ActiveX controls [MFC], special keys", "PreTranslateMessage method [MFC]", "MFC ActiveX controls [MFC], parameterized property", "ThrowError method [MFC]"] -ms.assetid: e9e34abb-8e2d-461e-bb9c-a1aec5dcecbd --- # MFC ActiveX Controls: Advanced Topics +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article covers advanced topics related to developing ActiveX controls. These include: - [Using Database Classes in ActiveX Controls](#_core_using_database_classes_in_activex_controls) diff --git a/docs/mfc/mfc-activex-controls-creating-an-automation-server.md b/docs/mfc/mfc-activex-controls-creating-an-automation-server.md index 732f948b9d1..a3a405fd699 100644 --- a/docs/mfc/mfc-activex-controls-creating-an-automation-server.md +++ b/docs/mfc/mfc-activex-controls-creating-an-automation-server.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Creating an Automation Ser title: "MFC ActiveX Controls: Creating an Automation Server" ms.date: "11/04/2016" helpviewer_keywords: ["Automation servers [MFC], MFC ActiveX controls", "ActiveX controls [MFC], Automation server", "MFC ActiveX controls [MFC], Automation server"] -ms.assetid: e0c24ed2-d61c-49ad-a4fa-4e1098d1d39b --- # MFC ActiveX Controls: Creating an Automation Server +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can develop an MFC ActiveX control as an Automation server for the purpose of programmatically embedding that control in another application and calling methods in the control from the application. Such a control would still be available to be hosted in an ActiveX control container. ### To create a control as an Automation server diff --git a/docs/mfc/mfc-activex-controls-distributing-activex-controls.md b/docs/mfc/mfc-activex-controls-distributing-activex-controls.md index a82f3d13a4c..e1a83f2a393 100644 --- a/docs/mfc/mfc-activex-controls-distributing-activex-controls.md +++ b/docs/mfc/mfc-activex-controls-distributing-activex-controls.md @@ -4,10 +4,12 @@ title: "MFC ActiveX Controls: Distributing ActiveX Controls" ms.date: "09/12/2018" f1_keywords: ["GetWindowsDirectory", "GetSystemDirectory"] helpviewer_keywords: ["MFC ActiveX controls [MFC], ANSI or Unicode versions", "RegSvr32.exe", "MFC ActiveX controls [MFC], distributing", "distributing MFC ActiveX controls", "redistributable files, MFC ActiveX controls", "GetSystemDirectory method [MFC]", "registering ActiveX controls", "MSVCRT40.dll", "registry [MFC], registering controls", "LoadLibrary method, registering ActiveX controls", "MFC40U.DLL", "MFC40.DLL", "GetWindowsDirectory method [MFC]", "installing ActiveX controls", "GetProcAddress method, registering ActiveX controls", "MFC ActiveX controls [MFC], installing", "MFC ActiveX controls [MFC], registering", "registering controls", "OLEPRO32.DLL"] -ms.assetid: cd70ac9b-f613-4879-9e81-6381fdfda2a1 --- # MFC ActiveX Controls: Distributing ActiveX Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article discusses several issues related to redistributing ActiveX controls: - [ANSI or Unicode Control Versions](#_core_ansi_or_unicode_control_versions) diff --git a/docs/mfc/mfc-activex-controls-events.md b/docs/mfc/mfc-activex-controls-events.md index 6a6162a9272..0861f1f6ae8 100644 --- a/docs/mfc/mfc-activex-controls-events.md +++ b/docs/mfc/mfc-activex-controls-events.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Events" title: "MFC ActiveX Controls: Events" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ActiveX controls [MFC], events", "notifications [MFC], notifying containers of events", "custom events [MFC], adding to ActiveX controls", "events [MFC], mapping", "COleControl class [MFC], handling of events", "mappings [MFC], events", "stock events [MFC]", "container events [MFC]", "events [MFC], ActiveX controls", "OLE events [MFC]"] -ms.assetid: e1e57e0c-206b-4923-a0b5-682c26564f74 --- # MFC ActiveX Controls: Events +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + ActiveX controls use events to notify a container that something has happened to the control. Common examples of events include clicks on the control, data entered using the keyboard, and changes in the control's state. When these actions occur, the control fires an event to alert the container. Events are also called messages. diff --git a/docs/mfc/mfc-activex-controls-licensing-an-activex-control.md b/docs/mfc/mfc-activex-controls-licensing-an-activex-control.md index 45eb20a4fa8..c2241ffecc3 100644 --- a/docs/mfc/mfc-activex-controls-licensing-an-activex-control.md +++ b/docs/mfc/mfc-activex-controls-licensing-an-activex-control.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Licensing an ActiveX Contr title: "MFC ActiveX Controls: Licensing an ActiveX Control" ms.date: "11/19/2018" helpviewer_keywords: ["COleObjectFactory class [MFC], licensing controls", "MFC ActiveX controls [MFC], licensing", "VerifyLicenseKey method [MFC]", "VerifyUserLicense method [MFC]", "GetLicenseKey method [MFC]", "licensing ActiveX controls"] -ms.assetid: cacd9e45-701a-4a1f-8f1f-b0b39f6ac303 --- # MFC ActiveX Controls: Licensing an ActiveX Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Licensing support, an optional feature of ActiveX controls, allows you to control who is able to use or distribute the control. (For additional discussion of licensing issues, see Licensing Issues in [Upgrading an Existing ActiveX Control](upgrading-an-existing-activex-control.md).) > [!IMPORTANT] diff --git a/docs/mfc/mfc-activex-controls-localizing-an-activex-control.md b/docs/mfc/mfc-activex-controls-localizing-an-activex-control.md index 7e25d900478..b226aba58f7 100644 --- a/docs/mfc/mfc-activex-controls-localizing-an-activex-control.md +++ b/docs/mfc/mfc-activex-controls-localizing-an-activex-control.md @@ -4,10 +4,12 @@ title: "MFC ActiveX Controls: Localizing an ActiveX Control" ms.date: "09/12/2018" f1_keywords: ["LocaleID", "AfxOleRegisterTypeLib"] helpviewer_keywords: ["localization, ActiveX controls", "MFC ActiveX controls [MFC], localizing", "LocaleID ambient property [MFC]", "LOCALIZE sample [MFC]"] -ms.assetid: a44b839a-c652-4ec5-b824-04392708a5f9 --- # MFC ActiveX Controls: Localizing an ActiveX Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article discusses procedures for localizing ActiveX control interfaces. >[!IMPORTANT] diff --git a/docs/mfc/mfc-activex-controls-methods.md b/docs/mfc/mfc-activex-controls-methods.md index a4719418053..6c38e501a25 100644 --- a/docs/mfc/mfc-activex-controls-methods.md +++ b/docs/mfc/mfc-activex-controls-methods.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Methods" title: "MFC ActiveX Controls: Methods" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ActiveX controls [MFC], methods"] -ms.assetid: e20271de-6ffa-4ba0-848b-bafe6c9e510c --- # MFC ActiveX Controls: Methods +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An ActiveX control fires events to communicate between itself and its control container. A container can also communicate with a control by means of methods and properties. Methods are also called functions. Methods and properties provide an exported interface for use by other applications, such as Automation clients and ActiveX control containers. For more information on ActiveX control properties, see the article [MFC ActiveX Controls: Properties](mfc-activex-controls-properties.md). diff --git a/docs/mfc/mfc-activex-controls-optimization.md b/docs/mfc/mfc-activex-controls-optimization.md index a93fa67f5ef..eae4188a105 100644 --- a/docs/mfc/mfc-activex-controls-optimization.md +++ b/docs/mfc/mfc-activex-controls-optimization.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Optimization" title: "MFC ActiveX Controls: Optimization" ms.date: "09/12/2018" helpviewer_keywords: ["MFC ActiveX controls [MFC], windowless", "flicker-free ActiveX controls", "MFC ActiveX controls [MFC], mouse interaction", "device contexts, unclipped for MFC ActiveX controls", "MFC ActiveX controls [MFC], optimizing", "performance, ActiveX controls", "optimization, ActiveX controls", "MFC ActiveX controls [MFC], flicker-free", "windowless MFC ActiveX controls", "MFC ActiveX controls [MFC], active/inactive state", "optimizing performance, ActiveX controls"] -ms.assetid: 8b11f26a-190d-469b-b594-5336094a0109 --- # MFC ActiveX Controls: Optimization +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains techniques you can use to optimize your ActiveX controls for better performance. >[!IMPORTANT] diff --git a/docs/mfc/mfc-activex-controls-painting-an-activex-control.md b/docs/mfc/mfc-activex-controls-painting-an-activex-control.md index 6a5ae990337..2e850615b59 100644 --- a/docs/mfc/mfc-activex-controls-painting-an-activex-control.md +++ b/docs/mfc/mfc-activex-controls-painting-an-activex-control.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Painting an ActiveX Contro title: "MFC ActiveX Controls: Painting an ActiveX Control" ms.date: "09/12/2018" helpviewer_keywords: ["MFC ActiveX controls [MFC], painting", "MFC ActiveX controls [MFC], optimizing"] -ms.assetid: 25fff9c0-4dab-4704-aaae-8dfb1065dee3 --- # MFC ActiveX Controls: Painting an ActiveX Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes the ActiveX control painting process and how you can alter paint code to optimize the process. (See [Optimizing Control Drawing](optimizing-control-drawing.md) for techniques on how to optimize drawing by not having controls individually restore previously selected GDI objects. After all of the controls have been drawn, the container can automatically restore the original objects.) >[!IMPORTANT] diff --git a/docs/mfc/mfc-activex-controls-properties.md b/docs/mfc/mfc-activex-controls-properties.md index 6779f249c19..839b34e745b 100644 --- a/docs/mfc/mfc-activex-controls-properties.md +++ b/docs/mfc/mfc-activex-controls-properties.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Properties" title: "MFC ActiveX Controls: Properties" ms.date: "11/04/2016" helpviewer_keywords: ["properties [MFC], ActiveX controls", "MFC ActiveX controls [MFC], properties", "properties [MFC]"] -ms.assetid: b678a53c-0d9e-476f-8aa0-23b80baaba46 --- # MFC ActiveX Controls: Properties +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An ActiveX control fires events to communicate with its control container. The container, in return, uses methods and properties to communicate with the control. Methods and properties are similar in use and purpose, respectively, to member functions and member variables of a C++ class. Properties are data members of the ActiveX control that are exposed to any container. Properties provide an interface for applications that contain ActiveX controls, such as Automation clients and ActiveX control containers. Properties are also called attributes. diff --git a/docs/mfc/mfc-activex-controls-property-pages.md b/docs/mfc/mfc-activex-controls-property-pages.md index 3fcbd9e8f72..e1514eb2968 100644 --- a/docs/mfc/mfc-activex-controls-property-pages.md +++ b/docs/mfc/mfc-activex-controls-property-pages.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ActiveX Controls: Property Pages" title: "MFC ActiveX Controls: Property Pages" ms.date: "11/19/2018" helpviewer_keywords: ["DDP_ functions [MFC]", "MFC ActiveX controls [MFC], properties", "property pages [MFC], MFC ActiveX controls", "DoDataExchange method [MFC]", "OLEIVERB_PROPERTIES", "CPropertyPageDialog class [MFC]", "MFC ActiveX controls [MFC], property pages"] -ms.assetid: 1506f87a-9fd6-4505-8380-0dbc9636230e --- # MFC ActiveX Controls: Property Pages +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Property pages allow an ActiveX control user to view and change ActiveX control properties. These properties are accessed by invoking a control properties dialog box, which contains one or more property pages that provide a customized, graphical interface for viewing and editing the control properties. >[!IMPORTANT] diff --git a/docs/mfc/mfc-activex-controls-returning-error-codes-from-a-method.md b/docs/mfc/mfc-activex-controls-returning-error-codes-from-a-method.md index e657b702672..7aa30785a26 100644 --- a/docs/mfc/mfc-activex-controls-returning-error-codes-from-a-method.md +++ b/docs/mfc/mfc-activex-controls-returning-error-codes-from-a-method.md @@ -3,11 +3,13 @@ description: "Learn more about: MFC ActiveX Controls: Returning Error Codes From title: "MFC ActiveX Controls: Returning Error Codes From a Method" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ActiveX controls [MFC], error codes", "SetNotSupported method, using", "errors [MFC], ActiveX control error codes", "GetNotSupported method [MFC]", "FireError method [MFC]", "SCODE, MFC ActiveX controls", "ThrowError method [MFC]"] -ms.assetid: 771fb9c9-2413-4dcc-b386-7bc4c4adeafd ms.topic: troubleshooting-error-codes --- # MFC ActiveX Controls: Returning Error Codes From a Method +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes how to return error codes from an ActiveX control method. To indicate that an error has occurred within a method, you should use the [COleControl::ThrowError](reference/colecontrol-class.md#throwerror) member function, which takes an SCODE (status code) as a parameter. You can use a predefined SCODE or define one of your own. diff --git a/docs/mfc/mfc-activex-controls-serializing.md b/docs/mfc/mfc-activex-controls-serializing.md index 95877d684b8..3cc9f82efc1 100644 --- a/docs/mfc/mfc-activex-controls-serializing.md +++ b/docs/mfc/mfc-activex-controls-serializing.md @@ -4,10 +4,12 @@ title: "MFC ActiveX Controls: Serializing" ms.date: "09/12/2018" f1_keywords: ["_wVerMinor", "DoPropExchange", "_wVerMajor"] helpviewer_keywords: ["MFC ActiveX controls [MFC], version support", "wVerMinor global constant [MFC]", "GetVersion method [MFC]", "ExchangeVersion method [MFC]", "MFC ActiveX controls [MFC], serializing", "DoPropExchange method [MFC]", "versioning ActiveX controls", "wVerMajor global constant"] -ms.assetid: 9d57c290-dd8c-4853-b552-6f17f15ebedd --- # MFC ActiveX Controls: Serializing +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article discusses how to serialize an ActiveX control. Serialization is the process of reading from or writing to a persistent storage medium, such as a disk file. The Microsoft Foundation Class (MFC) Library provides built-in support for serialization in class `CObject`. `COleControl` extends this support to ActiveX controls through the use of a property exchange mechanism. >[!IMPORTANT] diff --git a/docs/mfc/mfc-activex-controls-subclassing-a-windows-control.md b/docs/mfc/mfc-activex-controls-subclassing-a-windows-control.md index 8a871b2d5f9..04ee60c3058 100644 --- a/docs/mfc/mfc-activex-controls-subclassing-a-windows-control.md +++ b/docs/mfc/mfc-activex-controls-subclassing-a-windows-control.md @@ -4,10 +4,12 @@ title: "MFC ActiveX Controls: Subclassing a Windows Control" ms.date: "09/12/2018" f1_keywords: ["precreatewindow", "IsSubclassed"] helpviewer_keywords: ["OnDraw method, MFC ActiveX controls", "subclassing", "DoSuperclassPaint method [MFC]", "subclassing Windows controls", "subclassing, Windows controls", "reflected messages, in ActiveX controls", "PreCreateWindow method, overriding", "MFC ActiveX controls [MFC], subclassed controls", "MFC ActiveX controls [MFC], creating", "IsSubclassed method [MFC]"] -ms.assetid: 3236d4de-401f-49b7-918d-c84559ecc426 --- # MFC ActiveX Controls: Subclassing a Windows Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes the process for subclassing a common Windows control to create an ActiveX control. Subclassing an existing Windows control is a quick way to develop an ActiveX control. The new control will have the abilities of the subclassed Windows control, such as painting and responding to mouse clicks. The MFC ActiveX controls sample [BUTTON](../overview/visual-cpp-samples.md) is an example of subclassing a Windows control. >[!IMPORTANT] diff --git a/docs/mfc/mfc-activex-controls-using-data-binding-in-an-activex-control.md b/docs/mfc/mfc-activex-controls-using-data-binding-in-an-activex-control.md index b979bc1a9a8..95155d02712 100644 --- a/docs/mfc/mfc-activex-controls-using-data-binding-in-an-activex-control.md +++ b/docs/mfc/mfc-activex-controls-using-data-binding-in-an-activex-control.md @@ -4,10 +4,12 @@ title: "MFC ActiveX Controls: Using Data Binding in an ActiveX Control" ms.date: "11/19/2018" f1_keywords: ["bindable", "requestedit", "defaultbind", "displaybind", "dispid"] helpviewer_keywords: ["MFC ActiveX controls [MFC], data binding", "data binding [MFC], MFC ActiveX controls", "data-bound controls [MFC], MFC ActiveX controls", "controls [MFC], data binding", "bound controls [MFC], MFC ActiveX"] -ms.assetid: 476b590a-bf2a-498a-81b7-dd476bd346f1 --- # MFC ActiveX Controls: Using Data Binding in an ActiveX Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + One of the more powerful uses of ActiveX controls is data binding, which allows a property of the control to bind with a specific field in a database. When a user modifies data in this bound property, the control notifies the database and requests that the record field be updated. The database then notifies the control of the success or failure of the request. >[!IMPORTANT] diff --git a/docs/mfc/mfc-activex-controls-using-fonts.md b/docs/mfc/mfc-activex-controls-using-fonts.md index dc16f5d4526..1848b68f49d 100644 --- a/docs/mfc/mfc-activex-controls-using-fonts.md +++ b/docs/mfc/mfc-activex-controls-using-fonts.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["notifications [MFC], MFC ActiveX controls fonts", "OnDraw --- # MFC ActiveX Controls: Using Fonts +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If your ActiveX control displays text, you can allow the control user to change the text appearance by changing a font property. Font properties are implemented as font objects and can be one of two types: stock or custom. Stock Font properties are preimplemented font properties that you can add using the Add Property Wizard. Custom Font properties are not preimplemented and the control developer determines the property's behavior and usage. This article covers the following topics: diff --git a/docs/mfc/mfc-activex-controls-using-pictures-in-an-activex-control.md b/docs/mfc/mfc-activex-controls-using-pictures-in-an-activex-control.md index 6703e6d5431..6f3f143caa9 100644 --- a/docs/mfc/mfc-activex-controls-using-pictures-in-an-activex-control.md +++ b/docs/mfc/mfc-activex-controls-using-pictures-in-an-activex-control.md @@ -4,10 +4,12 @@ title: "MFC ActiveX Controls: Using Pictures in an ActiveX Control" ms.date: "11/04/2016" f1_keywords: ["LPPICTUREDISP"] helpviewer_keywords: ["OnDraw method, MFC ActiveX controls", "MFC ActiveX controls [MFC], pictures", "OnDraw method [MFC]", "OnResetState method [MFC]", "CLSID_CPicturePropPage [MFC]"] -ms.assetid: 2e49735c-21b9-4442-bb3d-c82ef258eec9 --- # MFC ActiveX Controls: Using Pictures in an ActiveX Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes the common Picture type and how to implement it in your ActiveX control. Topics include: - [Overview of Custom Picture Properties](#_core_overview_of_custom_picture_properties) diff --git a/docs/mfc/mfc-activex-controls-using-stock-property-pages.md b/docs/mfc/mfc-activex-controls-using-stock-property-pages.md index 475aab0f011..0ce6947ce86 100644 --- a/docs/mfc/mfc-activex-controls-using-stock-property-pages.md +++ b/docs/mfc/mfc-activex-controls-using-stock-property-pages.md @@ -4,10 +4,12 @@ title: "MFC ActiveX Controls: Using Stock Property Pages" ms.date: "09/12/2018" f1_keywords: ["CLSID_CPicturePropPage", "CLSID_CColorPropPage", "CLSID_CFontPropPage"] helpviewer_keywords: ["picture stock property pages [MFC]", "CLSID_CFontPropPage [MFC]", "color stock property pages [MFC]", "CLSID_CColorPropPage [MFC]", "fonts [MFC], ActiveX controls", "stock properties [MFC], stock property pages", "CLSID_CPicturePropPage [MFC]", "MFC ActiveX controls [MFC], property pages"] -ms.assetid: 22638d86-ff3e-4124-933e-54b7c2a25968 --- # MFC ActiveX Controls: Using Stock Property Pages +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article discusses the stock property pages available for ActiveX controls and how to use them. >[!IMPORTANT] diff --git a/docs/mfc/mfc-activex-controls.md b/docs/mfc/mfc-activex-controls.md index 18ff2df6fdd..f08cd1629c3 100644 --- a/docs/mfc/mfc-activex-controls.md +++ b/docs/mfc/mfc-activex-controls.md @@ -4,10 +4,12 @@ title: "MFC ActiveX Controls" ms.date: "11/19/2018" f1_keywords: ["MFC ActiveX Controls (MFC)"] helpviewer_keywords: ["COleControl class [MFC], MFC ActiveX controls", "ActiveX controls [MFC], MFC", "containers [MFC], MFC ActiveX controls", "MFC ActiveX controls [MFC], serializing", "MFC ActiveX controls [MFC], containers", "serialization [MFC], MFC ActiveX controls", "dispatch maps [MFC], for MFC ActiveX controls", "MFC ActiveX controls [MFC], active/inactive state", "events [MFC], ActiveX controls", "MFC ActiveX controls [MFC]"] -ms.assetid: c911fb74-3afc-4bf3-a0f5-7922b14d9a1b --- # MFC ActiveX Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An ActiveX control is a reusable software component based on the Component Object Model (COM) that supports a wide variety of OLE functionality and can be customized to fit many software needs. >[!IMPORTANT] diff --git a/docs/mfc/mfc-and-atl.md b/docs/mfc/mfc-and-atl.md index d9e499ac1bd..aa2f69dadc0 100644 --- a/docs/mfc/mfc-and-atl.md +++ b/docs/mfc/mfc-and-atl.md @@ -2,15 +2,17 @@ description: "Learn more about: MFC and ATL" title: "MFC and ATL" ms.date: "01/24/2018" -ms.assetid: 31b1a3a8-4154-4c4a-af10-fafc23ecdc5c ms.topic: "overview" ms.custom: intro-overview --- # MFC and ATL +>[!NOTE] +> The Microsoft Foundation Classes (MFC) and Active Template Library (ATL) libraries continue to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Classes (MFC) provide a C++ object-oriented wrapper over Win32 for rapid development of native desktop applications. The Active Template Library (ATL) is a wrapper library that simplifies COM development and is used extensively for creating ActiveX controls. -You can create MFC or ATL programs with Visual Studio Community Edition or higher. The Express editions do not support MFC or ATL. +You can create MFC or ATL programs with Visual Studio Community Edition or higher. The Express editions don't support MFC or ATL. In Visual Studio 2015, Visual C++ is an optional component, and MFC and ATL components are optional sub-components under Visual C++. If you do not select these components when you first install Visual Studio, you will be prompted to install them the first time you attempt to create or open an MFC or ATL project. diff --git a/docs/mfc/mfc-application-architecture-classes.md b/docs/mfc/mfc-application-architecture-classes.md index 6ec1f95b61a..197201a873d 100644 --- a/docs/mfc/mfc-application-architecture-classes.md +++ b/docs/mfc/mfc-application-architecture-classes.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["MFC, classes", "MFC, application development", "classes [ --- # MFC application architecture classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Class library (MFC) classes in this category contribute to the architecture of an MFC application. They supply functionality common to most applications. You fill in the framework to add application-specific functionality. Typically, you do so by deriving new classes from the architecture classes, and then adding new members or overriding existing member functions. [Application wizards](reference/mfc-application-wizard.md) generate several types of applications, all of which use the application framework in differing ways. SDI (single document interface) and MDI (multiple document interface) applications make full use of the document/view part of the framework. Other types of applications, such as dialog-based applications, form-based applications, and DLLs, use only some of document/view architecture features. diff --git a/docs/mfc/mfc-classes-for-creating-internet-client-applications.md b/docs/mfc/mfc-classes-for-creating-internet-client-applications.md index f3a6c837e05..d4d0530b4fa 100644 --- a/docs/mfc/mfc-classes-for-creating-internet-client-applications.md +++ b/docs/mfc/mfc-classes-for-creating-internet-client-applications.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC Classes for Creating Internet Client Applica title: "MFC Classes for Creating Internet Client Applications" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, WinInet classes", "WinInet classes [MFC], classes", "classes [MFC], MFC", "Internet client applications [MFC], MFC", "Internet applications [MFC], MFC"] -ms.assetid: 67d34117-9839-4f4b-8bb8-0e4a9471c606 --- # MFC Classes for Creating Internet Client Applications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC provides the following classes and global functions for writing Internet client applications. Indentation indicates a class is derived from the unindented class above it. `CGopherFile` and `CHttpFile` derive from `CInternetFile`, for example. These classes and global functions are declared in AFXINET.H, except `CFileFind`, which is declared in AFX.H. ## Classes diff --git a/docs/mfc/mfc-com.md b/docs/mfc/mfc-com.md index 9f5a4136d12..4737b866ce6 100644 --- a/docs/mfc/mfc-com.md +++ b/docs/mfc/mfc-com.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["MFC, COM support", "MFC ActiveX controls [MFC], COM suppo --- # MFC COM +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A subset of MFC is designed to support COM, while most of the Active Template Library (ATL) is designed for COM programming. This section of topics describes MFC's support for COM. Active technologies (such as ActiveX controls, Active document containment, OLE, and so on) use the Component Object Model (COM) to enable software components to interact with one another in a networked environment, regardless of the language with which they were created. Active technologies can be used to create applications that run on the desktop or the Internet. For more information, see [Introduction to COM](../atl/introduction-to-com.md) or [The Component Object Model](/windows/win32/com/the-component-object-model). diff --git a/docs/mfc/mfc-concepts.md b/docs/mfc/mfc-concepts.md index 837ceb34f69..3de9b5e8e42 100644 --- a/docs/mfc/mfc-concepts.md +++ b/docs/mfc/mfc-concepts.md @@ -7,6 +7,9 @@ ms.topic: concept-article --- # MFC Concepts +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This section provides conceptual and task-based topics to help you program using the Microsoft Foundation Class (MFC) Library. ## In This Section diff --git a/docs/mfc/mfc-desktop-applications.md b/docs/mfc/mfc-desktop-applications.md index 873618fee18..73e8b385257 100644 --- a/docs/mfc/mfc-desktop-applications.md +++ b/docs/mfc/mfc-desktop-applications.md @@ -4,10 +4,12 @@ title: "MFC Desktop Applications" ms.date: "07/28/2019" f1_keywords: ["MFC"] helpviewer_keywords: ["libraries, MFC", "class libraries, MFC", "MFC, about MFC"] -ms.assetid: 7101cb18-a681-495c-8f2b-069ad20c72f7 --- # MFC Desktop Applications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Class (MFC) Library provides an object-oriented wrapper over much of the Win32 and COM APIs. Although it can be used to create very simple desktop applications, it is most useful when you need to develop more complex user interfaces with multiple controls. You can use MFC to create applications with Office-style user interfaces. For documentation on the Windows platform itself, see [Windows documentation](/windows/index). For information on building Windows applications in C++ without MFC, see [Build desktop Windows apps using the Win32 API](/windows/win32/index). The MFC Reference covers the classes, global functions, global variables, and macros that make up the Microsoft Foundation Class Library. diff --git a/docs/mfc/mfc-internet-programming-basics.md b/docs/mfc/mfc-internet-programming-basics.md index 60d8a09587a..c5619509e17 100644 --- a/docs/mfc/mfc-internet-programming-basics.md +++ b/docs/mfc/mfc-internet-programming-basics.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC Internet Programming Basics" title: "MFC Internet Programming Basics" ms.date: "11/19/2018" helpviewer_keywords: ["ISAPI extensions, programming with ISAPI", "Internet applications [MFC]", "ISAPI", "ActiveX controls [MFC], Internet", "programming [MFC], Internet", "Web applications [MFC], MFC classes", "ISAPI filters [MFC], programming with ISAPI", "Internet applications [MFC], ActiveX controls", "Internet applications [MFC], writing", "Internet applications [MFC], Active technology", "Active technology [MFC]", "Internet content [MFC]", "WinInet classes [MFC]"] -ms.assetid: 6df2dfd0-6e3f-4587-9d01-2a32f00f8a6f --- # MFC Internet Programming Basics +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Microsoft provides many APIs for programming both client and server applications. Many new applications are being written for the Internet, and as technologies, browser capabilities, and security options change, new types of applications will be written. Browsers run on client computers, providing access to the World Wide Web and displaying HTML pages that contain text, graphics, ActiveX controls, and documents. Servers provide FTP, HTTP, and gopher services, and run server extension applications using CGI. Your custom application can retrieve information and provide data on the Internet. >[!IMPORTANT] diff --git a/docs/mfc/mfc-internet-programming-tasks.md b/docs/mfc/mfc-internet-programming-tasks.md index c0911a53a89..3685e6ac8db 100644 --- a/docs/mfc/mfc-internet-programming-tasks.md +++ b/docs/mfc/mfc-internet-programming-tasks.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC Internet Programming Tasks" title: "MFC Internet Programming Tasks" ms.date: "09/12/2018" helpviewer_keywords: ["Internet applications [MFC], getting started", "Internet applications [MFC], first steps"] -ms.assetid: 6377e9b8-07c4-4380-b63b-05f5a9061313 --- # MFC Internet Programming Tasks +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This section contains detailed steps for adding Internet support to your applications. Topics include how to use the MFC classes to Internet-enable your existing applications, and how to add Active document support to your existing COM component. Do you want to create a document with up-to-the-minute stock quotes, Pittsburgh's football scores, and the latest temperature in Antarctica Microsoft provides a number of technologies to help you do that over the Internet. Active technologies include ActiveX controls (formerly OLE controls) and Active documents; WinInet for easily retrieving and saving files across the Internet; and asynchronous monikers for efficient data downloading. Visual Studio provides wizards to help you get started quickly with a starter application. For an introduction to these technologies, see [MFC Internet Programming Basics](mfc-internet-programming-basics.md) and [MFC COM](mfc-com.md). diff --git a/docs/mfc/mfc-library-versions.md b/docs/mfc/mfc-library-versions.md index ff6462e70e0..e266541499b 100644 --- a/docs/mfc/mfc-library-versions.md +++ b/docs/mfc/mfc-library-versions.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["class libraries [MFC], building versions", "version infor --- # MFC Library Versions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The MFC Library is available in versions that support ANSI single-byte and multibyte character set (MBCS) code, as well as versions that support Unicode (encoded as UTF-16LE, the Windows-native character set). Each MFC version is available as a static library or as a shared DLL. There is also a smaller MFC static library version that leaves out MFC controls for dialogs, for applications that are very sensitive to size and don't need those controls. The MFC libraries are available in both debug and release versions for supported architectures that include x86, x64, and ARM processors. You can create both applications (.exe files) and DLLs with any version of the MFC libraries. There is also a set of MFC libraries compiled for interfacing with managed code. The MFC shared DLLs include a version number to indicate library binary compatibility. ## Automatic linking of MFC library versions diff --git a/docs/mfc/mfc-mbcs-dll-add-on.md b/docs/mfc/mfc-mbcs-dll-add-on.md index f64676d47cd..9a8b5621b3c 100644 --- a/docs/mfc/mfc-mbcs-dll-add-on.md +++ b/docs/mfc/mfc-mbcs-dll-add-on.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["MBCS", "MFC"] --- # MFC MBCS DLL Add-on +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Support for MFC and its multibyte character set (MBCS) libraries requires an additional step during Visual Studio installation in Visual Studio 2013 and later. **Visual Studio 2013**: By default, the MFC libraries installed in Visual Studio 2013 only support Unicode development. You need the MBCS DLLs in order to build an MFC project in Visual Studio 2013 that has the **Character Set** property set to **Use Multi-Byte Character Set** or **Not Set**. Download the DLL at [Multibyte MFC Library for Visual Studio 2013](https://www.microsoft.com/download/details.aspx?id=40770). diff --git a/docs/mfc/mfc-technical-notes.md b/docs/mfc/mfc-technical-notes.md index f11bc35414a..57d42e99c87 100644 --- a/docs/mfc/mfc-technical-notes.md +++ b/docs/mfc/mfc-technical-notes.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC Technical Notes" title: "MFC Technical Notes" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, technical notes", "technical notes, MFC", "technical notes [MFC]"] -ms.assetid: 8aa01d66-0b07-4d0a-a080-4bb00c7baaac --- # MFC Technical Notes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A technical note is a document written for programmers by programmers. Each technical note describes a problem or feature that is beyond the scope of the rest of the MFC documentation. The technical notes supplied reflect requests for information from users, as well as specialized information that the MFC developers anticipate advanced users will want. diff --git a/docs/mfc/mfc-toolbar-implementation.md b/docs/mfc/mfc-toolbar-implementation.md index 66b9d9ee497..a97b5840b3c 100644 --- a/docs/mfc/mfc-toolbar-implementation.md +++ b/docs/mfc/mfc-toolbar-implementation.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC Toolbar Implementation" title: "MFC Toolbar Implementation" ms.date: "11/04/2016" helpviewer_keywords: ["toolbars [MFC], creating", "buttons [MFC], MFC toolbars", "toolbars [MFC], docking", "CToolBar class [MFC], creating toolbars", "MFC toolbars", "floating toolbars [MFC]", "toolbars [MFC], floating", "docking toolbars [MFC]", "bitmaps [MFC], toolbar", "toolbar controls [MFC]", "CToolBarCtrl class [MFC], implementing toolbars", "tool tips [MFC], enabling", "toolbars [MFC]", "toolbars [MFC], implementing MFC toolbars"] -ms.assetid: af3319ad-c430-4f90-8361-e6a2c06fd084 --- # MFC Toolbar Implementation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A toolbar is a [control bar](control-bars.md) that contains the bitmap images of controls. These images can behave like pushbuttons, check boxes, or radio buttons. MFC supplies class [CToolbar](reference/ctoolbar-class.md) to manage toolbars. If you enable it, users of MFC toolbars can dock them to the edge of a window or "float" them anywhere within the application window. MFC doesn't support customizable toolbars like those in the development environment. diff --git a/docs/mfc/modal-and-modeless-dialog-boxes.md b/docs/mfc/modal-and-modeless-dialog-boxes.md index 018ff95a740..c939871ca9d 100644 --- a/docs/mfc/modal-and-modeless-dialog-boxes.md +++ b/docs/mfc/modal-and-modeless-dialog-boxes.md @@ -3,10 +3,12 @@ description: "Learn more about: Modal and Modeless Dialog Boxes" title: "Modal and Modeless Dialog Boxes" ms.date: "11/04/2016" helpviewer_keywords: ["MFC dialog boxes [MFC], modeless", "modeless dialog boxes [MFC]", "MFC dialog boxes [MFC], modal", "modal dialog boxes [MFC]"] -ms.assetid: e83df336-5994-4b8f-8233-7942f997315b --- # Modal and Modeless Dialog Boxes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can use class [CDialog](reference/cdialog-class.md) to manage two kinds of dialog boxes: - *Modal dialog boxes*, which require the user to respond before continuing the program diff --git a/docs/mfc/month-calendar-control-examples.md b/docs/mfc/month-calendar-control-examples.md index 3881ae480f1..8085cecad97 100644 --- a/docs/mfc/month-calendar-control-examples.md +++ b/docs/mfc/month-calendar-control-examples.md @@ -3,10 +3,12 @@ description: "Learn more about: Month Calendar Control Examples" title: "Month Calendar Control Examples" ms.date: "11/04/2016" helpviewer_keywords: ["month calendar controls [MFC], examples", "CMonthCalCtrl class [MFC], examples"] -ms.assetid: 1af7fb59-d6fd-46e0-aaa5-b0394a0a3ed5 --- # Month Calendar Control Examples +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The [CMNCTRL1](../overview/visual-cpp-samples.md) sample application demonstrates the various attributes of the `CMonthCalCtrl` class. The control, found on a separate tab in the sample, demonstrates basic functionality and allows the user to dynamically modify certain attributes. ## See also diff --git a/docs/mfc/multipage-documents.md b/docs/mfc/multipage-documents.md index 664450ef076..4953a61ee3a 100644 --- a/docs/mfc/multipage-documents.md +++ b/docs/mfc/multipage-documents.md @@ -3,10 +3,12 @@ description: "Learn more about: Multipage Documents" title: "Multipage Documents" ms.date: "11/19/2018" helpviewer_keywords: ["pagination [MFC]", "overriding [MFC], View class functions for printing", "OnPrepareDC method [MFC]", "CPrintInfo structure [MFC], multipage documents", "OnEndPrinting method [MFC]", "protocols [MFC], printing protocol", "document pages vs. printer pages [MFC]", "printer mode [MFC]", "printing [MFC], multipage documents", "printers [MFC], printer mode", "documents [MFC], printing", "OnPreparePrinting method [MFC]", "OnPrint method [MFC]", "DoPreparePrinting method and pagination [MFC]", "OnDraw method [MFC], printing", "pagination [MFC], printing multipage documents", "printing [MFC], protocol", "pages [MFC], printing", "OnBeginPrinting method [MFC]", "multipage documents [MFC]", "printing [MFC], pagination", "documents [MFC], paginating"] -ms.assetid: 69626b86-73ac-4b74-b126-9955034835ef --- # Multipage Documents +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes the Windows printing protocol and explains how to print documents that contain more than one page. The article covers the following topics: - [Printing protocol](#_core_the_printing_protocol) diff --git a/docs/mfc/multiple-document-types-views-and-frame-windows.md b/docs/mfc/multiple-document-types-views-and-frame-windows.md index bca21f51732..cb992a563d4 100644 --- a/docs/mfc/multiple-document-types-views-and-frame-windows.md +++ b/docs/mfc/multiple-document-types-views-and-frame-windows.md @@ -3,10 +3,12 @@ description: "Learn more about: Multiple Document Types, Views, and Frame Window title: "Multiple Document Types, Views, and Frame Windows" ms.date: "11/19/2018" helpviewer_keywords: ["static splitter windows [MFC]", "multiple views [MFC]", "multiple document types [MFC]", "multiple views [MFC], frame windows", "document classes [MFC], multiple", "documents [MFC], multiple types of", "splitter windows [MFC], dynamic", "dynamic splitter windows [MFC]", "windows [MFC], dynamic splitter", "windows [MFC], static splitter", "multiple frame windows [MFC]", "splitter windows [MFC], static"] -ms.assetid: c6b9e4e0-7c9c-45f1-a804-aeac39c9a128 --- # Multiple Document Types, Views, and Frame Windows +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The standard relationship among a document, its view, and its frame window is described in [Document/View Creation](document-view-creation.md). Many applications support a single document type (but possibly multiple open documents of that type) with a single view on the document and only one frame window per document. But some applications may need to alter one or more of those defaults. ## What do you want to know more about diff --git a/docs/mfc/notifications-from-a-rich-edit-control.md b/docs/mfc/notifications-from-a-rich-edit-control.md index a7478300fc8..f5278d8e970 100644 --- a/docs/mfc/notifications-from-a-rich-edit-control.md +++ b/docs/mfc/notifications-from-a-rich-edit-control.md @@ -3,10 +3,12 @@ description: "Learn more about: Notifications from a Rich Edit Control" title: "Notifications from a Rich Edit Control" ms.date: "11/04/2016" helpviewer_keywords: ["messages [MFC], notification [MFC]", "CRichEditCtrl class [MFC], notifications", "rich edit controls [MFC], notifications", "notifications [MFC], from CRichEditCtrl"] -ms.assetid: eb5304fe-f4f3-4557-9ebf-3095dea383c4 --- # Notifications from a Rich Edit Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Notification messages report events affecting a rich edit control ([CRichEditCtrl](reference/cricheditctrl-class.md)). They can be processed by the parent window or, using message reflection, by the rich edit control itself. Rich edit controls support all of the notification messages used with edit controls as well as several additional ones. You can determine which notification messages a rich edit control sends its parent window by setting its "event mask." To set the event mask for a rich edit control, use the [SetEventMask](reference/cricheditctrl-class.md#seteventmask) member function. You can retrieve the current event mask for a rich edit control by using the [GetEventMask](reference/cricheditctrl-class.md#geteventmask) member function. diff --git a/docs/mfc/notifications-sent-by-animation-controls.md b/docs/mfc/notifications-sent-by-animation-controls.md index a6881465bd3..e900b18a8d9 100644 --- a/docs/mfc/notifications-sent-by-animation-controls.md +++ b/docs/mfc/notifications-sent-by-animation-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Notifications Sent by Animation Controls" title: "Notifications Sent by Animation Controls" ms.date: "11/04/2016" helpviewer_keywords: ["notifications [MFC], animation controls", "CAnimateCtrl class [MFC], notifications", "controls [MFC], animation", "animation controls [MFC], notifications"] -ms.assetid: 584f5824-446b-4a1a-85f7-ef61842c8186 --- # Notifications Sent by Animation Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An animation control ([CAnimateCtrl](reference/canimatectrl-class.md)) sends two different types of notification messages. The notifications are sent in the form of [WM_COMMAND](/windows/win32/menurc/wm-command) messages. The [ACN_START](/windows/win32/Controls/acn-start) message is sent when the animation control has started playing a clip. The [ACN_STOP](/windows/win32/Controls/acn-stop) message is sent when the animation control has finished or stopped playing a clip. diff --git a/docs/mfc/odbc-classes.md b/docs/mfc/odbc-classes.md index c2df2b212e5..d0a77096e4a 100644 --- a/docs/mfc/odbc-classes.md +++ b/docs/mfc/odbc-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: ODBC Classes" title: "ODBC Classes" ms.date: "11/04/2016" helpviewer_keywords: ["database classes [MFC], ODBC", "ODBC classes [MFC]"] -ms.assetid: 6c40fca8-3033-4873-9abe-7f51725de0e0 --- # ODBC Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These classes work with the other application framework classes to give easy access to a wide variety of databases for which Open Database Connectivity (ODBC) drivers are available. Programs that use ODBC databases will have at least a `CDatabase` object and a `CRecordset` object. diff --git a/docs/mfc/ole-automation-classes.md b/docs/mfc/ole-automation-classes.md index 7422cd998f9..e2d74d8d030 100644 --- a/docs/mfc/ole-automation-classes.md +++ b/docs/mfc/ole-automation-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE Automation Classes" title: "OLE Automation Classes" ms.date: "11/04/2016" helpviewer_keywords: ["Automation, classes", "Automation classes [MFC], OLE classes", "OLE Automation [MFC], classes", "Automation classes [MFC]", "OLE Automation [MFC]"] -ms.assetid: 96e5372b-ff8a-4da1-933b-4d9bbf4dceb3 --- # OLE Automation Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These classes support automation clients (applications that control other applications). Automation servers (applications that can be controlled by other applications) are supported through [dispatch maps](reference/dispatch-maps.md). [COleDispatchDriver](reference/coledispatchdriver-class.md)
diff --git a/docs/mfc/ole-background-containers-and-servers.md b/docs/mfc/ole-background-containers-and-servers.md index 298221f6c60..b9cc3c392e8 100644 --- a/docs/mfc/ole-background-containers-and-servers.md +++ b/docs/mfc/ole-background-containers-and-servers.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE Background: Containers and Servers" title: "OLE Background: Containers and Servers" ms.date: "11/04/2016" helpviewer_keywords: ["OLE full-server applications [MFC]", "server applications [MFC], communication with containers", "full-server [MFC]", "server applications [MFC], requirements", "server applications [MFC], defined", "OLE server applications [MFC], about server applications", "server applications [MFC], full-server vs. mini-server", "OLE server applications [MFC], mini-server applications", "OLE containers [MFC], container applications", "containers [MFC], OLE container applications", "server applications [MFC]"] -ms.assetid: dafbb31d-096c-4654-b774-12900d832919 --- # OLE Background: Containers and Servers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A container application is an application that can incorporate embedded or linked items into its own documents. The documents managed by a container application must be able to store and display OLE document components as well as the data created by the application itself. A container application must also allow users to insert new items or edit existing items by activating server applications when necessary. The user-interface requirements of a container application are listed in the article [Containers: User-Interface Issues](containers-user-interface-issues.md). A server application or component application is an application that can create OLE document components for use by container applications. Server applications usually support drag and drop or copying their data to the Clipboard so that a container application can insert the data as an embedded or linked item. An application can be both a container and a server. diff --git a/docs/mfc/ole-background-implementation-strategies.md b/docs/mfc/ole-background-implementation-strategies.md index e23b0f862da..57fe6adffab 100644 --- a/docs/mfc/ole-background-implementation-strategies.md +++ b/docs/mfc/ole-background-implementation-strategies.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE Background: Implementation Strategies" title: "OLE Background: Implementation Strategies" ms.date: "11/04/2016" helpviewer_keywords: ["OLE [MFC], development strategy", "OLE applications [MFC], implementing OLE", "applications [OLE], implementing OLE"] -ms.assetid: 0875ddae-99df-488c-82c6-164074a81058 --- # OLE Background: Implementation Strategies +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Depending on your application, there are four possible implementation strategies for adding OLE support: - You are writing a new application. diff --git a/docs/mfc/ole-background-linking-and-embedding.md b/docs/mfc/ole-background-linking-and-embedding.md index 78b8429ce8e..d39790a77ee 100644 --- a/docs/mfc/ole-background-linking-and-embedding.md +++ b/docs/mfc/ole-background-linking-and-embedding.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE Background: Linking and Embedding" title: "OLE Background: Linking and Embedding" ms.date: "11/04/2016" helpviewer_keywords: ["OLE embedded items [MFC]", "item types [MFC], defined", "item types [MFC]", "OLE [MFC], linked items", "linked items (OLE) [MFC]", "embedded objects [MFC]", "OLE items [MFC], types"] -ms.assetid: 11107711-eb96-4099-8f5c-7910bb3ecb75 --- # OLE Background: Linking and Embedding +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Using the Paste command in a container application can create an embedded component, or embedded item. The source data for an embedded item is stored as part of the OLE document that contains it. In this way, a document file for a word processor document can contain text and also can contain bitmaps, graphs, formulas, or any other type of data. OLE provides another way to incorporate data from another application: creating a linked component, or linked item, or a link. The steps for creating a linked item are similar to those for creating an embedded item, except that you use the Paste Link command instead of the Paste command. Unlike an embedded component, a linked component stores a path to the original data, which is often in a separate file. diff --git a/docs/mfc/ole-background-mfc-implementation.md b/docs/mfc/ole-background-mfc-implementation.md index 0076752ca40..5f1bce62a1e 100644 --- a/docs/mfc/ole-background-mfc-implementation.md +++ b/docs/mfc/ole-background-mfc-implementation.md @@ -4,10 +4,12 @@ title: "OLE Background: MFC Implementation" ms.date: "11/04/2016" f1_keywords: ["IMarshall", "IMoniker"] helpviewer_keywords: ["MFC libraries, implementing", "OLE MFC library implementation", "OLE IMarshal interface", "IMoniker interface, MFC", "IMarshall class [MFC]", "OLE, compound files", "OLE IMoniker interface", "OLE IUnknown"] -ms.assetid: 2b67016a-d78e-4d60-925f-c28ec8fb6180 --- # OLE Background: MFC Implementation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Because of the size and complexity of the raw OLE API, calling it directly to write OLE applications can be very time consuming. The goal of the Microsoft Foundation Class Library implementation of OLE is to reduce the amount of work you have to do to write full-featured, OLE-capable applications. This article explains the parts of the OLE API that have not been implemented inside MFC. The discussion also explains how what is implemented maps to the OLE section of the Windows SDK. diff --git a/docs/mfc/ole-background.md b/docs/mfc/ole-background.md index 2d89820a306..86be5ffa153 100644 --- a/docs/mfc/ole-background.md +++ b/docs/mfc/ole-background.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE Background" title: "OLE Background" ms.date: "11/04/2016" helpviewer_keywords: ["OLE, about OLE"] -ms.assetid: 5f654eb5-66b1-40c9-9215-bb85356a67f8 --- # OLE Background +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + OLE is a mechanism that allows users to create and edit documents containing items or "objects" created by multiple applications. > [!NOTE] diff --git a/docs/mfc/ole-classes.md b/docs/mfc/ole-classes.md index 78d380ba5cc..77233aff1ca 100644 --- a/docs/mfc/ole-classes.md +++ b/docs/mfc/ole-classes.md @@ -4,10 +4,12 @@ title: "OLE Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.ole"] helpviewer_keywords: ["ActiveX classes [MFC]", "classes [MFC], OLE", "OLE classes [MFC]", "OLE [MFC], classes"] -ms.assetid: 4c2b2bca-fafb-4d2d-8498-9ed1e04011d2 --- # OLE Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The OLE classes work with the other application framework classes to provide easy access to the ActiveX API, giving your programs an easy way to provide the power of ActiveX to your users. Using ActiveX, you can: - Create compound documents, which allow users to create and edit documents containing data created by multiple applications, including text, graphics, spreadsheets, sound, or other types of data. diff --git a/docs/mfc/ole-common-dialog-classes.md b/docs/mfc/ole-common-dialog-classes.md index 3c51dfb89b5..da438438f5b 100644 --- a/docs/mfc/ole-common-dialog-classes.md +++ b/docs/mfc/ole-common-dialog-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE Common Dialog Classes" title: "OLE Common Dialog Classes" ms.date: "11/04/2016" helpviewer_keywords: ["ActiveX classes [MFC]", "dialog classes [MFC], OLE", "OLE common dialog classes [MFC]", "common dialog classes [MFC]"] -ms.assetid: 706526ae-f94f-4909-a0f8-6b5fe954fd97 --- # OLE Common Dialog Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These classes handle common OLE tasks by implementing a number of standard OLE dialog boxes. They also provide a consistent user interface for OLE functionality. [COleDialog](reference/coledialog-class.md)
diff --git a/docs/mfc/ole-container-classes.md b/docs/mfc/ole-container-classes.md index 7a9ad84150c..f5186d11cf6 100644 --- a/docs/mfc/ole-container-classes.md +++ b/docs/mfc/ole-container-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE Container Classes" title: "OLE Container Classes" ms.date: "11/04/2016" helpviewer_keywords: ["ActiveX classes [MFC]", "container classes [MFC]", "OLE classes [MFC]", "visual editing [MFC], classes", "OLE [MFC], classes", "containers [MFC], OLE container applications"] -ms.assetid: 1e27e1ab-4c22-41eb-8547-6915c72668ae --- # OLE Container Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These classes are used by container applications. Both `COleLinkingDoc` and `COleDocument` manage collections of `COleClientItem` objects. Rather than deriving your document class from `CDocument`, you'll derive it from `COleLinkingDoc` or `COleDocument`, depending on whether you want support for links to objects embedded in your document. Use a `COleClientItem` object to represent each OLE item in your document that is embedded from another document or is a link to another document. diff --git a/docs/mfc/ole-control-classes.md b/docs/mfc/ole-control-classes.md index 3d29bc98e80..a527fc6d11b 100644 --- a/docs/mfc/ole-control-classes.md +++ b/docs/mfc/ole-control-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE Control Classes" title: "OLE Control Classes" ms.date: "11/04/2016" helpviewer_keywords: ["ActiveX classes [MFC]", "custom controls [MFC], classes", "ActiveX controls [MFC], OLE control classes", "ActiveX control classes [MFC]", "OLE controls [MFC], classes", "OLE control classes [MFC]", "reusable component classes [MFC]"] -ms.assetid: 96495ec3-319e-4163-b839-1af0428ed9dd --- # OLE Control Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These are the primary classes you use when writing OLE controls. The `COleControlModule` class in an OLE control module is like the [CWinApp](reference/cwinapp-class.md) class in an application. Each module implements one or more OLE controls; these controls are represented by `COleControl` objects. These controls communicate with their containers using `CConnectionPoint` objects. The `CPictureHolder` and `CFontHolder` classes encapsulate COM interfaces for pictures and fonts, while the `COlePropertyPage` and `CPropExchange` classes help you implement property pages and property persistence for your control. diff --git a/docs/mfc/ole-db-classes.md b/docs/mfc/ole-db-classes.md index 64191ae0fc7..03b1ec49670 100644 --- a/docs/mfc/ole-db-classes.md +++ b/docs/mfc/ole-db-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE DB Classes" title: "OLE DB Classes" ms.date: "11/04/2016" helpviewer_keywords: ["OLE DB consumers, support", "COleDBRecordView class [MFC]"] -ms.assetid: 65245d26-8743-4efd-9a72-90e19aef3c3a --- # OLE DB Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The OLE DB support in MFC currently consists of the class [COLEDBRecordView](reference/coledbrecordview-class.md). `COleDBRecordView` displays database records in controls, through a form view directly connected to a [CRowset](../data/oledb/crowset-class.md) object. For more information about the OLE DB consumer templates, see [List of OLE DB Consumer Templates](../data/oledb/ole-db-consumer-templates-reference.md). ## See also diff --git a/docs/mfc/ole-drag-and-drop-and-data-transfer-classes.md b/docs/mfc/ole-drag-and-drop-and-data-transfer-classes.md index ae1305da27a..ef61be8434f 100644 --- a/docs/mfc/ole-drag-and-drop-and-data-transfer-classes.md +++ b/docs/mfc/ole-drag-and-drop-and-data-transfer-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE Drag-and-Drop and Data Transfer Classes" title: "OLE Drag-and-Drop and Data Transfer Classes" ms.date: "11/04/2016" helpviewer_keywords: ["ActiveX classes [MFC]", "OLE drag and drop [MFC], and data transfer classes", "drag and drop [MFC], classes", "data transfer [MFC], OLE", "data transfer classes [MFC]"] -ms.assetid: c8ab2825-ed69-4b88-8ae6-f368b94726b8 --- # OLE Drag-and-Drop and Data Transfer Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These classes are used in OLE data transfers. They allow data to be transferred between applications by using the Clipboard or through drag and drop. [COleDropSource](reference/coledropsource-class.md)
diff --git a/docs/mfc/ole-in-mfc.md b/docs/mfc/ole-in-mfc.md index 537e4c14f83..d347fe7617b 100644 --- a/docs/mfc/ole-in-mfc.md +++ b/docs/mfc/ole-in-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE in MFC" title: "OLE in MFC" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, OLE and", "OLE items", "OLE applications [MFC], about OLE", "OLE [MFC]", "OLE containers [MFC], about OLE", "applications [OLE], about OLE", "OLE component object model (COM)"] -ms.assetid: 5193479d-1239-4697-aea4-e82f92c707ab --- # OLE in MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These articles explain the fundamentals of OLE programming using MFC. MFC provides the easiest way to write programs that use OLE: - To use OLE visual editing (in-place activation). diff --git a/docs/mfc/ole-mfc.md b/docs/mfc/ole-mfc.md index 263a4d2b59e..1eaa373f3dc 100644 --- a/docs/mfc/ole-mfc.md +++ b/docs/mfc/ole-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE (MFC)" title: "OLE (MFC)" ms.date: "11/04/2016" helpviewer_keywords: ["OLE [MFC], user-interface topics", "OLE applications [MFC], user interface", "user interfaces, OLE", "applications [OLE], user interface"] -ms.assetid: 61cb5d3e-1108-4e9b-b301-a8d8fcc586cb --- # OLE (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implementing OLE functionality in your program affects your user interface in several ways: - Visual editing (in-place activation) displays the user interface of another program in your program's windows and modifies your program's menus with items from the other program. diff --git a/docs/mfc/ole-related-classes.md b/docs/mfc/ole-related-classes.md index d8b67b66a5e..e2cd7c17f1c 100644 --- a/docs/mfc/ole-related-classes.md +++ b/docs/mfc/ole-related-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE-Related Classes" title: "OLE-Related Classes" ms.date: "11/04/2016" helpviewer_keywords: ["ActiveX classes [MFC]", "OLE classes [MFC]", "OLE [MFC], classes"] -ms.assetid: 2135cf54-1d9d-4e0e-91b4-943b3440effa --- # OLE-Related Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These classes provide a number of different services, ranging from exceptions to file input and output. [COleObjectFactory](reference/coleobjectfactory-class.md)
diff --git a/docs/mfc/ole-server-classes.md b/docs/mfc/ole-server-classes.md index bb867adb855..01e1a9e5862 100644 --- a/docs/mfc/ole-server-classes.md +++ b/docs/mfc/ole-server-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: OLE Server Classes" title: "OLE Server Classes" ms.date: "11/04/2016" helpviewer_keywords: ["OLE server applications [MFC], server classes", "OLE server documents", "COM components, classes [MFC]", "component classes [MFC]"] -ms.assetid: 8e9b67a2-c0ff-479c-a8d6-19b36c5e6fc6 --- # OLE Server Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These classes are used by server applications. Server documents are derived from `COleServerDoc` rather than from `CDocument`. Note that because `COleServerDoc` is derived from `COleLinkingDoc`, server documents can also be containers that support linking. The `COleServerItem` class represents a document or portion of a document that can be embedded in another document or linked to. diff --git a/docs/mfc/on-update-command-ui-macro.md b/docs/mfc/on-update-command-ui-macro.md index 12493f28551..0bc1fcfc69f 100644 --- a/docs/mfc/on-update-command-ui-macro.md +++ b/docs/mfc/on-update-command-ui-macro.md @@ -4,11 +4,13 @@ title: "ON_UPDATE_COMMAND_UI Macro" ms.date: "09/06/2019" f1_keywords: ["ON_UPDATE_COMMAND_UI"] helpviewer_keywords: ["ON_UPDATE_COMMAND_UI macro [MFC]", "update handlers [MFC]", "command-handler macros", "updating user-interface objects [MFC]"] -ms.assetid: 3e72b50f-4119-4c82-81cf-6e09b132de05 ms.topic: reference --- # ON_UPDATE_COMMAND_UI Macro +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To connect a user-interface object to a command-update handler in a command-target object, open **Class View**, then right-click on the class to which the handler will be added, and choose **Class Wizard**. Find the user-interface object's ID in the list on the left, then choose **UPDATE_COMMAND_UI** in the right pane and click **Add Handler**. This creates a handler function in the class and adds the appropriate entry in the message map. See [Mapping Messages to Functions](reference/mapping-messages-to-functions.md) for more information. You can specify additional messages to handle in the **Messages** pane. For example, to update a Clear All command in your program's Edit menu, use the **Class Wizard** to add a message-map entry in the selected class, a function declaration for a command-update handler called `OnUpdateEditClearAll` in the class declaration, and an empty function template in the class's implementation file. The function prototype looks like this: diff --git a/docs/mfc/oncmdmsg-handler.md b/docs/mfc/oncmdmsg-handler.md index 86b362ec27e..b40687263d1 100644 --- a/docs/mfc/oncmdmsg-handler.md +++ b/docs/mfc/oncmdmsg-handler.md @@ -4,10 +4,12 @@ title: "OnCmdMsg Handler" ms.date: "11/04/2016" f1_keywords: ["OnCmdMsg"] helpviewer_keywords: ["messages, routing", "handlers [MFC]", "command routing [MFC], OnCmdMsg handler", "handlers, OnCmdMessage [MFC]", "OnCmdMessage method [MFC]"] -ms.assetid: 8df07024-506f-47e7-bba9-1c3bc5ad8ab6 --- # OnCmdMsg Handler +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To accomplish the routing of commands, each command target calls the `OnCmdMsg` member function of the next command target in the sequence. Command targets use `OnCmdMsg` to determine whether they can handle a command and to route it to another command target if they cannot handle it. Each command-target class may override the `OnCmdMsg` member function. The overrides let each class route commands to a particular next target. A frame window, for example, always routes commands to its current child window or view, as shown in the table [Standard Command Route](command-routing.md). diff --git a/docs/mfc/one-stage-and-two-stage-construction-of-objects.md b/docs/mfc/one-stage-and-two-stage-construction-of-objects.md index 7afd60556d4..b1b0ad5b6dd 100644 --- a/docs/mfc/one-stage-and-two-stage-construction-of-objects.md +++ b/docs/mfc/one-stage-and-two-stage-construction-of-objects.md @@ -3,10 +3,12 @@ description: "Learn more about: One-Stage and Two-Stage Construction of Objects" title: "One-Stage and Two-Stage Construction of Objects" ms.date: "11/04/2016" helpviewer_keywords: ["objects [MFC], creating graphic objects", "object creation [MFC], graphic objects", "objects [MFC], graphic objects", "one-stage and two-stage construction of objects [MFC]"] -ms.assetid: 5a1c410c-4a4b-4dd9-a2ec-ced831aa7f21 --- # One-Stage and Two-Stage Construction of Objects +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You have a choice between two techniques for creating graphic objects, such as pens and brushes: - *One-stage construction*: Construct and initialize the object in one stage, all with the constructor. diff --git a/docs/mfc/onidle-member-function.md b/docs/mfc/onidle-member-function.md index 2c69006b57c..8f81ef6c73a 100644 --- a/docs/mfc/onidle-member-function.md +++ b/docs/mfc/onidle-member-function.md @@ -4,10 +4,12 @@ title: "OnIdle Member Function" ms.date: "11/19/2018" f1_keywords: ["OnIdle"] helpviewer_keywords: ["processing messages [MFC]", "OnIdle method [MFC]", "idle loop processing [MFC]", "CWinApp class [MFC], OnIdle method [MFC]", "message handling [MFC], OnIdle method [MFC]"] -ms.assetid: 51adc874-0075-4f76-be1c-79283f46c10b --- # OnIdle Member Function +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When no Windows messages are being processed, the framework calls the [CWinApp](reference/cwinapp-class.md) member function [OnIdle](reference/cwinapp-class.md#onidle) (described in the MFC Library Reference). Override `OnIdle` to perform background tasks. The default version updates the state of user-interface objects such as toolbar buttons and performs cleanup of temporary objects created by the framework in the course of its operations. The following figure illustrates how the message loop calls `OnIdle` when there are no messages in the queue. diff --git a/docs/mfc/opening-files.md b/docs/mfc/opening-files.md index 1901d6e2ee4..364e80e69c4 100644 --- a/docs/mfc/opening-files.md +++ b/docs/mfc/opening-files.md @@ -3,11 +3,13 @@ description: "Learn more about: Opening Files" title: "Opening Files" ms.date: "11/04/2016" helpviewer_keywords: ["Open member functions [MFC]", "CFile class [MFC], variable", "opening files, in MFC", "Open calls [MFC]", "Open method, CFile class [MFC]", "examples [MFC], opening files", "opening files, handling exceptions", "exception handling [MFC], when opening files", "files [MFC], opening", "file objects [MFC]", "MFC, file operations", "opening files [MFC]", "exception handling [MFC], opening files"] -ms.assetid: a991b8ec-b04a-4766-b47e-7485b5dd0b01 ms.topic: how-to --- # Opening Files +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In MFC, the most common way to open a file is a two-stage process. #### To open a file diff --git a/docs/mfc/optimizing-control-drawing.md b/docs/mfc/optimizing-control-drawing.md index f66c88ff25b..0ed7b644291 100644 --- a/docs/mfc/optimizing-control-drawing.md +++ b/docs/mfc/optimizing-control-drawing.md @@ -3,11 +3,13 @@ description: "Learn more about: Optimizing Control Drawing" title: "Optimizing Control Drawing" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ActiveX controls [MFC], optimizing"] -ms.assetid: 29ff985d-9bf5-4678-b62d-aad12def75fb ms.topic: concept-article --- # Optimizing Control Drawing +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When a control is instructed to draw itself into a container-supplied device context, it typically selects GDI objects (such as pens, brushes, and fonts) into the device context, performs its drawing operations, and restores the previous GDI objects. If the container has multiple controls that are to be drawn into the same device context, and each control selects the GDI objects it requires, time can be saved if the controls do not individually restore previously selected objects. After all the controls have been drawn, the container can automatically restore the original objects. To detect whether a container supports this technique, a control can call the [COleControl::IsOptimizedDraw](reference/colecontrol-class.md#isoptimizeddraw) member function. If this function returns **TRUE**, the control can skip the normal step of restoring the previously selected objects. diff --git a/docs/mfc/optimizing-persistence-and-initialization.md b/docs/mfc/optimizing-persistence-and-initialization.md index 6fa231bfd5b..88bfbbbf03a 100644 --- a/docs/mfc/optimizing-persistence-and-initialization.md +++ b/docs/mfc/optimizing-persistence-and-initialization.md @@ -3,11 +3,13 @@ description: "Learn more about: Optimizing Persistence and Initialization" title: "Optimizing Persistence and Initialization" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ActiveX controls [MFC], optimizing", "performance, ActiveX controls", "optimization, ActiveX controls", "optimizing performance, ActiveX controls"] -ms.assetid: e821e19e-b9eb-49ab-b719-0743420ba80b ms.topic: concept-article --- # Optimizing Persistence and Initialization +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + By default, persistence and initialization in a control are handled by the `DoPropExchange` member function. In a typical control, this function contains calls to several **PX_** functions (`PX_Color`, `PX_Font`, and so on), one for each property. This approach has the advantage that a single `DoPropExchange` implementation can be used for initialization, for persistence in binary format, and for persistence in the so-called "property-bag" format used by some containers. This one function provides all information about the properties and their default values in one convenient place. diff --git a/docs/mfc/orchestrating-other-window-actions.md b/docs/mfc/orchestrating-other-window-actions.md index d58e98acd28..0f909d0693e 100644 --- a/docs/mfc/orchestrating-other-window-actions.md +++ b/docs/mfc/orchestrating-other-window-actions.md @@ -3,11 +3,13 @@ description: "Learn more about: Orchestrating Other Window Actions" title: "Orchestrating Other Window Actions" ms.date: "11/04/2016" helpviewer_keywords: ["frame windows [MFC], print preview", "context-sensitive Help [MFC], frame windows", "print preview [MFC], and frame windows", "frame windows [MFC], context-sensitive Help", "frame windows [MFC], semimodal states", "context-sensitive Help [MFC]"] -ms.assetid: 5f34eea8-2bf8-4479-95c7-45e8f443db8f ms.topic: concept-article --- # Orchestrating Other Window Actions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The frame window orchestrates semimodal states such as context-sensitive help and print preview. For a description of the frame window's role in print preview, see [Printing and Print Preview](printing-and-print-preview.md). ## See also diff --git a/docs/mfc/ordering-items-in-the-header-control.md b/docs/mfc/ordering-items-in-the-header-control.md index 8fecf83fd9a..e17ef17634e 100644 --- a/docs/mfc/ordering-items-in-the-header-control.md +++ b/docs/mfc/ordering-items-in-the-header-control.md @@ -4,11 +4,13 @@ title: "Ordering Items in the Header Control" ms.date: "11/04/2016" f1_keywords: ["DS_DRAGDROP"] helpviewer_keywords: ["sequence [MFC]", "sequence [MFC], header control items", "OrderToIndex method [MFC]", "DS_DRAGDROP notification [MFC]", "GetOrderArray method [MFC]", "SetOrderArray method [MFC]", "header controls [MFC], ordering items"] -ms.assetid: 5aaef872-75b5-49c5-8fed-6f9a81fca812 ms.topic: concept-article --- # Ordering Items in the Header Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Once you've [added items to a header control](adding-items-to-the-header-control.md), you can manipulate or get information about their order with the following functions: - [CHeaderCtrl::GetOrderArray](reference/cheaderctrl-class.md#getorderarray) and [CHeaderCtrl::SetOrderArray](reference/cheaderctrl-class.md#setorderarray) diff --git a/docs/mfc/output-device-context-classes.md b/docs/mfc/output-device-context-classes.md index cdfed637a81..78ed227889d 100644 --- a/docs/mfc/output-device-context-classes.md +++ b/docs/mfc/output-device-context-classes.md @@ -4,10 +4,12 @@ title: "Output (Device Context) Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.output"] helpviewer_keywords: ["device contexts [MFC], classes", "screen output classes [MFC]", "printing classes [MFC]", "window drawing classes [MFC]", "painting classes [MFC]", "output classes [MFC]"] -ms.assetid: 35fd6435-a38e-42c6-a3fa-cd6f39370fc3 --- # Output (Device Context) Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These classes encapsulate the different types of device contexts available in Windows. Most of the following classes encapsulate a handle to a Windows device context. A device context is a Windows object that contains information about the drawing attributes of a device such as a display or a printer. All drawing calls are made through a device-context object. Additional classes derived from `CDC` encapsulate specialized device-context functionality, including support for Windows metafiles. diff --git a/docs/mfc/overridable-cwinapp-member-functions.md b/docs/mfc/overridable-cwinapp-member-functions.md index 9036701c9f0..fd923a07aac 100644 --- a/docs/mfc/overridable-cwinapp-member-functions.md +++ b/docs/mfc/overridable-cwinapp-member-functions.md @@ -3,10 +3,12 @@ description: "Learn more about: Overridable CWinApp Member Functions" title: "Overridable CWinApp Member Functions" ms.date: "11/04/2016" helpviewer_keywords: ["overriding [MFC], overridable functions in CWinApp", "application class [MFC]", "CWinApp class [MFC], overridables"] -ms.assetid: 07183d5e-734b-45d9-a8b6-9dde4adac0b4 --- # Overridable CWinApp Member Functions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + [CWinApp](reference/cwinapp-class.md) provides several key overridable member functions (`CWinApp` overrides these members from class [CWinThread](reference/cwinthread-class.md), from which `CWinApp` derives): - [InitInstance](initinstance-member-function.md) diff --git a/docs/mfc/overriding-the-standard-command-routing.md b/docs/mfc/overriding-the-standard-command-routing.md index ba18313793a..f813b8218cc 100644 --- a/docs/mfc/overriding-the-standard-command-routing.md +++ b/docs/mfc/overriding-the-standard-command-routing.md @@ -3,11 +3,13 @@ description: "Learn more about: Overriding the Standard Command Routing" title: "Overriding the Standard Command Routing" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, command routing", "command routing [MFC], overriding", "command handling [MFC], routing commands", "overriding, standard command routing"] -ms.assetid: 872b698a-7432-40c4-9008-68721e8effa5 ms.topic: concept-article --- # Overriding the Standard Command Routing +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In rare cases when you must implement some variation of the standard framework routing, you can override it. The idea is to change the routing in one or more classes by overriding `OnCmdMsg` in those classes. Do so: - In the class that breaks the order to pass to a nondefault object. diff --git a/docs/mfc/overview-of-the-rich-edit-control.md b/docs/mfc/overview-of-the-rich-edit-control.md index ae897f634ab..dd13c02671d 100644 --- a/docs/mfc/overview-of-the-rich-edit-control.md +++ b/docs/mfc/overview-of-the-rich-edit-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Overview of the Rich Edit Control" title: "Overview of the Rich Edit Control" ms.date: "11/04/2016" helpviewer_keywords: ["rich edit controls [MFC]"] -ms.assetid: ad589b9f-a3fd-4820-bf1f-6b1965997e68 ms.topic: concept-article --- # Overview of the Rich Edit Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!IMPORTANT] > If you are using a rich edit control in a dialog box (regardless of whether your application is SDI, MDI, or dialog-based), you must call [AfxInitRichEdit](reference/application-information-and-management.md#afxinitrichedit) once before the dialog box is displayed. A typical place to call this function is in your program's `InitInstance` member function. You do not need to call it for each time you display the dialog box, only the first time. You do not have to call `AfxInitRichEdit` if you are working with `CRichEditView`. diff --git a/docs/mfc/paragraph-formatting-in-rich-edit-controls.md b/docs/mfc/paragraph-formatting-in-rich-edit-controls.md index bf891d8c81d..6d186474a34 100644 --- a/docs/mfc/paragraph-formatting-in-rich-edit-controls.md +++ b/docs/mfc/paragraph-formatting-in-rich-edit-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Paragraph Formatting in Rich Edit Controls" title: "Paragraph Formatting in Rich Edit Controls" ms.date: "11/04/2016" helpviewer_keywords: ["rich edit controls [MFC], paragraph formatting in", "paragraph formatting in CRichEditCtrl [MFC]", "CRichEditCtrl class [MFC], paragraph formatting in", "formatting [MFC], paragraphs"] -ms.assetid: 0df2e4c9-2074-4e41-b913-87cb8c1b4d43 --- # Paragraph Formatting in Rich Edit Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can use member functions of the rich edit control ([CRichEditCtrl](reference/cricheditctrl-class.md)) to format paragraphs and to retrieve formatting information. Paragraph formatting attributes include alignment, tabs, indents, and numbering. You can apply paragraph formatting by using the [SetParaFormat](reference/cricheditctrl-class.md#setparaformat) member function. To determine the current paragraph formatting for the selected text, use the [GetParaFormat](reference/cricheditctrl-class.md#getparaformat) member function. The [PARAFORMAT](/windows/win32/api/richedit/ns-richedit-paraformat) structure is used with these member functions to specify paragraph attributes. One of the important members of **PARAFORMAT** is *dwMask*. In `SetParaFormat`, *dwMask* specifies which paragraph attributes will be set by this function call. `GetParaFormat` reports the attributes of the first paragraph in the selection; *dwMask* specifies the attributes that are consistent throughout the selection. diff --git a/docs/mfc/prerequisites-for-internet-client-classes.md b/docs/mfc/prerequisites-for-internet-client-classes.md index 3cc4b6bc083..2f7a948b5b5 100644 --- a/docs/mfc/prerequisites-for-internet-client-classes.md +++ b/docs/mfc/prerequisites-for-internet-client-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: Prerequisites for Internet Client Classes" title: "Prerequisites for Internet Client Classes" ms.date: "11/04/2016" helpviewer_keywords: ["Internet files [MFC], writing to", "Internet [MFC], connections", "FTP (File Transfer Protocol), MFC classes", "Gopher prerequisites [MFC]", "files [MFC], writing to", "classes [MFC], connections", "HTTP [MFC], prerequisites for Internet clients", "connections [MFC], classes for", "Internet client class prerequisites [MFC]", "files [MFC], reading", "URLs [MFC], Internet client applications", "prerequisites, Internet client classes [MFC]", "Gopher client applications [MFC]"] -ms.assetid: c51d1dfe-260c-4228-8100-e4efd90e9599 --- # Prerequisites for Internet Client Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Some actions taken by an Internet client (reading a file, for example) have prerequisite actions (in this case, establishing an Internet connection). The following tables list the prerequisites for some client actions. ### General Internet URL (FTP, Gopher, or HTTP) diff --git a/docs/mfc/print-preview-architecture.md b/docs/mfc/print-preview-architecture.md index 4ec11761f33..a47454457b8 100644 --- a/docs/mfc/print-preview-architecture.md +++ b/docs/mfc/print-preview-architecture.md @@ -3,10 +3,12 @@ description: "Learn more about: Print Preview Architecture" title: "Print Preview Architecture" ms.date: "11/04/2016" helpviewer_keywords: ["print preview [MFC], process", "previewing printing", "print preview [MFC], architecture", "printing [MFC], print preview", "print preview [MFC], modifications to MFC"] -ms.assetid: 0efc87e6-ff8d-43c5-9d72-9b729a169115 --- # Print Preview Architecture +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how the MFC framework implements print preview functionality. Topics covered include: - [Print preview process](#_core_the_print_preview_process) diff --git a/docs/mfc/printing-and-print-preview.md b/docs/mfc/printing-and-print-preview.md index b2ca6172204..fab2bc436e3 100644 --- a/docs/mfc/printing-and-print-preview.md +++ b/docs/mfc/printing-and-print-preview.md @@ -3,11 +3,13 @@ description: "Learn more about: Printing and Print Preview" title: "Printing and Print Preview" ms.date: "11/04/2016" helpviewer_keywords: ["printing [MFC]", "previewing printing", "printing [MFC]", "print preview", "printing [MFC], print preview"] -ms.assetid: d15059cd-32de-4450-95f7-e73aece238f6 ms.topic: concept-article --- # Printing and Print Preview +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC supports printing and print preview for your program's documents via class [CView](reference/cview-class.md). For basic printing and print preview, simply override your view class's [OnDraw](reference/cview-class.md#ondraw) member function, which you must do anyway. That function can draw to the view on the screen, to a printer device context for an actual printer, or to a device context that simulates your printer on the screen. You can also add code to manage multipage document printing and preview, to paginate your printed documents, and to add headers and footers to them. diff --git a/docs/mfc/printing-in-rich-edit-controls.md b/docs/mfc/printing-in-rich-edit-controls.md index b984736a3ff..f75b3796583 100644 --- a/docs/mfc/printing-in-rich-edit-controls.md +++ b/docs/mfc/printing-in-rich-edit-controls.md @@ -3,11 +3,13 @@ description: "Learn more about: Printing in Rich Edit Controls" title: "Printing in Rich Edit Controls" ms.date: "11/04/2016" helpviewer_keywords: ["printing [MFC], CRichEditCtrl", "rich edit controls [MFC], printing", "CRichEditCtrl class [MFC], printing"] -ms.assetid: dbda0e40-018f-424e-b5d8-7b489aaf27af ms.topic: concept-article --- # Printing in Rich Edit Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can tell a rich edit control ([CRichEditCtrl](reference/cricheditctrl-class.md)) to render its output for a specified device, such as a printer. You can also specify the output device for which a rich edit control formats its text. To format part of the contents of a rich edit control for a specific device, you can use the [FormatRange](reference/cricheditctrl-class.md#formatrange) member function. The [FORMATRANGE](/windows/win32/api/richedit/ns-richedit-formatrange) structure used with this function specifies the range of text to format as well as the device context (DC) for the target device. diff --git a/docs/mfc/printing.md b/docs/mfc/printing.md index 58d2fd9d619..9bb80b5f90e 100644 --- a/docs/mfc/printing.md +++ b/docs/mfc/printing.md @@ -3,11 +3,13 @@ description: "Learn more about: Printing" title: "Printing" ms.date: "11/04/2016" helpviewer_keywords: ["view classes [MFC], print operations", "documents [MFC], printing", "printing [MFC], from framework", "printing [MFC]"] -ms.assetid: be465e8d-b0c9-4fc5-9fa8-d10486064f76 ms.topic: concept-article --- # Printing +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Microsoft Windows implements device-independent display. In MFC, this means that the same drawing calls, in the `OnDraw` member function of your view class, are responsible for drawing on the display and on other devices, such as printers. For print preview, the target device is a simulated printer output to the display. ## Your Role in Printing vs. the Framework's Role diff --git a/docs/mfc/processing-header-control-notifications.md b/docs/mfc/processing-header-control-notifications.md index 0c3aa456c2d..8fef663e015 100644 --- a/docs/mfc/processing-header-control-notifications.md +++ b/docs/mfc/processing-header-control-notifications.md @@ -3,11 +3,13 @@ description: "Learn more about: Processing Header-Control Notifications" title: "Processing Header-Control Notifications" ms.date: "11/04/2016" helpviewer_keywords: ["CHeaderCtrl class [MFC], processing notifications", "controls [MFC], header", "notifications [MFC], processing for CHeaderCtrl", "header controls [MFC], processing notifications", "header control notifications"] -ms.assetid: e6c6af7c-d458-4d33-85aa-48014ccde5f6 ms.topic: concept-article --- # Processing Header-Control Notifications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In your view or dialog class, use the [Class Wizard](reference/mfc-class-wizard.md) to create an [OnChildNotify](reference/cwnd-class.md#onchildnotify) handler function with a switch statement for any header-control ([CHeaderCtrl](reference/cheaderctrl-class.md)) notification messages you want to handle (see [Mapping Messages to Functions](reference/mapping-messages-to-functions.md)). Notifications are sent to the parent window when the user clicks or double-clicks a header item, drags a divider between items, and so on. The notification messages associated with a header control are listed in [Header Control Reference](/windows/win32/controls/header-control-reference) in the Windows SDK. diff --git a/docs/mfc/processing-notification-messages-in-a-rebar-control.md b/docs/mfc/processing-notification-messages-in-a-rebar-control.md index d4b1a732bd9..cd4bf9f3832 100644 --- a/docs/mfc/processing-notification-messages-in-a-rebar-control.md +++ b/docs/mfc/processing-notification-messages-in-a-rebar-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Processing Notification Messages in a Rebar Cont title: "Processing Notification Messages in a Rebar Control" ms.date: "11/04/2016" helpviewer_keywords: ["RBN_ notification messages, description of", "CReBarCtrl class [MFC], notification messages sent by", "RBN_ notification messages [MFC]", "notifications [MFC], CReBarCtrl"] -ms.assetid: 40f43a60-0c18-4d8d-8fab-213a095624f9 ms.topic: concept-article --- # Processing Notification Messages in a Rebar Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In the parent class of the rebar control, create an `OnChildNotify` handler function with a switch statement for any rebar-control (`CReBarCtrl`) notification messages you want to handle. Notifications are sent to the parent window when the user drags objects over the rebar control, changes the layout of the rebar bands, deletes bands from the rebar control, and so on. The following notification messages can be sent by the rebar control object: diff --git a/docs/mfc/processing-notification-messages-in-date-and-time-picker-controls.md b/docs/mfc/processing-notification-messages-in-date-and-time-picker-controls.md index e8d46f354f6..52eadf5e783 100644 --- a/docs/mfc/processing-notification-messages-in-date-and-time-picker-controls.md +++ b/docs/mfc/processing-notification-messages-in-date-and-time-picker-controls.md @@ -4,11 +4,13 @@ title: "Processing Notification Messages in Date and Time Picker Controls" ms.date: "11/04/2016" f1_keywords: ["DTN_CLOSEUP", "DTN_DATETIMECHANGE", "DTN_DROPDOWN"] helpviewer_keywords: ["DTN_DROPDOWN notification [MFC]", "DTN_DATETIMECHANGE notification [MFC]", "DTN_CLOSEUP notification [MFC]", "DateTimePicker control [MFC], handling notifications", "CDateTimeCtrl class [MFC], handling notifications", "DTN_FORMAT notification [MFC]", "DateTimePicker control [MFC]"] -ms.assetid: ffbe29ab-ff80-4609-89f7-260b404439c4 ms.topic: concept-article --- # Processing Notification Messages in Date and Time Picker Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As users interact with the date and time picker control, the control (`CDateTimeCtrl`) sends notification messages to its parent window, usually a view or dialog object. Handle these messages if you want to do something in response. For example, when the user opens the date and time picker to display the embedded month calendar control, the DTN_DROPDOWN notification is sent. Use the [Class Wizard](reference/mfc-class-wizard.md) to add notification handlers to the parent class for those messages you want to implement. diff --git a/docs/mfc/processing-notification-messages-in-extended-combo-box-controls.md b/docs/mfc/processing-notification-messages-in-extended-combo-box-controls.md index 17f7c1247f2..6f0782a1f0f 100644 --- a/docs/mfc/processing-notification-messages-in-extended-combo-box-controls.md +++ b/docs/mfc/processing-notification-messages-in-extended-combo-box-controls.md @@ -3,11 +3,13 @@ description: "Learn more about: Processing Notification Messages in Extended Com title: "Processing Notification Messages in Extended Combo Box Controls" ms.date: "11/04/2016" helpviewer_keywords: ["extended combo boxes [MFC], notifications", "notifications [MFC], extended combo box controls"] -ms.assetid: 4e442758-d054-4746-bb1a-6ff84accb127 ms.topic: concept-article --- # Processing Notification Messages in Extended Combo Box Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As users interact with the extended combo box, the control (`CComboBoxEx`) sends notification messages to its parent window, usually a view or dialog object. Handle these messages if you want to do something in response. For example, when the user activates the drop-down list or clicks in the control's edit box, the CBEN_BEGINEDIT notification is sent. Use the [Class Wizard](reference/mfc-class-wizard.md) to add notification handlers to the parent class for those messages you want to implement. diff --git a/docs/mfc/processing-notification-messages-in-list-controls.md b/docs/mfc/processing-notification-messages-in-list-controls.md index 9381aeaa0e5..5b96ff8b84d 100644 --- a/docs/mfc/processing-notification-messages-in-list-controls.md +++ b/docs/mfc/processing-notification-messages-in-list-controls.md @@ -3,11 +3,13 @@ description: "Learn more about: Processing Notification Messages in List Control title: "Processing Notification Messages in List Controls" ms.date: "11/04/2016" helpviewer_keywords: ["processing notifications [MFC]", "CListCtrl class [MFC], processing notifications"] -ms.assetid: 1f0e296e-d2a3-48fc-ae38-51d7fb096f51 ms.topic: concept-article --- # Processing Notification Messages in List Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As users click column headers, drag icons, edit labels, and so on, the list control ([CListCtrl](../mfc/reference/clistctrl-class.md)) sends notification messages to its parent window. Handle these messages if you want to do something in response. For example, when the user clicks a column header, you might want to sort the items based on the contents of the clicked column, as in Microsoft Outlook. Process WM_NOTIFY messages from the list control in your view or dialog class. Use the [Class Wizard](reference/mfc-class-wizard.md) to create an [OnChildNotify](../mfc/reference/cwnd-class.md#onchildnotify) handler function with a switch statement based on which notification message is being handled. diff --git a/docs/mfc/processing-notification-messages-in-month-calendar-controls.md b/docs/mfc/processing-notification-messages-in-month-calendar-controls.md index 7f2c355b6a3..56632401488 100644 --- a/docs/mfc/processing-notification-messages-in-month-calendar-controls.md +++ b/docs/mfc/processing-notification-messages-in-month-calendar-controls.md @@ -3,11 +3,13 @@ description: "Learn more about: Processing Notification Messages in Month Calend title: "Processing Notification Messages in Month Calendar Controls" ms.date: "11/04/2016" helpviewer_keywords: ["CMonthCalCtrl class [MFC], notifications", "CMonthCalCtrl class [MFC], day states", "month calendar controls [MFC], notification messages", "notifications [MFC], for CMonthCalCtrl", "notifications [MFC], month calendar control"] -ms.assetid: 607c3e90-0756-493b-9503-ce835a50c7ab ms.topic: concept-article --- # Processing Notification Messages in Month Calendar Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As users interact with the month calendar control (selecting dates and/or viewing a different month), the control (`CMonthCalCtrl`) sends notification messages to its parent window, usually a view or dialog object. Handle these messages if you want to do something in response. For example, when the user selects a new month to view, you could provide a set of dates that should be emphasized. Use the [Class Wizard](reference/mfc-class-wizard.md) to add notification handlers to the parent class for those messages you want to implement. diff --git a/docs/mfc/processing-tab-control-notification-messages.md b/docs/mfc/processing-tab-control-notification-messages.md index 04bb96866dd..55e2b15e573 100644 --- a/docs/mfc/processing-tab-control-notification-messages.md +++ b/docs/mfc/processing-tab-control-notification-messages.md @@ -3,11 +3,13 @@ description: "Learn more about: Processing Tab Control Notification Messages" title: "Processing Tab Control Notification Messages" ms.date: "11/04/2016" helpviewer_keywords: ["notifications [MFC], tab controls", "CTabCtrl class [MFC], processing notifications", "notifications [MFC], processing in CTabCtrl", "processing notifications [MFC]", "tab controls [MFC], processing notifications"] -ms.assetid: 758ccb7a-9e73-48f8-9073-23f7cb09918c ms.topic: concept-article --- # Processing Tab Control Notification Messages +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As users click tabs or buttons, the tab control ([CTabCtrl](../mfc/reference/ctabctrl-class.md)) sends notification messages to its parent window. Handle these messages if you want to do something in response. For example, when the user clicks a tab, you may want to preset control data on the page prior to displaying it. Process WM_NOTIFY messages from the tab control in your view or dialog class. Use the [Class Wizard](reference/mfc-class-wizard.md) to create an [OnChildNotify](../mfc/reference/cwnd-class.md#onchildnotify) handler function with a switch statement based on which notification message is being handled. For a list of the notifications a tab control can send to its parent window, see the **Notifications** section of [Tab Control Reference](/windows/win32/controls/tab-control-reference) in the Windows SDK. diff --git a/docs/mfc/programmatic-printing.md b/docs/mfc/programmatic-printing.md index 079ccaf4b9f..913dff44ca3 100644 --- a/docs/mfc/programmatic-printing.md +++ b/docs/mfc/programmatic-printing.md @@ -3,10 +3,12 @@ description: "Learn more about: Programmatic Printing" title: "Programmatic Printing" ms.date: "11/04/2016" helpviewer_keywords: ["printing [MFC], active documents", "active documents [MFC], printing", "printing [MFC], programmatic", "IPrint interface", "printing [MFC]"] -ms.assetid: 3db0945b-5e13-4be4-86a0-6aecdae565bd --- # Programmatic Printing +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + OLE provided the means to uniquely identify persistent documents (`GetClassFile`) and load them into their associated code (`CoCreateInstance`, `QueryInterface(IID_IPersistFile)`, `QueryInterface(IID_IPersistStorage)`, `IPersistFile::Load`, and `IPersistStorage::Load`). To further enable printing documents, active document containment (using an existing OLE design not shipped with OLE 2.0 originally) introduces a base-standard printing interface, `IPrint`, generally available through any object that can load the persistent state of the document type. Each view of an active document can optionally support the `IPrint` interface to provide these capabilities. The `IPrint` interface is defined as follows: diff --git a/docs/mfc/programming-activex-controls-in-a-activex-control-container.md b/docs/mfc/programming-activex-controls-in-a-activex-control-container.md index 594f5d61f3c..327d058bc67 100644 --- a/docs/mfc/programming-activex-controls-in-a-activex-control-container.md +++ b/docs/mfc/programming-activex-controls-in-a-activex-control-container.md @@ -3,10 +3,12 @@ description: "Learn more about: ActiveX Control Containers: Programming ActiveX title: "ActiveX Control Containers: Programming ActiveX Controls in an ActiveX Control Container" ms.date: "09/12/2018" helpviewer_keywords: ["ActiveX control containers [MFC], accessing ActiveX controls", "Confirm Classes dialog box", "wrapper classes [MFC], ActiveX controls", "ActiveX control containers [MFC], wrapper classes", "ActiveX controls [MFC], accessing", "MFC ActiveX controls [MFC], accessing in containers", "header files [MFC], for ActiveX control wrapper class", "wrapper classes [MFC], using", "ActiveX controls [MFC], wrapper classes"] -ms.assetid: ef9b2480-92d6-4191-b16e-8055c4fd7b73 --- # ActiveX Control Containers: Programming ActiveX Controls in an ActiveX Control Container +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes the process for accessing the exposed [methods](../mfc/mfc-activex-controls-methods.md) and [properties](../mfc/mfc-activex-controls-properties.md) of embedded ActiveX controls. >[!IMPORTANT] diff --git a/docs/mfc/property-sheets-and-property-pages-in-mfc.md b/docs/mfc/property-sheets-and-property-pages-in-mfc.md index d1ff2461a9e..26ba5d7997f 100644 --- a/docs/mfc/property-sheets-and-property-pages-in-mfc.md +++ b/docs/mfc/property-sheets-and-property-pages-in-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Property Sheets and Property Pages in MFC" title: "Property Sheets and Property Pages in MFC" ms.date: "11/04/2016" helpviewer_keywords: ["property pages [MFC], MFC", "controls [MFC], property sheets", "property sheets, MFC", "tab dialog boxes"] -ms.assetid: e1bede2b-0285-4b88-a052-0f8a372807a2 --- # Property Sheets and Property Pages in MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A property sheet, also known as a tab dialog box, is a dialog box that contains property pages. Each property page is based on a dialog template resource and contains controls. It is enclosed on a page with a tab on top. The tab names the page and indicates its purpose. Users click a tab in the property sheet to select a set of controls. Use pages to group the controls in the property sheet into meaningful sets. The contained property sheet typically has several controls of its own. These apply to all pages. diff --git a/docs/mfc/property-sheets-and-property-pages-mfc.md b/docs/mfc/property-sheets-and-property-pages-mfc.md index 6fa12970360..d2ab2c06422 100644 --- a/docs/mfc/property-sheets-and-property-pages-mfc.md +++ b/docs/mfc/property-sheets-and-property-pages-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Property Sheets and Property Pages (MFC)" title: "Property Sheets and Property Pages (MFC)" ms.date: "11/04/2016" helpviewer_keywords: ["MFC dialog boxes [MFC], tabs", "property pages [MFC], property sheets", "CPropertyPage class [MFC], property sheets and pages", "CPropertySheet class [MFC], property sheets and pages", "property sheets, property pages"] -ms.assetid: de8fea12-6c35-4cef-8625-b8073a379446 --- # Property Sheets and Property Pages (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An MFC [dialog box](../mfc/dialog-boxes.md) can take on a "tab dialog" look by incorporating property sheets and property pages. Called a "property sheet" in MFC, this kind of dialog box, similar to many dialog boxes in Microsoft Word, Excel, and Visual Studio, appears to contain a stack of tabbed sheets, much like a stack of file folders seen from front to back, or a group of cascaded windows. Controls on the front tab are visible; only the labeled tab is visible on the rear tabs. Property sheets are particularly useful for managing large numbers of properties or settings that fall fairly neatly into several groups. Typically, one property sheet can simplify a user interface by replacing several separate dialog boxes. As of MFC version 4.0, property sheets and property pages are implemented using the common controls that come with Windows 95 and Windows NT version 3.51 and later. diff --git a/docs/mfc/property-sheets-as-wizards.md b/docs/mfc/property-sheets-as-wizards.md index 30372a26477..028073f571a 100644 --- a/docs/mfc/property-sheets-as-wizards.md +++ b/docs/mfc/property-sheets-as-wizards.md @@ -3,10 +3,12 @@ description: "Learn more about: Property Sheets as Wizards" title: "Property Sheets as Wizards" ms.date: "11/04/2016" helpviewer_keywords: ["property sheets, as wizards"] -ms.assetid: 1ea66ecb-23b0-484a-838d-58671a2999b5 --- # Property Sheets as Wizards +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A key characteristic of a wizard property sheet is that navigation is provided with Next or Finish, Back, and Cancel buttons instead of tabs. You need to call [CPropertySheet::SetWizardMode](../mfc/reference/cpropertysheet-class.md#setwizardmode) before calling [CPropertySheet::DoModal](../mfc/reference/cpropertysheet-class.md#domodal) on the property sheet object to take advantage of this feature. The user receives the same [CPropertyPage::OnSetActive](../mfc/reference/cpropertypage-class.md#onsetactive) and [CPropertyPage::OnKillActive](../mfc/reference/cpropertypage-class.md#onkillactive) notifications while moving from one page to another page. Next and Finish buttons are mutually exclusive controls; that is, only one of them will be shown at a time. On the first page, the Next button should be enabled. If the user is on the last page, the Finish button should be enabled. This is not done automatically by the framework. You have to call [CPropertySheet::SetWizardButton](../mfc/reference/cpropertysheet-class.md#setwizardbuttons) on the last page to achieve this. diff --git a/docs/mfc/property-sheets-mfc.md b/docs/mfc/property-sheets-mfc.md index aaf53b3bab6..e387244b3fb 100644 --- a/docs/mfc/property-sheets-mfc.md +++ b/docs/mfc/property-sheets-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Property Sheets (MFC)" title: "Property Sheets (MFC)" ms.date: "11/04/2016" helpviewer_keywords: ["dialog boxes [MFC], tabs", "property sheets", "dialog boxes [MFC], property sheets", "tab dialog boxes"] -ms.assetid: 09439f65-921d-45a2-b3cc-e13884a087b1 --- # Property Sheets (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This family of articles explains how to implement support for property sheets in MFC applications. A property sheet, also known as a tab dialog box, provides a way to manage large numbers of controls in a dialog box. The property sheet contains property pages, each based on a separate dialog template resource. You can divide your dialog box's controls into logical groups and put each group on its own property page. ## What do you want to know more about From 61b14130ca3812c7d13ed45167de3ce26dbd6406 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 20 Feb 2026 12:57:28 -0800 Subject: [PATCH 311/619] Batch 5: update files (#6252) --- .../providing-drag-and-drop-support-for-header-items.md | 4 +++- docs/mfc/providing-flicker-free-activation.md | 4 +++- docs/mfc/providing-mouse-interaction-while-inactive.md | 4 +++- docs/mfc/providing-windowless-activation.md | 4 +++- docs/mfc/reading-and-writing-files.md | 4 +++- docs/mfc/ready-to-use-array-classes.md | 4 +++- docs/mfc/ready-to-use-list-classes.md | 4 +++- docs/mfc/ready-to-use-map-classes.md | 4 +++- docs/mfc/rebar-controls-and-bands.md | 4 +++- docs/mfc/receiving-notification-from-common-controls.md | 4 +++- .../recommendations-for-choosing-a-collection-class.md | 4 +++- docs/mfc/recommendations-for-handling-input-output.md | 4 +++- docs/mfc/reference/add-class-from-typelib-wizard.md | 4 +++- docs/mfc/reference/add-idl-mfc-method-wizard.md | 3 +++ ...dd-interface-definition-library-mfc-property-wizard.md | 3 +++ .../reference/adding-an-mfc-class-from-a-type-library.md | 3 +++ docs/mfc/reference/adding-an-mfc-class.md | 4 +++- docs/mfc/reference/adding-an-mfc-message-handler.md | 4 +++- docs/mfc/reference/adding-an-mfc-odbc-consumer.md | 4 +++- .../reference/adding-atl-support-to-your-mfc-project.md | 8 ++++---- .../reference/advanced-features-mfc-application-wizard.md | 4 +++- docs/mfc/reference/afx-extension-module-structure.md | 4 +++- docs/mfc/reference/afx-global-data-structure.md | 4 +++- docs/mfc/reference/afx-messages.md | 4 +++- docs/mfc/reference/application-control.md | 3 +++ .../reference/application-information-and-management.md | 3 +++ .../application-settings-mfc-activex-control-wizard.md | 4 +++- docs/mfc/reference/application-settings-mfc-dll-wizard.md | 4 +++- .../reference/application-type-mfc-application-wizard.md | 4 +++- docs/mfc/reference/buffercommand-enumeration.md | 3 +++ .../reference/cacceleratedeceleratetransition-class.md | 4 +++- docs/mfc/reference/callback-functions-used-by-mfc.md | 4 +++- docs/mfc/reference/canimatectrl-class.md | 4 +++- docs/mfc/reference/canimationbaseobject-class.md | 4 +++- docs/mfc/reference/canimationcolor-class.md | 4 +++- docs/mfc/reference/canimationcontroller-class.md | 4 +++- docs/mfc/reference/canimationgroup-class.md | 4 +++- docs/mfc/reference/canimationmanagereventhandler-class.md | 4 +++- docs/mfc/reference/canimationpoint-class.md | 3 +++ docs/mfc/reference/canimationrect-class.md | 4 +++- docs/mfc/reference/canimationsize-class.md | 4 +++- .../reference/canimationstoryboardeventhandler-class.md | 4 +++- docs/mfc/reference/canimationtimereventhandler-class.md | 4 +++- docs/mfc/reference/canimationvalue-class.md | 4 +++- docs/mfc/reference/canimationvariable-class.md | 4 +++- .../reference/canimationvariablechangehandler-class.md | 4 +++- .../canimationvariableintegerchangehandler-class.md | 4 +++- docs/mfc/reference/carchive-class.md | 3 +++ docs/mfc/reference/carchiveexception-class.md | 4 +++- docs/mfc/reference/carray-class.md | 4 +++- docs/mfc/reference/casyncmonikerfile-class.md | 4 +++- docs/mfc/reference/casyncsocket-class.md | 3 +++ docs/mfc/reference/cautohidedocksite-class.md | 4 +++- docs/mfc/reference/cbasekeyframe-class.md | 3 +++ docs/mfc/reference/cbasepane-class.md | 3 +++ docs/mfc/reference/cbasetabbedpane-class.md | 4 +++- docs/mfc/reference/cbasetransition-class.md | 4 +++- docs/mfc/reference/cbitmap-class.md | 4 +++- docs/mfc/reference/cbitmapbutton-class.md | 4 +++- docs/mfc/reference/cbitmaprendertarget-class.md | 4 +++- docs/mfc/reference/cbrush-class.md | 3 +++ docs/mfc/reference/cbutton-class.md | 4 +++- docs/mfc/reference/cbytearray-class.md | 4 +++- docs/mfc/reference/ccacheddatapathproperty-class.md | 4 +++- docs/mfc/reference/cchecklistbox-class.md | 3 +++ docs/mfc/reference/cclientdc-class.md | 4 +++- docs/mfc/reference/ccmdtarget-class.md | 3 +++ docs/mfc/reference/ccmdui-class.md | 4 +++- docs/mfc/reference/ccolordialog-class.md | 4 +++- docs/mfc/reference/ccombobox-class.md | 3 +++ docs/mfc/reference/ccomboboxex-class.md | 4 +++- docs/mfc/reference/ccommandlineinfo-class.md | 3 +++ docs/mfc/reference/ccommondialog-class.md | 4 +++- docs/mfc/reference/cconnectionpoint-class.md | 4 +++- docs/mfc/reference/cconstanttransition-class.md | 4 +++- docs/mfc/reference/ccontextmenumanager-class.md | 4 +++- docs/mfc/reference/ccontrolbar-class.md | 4 +++- docs/mfc/reference/ccreatecontext-structure.md | 4 +++- docs/mfc/reference/ccriticalsection-class.md | 3 +++ docs/mfc/reference/cctrlview-class.md | 4 +++- docs/mfc/reference/ccubictransition-class.md | 4 +++- docs/mfc/reference/ccustominterpolator-class.md | 4 +++- docs/mfc/reference/ccustomtransition-class.md | 4 +++- docs/mfc/reference/cd2dbitmap-class.md | 3 +++ docs/mfc/reference/cd2dbitmapbrush-class.md | 4 +++- docs/mfc/reference/cd2dbrush-class.md | 3 +++ docs/mfc/reference/cd2dbrushproperties-class.md | 4 +++- docs/mfc/reference/cd2dellipse-class.md | 4 +++- docs/mfc/reference/cd2dgeometry-class.md | 4 +++- docs/mfc/reference/cd2dgeometrysink-class.md | 4 +++- docs/mfc/reference/cd2dgradientbrush-class.md | 4 +++- docs/mfc/reference/cd2dlayer-class.md | 4 +++- docs/mfc/reference/cd2dlineargradientbrush-class.md | 4 +++- docs/mfc/reference/cd2dmesh-class.md | 4 +++- docs/mfc/reference/cd2dpathgeometry-class.md | 3 +++ docs/mfc/reference/cd2dpointf-class.md | 4 +++- docs/mfc/reference/cd2dpointu-class.md | 4 +++- docs/mfc/reference/cd2dradialgradientbrush-class.md | 4 +++- docs/mfc/reference/cd2drectf-class.md | 4 +++- docs/mfc/reference/cd2drectu-class.md | 4 +++- 100 files changed, 301 insertions(+), 83 deletions(-) diff --git a/docs/mfc/providing-drag-and-drop-support-for-header-items.md b/docs/mfc/providing-drag-and-drop-support-for-header-items.md index 0d8f5e116fa..283f10cc348 100644 --- a/docs/mfc/providing-drag-and-drop-support-for-header-items.md +++ b/docs/mfc/providing-drag-and-drop-support-for-header-items.md @@ -3,11 +3,13 @@ description: "Learn more about: Providing Drag-and-Drop Support for Header Items title: "Providing Drag-and-Drop Support for Header Items" ms.date: "11/04/2016" helpviewer_keywords: ["HDS_DRAGDROP style", "header items in header controls", "CHeaderCtrl class [MFC], drag and drop support", "HDN_ notifications [MFC]"] -ms.assetid: 93a152ec-804f-488f-b260-b3a438d0dc0f ms.topic: concept-article --- # Providing Drag-and-Drop Support for Header Items +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To provide drag-and-drop support for header items, specify the HDS_DRAGDROP style. Drag-and-drop support for header items gives the user the ability to reorder the header items of a header control. The default behavior provides a semitransparent drag image of the header item being dragged and a visual indicator of the new position, if the header item is dropped. As with common drag-and-drop functionality, you can extend the default drag-and-drop behavior by handling the HDN_BEGINDRAG and HDN_ENDDRAG notifications. You can also customize the appearance of the drag image by overriding the [CHeaderCtrl::CreateDragImage](../mfc/reference/cheaderctrl-class.md#createdragimage) member function. diff --git a/docs/mfc/providing-flicker-free-activation.md b/docs/mfc/providing-flicker-free-activation.md index 177d650be4e..edd2defede6 100644 --- a/docs/mfc/providing-flicker-free-activation.md +++ b/docs/mfc/providing-flicker-free-activation.md @@ -3,11 +3,13 @@ description: "Learn more about: Providing Flicker-Free Activation" title: "Providing Flicker-Free Activation" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ActiveX controls [MFC], flicker-free", "flicker, MFC ActiveX controls", "activation [MFC], flicker-free"] -ms.assetid: bcb24b77-31d8-44a0-8c58-2ea6213b4c43 ms.topic: concept-article --- # Providing Flicker-Free Activation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If your control draws itself identically in the inactive and active states (and does not use windowless activation), you can eliminate the drawing operations and the accompanying visual flicker that normally occur when making the transition between the inactive and active states. To do this, include the **noFlickerActivate** flag in the set of flags returned by [COleControl::GetControlFlags](../mfc/reference/colecontrol-class.md#getcontrolflags). For example: [!code-cpp[NVC_MFC_AxOpt#5](../mfc/codesnippet/cpp/providing-flicker-free-activation_1.cpp)] diff --git a/docs/mfc/providing-mouse-interaction-while-inactive.md b/docs/mfc/providing-mouse-interaction-while-inactive.md index 21a2b685851..446aa4c6892 100644 --- a/docs/mfc/providing-mouse-interaction-while-inactive.md +++ b/docs/mfc/providing-mouse-interaction-while-inactive.md @@ -3,11 +3,13 @@ description: "Learn more about: Providing Mouse Interaction While Inactive" title: "Providing Mouse Interaction While Inactive" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ActiveX controls [MFC], mouse interaction"] -ms.assetid: b09106bf-44c7-4b9b-a6d9-0d624f16f5b3 ms.topic: concept-article --- # Providing Mouse Interaction While Inactive +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If your control is not immediately activated, you may still want it to process WM_SETCURSOR and WM_MOUSEMOVE messages, even though the control has no window of its own. This can be accomplished by enabling `COleControl`'s implementation of the `IPointerInactive` interface, which is disabled by default. (See the *ActiveX SDK* for a description of this interface.) To enable it, include the pointerInactive flag in the set of flags returned by [COleControl::GetControlFlags](../mfc/reference/colecontrol-class.md#getcontrolflags): [!code-cpp[NVC_MFC_AxOpt#5](../mfc/codesnippet/cpp/providing-mouse-interaction-while-inactive_1.cpp)] diff --git a/docs/mfc/providing-windowless-activation.md b/docs/mfc/providing-windowless-activation.md index cf11fd11d9b..d30b308b309 100644 --- a/docs/mfc/providing-windowless-activation.md +++ b/docs/mfc/providing-windowless-activation.md @@ -3,11 +3,13 @@ description: "Learn more about: Providing Windowless Activation" title: "Providing Windowless Activation" ms.date: "11/04/2016" helpviewer_keywords: ["windowless activation of MFC ActiveX controls", "activation [MFC], MFC ActiveX controls", "MFC ActiveX controls [MFC], activate options", "activation [MFC], windowless"] -ms.assetid: 094903b5-c344-42fa-96ff-ce01e16891c5 ms.topic: concept-article --- # Providing Windowless Activation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Window creation code (that is, everything that happens when you call `CreateWindow`) is costly to execute. A control that maintains an on-screen window has to manage messages for the window. Windowless controls are therefore faster than controls with windows. A further advantage of windowless controls is that, unlike windowed controls, windowless controls support transparent painting and nonrectangular screen regions. A common example of a transparent control is a text control with a transparent background. The controls paints the text but not the background, so whatever is under the text shows through. Newer forms often make use of nonrectangular controls, such as arrows and round buttons. diff --git a/docs/mfc/reading-and-writing-files.md b/docs/mfc/reading-and-writing-files.md index 22afa9e55f8..1a536cdadb6 100644 --- a/docs/mfc/reading-and-writing-files.md +++ b/docs/mfc/reading-and-writing-files.md @@ -3,11 +3,13 @@ description: "Learn more about: Reading and Writing Files" title: "Reading and Writing Files" ms.date: "11/04/2016" helpviewer_keywords: ["CFile class [MFC], objects", "examples [MFC], reading files", "files [MFC], writing to", "examples [MFC], writing to files", "files [MFC], reading", "MFC, file operations", "CFile class [MFC], reading and writing CFile objects", "reading files", "writing to files [MFC]"] -ms.assetid: cac0c826-ba56-495f-99b3-ce6336f65763 ms.topic: how-to --- # Reading and Writing Files +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If you've used the C run-time library file-handling functions, MFC reading and writing operations will appear familiar. This article describes reading directly from and writing directly to a `CFile` object. You can also do buffered file I/O with the [CArchive](../mfc/reference/carchive-class.md) class. #### To read from and write to the file diff --git a/docs/mfc/ready-to-use-array-classes.md b/docs/mfc/ready-to-use-array-classes.md index 16f2460eccf..f63012d0816 100644 --- a/docs/mfc/ready-to-use-array-classes.md +++ b/docs/mfc/ready-to-use-array-classes.md @@ -4,10 +4,12 @@ title: "Ready-to-Use Array Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.array"] helpviewer_keywords: ["arrays [MFC], classes", "collection classes [MFC], arrays", "classes [MFC], array"] -ms.assetid: fdeabf95-2fe7-43a8-8f88-d954133caf52 --- # Ready-to-Use Array Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following classes are ready-to-use array classes. [CByteArray](../mfc/reference/cbytearray-class.md)
diff --git a/docs/mfc/ready-to-use-list-classes.md b/docs/mfc/ready-to-use-list-classes.md index 7e242c1ad12..50647fdfc75 100644 --- a/docs/mfc/ready-to-use-list-classes.md +++ b/docs/mfc/ready-to-use-list-classes.md @@ -4,10 +4,12 @@ title: "Ready-to-Use List Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.list"] helpviewer_keywords: ["classes [MFC], list", "list classes [MFC]", "collection classes [MFC], lists"] -ms.assetid: aed8e9bd-edb7-4620-84a2-77c20322abd7 --- # Ready-to-Use List Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following classes are ready-to-use list classes. [CObList](../mfc/reference/coblist-class.md)
diff --git a/docs/mfc/ready-to-use-map-classes.md b/docs/mfc/ready-to-use-map-classes.md index 2c2b8674f79..002957165bd 100644 --- a/docs/mfc/ready-to-use-map-classes.md +++ b/docs/mfc/ready-to-use-map-classes.md @@ -4,10 +4,12 @@ title: "Ready-to-Use Map Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.map"] helpviewer_keywords: ["collection classes [MFC], maps", "classes [MFC], map", "map classes [MFC]"] -ms.assetid: 3f0b1c05-2243-4d4d-98d4-429fc3310c9f --- # Ready-to-Use Map Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following classes are ready-to-use map classes. [CMapPtrToPtr](../mfc/reference/cmapptrtoptr-class.md)
diff --git a/docs/mfc/rebar-controls-and-bands.md b/docs/mfc/rebar-controls-and-bands.md index 4efeb0795a6..0b14f9dbb4a 100644 --- a/docs/mfc/rebar-controls-and-bands.md +++ b/docs/mfc/rebar-controls-and-bands.md @@ -3,10 +3,12 @@ description: "Learn more about: Rebar Controls and Bands" title: "Rebar Controls and Bands" ms.date: "11/04/2016" helpviewer_keywords: ["rebar controls [MFC], working with bands in", "bands, in rebar controls"] -ms.assetid: b647e7a5-9ea7-48b1-8e5f-096d104748f0 --- # Rebar Controls and Bands +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The main purpose of a rebar control is to act as a container for child windows, common dialog controls, menus, toolbars, and so on. This containment is supported by the concept of a "band." Each rebar band can contain any combination of a gripper bar, a bitmap, a text label, and a child window. Class `CReBarCtrl` has many member functions that you can use to retrieve, and manipulate, information for a specific rebar band: diff --git a/docs/mfc/receiving-notification-from-common-controls.md b/docs/mfc/receiving-notification-from-common-controls.md index 8e783462914..435756b0ced 100644 --- a/docs/mfc/receiving-notification-from-common-controls.md +++ b/docs/mfc/receiving-notification-from-common-controls.md @@ -3,11 +3,13 @@ description: "Learn more about: Receiving Notification from Common Controls" title: "Receiving Notification from Common Controls" ms.date: "11/04/2016" helpviewer_keywords: ["OnNotify method [MFC]", "common controls [MFC], notifications", "ON_NOTIFY macro [MFC]", "controls [MFC], notifications", "receiving notifications from common controls", "notifications [MFC], common controls", "Windows common controls [MFC], notifications", "WM_NOTIFY message"] -ms.assetid: 50194592-d60d-44d0-8ab3-338a2a2c63e7 ms.topic: concept-article --- # Receiving Notification from Common Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Common controls are child windows that send notification messages to the parent window when events, such as input from the user, occur in the control. The application relies on these notification messages to determine what action the user wants it to take. Most common controls send notification messages as WM_NOTIFY messages. Windows controls send most notification messages as WM_COMMAND messages. [CWnd::OnNotify](../mfc/reference/cwnd-class.md#onnotify) is the handler for the WM_NOTIFY message. As with `CWnd::OnCommand`, the implementation of `OnNotify` dispatches the notification message to `OnCmdMsg` for handling in message maps. The message-map entry for handling notifications is ON_NOTIFY. For more information, see [Technical Note 61: ON_NOTIFY and WM_NOTIFY Messages](../mfc/tn061-on-notify-and-wm-notify-messages.md). diff --git a/docs/mfc/recommendations-for-choosing-a-collection-class.md b/docs/mfc/recommendations-for-choosing-a-collection-class.md index aaf0201877d..081935d01d7 100644 --- a/docs/mfc/recommendations-for-choosing-a-collection-class.md +++ b/docs/mfc/recommendations-for-choosing-a-collection-class.md @@ -3,10 +3,12 @@ description: "Learn more about: Recommendations for Choosing a Collection Class" title: "Recommendations for Choosing a Collection Class" ms.date: "11/04/2016" helpviewer_keywords: ["type safety of collection classes [MFC]", "collection classes [MFC], serialization", "collection classes [MFC], speed", "collection classes [MFC], type safety", "collection classes [MFC], choosing", "collection classes [MFC], functionality", "shapes, collection", "collection classes [MFC], template-based", "MFC collection classes [MFC], characteristics", "collection classes [MFC], about collection classes [MFC]", "serialization [MFC], collection classes", "collection classes [MFC], duplicates allowed", "collection classes [MFC], shapes"] -ms.assetid: a82188cd-443f-40d8-a244-edf292a53db4 --- # Recommendations for Choosing a Collection Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article contains detailed information designed to help you choose a collection class for your particular application needs. Your choice of a collection class depends on a number of factors, including: diff --git a/docs/mfc/recommendations-for-handling-input-output.md b/docs/mfc/recommendations-for-handling-input-output.md index 891b0028419..151b6e1c4a6 100644 --- a/docs/mfc/recommendations-for-handling-input-output.md +++ b/docs/mfc/recommendations-for-handling-input-output.md @@ -3,10 +3,12 @@ description: "Learn more about: Recommendations for Handling Input/Output" title: "Recommendations for Handling Input-Output" ms.date: "11/04/2016" helpviewer_keywords: ["I/O [MFC], about I/O", "file-based I/O options", "I/O [MFC]", "I/O [MFC], options", "I/O [MFC], file-based options"] -ms.assetid: d664b175-3b4a-40c3-b14b-39de6b12e419 --- # Recommendations for Handling Input/Output +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Whether you use file-based I/O or not depends on how you respond to the questions in the following decision tree: **Does the primary data in your application reside in a disk file** diff --git a/docs/mfc/reference/add-class-from-typelib-wizard.md b/docs/mfc/reference/add-class-from-typelib-wizard.md index 1f45b4a023c..378a883f19a 100644 --- a/docs/mfc/reference/add-class-from-typelib-wizard.md +++ b/docs/mfc/reference/add-class-from-typelib-wizard.md @@ -3,11 +3,13 @@ description: "Learn more about: Add Class from Typelib Wizard" title: "Add Class from Typelib Wizard" ms.date: "03/10/2022" helpviewer_keywords: ["COM interfaces, adding classes"] -ms.assetid: 96152afd-9374-4649-a6ab-b0fa2a5592a3 ms.custom: devdivchpfy22 --- # Add Class from Typelib Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + ::: moniker range=">=msvc-160" The wizard creates a class for each interface you add from the selected type library. diff --git a/docs/mfc/reference/add-idl-mfc-method-wizard.md b/docs/mfc/reference/add-idl-mfc-method-wizard.md index 4a8592c7e2c..f93f1ee4b80 100644 --- a/docs/mfc/reference/add-idl-mfc-method-wizard.md +++ b/docs/mfc/reference/add-idl-mfc-method-wizard.md @@ -9,6 +9,9 @@ ms.custom: devdivchpfy22 # Add an IDL MFC method +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The **Add IDL MFC Method** wizard adds a method to an Interface Definition Library (IDL) interface defined in your Microsoft Framework Class (MFC) project. If the project contains a class associated with the interface, the wizard also adds the method to the class. To use this wizard, you must be in an MFC Project, ActiveX project, or an ATL project that supports MFC. For example, if you have a Microsoft ActiveX control project, you can use the following procedure to add a method to an IDL interface in the solution. diff --git a/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md b/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md index 91fc8ecb27e..6ecb599ae65 100644 --- a/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md +++ b/docs/mfc/reference/add-interface-definition-library-mfc-property-wizard.md @@ -9,6 +9,9 @@ ms.custom: devdivchpfy22 # Add an IDL MFC property +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The **Add IDL MFC Property** wizard adds a property to an Interface Definition Library (IDL) interface defined in your Microsoft Framework Class (MFC) project. To use this wizard, you must be in an MFC Project, ActiveX project, or an ATL project that supports MFC. For example, if you have a Microsoft ActiveX control project, you can use the following procedure to add a property to an IDL interface in the solution. diff --git a/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md b/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md index db0802eea7c..533a9746542 100644 --- a/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md +++ b/docs/mfc/reference/adding-an-mfc-class-from-a-type-library.md @@ -7,6 +7,9 @@ ms.custom: devdivchpfy22 --- # Add an MFC class from a type library +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Use this wizard to create an MFC class from an interface in a type library. You can add an MFC class to an [MFC application](../../mfc/reference/creating-an-mfc-application.md), an [MFC DLL](../../mfc/reference/creating-an-mfc-dll-project.md), or an [MFC ActiveX control](../../mfc/reference/creating-an-mfc-activex-control.md). > [!NOTE] diff --git a/docs/mfc/reference/adding-an-mfc-class.md b/docs/mfc/reference/adding-an-mfc-class.md index aa1ef1c78f2..45dea891a56 100644 --- a/docs/mfc/reference/adding-an-mfc-class.md +++ b/docs/mfc/reference/adding-an-mfc-class.md @@ -4,10 +4,12 @@ title: "Adding an MFC Class" ms.date: "09/06/2019" f1_keywords: ["vc.codewiz.classes.adding.mfc"] helpviewer_keywords: ["classes [MFC], adding MFC", "MFC, adding classes"] -ms.assetid: 9a96b67f-40bf-43d4-8872-2f8dfc5404f1 --- # Adding an MFC Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To add classes derived from Microsoft Foundation Class (MFC) library classes to your project, use the **Add Class** button in [Class Wizard](mfc-class-wizard.md). Specify the name of the new class, select the base class, and select the ID of the dialog box with which it is associated (if any). The wizard creates a header file and an implementation file and adds them to your project. > [!NOTE] diff --git a/docs/mfc/reference/adding-an-mfc-message-handler.md b/docs/mfc/reference/adding-an-mfc-message-handler.md index 3bfd45427da..6d413d2139e 100644 --- a/docs/mfc/reference/adding-an-mfc-message-handler.md +++ b/docs/mfc/reference/adding-an-mfc-message-handler.md @@ -4,10 +4,12 @@ title: "Adding an MFC Message Handler" ms.date: "09/06/2019" f1_keywords: ["vc.codewiz.adding.mfc.msghandler"] helpviewer_keywords: ["message handling [MFC], adding handlers"] -ms.assetid: 4251cfce-76ca-443d-bd2f-6303afa6d942 --- # Adding an MFC Message Handler +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can use the [Class Wizard](mfc-class-wizard.md) or the **Properties** window in **CLass View** to add a message handler (a member function that handles Windows messages) to a class and map Windows messages to the message handler. You can also add [an event handler for any dialog box control](../../windows/adding-editing-or-deleting-controls.md). By using the **Class Wizard** or **Properties** window (in **Class View**) to define message- and event-handling functions, you can automatically update the message-dispatch table (or message map) and your class header file. diff --git a/docs/mfc/reference/adding-an-mfc-odbc-consumer.md b/docs/mfc/reference/adding-an-mfc-odbc-consumer.md index 887931326d3..44a5ce4943a 100644 --- a/docs/mfc/reference/adding-an-mfc-odbc-consumer.md +++ b/docs/mfc/reference/adding-an-mfc-odbc-consumer.md @@ -3,10 +3,12 @@ description: "Learn more about: Adding an MFC ODBC Consumer" title: "Adding an MFC ODBC Consumer" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ODBC consumers"] -ms.assetid: 2dc97909-1f7e-43ee-9d47-99e612727058 --- # Adding an MFC ODBC Consumer +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An MFC ODBC consumer consists of an ODBC recordset class and data bindings necessary to access a data source. ### To add an MFC ODBC consumer diff --git a/docs/mfc/reference/adding-atl-support-to-your-mfc-project.md b/docs/mfc/reference/adding-atl-support-to-your-mfc-project.md index b994dd50d59..db988111e96 100644 --- a/docs/mfc/reference/adding-atl-support-to-your-mfc-project.md +++ b/docs/mfc/reference/adding-atl-support-to-your-mfc-project.md @@ -4,14 +4,14 @@ title: "Adding ATL Support to Your MFC Project" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.adding.atl.mfc"] helpviewer_keywords: ["MFC, ATL support", "ATL, MFC projects"] -ms.assetid: b5fe15d6-7752-4818-b9f9-62482ad35c95 --- # Adding ATL Support to Your MFC Project -If you have already created an MFC-based application, then you can add support for the Active Template Library (ATL) easily by using the IDE. +>[!NOTE] +> The Microsoft Foundation Classes (MFC) and Active Template Library (ATL) libraries continue to be supported. However, we're no longer adding features or updating the documentation. +> Active Template Library (ATL) support applies only to simple COM objects added to an MFC executable or DLL project. You can add other COM objects (including ActiveX controls) to MFC projects, but the objects might not operate as expected. -> [!NOTE] -> This support applies only to simple COM objects added to an MFC executable or DLL project. You can add other COM objects (including ActiveX controls) to MFC projects, but the objects might not operate as expected. +If you have already created an MFC-based application, then you can add support for the Active Template Library (ATL) easily by using the IDE. ::: moniker range=">=msvc-160" diff --git a/docs/mfc/reference/advanced-features-mfc-application-wizard.md b/docs/mfc/reference/advanced-features-mfc-application-wizard.md index 7a7c5bbdfe2..aa7ae813506 100644 --- a/docs/mfc/reference/advanced-features-mfc-application-wizard.md +++ b/docs/mfc/reference/advanced-features-mfc-application-wizard.md @@ -4,10 +4,12 @@ title: "Advanced Features, MFC Application Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.mfc.exe.advanced"] helpviewer_keywords: ["MFC Application Wizard, advanced features"] -ms.assetid: 8a6681c5-6576-4b12-841a-6862beee76fa --- # Advanced Features, MFC Application Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic lists options for additional features for your application, such as Help, printing support, and so on. In each section, specify additional support for these advanced features. - **Context-sensitive help (HTML)** diff --git a/docs/mfc/reference/afx-extension-module-structure.md b/docs/mfc/reference/afx-extension-module-structure.md index e64cd1da160..925e38e46c1 100644 --- a/docs/mfc/reference/afx-extension-module-structure.md +++ b/docs/mfc/reference/afx-extension-module-structure.md @@ -4,10 +4,12 @@ title: "AFX_EXTENSION_MODULE Structure" ms.date: "11/04/2016" f1_keywords: ["AFX_EXTENSION_MODULE"] helpviewer_keywords: ["AFX_EXTENSION_MODULE structure [MFC]"] -ms.assetid: b85a989c-d0c5-4b28-b53c-dad45b75704e --- # AFX_EXTENSION_MODULE Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `AFX_EXTENSION_MODULE` is used during initialization of MFC extension DLLs to hold the state of MFC extension DLL module. ## Syntax diff --git a/docs/mfc/reference/afx-global-data-structure.md b/docs/mfc/reference/afx-global-data-structure.md index 22f9fd769ea..1abc9996801 100644 --- a/docs/mfc/reference/afx-global-data-structure.md +++ b/docs/mfc/reference/afx-global-data-structure.md @@ -4,10 +4,12 @@ title: "AFX_GLOBAL_DATA Structure" ms.date: "11/04/2016" f1_keywords: ["AFX_GLOBAL_DATA", "AFXGLOBALS/AFX_GLOBAL_DATA::AFX_GLOBAL_DATA", "AFXGLOBALS/AFX_GLOBAL_DATA::~AFX_GLOBAL_DATA", "AFXGLOBALS/AFX_GLOBAL_DATA::CleanUp", "AFXGLOBALS/AFX_GLOBAL_DATA::D2D1MakeRotateMatrix", "AFXGLOBALS/AFX_GLOBAL_DATA::DrawParentBackground", "AFXGLOBALS/AFX_GLOBAL_DATA::DrawTextOnGlass", "AFXGLOBALS/AFX_GLOBAL_DATA::ExcludeTag", "AFXGLOBALS/AFX_GLOBAL_DATA::GetColor", "AFXGLOBALS/AFX_GLOBAL_DATA::GetDirect2dFactory", "AFXGLOBALS/AFX_GLOBAL_DATA::GetHandCursor", "AFXGLOBALS/AFX_GLOBAL_DATA::GetITaskbarList", "AFXGLOBALS/AFX_GLOBAL_DATA::GetITaskbarList3", "AFXGLOBALS/AFX_GLOBAL_DATA::GetNonClientMetrics", "AFXGLOBALS/AFX_GLOBAL_DATA::GetShellAutohideBars", "AFXGLOBALS/AFX_GLOBAL_DATA::GetTextHeight", "AFXGLOBALS/AFX_GLOBAL_DATA::GetWICFactory", "AFXGLOBALS/AFX_GLOBAL_DATA::GetWriteFactory", "AFXGLOBALS/AFX_GLOBAL_DATA::InitD2D", "AFXGLOBALS/AFX_GLOBAL_DATA::Is32BitIcons", "AFXGLOBALS/AFX_GLOBAL_DATA::IsD2DInitialized", "AFXGLOBALS/AFX_GLOBAL_DATA::IsDwmCompositionEnabled", "AFXGLOBALS/AFX_GLOBAL_DATA::IsHighContrastMode", "AFXGLOBALS/AFX_GLOBAL_DATA::OnSettingChange", "AFXGLOBALS/AFX_GLOBAL_DATA::RegisterWindowClass", "AFXGLOBALS/AFX_GLOBAL_DATA::ReleaseTaskBarRefs", "AFXGLOBALS/AFX_GLOBAL_DATA::Resume", "AFXGLOBALS/AFX_GLOBAL_DATA::SetLayeredAttrib", "AFXGLOBALS/AFX_GLOBAL_DATA::SetMenuFont", "AFXGLOBALS/AFX_GLOBAL_DATA::ShellCreateItemFromParsingName", "AFXGLOBALS/AFX_GLOBAL_DATA::UpdateFonts", "AFXGLOBALS/AFX_GLOBAL_DATA::UpdateSysColors", "AFXGLOBALS/AFX_GLOBAL_DATA::EnableAccessibilitySupport", "AFXGLOBALS/AFX_GLOBAL_DATA::IsAccessibilitySupport", "AFXGLOBALS/AFX_GLOBAL_DATA::IsWindowsLayerSupportAvailable", "AFXGLOBALS/AFX_GLOBAL_DATA::bIsOSAlphaBlendingSupport", "AFXGLOBALS/AFX_GLOBAL_DATA::bIsWindows7", "AFXGLOBALS/AFX_GLOBAL_DATA::clrActiveCaptionGradient", "AFXGLOBALS/AFX_GLOBAL_DATA::clrInactiveCaptionGradient", "AFXGLOBALS/AFX_GLOBAL_DATA::m_bUseBuiltIn32BitIcons", "AFXGLOBALS/AFX_GLOBAL_DATA::m_bUseSystemFont", "AFXGLOBALS/AFX_GLOBAL_DATA::m_hcurHand", "AFXGLOBALS/AFX_GLOBAL_DATA::m_hcurStretch", "AFXGLOBALS/AFX_GLOBAL_DATA::m_hcurStretchVert", "AFXGLOBALS/AFX_GLOBAL_DATA::m_hiconTool", "AFXGLOBALS/AFX_GLOBAL_DATA::m_nAutoHideToolBarMargin", "AFXGLOBALS/AFX_GLOBAL_DATA::m_nAutoHideToolBarSpacing", "AFXGLOBALS/AFX_GLOBAL_DATA::m_nDragFrameThicknessDock", "AFXGLOBALS/AFX_GLOBAL_DATA::m_nDragFrameThicknessFloat"] helpviewer_keywords: ["AFX_GLOBAL_DATA structure [MFC]", "AFX_GLOBAL_DATA constructor"] -ms.assetid: c7abf2fb-ad5e-4336-a01d-260c29ed53a2 --- # AFX_GLOBAL_DATA Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `AFX_GLOBAL_DATA` structure contains fields and methods that are used to manage the framework or customize the appearance and behavior of your application. ## Syntax diff --git a/docs/mfc/reference/afx-messages.md b/docs/mfc/reference/afx-messages.md index 8651a84d6d5..afb7cd8d516 100644 --- a/docs/mfc/reference/afx-messages.md +++ b/docs/mfc/reference/afx-messages.md @@ -4,10 +4,12 @@ title: "AFX Messages" ms.date: "11/04/2016" f1_keywords: ["SB_LINELEFT", "SB_THUMBTRACK", "AFX_TOOLTIP_TYPE_EDIT", "AFX_WM_ON_HSCROLL", "SB_PAGERIGHT", "AFX_WM_RESETPROMPT", "AFX_WM_CHANGE_RIBBON_CATEGORY", "AFX_TOOLTIP_TYPE_MINIFRAME", "AFX_WM_CUSTOMIZETOOLBAR", "AFX_WM_CHANGE_ACTIVE_TAB", "AFX_WM_ACCGETOBJECT", "AFX_WM_TOOLBARMENU", "AFX_TOOLTIP_TYPE_DOCKBAR", "AFX_WM_CUSTOMIZEHELP", "AFX_WM_ON_GET_TAB_TOOLTIP", "AFX_WM_ON_RIBBON_CUSTOMIZE", "AFX_WM_ON_DRAGCOMPLETE", "AFX_WM_RESETTOOLBAR", "AFX_WM_ON_MOVETOTABGROUP", "AFX_WM_CHECKEMPTYMINIFRAME", "AFX_WM_GETDOCUMENTCOLORS", "SB_RIGHT", "AFX_WM_ON_BEFORE_SHOW_RIBBON_ITEM_MENU", "AFX_WM_ACCGETSTATE", "SB_PAGELEFT", "SB_ENDSCROLL", "AFX_WM_ON_CANCELTABMOVE", "AFX_TOOLTIP_TYPE_TAB", "AFX_WM_WINDOW_HELP", "AFX_WM_HIGHLIGHT_RIBBON_LIST_ITEM", "AFX_WM_SHOWREGULARMENU", "AFX_TOOLTIP_TYPE_TOOLBAR", "AFX_WM_CHANGE_CURRENT_FOLDER", "AFX_WM_UPDATETOOLTIPS", "AFX_WM_ON_MOVE_TAB", "AFX_WM_CHANGING_ACTIVE_TAB", "AFX_WM_RESETMENU", "AFX_WM_GETDRAGBOUNDS", "AFX_WM_RESETCONTEXTMENU", "AFX_TOOLTIP_TYPE_BUTTON", "AFX_WM_ON_CLOSEPOPUPWINDOW", "AFX_TOOLTIP_TYPE_TOOLBOX", "AFX_WM_CHANGEVISUALMANAGER", "SB_LINERIGHT", "AFX_WM_ON_RENAME_TAB", "AFX_TOOLTIP_TYPE_DEFAULT", "AFX_WM_ON_TABGROUPMOUSEMOVE", "SB_LEFT", "AFX_WM_DELETETOOLBAR", "AFX_WM_PROPERTY_CHANGED", "AFX_TOOLTIP_TYPE_ALL", "AFX_WM_ACCHITTEST", "AFX_WM_ON_AFTER_SHELL_COMMAND", "AFX_WM_ON_PRESS_CLOSE_BUTTON", "AFX_WM_RESETKEYBOARD", "AFX_WM_ON_MOVETABCOMPLETE", "AFX_WM_CREATETOOLBAR", "SB_THUMBPOSITION", "AFX_WM_POSTSETPREVIEWFRAME"] helpviewer_keywords: ["AFX messages [MFC]"] -ms.assetid: 3d601f3c-af6d-47d3-8553-34f1318fa74f --- # AFX Messages +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These messages are used in MFC. ## Messages diff --git a/docs/mfc/reference/application-control.md b/docs/mfc/reference/application-control.md index 71d0ea63f2b..94e130be1d1 100644 --- a/docs/mfc/reference/application-control.md +++ b/docs/mfc/reference/application-control.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["application control [MFC]"] --- # Application Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + OLE requires substantial control over applications and their objects. The OLE system DLLs must be able to launch and release applications automatically, coordinate their production and modification of objects, and so on. The functions in this topic meet those requirements. In addition to being called by the OLE system DLLs, these functions must sometimes be called by applications as well. ### Application Control diff --git a/docs/mfc/reference/application-information-and-management.md b/docs/mfc/reference/application-information-and-management.md index 4c97fa5d41a..1abddac4368 100644 --- a/docs/mfc/reference/application-information-and-management.md +++ b/docs/mfc/reference/application-information-and-management.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["applications [MFC], managing"] --- # Application Information and Management +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When you write an application, you create a single [`CWinApp`](../../mfc/reference/cwinapp-class.md)-derived object. At times, you may want to get information about this object from outside the `CWinApp`-derived object. Or you may need access to other global "manager" objects. The Microsoft Foundation Class Library provides the following global functions to help you accomplish these tasks: diff --git a/docs/mfc/reference/application-settings-mfc-activex-control-wizard.md b/docs/mfc/reference/application-settings-mfc-activex-control-wizard.md index 47132045c6e..c4319681860 100644 --- a/docs/mfc/reference/application-settings-mfc-activex-control-wizard.md +++ b/docs/mfc/reference/application-settings-mfc-activex-control-wizard.md @@ -4,10 +4,12 @@ title: "Application Settings, MFC ActiveX Control Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.mfc.ctl.appset"] helpviewer_keywords: ["MFC ActiveX Control Wizard, application settings"] -ms.assetid: 48475194-cc63-467f-8499-f142269a4c1c --- # Application Settings, MFC ActiveX Control Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Use this page of the MFC ActiveX Control Wizard to design and add basic features to a new MFC ActiveX project. These settings apply to the application itself and not to any specific feature or element of the control. - **Run-time license** diff --git a/docs/mfc/reference/application-settings-mfc-dll-wizard.md b/docs/mfc/reference/application-settings-mfc-dll-wizard.md index b954d26d00d..867e12a7058 100644 --- a/docs/mfc/reference/application-settings-mfc-dll-wizard.md +++ b/docs/mfc/reference/application-settings-mfc-dll-wizard.md @@ -4,10 +4,12 @@ title: "Application Settings, MFC DLL Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.mfc.dll.appset"] helpviewer_keywords: ["MFC DLL Wizard, application settings"] -ms.assetid: 0a96b94f-ae36-4975-951b-c9ffb3def21c --- # Application Settings, MFC DLL Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Use this page of the MFC DLL wizard to design and add basic features to a new MFC DLL project. ## DLL type diff --git a/docs/mfc/reference/application-type-mfc-application-wizard.md b/docs/mfc/reference/application-type-mfc-application-wizard.md index ba1c3c9b273..4619680538f 100644 --- a/docs/mfc/reference/application-type-mfc-application-wizard.md +++ b/docs/mfc/reference/application-type-mfc-application-wizard.md @@ -4,10 +4,12 @@ title: "Application Type, MFC Application Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.mfc.exe.apptype"] helpviewer_keywords: ["static libraries, MFC"] -ms.assetid: c3f62b0e-3f13-42c5-9859-d3890d0c3e1d --- # Application Type, MFC Application Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Use this page of the [MFC Application Wizard](../../mfc/reference/mfc-application-wizard.md) to design and add basic features to a new MFC application. - **Application type** diff --git a/docs/mfc/reference/buffercommand-enumeration.md b/docs/mfc/reference/buffercommand-enumeration.md index 23d430be1aa..755a0916ae5 100644 --- a/docs/mfc/reference/buffercommand-enumeration.md +++ b/docs/mfc/reference/buffercommand-enumeration.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["buffercommand enumeration [MFC]"] --- # BufferCommand enumeration +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Used by [CMemFile::GetBufferPtr](cmemfile-class.md#getbufferptr) to determine what action to take on the file-backed memory buffer. ## Syntax diff --git a/docs/mfc/reference/cacceleratedeceleratetransition-class.md b/docs/mfc/reference/cacceleratedeceleratetransition-class.md index 2a1805bcab4..59271982e96 100644 --- a/docs/mfc/reference/cacceleratedeceleratetransition-class.md +++ b/docs/mfc/reference/cacceleratedeceleratetransition-class.md @@ -4,10 +4,12 @@ title: "CAccelerateDecelerateTransition Class" ms.date: "11/04/2016" f1_keywords: ["CAccelerateDecelerateTransition", "afxanimationcontroller/CAccelerateDecelerateTransition"] helpviewer_keywords: ["CAccelerateDecelerateTransition class [MFC]"] -ms.assetid: b1f31ee8-bb11-4ccc-b124-365fb02b025c --- # CAccelerateDecelerateTransition Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements an accelerate-decelerate transition. ## Syntax diff --git a/docs/mfc/reference/callback-functions-used-by-mfc.md b/docs/mfc/reference/callback-functions-used-by-mfc.md index 48c2ebd5c79..5beda34b607 100644 --- a/docs/mfc/reference/callback-functions-used-by-mfc.md +++ b/docs/mfc/reference/callback-functions-used-by-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Callback Functions Used by MFC" title: "Callback Functions Used by MFC" ms.date: "11/04/2016" helpviewer_keywords: ["callback functions [MFC], MFC", "MFC, callback functions", "functions [MFC], callback", "callback functions [MFC]"] -ms.assetid: b2a6857c-fdd3-45ec-8fd8-2e71fac77582 --- # Callback Functions Used by MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Three callback functions appear in the Microsoft Foundation Class Library. These callback functions are passed to [CDC::EnumObjects](../../mfc/reference/cdc-class.md#enumobjects), [CDC::GrayString](../../mfc/reference/cdc-class.md#graystring), and [CDC::SetAbortProc](../../mfc/reference/cdc-class.md#setabortproc). Note that all callback functions must trap MFC exceptions before returning to Windows, since exceptions cannot be thrown across callback boundaries. For more information about exceptions, see the article [Exceptions](../../mfc/exception-handling-in-mfc.md). [Callback Function for CDC::EnumObjects](#enum_objects)\ diff --git a/docs/mfc/reference/canimatectrl-class.md b/docs/mfc/reference/canimatectrl-class.md index 15e0d9893a9..5fa507210c2 100644 --- a/docs/mfc/reference/canimatectrl-class.md +++ b/docs/mfc/reference/canimatectrl-class.md @@ -4,10 +4,12 @@ title: "CAnimateCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CAnimateCtrl", "AFXCMN/CAnimateCtrl", "AFXCMN/CAnimateCtrl::CAnimateCtrl", "AFXCMN/CAnimateCtrl::Close", "AFXCMN/CAnimateCtrl::Create", "AFXCMN/CAnimateCtrl::CreateEx", "AFXCMN/CAnimateCtrl::IsPlaying", "AFXCMN/CAnimateCtrl::Open", "AFXCMN/CAnimateCtrl::Play", "AFXCMN/CAnimateCtrl::Seek", "AFXCMN/CAnimateCtrl::Stop"] helpviewer_keywords: ["CAnimateCtrl [MFC], CAnimateCtrl", "CAnimateCtrl [MFC], Close", "CAnimateCtrl [MFC], Create", "CAnimateCtrl [MFC], CreateEx", "CAnimateCtrl [MFC], IsPlaying", "CAnimateCtrl [MFC], Open", "CAnimateCtrl [MFC], Play", "CAnimateCtrl [MFC], Seek", "CAnimateCtrl [MFC], Stop"] -ms.assetid: 5e8eb1bd-96b7-47b8-8de2-6bcbb3cc299b --- # CAnimateCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the Windows common animation control. ## Syntax diff --git a/docs/mfc/reference/canimationbaseobject-class.md b/docs/mfc/reference/canimationbaseobject-class.md index cd986f2657d..7177f63f464 100644 --- a/docs/mfc/reference/canimationbaseobject-class.md +++ b/docs/mfc/reference/canimationbaseobject-class.md @@ -4,10 +4,12 @@ title: "CAnimationBaseObject Class" ms.date: "03/27/2019" f1_keywords: ["CAnimationBaseObject", "AFXANIMATIONCONTROLLER/CAnimationBaseObject", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::CAnimationBaseObject", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::ApplyTransitions", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::ClearTransitions", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::ContainsVariable", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::CreateTransitions", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::DetachFromController", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::EnableIntegerValueChangedEvent", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::EnableValueChangedEvent", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::GetAutodestroyTransitions", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::GetGroupID", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::GetObjectID", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::GetUserData", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::SetAutodestroyTransitions", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::SetID", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::SetUserData", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::GetAnimationVariableList", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::SetParentAnimationObjects", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::m_bAutodestroyTransitions", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::m_dwUserData", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::m_nGroupID", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::m_nObjectID", "AFXANIMATIONCONTROLLER/CAnimationBaseObject::m_pParentController"] helpviewer_keywords: ["CAnimationBaseObject [MFC], CAnimationBaseObject", "CAnimationBaseObject [MFC], ApplyTransitions", "CAnimationBaseObject [MFC], ClearTransitions", "CAnimationBaseObject [MFC], ContainsVariable", "CAnimationBaseObject [MFC], CreateTransitions", "CAnimationBaseObject [MFC], DetachFromController", "CAnimationBaseObject [MFC], EnableIntegerValueChangedEvent", "CAnimationBaseObject [MFC], EnableValueChangedEvent", "CAnimationBaseObject [MFC], GetAutodestroyTransitions", "CAnimationBaseObject [MFC], GetGroupID", "CAnimationBaseObject [MFC], GetObjectID", "CAnimationBaseObject [MFC], GetUserData", "CAnimationBaseObject [MFC], SetAutodestroyTransitions", "CAnimationBaseObject [MFC], SetID", "CAnimationBaseObject [MFC], SetUserData", "CAnimationBaseObject [MFC], GetAnimationVariableList", "CAnimationBaseObject [MFC], SetParentAnimationObjects", "CAnimationBaseObject [MFC], m_bAutodestroyTransitions", "CAnimationBaseObject [MFC], m_dwUserData", "CAnimationBaseObject [MFC], m_nGroupID", "CAnimationBaseObject [MFC], m_nObjectID", "CAnimationBaseObject [MFC], m_pParentController"] -ms.assetid: 76b25917-940e-4eba-940f-31d270702603 --- # CAnimationBaseObject Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class for all animation objects. ## Syntax diff --git a/docs/mfc/reference/canimationcolor-class.md b/docs/mfc/reference/canimationcolor-class.md index 776a4f94c5a..95cd12e9f5c 100644 --- a/docs/mfc/reference/canimationcolor-class.md +++ b/docs/mfc/reference/canimationcolor-class.md @@ -4,10 +4,12 @@ title: "CAnimationColor Class" ms.date: "11/04/2016" f1_keywords: ["CAnimationColor", "AFXANIMATIONCONTROLLER/CAnimationColor", "AFXANIMATIONCONTROLLER/CAnimationColor::CAnimationColor", "AFXANIMATIONCONTROLLER/CAnimationColor::AddTransition", "AFXANIMATIONCONTROLLER/CAnimationColor::GetB", "AFXANIMATIONCONTROLLER/CAnimationColor::GetDefaultValue", "AFXANIMATIONCONTROLLER/CAnimationColor::GetG", "AFXANIMATIONCONTROLLER/CAnimationColor::GetR", "AFXANIMATIONCONTROLLER/CAnimationColor::GetValue", "AFXANIMATIONCONTROLLER/CAnimationColor::SetDefaultValue", "AFXANIMATIONCONTROLLER/CAnimationColor::GetAnimationVariableList", "AFXANIMATIONCONTROLLER/CAnimationColor::m_bValue", "AFXANIMATIONCONTROLLER/CAnimationColor::m_gValue", "AFXANIMATIONCONTROLLER/CAnimationColor::m_rValue"] helpviewer_keywords: ["CAnimationColor [MFC], CAnimationColor", "CAnimationColor [MFC], AddTransition", "CAnimationColor [MFC], GetB", "CAnimationColor [MFC], GetDefaultValue", "CAnimationColor [MFC], GetG", "CAnimationColor [MFC], GetR", "CAnimationColor [MFC], GetValue", "CAnimationColor [MFC], SetDefaultValue", "CAnimationColor [MFC], GetAnimationVariableList", "CAnimationColor [MFC], m_bValue", "CAnimationColor [MFC], m_gValue", "CAnimationColor [MFC], m_rValue"] -ms.assetid: 88bfabd4-efeb-4652-87e8-304253d8e48c --- # CAnimationColor Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the functionality of a color whose red, green, and blue components can be animated. ## Syntax diff --git a/docs/mfc/reference/canimationcontroller-class.md b/docs/mfc/reference/canimationcontroller-class.md index efbcb21ccb4..e2fb90bb856 100644 --- a/docs/mfc/reference/canimationcontroller-class.md +++ b/docs/mfc/reference/canimationcontroller-class.md @@ -4,10 +4,12 @@ title: "CAnimationController Class" ms.date: "03/27/2019" f1_keywords: ["CAnimationController", "AFXANIMATIONCONTROLLER/CAnimationController", "AFXANIMATIONCONTROLLER/CAnimationController::CAnimationController", "AFXANIMATIONCONTROLLER/CAnimationController::AddAnimationObject", "AFXANIMATIONCONTROLLER/CAnimationController::AddKeyframeToGroup", "AFXANIMATIONCONTROLLER/CAnimationController::AnimateGroup", "AFXANIMATIONCONTROLLER/CAnimationController::CleanUpGroup", "AFXANIMATIONCONTROLLER/CAnimationController::CreateKeyframe", "AFXANIMATIONCONTROLLER/CAnimationController::EnableAnimationManagerEvent", "AFXANIMATIONCONTROLLER/CAnimationController::EnableAnimationTimerEventHandler", "AFXANIMATIONCONTROLLER/CAnimationController::EnablePriorityComparisonHandler", "AFXANIMATIONCONTROLLER/CAnimationController::EnableStoryboardEventHandler", "AFXANIMATIONCONTROLLER/CAnimationController::FindAnimationGroup", "AFXANIMATIONCONTROLLER/CAnimationController::FindAnimationObject", "AFXANIMATIONCONTROLLER/CAnimationController::GetKeyframeStoryboardStart", "AFXANIMATIONCONTROLLER/CAnimationController::GetUIAnimationManager", "AFXANIMATIONCONTROLLER/CAnimationController::GetUIAnimationTimer", "AFXANIMATIONCONTROLLER/CAnimationController::GetUITransitionFactory", "AFXANIMATIONCONTROLLER/CAnimationController::GetUITransitionLibrary", "AFXANIMATIONCONTROLLER/CAnimationController::IsAnimationInProgress", "AFXANIMATIONCONTROLLER/CAnimationController::IsValid", "AFXANIMATIONCONTROLLER/CAnimationController::OnAnimationIntegerValueChanged", "AFXANIMATIONCONTROLLER/CAnimationController::OnAnimationManagerStatusChanged", "AFXANIMATIONCONTROLLER/CAnimationController::OnAnimationTimerPostUpdate", "AFXANIMATIONCONTROLLER/CAnimationController::OnAnimationTimerPreUpdate", "AFXANIMATIONCONTROLLER/CAnimationController::OnAnimationTimerRenderingTooSlow", "AFXANIMATIONCONTROLLER/CAnimationController::OnAnimationValueChanged", "AFXANIMATIONCONTROLLER/CAnimationController::OnBeforeAnimationStart", "AFXANIMATIONCONTROLLER/CAnimationController::OnHasPriorityCancel", "AFXANIMATIONCONTROLLER/CAnimationController::OnHasPriorityCompress", "AFXANIMATIONCONTROLLER/CAnimationController::OnHasPriorityConclude", "AFXANIMATIONCONTROLLER/CAnimationController::OnHasPriorityTrim", "AFXANIMATIONCONTROLLER/CAnimationController::OnStoryboardStatusChanged", "AFXANIMATIONCONTROLLER/CAnimationController::OnStoryboardUpdated", "AFXANIMATIONCONTROLLER/CAnimationController::RemoveAllAnimationGroups", "AFXANIMATIONCONTROLLER/CAnimationController::RemoveAnimationGroup", "AFXANIMATIONCONTROLLER/CAnimationController::RemoveAnimationObject", "AFXANIMATIONCONTROLLER/CAnimationController::RemoveTransitions", "AFXANIMATIONCONTROLLER/CAnimationController::ScheduleGroup", "AFXANIMATIONCONTROLLER/CAnimationController::SetRelatedWnd", "AFXANIMATIONCONTROLLER/CAnimationController::UpdateAnimationManager", "AFXANIMATIONCONTROLLER/CAnimationController::OnAfterSchedule", "AFXANIMATIONCONTROLLER/CAnimationController::gkeyframeStoryboardStart", "AFXANIMATIONCONTROLLER/CAnimationController::m_bIsValid", "AFXANIMATIONCONTROLLER/CAnimationController::m_lstAnimationGroups", "AFXANIMATIONCONTROLLER/CAnimationController::m_pAnimationManager", "AFXANIMATIONCONTROLLER/CAnimationController::m_pAnimationTimer", "AFXANIMATIONCONTROLLER/CAnimationController::m_pRelatedWnd", "AFXANIMATIONCONTROLLER/CAnimationController::m_pTransitionFactory", "AFXANIMATIONCONTROLLER/CAnimationController::m_pTransitionLibrary"] helpviewer_keywords: ["CAnimationController [MFC], CAnimationController", "CAnimationController [MFC], AddAnimationObject", "CAnimationController [MFC], AddKeyframeToGroup", "CAnimationController [MFC], AnimateGroup", "CAnimationController [MFC], CleanUpGroup", "CAnimationController [MFC], CreateKeyframe", "CAnimationController [MFC], EnableAnimationManagerEvent", "CAnimationController [MFC], EnableAnimationTimerEventHandler", "CAnimationController [MFC], EnablePriorityComparisonHandler", "CAnimationController [MFC], EnableStoryboardEventHandler", "CAnimationController [MFC], FindAnimationGroup", "CAnimationController [MFC], FindAnimationObject", "CAnimationController [MFC], GetKeyframeStoryboardStart", "CAnimationController [MFC], GetUIAnimationManager", "CAnimationController [MFC], GetUIAnimationTimer", "CAnimationController [MFC], GetUITransitionFactory", "CAnimationController [MFC], GetUITransitionLibrary", "CAnimationController [MFC], IsAnimationInProgress", "CAnimationController [MFC], IsValid", "CAnimationController [MFC], OnAnimationIntegerValueChanged", "CAnimationController [MFC], OnAnimationManagerStatusChanged", "CAnimationController [MFC], OnAnimationTimerPostUpdate", "CAnimationController [MFC], OnAnimationTimerPreUpdate", "CAnimationController [MFC], OnAnimationTimerRenderingTooSlow", "CAnimationController [MFC], OnAnimationValueChanged", "CAnimationController [MFC], OnBeforeAnimationStart", "CAnimationController [MFC], OnHasPriorityCancel", "CAnimationController [MFC], OnHasPriorityCompress", "CAnimationController [MFC], OnHasPriorityConclude", "CAnimationController [MFC], OnHasPriorityTrim", "CAnimationController [MFC], OnStoryboardStatusChanged", "CAnimationController [MFC], OnStoryboardUpdated", "CAnimationController [MFC], RemoveAllAnimationGroups", "CAnimationController [MFC], RemoveAnimationGroup", "CAnimationController [MFC], RemoveAnimationObject", "CAnimationController [MFC], RemoveTransitions", "CAnimationController [MFC], ScheduleGroup", "CAnimationController [MFC], SetRelatedWnd", "CAnimationController [MFC], UpdateAnimationManager", "CAnimationController [MFC], CleanUpGroup", "CAnimationController [MFC], OnAfterSchedule", "CAnimationController [MFC], gkeyframeStoryboardStart", "CAnimationController [MFC], m_bIsValid", "CAnimationController [MFC], m_lstAnimationGroups", "CAnimationController [MFC], m_pAnimationManager", "CAnimationController [MFC], m_pAnimationTimer", "CAnimationController [MFC], m_pRelatedWnd", "CAnimationController [MFC], m_pTransitionFactory", "CAnimationController [MFC], m_pTransitionLibrary"] -ms.assetid: ed294c98-695e-40a6-b940-33ef1d40aa6b --- # CAnimationController Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the animation controller, which provides a central interface for creating and managing animations. ## Syntax diff --git a/docs/mfc/reference/canimationgroup-class.md b/docs/mfc/reference/canimationgroup-class.md index ec55261113d..e0465936f07 100644 --- a/docs/mfc/reference/canimationgroup-class.md +++ b/docs/mfc/reference/canimationgroup-class.md @@ -4,10 +4,12 @@ title: "CAnimationGroup Class" ms.date: "03/27/2019" f1_keywords: ["CAnimationGroup", "AFXANIMATIONCONTROLLER/CAnimationGroup", "AFXANIMATIONCONTROLLER/CAnimationGroup::CAnimationGroup", "AFXANIMATIONCONTROLLER/CAnimationGroup::Animate", "AFXANIMATIONCONTROLLER/CAnimationGroup::ApplyTransitions", "AFXANIMATIONCONTROLLER/CAnimationGroup::FindAnimationObject", "AFXANIMATIONCONTROLLER/CAnimationGroup::GetGroupID", "AFXANIMATIONCONTROLLER/CAnimationGroup::RemoveKeyframes", "AFXANIMATIONCONTROLLER/CAnimationGroup::RemoveTransitions", "AFXANIMATIONCONTROLLER/CAnimationGroup::Schedule", "AFXANIMATIONCONTROLLER/CAnimationGroup::SetAutodestroyTransitions", "AFXANIMATIONCONTROLLER/CAnimationGroup::AddKeyframes", "AFXANIMATIONCONTROLLER/CAnimationGroup::AddTransitions", "AFXANIMATIONCONTROLLER/CAnimationGroup::CreateTransitions", "AFXANIMATIONCONTROLLER/CAnimationGroup::m_bAutoclearTransitions", "AFXANIMATIONCONTROLLER/CAnimationGroup::m_bAutodestroyAnimationObjects", "AFXANIMATIONCONTROLLER/CAnimationGroup::m_bAutodestroyKeyframes", "AFXANIMATIONCONTROLLER/CAnimationGroup::m_lstAnimationObjects", "AFXANIMATIONCONTROLLER/CAnimationGroup::m_lstKeyFrames", "AFXANIMATIONCONTROLLER/CAnimationGroup::m_pStoryboard", "AFXANIMATIONCONTROLLER/CAnimationGroup::m_nGroupID", "AFXANIMATIONCONTROLLER/CAnimationGroup::m_pParentController"] helpviewer_keywords: ["CAnimationGroup [MFC], CAnimationGroup", "CAnimationGroup [MFC], Animate", "CAnimationGroup [MFC], ApplyTransitions", "CAnimationGroup [MFC], FindAnimationObject", "CAnimationGroup [MFC], GetGroupID", "CAnimationGroup [MFC], RemoveKeyframes", "CAnimationGroup [MFC], RemoveTransitions", "CAnimationGroup [MFC], Schedule", "CAnimationGroup [MFC], SetAutodestroyTransitions", "CAnimationGroup [MFC], AddKeyframes", "CAnimationGroup [MFC], AddTransitions", "CAnimationGroup [MFC], CreateTransitions", "CAnimationGroup [MFC], m_bAutoclearTransitions", "CAnimationGroup [MFC], m_bAutodestroyAnimationObjects", "CAnimationGroup [MFC], m_bAutodestroyKeyframes", "CAnimationGroup [MFC], m_lstAnimationObjects", "CAnimationGroup [MFC], m_lstKeyFrames", "CAnimationGroup [MFC], m_pStoryboard", "CAnimationGroup [MFC], m_nGroupID", "CAnimationGroup [MFC], m_pParentController"] -ms.assetid: 8bc18ceb-33a2-41d0-9731-71811adacab7 --- # CAnimationGroup Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements an animation group, which combines an animation storyboard, animation objects, and transitions to define an animation. ## Syntax diff --git a/docs/mfc/reference/canimationmanagereventhandler-class.md b/docs/mfc/reference/canimationmanagereventhandler-class.md index 098d5153445..0f734d57cb7 100644 --- a/docs/mfc/reference/canimationmanagereventhandler-class.md +++ b/docs/mfc/reference/canimationmanagereventhandler-class.md @@ -4,10 +4,12 @@ title: "CAnimationManagerEventHandler Class" ms.date: "11/04/2016" f1_keywords: ["CAnimationManagerEventHandler", "AFXANIMATIONCONTROLLER/CAnimationManagerEventHandler", "AFXANIMATIONCONTROLLER/CAnimationManagerEventHandler::CAnimationManagerEventHandler", "AFXANIMATIONCONTROLLER/CAnimationManagerEventHandler::CreateInstance", "AFXANIMATIONCONTROLLER/CAnimationManagerEventHandler::OnManagerStatusChanged", "AFXANIMATIONCONTROLLER/CAnimationManagerEventHandler::SetAnimationController"] helpviewer_keywords: ["CAnimationManagerEventHandler [MFC], CAnimationManagerEventHandler", "CAnimationManagerEventHandler [MFC], CreateInstance", "CAnimationManagerEventHandler [MFC], OnManagerStatusChanged", "CAnimationManagerEventHandler [MFC], SetAnimationController"] -ms.assetid: 6089ec07-e661-4805-b227-823b4652aade --- # CAnimationManagerEventHandler Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a callback, which is called by the Animation API when a status of an animation manager is changed. ## Syntax diff --git a/docs/mfc/reference/canimationpoint-class.md b/docs/mfc/reference/canimationpoint-class.md index 164e739941d..cf1d3ae8466 100644 --- a/docs/mfc/reference/canimationpoint-class.md +++ b/docs/mfc/reference/canimationpoint-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CAnimationPoint [MFC], CAnimationPoint", "CAnimationPoint --- # `CAnimationPoint` class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the functionality of a point whose coordinates can be animated. ## Syntax diff --git a/docs/mfc/reference/canimationrect-class.md b/docs/mfc/reference/canimationrect-class.md index 6d9e450cc35..b2a605299d6 100644 --- a/docs/mfc/reference/canimationrect-class.md +++ b/docs/mfc/reference/canimationrect-class.md @@ -4,10 +4,12 @@ title: "CAnimationRect Class" ms.date: "11/04/2016" f1_keywords: ["CAnimationRect", "AFXANIMATIONCONTROLLER/CAnimationRect", "AFXANIMATIONCONTROLLER/CAnimationRect::CAnimationRect", "AFXANIMATIONCONTROLLER/CAnimationRect::AddTransition", "AFXANIMATIONCONTROLLER/CAnimationRect::GetBottom", "AFXANIMATIONCONTROLLER/CAnimationRect::GetDefaultValue", "AFXANIMATIONCONTROLLER/CAnimationRect::GetLeft", "AFXANIMATIONCONTROLLER/CAnimationRect::GetRight", "AFXANIMATIONCONTROLLER/CAnimationRect::GetTop", "AFXANIMATIONCONTROLLER/CAnimationRect::GetValue", "AFXANIMATIONCONTROLLER/CAnimationRect::SetDefaultValue", "AFXANIMATIONCONTROLLER/CAnimationRect::GetAnimationVariableList", "AFXANIMATIONCONTROLLER/CAnimationRect::m_bFixedSize", "AFXANIMATIONCONTROLLER/CAnimationRect::m_bottomValue", "AFXANIMATIONCONTROLLER/CAnimationRect::m_leftValue", "AFXANIMATIONCONTROLLER/CAnimationRect::m_rightValue", "AFXANIMATIONCONTROLLER/CAnimationRect::m_szInitial", "AFXANIMATIONCONTROLLER/CAnimationRect::m_topValue"] helpviewer_keywords: ["CAnimationRect [MFC], CAnimationRect", "CAnimationRect [MFC], AddTransition", "CAnimationRect [MFC], GetBottom", "CAnimationRect [MFC], GetDefaultValue", "CAnimationRect [MFC], GetLeft", "CAnimationRect [MFC], GetRight", "CAnimationRect [MFC], GetTop", "CAnimationRect [MFC], GetValue", "CAnimationRect [MFC], SetDefaultValue", "CAnimationRect [MFC], GetAnimationVariableList", "CAnimationRect [MFC], m_bFixedSize", "CAnimationRect [MFC], m_bottomValue", "CAnimationRect [MFC], m_leftValue", "CAnimationRect [MFC], m_rightValue", "CAnimationRect [MFC], m_szInitial", "CAnimationRect [MFC], m_topValue"] -ms.assetid: 0294156d-241e-4a57-92b2-31234fe557d6 --- # CAnimationRect Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the functionality of a rectangle whose sides can be animated. ## Syntax diff --git a/docs/mfc/reference/canimationsize-class.md b/docs/mfc/reference/canimationsize-class.md index e918efbaef0..898c45342db 100644 --- a/docs/mfc/reference/canimationsize-class.md +++ b/docs/mfc/reference/canimationsize-class.md @@ -4,10 +4,12 @@ title: "CAnimationSize Class" ms.date: "11/04/2016" f1_keywords: ["CAnimationSize", "AFXANIMATIONCONTROLLER/CAnimationSize", "AFXANIMATIONCONTROLLER/CAnimationSize::CAnimationSize", "AFXANIMATIONCONTROLLER/CAnimationSize::AddTransition", "AFXANIMATIONCONTROLLER/CAnimationSize::GetCX", "AFXANIMATIONCONTROLLER/CAnimationSize::GetCY", "AFXANIMATIONCONTROLLER/CAnimationSize::GetDefaultValue", "AFXANIMATIONCONTROLLER/CAnimationSize::GetValue", "AFXANIMATIONCONTROLLER/CAnimationSize::SetDefaultValue", "AFXANIMATIONCONTROLLER/CAnimationSize::GetAnimationVariableList", "AFXANIMATIONCONTROLLER/CAnimationSize::m_cxValue", "AFXANIMATIONCONTROLLER/CAnimationSize::m_cyValue"] helpviewer_keywords: ["CAnimationSize [MFC], CAnimationSize", "CAnimationSize [MFC], AddTransition", "CAnimationSize [MFC], GetCX", "CAnimationSize [MFC], GetCY", "CAnimationSize [MFC], GetDefaultValue", "CAnimationSize [MFC], GetValue", "CAnimationSize [MFC], SetDefaultValue", "CAnimationSize [MFC], GetAnimationVariableList", "CAnimationSize [MFC], m_cxValue", "CAnimationSize [MFC], m_cyValue"] -ms.assetid: ea06d1b5-502c-44a3-82ca-8bd6ba6a9364 --- # CAnimationSize Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the functionality of a size object whose dimensions can be animated. ## Syntax diff --git a/docs/mfc/reference/canimationstoryboardeventhandler-class.md b/docs/mfc/reference/canimationstoryboardeventhandler-class.md index 24d9635f462..e7d70c17056 100644 --- a/docs/mfc/reference/canimationstoryboardeventhandler-class.md +++ b/docs/mfc/reference/canimationstoryboardeventhandler-class.md @@ -4,10 +4,12 @@ title: "CAnimationStoryboardEventHandler Class" ms.date: "11/04/2016" f1_keywords: ["CAnimationStoryboardEventHandler", "AFXANIMATIONCONTROLLER/CAnimationStoryboardEventHandler", "AFXANIMATIONCONTROLLER/CAnimationStoryboardEventHandler::CAnimationStoryboardEventHandler", "AFXANIMATIONCONTROLLER/CAnimationStoryboardEventHandler::CreateInstance", "AFXANIMATIONCONTROLLER/CAnimationStoryboardEventHandler::OnStoryboardStatusChanged", "AFXANIMATIONCONTROLLER/CAnimationStoryboardEventHandler::OnStoryboardUpdated", "AFXANIMATIONCONTROLLER/CAnimationStoryboardEventHandler::SetAnimationController"] helpviewer_keywords: ["CAnimationStoryboardEventHandler [MFC], CAnimationStoryboardEventHandler", "CAnimationStoryboardEventHandler [MFC], CreateInstance", "CAnimationStoryboardEventHandler [MFC], OnStoryboardStatusChanged", "CAnimationStoryboardEventHandler [MFC], OnStoryboardUpdated", "CAnimationStoryboardEventHandler [MFC], SetAnimationController"] -ms.assetid: 10a7e86b-c02d-4124-9a2e-61ecf8ac62fc --- # CAnimationStoryboardEventHandler Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a callback, which is called by the Animation API when the status of a storyboard is changed or a storyboard is updated. ## Syntax diff --git a/docs/mfc/reference/canimationtimereventhandler-class.md b/docs/mfc/reference/canimationtimereventhandler-class.md index ba43bc2b92c..c81fac2c402 100644 --- a/docs/mfc/reference/canimationtimereventhandler-class.md +++ b/docs/mfc/reference/canimationtimereventhandler-class.md @@ -4,10 +4,12 @@ title: "CAnimationTimerEventHandler Class" ms.date: "11/04/2016" f1_keywords: ["CAnimationTimerEventHandler", "AFXANIMATIONCONTROLLER/CAnimationTimerEventHandler", "AFXANIMATIONCONTROLLER/CAnimationTimerEventHandler::CreateInstance", "AFXANIMATIONCONTROLLER/CAnimationTimerEventHandler::OnPostUpdate", "AFXANIMATIONCONTROLLER/CAnimationTimerEventHandler::OnPreUpdate", "AFXANIMATIONCONTROLLER/CAnimationTimerEventHandler::OnRenderingTooSlow", "AFXANIMATIONCONTROLLER/CAnimationTimerEventHandler::SetAnimationController"] helpviewer_keywords: ["CAnimationTimerEventHandler [MFC], CreateInstance", "CAnimationTimerEventHandler [MFC], OnPostUpdate", "CAnimationTimerEventHandler [MFC], OnPreUpdate", "CAnimationTimerEventHandler [MFC], OnRenderingTooSlow", "CAnimationTimerEventHandler [MFC], SetAnimationController"] -ms.assetid: 188dea3b-4b5e-4f6b-8df9-09d993a21619 --- # CAnimationTimerEventHandler Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a callback, which is called by the Animation API when timing events occur. ## Syntax diff --git a/docs/mfc/reference/canimationvalue-class.md b/docs/mfc/reference/canimationvalue-class.md index 30fc884931c..e18d055b2e6 100644 --- a/docs/mfc/reference/canimationvalue-class.md +++ b/docs/mfc/reference/canimationvalue-class.md @@ -4,10 +4,12 @@ title: "CAnimationValue Class" ms.date: "11/04/2016" f1_keywords: ["CAnimationValue", "AFXANIMATIONCONTROLLER/CAnimationValue", "AFXANIMATIONCONTROLLER/CAnimationValue::CAnimationValue", "AFXANIMATIONCONTROLLER/CAnimationValue::AddTransition", "AFXANIMATIONCONTROLLER/CAnimationValue::GetValue", "AFXANIMATIONCONTROLLER/CAnimationValue::GetVariable", "AFXANIMATIONCONTROLLER/CAnimationValue::SetDefaultValue", "AFXANIMATIONCONTROLLER/CAnimationValue::GetAnimationVariableList", "AFXANIMATIONCONTROLLER/CAnimationValue::m_value"] helpviewer_keywords: ["CAnimationValue [MFC], CAnimationValue", "CAnimationValue [MFC], AddTransition", "CAnimationValue [MFC], GetValue", "CAnimationValue [MFC], GetVariable", "CAnimationValue [MFC], SetDefaultValue", "CAnimationValue [MFC], GetAnimationVariableList", "CAnimationValue [MFC], m_value"] -ms.assetid: 78c5ae19-ede5-4f20-bfbe-68b467b603c2 --- # CAnimationValue Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the functionality of animation object that has one value. ## Syntax diff --git a/docs/mfc/reference/canimationvariable-class.md b/docs/mfc/reference/canimationvariable-class.md index 2e6c644481f..cc9ff75a44b 100644 --- a/docs/mfc/reference/canimationvariable-class.md +++ b/docs/mfc/reference/canimationvariable-class.md @@ -4,10 +4,12 @@ title: "CAnimationVariable Class" ms.date: "03/27/2019" f1_keywords: ["CAnimationVariable", "AFXANIMATIONCONTROLLER/CAnimationVariable", "AFXANIMATIONCONTROLLER/CAnimationVariable::CAnimationVariable", "AFXANIMATIONCONTROLLER/CAnimationVariable::AddTransition", "AFXANIMATIONCONTROLLER/CAnimationVariable::ApplyTransitions", "AFXANIMATIONCONTROLLER/CAnimationVariable::ClearTransitions", "AFXANIMATIONCONTROLLER/CAnimationVariable::Create", "AFXANIMATIONCONTROLLER/CAnimationVariable::CreateTransitions", "AFXANIMATIONCONTROLLER/CAnimationVariable::EnableIntegerValueChangedEvent", "AFXANIMATIONCONTROLLER/CAnimationVariable::EnableValueChangedEvent", "AFXANIMATIONCONTROLLER/CAnimationVariable::GetDefaultValue", "AFXANIMATIONCONTROLLER/CAnimationVariable::GetParentAnimationObject", "AFXANIMATIONCONTROLLER/CAnimationVariable::GetValue", "AFXANIMATIONCONTROLLER/CAnimationVariable::GetVariable", "AFXANIMATIONCONTROLLER/CAnimationVariable::SetDefaultValue", "AFXANIMATIONCONTROLLER/CAnimationVariable::SetParentAnimationObject", "AFXANIMATIONCONTROLLER/CAnimationVariable::m_bAutodestroyTransitions", "AFXANIMATIONCONTROLLER/CAnimationVariable::m_dblDefaultValue", "AFXANIMATIONCONTROLLER/CAnimationVariable::m_lstTransitions", "AFXANIMATIONCONTROLLER/CAnimationVariable::m_pParentObject", "AFXANIMATIONCONTROLLER/CAnimationVariable::m_variable"] helpviewer_keywords: ["CAnimationVariable [MFC], CAnimationVariable", "CAnimationVariable [MFC], AddTransition", "CAnimationVariable [MFC], ApplyTransitions", "CAnimationVariable [MFC], ClearTransitions", "CAnimationVariable [MFC], Create", "CAnimationVariable [MFC], CreateTransitions", "CAnimationVariable [MFC], EnableIntegerValueChangedEvent", "CAnimationVariable [MFC], EnableValueChangedEvent", "CAnimationVariable [MFC], GetDefaultValue", "CAnimationVariable [MFC], GetParentAnimationObject", "CAnimationVariable [MFC], GetValue", "CAnimationVariable [MFC], GetVariable", "CAnimationVariable [MFC], SetDefaultValue", "CAnimationVariable [MFC], SetParentAnimationObject", "CAnimationVariable [MFC], m_bAutodestroyTransitions", "CAnimationVariable [MFC], m_dblDefaultValue", "CAnimationVariable [MFC], m_lstTransitions", "CAnimationVariable [MFC], m_pParentObject", "CAnimationVariable [MFC], m_variable"] -ms.assetid: 506e697e-31a8-4033-a27e-292f4d7b42d9 --- # CAnimationVariable Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents an animation variable. ## Syntax diff --git a/docs/mfc/reference/canimationvariablechangehandler-class.md b/docs/mfc/reference/canimationvariablechangehandler-class.md index 1ddcd351281..8b5b4aca7d5 100644 --- a/docs/mfc/reference/canimationvariablechangehandler-class.md +++ b/docs/mfc/reference/canimationvariablechangehandler-class.md @@ -4,10 +4,12 @@ title: "CAnimationVariableChangeHandler Class" ms.date: "11/04/2016" f1_keywords: ["CAnimationVariableChangeHandler", "AFXANIMATIONCONTROLLER/CAnimationVariableChangeHandler", "AFXANIMATIONCONTROLLER/CAnimationVariableChangeHandler::OnValueChanged", "AFXANIMATIONCONTROLLER/CAnimationVariableChangeHandler::SetAnimationController"] helpviewer_keywords: ["CAnimationVariableChangeHandler [MFC], OnValueChanged", "CAnimationVariableChangeHandler [MFC], SetAnimationController"] -ms.assetid: 2ea4996d-5c04-4dfc-be79-d42d55050795 --- # CAnimationVariableChangeHandler Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a callback, which is called by the Animation API when the value of an animation variable changes. ## Syntax diff --git a/docs/mfc/reference/canimationvariableintegerchangehandler-class.md b/docs/mfc/reference/canimationvariableintegerchangehandler-class.md index 4dfd846fcaa..bfda12cf2d4 100644 --- a/docs/mfc/reference/canimationvariableintegerchangehandler-class.md +++ b/docs/mfc/reference/canimationvariableintegerchangehandler-class.md @@ -4,10 +4,12 @@ title: "CAnimationVariableIntegerChangeHandler Class" ms.date: "11/04/2016" f1_keywords: ["CAnimationVariableIntegerChangeHandler", "AFXANIMATIONCONTROLLER/CAnimationVariableIntegerChangeHandler", "AFXANIMATIONCONTROLLER/CAnimationVariableIntegerChangeHandler::CAnimationVariableIntegerChangeHandler", "AFXANIMATIONCONTROLLER/CAnimationVariableIntegerChangeHandler::CreateInstance", "AFXANIMATIONCONTROLLER/CAnimationVariableIntegerChangeHandler::OnIntegerValueChanged", "AFXANIMATIONCONTROLLER/CAnimationVariableIntegerChangeHandler::SetAnimationController"] helpviewer_keywords: ["CAnimationVariableIntegerChangeHandler [MFC], CAnimationVariableIntegerChangeHandler", "CAnimationVariableIntegerChangeHandler [MFC], CreateInstance", "CAnimationVariableIntegerChangeHandler [MFC], OnIntegerValueChanged", "CAnimationVariableIntegerChangeHandler [MFC], SetAnimationController"] -ms.assetid: 6ac8e91b-e514-4ff6-babd-33f77c4b2b61 --- # CAnimationVariableIntegerChangeHandler Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a callback, which is called by the Animation API when the value of an animation variable changes. ## Syntax diff --git a/docs/mfc/reference/carchive-class.md b/docs/mfc/reference/carchive-class.md index 8d8f606693b..26b7fbc409d 100644 --- a/docs/mfc/reference/carchive-class.md +++ b/docs/mfc/reference/carchive-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CArchive [MFC], CArchive", "CArchive [MFC], Abort", "CArc --- # `CArchive` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Allows you to save a complex network of objects in a permanent binary form (usually disk storage) that persists after those objects are deleted. ## Syntax diff --git a/docs/mfc/reference/carchiveexception-class.md b/docs/mfc/reference/carchiveexception-class.md index dca7aacee89..f16ea647f26 100644 --- a/docs/mfc/reference/carchiveexception-class.md +++ b/docs/mfc/reference/carchiveexception-class.md @@ -4,10 +4,12 @@ title: "CArchiveException Class" ms.date: "11/04/2016" f1_keywords: ["CArchiveException", "AFX/CArchiveException", "AFX/CArchiveException::CArchiveException", "AFX/CArchiveException::m_cause", "AFX/CArchiveException::m_strFileName"] helpviewer_keywords: ["CArchiveException [MFC], CArchiveException", "CArchiveException [MFC], m_cause", "CArchiveException [MFC], m_strFileName"] -ms.assetid: da31a127-e86c-41d1-b0b6-bed0865b1b49 --- # CArchiveException Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a serialization exception condition ## Syntax diff --git a/docs/mfc/reference/carray-class.md b/docs/mfc/reference/carray-class.md index 20596963732..0ebc44e38fc 100644 --- a/docs/mfc/reference/carray-class.md +++ b/docs/mfc/reference/carray-class.md @@ -4,10 +4,12 @@ title: "CArray Class" ms.date: "11/04/2016" f1_keywords: ["CArray", "AFXTEMPL/CArray", "AFXTEMPL/CArray::CArray", "AFXTEMPL/CArray::Add", "AFXTEMPL/CArray::Append", "AFXTEMPL/CArray::Copy", "AFXTEMPL/CArray::ElementAt", "AFXTEMPL/CArray::FreeExtra", "AFXTEMPL/CArray::GetAt", "AFXTEMPL/CArray::GetCount", "AFXTEMPL/CArray::GetData", "AFXTEMPL/CArray::GetSize", "AFXTEMPL/CArray::GetUpperBound", "AFXTEMPL/CArray::InsertAt", "AFXTEMPL/CArray::IsEmpty", "AFXTEMPL/CArray::RemoveAll", "AFXTEMPL/CArray::RemoveAt", "AFXTEMPL/CArray::SetAt", "AFXTEMPL/CArray::SetAtGrow", "AFXTEMPL/CArray::SetSize"] helpviewer_keywords: ["CArray [MFC], CArray", "CArray [MFC], Add", "CArray [MFC], Append", "CArray [MFC], Copy", "CArray [MFC], ElementAt", "CArray [MFC], FreeExtra", "CArray [MFC], GetAt", "CArray [MFC], GetCount", "CArray [MFC], GetData", "CArray [MFC], GetSize", "CArray [MFC], GetUpperBound", "CArray [MFC], InsertAt", "CArray [MFC], IsEmpty", "CArray [MFC], RemoveAll", "CArray [MFC], RemoveAt", "CArray [MFC], SetAt", "CArray [MFC], SetAtGrow", "CArray [MFC], SetSize"] -ms.assetid: fead8b00-4cfd-4625-ad0e-251df62ba92f --- # `CArray` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports arrays that are like C arrays, but can dynamically reduce and grow as necessary. ## Syntax diff --git a/docs/mfc/reference/casyncmonikerfile-class.md b/docs/mfc/reference/casyncmonikerfile-class.md index 609962a7759..e5ea9ddca36 100644 --- a/docs/mfc/reference/casyncmonikerfile-class.md +++ b/docs/mfc/reference/casyncmonikerfile-class.md @@ -4,10 +4,12 @@ title: "CAsyncMonikerFile Class" ms.date: "11/04/2016" f1_keywords: ["CAsyncMonikerFile", "AFXOLE/CAsyncMonikerFile", "AFXOLE/CAsyncMonikerFile::CAsyncMonikerFile", "AFXOLE/CAsyncMonikerFile::Close", "AFXOLE/CAsyncMonikerFile::GetBinding", "AFXOLE/CAsyncMonikerFile::GetFormatEtc", "AFXOLE/CAsyncMonikerFile::Open", "AFXOLE/CAsyncMonikerFile::CreateBindStatusCallback", "AFXOLE/CAsyncMonikerFile::GetBindInfo", "AFXOLE/CAsyncMonikerFile::GetPriority", "AFXOLE/CAsyncMonikerFile::OnDataAvailable", "AFXOLE/CAsyncMonikerFile::OnLowResource", "AFXOLE/CAsyncMonikerFile::OnProgress", "AFXOLE/CAsyncMonikerFile::OnStartBinding", "AFXOLE/CAsyncMonikerFile::OnStopBinding"] helpviewer_keywords: ["CAsyncMonikerFile [MFC], CAsyncMonikerFile", "CAsyncMonikerFile [MFC], Close", "CAsyncMonikerFile [MFC], GetBinding", "CAsyncMonikerFile [MFC], GetFormatEtc", "CAsyncMonikerFile [MFC], Open", "CAsyncMonikerFile [MFC], CreateBindStatusCallback", "CAsyncMonikerFile [MFC], GetBindInfo", "CAsyncMonikerFile [MFC], GetPriority", "CAsyncMonikerFile [MFC], OnDataAvailable", "CAsyncMonikerFile [MFC], OnLowResource", "CAsyncMonikerFile [MFC], OnProgress", "CAsyncMonikerFile [MFC], OnStartBinding", "CAsyncMonikerFile [MFC], OnStopBinding"] -ms.assetid: 17378b66-a49a-4b67-88e3-7756ad26a2fc --- # CAsyncMonikerFile Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides functionality for the use of asynchronous monikers in ActiveX controls (formerly OLE controls). ## Syntax diff --git a/docs/mfc/reference/casyncsocket-class.md b/docs/mfc/reference/casyncsocket-class.md index 9d1d045acdd..a88cc1ed46a 100644 --- a/docs/mfc/reference/casyncsocket-class.md +++ b/docs/mfc/reference/casyncsocket-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CAsyncSocket [MFC], CAsyncSocket", "CAsyncSocket [MFC], A --- # `CAsyncSocket` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a Windows Socket — an endpoint of network communication. ## Syntax diff --git a/docs/mfc/reference/cautohidedocksite-class.md b/docs/mfc/reference/cautohidedocksite-class.md index 9b588d7bbf0..87b68fc1d17 100644 --- a/docs/mfc/reference/cautohidedocksite-class.md +++ b/docs/mfc/reference/cautohidedocksite-class.md @@ -4,10 +4,12 @@ title: "CAutoHideDockSite Class" ms.date: "11/04/2016" f1_keywords: ["CAutoHideDockSite", "AFXAUTOHIDEDOCKSITE/CAutoHideDockSite", "AFXAUTOHIDEDOCKSITE/CAutoHideDockSite::CanAcceptPane", "AFXAUTOHIDEDOCKSITE/CAutoHideDockSite::DockPane", "AFXAUTOHIDEDOCKSITE/CAutoHideDockSite::GetAlignRect", "AFXAUTOHIDEDOCKSITE/CAutoHideDockSite::RepositionPanes", "AFXAUTOHIDEDOCKSITE/CAutoHideDockSite::SetOffsetLeft", "AFXAUTOHIDEDOCKSITE/CAutoHideDockSite::SetOffsetRight", "AFXAUTOHIDEDOCKSITE/CAutoHideDockSite::UnSetAutoHideMode", "AFXAUTOHIDEDOCKSITE/CAutoHideDockSite::m_nExtraSpace"] helpviewer_keywords: ["CAutoHideDockSite [MFC], CanAcceptPane", "CAutoHideDockSite [MFC], DockPane", "CAutoHideDockSite [MFC], GetAlignRect", "CAutoHideDockSite [MFC], RepositionPanes", "CAutoHideDockSite [MFC], SetOffsetLeft", "CAutoHideDockSite [MFC], SetOffsetRight", "CAutoHideDockSite [MFC], UnSetAutoHideMode", "CAutoHideDockSite [MFC], m_nExtraSpace"] -ms.assetid: 2a0f6bec-c369-4ab7-977d-564e7946ebad --- # CAutoHideDockSite Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CAutoHideDockSite` extends the [CDockSite Class](../../mfc/reference/cdocksite-class.md) to implement auto-hide dock panes. ## Syntax diff --git a/docs/mfc/reference/cbasekeyframe-class.md b/docs/mfc/reference/cbasekeyframe-class.md index 40785c05ad3..db616828987 100644 --- a/docs/mfc/reference/cbasekeyframe-class.md +++ b/docs/mfc/reference/cbasekeyframe-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CBaseKeyFrame [MFC], CBaseKeyFrame", "CBaseKeyFrame [MFC] --- # CBaseKeyFrame Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the basic functionality of a keyframe. ## Syntax diff --git a/docs/mfc/reference/cbasepane-class.md b/docs/mfc/reference/cbasepane-class.md index de3b9ea5943..0f46768977e 100644 --- a/docs/mfc/reference/cbasepane-class.md +++ b/docs/mfc/reference/cbasepane-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CBasePane [MFC], AccNotifyObjectFocusEvent", "CBasePane [ --- # CBasePane Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Base class for all panes in MFC. ## Syntax diff --git a/docs/mfc/reference/cbasetabbedpane-class.md b/docs/mfc/reference/cbasetabbedpane-class.md index 22e01b013fc..ce0f9df952f 100644 --- a/docs/mfc/reference/cbasetabbedpane-class.md +++ b/docs/mfc/reference/cbasetabbedpane-class.md @@ -4,10 +4,12 @@ title: "CBaseTabbedPane Class" ms.date: "11/04/2016" f1_keywords: ["CBaseTabbedPane", "AFXBASETABBEDPANE/CBaseTabbedPane", "AFXBASETABBEDPANE/CBaseTabbedPane::AddTab", "AFXBASETABBEDPANE/CBaseTabbedPane::AllowDestroyEmptyTabbedPane", "AFXBASETABBEDPANE/CBaseTabbedPane::ApplyRestoredTabInfo", "AFXBASETABBEDPANE/CBaseTabbedPane::CanFloat", "AFXBASETABBEDPANE/CBaseTabbedPane::CanSetCaptionTextToTabName", "AFXBASETABBEDPANE/CBaseTabbedPane::ConvertToTabbedDocument", "AFXBASETABBEDPANE/CBaseTabbedPane::DetachPane", "AFXBASETABBEDPANE/CBaseTabbedPane::EnableSetCaptionTextToTabName", "AFXBASETABBEDPANE/CBaseTabbedPane::FillDefaultTabsOrderArray", "AFXBASETABBEDPANE/CBaseTabbedPane::FindBarByTabNumber", "AFXBASETABBEDPANE/CBaseTabbedPane::FindPaneByID", "AFXBASETABBEDPANE/CBaseTabbedPane::FloatTab", "AFXBASETABBEDPANE/CBaseTabbedPane::GetDefaultTabsOrder", "AFXBASETABBEDPANE/CBaseTabbedPane::GetFirstVisibleTab", "AFXBASETABBEDPANE/CBaseTabbedPane::GetMinSize", "AFXBASETABBEDPANE/CBaseTabbedPane::GetPaneIcon", "AFXBASETABBEDPANE/CBaseTabbedPane::GetPaneList", "AFXBASETABBEDPANE/CBaseTabbedPane::GetTabArea", "AFXBASETABBEDPANE/CBaseTabbedPane::GetTabsNum", "AFXBASETABBEDPANE/CBaseTabbedPane::GetUnderlyingWindow", "AFXBASETABBEDPANE/CBaseTabbedPane::GetVisibleTabsNum", "AFXBASETABBEDPANE/CBaseTabbedPane::HasAutoHideMode", "AFXBASETABBEDPANE/CBaseTabbedPane::IsHideSingleTab", "AFXBASETABBEDPANE/CBaseTabbedPane::RecalcLayout", "AFXBASETABBEDPANE/CBaseTabbedPane::RemovePane", "AFXBASETABBEDPANE/CBaseTabbedPane::SetAutoDestroy", "AFXBASETABBEDPANE/CBaseTabbedPane::SetAutoHideMode", "AFXBASETABBEDPANE/CBaseTabbedPane::ShowTab"] helpviewer_keywords: ["CBaseTabbedPane [MFC], AddTab", "CBaseTabbedPane [MFC], AllowDestroyEmptyTabbedPane", "CBaseTabbedPane [MFC], ApplyRestoredTabInfo", "CBaseTabbedPane [MFC], CanFloat", "CBaseTabbedPane [MFC], CanSetCaptionTextToTabName", "CBaseTabbedPane [MFC], ConvertToTabbedDocument", "CBaseTabbedPane [MFC], DetachPane", "CBaseTabbedPane [MFC], EnableSetCaptionTextToTabName", "CBaseTabbedPane [MFC], FillDefaultTabsOrderArray", "CBaseTabbedPane [MFC], FindBarByTabNumber", "CBaseTabbedPane [MFC], FindPaneByID", "CBaseTabbedPane [MFC], FloatTab", "CBaseTabbedPane [MFC], GetDefaultTabsOrder", "CBaseTabbedPane [MFC], GetFirstVisibleTab", "CBaseTabbedPane [MFC], GetMinSize", "CBaseTabbedPane [MFC], GetPaneIcon", "CBaseTabbedPane [MFC], GetPaneList", "CBaseTabbedPane [MFC], GetTabArea", "CBaseTabbedPane [MFC], GetTabsNum", "CBaseTabbedPane [MFC], GetUnderlyingWindow", "CBaseTabbedPane [MFC], GetVisibleTabsNum", "CBaseTabbedPane [MFC], HasAutoHideMode", "CBaseTabbedPane [MFC], IsHideSingleTab", "CBaseTabbedPane [MFC], RecalcLayout", "CBaseTabbedPane [MFC], RemovePane", "CBaseTabbedPane [MFC], SetAutoDestroy", "CBaseTabbedPane [MFC], SetAutoHideMode", "CBaseTabbedPane [MFC], ShowTab"] -ms.assetid: f22c0080-5b29-4a0a-8f74-8f0a4cd2dbcf --- # CBaseTabbedPane Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Extends the functionality of the [CDockablePane Class](../../mfc/reference/cdockablepane-class.md) to support the creation of tabbed windows. ## Syntax diff --git a/docs/mfc/reference/cbasetransition-class.md b/docs/mfc/reference/cbasetransition-class.md index 83787986692..1fcad2c2626 100644 --- a/docs/mfc/reference/cbasetransition-class.md +++ b/docs/mfc/reference/cbasetransition-class.md @@ -4,10 +4,12 @@ title: "CBaseTransition Class" ms.date: "03/27/2019" f1_keywords: ["CBaseTransition", "AFXANIMATIONCONTROLLER/CBaseTransition", "AFXANIMATIONCONTROLLER/CBaseTransition::CBaseTransition", "AFXANIMATIONCONTROLLER/CBaseTransition::AddToStoryboard", "AFXANIMATIONCONTROLLER/CBaseTransition::AddToStoryboardAtKeyframes", "AFXANIMATIONCONTROLLER/CBaseTransition::Clear", "AFXANIMATIONCONTROLLER/CBaseTransition::Create", "AFXANIMATIONCONTROLLER/CBaseTransition::GetEndKeyframe", "AFXANIMATIONCONTROLLER/CBaseTransition::GetRelatedVariable", "AFXANIMATIONCONTROLLER/CBaseTransition::GetStartKeyframe", "AFXANIMATIONCONTROLLER/CBaseTransition::GetTransition", "AFXANIMATIONCONTROLLER/CBaseTransition::GetType", "AFXANIMATIONCONTROLLER/CBaseTransition::IsAdded", "AFXANIMATIONCONTROLLER/CBaseTransition::SetKeyframes", "AFXANIMATIONCONTROLLER/CBaseTransition::SetRelatedVariable", "AFXANIMATIONCONTROLLER/CBaseTransition::m_bAdded", "AFXANIMATIONCONTROLLER/CBaseTransition::m_pEndKeyframe", "AFXANIMATIONCONTROLLER/CBaseTransition::m_pRelatedVariable", "AFXANIMATIONCONTROLLER/CBaseTransition::m_pStartKeyframe", "AFXANIMATIONCONTROLLER/CBaseTransition::m_transition", "AFXANIMATIONCONTROLLER/CBaseTransition::m_type"] helpviewer_keywords: ["CBaseTransition [MFC], CBaseTransition", "CBaseTransition [MFC], AddToStoryboard", "CBaseTransition [MFC], AddToStoryboardAtKeyframes", "CBaseTransition [MFC], Clear", "CBaseTransition [MFC], Create", "CBaseTransition [MFC], GetEndKeyframe", "CBaseTransition [MFC], GetRelatedVariable", "CBaseTransition [MFC], GetStartKeyframe", "CBaseTransition [MFC], GetTransition", "CBaseTransition [MFC], GetType", "CBaseTransition [MFC], IsAdded", "CBaseTransition [MFC], SetKeyframes", "CBaseTransition [MFC], SetRelatedVariable", "CBaseTransition [MFC], m_bAdded", "CBaseTransition [MFC], m_pEndKeyframe", "CBaseTransition [MFC], m_pRelatedVariable", "CBaseTransition [MFC], m_pStartKeyframe", "CBaseTransition [MFC], m_transition", "CBaseTransition [MFC], m_type"] -ms.assetid: dfe84007-bbc5-43b7-b5b8-fae9145573bf --- # CBaseTransition Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a basic transition. ## Syntax diff --git a/docs/mfc/reference/cbitmap-class.md b/docs/mfc/reference/cbitmap-class.md index 41642f129b5..c914aa52a4b 100644 --- a/docs/mfc/reference/cbitmap-class.md +++ b/docs/mfc/reference/cbitmap-class.md @@ -4,10 +4,12 @@ title: "CBitmap Class" ms.date: "11/04/2016" f1_keywords: ["CBitmap", "AFXWIN/CBitmap", "AFXWIN/CBitmap::CBitmap", "AFXWIN/CBitmap::CreateBitmap", "AFXWIN/CBitmap::CreateBitmapIndirect", "AFXWIN/CBitmap::CreateCompatibleBitmap", "AFXWIN/CBitmap::CreateDiscardableBitmap", "AFXWIN/CBitmap::FromHandle", "AFXWIN/CBitmap::GetBitmap", "AFXWIN/CBitmap::GetBitmapBits", "AFXWIN/CBitmap::GetBitmapDimension", "AFXWIN/CBitmap::LoadBitmap", "AFXWIN/CBitmap::LoadMappedBitmap", "AFXWIN/CBitmap::LoadOEMBitmap", "AFXWIN/CBitmap::SetBitmapBits", "AFXWIN/CBitmap::SetBitmapDimension"] helpviewer_keywords: ["CBitmap [MFC], CBitmap", "CBitmap [MFC], CreateBitmap", "CBitmap [MFC], CreateBitmapIndirect", "CBitmap [MFC], CreateCompatibleBitmap", "CBitmap [MFC], CreateDiscardableBitmap", "CBitmap [MFC], FromHandle", "CBitmap [MFC], GetBitmap", "CBitmap [MFC], GetBitmapBits", "CBitmap [MFC], GetBitmapDimension", "CBitmap [MFC], LoadBitmap", "CBitmap [MFC], LoadMappedBitmap", "CBitmap [MFC], LoadOEMBitmap", "CBitmap [MFC], SetBitmapBits", "CBitmap [MFC], SetBitmapDimension"] -ms.assetid: 3980616a-c59d-495a-86e6-62bd3889c84c --- # `CBitmap` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a Windows graphics device interface (GDI) bitmap and provides member functions to manipulate the bitmap. ## Syntax diff --git a/docs/mfc/reference/cbitmapbutton-class.md b/docs/mfc/reference/cbitmapbutton-class.md index 40777e6f653..74b93c9d90c 100644 --- a/docs/mfc/reference/cbitmapbutton-class.md +++ b/docs/mfc/reference/cbitmapbutton-class.md @@ -4,10 +4,12 @@ title: "CBitmapButton Class" ms.date: "11/04/2016" f1_keywords: ["CBitmapButton", "AFXEXT/CBitmapButton", "AFXEXT/CBitmapButton::CBitmapButton", "AFXEXT/CBitmapButton::AutoLoad", "AFXEXT/CBitmapButton::LoadBitmaps", "AFXEXT/CBitmapButton::SizeToContent"] helpviewer_keywords: ["CBitmapButton [MFC], CBitmapButton", "CBitmapButton [MFC], AutoLoad", "CBitmapButton [MFC], LoadBitmaps", "CBitmapButton [MFC], SizeToContent"] -ms.assetid: 9ad6cb45-c3c4-4fb1-96d3-1fe3df7bbcfc --- # CBitmapButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Creates pushbutton controls labeled with bitmapped images instead of text. ## Syntax diff --git a/docs/mfc/reference/cbitmaprendertarget-class.md b/docs/mfc/reference/cbitmaprendertarget-class.md index 39e0ba6e5b0..c0469597461 100644 --- a/docs/mfc/reference/cbitmaprendertarget-class.md +++ b/docs/mfc/reference/cbitmaprendertarget-class.md @@ -4,10 +4,12 @@ title: "CBitmapRenderTarget Class" ms.date: "11/04/2016" f1_keywords: ["CBitmapRenderTarget", "AFXRENDERTARGET/CBitmapRenderTarget", "AFXRENDERTARGET/CBitmapRenderTarget::CBitmapRenderTarget", "AFXRENDERTARGET/CBitmapRenderTarget::Attach", "AFXRENDERTARGET/CBitmapRenderTarget::Detach", "AFXRENDERTARGET/CBitmapRenderTarget::GetBitmap", "AFXRENDERTARGET/CBitmapRenderTarget::GetBitmapRenderTarget", "AFXRENDERTARGET/CBitmapRenderTarget::m_pBitmapRenderTarget"] helpviewer_keywords: ["CBitmapRenderTarget [MFC], CBitmapRenderTarget", "CBitmapRenderTarget [MFC], Attach", "CBitmapRenderTarget [MFC], Detach", "CBitmapRenderTarget [MFC], GetBitmap", "CBitmapRenderTarget [MFC], GetBitmapRenderTarget", "CBitmapRenderTarget [MFC], m_pBitmapRenderTarget"] -ms.assetid: c89a4437-812e-4943-acb2-b429a04cc4d2 --- # CBitmapRenderTarget Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for ID2D1BitmapRenderTarget. ## Syntax diff --git a/docs/mfc/reference/cbrush-class.md b/docs/mfc/reference/cbrush-class.md index e9173b9a1b9..274a3dac48a 100644 --- a/docs/mfc/reference/cbrush-class.md +++ b/docs/mfc/reference/cbrush-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CBrush [MFC], CBrush", "CBrush [MFC], CreateBrushIndirect --- # `CBrush` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a Windows graphics device interface (GDI) brush. ## Syntax diff --git a/docs/mfc/reference/cbutton-class.md b/docs/mfc/reference/cbutton-class.md index 3d19e7ff585..607dd0251aa 100644 --- a/docs/mfc/reference/cbutton-class.md +++ b/docs/mfc/reference/cbutton-class.md @@ -4,10 +4,12 @@ title: "CButton Class" ms.date: "11/04/2016" f1_keywords: ["CButton", "AFXWIN/CButton", "AFXWIN/CButton::CButton", "AFXWIN/CButton::Create", "AFXWIN/CButton::DrawItem", "AFXWIN/CButton::GetBitmap", "AFXWIN/CButton::GetButtonStyle", "AFXWIN/CButton::GetCheck", "AFXWIN/CButton::GetCursor", "AFXWIN/CButton::GetIcon", "AFXWIN/CButton::GetIdealSize", "AFXWIN/CButton::GetImageList", "AFXWIN/CButton::GetNote", "AFXWIN/CButton::GetNoteLength", "AFXWIN/CButton::GetSplitGlyph", "AFXWIN/CButton::GetSplitImageList", "AFXWIN/CButton::GetSplitInfo", "AFXWIN/CButton::GetSplitSize", "AFXWIN/CButton::GetSplitStyle", "AFXWIN/CButton::GetState", "AFXWIN/CButton::GetTextMargin", "AFXWIN/CButton::SetBitmap", "AFXWIN/CButton::SetButtonStyle", "AFXWIN/CButton::SetCheck", "AFXWIN/CButton::SetCursor", "AFXWIN/CButton::SetDropDownState", "AFXWIN/CButton::SetIcon", "AFXWIN/CButton::SetImageList", "AFXWIN/CButton::SetNote", "AFXWIN/CButton::SetSplitGlyph", "AFXWIN/CButton::SetSplitImageList", "AFXWIN/CButton::SetSplitInfo", "AFXWIN/CButton::SetSplitSize", "AFXWIN/CButton::SetSplitStyle", "AFXWIN/CButton::SetState", "AFXWIN/CButton::SetTextMargin"] helpviewer_keywords: ["CButton [MFC], CButton", "CButton [MFC], Create", "CButton [MFC], DrawItem", "CButton [MFC], GetBitmap", "CButton [MFC], GetButtonStyle", "CButton [MFC], GetCheck", "CButton [MFC], GetCursor", "CButton [MFC], GetIcon", "CButton [MFC], GetIdealSize", "CButton [MFC], GetImageList", "CButton [MFC], GetNote", "CButton [MFC], GetNoteLength", "CButton [MFC], GetSplitGlyph", "CButton [MFC], GetSplitImageList", "CButton [MFC], GetSplitInfo", "CButton [MFC], GetSplitSize", "CButton [MFC], GetSplitStyle", "CButton [MFC], GetState", "CButton [MFC], GetTextMargin", "CButton [MFC], SetBitmap", "CButton [MFC], SetButtonStyle", "CButton [MFC], SetCheck", "CButton [MFC], SetCursor", "CButton [MFC], SetDropDownState", "CButton [MFC], SetIcon", "CButton [MFC], SetImageList", "CButton [MFC], SetNote", "CButton [MFC], SetSplitGlyph", "CButton [MFC], SetSplitImageList", "CButton [MFC], SetSplitInfo", "CButton [MFC], SetSplitSize", "CButton [MFC], SetSplitStyle", "CButton [MFC], SetState", "CButton [MFC], SetTextMargin"] -ms.assetid: cdc76d5b-31da-43c5-bc43-fde4cb39de5b --- # CButton Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of Windows button controls. ## Syntax diff --git a/docs/mfc/reference/cbytearray-class.md b/docs/mfc/reference/cbytearray-class.md index 9010e7b881a..42df04444be 100644 --- a/docs/mfc/reference/cbytearray-class.md +++ b/docs/mfc/reference/cbytearray-class.md @@ -4,10 +4,12 @@ title: "CByteArray Class" ms.date: "11/04/2016" f1_keywords: ["CByteArray", "AFXCOLL/CByteArray", "AFXCOLL/CByteArray::CByteArray", "AFXCOLL/CByteArray::Add", "AFXCOLL/CByteArray::Append", "AFXCOLL/CByteArray::Copy", "AFXCOLL/CByteArray::ElementAt", "AFXCOLL/CByteArray::FreeExtra", "AFXCOLL/CByteArray::GetAt", "AFXCOLL/CByteArray::GetCount", "AFXCOLL/CByteArray::GetData", "AFXCOLL/CByteArray::GetSize", "AFXCOLL/CByteArray::GetUpperBound", "AFXCOLL/CByteArray::InsertAt", "AFXCOLL/CByteArray::IsEmpty", "AFXCOLL/CByteArray::RemoveAll", "AFXCOLL/CByteArray::RemoveAt", "AFXCOLL/CByteArray::SetAt", "AFXCOLL/CByteArray::SetAtGrow", "AFXCOLL/CByteArray::SetSize"] helpviewer_keywords: ["CByteArray [MFC], CByteArray", "CByteArray [MFC], Add", "CByteArray [MFC], Append", "CByteArray [MFC], Copy", "CByteArray [MFC], ElementAt", "CByteArray [MFC], FreeExtra", "CByteArray [MFC], GetAt", "CByteArray [MFC], GetCount", "CByteArray [MFC], GetData", "CByteArray [MFC], GetSize", "CByteArray [MFC], GetUpperBound", "CByteArray [MFC], InsertAt", "CByteArray [MFC], IsEmpty", "CByteArray [MFC], RemoveAll", "CByteArray [MFC], RemoveAt", "CByteArray [MFC], SetAt", "CByteArray [MFC], SetAtGrow", "CByteArray [MFC], SetSize"] -ms.assetid: 53d4a512-657c-4187-9609-e3f5339a78e0 --- # CByteArray Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports dynamic arrays of bytes. ## Syntax diff --git a/docs/mfc/reference/ccacheddatapathproperty-class.md b/docs/mfc/reference/ccacheddatapathproperty-class.md index bbbdeb2971a..e437ac08a70 100644 --- a/docs/mfc/reference/ccacheddatapathproperty-class.md +++ b/docs/mfc/reference/ccacheddatapathproperty-class.md @@ -4,10 +4,12 @@ title: "CCachedDataPathProperty Class" ms.date: "11/04/2016" f1_keywords: ["CCachedDataPathProperty", "AFXCTL/CCachedDataPathProperty", "AFXCTL/CCachedDataPathProperty::CCachedDataPathProperty", "AFXCTL/CCachedDataPathProperty::m_Cache"] helpviewer_keywords: ["CCachedDataPathProperty [MFC], CCachedDataPathProperty", "CCachedDataPathProperty [MFC], m_Cache"] -ms.assetid: 0d81356b-4fe5-43f6-aed2-2eb5a5485706 --- # CCachedDataPathProperty Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements an OLE control property transferred asynchronously and cached in a memory file. ## Syntax diff --git a/docs/mfc/reference/cchecklistbox-class.md b/docs/mfc/reference/cchecklistbox-class.md index 1ef8922947c..ab55aaf58ec 100644 --- a/docs/mfc/reference/cchecklistbox-class.md +++ b/docs/mfc/reference/cchecklistbox-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CCheckListBox [MFC], CCheckListBox", "CCheckListBox [MFC] --- # `CCheckListBox` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of a Windows checklist box. ## Syntax diff --git a/docs/mfc/reference/cclientdc-class.md b/docs/mfc/reference/cclientdc-class.md index 02091a39e28..1321c52ab06 100644 --- a/docs/mfc/reference/cclientdc-class.md +++ b/docs/mfc/reference/cclientdc-class.md @@ -4,10 +4,12 @@ title: "CClientDC Class" ms.date: "11/04/2016" f1_keywords: ["CClientDC", "AFXWIN/CClientDC", "AFXWIN/CClientDC::CClientDC", "AFXWIN/CClientDC::m_hWnd"] helpviewer_keywords: ["CClientDC [MFC], CClientDC", "CClientDC [MFC], m_hWnd"] -ms.assetid: 8a871d6b-06f8-496e-9fa3-9a5780848369 --- # CClientDC Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Takes care of calling the Windows functions [GetDC](/windows/win32/api/winuser/nf-winuser-getdc) at construction time and [ReleaseDC](/windows/win32/api/winuser/nf-winuser-releasedc) at destruction time. ## Syntax diff --git a/docs/mfc/reference/ccmdtarget-class.md b/docs/mfc/reference/ccmdtarget-class.md index 6c3bdf1fc05..e089d2093e5 100644 --- a/docs/mfc/reference/ccmdtarget-class.md +++ b/docs/mfc/reference/ccmdtarget-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CCmdTarget [MFC], CCmdTarget", "CCmdTarget [MFC], BeginWa --- # `CCmdTarget` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class for the Microsoft Foundation Class Library message-map architecture. ## Syntax diff --git a/docs/mfc/reference/ccmdui-class.md b/docs/mfc/reference/ccmdui-class.md index f110e8be151..52a40e07db6 100644 --- a/docs/mfc/reference/ccmdui-class.md +++ b/docs/mfc/reference/ccmdui-class.md @@ -4,10 +4,12 @@ title: "CCmdUI Class" ms.date: "09/06/2019" f1_keywords: ["CCmdUI", "AFXWIN/CCmdUI", "AFXWIN/CCmdUI::ContinueRouting", "AFXWIN/CCmdUI::Enable", "AFXWIN/CCmdUI::SetCheck", "AFXWIN/CCmdUI::SetRadio", "AFXWIN/CCmdUI::SetText", "AFXWIN/CCmdUI::m_nID", "AFXWIN/CCmdUI::m_nIndex", "AFXWIN/CCmdUI::m_pMenu", "AFXWIN/CCmdUI::m_pOther", "AFXWIN/CCmdUI::m_pSubMenu"] helpviewer_keywords: ["CCmdUI [MFC], ContinueRouting", "CCmdUI [MFC], Enable", "CCmdUI [MFC], SetCheck", "CCmdUI [MFC], SetRadio", "CCmdUI [MFC], SetText", "CCmdUI [MFC], m_nID", "CCmdUI [MFC], m_nIndex", "CCmdUI [MFC], m_pMenu", "CCmdUI [MFC], m_pOther", "CCmdUI [MFC], m_pSubMenu"] -ms.assetid: 04eaaaf5-f510-48ab-b425-94665ba24766 --- # CCmdUI Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Is used only within an `ON_UPDATE_COMMAND_UI` handler in a `CCmdTarget`-derived class. ## Syntax diff --git a/docs/mfc/reference/ccolordialog-class.md b/docs/mfc/reference/ccolordialog-class.md index 3ef9b0282c5..d860dfcfc00 100644 --- a/docs/mfc/reference/ccolordialog-class.md +++ b/docs/mfc/reference/ccolordialog-class.md @@ -4,10 +4,12 @@ title: "CColorDialog Class" ms.date: "11/04/2016" f1_keywords: ["CColorDialog", "AFXDLGS/CColorDialog", "AFXDLGS/CColorDialog::CColorDialog", "AFXDLGS/CColorDialog::DoModal", "AFXDLGS/CColorDialog::GetColor", "AFXDLGS/CColorDialog::GetSavedCustomColors", "AFXDLGS/CColorDialog::SetCurrentColor", "AFXDLGS/CColorDialog::OnColorOK", "AFXDLGS/CColorDialog::m_cc"] helpviewer_keywords: ["CColorDialog [MFC], CColorDialog", "CColorDialog [MFC], DoModal", "CColorDialog [MFC], GetColor", "CColorDialog [MFC], GetSavedCustomColors", "CColorDialog [MFC], SetCurrentColor", "CColorDialog [MFC], OnColorOK", "CColorDialog [MFC], m_cc"] -ms.assetid: d013dc25-9290-4b5d-a97e-95ad7208e13b --- # CColorDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Allows you to incorporate a color-selection dialog box into your application. ## Syntax diff --git a/docs/mfc/reference/ccombobox-class.md b/docs/mfc/reference/ccombobox-class.md index ca740d929f8..fb99b69cc46 100644 --- a/docs/mfc/reference/ccombobox-class.md +++ b/docs/mfc/reference/ccombobox-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CComboBox [MFC], CComboBox", "CComboBox [MFC], AddString" --- # `CComboBox` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of a Windows combo box. ## Syntax diff --git a/docs/mfc/reference/ccomboboxex-class.md b/docs/mfc/reference/ccomboboxex-class.md index 5038d39997d..51257fd7d41 100644 --- a/docs/mfc/reference/ccomboboxex-class.md +++ b/docs/mfc/reference/ccomboboxex-class.md @@ -4,10 +4,12 @@ title: "CComboBoxEx Class" ms.date: "11/04/2016" f1_keywords: ["CComboBoxEx", "AFXCMN/CComboBoxEx", "AFXCMN/CComboBoxEx::CComboBoxEx", "AFXCMN/CComboBoxEx::Create", "AFXCMN/CComboBoxEx::CreateEx", "AFXCMN/CComboBoxEx::DeleteItem", "AFXCMN/CComboBoxEx::GetComboBoxCtrl", "AFXCMN/CComboBoxEx::GetEditCtrl", "AFXCMN/CComboBoxEx::GetExtendedStyle", "AFXCMN/CComboBoxEx::GetImageList", "AFXCMN/CComboBoxEx::GetItem", "AFXCMN/CComboBoxEx::HasEditChanged", "AFXCMN/CComboBoxEx::InsertItem", "AFXCMN/CComboBoxEx::SetExtendedStyle", "AFXCMN/CComboBoxEx::SetImageList", "AFXCMN/CComboBoxEx::SetItem", "AFXCMN/CComboBoxEx::SetWindowTheme"] helpviewer_keywords: ["CComboBoxEx [MFC], CComboBoxEx", "CComboBoxEx [MFC], Create", "CComboBoxEx [MFC], CreateEx", "CComboBoxEx [MFC], DeleteItem", "CComboBoxEx [MFC], GetComboBoxCtrl", "CComboBoxEx [MFC], GetEditCtrl", "CComboBoxEx [MFC], GetExtendedStyle", "CComboBoxEx [MFC], GetImageList", "CComboBoxEx [MFC], GetItem", "CComboBoxEx [MFC], HasEditChanged", "CComboBoxEx [MFC], InsertItem", "CComboBoxEx [MFC], SetExtendedStyle", "CComboBoxEx [MFC], SetImageList", "CComboBoxEx [MFC], SetItem", "CComboBoxEx [MFC], SetWindowTheme"] -ms.assetid: 33ca960a-2409-478c-84a4-a2ee8ecfe8f7 --- # CComboBoxEx Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Extends the combo box control by providing support for image lists. ## Syntax diff --git a/docs/mfc/reference/ccommandlineinfo-class.md b/docs/mfc/reference/ccommandlineinfo-class.md index 0702885e23c..3f165999fdd 100644 --- a/docs/mfc/reference/ccommandlineinfo-class.md +++ b/docs/mfc/reference/ccommandlineinfo-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CCommandLineInfo [MFC], CCommandLineInfo", "CCommandLineI --- # `CCommandLineInfo` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Aids in parsing the command line at application startup. ## Syntax diff --git a/docs/mfc/reference/ccommondialog-class.md b/docs/mfc/reference/ccommondialog-class.md index bb92ea0e98a..80866aebe99 100644 --- a/docs/mfc/reference/ccommondialog-class.md +++ b/docs/mfc/reference/ccommondialog-class.md @@ -4,10 +4,12 @@ title: "CCommonDialog Class" ms.date: "11/04/2016" f1_keywords: ["CCommonDialog", "AFXDLGS/CCommonDialog", "AFXDLGS/CCommonDialog::CCommonDialog"] helpviewer_keywords: ["CCommonDialog [MFC], CCommonDialog"] -ms.assetid: 1f68d65f-a0fd-4778-be22-ebbe51a95f95 --- # CCommonDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class for classes that encapsulate functionality of the Windows common dialogs. ## Syntax diff --git a/docs/mfc/reference/cconnectionpoint-class.md b/docs/mfc/reference/cconnectionpoint-class.md index 97925d83f01..8ee400a356d 100644 --- a/docs/mfc/reference/cconnectionpoint-class.md +++ b/docs/mfc/reference/cconnectionpoint-class.md @@ -4,10 +4,12 @@ title: "CConnectionPoint Class" ms.date: "11/04/2016" f1_keywords: ["CConnectionPoint", "AFXDISP/CConnectionPoint", "AFXDISP/CConnectionPoint::CConnectionPoint", "AFXDISP/CConnectionPoint::GetConnections", "AFXDISP/CConnectionPoint::GetContainer", "AFXDISP/CConnectionPoint::GetIID", "AFXDISP/CConnectionPoint::GetMaxConnections", "AFXDISP/CConnectionPoint::GetNextConnection", "AFXDISP/CConnectionPoint::GetStartPosition", "AFXDISP/CConnectionPoint::OnAdvise", "AFXDISP/CConnectionPoint::QuerySinkInterface"] helpviewer_keywords: ["CConnectionPoint [MFC], CConnectionPoint", "CConnectionPoint [MFC], GetConnections", "CConnectionPoint [MFC], GetContainer", "CConnectionPoint [MFC], GetIID", "CConnectionPoint [MFC], GetMaxConnections", "CConnectionPoint [MFC], GetNextConnection", "CConnectionPoint [MFC], GetStartPosition", "CConnectionPoint [MFC], OnAdvise", "CConnectionPoint [MFC], QuerySinkInterface"] -ms.assetid: f0f23a1e-5e8c-41a9-aa6c-1a4793b28e8f --- # CConnectionPoint Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Defines a special type of interface used to communicate with other OLE objects, called a "connection point." ## Syntax diff --git a/docs/mfc/reference/cconstanttransition-class.md b/docs/mfc/reference/cconstanttransition-class.md index 16a55675bc6..717319d3441 100644 --- a/docs/mfc/reference/cconstanttransition-class.md +++ b/docs/mfc/reference/cconstanttransition-class.md @@ -4,10 +4,12 @@ title: "CConstantTransition Class" ms.date: "11/04/2016" f1_keywords: ["CConstantTransition", "AFXANIMATIONCONTROLLER/CConstantTransition", "AFXANIMATIONCONTROLLER/CConstantTransition::CConstantTransition", "AFXANIMATIONCONTROLLER/CConstantTransition::Create", "AFXANIMATIONCONTROLLER/CConstantTransition::m_duration"] helpviewer_keywords: ["CConstantTransition [MFC], CConstantTransition", "CConstantTransition [MFC], Create", "CConstantTransition [MFC], m_duration"] -ms.assetid: f6fa4780-a71b-4cd6-80aa-d4792ace36c2 --- # CConstantTransition Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a constant transition. ## Syntax diff --git a/docs/mfc/reference/ccontextmenumanager-class.md b/docs/mfc/reference/ccontextmenumanager-class.md index 5c6539ddf36..f2800b39bcb 100644 --- a/docs/mfc/reference/ccontextmenumanager-class.md +++ b/docs/mfc/reference/ccontextmenumanager-class.md @@ -4,10 +4,12 @@ title: "CContextMenuManager Class" ms.date: "11/04/2016" f1_keywords: ["CContextMenuManager", "AFXCONTEXTMENUMANAGER/CContextMenuManager", "AFXCONTEXTMENUMANAGER/CContextMenuManager::CContextMenuManager", "AFXCONTEXTMENUMANAGER/CContextMenuManager::AddMenu", "AFXCONTEXTMENUMANAGER/CContextMenuManager::GetMenuById", "AFXCONTEXTMENUMANAGER/CContextMenuManager::GetMenuByName", "AFXCONTEXTMENUMANAGER/CContextMenuManager::GetMenuNames", "AFXCONTEXTMENUMANAGER/CContextMenuManager::LoadState", "AFXCONTEXTMENUMANAGER/CContextMenuManager::ResetState", "AFXCONTEXTMENUMANAGER/CContextMenuManager::SaveState", "AFXCONTEXTMENUMANAGER/CContextMenuManager::SetDontCloseActiveMenu", "AFXCONTEXTMENUMANAGER/CContextMenuManager::ShowPopupMenu", "AFXCONTEXTMENUMANAGER/CContextMenuManager::TrackPopupMenu"] helpviewer_keywords: ["CContextMenuManager [MFC], CContextMenuManager", "CContextMenuManager [MFC], AddMenu", "CContextMenuManager [MFC], GetMenuById", "CContextMenuManager [MFC], GetMenuByName", "CContextMenuManager [MFC], GetMenuNames", "CContextMenuManager [MFC], LoadState", "CContextMenuManager [MFC], ResetState", "CContextMenuManager [MFC], SaveState", "CContextMenuManager [MFC], SetDontCloseActiveMenu", "CContextMenuManager [MFC], ShowPopupMenu", "CContextMenuManager [MFC], TrackPopupMenu"] -ms.assetid: 1de20640-243c-47e1-85de-1baa4153bc83 --- # CContextMenuManager Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CContextMenuManager` object manages shortcut menus, also known as context menus. ## Syntax diff --git a/docs/mfc/reference/ccontrolbar-class.md b/docs/mfc/reference/ccontrolbar-class.md index d8ab52bf13f..3216a4f4a83 100644 --- a/docs/mfc/reference/ccontrolbar-class.md +++ b/docs/mfc/reference/ccontrolbar-class.md @@ -4,10 +4,12 @@ title: "CControlBar Class" ms.date: "11/04/2016" f1_keywords: ["CControlBar", "AFXEXT/CControlBar", "AFXEXT/CControlBar::CControlBar", "AFXEXT/CControlBar::CalcDynamicLayout", "AFXEXT/CControlBar::CalcFixedLayout", "AFXEXT/CControlBar::CalcInsideRect", "AFXEXT/CControlBar::DoPaint", "AFXEXT/CControlBar::DrawBorders", "AFXEXT/CControlBar::DrawGripper", "AFXEXT/CControlBar::EnableDocking", "AFXEXT/CControlBar::GetBarStyle", "AFXEXT/CControlBar::GetBorders", "AFXEXT/CControlBar::GetCount", "AFXEXT/CControlBar::GetDockingFrame", "AFXEXT/CControlBar::IsFloating", "AFXEXT/CControlBar::OnUpdateCmdUI", "AFXEXT/CControlBar::SetBarStyle", "AFXEXT/CControlBar::SetBorders", "AFXEXT/CControlBar::SetInPlaceOwner", "AFXEXT/CControlBar::m_bAutoDelete", "AFXEXT/CControlBar::m_pInPlaceOwner"] helpviewer_keywords: ["CControlBar [MFC], CControlBar", "CControlBar [MFC], CalcDynamicLayout", "CControlBar [MFC], CalcFixedLayout", "CControlBar [MFC], CalcInsideRect", "CControlBar [MFC], DoPaint", "CControlBar [MFC], DrawBorders", "CControlBar [MFC], DrawGripper", "CControlBar [MFC], EnableDocking", "CControlBar [MFC], GetBarStyle", "CControlBar [MFC], GetBorders", "CControlBar [MFC], GetCount", "CControlBar [MFC], GetDockingFrame", "CControlBar [MFC], IsFloating", "CControlBar [MFC], OnUpdateCmdUI", "CControlBar [MFC], SetBarStyle", "CControlBar [MFC], SetBorders", "CControlBar [MFC], SetInPlaceOwner", "CControlBar [MFC], m_bAutoDelete", "CControlBar [MFC], m_pInPlaceOwner"] -ms.assetid: 4d668c55-9b42-4838-97ac-cf2b3000b82c --- # CControlBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class for the control-bar classes [CStatusBar](../../mfc/reference/cstatusbar-class.md), [CToolBar](../../mfc/reference/ctoolbar-class.md), [CDialogBar](../../mfc/reference/cdialogbar-class.md), [CReBar](../../mfc/reference/crebar-class.md), and [COleResizeBar](../../mfc/reference/coleresizebar-class.md). ## Syntax diff --git a/docs/mfc/reference/ccreatecontext-structure.md b/docs/mfc/reference/ccreatecontext-structure.md index 5e388a6ea2c..f51446f4efe 100644 --- a/docs/mfc/reference/ccreatecontext-structure.md +++ b/docs/mfc/reference/ccreatecontext-structure.md @@ -4,10 +4,12 @@ title: "CCreateContext Structure" ms.date: "11/04/2016" f1_keywords: ["CCreateContext"] helpviewer_keywords: ["CCreateContext structure [MFC]"] -ms.assetid: 337a0e44-d910-49a8-afc0-c7207666a9dc --- # CCreateContext Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The framework uses the `CCreateContext` structure when it creates the frame windows and views that are associated with a document. ## Syntax diff --git a/docs/mfc/reference/ccriticalsection-class.md b/docs/mfc/reference/ccriticalsection-class.md index 5f747387318..d8d4e783423 100644 --- a/docs/mfc/reference/ccriticalsection-class.md +++ b/docs/mfc/reference/ccriticalsection-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CCriticalSection [MFC], CCriticalSection", "CCriticalSect --- # `CCriticalSection` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a "critical section" — a synchronization object that allows one thread at a time to access a resource or section of code. ## Syntax diff --git a/docs/mfc/reference/cctrlview-class.md b/docs/mfc/reference/cctrlview-class.md index c2d7a5d4315..818994d888b 100644 --- a/docs/mfc/reference/cctrlview-class.md +++ b/docs/mfc/reference/cctrlview-class.md @@ -4,10 +4,12 @@ title: "CCtrlView Class" ms.date: "11/04/2016" f1_keywords: ["CCtrlView", "AFXWIN/CCtrlView", "AFXWIN/CCtrlView::CCtrlView", "AFXWIN/CCtrlView::OnDraw", "AFXWIN/CCtrlView::PreCreateWindow", "AFXWIN/CCtrlView::m_dwDefaultStyle", "AFXWIN/CCtrlView::m_strClass"] helpviewer_keywords: ["CCtrlView [MFC], CCtrlView", "CCtrlView [MFC], OnDraw", "CCtrlView [MFC], PreCreateWindow", "CCtrlView [MFC], m_dwDefaultStyle", "CCtrlView [MFC], m_strClass"] -ms.assetid: ff488596-1e71-451f-8fec-b0831a7b44e0 --- # CCtrlView Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Adapts the document-view architecture to the common controls supported by Windows 98 and Windows NT versions 3.51 and later. ## Syntax diff --git a/docs/mfc/reference/ccubictransition-class.md b/docs/mfc/reference/ccubictransition-class.md index 17ba50a9a7c..093c1ed04d9 100644 --- a/docs/mfc/reference/ccubictransition-class.md +++ b/docs/mfc/reference/ccubictransition-class.md @@ -4,10 +4,12 @@ title: "CCubicTransition Class" ms.date: "11/04/2016" f1_keywords: ["CCubicTransition", "AFXANIMATIONCONTROLLER/CCubicTransition", "AFXANIMATIONCONTROLLER/CCubicTransition::CCubicTransition", "AFXANIMATIONCONTROLLER/CCubicTransition::Create", "AFXANIMATIONCONTROLLER/CCubicTransition::m_dblFinalValue", "AFXANIMATIONCONTROLLER/CCubicTransition::m_dblFinalVelocity", "AFXANIMATIONCONTROLLER/CCubicTransition::m_duration"] helpviewer_keywords: ["CCubicTransition [MFC], CCubicTransition", "CCubicTransition [MFC], Create", "CCubicTransition [MFC], m_dblFinalValue", "CCubicTransition [MFC], m_dblFinalVelocity", "CCubicTransition [MFC], m_duration"] -ms.assetid: 4fc30e9c-160c-45e1-bdbe-51adf8fee9c5 --- # CCubicTransition Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a cubic transition. ## Syntax diff --git a/docs/mfc/reference/ccustominterpolator-class.md b/docs/mfc/reference/ccustominterpolator-class.md index e1ab9c85536..270871b36a5 100644 --- a/docs/mfc/reference/ccustominterpolator-class.md +++ b/docs/mfc/reference/ccustominterpolator-class.md @@ -4,10 +4,12 @@ title: "CCustomInterpolator Class" ms.date: "11/04/2016" f1_keywords: ["CCustomInterpolator", "AFXANIMATIONCONTROLLER/CCustomInterpolator", "AFXANIMATIONCONTROLLER/CCustomInterpolator::CCustomInterpolator", "AFXANIMATIONCONTROLLER/CCustomInterpolator::GetDependencies", "AFXANIMATIONCONTROLLER/CCustomInterpolator::GetDuration", "AFXANIMATIONCONTROLLER/CCustomInterpolator::GetFinalValue", "AFXANIMATIONCONTROLLER/CCustomInterpolator::Init", "AFXANIMATIONCONTROLLER/CCustomInterpolator::InterpolateValue", "AFXANIMATIONCONTROLLER/CCustomInterpolator::InterpolateVelocity", "AFXANIMATIONCONTROLLER/CCustomInterpolator::SetDuration", "AFXANIMATIONCONTROLLER/CCustomInterpolator::SetInitialValueAndVelocity", "AFXANIMATIONCONTROLLER/CCustomInterpolator::m_currentValue", "AFXANIMATIONCONTROLLER/CCustomInterpolator::m_currentVelocity", "AFXANIMATIONCONTROLLER/CCustomInterpolator::m_duration", "AFXANIMATIONCONTROLLER/CCustomInterpolator::m_finalValue", "AFXANIMATIONCONTROLLER/CCustomInterpolator::m_initialValue", "AFXANIMATIONCONTROLLER/CCustomInterpolator::m_initialVelocity"] helpviewer_keywords: ["CCustomInterpolator [MFC], CCustomInterpolator", "CCustomInterpolator [MFC], GetDependencies", "CCustomInterpolator [MFC], GetDuration", "CCustomInterpolator [MFC], GetFinalValue", "CCustomInterpolator [MFC], Init", "CCustomInterpolator [MFC], InterpolateValue", "CCustomInterpolator [MFC], InterpolateVelocity", "CCustomInterpolator [MFC], SetDuration", "CCustomInterpolator [MFC], SetInitialValueAndVelocity", "CCustomInterpolator [MFC], m_currentValue", "CCustomInterpolator [MFC], m_currentVelocity", "CCustomInterpolator [MFC], m_duration", "CCustomInterpolator [MFC], m_finalValue", "CCustomInterpolator [MFC], m_initialValue", "CCustomInterpolator [MFC], m_initialVelocity"] -ms.assetid: 28d85595-989a-40a3-b003-e0e38437a94d --- # CCustomInterpolator Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a basic interpolator. ## Syntax diff --git a/docs/mfc/reference/ccustomtransition-class.md b/docs/mfc/reference/ccustomtransition-class.md index 36e2810e347..73ffb6d571d 100644 --- a/docs/mfc/reference/ccustomtransition-class.md +++ b/docs/mfc/reference/ccustomtransition-class.md @@ -4,10 +4,12 @@ title: "CCustomTransition Class" ms.date: "11/04/2016" f1_keywords: ["CCustomTransition", "AFXANIMATIONCONTROLLER/CCustomTransition", "AFXANIMATIONCONTROLLER/CCustomTransition::CCustomTransition", "AFXANIMATIONCONTROLLER/CCustomTransition::Create", "AFXANIMATIONCONTROLLER/CCustomTransition::SetInitialValue", "AFXANIMATIONCONTROLLER/CCustomTransition::SetInitialVelocity", "AFXANIMATIONCONTROLLER/CCustomTransition::m_bInitialValueSpecified", "AFXANIMATIONCONTROLLER/CCustomTransition::m_bInitialVelocitySpecified", "AFXANIMATIONCONTROLLER/CCustomTransition::m_initialValue", "AFXANIMATIONCONTROLLER/CCustomTransition::m_initialVelocity", "AFXANIMATIONCONTROLLER/CCustomTransition::m_pInterpolator"] helpviewer_keywords: ["CCustomTransition [MFC], CCustomTransition", "CCustomTransition [MFC], Create", "CCustomTransition [MFC], SetInitialValue", "CCustomTransition [MFC], SetInitialVelocity", "CCustomTransition [MFC], m_bInitialValueSpecified", "CCustomTransition [MFC], m_bInitialVelocitySpecified", "CCustomTransition [MFC], m_initialValue", "CCustomTransition [MFC], m_initialVelocity", "CCustomTransition [MFC], m_pInterpolator"] -ms.assetid: 5bd3f492-940f-4290-a38b-fa68eb8f8401 --- # CCustomTransition Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a custom transition. ## Syntax diff --git a/docs/mfc/reference/cd2dbitmap-class.md b/docs/mfc/reference/cd2dbitmap-class.md index 9527c8a6532..b763abcc8b7 100644 --- a/docs/mfc/reference/cd2dbitmap-class.md +++ b/docs/mfc/reference/cd2dbitmap-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CD2DBitmap [MFC], CD2DBitmap", "CD2DBitmap [MFC], CD2DBit --- # CD2DBitmap Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for ID2D1Bitmap. ## Syntax diff --git a/docs/mfc/reference/cd2dbitmapbrush-class.md b/docs/mfc/reference/cd2dbitmapbrush-class.md index 7387755e260..cd4aa8f6312 100644 --- a/docs/mfc/reference/cd2dbitmapbrush-class.md +++ b/docs/mfc/reference/cd2dbitmapbrush-class.md @@ -4,10 +4,12 @@ title: "CD2DBitmapBrush Class" ms.date: "11/04/2016" f1_keywords: ["CD2DBitmapBrush", "AFXRENDERTARGET/CD2DBitmapBrush", "AFXRENDERTARGET/CD2DBitmapBrush::CD2DBitmapBrush", "AFXRENDERTARGET/CD2DBitmapBrush::Attach", "AFXRENDERTARGET/CD2DBitmapBrush::Create", "AFXRENDERTARGET/CD2DBitmapBrush::Destroy", "AFXRENDERTARGET/CD2DBitmapBrush::Detach", "AFXRENDERTARGET/CD2DBitmapBrush::Get", "AFXRENDERTARGET/CD2DBitmapBrush::GetBitmap", "AFXRENDERTARGET/CD2DBitmapBrush::GetExtendModeX", "AFXRENDERTARGET/CD2DBitmapBrush::GetExtendModeY", "AFXRENDERTARGET/CD2DBitmapBrush::GetInterpolationMode", "AFXRENDERTARGET/CD2DBitmapBrush::SetBitmap", "AFXRENDERTARGET/CD2DBitmapBrush::SetExtendModeX", "AFXRENDERTARGET/CD2DBitmapBrush::SetExtendModeY", "AFXRENDERTARGET/CD2DBitmapBrush::SetInterpolationMode", "AFXRENDERTARGET/CD2DBitmapBrush::CommonInit", "AFXRENDERTARGET/CD2DBitmapBrush::m_pBitmap", "AFXRENDERTARGET/CD2DBitmapBrush::m_pBitmapBrush", "AFXRENDERTARGET/CD2DBitmapBrush::m_pBitmapBrushProperties"] helpviewer_keywords: ["CD2DBitmapBrush [MFC], CD2DBitmapBrush", "CD2DBitmapBrush [MFC], Attach", "CD2DBitmapBrush [MFC], Create", "CD2DBitmapBrush [MFC], Destroy", "CD2DBitmapBrush [MFC], Detach", "CD2DBitmapBrush [MFC], Get", "CD2DBitmapBrush [MFC], GetBitmap", "CD2DBitmapBrush [MFC], GetExtendModeX", "CD2DBitmapBrush [MFC], GetExtendModeY", "CD2DBitmapBrush [MFC], GetInterpolationMode", "CD2DBitmapBrush [MFC], SetBitmap", "CD2DBitmapBrush [MFC], SetExtendModeX", "CD2DBitmapBrush [MFC], SetExtendModeY", "CD2DBitmapBrush [MFC], SetInterpolationMode", "CD2DBitmapBrush [MFC], CommonInit", "CD2DBitmapBrush [MFC], m_pBitmap", "CD2DBitmapBrush [MFC], m_pBitmapBrush", "CD2DBitmapBrush [MFC], m_pBitmapBrushProperties"] -ms.assetid: 46ebbe34-66e0-44c8-af1d-d129e851de5e --- # CD2DBitmapBrush Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for ID2D1BitmapBrush. ## Syntax diff --git a/docs/mfc/reference/cd2dbrush-class.md b/docs/mfc/reference/cd2dbrush-class.md index 937159f7684..cc583fd9207 100644 --- a/docs/mfc/reference/cd2dbrush-class.md +++ b/docs/mfc/reference/cd2dbrush-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CD2DBrush [MFC], CD2DBrush", "CD2DBrush [MFC], Attach", " --- # `CD2DBrush` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for `ID2D1Brush`. ## Syntax diff --git a/docs/mfc/reference/cd2dbrushproperties-class.md b/docs/mfc/reference/cd2dbrushproperties-class.md index c28b4ec6722..527c0480618 100644 --- a/docs/mfc/reference/cd2dbrushproperties-class.md +++ b/docs/mfc/reference/cd2dbrushproperties-class.md @@ -4,10 +4,12 @@ title: "CD2DBrushProperties Class" ms.date: "11/04/2016" f1_keywords: ["CD2DBrushProperties", "AFXRENDERTARGET/CD2DBrushProperties", "AFXRENDERTARGET/CD2DBrushProperties::CD2DBrushProperties", "AFXRENDERTARGET/CD2DBrushProperties::CommonInit"] helpviewer_keywords: ["CD2DBrushProperties [MFC], CD2DBrushProperties", "CD2DBrushProperties [MFC], CommonInit"] -ms.assetid: c77d717f-0a16-4d74-b2ce-0ae1766ed6f9 --- # CD2DBrushProperties Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for `D2D1_BRUSH_PROPERTIES`. ## Syntax diff --git a/docs/mfc/reference/cd2dellipse-class.md b/docs/mfc/reference/cd2dellipse-class.md index dbe03207497..29caf8cb670 100644 --- a/docs/mfc/reference/cd2dellipse-class.md +++ b/docs/mfc/reference/cd2dellipse-class.md @@ -4,10 +4,12 @@ title: "CD2DEllipse Class" ms.date: "08/29/2019" f1_keywords: ["CD2DEllipse", "AFXRENDERTARGET/CD2DEllipse", "AFXRENDERTARGET/CD2DEllipse::CD2DEllipse"] helpviewer_keywords: ["CD2DEllipse [MFC], CD2DEllipse"] -ms.assetid: e9f02f54-acf2-427e-b349-db50cd9a77df --- # CD2DEllipse Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for `D2D1_ELLIPSE`. ## Syntax diff --git a/docs/mfc/reference/cd2dgeometry-class.md b/docs/mfc/reference/cd2dgeometry-class.md index e15757a9764..30b66e593e1 100644 --- a/docs/mfc/reference/cd2dgeometry-class.md +++ b/docs/mfc/reference/cd2dgeometry-class.md @@ -4,10 +4,12 @@ title: "CD2DGeometry Class" ms.date: "11/04/2016" f1_keywords: ["CD2DGeometry", "AFXRENDERTARGET/CD2DGeometry", "AFXRENDERTARGET/CD2DGeometry::CD2DGeometry", "AFXRENDERTARGET/CD2DGeometry::Attach", "AFXRENDERTARGET/CD2DGeometry::CombineWithGeometry", "AFXRENDERTARGET/CD2DGeometry::CompareWithGeometry", "AFXRENDERTARGET/CD2DGeometry::ComputeArea", "AFXRENDERTARGET/CD2DGeometry::ComputeLength", "AFXRENDERTARGET/CD2DGeometry::ComputePointAtLength", "AFXRENDERTARGET/CD2DGeometry::Destroy", "AFXRENDERTARGET/CD2DGeometry::Detach", "AFXRENDERTARGET/CD2DGeometry::FillContainsPoint", "AFXRENDERTARGET/CD2DGeometry::Get", "AFXRENDERTARGET/CD2DGeometry::GetBounds", "AFXRENDERTARGET/CD2DGeometry::GetWidenedBounds", "AFXRENDERTARGET/CD2DGeometry::IsValid", "AFXRENDERTARGET/CD2DGeometry::Outline", "AFXRENDERTARGET/CD2DGeometry::Simplify", "AFXRENDERTARGET/CD2DGeometry::StrokeContainsPoint", "AFXRENDERTARGET/CD2DGeometry::Tessellate", "AFXRENDERTARGET/CD2DGeometry::Widen", "AFXRENDERTARGET/CD2DGeometry::m_pGeometry"] helpviewer_keywords: ["CD2DGeometry [MFC], CD2DGeometry", "CD2DGeometry [MFC], Attach", "CD2DGeometry [MFC], CombineWithGeometry", "CD2DGeometry [MFC], CompareWithGeometry", "CD2DGeometry [MFC], ComputeArea", "CD2DGeometry [MFC], ComputeLength", "CD2DGeometry [MFC], ComputePointAtLength", "CD2DGeometry [MFC], Destroy", "CD2DGeometry [MFC], Detach", "CD2DGeometry [MFC], FillContainsPoint", "CD2DGeometry [MFC], Get", "CD2DGeometry [MFC], GetBounds", "CD2DGeometry [MFC], GetWidenedBounds", "CD2DGeometry [MFC], IsValid", "CD2DGeometry [MFC], Outline", "CD2DGeometry [MFC], Simplify", "CD2DGeometry [MFC], StrokeContainsPoint", "CD2DGeometry [MFC], Tessellate", "CD2DGeometry [MFC], Widen", "CD2DGeometry [MFC], m_pGeometry"] -ms.assetid: 3f95054b-fdb8-4e87-87f2-9fc3df7279ec --- # CD2DGeometry Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for ID2D1Geometry. ## Syntax diff --git a/docs/mfc/reference/cd2dgeometrysink-class.md b/docs/mfc/reference/cd2dgeometrysink-class.md index ca50d6fef2a..f48b0a0569e 100644 --- a/docs/mfc/reference/cd2dgeometrysink-class.md +++ b/docs/mfc/reference/cd2dgeometrysink-class.md @@ -4,10 +4,12 @@ title: "CD2DGeometrySink Class" ms.date: "11/04/2016" f1_keywords: ["CD2DGeometrySink", "AFXRENDERTARGET/CD2DGeometrySink", "AFXRENDERTARGET/CD2DGeometrySink::CD2DGeometrySink", "AFXRENDERTARGET/CD2DGeometrySink::AddArc", "AFXRENDERTARGET/CD2DGeometrySink::AddBezier", "AFXRENDERTARGET/CD2DGeometrySink::AddBeziers", "AFXRENDERTARGET/CD2DGeometrySink::AddLine", "AFXRENDERTARGET/CD2DGeometrySink::AddLines", "AFXRENDERTARGET/CD2DGeometrySink::AddQuadraticBezier", "AFXRENDERTARGET/CD2DGeometrySink::AddQuadraticBeziers", "AFXRENDERTARGET/CD2DGeometrySink::BeginFigure", "AFXRENDERTARGET/CD2DGeometrySink::Close", "AFXRENDERTARGET/CD2DGeometrySink::EndFigure", "AFXRENDERTARGET/CD2DGeometrySink::Get", "AFXRENDERTARGET/CD2DGeometrySink::IsValid", "AFXRENDERTARGET/CD2DGeometrySink::SetFillMode", "AFXRENDERTARGET/CD2DGeometrySink::SetSegmentFlags", "AFXRENDERTARGET/CD2DGeometrySink::m_pSink"] helpviewer_keywords: ["CD2DGeometrySink [MFC], CD2DGeometrySink", "CD2DGeometrySink [MFC], AddArc", "CD2DGeometrySink [MFC], AddBezier", "CD2DGeometrySink [MFC], AddBeziers", "CD2DGeometrySink [MFC], AddLine", "CD2DGeometrySink [MFC], AddLines", "CD2DGeometrySink [MFC], AddQuadraticBezier", "CD2DGeometrySink [MFC], AddQuadraticBeziers", "CD2DGeometrySink [MFC], BeginFigure", "CD2DGeometrySink [MFC], Close", "CD2DGeometrySink [MFC], EndFigure", "CD2DGeometrySink [MFC], Get", "CD2DGeometrySink [MFC], IsValid", "CD2DGeometrySink [MFC], SetFillMode", "CD2DGeometrySink [MFC], SetSegmentFlags", "CD2DGeometrySink [MFC], m_pSink"] -ms.assetid: e5e07f41-0343-4ab1-9d6b-8c62ed33c04a --- # CD2DGeometrySink Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for ID2D1GeometrySink. ## Syntax diff --git a/docs/mfc/reference/cd2dgradientbrush-class.md b/docs/mfc/reference/cd2dgradientbrush-class.md index f6611d222e0..b5c69b59e7e 100644 --- a/docs/mfc/reference/cd2dgradientbrush-class.md +++ b/docs/mfc/reference/cd2dgradientbrush-class.md @@ -4,10 +4,12 @@ title: "CD2DGradientBrush Class" ms.date: "03/27/2019" f1_keywords: ["CD2DGradientBrush", "AFXRENDERTARGET/CD2DGradientBrush", "AFXRENDERTARGET/CD2DGradientBrush::CD2DGradientBrush", "AFXRENDERTARGET/CD2DGradientBrush::Destroy", "AFXRENDERTARGET/CD2DGradientBrush::m_arGradientStops", "AFXRENDERTARGET/CD2DGradientBrush::m_colorInterpolationGamma", "AFXRENDERTARGET/CD2DGradientBrush::m_extendMode", "AFXRENDERTARGET/CD2DGradientBrush::m_pGradientStops"] helpviewer_keywords: ["CD2DGradientBrush [MFC], CD2DGradientBrush", "CD2DGradientBrush [MFC], Destroy", "CD2DGradientBrush [MFC], m_arGradientStops", "CD2DGradientBrush [MFC], m_colorInterpolationGamma", "CD2DGradientBrush [MFC], m_extendMode", "CD2DGradientBrush [MFC], m_pGradientStops"] -ms.assetid: 5bf133e6-16b7-4e3a-845d-0ce63fafe5ec --- # CD2DGradientBrush Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class of the CD2DLinearGradientBrush and the CD2DRadialGradientBrush classes. ## Syntax diff --git a/docs/mfc/reference/cd2dlayer-class.md b/docs/mfc/reference/cd2dlayer-class.md index 71d22b6df07..504d7151232 100644 --- a/docs/mfc/reference/cd2dlayer-class.md +++ b/docs/mfc/reference/cd2dlayer-class.md @@ -4,10 +4,12 @@ title: "CD2DLayer Class" ms.date: "11/04/2016" f1_keywords: ["CD2DLayer", "AFXRENDERTARGET/CD2DLayer", "AFXRENDERTARGET/CD2DLayer::CD2DLayer", "AFXRENDERTARGET/CD2DLayer::Attach", "AFXRENDERTARGET/CD2DLayer::Create", "AFXRENDERTARGET/CD2DLayer::Destroy", "AFXRENDERTARGET/CD2DLayer::Detach", "AFXRENDERTARGET/CD2DLayer::Get", "AFXRENDERTARGET/CD2DLayer::GetSize", "AFXRENDERTARGET/CD2DLayer::IsValid", "AFXRENDERTARGET/CD2DLayer::m_pLayer"] helpviewer_keywords: ["CD2DLayer [MFC], CD2DLayer", "CD2DLayer [MFC], Attach", "CD2DLayer [MFC], Create", "CD2DLayer [MFC], Destroy", "CD2DLayer [MFC], Detach", "CD2DLayer [MFC], Get", "CD2DLayer [MFC], GetSize", "CD2DLayer [MFC], IsValid", "CD2DLayer [MFC], m_pLayer"] -ms.assetid: 2f96378e-66bb-40d1-9661-6afe324de3c1 --- # CD2DLayer Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for ID2D1Layer. ## Syntax diff --git a/docs/mfc/reference/cd2dlineargradientbrush-class.md b/docs/mfc/reference/cd2dlineargradientbrush-class.md index 70c1ca78877..dc008c90e2c 100644 --- a/docs/mfc/reference/cd2dlineargradientbrush-class.md +++ b/docs/mfc/reference/cd2dlineargradientbrush-class.md @@ -4,10 +4,12 @@ title: "CD2DLinearGradientBrush Class" ms.date: "11/04/2016" f1_keywords: ["CD2DLinearGradientBrush", "AFXRENDERTARGET/CD2DLinearGradientBrush", "AFXRENDERTARGET/CD2DLinearGradientBrush::CD2DLinearGradientBrush", "AFXRENDERTARGET/CD2DLinearGradientBrush::Attach", "AFXRENDERTARGET/CD2DLinearGradientBrush::Create", "AFXRENDERTARGET/CD2DLinearGradientBrush::Destroy", "AFXRENDERTARGET/CD2DLinearGradientBrush::Detach", "AFXRENDERTARGET/CD2DLinearGradientBrush::Get", "AFXRENDERTARGET/CD2DLinearGradientBrush::GetEndPoint", "AFXRENDERTARGET/CD2DLinearGradientBrush::GetStartPoint", "AFXRENDERTARGET/CD2DLinearGradientBrush::SetEndPoint", "AFXRENDERTARGET/CD2DLinearGradientBrush::SetStartPoint", "AFXRENDERTARGET/CD2DLinearGradientBrush::m_LinearGradientBrushProperties", "AFXRENDERTARGET/CD2DLinearGradientBrush::m_pLinearGradientBrush"] helpviewer_keywords: ["CD2DLinearGradientBrush [MFC], CD2DLinearGradientBrush", "CD2DLinearGradientBrush [MFC], Attach", "CD2DLinearGradientBrush [MFC], Create", "CD2DLinearGradientBrush [MFC], Destroy", "CD2DLinearGradientBrush [MFC], Detach", "CD2DLinearGradientBrush [MFC], Get", "CD2DLinearGradientBrush [MFC], GetEndPoint", "CD2DLinearGradientBrush [MFC], GetStartPoint", "CD2DLinearGradientBrush [MFC], SetEndPoint", "CD2DLinearGradientBrush [MFC], SetStartPoint", "CD2DLinearGradientBrush [MFC], m_LinearGradientBrushProperties", "CD2DLinearGradientBrush [MFC], m_pLinearGradientBrush"] -ms.assetid: d4be9ff9-0ea8-45e6-9b8d-f3bc5673cbac --- # CD2DLinearGradientBrush Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for ID2D1LinearGradientBrush. ## Syntax diff --git a/docs/mfc/reference/cd2dmesh-class.md b/docs/mfc/reference/cd2dmesh-class.md index 1c00d6b8ab2..7b769ec7df4 100644 --- a/docs/mfc/reference/cd2dmesh-class.md +++ b/docs/mfc/reference/cd2dmesh-class.md @@ -4,10 +4,12 @@ title: "CD2DMesh Class" ms.date: "11/04/2016" f1_keywords: ["CD2DMesh", "AFXRENDERTARGET/CD2DMesh", "AFXRENDERTARGET/CD2DMesh::CD2DMesh", "AFXRENDERTARGET/CD2DMesh::Attach", "AFXRENDERTARGET/CD2DMesh::Create", "AFXRENDERTARGET/CD2DMesh::Destroy", "AFXRENDERTARGET/CD2DMesh::Detach", "AFXRENDERTARGET/CD2DMesh::Get", "AFXRENDERTARGET/CD2DMesh::IsValid", "AFXRENDERTARGET/CD2DMesh::Open", "AFXRENDERTARGET/CD2DMesh::m_pMesh"] helpviewer_keywords: ["CD2DMesh [MFC], CD2DMesh", "CD2DMesh [MFC], Attach", "CD2DMesh [MFC], Create", "CD2DMesh [MFC], Destroy", "CD2DMesh [MFC], Detach", "CD2DMesh [MFC], Get", "CD2DMesh [MFC], IsValid", "CD2DMesh [MFC], Open", "CD2DMesh [MFC], m_pMesh"] -ms.assetid: 11a2c78a-1367-40e8-a34f-44aa0509a4c9 --- # CD2DMesh Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for ID2D1Mesh. ## Syntax diff --git a/docs/mfc/reference/cd2dpathgeometry-class.md b/docs/mfc/reference/cd2dpathgeometry-class.md index c8a92594575..5b7fd0c32a3 100644 --- a/docs/mfc/reference/cd2dpathgeometry-class.md +++ b/docs/mfc/reference/cd2dpathgeometry-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CD2DPathGeometry [MFC], CD2DPathGeometry", "CD2DPathGeome --- # CD2DPathGeometry Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for ID2D1PathGeometry. ## Syntax diff --git a/docs/mfc/reference/cd2dpointf-class.md b/docs/mfc/reference/cd2dpointf-class.md index da1e32fae53..be72cbd1f06 100644 --- a/docs/mfc/reference/cd2dpointf-class.md +++ b/docs/mfc/reference/cd2dpointf-class.md @@ -4,10 +4,12 @@ title: "CD2DPointF Class" ms.date: "11/04/2016" f1_keywords: ["CD2DPointF", "AFXRENDERTARGET/CD2DPointF", "AFXRENDERTARGET/CD2DPointF::CD2DPointF"] helpviewer_keywords: ["CD2DPointF [MFC], CD2DPointF"] -ms.assetid: 30f72083-1c8a-4f50-adb2-72dbbe3522d4 --- # CD2DPointF Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for `D2D1_POINT_2F`. ## Syntax diff --git a/docs/mfc/reference/cd2dpointu-class.md b/docs/mfc/reference/cd2dpointu-class.md index a7496417187..40d1d16f15e 100644 --- a/docs/mfc/reference/cd2dpointu-class.md +++ b/docs/mfc/reference/cd2dpointu-class.md @@ -4,10 +4,12 @@ title: "CD2DPointU Class" ms.date: "08/29/2019" f1_keywords: ["CD2DPointU", "AFXRENDERTARGET/CD2DPointU", "AFXRENDERTARGET/CD2DPointU::CD2DPointU"] helpviewer_keywords: ["CD2DPointU [MFC], CD2DPointU"] -ms.assetid: 04733f96-b6de-4a89-82e3-caad1e8087a9 --- # CD2DPointU Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for `D2D1_POINT_2U`. ## Syntax diff --git a/docs/mfc/reference/cd2dradialgradientbrush-class.md b/docs/mfc/reference/cd2dradialgradientbrush-class.md index 6bedb70852f..3cd841c1f05 100644 --- a/docs/mfc/reference/cd2dradialgradientbrush-class.md +++ b/docs/mfc/reference/cd2dradialgradientbrush-class.md @@ -4,10 +4,12 @@ title: "CD2DRadialGradientBrush Class" ms.date: "11/04/2016" f1_keywords: ["CD2DRadialGradientBrush", "AFXRENDERTARGET/CD2DRadialGradientBrush", "AFXRENDERTARGET/CD2DRadialGradientBrush::CD2DRadialGradientBrush", "AFXRENDERTARGET/CD2DRadialGradientBrush::Attach", "AFXRENDERTARGET/CD2DRadialGradientBrush::Create", "AFXRENDERTARGET/CD2DRadialGradientBrush::Destroy", "AFXRENDERTARGET/CD2DRadialGradientBrush::Detach", "AFXRENDERTARGET/CD2DRadialGradientBrush::Get", "AFXRENDERTARGET/CD2DRadialGradientBrush::GetCenter", "AFXRENDERTARGET/CD2DRadialGradientBrush::GetGradientOriginOffset", "AFXRENDERTARGET/CD2DRadialGradientBrush::GetRadiusX", "AFXRENDERTARGET/CD2DRadialGradientBrush::GetRadiusY", "AFXRENDERTARGET/CD2DRadialGradientBrush::SetCenter", "AFXRENDERTARGET/CD2DRadialGradientBrush::SetGradientOriginOffset", "AFXRENDERTARGET/CD2DRadialGradientBrush::SetRadiusX", "AFXRENDERTARGET/CD2DRadialGradientBrush::SetRadiusY", "AFXRENDERTARGET/CD2DRadialGradientBrush::m_pRadialGradientBrush", "AFXRENDERTARGET/CD2DRadialGradientBrush::m_RadialGradientBrushProperties"] helpviewer_keywords: ["CD2DRadialGradientBrush [MFC], CD2DRadialGradientBrush", "CD2DRadialGradientBrush [MFC], Attach", "CD2DRadialGradientBrush [MFC], Create", "CD2DRadialGradientBrush [MFC], Destroy", "CD2DRadialGradientBrush [MFC], Detach", "CD2DRadialGradientBrush [MFC], Get", "CD2DRadialGradientBrush [MFC], GetCenter", "CD2DRadialGradientBrush [MFC], GetGradientOriginOffset", "CD2DRadialGradientBrush [MFC], GetRadiusX", "CD2DRadialGradientBrush [MFC], GetRadiusY", "CD2DRadialGradientBrush [MFC], SetCenter", "CD2DRadialGradientBrush [MFC], SetGradientOriginOffset", "CD2DRadialGradientBrush [MFC], SetRadiusX", "CD2DRadialGradientBrush [MFC], SetRadiusY", "CD2DRadialGradientBrush [MFC], m_pRadialGradientBrush", "CD2DRadialGradientBrush [MFC], m_RadialGradientBrushProperties"] -ms.assetid: 6c76d84a-d831-4ee2-96f1-82c1f5b0d6a9 --- # CD2DRadialGradientBrush Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for ID2D1RadialGradientBrush. ## Syntax diff --git a/docs/mfc/reference/cd2drectf-class.md b/docs/mfc/reference/cd2drectf-class.md index 967b8fb9227..9f04d36e4ed 100644 --- a/docs/mfc/reference/cd2drectf-class.md +++ b/docs/mfc/reference/cd2drectf-class.md @@ -4,10 +4,12 @@ title: "CD2DRectF Class" ms.date: "11/04/2016" f1_keywords: ["CD2DRectF", "AFXRENDERTARGET/CD2DRectF", "AFXRENDERTARGET/CD2DRectF::CD2DRectF", "AFXRENDERTARGET/CD2DRectF::IsNull"] helpviewer_keywords: ["CD2DRectF [MFC], CD2DRectF", "CD2DRectF [MFC], IsNull"] -ms.assetid: 87c12d87-9d18-4a19-ba14-0f51d6b6835a --- # CD2DRectF Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for `D2D1_RECT_F`. ## Syntax diff --git a/docs/mfc/reference/cd2drectu-class.md b/docs/mfc/reference/cd2drectu-class.md index 2e49d1489ae..a88732c9fb7 100644 --- a/docs/mfc/reference/cd2drectu-class.md +++ b/docs/mfc/reference/cd2drectu-class.md @@ -4,10 +4,12 @@ title: "CD2DRectU Class" ms.date: "11/04/2016" f1_keywords: ["CD2DRectU", "AFXRENDERTARGET/CD2DRectU", "AFXRENDERTARGET/CD2DRectU::CD2DRectU", "AFXRENDERTARGET/CD2DRectU::IsNull"] helpviewer_keywords: ["CD2DRectU [MFC], CD2DRectU", "CD2DRectU [MFC], IsNull"] -ms.assetid: a62f17d1-011d-4867-8f51-fd7e7c00561d --- # CD2DRectU Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for `D2D1_RECT_U`. ## Syntax From b94fcbbd25400241b0bc6006e695d7014275787e Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 20 Feb 2026 13:16:06 -0800 Subject: [PATCH 312/619] Batch 6: update files (#6251) --- docs/mfc/reference/cd2dresource-class.md | 4 +++- docs/mfc/reference/cd2droundedrect-class.md | 4 +++- docs/mfc/reference/cd2dsizef-class.md | 4 +++- docs/mfc/reference/cd2dsizeu-class.md | 4 +++- docs/mfc/reference/cd2dsolidcolorbrush-class.md | 4 +++- docs/mfc/reference/cd2dtextformat-class.md | 4 +++- docs/mfc/reference/cd2dtextlayout-class.md | 4 +++- docs/mfc/reference/cdaodatabase-class.md | 3 +++ docs/mfc/reference/cdaodatabaseinfo-structure.md | 3 +++ docs/mfc/reference/cdaoerrorinfo-structure.md | 3 +++ docs/mfc/reference/cdaoexception-class.md | 3 +++ docs/mfc/reference/cdaofieldexchange-class.md | 3 +++ docs/mfc/reference/cdaofieldinfo-structure.md | 3 +++ docs/mfc/reference/cdaoindexfieldinfo-structure.md | 3 +++ docs/mfc/reference/cdaoindexinfo-structure.md | 3 +++ docs/mfc/reference/cdaoparameterinfo-structure.md | 3 +++ docs/mfc/reference/cdaoquerydef-class.md | 3 +++ docs/mfc/reference/cdaoquerydefinfo-structure.md | 3 +++ docs/mfc/reference/cdaorecordset-class.md | 3 +++ docs/mfc/reference/cdaorecordview-class.md | 3 +++ docs/mfc/reference/cdaorelationfieldinfo-structure.md | 3 +++ docs/mfc/reference/cdaorelationinfo-structure.md | 3 +++ docs/mfc/reference/cdaotabledef-class.md | 3 +++ docs/mfc/reference/cdaotabledefinfo-structure.md | 3 +++ docs/mfc/reference/cdaoworkspace-class.md | 3 +++ docs/mfc/reference/cdaoworkspaceinfo-structure.md | 3 +++ docs/mfc/reference/cdatabase-class.md | 3 +++ docs/mfc/reference/cdataexchange-class.md | 4 +++- docs/mfc/reference/cdatapathproperty-class.md | 4 +++- docs/mfc/reference/cdatarecoveryhandler-class.md | 4 +++- docs/mfc/reference/cdatetimectrl-class.md | 3 +++ docs/mfc/reference/cdbexception-class.md | 4 +++- docs/mfc/reference/cdbvariant-class.md | 4 +++- docs/mfc/reference/cdc-class.md | 3 +++ docs/mfc/reference/cdcrendertarget-class.md | 3 +++ docs/mfc/reference/cdhtmldialog-class.md | 3 +++ docs/mfc/reference/cdialog-class.md | 3 +++ docs/mfc/reference/cdialogbar-class.md | 4 +++- docs/mfc/reference/cdialogex-class.md | 3 +++ docs/mfc/reference/cdiscretetransition-class.md | 4 +++- docs/mfc/reference/cdocitem-class.md | 4 +++- docs/mfc/reference/cdockablepane-class.md | 3 +++ docs/mfc/reference/cdockablepaneadapter-class.md | 4 +++- docs/mfc/reference/cdockingmanager-class.md | 4 +++- docs/mfc/reference/cdockingpanesrow-class.md | 4 +++- docs/mfc/reference/cdocksite-class.md | 4 +++- docs/mfc/reference/cdockstate-class.md | 4 +++- docs/mfc/reference/cdocobjectserver-class.md | 3 +++ docs/mfc/reference/cdocobjectserveritem-class.md | 4 +++- docs/mfc/reference/cdoctemplate-class.md | 3 +++ docs/mfc/reference/cdocument-class.md | 4 +++- docs/mfc/reference/cdraglistbox-class.md | 4 +++- docs/mfc/reference/cdrawingmanager-class.md | 4 +++- docs/mfc/reference/cdumpcontext-class.md | 4 +++- docs/mfc/reference/cdwordarray-class.md | 4 +++- docs/mfc/reference/cedit-class.md | 4 +++- docs/mfc/reference/ceditview-class.md | 3 +++ docs/mfc/reference/cevent-class.md | 3 +++ docs/mfc/reference/cexception-class.md | 3 +++ docs/mfc/reference/cfieldexchange-class.md | 4 +++- docs/mfc/reference/cfile-class.md | 3 +++ docs/mfc/reference/cfiledialog-class.md | 4 +++- docs/mfc/reference/cfileexception-class.md | 3 +++ docs/mfc/reference/cfilefind-class.md | 4 +++- docs/mfc/reference/cfindreplacedialog-class.md | 3 +++ docs/mfc/reference/cfolderpickerdialog-class.md | 3 +++ docs/mfc/reference/cfont-class.md | 3 +++ docs/mfc/reference/cfontdialog-class.md | 4 +++- docs/mfc/reference/cfontholder-class.md | 4 +++- docs/mfc/reference/cformview-class.md | 3 +++ docs/mfc/reference/cframewnd-class.md | 3 +++ docs/mfc/reference/cframewndex-class.md | 3 +++ docs/mfc/reference/cftpconnection-class.md | 4 +++- docs/mfc/reference/cftpfilefind-class.md | 4 +++- docs/mfc/reference/cgdiobject-class.md | 4 +++- docs/mfc/reference/cglobalutils-class.md | 4 +++- docs/mfc/reference/cgopherconnection-class.md | 3 +++ docs/mfc/reference/cgopherfile-class.md | 4 +++- docs/mfc/reference/cgopherfilefind-class.md | 4 +++- docs/mfc/reference/cgopherlocator-class.md | 4 +++- docs/mfc/reference/cheaderctrl-class.md | 4 +++- .../reference/child-window-notification-message-handlers.md | 4 +++- docs/mfc/reference/chotkeyctrl-class.md | 4 +++- docs/mfc/reference/chtmleditctrl-class.md | 4 +++- docs/mfc/reference/chtmleditctrlbase-class.md | 4 +++- docs/mfc/reference/chtmleditdoc-class.md | 4 +++- docs/mfc/reference/chtmleditview-class.md | 4 +++- docs/mfc/reference/chtmlview-class.md | 3 +++ docs/mfc/reference/chttpconnection-class.md | 4 +++- docs/mfc/reference/chttpfile-class.md | 4 +++- docs/mfc/reference/chwndrendertarget-class.md | 4 +++- docs/mfc/reference/cimagelist-class.md | 3 +++ docs/mfc/reference/cinstantaneoustransition-class.md | 4 +++- docs/mfc/reference/cinternetconnection-class.md | 4 +++- docs/mfc/reference/cinternetexception-class.md | 4 +++- docs/mfc/reference/cinternetfile-class.md | 4 +++- docs/mfc/reference/cinternetsession-class.md | 3 +++ docs/mfc/reference/cinterpolatorbase-class.md | 4 +++- docs/mfc/reference/cinvalidargexception-class.md | 4 +++- docs/mfc/reference/cipaddressctrl-class.md | 4 +++- 100 files changed, 300 insertions(+), 56 deletions(-) diff --git a/docs/mfc/reference/cd2dresource-class.md b/docs/mfc/reference/cd2dresource-class.md index fa6c42d756a..d4e355f07f3 100644 --- a/docs/mfc/reference/cd2dresource-class.md +++ b/docs/mfc/reference/cd2dresource-class.md @@ -4,10 +4,12 @@ title: "CD2DResource Class" ms.date: "03/27/2019" f1_keywords: ["CD2DResource", "AFXRENDERTARGET/CD2DResource", "AFXRENDERTARGET/CD2DResource::CD2DResource", "AFXRENDERTARGET/CD2DResource::Create", "AFXRENDERTARGET/CD2DResource::Destroy", "AFXRENDERTARGET/CD2DResource::IsValid", "AFXRENDERTARGET/CD2DResource::IsAutoDestroy", "AFXRENDERTARGET/CD2DResource::ReCreate", "AFXRENDERTARGET/CD2DResource::m_bIsAutoDestroy", "AFXRENDERTARGET/CD2DResource::m_pParentTarget"] helpviewer_keywords: ["CD2DResource [MFC], CD2DResource", "CD2DResource [MFC], Create", "CD2DResource [MFC], Destroy", "CD2DResource [MFC], IsValid", "CD2DResource [MFC], IsAutoDestroy", "CD2DResource [MFC], ReCreate", "CD2DResource [MFC], m_bIsAutoDestroy", "CD2DResource [MFC], m_pParentTarget"] -ms.assetid: 34e3ee18-aab6-4c39-9294-de869e1f7820 --- # CD2DResource Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An abstract class that provides an interface for creating and managing D2D resources such as brushes, layers, and texts. ## Syntax diff --git a/docs/mfc/reference/cd2droundedrect-class.md b/docs/mfc/reference/cd2droundedrect-class.md index fc3e784f5ef..e93423f089c 100644 --- a/docs/mfc/reference/cd2droundedrect-class.md +++ b/docs/mfc/reference/cd2droundedrect-class.md @@ -4,10 +4,12 @@ title: "CD2DRoundedRect Class" ms.date: "11/04/2016" f1_keywords: ["CD2DRoundedRect", "AFXRENDERTARGET/CD2DRoundedRect", "AFXRENDERTARGET/CD2DRoundedRect::CD2DRoundedRect"] helpviewer_keywords: ["CD2DRoundedRect [MFC], CD2DRoundedRect"] -ms.assetid: 06207fb5-e92b-41c0-bceb-b45d8f466531 --- # CD2DRoundedRect Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for `D2D1_ROUNDED_RECT`. ## Syntax diff --git a/docs/mfc/reference/cd2dsizef-class.md b/docs/mfc/reference/cd2dsizef-class.md index 5b1d39d894a..a4458cedd76 100644 --- a/docs/mfc/reference/cd2dsizef-class.md +++ b/docs/mfc/reference/cd2dsizef-class.md @@ -4,10 +4,12 @@ title: "CD2DSizeF Class" ms.date: "08/29/2019" f1_keywords: ["CD2DSizeF", "AFXRENDERTARGET/CD2DSizeF", "AFXRENDERTARGET/CD2DSizeF::CD2DSizeF", "AFXRENDERTARGET/CD2DSizeF::IsNull"] helpviewer_keywords: ["CD2DSizeF [MFC], CD2DSizeF", "CD2DSizeF [MFC], IsNull"] -ms.assetid: f486a1e1-997d-4286-8cb9-26369dc82055 --- # CD2DSizeF Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for D2D1_SIZE_F. ## Syntax diff --git a/docs/mfc/reference/cd2dsizeu-class.md b/docs/mfc/reference/cd2dsizeu-class.md index 464d7d1b622..819e251ae7b 100644 --- a/docs/mfc/reference/cd2dsizeu-class.md +++ b/docs/mfc/reference/cd2dsizeu-class.md @@ -4,10 +4,12 @@ title: "CD2DSizeU Class" ms.date: "08/29/2019" f1_keywords: ["CD2DSizeU", "AFXRENDERTARGET/CD2DSizeU", "AFXRENDERTARGET/CD2DSizeU::CD2DSizeU", "AFXRENDERTARGET/CD2DSizeU::IsNull"] helpviewer_keywords: ["CD2DSizeU [MFC], CD2DSizeU", "CD2DSizeU [MFC], IsNull"] -ms.assetid: 6e679ba8-2112-43c3-8275-70b660856f02 --- # CD2DSizeU Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for D2D1_SIZE_U. ## Syntax diff --git a/docs/mfc/reference/cd2dsolidcolorbrush-class.md b/docs/mfc/reference/cd2dsolidcolorbrush-class.md index 177c2fc3fef..c343346e6a8 100644 --- a/docs/mfc/reference/cd2dsolidcolorbrush-class.md +++ b/docs/mfc/reference/cd2dsolidcolorbrush-class.md @@ -4,10 +4,12 @@ title: "CD2DSolidColorBrush Class" ms.date: "03/27/2019" f1_keywords: ["CD2DSolidColorBrush", "AFXRENDERTARGET/CD2DSolidColorBrush", "AFXRENDERTARGET/CD2DSolidColorBrush::CD2DSolidColorBrush", "AFXRENDERTARGET/CD2DSolidColorBrush::Attach", "AFXRENDERTARGET/CD2DSolidColorBrush::Create", "AFXRENDERTARGET/CD2DSolidColorBrush::Destroy", "AFXRENDERTARGET/CD2DSolidColorBrush::Detach", "AFXRENDERTARGET/CD2DSolidColorBrush::Get", "AFXRENDERTARGET/CD2DSolidColorBrush::GetColor", "AFXRENDERTARGET/CD2DSolidColorBrush::SetColor", "AFXRENDERTARGET/CD2DSolidColorBrush::m_colorSolid", "AFXRENDERTARGET/CD2DSolidColorBrush::m_pSolidColorBrush"] helpviewer_keywords: ["CD2DSolidColorBrush [MFC], CD2DSolidColorBrush", "CD2DSolidColorBrush [MFC], Attach", "CD2DSolidColorBrush [MFC], Create", "CD2DSolidColorBrush [MFC], Destroy", "CD2DSolidColorBrush [MFC], Detach", "CD2DSolidColorBrush [MFC], Get", "CD2DSolidColorBrush [MFC], GetColor", "CD2DSolidColorBrush [MFC], SetColor", "CD2DSolidColorBrush [MFC], m_colorSolid", "CD2DSolidColorBrush [MFC], m_pSolidColorBrush"] -ms.assetid: d4506637-acce-4f74-8a9b-f0a45571a735 --- # CD2DSolidColorBrush Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for ID2D1SolidColorBrush. ## Syntax diff --git a/docs/mfc/reference/cd2dtextformat-class.md b/docs/mfc/reference/cd2dtextformat-class.md index 258818a08a6..94bffc9c182 100644 --- a/docs/mfc/reference/cd2dtextformat-class.md +++ b/docs/mfc/reference/cd2dtextformat-class.md @@ -4,10 +4,12 @@ title: "CD2DTextFormat Class" ms.date: "03/27/2019" f1_keywords: ["CD2DTextFormat", "AFXRENDERTARGET/CD2DTextFormat", "AFXRENDERTARGET/CD2DTextFormat::CD2DTextFormat", "AFXRENDERTARGET/CD2DTextFormat::Create", "AFXRENDERTARGET/CD2DTextFormat::Destroy", "AFXRENDERTARGET/CD2DTextFormat::Get", "AFXRENDERTARGET/CD2DTextFormat::GetFontFamilyName", "AFXRENDERTARGET/CD2DTextFormat::GetLocaleName", "AFXRENDERTARGET/CD2DTextFormat::IsValid", "AFXRENDERTARGET/CD2DTextFormat::ReCreate", "AFXRENDERTARGET/CD2DTextFormat::m_pTextFormat"] helpviewer_keywords: ["CD2DTextFormat [MFC], CD2DTextFormat", "CD2DTextFormat [MFC], Create", "CD2DTextFormat [MFC], Destroy", "CD2DTextFormat [MFC], Get", "CD2DTextFormat [MFC], GetFontFamilyName", "CD2DTextFormat [MFC], GetLocaleName", "CD2DTextFormat [MFC], IsValid", "CD2DTextFormat [MFC], ReCreate", "CD2DTextFormat [MFC], m_pTextFormat"] -ms.assetid: db194cec-9dae-4644-ab84-7c43b7164117 --- # CD2DTextFormat Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for IDWriteTextFormat. ## Syntax diff --git a/docs/mfc/reference/cd2dtextlayout-class.md b/docs/mfc/reference/cd2dtextlayout-class.md index 02fe965fb31..574552a8d41 100644 --- a/docs/mfc/reference/cd2dtextlayout-class.md +++ b/docs/mfc/reference/cd2dtextlayout-class.md @@ -4,10 +4,12 @@ title: "CD2DTextLayout Class" ms.date: "03/27/2019" f1_keywords: ["CD2DTextLayout", "AFXRENDERTARGET/CD2DTextLayout", "AFXRENDERTARGET/CD2DTextLayout::CD2DTextLayout", "AFXRENDERTARGET/CD2DTextLayout::Create", "AFXRENDERTARGET/CD2DTextLayout::Destroy", "AFXRENDERTARGET/CD2DTextLayout::Get", "AFXRENDERTARGET/CD2DTextLayout::GetFontFamilyName", "AFXRENDERTARGET/CD2DTextLayout::GetLocaleName", "AFXRENDERTARGET/CD2DTextLayout::IsValid", "AFXRENDERTARGET/CD2DTextLayout::ReCreate", "AFXRENDERTARGET/CD2DTextLayout::SetFontFamilyName", "AFXRENDERTARGET/CD2DTextLayout::SetLocaleName", "AFXRENDERTARGET/CD2DTextLayout::m_pTextLayout"] helpviewer_keywords: ["CD2DTextLayout [MFC], CD2DTextLayout", "CD2DTextLayout [MFC], Create", "CD2DTextLayout [MFC], Destroy", "CD2DTextLayout [MFC], Get", "CD2DTextLayout [MFC], GetFontFamilyName", "CD2DTextLayout [MFC], GetLocaleName", "CD2DTextLayout [MFC], IsValid", "CD2DTextLayout [MFC], ReCreate", "CD2DTextLayout [MFC], SetFontFamilyName", "CD2DTextLayout [MFC], SetLocaleName", "CD2DTextLayout [MFC], m_pTextLayout"] -ms.assetid: 724bd13c-f2ef-4e55-a775-8cb04b7b7908 --- # CD2DTextLayout Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for IDWriteTextLayout. ## Syntax diff --git a/docs/mfc/reference/cdaodatabase-class.md b/docs/mfc/reference/cdaodatabase-class.md index f1b5b85af32..817e7f6ea26 100644 --- a/docs/mfc/reference/cdaodatabase-class.md +++ b/docs/mfc/reference/cdaodatabase-class.md @@ -8,6 +8,9 @@ ms.custom: sfi-ropc-nochange --- # CDaoDatabase Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a connection to an Access database using Data Access Objects (DAO). > [!NOTE] diff --git a/docs/mfc/reference/cdaodatabaseinfo-structure.md b/docs/mfc/reference/cdaodatabaseinfo-structure.md index 24d774536be..e01c08c24f7 100644 --- a/docs/mfc/reference/cdaodatabaseinfo-structure.md +++ b/docs/mfc/reference/cdaodatabaseinfo-structure.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDaoDatabaseInfo structure [MFC]", "DAO (Data Access Obje --- # CDaoDatabaseInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDaoDatabaseInfo` structure contains information about a database object defined for data access objects (DAO). > [!NOTE] diff --git a/docs/mfc/reference/cdaoerrorinfo-structure.md b/docs/mfc/reference/cdaoerrorinfo-structure.md index 0848f939efa..4e34fad326c 100644 --- a/docs/mfc/reference/cdaoerrorinfo-structure.md +++ b/docs/mfc/reference/cdaoerrorinfo-structure.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDaoErrorInfo structure [MFC]", "DAO (Data Access Objects --- # CDaoErrorInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDaoErrorInfo` structure contains information about an error object defined for data access objects (DAO). > [!NOTE] diff --git a/docs/mfc/reference/cdaoexception-class.md b/docs/mfc/reference/cdaoexception-class.md index 7092121b13f..d0d03730f6b 100644 --- a/docs/mfc/reference/cdaoexception-class.md +++ b/docs/mfc/reference/cdaoexception-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDaoException [MFC], CDaoException", "CDaoException [MFC] --- # CDaoException Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents an exception condition arising from the MFC database classes based on data access objects (DAO). > [!NOTE] diff --git a/docs/mfc/reference/cdaofieldexchange-class.md b/docs/mfc/reference/cdaofieldexchange-class.md index 47e1f63124f..af11986eaa1 100644 --- a/docs/mfc/reference/cdaofieldexchange-class.md +++ b/docs/mfc/reference/cdaofieldexchange-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDaoFieldExchange [MFC], IsValidOperation", "CDaoFieldExc --- # CDaoFieldExchange Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports the DAO record field exchange (DFX) routines used by the DAO database classes. > [!NOTE] diff --git a/docs/mfc/reference/cdaofieldinfo-structure.md b/docs/mfc/reference/cdaofieldinfo-structure.md index 1935ec2f72b..6db2749e23d 100644 --- a/docs/mfc/reference/cdaofieldinfo-structure.md +++ b/docs/mfc/reference/cdaofieldinfo-structure.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["DAO (Data Access Objects), Fields collection", "CDaoField --- # CDaoFieldInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDaoFieldInfo` structure contains information about a field object defined for data access objects (DAO). > [!NOTE] diff --git a/docs/mfc/reference/cdaoindexfieldinfo-structure.md b/docs/mfc/reference/cdaoindexfieldinfo-structure.md index c75e91b5865..b7b20cca2d7 100644 --- a/docs/mfc/reference/cdaoindexfieldinfo-structure.md +++ b/docs/mfc/reference/cdaoindexfieldinfo-structure.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDaoIndexFieldInfo structure [MFC]", "DAO (Data Access Ob --- # CDaoIndexFieldInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDaoIndexFieldInfo` structure contains information about an index field object defined for data access objects (DAO). > [!NOTE] diff --git a/docs/mfc/reference/cdaoindexinfo-structure.md b/docs/mfc/reference/cdaoindexinfo-structure.md index e7558e5bae8..be9ddb6cda6 100644 --- a/docs/mfc/reference/cdaoindexinfo-structure.md +++ b/docs/mfc/reference/cdaoindexinfo-structure.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["DAO (Data Access Objects), Indexes collection", "CDaoInde --- # CDaoIndexInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDaoIndexInfo` structure contains information about an index object defined for data access objects (DAO). > [!NOTE] diff --git a/docs/mfc/reference/cdaoparameterinfo-structure.md b/docs/mfc/reference/cdaoparameterinfo-structure.md index d2d54d4df78..4fcf70aef04 100644 --- a/docs/mfc/reference/cdaoparameterinfo-structure.md +++ b/docs/mfc/reference/cdaoparameterinfo-structure.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDaoParameterInfo structure [MFC]", "DAO (Data Access Obj --- # CDaoParameterInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDaoParameterInfo` structure contains information about a parameter object defined for data access objects (DAO). > [!NOTE] diff --git a/docs/mfc/reference/cdaoquerydef-class.md b/docs/mfc/reference/cdaoquerydef-class.md index a8f573e6927..a9a1a58c780 100644 --- a/docs/mfc/reference/cdaoquerydef-class.md +++ b/docs/mfc/reference/cdaoquerydef-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDaoQueryDef [MFC], CDaoQueryDef", "CDaoQueryDef [MFC], A --- # `CDaoQueryDef` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a query definition, or "querydef," usually one saved in a database. > [!NOTE] diff --git a/docs/mfc/reference/cdaoquerydefinfo-structure.md b/docs/mfc/reference/cdaoquerydefinfo-structure.md index 78fed0c2d26..189ccc92e46 100644 --- a/docs/mfc/reference/cdaoquerydefinfo-structure.md +++ b/docs/mfc/reference/cdaoquerydefinfo-structure.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["DAO (Data Access Objects), QueryDefs collection", "CDaoQu --- # CDaoQueryDefInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDaoQueryDefInfo` structure contains information about a querydef object defined for data access objects (DAO). > [!NOTE] diff --git a/docs/mfc/reference/cdaorecordset-class.md b/docs/mfc/reference/cdaorecordset-class.md index 4525538078a..5e2e7a99aaa 100644 --- a/docs/mfc/reference/cdaorecordset-class.md +++ b/docs/mfc/reference/cdaorecordset-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDaoRecordset [MFC], CDaoRecordset", "CDaoRecordset [MFC] --- # CDaoRecordset Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a set of records selected from a data source. > [!NOTE] diff --git a/docs/mfc/reference/cdaorecordview-class.md b/docs/mfc/reference/cdaorecordview-class.md index e2baaabc9ec..ac74d10bda4 100644 --- a/docs/mfc/reference/cdaorecordview-class.md +++ b/docs/mfc/reference/cdaorecordview-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDaoRecordView [MFC], CDaoRecordView", "CDaoRecordView [M --- # CDaoRecordView Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A view that displays database records in controls. > [!NOTE] diff --git a/docs/mfc/reference/cdaorelationfieldinfo-structure.md b/docs/mfc/reference/cdaorelationfieldinfo-structure.md index af98cdba7ea..fca6e68a814 100644 --- a/docs/mfc/reference/cdaorelationfieldinfo-structure.md +++ b/docs/mfc/reference/cdaorelationfieldinfo-structure.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["DAO (Data Access Objects), Relations collection", "CDaoRe --- # CDaoRelationFieldInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDaoRelationFieldInfo` structure contains information about a field in a relation defined for data access objects (DAO). > [!NOTE] diff --git a/docs/mfc/reference/cdaorelationinfo-structure.md b/docs/mfc/reference/cdaorelationinfo-structure.md index d93623b3d76..23b62170c85 100644 --- a/docs/mfc/reference/cdaorelationinfo-structure.md +++ b/docs/mfc/reference/cdaorelationinfo-structure.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["DAO (Data Access Objects), Relations collection", "CDaoRe --- # CDaoRelationInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDaoRelationInfo` structure contains information about a relation defined between fields of two tables in a [`CDaoDatabase`](../../mfc/reference/cdaodatabase-class.md) object. > [!NOTE] diff --git a/docs/mfc/reference/cdaotabledef-class.md b/docs/mfc/reference/cdaotabledef-class.md index 8e9f63fcc55..2c76e899c5f 100644 --- a/docs/mfc/reference/cdaotabledef-class.md +++ b/docs/mfc/reference/cdaotabledef-class.md @@ -8,6 +8,9 @@ ms.custom: sfi-ropc-nochange --- # CDaoTableDef Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents the stored definition of a base table or an attached table. > [!NOTE] diff --git a/docs/mfc/reference/cdaotabledefinfo-structure.md b/docs/mfc/reference/cdaotabledefinfo-structure.md index ca83c7daed9..d554bc069f5 100644 --- a/docs/mfc/reference/cdaotabledefinfo-structure.md +++ b/docs/mfc/reference/cdaotabledefinfo-structure.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDaoTableDefInfo structure [MFC]", "DAO (Data Access Obje --- # CDaoTableDefInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDaoTableDefInfo` structure contains information about a tabledef object defined for data access objects (DAO). > [!NOTE] diff --git a/docs/mfc/reference/cdaoworkspace-class.md b/docs/mfc/reference/cdaoworkspace-class.md index 0f1ddba2a65..b482e263b68 100644 --- a/docs/mfc/reference/cdaoworkspace-class.md +++ b/docs/mfc/reference/cdaoworkspace-class.md @@ -8,6 +8,9 @@ ms.custom: sfi-ropc-nochange --- # CDaoWorkspace Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Manages a named, password-protected database session from login to logoff, by a single user. > [!NOTE] diff --git a/docs/mfc/reference/cdaoworkspaceinfo-structure.md b/docs/mfc/reference/cdaoworkspaceinfo-structure.md index 906f4cc2f35..b35ed93deab 100644 --- a/docs/mfc/reference/cdaoworkspaceinfo-structure.md +++ b/docs/mfc/reference/cdaoworkspaceinfo-structure.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDaoWorkspaceInfo structure [MFC]", "DAO (Data Access Obj --- # CDaoWorkspaceInfo Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDaoWorkspaceInfo` structure contains information about a workspace defined for data access objects (DAO) database access. > [!NOTE] diff --git a/docs/mfc/reference/cdatabase-class.md b/docs/mfc/reference/cdatabase-class.md index 7258c18594b..b6b22b72799 100644 --- a/docs/mfc/reference/cdatabase-class.md +++ b/docs/mfc/reference/cdatabase-class.md @@ -8,6 +8,9 @@ ms.custom: sfi-ropc-nochange --- # `CDatabase` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a connection to a data source, through which you can operate on the data source. ## Syntax diff --git a/docs/mfc/reference/cdataexchange-class.md b/docs/mfc/reference/cdataexchange-class.md index 36773b0d836..c8db1f00f28 100644 --- a/docs/mfc/reference/cdataexchange-class.md +++ b/docs/mfc/reference/cdataexchange-class.md @@ -4,10 +4,12 @@ title: "CDataExchange Class" ms.date: "11/04/2016" f1_keywords: ["CDataExchange", "AFXWIN/CDataExchange", "AFXWIN/CDataExchange::CDataExchange", "AFXWIN/CDataExchange::Fail", "AFXWIN/CDataExchange::PrepareCtrl", "AFXWIN/CDataExchange::PrepareEditCtrl", "AFXWIN/CDataExchange::PrepareOleCtrl", "AFXWIN/CDataExchange::m_bSaveAndValidate", "AFXWIN/CDataExchange::m_pDlgWnd"] helpviewer_keywords: ["CDataExchange [MFC], CDataExchange", "CDataExchange [MFC], Fail", "CDataExchange [MFC], PrepareCtrl", "CDataExchange [MFC], PrepareEditCtrl", "CDataExchange [MFC], PrepareOleCtrl", "CDataExchange [MFC], m_bSaveAndValidate", "CDataExchange [MFC], m_pDlgWnd"] -ms.assetid: 84ed6113-325d-493e-a75d-223f03a992b8 --- # CDataExchange Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports the dialog data exchange (DDX) and dialog data validation (DDV) routines used by the Microsoft Foundation classes. ## Syntax diff --git a/docs/mfc/reference/cdatapathproperty-class.md b/docs/mfc/reference/cdatapathproperty-class.md index 46de01c0c6b..d98aad1fe22 100644 --- a/docs/mfc/reference/cdatapathproperty-class.md +++ b/docs/mfc/reference/cdatapathproperty-class.md @@ -4,10 +4,12 @@ title: "CDataPathProperty Class" ms.date: "11/04/2016" f1_keywords: ["CDataPathProperty", "AFXCTL/CDataPathProperty", "AFXCTL/CDataPathProperty::CDataPathProperty", "AFXCTL/CDataPathProperty::GetControl", "AFXCTL/CDataPathProperty::GetPath", "AFXCTL/CDataPathProperty::Open", "AFXCTL/CDataPathProperty::ResetData", "AFXCTL/CDataPathProperty::SetControl", "AFXCTL/CDataPathProperty::SetPath"] helpviewer_keywords: ["CDataPathProperty [MFC], CDataPathProperty", "CDataPathProperty [MFC], GetControl", "CDataPathProperty [MFC], GetPath", "CDataPathProperty [MFC], Open", "CDataPathProperty [MFC], ResetData", "CDataPathProperty [MFC], SetControl", "CDataPathProperty [MFC], SetPath"] -ms.assetid: 1f96efdb-54e4-460b-862c-eba5d4103488 --- # CDataPathProperty Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements an OLE control property that can be loaded asynchronously. ## Syntax diff --git a/docs/mfc/reference/cdatarecoveryhandler-class.md b/docs/mfc/reference/cdatarecoveryhandler-class.md index e66f75c9646..8c5793cbe90 100644 --- a/docs/mfc/reference/cdatarecoveryhandler-class.md +++ b/docs/mfc/reference/cdatarecoveryhandler-class.md @@ -4,10 +4,12 @@ title: "CDataRecoveryHandler Class" ms.date: "03/27/2019" f1_keywords: ["CDataRecoveryHandler", "AFXDATARECOVERY/CDataRecoveryHandler", "AFXDATARECOVERY/CDataRecoveryHandler::CDataRecoveryHandler", "AFXDATARECOVERY/CDataRecoveryHandler::AutosaveAllDocumentInfo", "AFXDATARECOVERY/CDataRecoveryHandler::AutosaveDocumentInfo", "AFXDATARECOVERY/CDataRecoveryHandler::CreateDocumentInfo", "AFXDATARECOVERY/CDataRecoveryHandler::DeleteAllAutosavedFiles", "AFXDATARECOVERY/CDataRecoveryHandler::DeleteAutosavedFile", "AFXDATARECOVERY/CDataRecoveryHandler::GenerateAutosaveFileName", "AFXDATARECOVERY/CDataRecoveryHandler::GetAutosaveInterval", "AFXDATARECOVERY/CDataRecoveryHandler::GetAutosavePath", "AFXDATARECOVERY/CDataRecoveryHandler::GetDocumentListName", "AFXDATARECOVERY/CDataRecoveryHandler::GetNormalDocumentTitle", "AFXDATARECOVERY/CDataRecoveryHandler::GetRecoveredDocumentTitle", "AFXDATARECOVERY/CDataRecoveryHandler::GetRestartIdentifier", "AFXDATARECOVERY/CDataRecoveryHandler::GetSaveDocumentInfoOnIdle", "AFXDATARECOVERY/CDataRecoveryHandler::GetShutdownByRestartManager", "AFXDATARECOVERY/CDataRecoveryHandler::Initialize", "AFXDATARECOVERY/CDataRecoveryHandler::QueryRestoreAutosavedDocuments", "AFXDATARECOVERY/CDataRecoveryHandler::ReadOpenDocumentList", "AFXDATARECOVERY/CDataRecoveryHandler::RemoveDocumentInfo", "AFXDATARECOVERY/CDataRecoveryHandler::ReopenPreviousDocuments", "AFXDATARECOVERY/CDataRecoveryHandler::RestoreAutosavedDocuments", "AFXDATARECOVERY/CDataRecoveryHandler::SaveOpenDocumentList", "AFXDATARECOVERY/CDataRecoveryHandler::SetAutosaveInterval", "AFXDATARECOVERY/CDataRecoveryHandler::SetAutosavePath", "AFXDATARECOVERY/CDataRecoveryHandler::SetRestartIdentifier", "AFXDATARECOVERY/CDataRecoveryHandler::SetSaveDocumentInfoOnIdle", "AFXDATARECOVERY/CDataRecoveryHandler::SetShutdownByRestartManager", "AFXDATARECOVERY/CDataRecoveryHandler::UpdateDocumentInfo"] helpviewer_keywords: ["CDataRecoveryHandler [MFC], CDataRecoveryHandler", "CDataRecoveryHandler [MFC], AutosaveAllDocumentInfo", "CDataRecoveryHandler [MFC], AutosaveDocumentInfo", "CDataRecoveryHandler [MFC], CreateDocumentInfo", "CDataRecoveryHandler [MFC], DeleteAllAutosavedFiles", "CDataRecoveryHandler [MFC], DeleteAutosavedFile", "CDataRecoveryHandler [MFC], GenerateAutosaveFileName", "CDataRecoveryHandler [MFC], GetAutosaveInterval", "CDataRecoveryHandler [MFC], GetAutosavePath", "CDataRecoveryHandler [MFC], GetDocumentListName", "CDataRecoveryHandler [MFC], GetNormalDocumentTitle", "CDataRecoveryHandler [MFC], GetRecoveredDocumentTitle", "CDataRecoveryHandler [MFC], GetRestartIdentifier", "CDataRecoveryHandler [MFC], GetSaveDocumentInfoOnIdle", "CDataRecoveryHandler [MFC], GetShutdownByRestartManager", "CDataRecoveryHandler [MFC], Initialize", "CDataRecoveryHandler [MFC], QueryRestoreAutosavedDocuments", "CDataRecoveryHandler [MFC], ReadOpenDocumentList", "CDataRecoveryHandler [MFC], RemoveDocumentInfo", "CDataRecoveryHandler [MFC], ReopenPreviousDocuments", "CDataRecoveryHandler [MFC], RestoreAutosavedDocuments", "CDataRecoveryHandler [MFC], SaveOpenDocumentList", "CDataRecoveryHandler [MFC], SetAutosaveInterval", "CDataRecoveryHandler [MFC], SetAutosavePath", "CDataRecoveryHandler [MFC], SetRestartIdentifier", "CDataRecoveryHandler [MFC], SetSaveDocumentInfoOnIdle", "CDataRecoveryHandler [MFC], SetShutdownByRestartManager", "CDataRecoveryHandler [MFC], UpdateDocumentInfo"] -ms.assetid: 7794802c-e583-4eba-90b9-2fed1a161f9c --- # CDataRecoveryHandler Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDataRecoveryHandler` autosaves documents and restores them if an application unexpectedly exits. ## Syntax diff --git a/docs/mfc/reference/cdatetimectrl-class.md b/docs/mfc/reference/cdatetimectrl-class.md index 095b88b9642..92549d32217 100644 --- a/docs/mfc/reference/cdatetimectrl-class.md +++ b/docs/mfc/reference/cdatetimectrl-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDateTimeCtrl [MFC], CDateTimeCtrl", "CDateTimeCtrl [MFC] --- # `CDateTimeCtrl` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates the functionality of a date and time picker control. ## Syntax diff --git a/docs/mfc/reference/cdbexception-class.md b/docs/mfc/reference/cdbexception-class.md index 741ced39720..0c142000f01 100644 --- a/docs/mfc/reference/cdbexception-class.md +++ b/docs/mfc/reference/cdbexception-class.md @@ -4,10 +4,12 @@ title: "CDBException Class" ms.date: "11/04/2016" f1_keywords: ["CDBException", "AFXDB/CDBException", "AFXDB/CDBException::m_nRetCode", "AFXDB/CDBException::m_strError", "AFXDB/CDBException::m_strStateNativeOrigin"] helpviewer_keywords: ["CDBException [MFC], m_nRetCode", "CDBException [MFC], m_strError", "CDBException [MFC], m_strStateNativeOrigin"] -ms.assetid: eb9e1119-89f5-49a7-b9d4-b91cee1ccc82 --- # CDBException Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents an exception condition arising from the database classes. ## Syntax diff --git a/docs/mfc/reference/cdbvariant-class.md b/docs/mfc/reference/cdbvariant-class.md index f752d848dae..585531dc9ab 100644 --- a/docs/mfc/reference/cdbvariant-class.md +++ b/docs/mfc/reference/cdbvariant-class.md @@ -4,10 +4,12 @@ title: "CDBVariant Class" ms.date: "11/04/2016" f1_keywords: ["CDBVariant", "AFXDB/CDBVariant", "AFXDB/CDBVariant::CDBVariant", "AFXDB/CDBVariant::Clear", "AFXDB/CDBVariant::m_dwType", "AFXDB/CDBVariant::m_boolVal", "AFXDB/CDBVariant::m_chVal", "AFXDB/CDBVariant::m_dblVal", "AFXDB/CDBVariant::m_fltVal", "AFXDB/CDBVariant::m_iVal", "AFXDB/CDBVariant::m_lVal", "AFXDB/CDBVariant::m_pbinary", "AFXDB/CDBVariant::m_pdate", "AFXDB/CDBVariant::m_pstring", "AFXDB/CDBVariant::m_pstringA", "AFXDB/CDBVariant::m_pstringW"] helpviewer_keywords: ["CDBVariant [MFC], CDBVariant", "CDBVariant [MFC], Clear", "CDBVariant [MFC], m_dwType", "CDBVariant [MFC], m_boolVal", "CDBVariant [MFC], m_chVal", "CDBVariant [MFC], m_dblVal", "CDBVariant [MFC], m_fltVal", "CDBVariant [MFC], m_iVal", "CDBVariant [MFC], m_lVal", "CDBVariant [MFC], m_pbinary", "CDBVariant [MFC], m_pdate", "CDBVariant [MFC], m_pstring", "CDBVariant [MFC], m_pstringA", "CDBVariant [MFC], m_pstringW"] -ms.assetid: de23609c-c560-4b24-bd6b-9d8903fd5b49 --- # CDBVariant Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a variant data type for the MFC ODBC classes. ## Syntax diff --git a/docs/mfc/reference/cdc-class.md b/docs/mfc/reference/cdc-class.md index 69ea401ff76..0ab4a2f4054 100644 --- a/docs/mfc/reference/cdc-class.md +++ b/docs/mfc/reference/cdc-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDC [MFC], CDC", "CDC [MFC], AbortDoc", "CDC [MFC], Abort --- # `CDC` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Defines a class of device-context objects. ## Syntax diff --git a/docs/mfc/reference/cdcrendertarget-class.md b/docs/mfc/reference/cdcrendertarget-class.md index 6a191229ba9..43ae0089a83 100644 --- a/docs/mfc/reference/cdcrendertarget-class.md +++ b/docs/mfc/reference/cdcrendertarget-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDCRenderTarget [MFC], CDCRenderTarget", "CDCRenderTarget --- # `CDCRenderTarget` class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for [`ID2D1DCRenderTarget`](/windows/win32/api/d2d1/nn-d2d1-id2d1dcrendertarget). ## Syntax diff --git a/docs/mfc/reference/cdhtmldialog-class.md b/docs/mfc/reference/cdhtmldialog-class.md index 82562ba5ad2..afad32ba58d 100644 --- a/docs/mfc/reference/cdhtmldialog-class.md +++ b/docs/mfc/reference/cdhtmldialog-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDHtmlDialog [MFC], CDHtmlDialog", "CDHtmlDialog [MFC], C --- # `CDHtmlDialog` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Is used to create dialog boxes that use HTML rather than dialog resources to implement their user interface. ## Syntax diff --git a/docs/mfc/reference/cdialog-class.md b/docs/mfc/reference/cdialog-class.md index fa6866e8b86..dfd80214b40 100644 --- a/docs/mfc/reference/cdialog-class.md +++ b/docs/mfc/reference/cdialog-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDialog [MFC], CDialog", "CDialog [MFC], Create", "CDialo --- # CDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class used for displaying dialog boxes on the screen. ## Syntax diff --git a/docs/mfc/reference/cdialogbar-class.md b/docs/mfc/reference/cdialogbar-class.md index 4b613e0fa29..1bd4ddb3413 100644 --- a/docs/mfc/reference/cdialogbar-class.md +++ b/docs/mfc/reference/cdialogbar-class.md @@ -4,10 +4,12 @@ title: "CDialogBar Class" ms.date: "11/04/2016" f1_keywords: ["CDialogBar", "AFXEXT/CDialogBar", "AFXEXT/CDialogBar::CDialogBar", "AFXEXT/CDialogBar::Create"] helpviewer_keywords: ["CDialogBar [MFC], CDialogBar", "CDialogBar [MFC], Create"] -ms.assetid: da2f7a30-970c-44e3-87f0-6094bd002cab --- # CDialogBar Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of a Windows modeless dialog box in a control bar. ## Syntax diff --git a/docs/mfc/reference/cdialogex-class.md b/docs/mfc/reference/cdialogex-class.md index f2b25ce85ee..06f3d5289ca 100644 --- a/docs/mfc/reference/cdialogex-class.md +++ b/docs/mfc/reference/cdialogex-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDialogEx [MFC], CDialogEx", "CDialogEx [MFC], SetBackgro --- # `CDialogEx` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDialogEx` class specifies the background color and background image of a dialog box. ## Syntax diff --git a/docs/mfc/reference/cdiscretetransition-class.md b/docs/mfc/reference/cdiscretetransition-class.md index 19fc03b66bb..252551cbaed 100644 --- a/docs/mfc/reference/cdiscretetransition-class.md +++ b/docs/mfc/reference/cdiscretetransition-class.md @@ -4,10 +4,12 @@ title: "CDiscreteTransition Class" ms.date: "11/04/2016" f1_keywords: ["CDiscreteTransition", "AFXANIMATIONCONTROLLER/CDiscreteTransition", "AFXANIMATIONCONTROLLER/CDiscreteTransition::CDiscreteTransition", "AFXANIMATIONCONTROLLER/CDiscreteTransition::Create", "AFXANIMATIONCONTROLLER/CDiscreteTransition::m_dblFinalValue", "AFXANIMATIONCONTROLLER/CDiscreteTransition::m_delay", "AFXANIMATIONCONTROLLER/CDiscreteTransition::m_hold"] helpviewer_keywords: ["CDiscreteTransition [MFC], CDiscreteTransition", "CDiscreteTransition [MFC], Create", "CDiscreteTransition [MFC], m_dblFinalValue", "CDiscreteTransition [MFC], m_delay", "CDiscreteTransition [MFC], m_hold"] -ms.assetid: b4d84fb3-ccaa-451c-a69b-6b50dcb9b9c8 --- # CDiscreteTransition Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a discrete transition. ## Syntax diff --git a/docs/mfc/reference/cdocitem-class.md b/docs/mfc/reference/cdocitem-class.md index 7c8ae289b39..b0bb4ca4108 100644 --- a/docs/mfc/reference/cdocitem-class.md +++ b/docs/mfc/reference/cdocitem-class.md @@ -4,10 +4,12 @@ title: "CDocItem Class" ms.date: "11/04/2016" f1_keywords: ["CDocItem", "AFXOLE/CDocItem", "AFXOLE/CDocItem::GetDocument", "AFXOLE/CDocItem::IsBlank"] helpviewer_keywords: ["CDocItem [MFC], GetDocument", "CDocItem [MFC], IsBlank"] -ms.assetid: 84fb8610-a4c8-4211-adc0-e70e8d002c11 --- # CDocItem Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class for document items, which are components of a document's data. ## Syntax diff --git a/docs/mfc/reference/cdockablepane-class.md b/docs/mfc/reference/cdockablepane-class.md index cd6f7131161..a52ecfb1a54 100644 --- a/docs/mfc/reference/cdockablepane-class.md +++ b/docs/mfc/reference/cdockablepane-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDockablePane [MFC], CDockablePane", "CDockablePane [MFC] --- # `CDockablePane` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a pane that can either be docked in a dock site or included in a tabbed pane. ## Syntax diff --git a/docs/mfc/reference/cdockablepaneadapter-class.md b/docs/mfc/reference/cdockablepaneadapter-class.md index 4c483e1e874..a9f0e5685b9 100644 --- a/docs/mfc/reference/cdockablepaneadapter-class.md +++ b/docs/mfc/reference/cdockablepaneadapter-class.md @@ -4,10 +4,12 @@ title: "CDockablePaneAdapter Class" ms.date: "11/04/2016" f1_keywords: ["CDockablePaneAdapter", "AFXDOCKABLEPANEADAPTER/CDockablePaneAdapter", "AFXDOCKABLEPANEADAPTER/CDockablePaneAdapter::GetWrappedWnd", "AFXDOCKABLEPANEADAPTER/CDockablePaneAdapter::LoadState", "AFXDOCKABLEPANEADAPTER/CDockablePaneAdapter::SaveState", "AFXDOCKABLEPANEADAPTER/CDockablePaneAdapter::SetWrappedWnd"] helpviewer_keywords: ["CDockablePaneAdapter [MFC], GetWrappedWnd", "CDockablePaneAdapter [MFC], LoadState", "CDockablePaneAdapter [MFC], SaveState", "CDockablePaneAdapter [MFC], SetWrappedWnd"] -ms.assetid: 6ed6cf82-f39c-4d0c-bf7c-8641495cf8f3 --- # CDockablePaneAdapter Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides docking support for `CWnd`-derived panes. ## Syntax diff --git a/docs/mfc/reference/cdockingmanager-class.md b/docs/mfc/reference/cdockingmanager-class.md index e3fe1e204bd..972e77d344e 100644 --- a/docs/mfc/reference/cdockingmanager-class.md +++ b/docs/mfc/reference/cdockingmanager-class.md @@ -4,10 +4,12 @@ title: "CDockingManager Class" ms.date: "11/04/2016" f1_keywords: ["CDockingManager", "AFXDOCKINGMANAGER/CDockingManager", "AFXDOCKINGMANAGER/CDockingManager::AddDockSite", "AFXDOCKINGMANAGER/CDockingManager::AddHiddenMDITabbedBar", "AFXDOCKINGMANAGER/CDockingManager::AddMiniFrame", "AFXDOCKINGMANAGER/CDockingManager::AddPane", "AFXDOCKINGMANAGER/CDockingManager::AdjustDockingLayout", "AFXDOCKINGMANAGER/CDockingManager::AdjustPaneFrames", "AFXDOCKINGMANAGER/CDockingManager::AdjustRectToClientArea", "AFXDOCKINGMANAGER/CDockingManager::AlignAutoHidePane", "AFXDOCKINGMANAGER/CDockingManager::AutoHidePane", "AFXDOCKINGMANAGER/CDockingManager::BringBarsToTop", "AFXDOCKINGMANAGER/CDockingManager::BuildPanesMenu", "AFXDOCKINGMANAGER/CDockingManager::CalcExpectedDockedRect", "AFXDOCKINGMANAGER/CDockingManager::Create", "AFXDOCKINGMANAGER/CDockingManager::DeterminePaneAndStatus", "AFXDOCKINGMANAGER/CDockingManager::DisableRestoreDockState", "AFXDOCKINGMANAGER/CDockingManager::DockPane", "AFXDOCKINGMANAGER/CDockingManager::DockPaneLeftOf", "AFXDOCKINGMANAGER/CDockingManager::EnableAutoHidePanes", "AFXDOCKINGMANAGER/CDockingManager::EnableDocking", "AFXDOCKINGMANAGER/CDockingManager::EnableDockSiteMenu", "AFXDOCKINGMANAGER/CDockingManager::EnablePaneContextMenu", "AFXDOCKINGMANAGER/CDockingManager::FindDockSite", "AFXDOCKINGMANAGER/CDockingManager::FindDockSiteByPane", "AFXDOCKINGMANAGER/CDockingManager::FindPaneByID", "AFXDOCKINGMANAGER/CDockingManager::FixupVirtualRects", "AFXDOCKINGMANAGER/CDockingManager::FrameFromPoint", "AFXDOCKINGMANAGER/CDockingManager::GetClientAreaBounds", "AFXDOCKINGMANAGER/CDockingManager::GetDockingMode", "AFXDOCKINGMANAGER/CDockingManager::GetDockSiteFrameWnd", "AFXDOCKINGMANAGER/CDockingManager::GetEnabledAutoHideAlignment", "AFXDOCKINGMANAGER/CDockingManager::GetMiniFrames", "AFXDOCKINGMANAGER/CDockingManager::GetOuterEdgeBounds", "AFXDOCKINGMANAGER/CDockingManager::GetPaneList", "AFXDOCKINGMANAGER/CDockingManager::GetSmartDockingManager", "AFXDOCKINGMANAGER/CDockingManager::GetSmartDockingManagerPermanent", "AFXDOCKINGMANAGER/CDockingManager::GetSmartDockingParams", "AFXDOCKINGMANAGER/CDockingManager::GetSmartDockingTheme", "AFXDOCKINGMANAGER/CDockingManager::HideAutoHidePanes", "AFXDOCKINGMANAGER/CDockingManager::InsertDockSite", "AFXDOCKINGMANAGER/CDockingManager::InsertPane", "AFXDOCKINGMANAGER/CDockingManager::IsDockSiteMenu", "AFXDOCKINGMANAGER/CDockingManager::IsInAdjustLayout", "AFXDOCKINGMANAGER/CDockingManager::IsOLEContainerMode", "AFXDOCKINGMANAGER/CDockingManager::IsPointNearDockSite", "AFXDOCKINGMANAGER/CDockingManager::IsPrintPreviewValid", "AFXDOCKINGMANAGER/CDockingManager::LoadState", "AFXDOCKINGMANAGER/CDockingManager::LockUpdate", "AFXDOCKINGMANAGER/CDockingManager::OnActivateFrame", "AFXDOCKINGMANAGER/CDockingManager::OnClosePopupMenu", "AFXDOCKINGMANAGER/CDockingManager::OnMoveMiniFrame", "AFXDOCKINGMANAGER/CDockingManager::OnPaneContextMenu", "AFXDOCKINGMANAGER/CDockingManager::PaneFromPoint", "AFXDOCKINGMANAGER/CDockingManager::ProcessPaneContextMenuCommand", "AFXDOCKINGMANAGER/CDockingManager::RecalcLayout", "AFXDOCKINGMANAGER/CDockingManager::ReleaseEmptyPaneContainers", "AFXDOCKINGMANAGER/CDockingManager::RemoveHiddenMDITabbedBar", "AFXDOCKINGMANAGER/CDockingManager::RemoveMiniFrame", "AFXDOCKINGMANAGER/CDockingManager::RemovePaneFromDockManager", "AFXDOCKINGMANAGER/CDockingManager::ReplacePane", "AFXDOCKINGMANAGER/CDockingManager::ResortMiniFramesForZOrder", "AFXDOCKINGMANAGER/CDockingManager::SaveState", "AFXDOCKINGMANAGER/CDockingManager::SendMessageToMiniFrames", "AFXDOCKINGMANAGER/CDockingManager::Serialize", "AFXDOCKINGMANAGER/CDockingManager::SetAutohideZOrder", "AFXDOCKINGMANAGER/CDockingManager::SetDockingMode", "AFXDOCKINGMANAGER/CDockingManager::SetDockState", "AFXDOCKINGMANAGER/CDockingManager::SetPrintPreviewMode", "AFXDOCKINGMANAGER/CDockingManager::SetSmartDockingParams", "AFXDOCKINGMANAGER/CDockingManager::ShowDelayShowMiniFrames", "AFXDOCKINGMANAGER/CDockingManager::ShowPanes", "AFXDOCKINGMANAGER/CDockingManager::StartSDocking", "AFXDOCKINGMANAGER/CDockingManager::StopSDocking", "AFXDOCKINGMANAGER/CDockingManager::m_bHideDockingBarsInContainerMode", "AFXDOCKINGMANAGER/CDockingManager::m_dockModeGlobal", "AFXDOCKINGMANAGER/CDockingManager::m_nDockSensitivity", "AFXDOCKINGMANAGER/CDockingManager::m_nTimeOutBeforeDockingBarDock", "AFXDOCKINGMANAGER/CDockingManager::m_nTimeOutBeforeToolBarDock"] helpviewer_keywords: ["CDockingManager [MFC], AddDockSite", "CDockingManager [MFC], AddHiddenMDITabbedBar", "CDockingManager [MFC], AddMiniFrame", "CDockingManager [MFC], AddPane", "CDockingManager [MFC], AdjustDockingLayout", "CDockingManager [MFC], AdjustPaneFrames", "CDockingManager [MFC], AdjustRectToClientArea", "CDockingManager [MFC], AlignAutoHidePane", "CDockingManager [MFC], AutoHidePane", "CDockingManager [MFC], BringBarsToTop", "CDockingManager [MFC], BuildPanesMenu", "CDockingManager [MFC], CalcExpectedDockedRect", "CDockingManager [MFC], Create", "CDockingManager [MFC], DeterminePaneAndStatus", "CDockingManager [MFC], DisableRestoreDockState", "CDockingManager [MFC], DockPane", "CDockingManager [MFC], DockPaneLeftOf", "CDockingManager [MFC], EnableAutoHidePanes", "CDockingManager [MFC], EnableDocking", "CDockingManager [MFC], EnableDockSiteMenu", "CDockingManager [MFC], EnablePaneContextMenu", "CDockingManager [MFC], FindDockSite", "CDockingManager [MFC], FindDockSiteByPane", "CDockingManager [MFC], FindPaneByID", "CDockingManager [MFC], FixupVirtualRects", "CDockingManager [MFC], FrameFromPoint", "CDockingManager [MFC], GetClientAreaBounds", "CDockingManager [MFC], GetDockingMode", "CDockingManager [MFC], GetDockSiteFrameWnd", "CDockingManager [MFC], GetEnabledAutoHideAlignment", "CDockingManager [MFC], GetMiniFrames", "CDockingManager [MFC], GetOuterEdgeBounds", "CDockingManager [MFC], GetPaneList", "CDockingManager [MFC], GetSmartDockingManager", "CDockingManager [MFC], GetSmartDockingManagerPermanent", "CDockingManager [MFC], GetSmartDockingParams", "CDockingManager [MFC], GetSmartDockingTheme", "CDockingManager [MFC], HideAutoHidePanes", "CDockingManager [MFC], InsertDockSite", "CDockingManager [MFC], InsertPane", "CDockingManager [MFC], IsDockSiteMenu", "CDockingManager [MFC], IsInAdjustLayout", "CDockingManager [MFC], IsOLEContainerMode", "CDockingManager [MFC], IsPointNearDockSite", "CDockingManager [MFC], IsPrintPreviewValid", "CDockingManager [MFC], LoadState", "CDockingManager [MFC], LockUpdate", "CDockingManager [MFC], OnActivateFrame", "CDockingManager [MFC], OnClosePopupMenu", "CDockingManager [MFC], OnMoveMiniFrame", "CDockingManager [MFC], OnPaneContextMenu", "CDockingManager [MFC], PaneFromPoint", "CDockingManager [MFC], ProcessPaneContextMenuCommand", "CDockingManager [MFC], RecalcLayout", "CDockingManager [MFC], ReleaseEmptyPaneContainers", "CDockingManager [MFC], RemoveHiddenMDITabbedBar", "CDockingManager [MFC], RemoveMiniFrame", "CDockingManager [MFC], RemovePaneFromDockManager", "CDockingManager [MFC], ReplacePane", "CDockingManager [MFC], ResortMiniFramesForZOrder", "CDockingManager [MFC], SaveState", "CDockingManager [MFC], SendMessageToMiniFrames", "CDockingManager [MFC], Serialize", "CDockingManager [MFC], SetAutohideZOrder", "CDockingManager [MFC], SetDockingMode", "CDockingManager [MFC], SetDockState", "CDockingManager [MFC], SetPrintPreviewMode", "CDockingManager [MFC], SetSmartDockingParams", "CDockingManager [MFC], ShowDelayShowMiniFrames", "CDockingManager [MFC], ShowPanes", "CDockingManager [MFC], StartSDocking", "CDockingManager [MFC], StopSDocking", "CDockingManager [MFC], m_bHideDockingBarsInContainerMode", "CDockingManager [MFC], m_dockModeGlobal", "CDockingManager [MFC], m_nDockSensitivity", "CDockingManager [MFC], m_nTimeOutBeforeDockingBarDock", "CDockingManager [MFC], m_nTimeOutBeforeToolBarDock"] -ms.assetid: 98e69c43-55d8-4f43-b861-4fda80ec1e32 --- # CDockingManager Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the core functionality that controls docking layout in a main frame window. ## Syntax diff --git a/docs/mfc/reference/cdockingpanesrow-class.md b/docs/mfc/reference/cdockingpanesrow-class.md index ed86e50a70f..be4e8f4a307 100644 --- a/docs/mfc/reference/cdockingpanesrow-class.md +++ b/docs/mfc/reference/cdockingpanesrow-class.md @@ -4,10 +4,12 @@ title: "CDockingPanesRow Class" ms.date: "10/18/2018" f1_keywords: ["CDockingPanesRow", "AFXDOCKINGPANESROW/CDockingPanesRow", "AFXDOCKINGPANESROW/CDockingPanesRow::AddPane", "AFXDOCKINGPANESROW/CDockingPanesRow::AddPaneFromRow", "AFXDOCKINGPANESROW/CDockingPanesRow::ArrangePanes", "AFXDOCKINGPANESROW/CDockingPanesRow::CalcFixedLayout", "AFXDOCKINGPANESROW/CDockingPanesRow::Create", "AFXDOCKINGPANESROW/CDockingPanesRow::ExpandStretchedPanes", "AFXDOCKINGPANESROW/CDockingPanesRow::ExpandStretchedPanesRect", "AFXDOCKINGPANESROW/CDockingPanesRow::FixupVirtualRects", "AFXDOCKINGPANESROW/CDockingPanesRow::GetAvailableLength", "AFXDOCKINGPANESROW/CDockingPanesRow::GetAvailableSpace", "AFXDOCKINGPANESROW/CDockingPanesRow::GetClientRect", "AFXDOCKINGPANESROW/CDockingPanesRow::GetDockSite", "AFXDOCKINGPANESROW/CDockingPanesRow::GetExtraSpace", "AFXDOCKINGPANESROW/CDockingPanesRow::GetGroupFromPane", "AFXDOCKINGPANESROW/CDockingPanesRow::GetID", "AFXDOCKINGPANESROW/CDockingPanesRow::GetMaxPaneSize", "AFXDOCKINGPANESROW/CDockingPanesRow::GetPaneCount", "AFXDOCKINGPANESROW/CDockingPanesRow::GetPaneList", "AFXDOCKINGPANESROW/CDockingPanesRow::GetRowAlignment", "AFXDOCKINGPANESROW/CDockingPanesRow::GetRowHeight", "AFXDOCKINGPANESROW/CDockingPanesRow::GetRowOffset", "AFXDOCKINGPANESROW/CDockingPanesRow::GetVisibleCount", "AFXDOCKINGPANESROW/CDockingPanesRow::GetWindowRect", "AFXDOCKINGPANESROW/CDockingPanesRow::HasPane", "AFXDOCKINGPANESROW/CDockingPanesRow::IsEmpty", "AFXDOCKINGPANESROW/CDockingPanesRow::IsExclusiveRow", "AFXDOCKINGPANESROW/CDockingPanesRow::IsHorizontal", "AFXDOCKINGPANESROW/CDockingPanesRow::IsVisible", "AFXDOCKINGPANESROW/CDockingPanesRow::Move", "AFXDOCKINGPANESROW/CDockingPanesRow::MovePane", "AFXDOCKINGPANESROW/CDockingPanesRow::OnResizePane", "AFXDOCKINGPANESROW/CDockingPanesRow::RedrawAll", "AFXDOCKINGPANESROW/CDockingPanesRow::RemovePane", "AFXDOCKINGPANESROW/CDockingPanesRow::ReplacePane", "AFXDOCKINGPANESROW/CDockingPanesRow::RepositionPanes", "AFXDOCKINGPANESROW/CDockingPanesRow::Resize", "AFXDOCKINGPANESROW/CDockingPanesRow::ResizeByPaneDivider", "AFXDOCKINGPANESROW/CDockingPanesRow::ScreenToClient", "AFXDOCKINGPANESROW/CDockingPanesRow::SetExtra", "AFXDOCKINGPANESROW/CDockingPanesRow::ShowDockSiteRow", "AFXDOCKINGPANESROW/CDockingPanesRow::ShowPane", "AFXDOCKINGPANESROW/CDockingPanesRow::UpdateVisibleState"] helpviewer_keywords: ["CDockingPanesRow [MFC], AddPane", "CDockingPanesRow [MFC], AddPaneFromRow", "CDockingPanesRow [MFC], ArrangePanes", "CDockingPanesRow [MFC], CalcFixedLayout", "CDockingPanesRow [MFC], Create", "CDockingPanesRow [MFC], ExpandStretchedPanes", "CDockingPanesRow [MFC], ExpandStretchedPanesRect", "CDockingPanesRow [MFC], FixupVirtualRects", "CDockingPanesRow [MFC], GetAvailableLength", "CDockingPanesRow [MFC], GetAvailableSpace", "CDockingPanesRow [MFC], GetClientRect", "CDockingPanesRow [MFC], GetDockSite", "CDockingPanesRow [MFC], GetExtraSpace", "CDockingPanesRow [MFC], GetGroupFromPane", "CDockingPanesRow [MFC], GetID", "CDockingPanesRow [MFC], GetMaxPaneSize", "CDockingPanesRow [MFC], GetPaneCount", "CDockingPanesRow [MFC], GetPaneList", "CDockingPanesRow [MFC], GetRowAlignment", "CDockingPanesRow [MFC], GetRowHeight", "CDockingPanesRow [MFC], GetRowOffset", "CDockingPanesRow [MFC], GetVisibleCount", "CDockingPanesRow [MFC], GetWindowRect", "CDockingPanesRow [MFC], HasPane", "CDockingPanesRow [MFC], IsEmpty", "CDockingPanesRow [MFC], IsExclusiveRow", "CDockingPanesRow [MFC], IsHorizontal", "CDockingPanesRow [MFC], IsVisible", "CDockingPanesRow [MFC], Move", "CDockingPanesRow [MFC], MovePane", "CDockingPanesRow [MFC], OnResizePane", "CDockingPanesRow [MFC], RedrawAll", "CDockingPanesRow [MFC], RemovePane", "CDockingPanesRow [MFC], ReplacePane", "CDockingPanesRow [MFC], RepositionPanes", "CDockingPanesRow [MFC], Resize", "CDockingPanesRow [MFC], ResizeByPaneDivider", "CDockingPanesRow [MFC], ScreenToClient", "CDockingPanesRow [MFC], SetExtra", "CDockingPanesRow [MFC], ShowDockSiteRow", "CDockingPanesRow [MFC], ShowPane", "CDockingPanesRow [MFC], UpdateVisibleState"] -ms.assetid: e7a17832-0ebb-4bce-b799-cec9b60f76fe --- # CDockingPanesRow Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Manages a list of panes that are located in the same horizontal or vertical row (column) of a dock site. For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. diff --git a/docs/mfc/reference/cdocksite-class.md b/docs/mfc/reference/cdocksite-class.md index b8b10362365..810d4522d7b 100644 --- a/docs/mfc/reference/cdocksite-class.md +++ b/docs/mfc/reference/cdocksite-class.md @@ -4,10 +4,12 @@ title: "CDockSite Class" ms.date: "10/18/2018" f1_keywords: ["CDockSite", "AFXDOCKSITE/CDockSite", "AFXDOCKSITE/CDockSite::AddRow", "AFXDOCKSITE/CDockSite::AdjustDockingLayout", "AFXDOCKSITE/CDockSite::AdjustLayout", "AFXDOCKSITE/CDockSite::AlignDockSite", "AFXDOCKSITE/CDockSite::CalcFixedLayout", "AFXDOCKSITE/CDockSite::CanAcceptPane", "AFXDOCKSITE/CDockSite::CreateEx", "AFXDOCKSITE/CDockSite::CreateRow", "AFXDOCKSITE/CDockSite::DockPane", "AFXDOCKSITE/CDockSite::DoesAllowDynInsertBefore", "AFXDOCKSITE/CDockSite::FindRowIndex", "AFXDOCKSITE/CDockSite::FixupVirtualRects", "AFXDOCKSITE/CDockSite::GetDockSiteID", "AFXDOCKSITE/CDockSite::GetDockSiteRowsList", "AFXDOCKSITE/CDockSite::IsAccessibilityCompatible", "AFXDOCKSITE/CDockSite::IsDragMode", "AFXDOCKSITE/CDockSite::IsLastRow", "AFXDOCKSITE/CDockSite::IsRectWithinDockSite", "AFXDOCKSITE/CDockSite::IsResizable", "AFXDOCKSITE/CDockSite::MovePane", "AFXDOCKSITE/CDockSite::OnInsertRow", "AFXDOCKSITE/CDockSite::OnRemoveRow", "AFXDOCKSITE/CDockSite::OnResizeRow", "AFXDOCKSITE/CDockSite::OnSetWindowPos", "AFXDOCKSITE/CDockSite::OnShowRow", "AFXDOCKSITE/CDockSite::OnSizeParent", "AFXDOCKSITE/CDockSite::PaneFromPoint", "AFXDOCKSITE/CDockSite::DockPaneLeftOf", "AFXDOCKSITE/CDockSite::FindPaneByID", "AFXDOCKSITE/CDockSite::GetPaneList", "AFXDOCKSITE/CDockSite::RectSideFromPoint", "AFXDOCKSITE/CDockSite::RemovePane", "AFXDOCKSITE/CDockSite::RemoveRow", "AFXDOCKSITE/CDockSite::ReplacePane", "AFXDOCKSITE/CDockSite::RepositionPanes", "AFXDOCKSITE/CDockSite::ResizeDockSite", "AFXDOCKSITE/CDockSite::ResizeRow", "AFXDOCKSITE/CDockSite::ShowPane", "AFXDOCKSITE/CDockSite::ShowRow", "AFXDOCKSITE/CDockSite::SwapRows"] helpviewer_keywords: ["CDockSite [MFC], AddRow", "CDockSite [MFC], AdjustDockingLayout", "CDockSite [MFC], AdjustLayout", "CDockSite [MFC], AlignDockSite", "CDockSite [MFC], CalcFixedLayout", "CDockSite [MFC], CanAcceptPane", "CDockSite [MFC], CreateEx", "CDockSite [MFC], CreateRow", "CDockSite [MFC], DockPane", "CDockSite [MFC], DoesAllowDynInsertBefore", "CDockSite [MFC], FindRowIndex", "CDockSite [MFC], FixupVirtualRects", "CDockSite [MFC], GetDockSiteID", "CDockSite [MFC], GetDockSiteRowsList", "CDockSite [MFC], IsAccessibilityCompatible", "CDockSite [MFC], IsDragMode", "CDockSite [MFC], IsLastRow", "CDockSite [MFC], IsRectWithinDockSite", "CDockSite [MFC], IsResizable", "CDockSite [MFC], MovePane", "CDockSite [MFC], OnInsertRow", "CDockSite [MFC], OnRemoveRow", "CDockSite [MFC], OnResizeRow", "CDockSite [MFC], OnSetWindowPos", "CDockSite [MFC], OnShowRow", "CDockSite [MFC], OnSizeParent", "CDockSite [MFC], PaneFromPoint", "CDockSite [MFC], DockPaneLeftOf", "CDockSite [MFC], FindPaneByID", "CDockSite [MFC], GetPaneList", "CDockSite [MFC], RectSideFromPoint", "CDockSite [MFC], RemovePane", "CDockSite [MFC], RemoveRow", "CDockSite [MFC], ReplacePane", "CDockSite [MFC], RepositionPanes", "CDockSite [MFC], ResizeDockSite", "CDockSite [MFC], ResizeRow", "CDockSite [MFC], ShowPane", "CDockSite [MFC], ShowRow", "CDockSite [MFC], SwapRows"] -ms.assetid: 0fcfff79-5f50-4281-b2de-a55653bbea40 --- # CDockSite Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. Provides functionality for arranging panes that are derived from the [CPane Class](../../mfc/reference/cpane-class.md) into sets of rows. diff --git a/docs/mfc/reference/cdockstate-class.md b/docs/mfc/reference/cdockstate-class.md index 573f914f69e..2cf9a40a24d 100644 --- a/docs/mfc/reference/cdockstate-class.md +++ b/docs/mfc/reference/cdockstate-class.md @@ -4,10 +4,12 @@ title: "CDockState Class" ms.date: "11/04/2016" f1_keywords: ["CDockState", "AFXADV/CDockState", "AFXADV/CDockState::Clear", "AFXADV/CDockState::GetVersion", "AFXADV/CDockState::LoadState", "AFXADV/CDockState::SaveState", "AFXADV/CDockState::m_arrBarInfo"] helpviewer_keywords: ["CDockState [MFC], Clear", "CDockState [MFC], GetVersion", "CDockState [MFC], LoadState", "CDockState [MFC], SaveState", "CDockState [MFC], m_arrBarInfo"] -ms.assetid: 09e7c10b-3abd-4cb2-ad36-42420fe6bc36 --- # CDockState Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A serialized `CObject` class that loads, unloads, or clears the state of one or more docking control bars in persistent memory (a file). ## Syntax diff --git a/docs/mfc/reference/cdocobjectserver-class.md b/docs/mfc/reference/cdocobjectserver-class.md index b99f2715ac6..706cee08863 100644 --- a/docs/mfc/reference/cdocobjectserver-class.md +++ b/docs/mfc/reference/cdocobjectserver-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDocObjectServer [MFC], CDocObjectServer", "CDocObjectSer --- # CDocObjectServer Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the additional OLE interfaces needed to make a normal `COleDocument` server into a full DocObject server: `IOleDocument`, `IOleDocumentView`, `IOleCommandTarget`, and `IPrint`. ## Syntax diff --git a/docs/mfc/reference/cdocobjectserveritem-class.md b/docs/mfc/reference/cdocobjectserveritem-class.md index 04f07c5cba0..373797418d1 100644 --- a/docs/mfc/reference/cdocobjectserveritem-class.md +++ b/docs/mfc/reference/cdocobjectserveritem-class.md @@ -4,10 +4,12 @@ title: "CDocObjectServerItem Class" ms.date: "03/27/2019" f1_keywords: ["CDocObjectServerItem", "AFXDOCOB/CDocObjectServerItem", "AFXDOCOB/CDocObjectServerItem::CDocObjectServerItem", "AFXDOCOB/CDocObjectServerItem::GetDocument", "AFXDOCOB/CDocObjectServerItem::OnDoVerb", "AFXDOCOB/CDocObjectServerItem::OnHide", "AFXDOCOB/CDocObjectServerItem::OnShow"] helpviewer_keywords: ["CDocObjectServerItem [MFC], CDocObjectServerItem", "CDocObjectServerItem [MFC], GetDocument", "CDocObjectServerItem [MFC], OnDoVerb", "CDocObjectServerItem [MFC], OnHide", "CDocObjectServerItem [MFC], OnShow"] -ms.assetid: 530f7156-50c8-4806-9328-602c9133f622 --- # CDocObjectServerItem Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements OLE server verbs specifically for DocObject servers. ## Syntax diff --git a/docs/mfc/reference/cdoctemplate-class.md b/docs/mfc/reference/cdoctemplate-class.md index f82442239b9..37cdf1a2d6d 100644 --- a/docs/mfc/reference/cdoctemplate-class.md +++ b/docs/mfc/reference/cdoctemplate-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CDocTemplate [MFC], CDocTemplate", "CDocTemplate [MFC], A --- # `CDocTemplate` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An abstract base class that defines the basic functionality for document templates. ## Syntax diff --git a/docs/mfc/reference/cdocument-class.md b/docs/mfc/reference/cdocument-class.md index 53f7c00e9c9..8fe635eee58 100644 --- a/docs/mfc/reference/cdocument-class.md +++ b/docs/mfc/reference/cdocument-class.md @@ -4,10 +4,12 @@ title: "CDocument Class" ms.date: "11/04/2016" f1_keywords: ["CDocument", "AFXWIN/CDocument", "AFXWIN/CDocument::CDocument", "AFXWIN/CDocument::AddView", "AFXWIN/CDocument::BeginReadChunks", "AFXWIN/CDocument::CanCloseFrame", "AFXWIN/CDocument::ClearChunkList", "AFXWIN/CDocument::ClearPathName", "AFXWIN/CDocument::DeleteContents", "AFXWIN/CDocument::FindChunk", "AFXWIN/CDocument::GetAdapter", "AFXWIN/CDocument::GetDocTemplate", "AFXWIN/CDocument::GetFile", "AFXWIN/CDocument::GetFirstViewPosition", "AFXWIN/CDocument::GetNextView", "AFXWIN/CDocument::GetPathName", "AFXWIN/CDocument::GetThumbnail", "AFXWIN/CDocument::GetTitle", "AFXWIN/CDocument::InitializeSearchContent", "AFXWIN/CDocument::IsModified", "AFXWIN/CDocument::IsSearchAndOrganizeHandler", "AFXWIN/CDocument::LoadDocumentFromStream", "AFXWIN/CDocument::OnBeforeRichPreviewFontChanged", "AFXWIN/CDocument::OnChangedViewList", "AFXWIN/CDocument::OnCloseDocument", "AFXWIN/CDocument::OnCreatePreviewFrame", "AFXWIN/CDocument::OnDocumentEvent", "AFXWIN/CDocument::OnDrawThumbnail", "AFXWIN/CDocument::OnLoadDocumentFromStream", "AFXWIN/CDocument::OnNewDocument", "AFXWIN/CDocument::OnOpenDocument", "AFXWIN/CDocument::OnPreviewHandlerQueryFocus", "AFXWIN/CDocument::OnPreviewHandlerTranslateAccelerator", "AFXWIN/CDocument::OnRichPreviewBackColorChanged", "AFXWIN/CDocument::OnRichPreviewFontChanged", "AFXWIN/CDocument::OnRichPreviewSiteChanged", "AFXWIN/CDocument::OnRichPreviewTextColorChanged", "AFXWIN/CDocument::OnSaveDocument", "AFXWIN/CDocument::OnUnloadHandler", "AFXWIN/CDocument::PreCloseFrame", "AFXWIN/CDocument::ReadNextChunkValue", "AFXWIN/CDocument::ReleaseFile", "AFXWIN/CDocument::RemoveChunk", "AFXWIN/CDocument::RemoveView", "AFXWIN/CDocument::ReportSaveLoadException", "AFXWIN/CDocument::SaveModified", "AFXWIN/CDocument::SetChunkValue", "AFXWIN/CDocument::SetModifiedFlag", "AFXWIN/CDocument::SetPathName", "AFXWIN/CDocument::SetTitle", "AFXWIN/CDocument::UpdateAllViews", "AFXWIN/CDocument::OnFileSendMail", "AFXWIN/CDocument::OnUpdateFileSendMail", "AFXWIN/CDocument::m_bGetThumbnailMode", "AFXWIN/CDocument::m_bPreviewHandlerMode", "AFXWIN/CDocument::m_bSearchMode", "AFXWIN/CDocument::m_clrRichPreviewBackColor", "AFXWIN/CDocument::m_clrRichPreviewTextColor", "AFXWIN/CDocument::m_lfRichPreviewFont"] helpviewer_keywords: ["CDocument [MFC], CDocument", "CDocument [MFC], AddView", "CDocument [MFC], BeginReadChunks", "CDocument [MFC], CanCloseFrame", "CDocument [MFC], ClearChunkList", "CDocument [MFC], ClearPathName", "CDocument [MFC], DeleteContents", "CDocument [MFC], FindChunk", "CDocument [MFC], GetAdapter", "CDocument [MFC], GetDocTemplate", "CDocument [MFC], GetFile", "CDocument [MFC], GetFirstViewPosition", "CDocument [MFC], GetNextView", "CDocument [MFC], GetPathName", "CDocument [MFC], GetThumbnail", "CDocument [MFC], GetTitle", "CDocument [MFC], InitializeSearchContent", "CDocument [MFC], IsModified", "CDocument [MFC], IsSearchAndOrganizeHandler", "CDocument [MFC], LoadDocumentFromStream", "CDocument [MFC], OnBeforeRichPreviewFontChanged", "CDocument [MFC], OnChangedViewList", "CDocument [MFC], OnCloseDocument", "CDocument [MFC], OnCreatePreviewFrame", "CDocument [MFC], OnDocumentEvent", "CDocument [MFC], OnDrawThumbnail", "CDocument [MFC], OnLoadDocumentFromStream", "CDocument [MFC], OnNewDocument", "CDocument [MFC], OnOpenDocument", "CDocument [MFC], OnPreviewHandlerQueryFocus", "CDocument [MFC], OnPreviewHandlerTranslateAccelerator", "CDocument [MFC], OnRichPreviewBackColorChanged", "CDocument [MFC], OnRichPreviewFontChanged", "CDocument [MFC], OnRichPreviewSiteChanged", "CDocument [MFC], OnRichPreviewTextColorChanged", "CDocument [MFC], OnSaveDocument", "CDocument [MFC], OnUnloadHandler", "CDocument [MFC], PreCloseFrame", "CDocument [MFC], ReadNextChunkValue", "CDocument [MFC], ReleaseFile", "CDocument [MFC], RemoveChunk", "CDocument [MFC], RemoveView", "CDocument [MFC], ReportSaveLoadException", "CDocument [MFC], SaveModified", "CDocument [MFC], SetChunkValue", "CDocument [MFC], SetModifiedFlag", "CDocument [MFC], SetPathName", "CDocument [MFC], SetTitle", "CDocument [MFC], UpdateAllViews", "CDocument [MFC], OnFileSendMail", "CDocument [MFC], OnUpdateFileSendMail", "CDocument [MFC], m_bGetThumbnailMode", "CDocument [MFC], m_bPreviewHandlerMode", "CDocument [MFC], m_bSearchMode", "CDocument [MFC], m_clrRichPreviewBackColor", "CDocument [MFC], m_clrRichPreviewTextColor", "CDocument [MFC], m_lfRichPreviewFont"] -ms.assetid: e5a2891d-e1e1-4599-8c7e-afa9b4945446 --- # `CDocument` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the basic functionality for user-defined document classes. ## Syntax diff --git a/docs/mfc/reference/cdraglistbox-class.md b/docs/mfc/reference/cdraglistbox-class.md index 3f606afec5c..0a6c49b750a 100644 --- a/docs/mfc/reference/cdraglistbox-class.md +++ b/docs/mfc/reference/cdraglistbox-class.md @@ -4,10 +4,12 @@ title: "CDragListBox Class" ms.date: "11/04/2016" f1_keywords: ["CDragListBox", "AFXCMN/CDragListBox", "AFXCMN/CDragListBox::CDragListBox", "AFXCMN/CDragListBox::BeginDrag", "AFXCMN/CDragListBox::CancelDrag", "AFXCMN/CDragListBox::Dragging", "AFXCMN/CDragListBox::DrawInsert", "AFXCMN/CDragListBox::Dropped", "AFXCMN/CDragListBox::ItemFromPt"] helpviewer_keywords: ["CDragListBox [MFC], CDragListBox", "CDragListBox [MFC], BeginDrag", "CDragListBox [MFC], CancelDrag", "CDragListBox [MFC], Dragging", "CDragListBox [MFC], DrawInsert", "CDragListBox [MFC], Dropped", "CDragListBox [MFC], ItemFromPt"] -ms.assetid: fee20b42-60ae-4aa9-83f9-5a3d9b96e33b --- # CDragListBox Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In addition to providing the functionality of a Windows list box, the `CDragListBox` class allows the user to move list box items, such as filenames, within the list box. ## Syntax diff --git a/docs/mfc/reference/cdrawingmanager-class.md b/docs/mfc/reference/cdrawingmanager-class.md index 0ac81cd52f4..0b13d57074e 100644 --- a/docs/mfc/reference/cdrawingmanager-class.md +++ b/docs/mfc/reference/cdrawingmanager-class.md @@ -4,10 +4,12 @@ title: "CDrawingManager Class" ms.date: "11/04/2016" f1_keywords: ["CDrawingManager", "AFXDRAWMANAGER/CDrawingManager", "AFXDRAWMANAGER/CDrawingManager::CDrawingManager", "AFXDRAWMANAGER/CDrawingManager::CreateBitmap_32", "AFXDRAWMANAGER/CDrawingManager::DrawAlpha", "AFXDRAWMANAGER/CDrawingManager::DrawRotated", "AFXDRAWMANAGER/CDrawingManager::DrawEllipse", "AFXDRAWMANAGER/CDrawingManager::DrawGradientRing", "AFXDRAWMANAGER/CDrawingManager::DrawRect", "AFXDRAWMANAGER/CDrawingManager::DrawShadow", "AFXDRAWMANAGER/CDrawingManager::Fill4ColorsGradient", "AFXDRAWMANAGER/CDrawingManager::FillGradient", "AFXDRAWMANAGER/CDrawingManager::FillGradient2", "AFXDRAWMANAGER/CDrawingManager::GrayRect", "AFXDRAWMANAGER/CDrawingManager::HighlightRect", "AFXDRAWMANAGER/CDrawingManager::HLStoRGB_ONE", "AFXDRAWMANAGER/CDrawingManager::HLStoRGB_TWO", "AFXDRAWMANAGER/CDrawingManager::HSVtoRGB", "AFXDRAWMANAGER/CDrawingManager::HuetoRGB", "AFXDRAWMANAGER/CDrawingManager::MirrorRect", "AFXDRAWMANAGER/CDrawingManager::PixelAlpha", "AFXDRAWMANAGER/CDrawingManager::PrepareShadowMask", "AFXDRAWMANAGER/CDrawingManager::RGBtoHSL", "AFXDRAWMANAGER/CDrawingManager::RGBtoHSV", "AFXDRAWMANAGER/CDrawingManager::SetAlphaPixel", "AFXDRAWMANAGER/CDrawingManager::SetPixel", "AFXDRAWMANAGER/CDrawingManager::SmartMixColors"] helpviewer_keywords: ["CDrawingManager [MFC], CDrawingManager", "CDrawingManager [MFC], CreateBitmap_32", "CDrawingManager [MFC], DrawAlpha", "CDrawingManager [MFC], DrawRotated", "CDrawingManager [MFC], DrawEllipse", "CDrawingManager [MFC], DrawGradientRing", "CDrawingManager [MFC], DrawRect", "CDrawingManager [MFC], DrawShadow", "CDrawingManager [MFC], Fill4ColorsGradient", "CDrawingManager [MFC], FillGradient", "CDrawingManager [MFC], FillGradient2", "CDrawingManager [MFC], GrayRect", "CDrawingManager [MFC], HighlightRect", "CDrawingManager [MFC], HLStoRGB_ONE", "CDrawingManager [MFC], HLStoRGB_TWO", "CDrawingManager [MFC], HSVtoRGB", "CDrawingManager [MFC], HuetoRGB", "CDrawingManager [MFC], MirrorRect", "CDrawingManager [MFC], PixelAlpha", "CDrawingManager [MFC], PrepareShadowMask", "CDrawingManager [MFC], RGBtoHSL", "CDrawingManager [MFC], RGBtoHSV", "CDrawingManager [MFC], SetAlphaPixel", "CDrawingManager [MFC], SetPixel", "CDrawingManager [MFC], SmartMixColors"] -ms.assetid: 9e4775ca-101b-4aa9-a85a-4d047c701215 --- # CDrawingManager Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CDrawingManager` class implements complex drawing algorithms. ## Syntax diff --git a/docs/mfc/reference/cdumpcontext-class.md b/docs/mfc/reference/cdumpcontext-class.md index 62761573c65..7ea003f58f8 100644 --- a/docs/mfc/reference/cdumpcontext-class.md +++ b/docs/mfc/reference/cdumpcontext-class.md @@ -4,10 +4,12 @@ title: "CDumpContext Class" ms.date: "11/04/2016" f1_keywords: ["CDumpContext", "AFX/CDumpContext", "AFX/CDumpContext::CDumpContext", "AFX/CDumpContext::DumpAsHex", "AFX/CDumpContext::Flush", "AFX/CDumpContext::GetDepth", "AFX/CDumpContext::HexDump", "AFX/CDumpContext::SetDepth"] helpviewer_keywords: ["CDumpContext [MFC], CDumpContext", "CDumpContext [MFC], DumpAsHex", "CDumpContext [MFC], Flush", "CDumpContext [MFC], GetDepth", "CDumpContext [MFC], HexDump", "CDumpContext [MFC], SetDepth"] -ms.assetid: 98c52b2d-14b5-48ed-b423-479a4d1c60fa --- # CDumpContext Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports stream-oriented diagnostic output in the form of human-readable text. ## Syntax diff --git a/docs/mfc/reference/cdwordarray-class.md b/docs/mfc/reference/cdwordarray-class.md index 6e9d5f38710..25eaea47f31 100644 --- a/docs/mfc/reference/cdwordarray-class.md +++ b/docs/mfc/reference/cdwordarray-class.md @@ -4,10 +4,12 @@ title: "CDWordArray Class" ms.date: "11/04/2016" f1_keywords: ["CDWordArray", "AFXCOLL/CDWordArray", "AFXCOLL/CDWordArray::CDWordArray", "AFXCOLL/CDWordArray::Add", "AFXCOLL/CDWordArray::Append", "AFXCOLL/CDWordArray::Copy", "AFXCOLL/CDWordArray::ElementAt", "AFXCOLL/CDWordArray::FreeExtra", "AFXCOLL/CDWordArray::GetAt", "AFXCOLL/CDWordArray::GetCount", "AFXCOLL/CDWordArray::GetData", "AFXCOLL/CDWordArray::GetSize", "AFXCOLL/CDWordArray::GetUpperBound", "AFXCOLL/CDWordArray::InsertAt", "AFXCOLL/CDWordArray::IsEmpty", "AFXCOLL/CDWordArray::RemoveAll", "AFXCOLL/CDWordArray::RemoveAt", "AFXCOLL/CDWordArray::SetAt", "AFXCOLL/CDWordArray::SetAtGrow", "AFXCOLL/CDWordArray::SetSize"] helpviewer_keywords: ["CDWordArray [MFC], CDWordArray", "CDWordArray [MFC], Add", "CDWordArray [MFC], Append", "CDWordArray [MFC], Copy", "CDWordArray [MFC], ElementAt", "CDWordArray [MFC], FreeExtra", "CDWordArray [MFC], GetAt", "CDWordArray [MFC], GetCount", "CDWordArray [MFC], GetData", "CDWordArray [MFC], GetSize", "CDWordArray [MFC], GetUpperBound", "CDWordArray [MFC], InsertAt", "CDWordArray [MFC], IsEmpty", "CDWordArray [MFC], RemoveAll", "CDWordArray [MFC], RemoveAt", "CDWordArray [MFC], SetAt", "CDWordArray [MFC], SetAtGrow", "CDWordArray [MFC], SetSize"] -ms.assetid: 581be11e-ced6-47d1-8679-e0b8e7d99494 --- # CDWordArray Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports arrays of 32-bit doublewords. ## Syntax diff --git a/docs/mfc/reference/cedit-class.md b/docs/mfc/reference/cedit-class.md index 3843aec8703..1bbce9a88f9 100644 --- a/docs/mfc/reference/cedit-class.md +++ b/docs/mfc/reference/cedit-class.md @@ -4,10 +4,12 @@ title: "CEdit Class" ms.date: "09/12/2018" f1_keywords: ["CEdit", "AFXWIN/CEdit", "AFXWIN/CEdit::CEdit", "AFXWIN/CEdit::CanUndo", "AFXWIN/CEdit::CharFromPos", "AFXWIN/CEdit::Clear", "AFXWIN/CEdit::Copy", "AFXWIN/CEdit::Create", "AFXWIN/CEdit::Cut", "AFXWIN/CEdit::EmptyUndoBuffer", "AFXWIN/CEdit::FmtLines", "AFXWIN/CEdit::GetCueBanner", "AFXWIN/CEdit::GetFirstVisibleLine", "AFXWIN/CEdit::GetHandle", "AFXWIN/CEdit::GetHighlight", "AFXWIN/CEdit::GetLimitText", "AFXWIN/CEdit::GetLine", "AFXWIN/CEdit::GetLineCount", "AFXWIN/CEdit::GetMargins", "AFXWIN/CEdit::GetModify", "AFXWIN/CEdit::GetPasswordChar", "AFXWIN/CEdit::GetRect", "AFXWIN/CEdit::GetSel", "AFXWIN/CEdit::HideBalloonTip", "AFXWIN/CEdit::LimitText", "AFXWIN/CEdit::LineFromChar", "AFXWIN/CEdit::LineIndex", "AFXWIN/CEdit::LineLength", "AFXWIN/CEdit::LineScroll", "AFXWIN/CEdit::Paste", "AFXWIN/CEdit::PosFromChar", "AFXWIN/CEdit::ReplaceSel", "AFXWIN/CEdit::SetCueBanner", "AFXWIN/CEdit::SetHandle", "AFXWIN/CEdit::SetHighlight", "AFXWIN/CEdit::SetLimitText", "AFXWIN/CEdit::SetMargins", "AFXWIN/CEdit::SetModify", "AFXWIN/CEdit::SetPasswordChar", "AFXWIN/CEdit::SetReadOnly", "AFXWIN/CEdit::SetRect", "AFXWIN/CEdit::SetRectNP", "AFXWIN/CEdit::SetSel", "AFXWIN/CEdit::SetTabStops", "AFXWIN/CEdit::ShowBalloonTip", "AFXWIN/CEdit::Undo"] helpviewer_keywords: ["CEdit [MFC], CEdit", "CEdit [MFC], CanUndo", "CEdit [MFC], CharFromPos", "CEdit [MFC], Clear", "CEdit [MFC], Copy", "CEdit [MFC], Create", "CEdit [MFC], Cut", "CEdit [MFC], EmptyUndoBuffer", "CEdit [MFC], FmtLines", "CEdit [MFC], GetCueBanner", "CEdit [MFC], GetFirstVisibleLine", "CEdit [MFC], GetHandle", "CEdit [MFC], GetHighlight", "CEdit [MFC], GetLimitText", "CEdit [MFC], GetLine", "CEdit [MFC], GetLineCount", "CEdit [MFC], GetMargins", "CEdit [MFC], GetModify", "CEdit [MFC], GetPasswordChar", "CEdit [MFC], GetRect", "CEdit [MFC], GetSel", "CEdit [MFC], HideBalloonTip", "CEdit [MFC], LimitText", "CEdit [MFC], LineFromChar", "CEdit [MFC], LineIndex", "CEdit [MFC], LineLength", "CEdit [MFC], LineScroll", "CEdit [MFC], Paste", "CEdit [MFC], PosFromChar", "CEdit [MFC], ReplaceSel", "CEdit [MFC], SetCueBanner", "CEdit [MFC], SetHandle", "CEdit [MFC], SetHighlight", "CEdit [MFC], SetLimitText", "CEdit [MFC], SetMargins", "CEdit [MFC], SetModify", "CEdit [MFC], SetPasswordChar", "CEdit [MFC], SetReadOnly", "CEdit [MFC], SetRect", "CEdit [MFC], SetRectNP", "CEdit [MFC], SetSel", "CEdit [MFC], SetTabStops", "CEdit [MFC], ShowBalloonTip", "CEdit [MFC], Undo"] -ms.assetid: b1533c30-7f10-4663-88d3-8b7f2c9f7024 --- # CEdit Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of a Windows edit control. ## Syntax diff --git a/docs/mfc/reference/ceditview-class.md b/docs/mfc/reference/ceditview-class.md index 19e9d78e469..d2a418035b5 100644 --- a/docs/mfc/reference/ceditview-class.md +++ b/docs/mfc/reference/ceditview-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CEditView [MFC], CEditView", "CEditView [MFC], FindText", --- # CEditView Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A type of view class that provides the functionality of a Windows edit control and can be used to implement simple text-editor functionality. ## Syntax diff --git a/docs/mfc/reference/cevent-class.md b/docs/mfc/reference/cevent-class.md index 2ed97e9f1d4..0389a61a321 100644 --- a/docs/mfc/reference/cevent-class.md +++ b/docs/mfc/reference/cevent-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CEvent [MFC], CEvent", "CEvent [MFC], PulseEvent", "CEven --- # `CEvent` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents an event, which is a synchronization object that enables one thread to notify another that an event has occurred. ## Syntax diff --git a/docs/mfc/reference/cexception-class.md b/docs/mfc/reference/cexception-class.md index 93f52aba8ac..8bc8d5f40da 100644 --- a/docs/mfc/reference/cexception-class.md +++ b/docs/mfc/reference/cexception-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CException [MFC], CException", "CException [MFC], Delete" --- # `CException` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class for all exceptions in the Microsoft Foundation Class Library. ## Syntax diff --git a/docs/mfc/reference/cfieldexchange-class.md b/docs/mfc/reference/cfieldexchange-class.md index 02902f9e1c8..f1a099f9bc7 100644 --- a/docs/mfc/reference/cfieldexchange-class.md +++ b/docs/mfc/reference/cfieldexchange-class.md @@ -4,10 +4,12 @@ title: "CFieldExchange Class" ms.date: "11/04/2016" f1_keywords: ["CFieldExchange", "AFXDB/CFieldExchange", "AFXDB/CFieldExchange::IsFieldType", "AFXDB/CFieldExchange::SetFieldType"] helpviewer_keywords: ["CFieldExchange [MFC], IsFieldType", "CFieldExchange [MFC], SetFieldType"] -ms.assetid: 24c5c0b3-06a6-430e-9b6f-005a2c65e29f --- # CFieldExchange Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports the record field exchange (RFX) and bulk record field exchange (Bulk RFX) routines used by the database classes. ## Syntax diff --git a/docs/mfc/reference/cfile-class.md b/docs/mfc/reference/cfile-class.md index 1621e327467..5c12dc2db75 100644 --- a/docs/mfc/reference/cfile-class.md +++ b/docs/mfc/reference/cfile-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CFile [MFC], CFile", "CFile [MFC], Abort", "CFile [MFC], --- # CFile Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class for Microsoft Foundation Class file classes. ## Syntax diff --git a/docs/mfc/reference/cfiledialog-class.md b/docs/mfc/reference/cfiledialog-class.md index 64c02078a88..3d84f293e8b 100644 --- a/docs/mfc/reference/cfiledialog-class.md +++ b/docs/mfc/reference/cfiledialog-class.md @@ -4,10 +4,12 @@ title: "CFileDialog Class" ms.date: "11/04/2016" f1_keywords: ["CFileDialog", "AFXDLGS/CFileDialog", "AFXDLGS/CFileDialog::CFileDialog", "AFXDLGS/CFileDialog::AddCheckButton", "AFXDLGS/CFileDialog::AddComboBox", "AFXDLGS/CFileDialog::AddControlItem", "AFXDLGS/CFileDialog::AddEditBox", "AFXDLGS/CFileDialog::AddMenu", "AFXDLGS/CFileDialog::AddPlace", "AFXDLGS/CFileDialog::AddPushButton", "AFXDLGS/CFileDialog::AddRadioButtonList", "AFXDLGS/CFileDialog::AddSeparator", "AFXDLGS/CFileDialog::AddText", "AFXDLGS/CFileDialog::ApplyOFNToShellDialog", "AFXDLGS/CFileDialog::DoModal", "AFXDLGS/CFileDialog::EnableOpenDropDown", "AFXDLGS/CFileDialog::EndVisualGroup", "AFXDLGS/CFileDialog::GetCheckButtonState", "AFXDLGS/CFileDialog::GetControlItemState", "AFXDLGS/CFileDialog::GetControlState", "AFXDLGS/CFileDialog::GetEditBoxText", "AFXDLGS/CFileDialog::GetFileExt", "AFXDLGS/CFileDialog::GetFileName", "AFXDLGS/CFileDialog::GetFileTitle", "AFXDLGS/CFileDialog::GetFolderPath", "AFXDLGS/CFileDialog::GetIFileDialogCustomize", "AFXDLGS/CFileDialog::GetIFileOpenDialog", "AFXDLGS/CFileDialog::GetIFileSaveDialog", "AFXDLGS/CFileDialog::GetNextPathName", "AFXDLGS/CFileDialog::GetOFN", "AFXDLGS/CFileDialog::GetPathName", "AFXDLGS/CFileDialog::GetReadOnlyPref", "AFXDLGS/CFileDialog::GetResult", "AFXDLGS/CFileDialog::GetResults", "AFXDLGS/CFileDialog::GetSelectedControlItem", "AFXDLGS/CFileDialog::GetStartPosition", "AFXDLGS/CFileDialog::HideControl", "AFXDLGS/CFileDialog::IsPickFoldersMode", "AFXDLGS/CFileDialog::MakeProminent", "AFXDLGS/CFileDialog::RemoveControlItem", "AFXDLGS/CFileDialog::SetCheckButtonState", "AFXDLGS/CFileDialog::SetControlItemState", "AFXDLGS/CFileDialog::SetControlItemText", "AFXDLGS/CFileDialog::SetControlLabel", "AFXDLGS/CFileDialog::SetControlState", "AFXDLGS/CFileDialog::SetControlText", "AFXDLGS/CFileDialog::SetDefExt", "AFXDLGS/CFileDialog::SetEditBoxText", "AFXDLGS/CFileDialog::SetProperties", "AFXDLGS/CFileDialog::SetSelectedControlItem", "AFXDLGS/CFileDialog::SetTemplate", "AFXDLGS/CFileDialog::StartVisualGroup", "AFXDLGS/CFileDialog::UpdateOFNFromShellDialog", "AFXDLGS/CFileDialog::OnButtonClicked", "AFXDLGS/CFileDialog::OnCheckButtonToggled", "AFXDLGS/CFileDialog::OnControlActivating", "AFXDLGS/CFileDialog::OnFileNameChange", "AFXDLGS/CFileDialog::OnFileNameOK", "AFXDLGS/CFileDialog::OnFolderChange", "AFXDLGS/CFileDialog::OnInitDone", "AFXDLGS/CFileDialog::OnItemSelected", "AFXDLGS/CFileDialog::OnLBSelChangedNotify", "AFXDLGS/CFileDialog::OnShareViolation", "AFXDLGS/CFileDialog::OnTypeChange", "AFXDLGS/CFileDialog::m_ofn"] helpviewer_keywords: ["CFileDialog [MFC], CFileDialog", "CFileDialog [MFC], AddCheckButton", "CFileDialog [MFC], AddComboBox", "CFileDialog [MFC], AddControlItem", "CFileDialog [MFC], AddEditBox", "CFileDialog [MFC], AddMenu", "CFileDialog [MFC], AddPlace", "CFileDialog [MFC], AddPushButton", "CFileDialog [MFC], AddRadioButtonList", "CFileDialog [MFC], AddSeparator", "CFileDialog [MFC], AddText", "CFileDialog [MFC], ApplyOFNToShellDialog", "CFileDialog [MFC], DoModal", "CFileDialog [MFC], EnableOpenDropDown", "CFileDialog [MFC], EndVisualGroup", "CFileDialog [MFC], GetCheckButtonState", "CFileDialog [MFC], GetControlItemState", "CFileDialog [MFC], GetControlState", "CFileDialog [MFC], GetEditBoxText", "CFileDialog [MFC], GetFileExt", "CFileDialog [MFC], GetFileName", "CFileDialog [MFC], GetFileTitle", "CFileDialog [MFC], GetFolderPath", "CFileDialog [MFC], GetIFileDialogCustomize", "CFileDialog [MFC], GetIFileOpenDialog", "CFileDialog [MFC], GetIFileSaveDialog", "CFileDialog [MFC], GetNextPathName", "CFileDialog [MFC], GetOFN", "CFileDialog [MFC], GetPathName", "CFileDialog [MFC], GetReadOnlyPref", "CFileDialog [MFC], GetResult", "CFileDialog [MFC], GetResults", "CFileDialog [MFC], GetSelectedControlItem", "CFileDialog [MFC], GetStartPosition", "CFileDialog [MFC], HideControl", "CFileDialog [MFC], IsPickFoldersMode", "CFileDialog [MFC], MakeProminent", "CFileDialog [MFC], RemoveControlItem", "CFileDialog [MFC], SetCheckButtonState", "CFileDialog [MFC], SetControlItemState", "CFileDialog [MFC], SetControlItemText", "CFileDialog [MFC], SetControlLabel", "CFileDialog [MFC], SetControlState", "CFileDialog [MFC], SetControlText", "CFileDialog [MFC], SetDefExt", "CFileDialog [MFC], SetEditBoxText", "CFileDialog [MFC], SetProperties", "CFileDialog [MFC], SetSelectedControlItem", "CFileDialog [MFC], SetTemplate", "CFileDialog [MFC], StartVisualGroup", "CFileDialog [MFC], UpdateOFNFromShellDialog", "CFileDialog [MFC], OnButtonClicked", "CFileDialog [MFC], OnCheckButtonToggled", "CFileDialog [MFC], OnControlActivating", "CFileDialog [MFC], OnFileNameChange", "CFileDialog [MFC], OnFileNameOK", "CFileDialog [MFC], OnFolderChange", "CFileDialog [MFC], OnInitDone", "CFileDialog [MFC], OnItemSelected", "CFileDialog [MFC], OnLBSelChangedNotify", "CFileDialog [MFC], OnShareViolation", "CFileDialog [MFC], OnTypeChange", "CFileDialog [MFC], m_ofn"] -ms.assetid: fda4fd3c-08b8-4ce0-8e9d-7bab23f8c6c0 --- # CFileDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates the common dialog box that is used for file open or file save operations. ## Syntax diff --git a/docs/mfc/reference/cfileexception-class.md b/docs/mfc/reference/cfileexception-class.md index 4f5bd0c822c..a69119c7834 100644 --- a/docs/mfc/reference/cfileexception-class.md +++ b/docs/mfc/reference/cfileexception-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CFileException [MFC], CFileException", "CFileException [M --- # `CFileException` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a file-related exception condition. ## Syntax diff --git a/docs/mfc/reference/cfilefind-class.md b/docs/mfc/reference/cfilefind-class.md index aabf078c761..01edcb95523 100644 --- a/docs/mfc/reference/cfilefind-class.md +++ b/docs/mfc/reference/cfilefind-class.md @@ -4,10 +4,12 @@ title: "CFileFind Class" ms.date: "11/04/2016" f1_keywords: ["CFileFind", "AFX/CFileFind", "AFX/CFileFind::CFileFind", "AFX/CFileFind::Close", "AFX/CFileFind::FindFile", "AFX/CFileFind::FindNextFile", "AFX/CFileFind::GetCreationTime", "AFX/CFileFind::GetFileName", "AFX/CFileFind::GetFilePath", "AFX/CFileFind::GetFileTitle", "AFX/CFileFind::GetFileURL", "AFX/CFileFind::GetLastAccessTime", "AFX/CFileFind::GetLastWriteTime", "AFX/CFileFind::GetLength", "AFX/CFileFind::GetRoot", "AFX/CFileFind::IsArchived", "AFX/CFileFind::IsCompressed", "AFX/CFileFind::IsDirectory", "AFX/CFileFind::IsDots", "AFX/CFileFind::IsHidden", "AFX/CFileFind::IsNormal", "AFX/CFileFind::IsReadOnly", "AFX/CFileFind::IsSystem", "AFX/CFileFind::IsTemporary", "AFX/CFileFind::MatchesMask", "AFX/CFileFind::CloseContext", "AFX/CFileFind::m_pTM"] helpviewer_keywords: ["CFileFind [MFC], CFileFind", "CFileFind [MFC], Close", "CFileFind [MFC], FindFile", "CFileFind [MFC], FindNextFile", "CFileFind [MFC], GetCreationTime", "CFileFind [MFC], GetFileName", "CFileFind [MFC], GetFilePath", "CFileFind [MFC], GetFileTitle", "CFileFind [MFC], GetFileURL", "CFileFind [MFC], GetLastAccessTime", "CFileFind [MFC], GetLastWriteTime", "CFileFind [MFC], GetLength", "CFileFind [MFC], GetRoot", "CFileFind [MFC], IsArchived", "CFileFind [MFC], IsCompressed", "CFileFind [MFC], IsDirectory", "CFileFind [MFC], IsDots", "CFileFind [MFC], IsHidden", "CFileFind [MFC], IsNormal", "CFileFind [MFC], IsReadOnly", "CFileFind [MFC], IsSystem", "CFileFind [MFC], IsTemporary", "CFileFind [MFC], MatchesMask", "CFileFind [MFC], CloseContext", "CFileFind [MFC], m_pTM"] -ms.assetid: 9990068c-b023-4114-9580-a50182d15240 --- # `CFileFind` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Performs local file searches and is the base class for [`CGopherFileFind`](../../mfc/reference/cgopherfilefind-class.md) and [`CFtpFileFind`](../../mfc/reference/cftpfilefind-class.md), which perform Internet file searches. ## Syntax diff --git a/docs/mfc/reference/cfindreplacedialog-class.md b/docs/mfc/reference/cfindreplacedialog-class.md index e24c9f2471d..bb106ba948c 100644 --- a/docs/mfc/reference/cfindreplacedialog-class.md +++ b/docs/mfc/reference/cfindreplacedialog-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CFindReplaceDialog [MFC], CFindReplaceDialog", "CFindRepl --- # CFindReplaceDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Allows you to implement standard string Find/Replace dialog boxes in your application. ## Syntax diff --git a/docs/mfc/reference/cfolderpickerdialog-class.md b/docs/mfc/reference/cfolderpickerdialog-class.md index de4f2750fa3..3e416178867 100644 --- a/docs/mfc/reference/cfolderpickerdialog-class.md +++ b/docs/mfc/reference/cfolderpickerdialog-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CFolderPickerDialog [MFC], CFolderPickerDialog"] --- # `CFolderPickerDialog` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + `CFolderPickerDialog` class implements `CFileDialog` in the folder picker mode. ## Syntax diff --git a/docs/mfc/reference/cfont-class.md b/docs/mfc/reference/cfont-class.md index 6a91e72bb95..c16e20c74d1 100644 --- a/docs/mfc/reference/cfont-class.md +++ b/docs/mfc/reference/cfont-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CFont [MFC], CFont", "CFont [MFC], CreateFont", "CFont [M --- # `CFont` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates a Windows graphics device interface (GDI) font and provides member functions for manipulating the font. ## Syntax diff --git a/docs/mfc/reference/cfontdialog-class.md b/docs/mfc/reference/cfontdialog-class.md index 175c1d1978c..277855afb50 100644 --- a/docs/mfc/reference/cfontdialog-class.md +++ b/docs/mfc/reference/cfontdialog-class.md @@ -4,10 +4,12 @@ title: "CFontDialog Class" ms.date: "11/04/2016" f1_keywords: ["CFontDialog", "AFXDLGS/CFontDialog", "AFXDLGS/CFontDialog::CFontDialog", "AFXDLGS/CFontDialog::DoModal", "AFXDLGS/CFontDialog::GetCharFormat", "AFXDLGS/CFontDialog::GetColor", "AFXDLGS/CFontDialog::GetCurrentFont", "AFXDLGS/CFontDialog::GetFaceName", "AFXDLGS/CFontDialog::GetSize", "AFXDLGS/CFontDialog::GetStyleName", "AFXDLGS/CFontDialog::GetWeight", "AFXDLGS/CFontDialog::IsBold", "AFXDLGS/CFontDialog::IsItalic", "AFXDLGS/CFontDialog::IsStrikeOut", "AFXDLGS/CFontDialog::IsUnderline", "AFXDLGS/CFontDialog::m_cf"] helpviewer_keywords: ["CFontDialog [MFC], CFontDialog", "CFontDialog [MFC], DoModal", "CFontDialog [MFC], GetCharFormat", "CFontDialog [MFC], GetColor", "CFontDialog [MFC], GetCurrentFont", "CFontDialog [MFC], GetFaceName", "CFontDialog [MFC], GetSize", "CFontDialog [MFC], GetStyleName", "CFontDialog [MFC], GetWeight", "CFontDialog [MFC], IsBold", "CFontDialog [MFC], IsItalic", "CFontDialog [MFC], IsStrikeOut", "CFontDialog [MFC], IsUnderline", "CFontDialog [MFC], m_cf"] -ms.assetid: 6228d500-ed0f-4156-81e5-ab0d57d1dcf4 --- # CFontDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Allows you to incorporate a font-selection dialog box into your application. ## Syntax diff --git a/docs/mfc/reference/cfontholder-class.md b/docs/mfc/reference/cfontholder-class.md index 793af5a5496..22a1b18a28f 100644 --- a/docs/mfc/reference/cfontholder-class.md +++ b/docs/mfc/reference/cfontholder-class.md @@ -4,10 +4,12 @@ title: "CFontHolder Class" ms.date: "11/04/2016" f1_keywords: ["CFontHolder", "AFXCTL/CFontHolder", "AFXCTL/CFontHolder::CFontHolder", "AFXCTL/CFontHolder::GetDisplayString", "AFXCTL/CFontHolder::GetFontDispatch", "AFXCTL/CFontHolder::GetFontHandle", "AFXCTL/CFontHolder::InitializeFont", "AFXCTL/CFontHolder::QueryTextMetrics", "AFXCTL/CFontHolder::ReleaseFont", "AFXCTL/CFontHolder::Select", "AFXCTL/CFontHolder::SetFont", "AFXCTL/CFontHolder::m_pFont"] helpviewer_keywords: ["CFontHolder [MFC], CFontHolder", "CFontHolder [MFC], GetDisplayString", "CFontHolder [MFC], GetFontDispatch", "CFontHolder [MFC], GetFontHandle", "CFontHolder [MFC], InitializeFont", "CFontHolder [MFC], QueryTextMetrics", "CFontHolder [MFC], ReleaseFont", "CFontHolder [MFC], Select", "CFontHolder [MFC], SetFont", "CFontHolder [MFC], m_pFont"] -ms.assetid: 728ab472-0c97-440d-889f-1324c6e1b6b8 --- # CFontHolder Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the stock Font property and encapsulates the functionality of a Windows font object and the `IFont` interface. ## Syntax diff --git a/docs/mfc/reference/cformview-class.md b/docs/mfc/reference/cformview-class.md index cb84a87b8d5..97aeaa9ffc6 100644 --- a/docs/mfc/reference/cformview-class.md +++ b/docs/mfc/reference/cformview-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CFormView [MFC], CFormView", "CFormView [MFC], IsInitDlgC --- # `CFormView` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class used for form views. ## Syntax diff --git a/docs/mfc/reference/cframewnd-class.md b/docs/mfc/reference/cframewnd-class.md index 670db48714c..633733e9f7b 100644 --- a/docs/mfc/reference/cframewnd-class.md +++ b/docs/mfc/reference/cframewnd-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CFrameWnd [MFC], CFrameWnd", "CFrameWnd [MFC], ActivateFr --- # `CFrameWnd` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of a Windows single document interface (SDI) overlapped or pop-up frame window, along with members for managing the window. ## Syntax diff --git a/docs/mfc/reference/cframewndex-class.md b/docs/mfc/reference/cframewndex-class.md index 6c54057b898..8447320700c 100644 --- a/docs/mfc/reference/cframewndex-class.md +++ b/docs/mfc/reference/cframewndex-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CFrameWndEx [MFC], ActiveItemRecalcLayout", "CFrameWndEx --- # `CFrameWndEx` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements the functionality of a Windows single document interface (SDI) overlapped or popup frame window, and provides members for managing the window. It extends the [`CFrameWnd`](../../mfc/reference/cframewnd-class.md) class. ## Syntax diff --git a/docs/mfc/reference/cftpconnection-class.md b/docs/mfc/reference/cftpconnection-class.md index aae3de670a4..6f1606040cb 100644 --- a/docs/mfc/reference/cftpconnection-class.md +++ b/docs/mfc/reference/cftpconnection-class.md @@ -4,10 +4,12 @@ title: "CFtpConnection Class" ms.date: "08/29/2019" f1_keywords: ["CFtpConnection", "AFXINET/CFtpConnection", "AFXINET/CFtpConnection::CFtpConnection", "AFXINET/CFtpConnection::Command", "AFXINET/CFtpConnection::CreateDirectory", "AFXINET/CFtpConnection::GetCurrentDirectory", "AFXINET/CFtpConnection::GetCurrentDirectoryAsURL", "AFXINET/CFtpConnection::GetFile", "AFXINET/CFtpConnection::OpenFile", "AFXINET/CFtpConnection::PutFile", "AFXINET/CFtpConnection::Remove", "AFXINET/CFtpConnection::RemoveDirectory", "AFXINET/CFtpConnection::Rename", "AFXINET/CFtpConnection::SetCurrentDirectory"] helpviewer_keywords: ["CFtpConnection [MFC], CFtpConnection", "CFtpConnection [MFC], Command", "CFtpConnection [MFC], CreateDirectory", "CFtpConnection [MFC], GetCurrentDirectory", "CFtpConnection [MFC], GetCurrentDirectoryAsURL", "CFtpConnection [MFC], GetFile", "CFtpConnection [MFC], OpenFile", "CFtpConnection [MFC], PutFile", "CFtpConnection [MFC], Remove", "CFtpConnection [MFC], RemoveDirectory", "CFtpConnection [MFC], Rename", "CFtpConnection [MFC], SetCurrentDirectory"] -ms.assetid: 5e3a0501-8893-49cf-a3d5-0628d8d6b936 --- # CFtpConnection Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Manages your FTP connection to an Internet server and allows direct manipulation of directories and files on that server. ## Syntax diff --git a/docs/mfc/reference/cftpfilefind-class.md b/docs/mfc/reference/cftpfilefind-class.md index f43026aff12..33966e135c9 100644 --- a/docs/mfc/reference/cftpfilefind-class.md +++ b/docs/mfc/reference/cftpfilefind-class.md @@ -4,10 +4,12 @@ title: "CFtpFileFind Class" ms.date: "05/28/2020" f1_keywords: ["CFtpFileFind", "AFXINET/CFtpFileFind", "AFXINET/CFtpFileFind::CFtpFileFind", "AFXINET/CFtpFileFind::FindFile", "AFXINET/CFtpFileFind::FindNextFile", "AFXINET/CFtpFileFind::GetFileURL"] helpviewer_keywords: ["CFtpFileFind [MFC], CFtpFileFind", "CFtpFileFind [MFC], FindFile", "CFtpFileFind [MFC], FindNextFile", "CFtpFileFind [MFC], GetFileURL"] -ms.assetid: 9667cf01-657f-4b11-b9db-f11e5a7b4e4c --- # CFtpFileFind Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Aids in Internet file searches of FTP servers. ## Syntax diff --git a/docs/mfc/reference/cgdiobject-class.md b/docs/mfc/reference/cgdiobject-class.md index ff6dde45220..ab134f376d1 100644 --- a/docs/mfc/reference/cgdiobject-class.md +++ b/docs/mfc/reference/cgdiobject-class.md @@ -4,10 +4,12 @@ title: "CGdiObject Class" ms.date: "11/04/2016" f1_keywords: ["CGdiObject", "AFXWIN/CGdiObject", "AFXWIN/CGdiObject::CGdiObject", "AFXWIN/CGdiObject::Attach", "AFXWIN/CGdiObject::CreateStockObject", "AFXWIN/CGdiObject::DeleteObject", "AFXWIN/CGdiObject::DeleteTempMap", "AFXWIN/CGdiObject::Detach", "AFXWIN/CGdiObject::FromHandle", "AFXWIN/CGdiObject::GetObject", "AFXWIN/CGdiObject::GetObjectType", "AFXWIN/CGdiObject::GetSafeHandle", "AFXWIN/CGdiObject::UnrealizeObject", "AFXWIN/CGdiObject::m_hObject"] helpviewer_keywords: ["CGdiObject [MFC], CGdiObject", "CGdiObject [MFC], Attach", "CGdiObject [MFC], CreateStockObject", "CGdiObject [MFC], DeleteObject", "CGdiObject [MFC], DeleteTempMap", "CGdiObject [MFC], Detach", "CGdiObject [MFC], FromHandle", "CGdiObject [MFC], GetObject", "CGdiObject [MFC], GetObjectType", "CGdiObject [MFC], GetSafeHandle", "CGdiObject [MFC], UnrealizeObject", "CGdiObject [MFC], m_hObject"] -ms.assetid: 1cba3ba5-3d49-4e43-8293-209299f2f6f4 --- # CGdiObject Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides a base class for various kinds of Windows graphics device interface (GDI) objects such as bitmaps, regions, brushes, pens, palettes, and fonts. ## Syntax diff --git a/docs/mfc/reference/cglobalutils-class.md b/docs/mfc/reference/cglobalutils-class.md index 55f11e6089d..ddfb73146e3 100644 --- a/docs/mfc/reference/cglobalutils-class.md +++ b/docs/mfc/reference/cglobalutils-class.md @@ -4,10 +4,12 @@ title: "CGlobalUtils Class" ms.date: "10/18/2018" f1_keywords: ["CGlobalUtils", "AFXGLOBALUTILS/CGlobalUtils", "AFXGLOBALUTILS/CGlobalUtils::AdjustRectToWorkArea", "AFXGLOBALUTILS/CGlobalUtils::CalcExpectedDockedRect", "AFXGLOBALUTILS/CGlobalUtils::CanBeAttached", "AFXGLOBALUTILS/CGlobalUtils::CanPaneBeInFloatingMultiPaneFrameWnd", "AFXGLOBALUTILS/CGlobalUtils::CheckAlignment", "AFXGLOBALUTILS/CGlobalUtils::CyFromString", "AFXGLOBALUTILS/CGlobalUtils::DecimalFromString", "AFXGLOBALUTILS/CGlobalUtils::FlipRect", "AFXGLOBALUTILS/CGlobalUtils::ForceAdjustLayout", "AFXGLOBALUTILS/CGlobalUtils::GetDockingManager", "AFXGLOBALUTILS/CGlobalUtils::GetOppositeAlignment", "AFXGLOBALUTILS/CGlobalUtils::GetPaneAndAlignFromPoint", "AFXGLOBALUTILS/CGlobalUtils::GetWndIcon", "AFXGLOBALUTILS/CGlobalUtils::SetNewParent", "AFXGLOBALUTILS/CGlobalUtils::StringFromCy", "AFXGLOBALUTILS/CGlobalUtils::StringFromDecimal"] helpviewer_keywords: ["CGlobalUtils [MFC], AdjustRectToWorkArea", "CGlobalUtils [MFC], CalcExpectedDockedRect", "CGlobalUtils [MFC], CanBeAttached", "CGlobalUtils [MFC], CanPaneBeInFloatingMultiPaneFrameWnd", "CGlobalUtils [MFC], CheckAlignment", "CGlobalUtils [MFC], CyFromString", "CGlobalUtils [MFC], DecimalFromString", "CGlobalUtils [MFC], FlipRect", "CGlobalUtils [MFC], ForceAdjustLayout", "CGlobalUtils [MFC], GetDockingManager", "CGlobalUtils [MFC], GetOppositeAlignment", "CGlobalUtils [MFC], GetPaneAndAlignFromPoint", "CGlobalUtils [MFC], GetWndIcon", "CGlobalUtils [MFC], SetNewParent", "CGlobalUtils [MFC], StringFromCy", "CGlobalUtils [MFC], StringFromDecimal"] -ms.assetid: 2c5bd1a6-f80c-4e79-a476-b4ceebabfb2f --- # CGlobalUtils Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For more detail see the source code located in the **VC\\atlmfc\\src\\mfc** folder of your Visual Studio installation. ## Syntax diff --git a/docs/mfc/reference/cgopherconnection-class.md b/docs/mfc/reference/cgopherconnection-class.md index d05ead9a3a2..d6c587237d0 100644 --- a/docs/mfc/reference/cgopherconnection-class.md +++ b/docs/mfc/reference/cgopherconnection-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CGopherConnection [MFC], CGopherConnection", "CGopherConn --- # CGopherConnection Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Manages your connection to a gopher Internet server. > [!NOTE] diff --git a/docs/mfc/reference/cgopherfile-class.md b/docs/mfc/reference/cgopherfile-class.md index 8d384db4c31..23dd44f2693 100644 --- a/docs/mfc/reference/cgopherfile-class.md +++ b/docs/mfc/reference/cgopherfile-class.md @@ -4,10 +4,12 @@ title: "CGopherFile Class" ms.date: "11/04/2016" f1_keywords: ["CGopherFile", "AFXINET/CGopherFile", "AFXINET/CGopherFile::CGopherFile"] helpviewer_keywords: ["CGopherFile [MFC], CGopherFile"] -ms.assetid: 3ca9898f-8cdb-4495-bbde-46d40100feda --- # CGopherFile Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality to find and read files on a gopher server. > [!NOTE] diff --git a/docs/mfc/reference/cgopherfilefind-class.md b/docs/mfc/reference/cgopherfilefind-class.md index ef0ffada189..47ad8e86a51 100644 --- a/docs/mfc/reference/cgopherfilefind-class.md +++ b/docs/mfc/reference/cgopherfilefind-class.md @@ -4,10 +4,12 @@ title: "CGopherFileFind Class" ms.date: "11/04/2016" f1_keywords: ["CGopherFileFind", "AFXINET/CGopherFileFind", "AFXINET/CGopherFileFind::CGopherFileFind", "AFXINET/CGopherFileFind::FindFile", "AFXINET/CGopherFileFind::FindNextFile", "AFXINET/CGopherFileFind::GetCreationTime", "AFXINET/CGopherFileFind::GetLastAccessTime", "AFXINET/CGopherFileFind::GetLastWriteTime", "AFXINET/CGopherFileFind::GetLength", "AFXINET/CGopherFileFind::GetLocator", "AFXINET/CGopherFileFind::GetScreenName", "AFXINET/CGopherFileFind::IsDots"] helpviewer_keywords: ["CGopherFileFind [MFC], CGopherFileFind", "CGopherFileFind [MFC], FindFile", "CGopherFileFind [MFC], FindNextFile", "CGopherFileFind [MFC], GetCreationTime", "CGopherFileFind [MFC], GetLastAccessTime", "CGopherFileFind [MFC], GetLastWriteTime", "CGopherFileFind [MFC], GetLength", "CGopherFileFind [MFC], GetLocator", "CGopherFileFind [MFC], GetScreenName", "CGopherFileFind [MFC], IsDots"] -ms.assetid: 8465a979-6323-496d-ab4b-e81383fb999d --- # CGopherFileFind Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Aids in Internet file searches of gopher servers. > [!NOTE] diff --git a/docs/mfc/reference/cgopherlocator-class.md b/docs/mfc/reference/cgopherlocator-class.md index e7d981dba71..aa39d685fbd 100644 --- a/docs/mfc/reference/cgopherlocator-class.md +++ b/docs/mfc/reference/cgopherlocator-class.md @@ -4,10 +4,12 @@ title: "CGopherLocator Class" ms.date: "11/04/2016" f1_keywords: ["CGopherLocator", "AFXINET/CGopherLocator", "AFXINET/CGopherLocator::CGopherLocator", "AFXINET/CGopherLocator::GetLocatorType"] helpviewer_keywords: ["CGopherLocator [MFC], CGopherLocator", "CGopherLocator [MFC], GetLocatorType"] -ms.assetid: 6fcc015f-5ae6-4959-b936-858634c71019 --- # CGopherLocator Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Gets a gopher "locator" from a gopher server, determines the locator's type, and makes the locator available to [CGopherFileFind](../../mfc/reference/cgopherfilefind-class.md). > [!NOTE] diff --git a/docs/mfc/reference/cheaderctrl-class.md b/docs/mfc/reference/cheaderctrl-class.md index 3287d1ab18a..8ded47a365a 100644 --- a/docs/mfc/reference/cheaderctrl-class.md +++ b/docs/mfc/reference/cheaderctrl-class.md @@ -4,10 +4,12 @@ title: "CHeaderCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CHeaderCtrl", "AFXCMN/CHeaderCtrl", "AFXCMN/CHeaderCtrl::CHeaderCtrl", "AFXCMN/CHeaderCtrl::ClearAllFilters", "AFXCMN/CHeaderCtrl::ClearFilter", "AFXCMN/CHeaderCtrl::Create", "AFXCMN/CHeaderCtrl::CreateDragImage", "AFXCMN/CHeaderCtrl::CreateEx", "AFXCMN/CHeaderCtrl::DeleteItem", "AFXCMN/CHeaderCtrl::DrawItem", "AFXCMN/CHeaderCtrl::EditFilter", "AFXCMN/CHeaderCtrl::GetBitmapMargin", "AFXCMN/CHeaderCtrl::GetFocusedItem", "AFXCMN/CHeaderCtrl::GetImageList", "AFXCMN/CHeaderCtrl::GetItem", "AFXCMN/CHeaderCtrl::GetItemCount", "AFXCMN/CHeaderCtrl::GetItemDropDownRect", "AFXCMN/CHeaderCtrl::GetItemRect", "AFXCMN/CHeaderCtrl::GetOrderArray", "AFXCMN/CHeaderCtrl::GetOverflowRect", "AFXCMN/CHeaderCtrl::HitTest", "AFXCMN/CHeaderCtrl::InsertItem", "AFXCMN/CHeaderCtrl::Layout", "AFXCMN/CHeaderCtrl::OrderToIndex", "AFXCMN/CHeaderCtrl::SetBitmapMargin", "AFXCMN/CHeaderCtrl::SetFilterChangeTimeout", "AFXCMN/CHeaderCtrl::SetFocusedItem", "AFXCMN/CHeaderCtrl::SetHotDivider", "AFXCMN/CHeaderCtrl::SetImageList", "AFXCMN/CHeaderCtrl::SetItem", "AFXCMN/CHeaderCtrl::SetOrderArray"] helpviewer_keywords: ["CHeaderCtrl [MFC], CHeaderCtrl", "CHeaderCtrl [MFC], ClearAllFilters", "CHeaderCtrl [MFC], ClearFilter", "CHeaderCtrl [MFC], Create", "CHeaderCtrl [MFC], CreateDragImage", "CHeaderCtrl [MFC], CreateEx", "CHeaderCtrl [MFC], DeleteItem", "CHeaderCtrl [MFC], DrawItem", "CHeaderCtrl [MFC], EditFilter", "CHeaderCtrl [MFC], GetBitmapMargin", "CHeaderCtrl [MFC], GetFocusedItem", "CHeaderCtrl [MFC], GetImageList", "CHeaderCtrl [MFC], GetItem", "CHeaderCtrl [MFC], GetItemCount", "CHeaderCtrl [MFC], GetItemDropDownRect", "CHeaderCtrl [MFC], GetItemRect", "CHeaderCtrl [MFC], GetOrderArray", "CHeaderCtrl [MFC], GetOverflowRect", "CHeaderCtrl [MFC], HitTest", "CHeaderCtrl [MFC], InsertItem", "CHeaderCtrl [MFC], Layout", "CHeaderCtrl [MFC], OrderToIndex", "CHeaderCtrl [MFC], SetBitmapMargin", "CHeaderCtrl [MFC], SetFilterChangeTimeout", "CHeaderCtrl [MFC], SetFocusedItem", "CHeaderCtrl [MFC], SetHotDivider", "CHeaderCtrl [MFC], SetImageList", "CHeaderCtrl [MFC], SetItem", "CHeaderCtrl [MFC], SetOrderArray"] -ms.assetid: b847ac90-5fae-4a87-88e0-ca45f77b8b3b --- # CHeaderCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the Windows common header control. ## Syntax diff --git a/docs/mfc/reference/child-window-notification-message-handlers.md b/docs/mfc/reference/child-window-notification-message-handlers.md index 46654fcf608..318b2f6e6ae 100644 --- a/docs/mfc/reference/child-window-notification-message-handlers.md +++ b/docs/mfc/reference/child-window-notification-message-handlers.md @@ -4,10 +4,12 @@ title: "Child Window Notification Message Handlers" ms.date: "11/04/2016" f1_keywords: ["ChildWindow"] helpviewer_keywords: ["message handlers [MFC]", "message handling [MFC], child window message handlers", "notifications [MFC], child window messages", "windows [MFC], message handlers", "child windows [MFC], messages"] -ms.assetid: fddfdd08-8ecf-4f84-8b45-5a84616aaa8d --- # Child Window Notification Message Handlers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + There are five categories of child window notification messages: |Category|Description| diff --git a/docs/mfc/reference/chotkeyctrl-class.md b/docs/mfc/reference/chotkeyctrl-class.md index a442cd26c68..8b855d2303d 100644 --- a/docs/mfc/reference/chotkeyctrl-class.md +++ b/docs/mfc/reference/chotkeyctrl-class.md @@ -4,10 +4,12 @@ title: "CHotKeyCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CHotKeyCtrl", "AFXCMN/CHotKeyCtrl", "AFXCMN/CHotKeyCtrl::CHotKeyCtrl", "AFXCMN/CHotKeyCtrl::Create", "AFXCMN/CHotKeyCtrl::CreateEx", "AFXCMN/CHotKeyCtrl::GetHotKey", "AFXCMN/CHotKeyCtrl::GetHotKeyName", "AFXCMN/CHotKeyCtrl::GetKeyName", "AFXCMN/CHotKeyCtrl::SetHotKey", "AFXCMN/CHotKeyCtrl::SetRules"] helpviewer_keywords: ["CHotKeyCtrl [MFC], CHotKeyCtrl", "CHotKeyCtrl [MFC], Create", "CHotKeyCtrl [MFC], CreateEx", "CHotKeyCtrl [MFC], GetHotKey", "CHotKeyCtrl [MFC], GetHotKeyName", "CHotKeyCtrl [MFC], GetKeyName", "CHotKeyCtrl [MFC], SetHotKey", "CHotKeyCtrl [MFC], SetRules"] -ms.assetid: 896f9766-0718-4f58-aab2-20325e118ca6 --- # CHotKeyCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the Windows common hot key control. ## Syntax diff --git a/docs/mfc/reference/chtmleditctrl-class.md b/docs/mfc/reference/chtmleditctrl-class.md index 6a7e7c8c2a4..547bf0c9771 100644 --- a/docs/mfc/reference/chtmleditctrl-class.md +++ b/docs/mfc/reference/chtmleditctrl-class.md @@ -4,10 +4,12 @@ title: "CHtmlEditCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CHtmlEditCtrl", "AFXHTML/CHtmlEditCtrl", "AFXHTML/CHtmlEditCtrl::CHtmlEditCtrl", "AFXHTML/CHtmlEditCtrl::Create", "AFXHTML/CHtmlEditCtrl::GetDHtmlDocument", "AFXHTML/CHtmlEditCtrl::GetStartDocument"] helpviewer_keywords: ["CHtmlEditCtrl [MFC], CHtmlEditCtrl", "CHtmlEditCtrl [MFC], Create", "CHtmlEditCtrl [MFC], GetDHtmlDocument", "CHtmlEditCtrl [MFC], GetStartDocument"] -ms.assetid: 0fc4a238-b05f-4874-9edc-6a6701f064d9 --- # CHtmlEditCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the WebBrowser ActiveX control in an MFC window. ## Syntax diff --git a/docs/mfc/reference/chtmleditctrlbase-class.md b/docs/mfc/reference/chtmleditctrlbase-class.md index 084f3f0bed7..e092aa41d3f 100644 --- a/docs/mfc/reference/chtmleditctrlbase-class.md +++ b/docs/mfc/reference/chtmleditctrlbase-class.md @@ -4,10 +4,12 @@ title: "CHtmlEditCtrlBase Class" ms.date: "11/04/2016" f1_keywords: ["CHtmlEditCtrlBase", "AFXHTML/CHtmlEditCtrlBase", "AFXHTML/CHtmlEditCtrlBase::AddToGlyphTable", "AFXHTML/CHtmlEditCtrlBase::Bold", "AFXHTML/CHtmlEditCtrlBase::Button", "AFXHTML/CHtmlEditCtrlBase::CheckBox", "AFXHTML/CHtmlEditCtrlBase::ClearSelection", "AFXHTML/CHtmlEditCtrlBase::Copy", "AFXHTML/CHtmlEditCtrlBase::Cut", "AFXHTML/CHtmlEditCtrlBase::Delete", "AFXHTML/CHtmlEditCtrlBase::DropDownBox", "AFXHTML/CHtmlEditCtrlBase::EmptyGlyphTable", "AFXHTML/CHtmlEditCtrlBase::ExecCommand", "AFXHTML/CHtmlEditCtrlBase::Font", "AFXHTML/CHtmlEditCtrlBase::GetAbsolutePosition", "AFXHTML/CHtmlEditCtrlBase::GetBackColor", "AFXHTML/CHtmlEditCtrlBase::GetBlockFormat", "AFXHTML/CHtmlEditCtrlBase::GetBlockFormatNames", "AFXHTML/CHtmlEditCtrlBase::GetBookMark", "AFXHTML/CHtmlEditCtrlBase::GetDocument", "AFXHTML/CHtmlEditCtrlBase::GetDocumentHTML", "AFXHTML/CHtmlEditCtrlBase::GetDocumentTitle", "AFXHTML/CHtmlEditCtrlBase::GetEvent", "AFXHTML/CHtmlEditCtrlBase::GetEventSrcElement", "AFXHTML/CHtmlEditCtrlBase::GetFontFace", "AFXHTML/CHtmlEditCtrlBase::GetFontSize", "AFXHTML/CHtmlEditCtrlBase::GetForeColor", "AFXHTML/CHtmlEditCtrlBase::GetFrameZone", "AFXHTML/CHtmlEditCtrlBase::GetIsDirty", "AFXHTML/CHtmlEditCtrlBase::GetShowAlignedSiteTags", "AFXHTML/CHtmlEditCtrlBase::GetShowAllTags", "AFXHTML/CHtmlEditCtrlBase::GetShowAreaTags", "AFXHTML/CHtmlEditCtrlBase::GetShowBRTags", "AFXHTML/CHtmlEditCtrlBase::GetShowCommentTags", "AFXHTML/CHtmlEditCtrlBase::GetShowMiscTags", "AFXHTML/CHtmlEditCtrlBase::GetShowScriptTags", "AFXHTML/CHtmlEditCtrlBase::GetShowStyleTags", "AFXHTML/CHtmlEditCtrlBase::GetShowUnknownTags", "AFXHTML/CHtmlEditCtrlBase::HorizontalLine", "AFXHTML/CHtmlEditCtrlBase::HyperLink", "AFXHTML/CHtmlEditCtrlBase::IE50Paste", "AFXHTML/CHtmlEditCtrlBase::Iframe", "AFXHTML/CHtmlEditCtrlBase::Image", "AFXHTML/CHtmlEditCtrlBase::Indent", "AFXHTML/CHtmlEditCtrlBase::InsFieldSet", "AFXHTML/CHtmlEditCtrlBase::InsInputButton", "AFXHTML/CHtmlEditCtrlBase::InsInputHidden", "AFXHTML/CHtmlEditCtrlBase::InsInputImage", "AFXHTML/CHtmlEditCtrlBase::InsInputPassword", "AFXHTML/CHtmlEditCtrlBase::InsInputReset", "AFXHTML/CHtmlEditCtrlBase::InsInputSubmit", "AFXHTML/CHtmlEditCtrlBase::InsInputUpload", "AFXHTML/CHtmlEditCtrlBase::Is1DElement", "AFXHTML/CHtmlEditCtrlBase::Is2DElement", "AFXHTML/CHtmlEditCtrlBase::Italic", "AFXHTML/CHtmlEditCtrlBase::JustifyCenter", "AFXHTML/CHtmlEditCtrlBase::JustifyLeft", "AFXHTML/CHtmlEditCtrlBase::JustifyRight", "AFXHTML/CHtmlEditCtrlBase::ListBox", "AFXHTML/CHtmlEditCtrlBase::Marquee", "AFXHTML/CHtmlEditCtrlBase::NewDocument", "AFXHTML/CHtmlEditCtrlBase::OrderList", "AFXHTML/CHtmlEditCtrlBase::Outdent", "AFXHTML/CHtmlEditCtrlBase::Paragraph", "AFXHTML/CHtmlEditCtrlBase::Paste", "AFXHTML/CHtmlEditCtrlBase::PrintDocument", "AFXHTML/CHtmlEditCtrlBase::PrintPreview", "AFXHTML/CHtmlEditCtrlBase::QueryStatus", "AFXHTML/CHtmlEditCtrlBase::RadioButton", "AFXHTML/CHtmlEditCtrlBase::RefreshDocument", "AFXHTML/CHtmlEditCtrlBase::RemoveFormat", "AFXHTML/CHtmlEditCtrlBase::SaveAs", "AFXHTML/CHtmlEditCtrlBase::SelectAll", "AFXHTML/CHtmlEditCtrlBase::Set2DPosition", "AFXHTML/CHtmlEditCtrlBase::SetAbsolutePosition", "AFXHTML/CHtmlEditCtrlBase::SetAtomicSelection", "AFXHTML/CHtmlEditCtrlBase::SetAutoURLDetectMode", "AFXHTML/CHtmlEditCtrlBase::SetBackColor", "AFXHTML/CHtmlEditCtrlBase::SetBlockFormat", "AFXHTML/CHtmlEditCtrlBase::SetBookMark", "AFXHTML/CHtmlEditCtrlBase::SetCSSEditingLevel", "AFXHTML/CHtmlEditCtrlBase::SetDefaultComposeSettings", "AFXHTML/CHtmlEditCtrlBase::SetDesignMode", "AFXHTML/CHtmlEditCtrlBase::SetDisableEditFocusUI", "AFXHTML/CHtmlEditCtrlBase::SetDocumentHTML", "AFXHTML/CHtmlEditCtrlBase::SetFontFace", "AFXHTML/CHtmlEditCtrlBase::SetFontSize", "AFXHTML/CHtmlEditCtrlBase::SetForeColor", "AFXHTML/CHtmlEditCtrlBase::SetIE5PasteMode", "AFXHTML/CHtmlEditCtrlBase::SetLiveResize", "AFXHTML/CHtmlEditCtrlBase::SetMultiSelect", "AFXHTML/CHtmlEditCtrlBase::SetOverrideCursor", "AFXHTML/CHtmlEditCtrlBase::SetMode", "AFXHTML/CHtmlEditCtrlBase::SetRespectVisInDesign", "AFXHTML/CHtmlEditCtrlBase::SetShowAlignedSiteTags", "AFXHTML/CHtmlEditCtrlBase::SetShowAllTags", "AFXHTML/CHtmlEditCtrlBase::SetShowAreaTags", "AFXHTML/CHtmlEditCtrlBase::SetShowBRTags", "AFXHTML/CHtmlEditCtrlBase::SetShowCommentTags", "AFXHTML/CHtmlEditCtrlBase::SetShowMiscTags", "AFXHTML/CHtmlEditCtrlBase::SetShowScriptTags", "AFXHTML/CHtmlEditCtrlBase::SetShowStyleTags", "AFXHTML/CHtmlEditCtrlBase::SetShowUnknownTags", "AFXHTML/CHtmlEditCtrlBase::TextArea", "AFXHTML/CHtmlEditCtrlBase::TextBox", "AFXHTML/CHtmlEditCtrlBase::UnBookmark", "AFXHTML/CHtmlEditCtrlBase::Underline", "AFXHTML/CHtmlEditCtrlBase::Unlink", "AFXHTML/CHtmlEditCtrlBase::UnorderList"] helpviewer_keywords: ["CHtmlEditCtrlBase [MFC], AddToGlyphTable", "CHtmlEditCtrlBase [MFC], Bold", "CHtmlEditCtrlBase [MFC], Button", "CHtmlEditCtrlBase [MFC], CheckBox", "CHtmlEditCtrlBase [MFC], ClearSelection", "CHtmlEditCtrlBase [MFC], Copy", "CHtmlEditCtrlBase [MFC], Cut", "CHtmlEditCtrlBase [MFC], Delete", "CHtmlEditCtrlBase [MFC], DropDownBox", "CHtmlEditCtrlBase [MFC], EmptyGlyphTable", "CHtmlEditCtrlBase [MFC], ExecCommand", "CHtmlEditCtrlBase [MFC], Font", "CHtmlEditCtrlBase [MFC], GetAbsolutePosition", "CHtmlEditCtrlBase [MFC], GetBackColor", "CHtmlEditCtrlBase [MFC], GetBlockFormat", "CHtmlEditCtrlBase [MFC], GetBlockFormatNames", "CHtmlEditCtrlBase [MFC], GetBookMark", "CHtmlEditCtrlBase [MFC], GetDocument", "CHtmlEditCtrlBase [MFC], GetDocumentHTML", "CHtmlEditCtrlBase [MFC], GetDocumentTitle", "CHtmlEditCtrlBase [MFC], GetEvent", "CHtmlEditCtrlBase [MFC], GetEventSrcElement", "CHtmlEditCtrlBase [MFC], GetFontFace", "CHtmlEditCtrlBase [MFC], GetFontSize", "CHtmlEditCtrlBase [MFC], GetForeColor", "CHtmlEditCtrlBase [MFC], GetFrameZone", "CHtmlEditCtrlBase [MFC], GetIsDirty", "CHtmlEditCtrlBase [MFC], GetShowAlignedSiteTags", "CHtmlEditCtrlBase [MFC], GetShowAllTags", "CHtmlEditCtrlBase [MFC], GetShowAreaTags", "CHtmlEditCtrlBase [MFC], GetShowBRTags", "CHtmlEditCtrlBase [MFC], GetShowCommentTags", "CHtmlEditCtrlBase [MFC], GetShowMiscTags", "CHtmlEditCtrlBase [MFC], GetShowScriptTags", "CHtmlEditCtrlBase [MFC], GetShowStyleTags", "CHtmlEditCtrlBase [MFC], GetShowUnknownTags", "CHtmlEditCtrlBase [MFC], HorizontalLine", "CHtmlEditCtrlBase [MFC], HyperLink", "CHtmlEditCtrlBase [MFC], IE50Paste", "CHtmlEditCtrlBase [MFC], Iframe", "CHtmlEditCtrlBase [MFC], Image", "CHtmlEditCtrlBase [MFC], Indent", "CHtmlEditCtrlBase [MFC], InsFieldSet", "CHtmlEditCtrlBase [MFC], InsInputButton", "CHtmlEditCtrlBase [MFC], InsInputHidden", "CHtmlEditCtrlBase [MFC], InsInputImage", "CHtmlEditCtrlBase [MFC], InsInputPassword", "CHtmlEditCtrlBase [MFC], InsInputReset", "CHtmlEditCtrlBase [MFC], InsInputSubmit", "CHtmlEditCtrlBase [MFC], InsInputUpload", "CHtmlEditCtrlBase [MFC], Is1DElement", "CHtmlEditCtrlBase [MFC], Is2DElement", "CHtmlEditCtrlBase [MFC], Italic", "CHtmlEditCtrlBase [MFC], JustifyCenter", "CHtmlEditCtrlBase [MFC], JustifyLeft", "CHtmlEditCtrlBase [MFC], JustifyRight", "CHtmlEditCtrlBase [MFC], ListBox", "CHtmlEditCtrlBase [MFC], Marquee", "CHtmlEditCtrlBase [MFC], NewDocument", "CHtmlEditCtrlBase [MFC], OrderList", "CHtmlEditCtrlBase [MFC], Outdent", "CHtmlEditCtrlBase [MFC], Paragraph", "CHtmlEditCtrlBase [MFC], Paste", "CHtmlEditCtrlBase [MFC], PrintDocument", "CHtmlEditCtrlBase [MFC], PrintPreview", "CHtmlEditCtrlBase [MFC], QueryStatus", "CHtmlEditCtrlBase [MFC], RadioButton", "CHtmlEditCtrlBase [MFC], RefreshDocument", "CHtmlEditCtrlBase [MFC], RemoveFormat", "CHtmlEditCtrlBase [MFC], SaveAs", "CHtmlEditCtrlBase [MFC], SelectAll", "CHtmlEditCtrlBase [MFC], Set2DPosition", "CHtmlEditCtrlBase [MFC], SetAbsolutePosition", "CHtmlEditCtrlBase [MFC], SetAtomicSelection", "CHtmlEditCtrlBase [MFC], SetAutoURLDetectMode", "CHtmlEditCtrlBase [MFC], SetBackColor", "CHtmlEditCtrlBase [MFC], SetBlockFormat", "CHtmlEditCtrlBase [MFC], SetBookMark", "CHtmlEditCtrlBase [MFC], SetCSSEditingLevel", "CHtmlEditCtrlBase [MFC], SetDefaultComposeSettings", "CHtmlEditCtrlBase [MFC], SetDesignMode", "CHtmlEditCtrlBase [MFC], SetDisableEditFocusUI", "CHtmlEditCtrlBase [MFC], SetDocumentHTML", "CHtmlEditCtrlBase [MFC], SetFontFace", "CHtmlEditCtrlBase [MFC], SetFontSize", "CHtmlEditCtrlBase [MFC], SetForeColor", "CHtmlEditCtrlBase [MFC], SetIE5PasteMode", "CHtmlEditCtrlBase [MFC], SetLiveResize", "CHtmlEditCtrlBase [MFC], SetMultiSelect", "CHtmlEditCtrlBase [MFC], SetOverrideCursor", "CHtmlEditCtrlBase [MFC], SetOverwriteMode", "CHtmlEditCtrlBase [MFC], SetRespectVisInDesign", "CHtmlEditCtrlBase [MFC], SetShowAlignedSiteTags", "CHtmlEditCtrlBase [MFC], SetShowAllTags", "CHtmlEditCtrlBase [MFC], SetShowAreaTags", "CHtmlEditCtrlBase [MFC], SetShowBRTags", "CHtmlEditCtrlBase [MFC], SetShowCommentTags", "CHtmlEditCtrlBase [MFC], SetShowMiscTags", "CHtmlEditCtrlBase [MFC], SetShowScriptTags", "CHtmlEditCtrlBase [MFC], SetShowStyleTags", "CHtmlEditCtrlBase [MFC], SetShowUnknownTags", "CHtmlEditCtrlBase [MFC], TextArea", "CHtmlEditCtrlBase [MFC], TextBox", "CHtmlEditCtrlBase [MFC], UnBookmark", "CHtmlEditCtrlBase [MFC], Underline", "CHtmlEditCtrlBase [MFC], Unlink", "CHtmlEditCtrlBase [MFC], UnorderList"] -ms.assetid: e0cc74b4-8320-4570-b673-16c03d2ae266 --- # CHtmlEditCtrlBase Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents an HTML editing component. ## Syntax diff --git a/docs/mfc/reference/chtmleditdoc-class.md b/docs/mfc/reference/chtmleditdoc-class.md index 0e5251f0434..309a4e8901a 100644 --- a/docs/mfc/reference/chtmleditdoc-class.md +++ b/docs/mfc/reference/chtmleditdoc-class.md @@ -4,10 +4,12 @@ title: "CHtmlEditDoc Class" ms.date: "11/04/2016" f1_keywords: ["CHtmlEditDoc", "AFXHTML/CHtmlEditDoc", "AFXHTML/CHtmlEditDoc::CHtmlEditDoc", "AFXHTML/CHtmlEditDoc::GetView", "AFXHTML/CHtmlEditDoc::IsModified", "AFXHTML/CHtmlEditDoc::OpenURL"] helpviewer_keywords: ["CHtmlEditDoc [MFC], CHtmlEditDoc", "CHtmlEditDoc [MFC], GetView", "CHtmlEditDoc [MFC], IsModified", "CHtmlEditDoc [MFC], OpenURL"] -ms.assetid: b2cca61f-e5d6-4099-b0d1-46bf85f0bd64 --- # CHtmlEditDoc Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + With [CHtmlEditView](../../mfc/reference/chtmleditview-class.md), provides the functionality of the WebBrowser editing platform within the context of the MFC document-view architecture. ## Syntax diff --git a/docs/mfc/reference/chtmleditview-class.md b/docs/mfc/reference/chtmleditview-class.md index f636ef74ab1..0813a65f6bb 100644 --- a/docs/mfc/reference/chtmleditview-class.md +++ b/docs/mfc/reference/chtmleditview-class.md @@ -4,10 +4,12 @@ title: "CHtmlEditView Class" ms.date: "11/04/2016" f1_keywords: ["CHtmlEditView", "AFXHTML/CHtmlEditView", "AFXHTML/CHtmlEditView::CHtmlEditView", "AFXHTML/CHtmlEditView::Create", "AFXHTML/CHtmlEditView::GetDHtmlDocument", "AFXHTML/CHtmlEditView::GetStartDocument"] helpviewer_keywords: ["CHtmlEditView [MFC], CHtmlEditView", "CHtmlEditView [MFC], Create", "CHtmlEditView [MFC], GetDHtmlDocument", "CHtmlEditView [MFC], GetStartDocument"] -ms.assetid: 166c8ba8-3fb5-4dd7-a9ea-5bca662d00f6 --- # CHtmlEditView Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the WebBrowser editing platform within the context of MFC's document/view architecture. ## Syntax diff --git a/docs/mfc/reference/chtmlview-class.md b/docs/mfc/reference/chtmlview-class.md index d19b1de124d..1a173311fc6 100644 --- a/docs/mfc/reference/chtmlview-class.md +++ b/docs/mfc/reference/chtmlview-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CHtmlView [MFC], Create", "CHtmlView [MFC], CreateControl --- # `CHtmlView` class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the WebBrowser control within the context of MFC's document/view architecture. ## Syntax diff --git a/docs/mfc/reference/chttpconnection-class.md b/docs/mfc/reference/chttpconnection-class.md index 04a22df5849..f8d4f1d7f87 100644 --- a/docs/mfc/reference/chttpconnection-class.md +++ b/docs/mfc/reference/chttpconnection-class.md @@ -4,10 +4,12 @@ title: "CHttpConnection Class" ms.date: "03/27/2019" f1_keywords: ["CHttpConnection", "AFXINET/CHttpConnection", "AFXINET/CHttpConnection::CHttpConnection", "AFXINET/CHttpConnection::OpenRequest"] helpviewer_keywords: ["CHttpConnection [MFC], CHttpConnection", "CHttpConnection [MFC], OpenRequest"] -ms.assetid: a402b662-c445-4988-800d-c8278551babe --- # CHttpConnection Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Manages your connection to an HTTP server. ## Syntax diff --git a/docs/mfc/reference/chttpfile-class.md b/docs/mfc/reference/chttpfile-class.md index 63ab4b55b7b..e6fac4c2b68 100644 --- a/docs/mfc/reference/chttpfile-class.md +++ b/docs/mfc/reference/chttpfile-class.md @@ -4,10 +4,12 @@ title: "CHttpFile Class" ms.date: "11/04/2016" f1_keywords: ["CHttpFile", "AFXINET/CHttpFile", "AFXINET/CHttpFile::CHttpFile", "AFXINET/CHttpFile::AddRequestHeaders", "AFXINET/CHttpFile::EndRequest", "AFXINET/CHttpFile::GetFileURL", "AFXINET/CHttpFile::GetObject", "AFXINET/CHttpFile::GetVerb", "AFXINET/CHttpFile::QueryInfo", "AFXINET/CHttpFile::QueryInfoStatusCode", "AFXINET/CHttpFile::SendRequest", "AFXINET/CHttpFile::SendRequestEx"] helpviewer_keywords: ["CHttpFile [MFC], CHttpFile", "CHttpFile [MFC], AddRequestHeaders", "CHttpFile [MFC], EndRequest", "CHttpFile [MFC], GetFileURL", "CHttpFile [MFC], GetObject", "CHttpFile [MFC], GetVerb", "CHttpFile [MFC], QueryInfo", "CHttpFile [MFC], QueryInfoStatusCode", "CHttpFile [MFC], SendRequest", "CHttpFile [MFC], SendRequestEx"] -ms.assetid: 399e7c68-bbce-4374-8c55-206e9c7baac6 --- # CHttpFile Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality to request and read files on an HTTP server. ## Syntax diff --git a/docs/mfc/reference/chwndrendertarget-class.md b/docs/mfc/reference/chwndrendertarget-class.md index 540b28ca338..a55070e729a 100644 --- a/docs/mfc/reference/chwndrendertarget-class.md +++ b/docs/mfc/reference/chwndrendertarget-class.md @@ -4,10 +4,12 @@ title: "CHwndRenderTarget Class" ms.date: "11/04/2016" f1_keywords: ["CHwndRenderTarget", "AFXRENDERTARGET/CHwndRenderTarget", "AFXRENDERTARGET/CHwndRenderTarget::CHwndRenderTarget", "AFXRENDERTARGET/CHwndRenderTarget::Attach", "AFXRENDERTARGET/CHwndRenderTarget::CheckWindowState", "AFXRENDERTARGET/CHwndRenderTarget::Create", "AFXRENDERTARGET/CHwndRenderTarget::Detach", "AFXRENDERTARGET/CHwndRenderTarget::GetHwnd", "AFXRENDERTARGET/CHwndRenderTarget::GetHwndRenderTarget", "AFXRENDERTARGET/CHwndRenderTarget::ReCreate", "AFXRENDERTARGET/CHwndRenderTarget::Resize", "AFXRENDERTARGET/CHwndRenderTarget::m_pHwndRenderTarget"] helpviewer_keywords: ["CHwndRenderTarget [MFC], CHwndRenderTarget", "CHwndRenderTarget [MFC], Attach", "CHwndRenderTarget [MFC], CheckWindowState", "CHwndRenderTarget [MFC], Create", "CHwndRenderTarget [MFC], Detach", "CHwndRenderTarget [MFC], GetHwnd", "CHwndRenderTarget [MFC], GetHwndRenderTarget", "CHwndRenderTarget [MFC], ReCreate", "CHwndRenderTarget [MFC], Resize", "CHwndRenderTarget [MFC], m_pHwndRenderTarget"] -ms.assetid: aa65b69f-7202-46ea-af81-ef325da0b840 --- # CHwndRenderTarget Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for ID2D1HwndRenderTarget. ## Syntax diff --git a/docs/mfc/reference/cimagelist-class.md b/docs/mfc/reference/cimagelist-class.md index ca80bcc33ee..74324b18e4a 100644 --- a/docs/mfc/reference/cimagelist-class.md +++ b/docs/mfc/reference/cimagelist-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CImageList [MFC], CImageList", "CImageList [MFC], Add", " --- # `CImageList` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the Windows common image list control. ## Syntax diff --git a/docs/mfc/reference/cinstantaneoustransition-class.md b/docs/mfc/reference/cinstantaneoustransition-class.md index 3ae206b69ab..052761c2868 100644 --- a/docs/mfc/reference/cinstantaneoustransition-class.md +++ b/docs/mfc/reference/cinstantaneoustransition-class.md @@ -4,10 +4,12 @@ title: "CInstantaneousTransition Class" ms.date: "11/04/2016" f1_keywords: ["CInstantaneousTransition", "AFXANIMATIONCONTROLLER/CInstantaneousTransition", "AFXANIMATIONCONTROLLER/CInstantaneousTransition::CInstantaneousTransition", "AFXANIMATIONCONTROLLER/CInstantaneousTransition::Create", "AFXANIMATIONCONTROLLER/CInstantaneousTransition::m_dblFinalValue"] helpviewer_keywords: ["CInstantaneousTransition [MFC], CInstantaneousTransition", "CInstantaneousTransition [MFC], Create", "CInstantaneousTransition [MFC], m_dblFinalValue"] -ms.assetid: c3d5121f-2c6b-4221-9e57-10e082a31120 --- # CInstantaneousTransition Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Encapsulates an instantaneous transition. ## Syntax diff --git a/docs/mfc/reference/cinternetconnection-class.md b/docs/mfc/reference/cinternetconnection-class.md index 0673cfd4de8..bc22af6454b 100644 --- a/docs/mfc/reference/cinternetconnection-class.md +++ b/docs/mfc/reference/cinternetconnection-class.md @@ -4,10 +4,12 @@ title: "CInternetConnection Class" ms.date: "11/04/2016" f1_keywords: ["CInternetConnection", "AFXINET/CInternetConnection", "AFXINET/CInternetConnection::CInternetConnection", "AFXINET/CInternetConnection::GetContext", "AFXINET/CInternetConnection::GetServerName", "AFXINET/CInternetConnection::GetSession"] helpviewer_keywords: ["CInternetConnection [MFC], CInternetConnection", "CInternetConnection [MFC], GetContext", "CInternetConnection [MFC], GetServerName", "CInternetConnection [MFC], GetSession"] -ms.assetid: 62a5d1c3-8471-4e36-a064-48831829b2a7 --- # CInternetConnection Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Manages your connection to an Internet server. ## Syntax diff --git a/docs/mfc/reference/cinternetexception-class.md b/docs/mfc/reference/cinternetexception-class.md index 0af84f73031..8b6ea3e8409 100644 --- a/docs/mfc/reference/cinternetexception-class.md +++ b/docs/mfc/reference/cinternetexception-class.md @@ -4,10 +4,12 @@ title: "CInternetException Class" ms.date: "11/04/2016" f1_keywords: ["CInternetException", "AFXINET/CInternetException", "AFXINET/CInternetException::CInternetException", "AFXINET/CInternetException::m_dwContext", "AFXINET/CInternetException::m_dwError"] helpviewer_keywords: ["CInternetException [MFC], CInternetException", "CInternetException [MFC], m_dwContext", "CInternetException [MFC], m_dwError"] -ms.assetid: 44fb3cbe-523e-4754-8843-a77909990b14 --- # CInternetException Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents an exception condition related to an Internet operation. ## Syntax diff --git a/docs/mfc/reference/cinternetfile-class.md b/docs/mfc/reference/cinternetfile-class.md index 6e30d78c6bc..b8dc86a17a3 100644 --- a/docs/mfc/reference/cinternetfile-class.md +++ b/docs/mfc/reference/cinternetfile-class.md @@ -4,10 +4,12 @@ title: "CInternetFile Class" ms.date: "11/04/2016" f1_keywords: ["CInternetFile", "AFXINET/CInternetFile", "AFXINET/CInternetFile::CInternetFile", "AFXINET/CInternetFile::Abort", "AFXINET/CInternetFile::Close", "AFXINET/CInternetFile::Flush", "AFXINET/CInternetFile::GetLength", "AFXINET/CInternetFile::Read", "AFXINET/CInternetFile::ReadString", "AFXINET/CInternetFile::Seek", "AFXINET/CInternetFile::SetReadBufferSize", "AFXINET/CInternetFile::SetWriteBufferSize", "AFXINET/CInternetFile::Write", "AFXINET/CInternetFile::WriteString", "AFXINET/CInternetFile::m_hFile"] helpviewer_keywords: ["CInternetFile [MFC], CInternetFile", "CInternetFile [MFC], Abort", "CInternetFile [MFC], Close", "CInternetFile [MFC], Flush", "CInternetFile [MFC], GetLength", "CInternetFile [MFC], Read", "CInternetFile [MFC], ReadString", "CInternetFile [MFC], Seek", "CInternetFile [MFC], SetReadBufferSize", "CInternetFile [MFC], SetWriteBufferSize", "CInternetFile [MFC], Write", "CInternetFile [MFC], WriteString", "CInternetFile [MFC], m_hFile"] -ms.assetid: 96935681-ee71-4a8d-9783-5abc7b3e6f10 --- # CInternetFile Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Allows access to files on remote systems that use Internet protocols. ## Syntax diff --git a/docs/mfc/reference/cinternetsession-class.md b/docs/mfc/reference/cinternetsession-class.md index bc6087fc385..4ed84687949 100644 --- a/docs/mfc/reference/cinternetsession-class.md +++ b/docs/mfc/reference/cinternetsession-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CInternetSession [MFC], CInternetSession", "CInternetSess --- # `CInternetSession` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Creates and initializes a single or several simultaneous Internet sessions and, if necessary, describes your connection to a proxy server. ## Syntax diff --git a/docs/mfc/reference/cinterpolatorbase-class.md b/docs/mfc/reference/cinterpolatorbase-class.md index 3d8cced609b..93648302073 100644 --- a/docs/mfc/reference/cinterpolatorbase-class.md +++ b/docs/mfc/reference/cinterpolatorbase-class.md @@ -4,10 +4,12 @@ title: "CInterpolatorBase Class" ms.date: "11/04/2016" f1_keywords: ["CInterpolatorBase", "AFXANIMATIONCONTROLLER/CInterpolatorBase", "AFXANIMATIONCONTROLLER/CInterpolatorBase::CInterpolatorBase", "AFXANIMATIONCONTROLLER/CInterpolatorBase::CreateInstance", "AFXANIMATIONCONTROLLER/CInterpolatorBase::GetDependencies", "AFXANIMATIONCONTROLLER/CInterpolatorBase::GetDuration", "AFXANIMATIONCONTROLLER/CInterpolatorBase::GetFinalValue", "AFXANIMATIONCONTROLLER/CInterpolatorBase::InterpolateValue", "AFXANIMATIONCONTROLLER/CInterpolatorBase::InterpolateVelocity", "AFXANIMATIONCONTROLLER/CInterpolatorBase::SetCustomInterpolator", "AFXANIMATIONCONTROLLER/CInterpolatorBase::SetDuration", "AFXANIMATIONCONTROLLER/CInterpolatorBase::SetInitialValueAndVelocity"] helpviewer_keywords: ["CInterpolatorBase [MFC], CInterpolatorBase", "CInterpolatorBase [MFC], CreateInstance", "CInterpolatorBase [MFC], GetDependencies", "CInterpolatorBase [MFC], GetDuration", "CInterpolatorBase [MFC], GetFinalValue", "CInterpolatorBase [MFC], InterpolateValue", "CInterpolatorBase [MFC], InterpolateVelocity", "CInterpolatorBase [MFC], SetCustomInterpolator", "CInterpolatorBase [MFC], SetDuration", "CInterpolatorBase [MFC], SetInitialValueAndVelocity"] -ms.assetid: bbc3dce7-8398-47f9-b97e-e4fd2d737232 --- # CInterpolatorBase Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements a callback, which is called by the Animation API when it has to calculate a new value of an animation variable. ## Syntax diff --git a/docs/mfc/reference/cinvalidargexception-class.md b/docs/mfc/reference/cinvalidargexception-class.md index 938e2630fbe..3efef73e2d8 100644 --- a/docs/mfc/reference/cinvalidargexception-class.md +++ b/docs/mfc/reference/cinvalidargexception-class.md @@ -4,10 +4,12 @@ title: "CInvalidArgException Class" ms.date: "11/04/2016" f1_keywords: ["CInvalidArgException", "AFX/CInvalidArgException", "AFX/CInvalidArgException::CInvalidArgException"] helpviewer_keywords: ["CInvalidArgException [MFC], CInvalidArgException"] -ms.assetid: e43d7c67-1157-47f8-817a-804083e8186e --- # CInvalidArgException Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This class represents an invalid argument exception condition. ## Syntax diff --git a/docs/mfc/reference/cipaddressctrl-class.md b/docs/mfc/reference/cipaddressctrl-class.md index 859832b3e2e..6e0287d3989 100644 --- a/docs/mfc/reference/cipaddressctrl-class.md +++ b/docs/mfc/reference/cipaddressctrl-class.md @@ -4,10 +4,12 @@ title: "CIPAddressCtrl Class" ms.date: "11/04/2016" f1_keywords: ["CIPAddressCtrl", "AFXCMN/CIPAddressCtrl", "AFXCMN/CIPAddressCtrl::CIPAddressCtrl", "AFXCMN/CIPAddressCtrl::ClearAddress", "AFXCMN/CIPAddressCtrl::Create", "AFXCMN/CIPAddressCtrl::CreateEx", "AFXCMN/CIPAddressCtrl::GetAddress", "AFXCMN/CIPAddressCtrl::IsBlank", "AFXCMN/CIPAddressCtrl::SetAddress", "AFXCMN/CIPAddressCtrl::SetFieldFocus", "AFXCMN/CIPAddressCtrl::SetFieldRange"] helpviewer_keywords: ["CIPAddressCtrl [MFC], CIPAddressCtrl", "CIPAddressCtrl [MFC], ClearAddress", "CIPAddressCtrl [MFC], Create", "CIPAddressCtrl [MFC], CreateEx", "CIPAddressCtrl [MFC], GetAddress", "CIPAddressCtrl [MFC], IsBlank", "CIPAddressCtrl [MFC], SetAddress", "CIPAddressCtrl [MFC], SetFieldFocus", "CIPAddressCtrl [MFC], SetFieldRange"] -ms.assetid: 9764d2f4-cb14-4ba8-b799-7f57a55a47c6 --- # CIPAddressCtrl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the functionality of the Windows common IP Address control. ## Syntax From 19fe37c208497ebf790c1d3389fa6229538f3004 Mon Sep 17 00:00:00 2001 From: paulth1 <42621139+paulth1@users.noreply.github.com> Date: Fri, 20 Feb 2026 16:53:41 -0800 Subject: [PATCH 313/619] edit pass: redistributing-microsoft-c++-files --- ...uting-components-by-using-merge-modules.md | 36 ++++++++++------- .../windows/redistributing-the-mfc-library.md | 37 +++++++++-------- ...istributing-visual-cpp-activex-controls.md | 26 ++++++------ .../redistributing-visual-cpp-files.md | 40 ++++++++++++------- 4 files changed, 79 insertions(+), 60 deletions(-) diff --git a/docs/windows/redistributing-components-by-using-merge-modules.md b/docs/windows/redistributing-components-by-using-merge-modules.md index ac04fbfd8d6..e338d1c8b25 100644 --- a/docs/windows/redistributing-components-by-using-merge-modules.md +++ b/docs/windows/redistributing-components-by-using-merge-modules.md @@ -1,41 +1,47 @@ --- -description: "Learn more about: Redistributing Components By Using Merge Modules" -title: "Redistributing Components By Using Merge Modules" +description: "Learn More About: Redistribute Components by Using Merge Modules" +title: Learn more about redistributing components by using merge modules. ms.date: 06/08/2022 helpviewer_keywords: ["merge modules, using", "redistributing applications, using merge modules"] ms.assetid: 93b84211-bf9b-4a78-9f22-474ac2ef7840 ms.topic: concept-article --- -# Redistributing components by using merge modules +# Redistribute components by using merge modules > [!IMPORTANT] -> In Visual Studio 2019 and later, merge modules for Visual C++ Redistributable files are deprecated. We don't recommend you use them for application deployment. Redistributables installed using Merge modules can't be updated by Windows Update because the detection mechanism depends on knowing details of the installing package. The Visual C++ Redistributable packages are known for each release, but packages that use MSMs are user generated. Microsoft can't know the details of user-generated packages. Instead, we recommend you use central deployment of the Visual C++ Redistributable package. Central deployment installs the Redistributable files in the Windows *`%SYSTEMROOT%\system32\`* folder for use by all applications and users. Central deployment by a Redistributable package makes it possible for Microsoft to service runtime library files independently. And, an uninstall of your app can't break other applications that also use central deployment. When you use a Redistributable package for central deployment, you aren't responsible for tracking and updating the runtime libraries as part of your application maintenance: The Microsoft Update service updates these libraries for you. Otherwise, an update to the runtime library files requires you to update and redeploy your *`.msi`* installer. Your app could be vulnerable to bugs or security issues until you do. +> In Visual Studio 2019 and later, merge modules for Visual C++ Redistributable files are deprecated. We don't recommend that you use them for application deployment. Redistributables installed by using merge modules can't be updated by Windows Update because the detection mechanism depends on knowing details of the installing package. +> +> The Visual C++ Redistributable packages are known for each release, but packages that use MSMs are user generated. Microsoft can't know the details of user-generated packages. Instead, we recommend that you use central deployment of the Visual C++ Redistributable package. Central deployment installs the Redistributable files in the Windows *`%SYSTEMROOT%\system32\`* folder for use by all applications and users. Central deployment by a Redistributable package makes it possible for Microsoft to service runtime library files independently. An uninstall of your app can't break other applications that also use central deployment. +> +> When you use a Redistributable package for central deployment, you aren't responsible for tracking and updating the runtime libraries as part of your application maintenance. The Microsoft Update service updates these libraries for you. Otherwise, an update to the runtime library files requires you to update and redeploy your *`.msi`* installer. Your app could be vulnerable to bugs or security issues until you do. -Visual Studio includes [merge modules](/windows/win32/Msi/about-merge-modules) (*`.msm`* files) for each Visual C++ component that's licensed for redistribution with an application. There are separate versions of the merge modules for each target platform. When a merge module is compiled into a Windows Installer setup file, it enables the deployment of Visual C++ Redistributable files to that specific platform. You can't include merge modules for different versions of the same DLL in one installer. In your installer setup file, specify that the merge modules are prerequisites for your application. +Visual Studio includes [merge modules](/windows/win32/Msi/about-merge-modules) (*`.msm`* files) for each Visual C++ component that's licensed for redistribution with an application. There are separate versions of the merge modules for each target platform. When a merge module is compiled into a Windows Installer setup file, it enables the deployment of Visual C++ Redistributable files to that specific platform. You can't include merge modules for different versions of the same dynamic link library (DLL) in one installer. In your installer setup file, specify that the merge modules are prerequisites for your application. -You can use merge modules for either [central deployment](deployment-in-visual-cpp.md#central-deployment) or [local deployment](deployment-in-visual-cpp.md#local-deployment). Users can't install centrally deployed files unless they have administrator rights. Local deployment may allow a non-administrator to install and run your app, but at the cost of independent serviceability. +You can use merge modules for either [central deployment](deployment-in-visual-cpp.md#central-deployment) or [local deployment](deployment-in-visual-cpp.md#local-deployment). Users can't install centrally deployed files unless they have administrator rights. Local deployment might allow a non-administrator to install and run your app, but at the cost of independent serviceability. The installation service reports an error if you attempt central deployment of older merge modules over newer existing libraries. You should write your installer setup to handle this failure gracefully and not display an error message. Your code can still deploy and run successfully despite this failure. For more information, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). -If you deploy your code only as an *`.msi`* installer, we recommend you don't include the merge modules in the installer. Instead, report a failure to the user when the required Redistributable libraries aren't found. In the failure dialog, include instructions on how to find and install the latest Redistributable package. For more information and links to Redistributable packages, see [The latest supported Visual C++ downloads](latest-supported-vc-redist.md). +If you deploy your code only as an *`.msi`* installer, we recommend that you don't include the merge modules in the installer. Instead, report a failure to the user when the required Redistributable libraries aren't found. In the failure dialog, include instructions on how to find and install the latest Redistributable package. For more information and links to Redistributable packages, see [the latest supported Visual C++ downloads](latest-supported-vc-redist.md). -The latest Redistributable packages and merge modules are compatible with code built using Visual Studio 2015 and later. Code built by versions of Visual Studio before 2015 require a separate Redistributable package. +The latest Redistributable packages and merge modules are compatible with code built by using Visual Studio 2015 and later. Code built by versions of Visual Studio before 2015 require a separate Redistributable package. ## When to use merge modules Merge modules are only appropriate in limited circumstances: -- You can't install or require a separate Redistributable package for policy reasons, -- Your code requires a specific, bug-compatible version of the libraries, -- Your code only targets one platform, and you don't have dependencies on more than one version of the DLLs, -- You intend to service your deployed code regularly, so the libraries remain up to date. +- You can't install or require a separate Redistributable package for policy reasons. +- Your code requires a specific, bug-compatible version of the libraries. +- Your code targets only one platform, and you don't have dependencies on more than one version of the DLLs. +- You intend to service your deployed code regularly so that the libraries remain up to date. When you use merge modules, you must track and regularly service your application with library updates. Otherwise, you eventually force your clients to choose between running your code or remaining secure. ## Where to find merge module files -In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named **C++ \ Redistributable MSMs** in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When installed in Visual Studio 2022, you'll find the Visual C++ Redistributable merge modules in *`%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`*. In the latest version of Visual Studio 2019, the merge modules are in *`%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`*. In both Visual Studio 2019 and Visual Studio 2017, they're also found in *`%VCToolsRedistDir%MergeModules`*. In Visual Studio 2015, they're found in *`Program Files [(x86)]\Common Files\Merge Modules`*. For more information and a link to a list of Redistributable merge modules, see [Redistributing Visual C++ files](redistributing-visual-cpp-files.md). +In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named C++ \ Redistributable MSMs in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When installed in Visual Studio 2022, you can find the Visual C++ Redistributable merge modules in *`%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`*. -## See also +In the latest version of Visual Studio 2019, the merge modules are in *`%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`*. In both Visual Studio 2019 and Visual Studio 2017, they're also found in *`%VCToolsRedistDir%MergeModules`*. In Visual Studio 2015, they're found in *`Program Files [(x86)]\Common Files\Merge Modules`*. For more information and a link to a list of Redistributable merge modules, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). -[Redistributing Visual C++ files](redistributing-visual-cpp-files.md) +## Related content + +- [Redistribute Visual C++ files](redistributing-visual-cpp-files.md) diff --git a/docs/windows/redistributing-the-mfc-library.md b/docs/windows/redistributing-the-mfc-library.md index c01f4c38d38..512a0ae3a0a 100644 --- a/docs/windows/redistributing-the-mfc-library.md +++ b/docs/windows/redistributing-the-mfc-library.md @@ -1,44 +1,49 @@ --- -description: "Learn more about: Redistributing the MFC Library" -title: "Redistributing the MFC Library" +description: "Learn More About: Redistribute the MFC Library" +title: Learn more about redistributing the MFC Library. ms.date: "11/04/2016" helpviewer_keywords: ["MFC, redistributing", "redistributing MFC library"] ms.assetid: 72714ce1-385e-4c1c-afa5-96b03e873866 ms.topic: concept-article --- -# Redistributing the MFC Library -If you dynamically link your application to the MFC library, you must redistribute the matching MFC DLL. For example, if your MFC app is built by using the version of MFC that ships with Visual Studio 2015, you must redistribute mfc140.dll or mfc140u.dll, depending on whether your app is compiled for narrow characters or Unicode support. +# Redistribute the MFC Library + +If you dynamically link your application to the Microsoft Foundation Class (MFC) library, you must redistribute the matching MFC dynamic link library (DLL). For example, if your MFC app is built by using the version of MFC that ships with Visual Studio 2015, you must redistribute mfc140.dll or mfc140u.dll, depending on whether your app is compiled for narrow characters or Unicode support. > [!NOTE] > The mfc140.dll files were omitted from the redistributable files directory in Visual Studio 2015 RTM. You can use the versions installed by Visual Studio 2015 in the Windows\system32 and Windows\syswow64 directories instead. -Because all MFC DLLs use the shared version of the C runtime library (CRT), You may also need to redistribute the CRT. The version of MFC that ships with Visual Studio 2015 uses the universal CRT library, which is distributed as part of Windows 10 and Windows 11. To run an MFC application built by using Visual Studio 2015 on earlier versions of Windows, you must redistribute the Universal CRT. For information on how to redistribute the universal CRT as an operating system component or by using local deployment, see [Introducing the Universal CRT](https://devblogs.microsoft.com/cppblog/introducing-the-universal-crt/). To download the universal CRT for central deployment on supported versions of Windows, see [Windows 10 Universal C Runtime](https://www.microsoft.com/download/details.aspx?id=48234). Redistributable architecture-specific versions of ucrtbase.dll for local deployment are found in the Windows SDK. By default, Visual Studio installs these in C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\ in an architecture-specific sub-directory. +Because all MFC DLLs use the shared version of the C runtime library (CRT), you might also need to redistribute the CRT. The version of MFC that ships with Visual Studio 2015 uses the universal CRT library, which is distributed as part of Windows 10 and Windows 11. To run an MFC application built by using Visual Studio 2015 on earlier versions of Windows, you must redistribute the Universal CRT. + +For information on how to redistribute the universal CRT as an operating system component or by using local deployment, see [Introducing the Universal CRT](https://devblogs.microsoft.com/cppblog/introducing-the-universal-crt/). To download the universal CRT for central deployment on supported versions of Windows, see [Windows 10 Universal C Runtime](https://www.microsoft.com/download/details.aspx?id=48234). + +You can find Redistributable architecture-specific versions of ucrtbase.dll for local deployment in the Windows SDK. By default, Visual Studio installs these versions in C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\ in an architecture-specific subdirectory. If your app is built by using an earlier version of the MFC library, you must redistribute the matching CRT DLL from the redistributable files directory. For example, if your MFC application is built by using the Visual Studio 2013 (vc120) toolset, you must redistribute the msvcr120.dll. You also have to redistribute the matching mfc``u.dll or mfc``.dll. -If you statically link your application to MFC (that is, if you specify **Use MFC in a Static Library** on the **General** tab in the **Property Pages** dialog box), you do not have to redistribute an MFC DLL. However, although static linking may work for testing and internal deployment of applications, we recommend that you do not use it to redistribute MFC. For more information about the recommended strategies for deploying Visual C++ libraries, see [Choosing a Deployment Method](choosing-a-deployment-method.md). +If you statically link your application to MFC (that is, if you specify **Use MFC in a Static Library** on the **General** tab in the **Property Pages** dialog), you don't have to redistribute an MFC DLL. Although static linking might work for testing and internal deployment of applications, we recommend that you don't use it to redistribute MFC. For more information about the recommended strategies for deploying Visual C++ libraries, see [Choosing a deployment method](choosing-a-deployment-method.md). If your application uses the MFC classes that implement the WebBrowser control (for example, [CHtmlView Class](../mfc/reference/chtmlview-class.md) or [CHtmlEditView Class](../mfc/reference/chtmleditview-class.md)), we recommend that you also install the most current version of Microsoft Internet Explorer so that the target computer will have the most current common control files. (At a minimum, Internet Explorer 4.0 is required.) Information about how to install Internet Explorer components is available in "Article 185375: How To Create a Single EXE Install of Internet Explorer" on the Microsoft Support website. -If your application uses the MFC database classes (for example, [CRecordset Class](../mfc/reference/crecordset-class.md) and [CRecordView Class](../mfc/reference/crecordview-class.md)), you must redistribute ODBC and any ODBC drivers that your application uses. +If your application uses the MFC database classes (for example, [CRecordset Class](../mfc/reference/crecordset-class.md) and [CRecordView Class](../mfc/reference/crecordview-class.md)), you must redistribute Open Database Connectivity (ODBC) and any ODBC drivers that your application uses. -If your MFC application uses Windows Forms controls, you must redistribute mfcmifc80.dll with your application. This DLL is a strong-name-signed .NET assembly that can be redistributed with an application in its application local folder or by deploying it to the Global Assembly Cache (GAC) by using the [Gacutil.exe (Global Assembly Cache Tool)](/dotnet/framework/tools/gacutil-exe-gac-tool). +If your MFC application uses Windows Forms controls, you must redistribute mfcmifc80.dll with your application. This DLL is a strong-name-signed .NET assembly. You can redistribute it with an application in its application local folder. You can also deploy it to the Global Assembly Cache (GAC) by using the [Gacutil.exe (Global Assembly Cache Tool)](/dotnet/framework/tools/gacutil-exe-gac-tool). -If you redistribute an MFC DLL, make sure to redistribute the retail version and not the debug version. Debug versions of the DLLs are not redistributable. The names of debug versions of the MFC DLLs end with a "d", for example, Mfc140d.dll. +If you redistribute an MFC DLL, make sure to redistribute the retail version and not the debug version. Debug versions of the DLLs aren't redistributable. The names of debug versions of the MFC DLLs end with a "d," for example, Mfc140d.dll. -You can redistribute MFC by using either VCRedist_*architecture*.exe, merge modules that are installed with Visual Studio, or by deploying the MFC DLL to the same folder as your application. For more information about how to redistribute MFC, see [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md). +You can redistribute MFC by using either VCRedist_*architecture*.exe or merge modules that are installed with Visual Studio. You can also deploy the MFC DLL to the same folder as your application. For more information about how to redistribute MFC, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). -## Installation of Localized MFC Components +## Installation of localized MFC components If you decide to localize your application by installing an MFC localization DLL, you must use the redistributable merge files (.msm). For example, if you want to localize your application on an x86 computer, you must merge Microsoft_VC``_MFCLOC_x86.msm into the installation package for an x86 computer. -The redistributable .msm files contain the DLLs that are used for localization. There is one DLL for each supported language. The installation process installs these DLLs in the %windir%\system32\ folder on the target computer. +The redistributable .msm files contain the DLLs that are used for localization. There's one DLL for each supported language. The installation process installs these DLLs in the %windir%\system32\ folder on the target computer. -For more information about how to localize MFC applications, see [TN057: Localization of MFC Components](../mfc/tn057-localization-of-mfc-components.md). +For more information about how to localize MFC applications, see [TN057: Localization of MFC components](../mfc/tn057-localization-of-mfc-components.md). -You can redistribute MFC localization DLLs by deploying the MFC DLL in your application local folder. For more information about how to redistribute Visual C++ libraries, see [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md). +You can redistribute MFC localization DLLs by deploying the MFC DLL in your application local folder. For more information about how to redistribute Visual C++ libraries, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). -## See also +## Related content -[Redistributing Visual C++ Files](redistributing-visual-cpp-files.md) +- [Redistribute Visual C++ files](redistributing-visual-cpp-files.md) diff --git a/docs/windows/redistributing-visual-cpp-activex-controls.md b/docs/windows/redistributing-visual-cpp-activex-controls.md index f28244442a2..882e4430902 100644 --- a/docs/windows/redistributing-visual-cpp-activex-controls.md +++ b/docs/windows/redistributing-visual-cpp-activex-controls.md @@ -1,38 +1,36 @@ --- -description: "Learn more about: Redistributing Visual C++ ActiveX Controls" -title: "Redistributing Visual C++ ActiveX Controls" +description: "Learn More About: Redistribute Visual C++ ActiveX Controls" +title: Learn more about redistributing Visual C++ ActiveX controls. ms.date: "11/04/2016" helpviewer_keywords: ["controls [C++], redistributing", "controls [C++], distributing"] ms.assetid: eefbb7e4-d28c-4c35-98bf-d9540cfaae83 ms.topic: concept-article --- -# Redistributing Visual C++ ActiveX Controls +# Redistribute Visual C++ ActiveX controls -Visual C++ 6.0 supplies ActiveX controls you can use in applications that you then redistribute. These controls are no longer included in Visual C++. Per the licensing agreements for Visual C++ 6.0, you can redistribute these controls with applications developed in Visual C++. +Visual C++ 6.0 supplies ActiveX controls that you can use in applications that you then redistribute. These controls are no longer included in Visual C++. According to the licensing agreements for Visual C++ 6.0, you can redistribute these controls with applications developed in Visual C++. > [!NOTE] > Visual C++ 6.0 is no longer supported by Microsoft. For a list of the redistributable Visual C++ 6.0 ActiveX controls, see Common\Redist\Redist.txt on Disc 1 of the Visual C++ 6.0 product CD. -When distributing applications, you must install and register the `.ocx` for the ActiveX control (using Regsvr32.exe). In addition, you should make sure the target computer has current versions of the following system files (an asterisk indicates the file needs to be registered): +When you distribute applications, you must install and register the `.ocx` for the ActiveX control (by using Regsvr32.exe). You should also make sure that the target computer has current versions of the following system files (an asterisk indicates that the file must be registered): - Asycfilt.dll - - Comcat.dll \* - - Oleaut32.dll \* - - Olepro32.dll \* - - Stdole2.tlb -If these DLLs are not available on the target system, you need to get them updated using the prescribed mechanism for updating the corresponding operating system. +If these DLLs aren't available on the target system, you must get them updated by using the prescribed mechanism for updating the corresponding operating system. + +When you use an ActiveX control that connects to a database, you also need to replicate the data source name on the target computer. You can do this task programmatically with functions such as `ConfigDSN`. -When using an ActiveX control that connects to a database, you also need to replicate the data source name on the target computer. You can do this programmatically with functions such as `ConfigDSN`. +Some redistributable ActiveX controls have more dependencies. For each `.ocx` file in the Os\System folder on the Visual C++ 6.0 product CD, there's also a `.dep` file. For each `.ocx` file that you want to redistribute, look for one or more USES entries in the corresponding `.dep` file. -Some redistributable ActiveX controls have additional dependencies. For each `.ocx` file in the Os\System folder on the Visual C++ 6.0 product CD, there is also a `.dep` file. For each `.ocx` file that you want to redistribute, look for one or more USES entries in the corresponding `.dep` file. If a file is listed, you must ensure that the file is on the target computer. Any DLLs directly supporting an `.ocx` file need to be registered. (For Regsvr32.exe to succeed, the target computer must first contain all of the DLLs the control statically loads.) Furthermore, if a DLL that is listed as a dependency also has a `.dep` file in the Os\System folder on the Visual C++ 6.0 CD, you must also investigate that `.dep` file for USES entries. +If a file is listed, you must ensure that the file is on the target computer. Any DLLs directly supporting an `.ocx` file must be registered. (For `Regsvr32.exe` to succeed, the target computer must first contain all the DLLs that the control statically loads.) Furthermore, if a DLL that's listed as a dependency also has a `.dep` file in the Os\System folder on the Visual C++ 6.0 CD, you must also investigate that `.dep` file for USES entries. -## See also +## Related content -[Redistributing Visual C++ Files](redistributing-visual-cpp-files.md) +- [Redistribute Visual C++ files](redistributing-visual-cpp-files.md) diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index f96f06bd799..0a1992a3719 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -1,11 +1,11 @@ --- -title: "Redistributing Visual C++ Files" -description: "Visual Studio includes Redistributable libraries and components you can deploy with your app." +title: Redistribute Visual C++ Files +description: Visual Studio includes Redistributable libraries and components that you can deploy with your app. ms.date: 01/15/2025 helpviewer_keywords: ["application deployment [C++], file redistributing", "redistributing applications [C++]", "deploying applications [C++], file redistributing", "file redistribution [C++]", "redistributing applications [C++], about redistributing applications"] ms.topic: concept-article --- -# Redistributing Visual C++ Files +# Redistribute Visual C++ files > [!NOTE] > Are you here because you're looking for a download of one of the Visual C++ Runtime files? Go to the [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) page. @@ -14,17 +14,17 @@ ms.topic: concept-article Distribution of the Visual C++ Runtime Redistributable package, merge modules, and individual binaries is limited to licensed Visual Studio users and is subject to such License Terms. -When you deploy an application, you must also deploy the files that are required to support it. If any of these files are provided by Microsoft, check whether you're permitted to redistribute them. You'll find a link to the Visual Studio license terms in the IDE. Use the License terms link in the About Microsoft Visual Studio dialog box. Or, download the relevant EULAs and licenses from the Visual Studio [License Directory](https://visualstudio.microsoft.com/license-terms/). +When you deploy an application, you must also deploy the files that are required to support it. If any of these files are provided by Microsoft, check whether you're permitted to redistribute them. You can find a link to the Visual Studio license terms in the IDE. Use the License Terms link in the About Microsoft Visual Studio dialog. You can also download the relevant Microsoft Software Licence Terms and licenses from the Visual Studio [License Directory](https://visualstudio.microsoft.com/license-terms/). ::: moniker range="msvc-170" -To view the "REDIST list" that's referenced in the "Distributable Code" section of the Visual Studio 2022 Microsoft Software License Terms, see [Distributable code files for Microsoft Visual Studio 2022](/visualstudio/releases/2022/redistribution#-distributable-code-files-for-visual-studio-2022) +To view the "REDIST list" that's referenced in the "Distributable Code" section of the Visual Studio 2022 Microsoft Software License Terms, see [Distributable code files for Microsoft Visual Studio 2022](/visualstudio/releases/2022/redistribution#-distributable-code-files-for-visual-studio-2022). ::: moniker-end ::: moniker range="msvc-160" -To view the "REDIST list" that's referenced in the "Distributable Code" section of the Visual Studio 2019 Microsoft Software License Terms, see [Distributable Code Files for Microsoft Visual Studio 2019](/visualstudio/releases/2019/redistribution#-distributable-code-files-for-visual-studio-2019) +To view the "REDIST list" that's referenced in the "Distributable Code" section of the Visual Studio 2019 Microsoft Software License Terms, see [Distributable Code Files for Microsoft Visual Studio 2019](/visualstudio/releases/2019/redistribution#-distributable-code-files-for-visual-studio-2019). ::: moniker-end @@ -46,19 +46,27 @@ For more information about redistributable files, see [Determining which DLLs to To deploy redistributable files, you can use the redistributable packages installed by Visual Studio. In versions of Visual Studio since 2017, these files are named *`vc_redist.arm64.exe`*, *`vc_redist.x64.exe`*, and *`vc_redist.x86.exe`*. In Visual Studio 2015, 2017, and 2019, they're also available under the names *`vcredist_x86.exe`*, *`vcredist_x64.exe`*, and (2015 only) *`vcredist_arm.exe`*. -The easiest way to locate the redistributable files is by using environment variables set in a developer command prompt. In Visual Studio 2022, the redistributable files are in the *`%VCINSTALLDIR%Redist\MSVC\v143`* folder. In the latest version of Visual Studio 2019, you'll find the redistributable files in the *`%VCINSTALLDIR%Redist\MSVC\v142`* folder. In both Visual Studio 2017 and Visual Studio 2019, they're also found in *`%VCToolsRedistDir%`*. In Visual Studio 2015, these files can be found in *`%VCINSTALLDIR%redist\`*, where *``* is the locale of the redistributable packages. +The easiest way to locate the redistributable files is by using environment variables set in a developer command prompt. In Visual Studio 2022, the redistributable files are in the *`%VCINSTALLDIR%Redist\MSVC\v143`* folder. In the latest version of Visual Studio 2019, you can find the redistributable files in the *`%VCINSTALLDIR%Redist\MSVC\v142`* folder. In both Visual Studio 2017 and Visual Studio 2019, they're also found in *`%VCToolsRedistDir%`*. In Visual Studio 2015, you can find these files in *`%VCINSTALLDIR%redist\`*, where *``* is the locale of the redistributable packages. -In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named **C++ \ Redistributable MSMs** in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When installed in Visual Studio 2022, you'll find the redistributable merge modules in *`%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`*. In the latest version of Visual Studio 2019, the redistributable merge modules are in *`%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`*. In both Visual Studio 2019 and Visual Studio 2017, they're also found in *`%VCToolsRedistDir%MergeModules`*. In Visual Studio 2015, they're found in *`Program Files [(x86)]\Common Files\Merge Modules`*. +In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named C++ \ Redistributable MSMs in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When installed in Visual Studio 2022, you can find the redistributable merge modules in *`%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`*. In the latest version of Visual Studio 2019, the redistributable merge modules are in *`%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`*. In both Visual Studio 2019 and Visual Studio 2017, they're also found in *`%VCToolsRedistDir%MergeModules`*. In Visual Studio 2015, they're found in *`Program Files [(x86)]\Common Files\Merge Modules`*. ## Install the redistributable packages -The Visual C++ Redistributable Packages install and register all Visual C++ libraries. If you use one, run it as a prerequisite on the target system before you install your application. We recommend that you use these packages for your deployments because they enable automatic updating of the Visual C++ libraries. For an example about how to use these packages, see [Walkthrough: Deploying a Visual C++ Application By Using the Visual C++ Redistributable Package](deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md). +The Visual C++ Redistributable Packages install and register all Visual C++ libraries. If you use one, run it as a prerequisite on the target system before you install your application. We recommend that you use these packages for your deployments because they enable automatic updating of the Visual C++ libraries. For an example about how to use these packages, see [Walkthrough: Deploying a Visual C++ Application by Using the Visual C++ Redistributable Package](deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md). -Each Visual C++ Redistributable package checks for the existence of a more recent version on the machine. If a more recent version is found, the package won't get installed. In Visual Studio 2015 or later, Redistributable packages display an error message stating that setup failed. If a package is run by using the **`/quiet`** flag, no error message is displayed. In either case, an error is logged by the Microsoft installer, and an error result is returned to the caller. In Visual Studio 2015 and later, you can avoid this error by checking the registry to find out if a more recent version is installed. The current installed version number is stored in the **`HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\{x86|x64|arm64}`** key. The version number is 14.0 for Visual Studio 2015, 2017, 2019, and 2022 because the latest Redistributable is binary compatible with previous versions back to 2015. The key is `arm64`, `x86`, or `x64` depending on the installed vcredist versions for the platform. (You need to check under the `Wow6432Node` subkey only if you're using Regedit to view the version of the installed x86 package on an x64 platform.) The version number is stored in the `REG_SZ` string value **`Version`** and also in the set of **`Major`**, **`Minor`**, **`Bld`**, and **`Rbld`** `REG_DWORD` values. To avoid an error at install time, you must skip installation of the Redistributable package if the currently installed version is more recent. +Each Visual C++ Redistributable package checks for the existence of a more recent version on the machine. If a more recent version is found, the package won't get installed. In Visual Studio 2015 or later, Redistributable packages display an error message stating that setup failed. If a package uses the `/quiet` flag to run, no error message is displayed. In either case, an error is logged by the Microsoft installer, and an error result is returned to the caller. + +In Visual Studio 2015 and later, you can avoid this error by checking the registry to find out if a more recent version is installed. The current installed version number is stored in the `HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\{x86|x64|arm64}` key. + +The version number is 14.0 for Visual Studio 2015, 2017, 2019, and 2022 because the latest Redistributable is binary compatible with previous versions back to 2015. The key is `arm64`, `x86`, or `x64` depending on the installed vcredist versions for the platform. (You need to check under the `Wow6432Node` subkey only if you use Regedit to view the version of the installed x86 package on an x64 platform.) + +The version number is stored in the `REG_SZ` string value `Version` and also in the set of `Major`, `Minor`, `Bld`, and `Rbld` `REG_DWORD` values. To avoid an error at install time, you must skip installation of the Redistributable package if the currently installed version is more recent. ### Command-line options for the Redistributable packages -The Visual C++ Redistributable supports several command-line options. The `/?`, `/h`, or `/help` options display a pop-up dialog that lists the available options. You may specify `/install` to install, `/repair` to repair, or `/uninstall` to uninstall the Redistributable. The `/layout` option copies the complete contents of the Redistributable in the current directory. By default, the Redistributable installs its contents and prompts the user for information and whether to restart after installation. You can specify the `/passive` option, which displays progress, but doesn't otherwise require user interaction. You can also specify a `/quiet` option, which doesn't display any UI or require any user interaction. The `/norestart` option suppresses any attempts to restart. By default, a log file is created in *`%TEMP%`*. You can use `/log filename.txt` to log to a specific file. +The Visual C++ Redistributable supports several command-line options. The `/?`, `/h`, or `/help` options display a dialog that lists the available options. You can specify `/install` to install, `/repair` to repair, or `/uninstall` to uninstall the Redistributable. The `/layout` option copies the complete contents of the Redistributable in the current directory. + +By default, the Redistributable installs its contents and prompts the user for information and whether to restart after installation. You can specify the `/passive` option, which displays progress but doesn't otherwise require user interaction. You can also specify a `/quiet` option, which doesn't display any UI or require any user interaction. The `/norestart` option suppresses any attempts to restart. By default, a log file is created in *`%TEMP%`*. You can use `/log filename.txt` to log to a specific file. This example command installs the x64 Redistributable. It shows installation progress, but doesn't require user interaction or a restart: @@ -69,17 +77,19 @@ vc_redist.x64.exe /install /passive /norestart ## Install the redistributable merge modules > [!IMPORTANT] -> Merge modules (*`.msm`* files) for Visual C++ Redistributable files are deprecated. We don't recommend you use them for application deployment. Instead, we recommend central deployment of the Visual C++ Redistributable package. Central deployment by a Redistributable package makes it possible for Microsoft to service runtime library files independently. And, an uninstall of your app can't affect other applications that also use central deployment. When you use a Redistributable package for central deployment, you aren't responsible for tracking and maintaining the runtime libraries. Otherwise, an update to the runtime library files requires you to update and redeploy your *`.msi`* installer. Your app could be vulnerable to bugs or security issues until you do. +> Merge modules (*`.msm`* files) for Visual C++ Redistributable files are deprecated. We don't recommend that you use them for application deployment. Instead, we recommend central deployment of the Visual C++ Redistributable package. Central deployment by a Redistributable package makes it possible for Microsoft to service runtime library files independently. An uninstall of your app can't affect other applications that also use central deployment. +> +> When you use a Redistributable package for central deployment, you aren't responsible for tracking and maintaining the runtime libraries. Otherwise, an update to the runtime library files requires you to update and redeploy your *`.msi`* installer. Your app could be vulnerable to bugs or security issues until you do. -Redistributable merge modules must be included in the Windows Installer package (or similar installation package) that you use to deploy your application. For more information, see [Redistributing by using merge modules](redistributing-components-by-using-merge-modules.md). For an example see [Walkthrough: Deploying a Visual C++ application by using a setup project](walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md). +Redistributable merge modules must be included in the Windows Installer package (or similar installation package) that you use to deploy your application. For more information, see [Redistributing by using merge modules](redistributing-components-by-using-merge-modules.md). For an example, see [Walkthrough: Deploying a Visual C++ application by using a setup project](walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md). ## Install individual redistributable files It's also possible to directly install the Redistributable DLLs in the *application local folder*. The application local folder is the folder that contains your executable application file. For servicing reasons, we don't recommend you use this installation location. -## Potential run-time errors +## Potential runtime errors -If Windows can't find one of the Redistributable library DLLs required by your application, it may display a message similar to: "This application has failed to start because *library*.dll was not found. Reinstalling the application may fix this problem." +If Windows can't find one of the Redistributable library DLLs required by your application, it might display a message similar to: "This application has failed to start because *library*.dll was not found. Reinstalling the application may fix this problem." To resolve this kind of error, make sure your application installer builds correctly. Verify that the Redistributable libraries get deployed correctly on the target system. For more information, see [Understanding the Dependencies of a Visual C++ Application](understanding-the-dependencies-of-a-visual-cpp-application.md). From 348b82378b5b2b0632f20d739ffdeb8cf3fb1bb2 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 23 Feb 2026 11:53:29 -0800 Subject: [PATCH 314/619] tech review --- docs/build/run-time-library-behavior.md | 14 +----- .../c-runtime-library/crt-library-features.md | 45 +------------------ 2 files changed, 2 insertions(+), 57 deletions(-) diff --git a/docs/build/run-time-library-behavior.md b/docs/build/run-time-library-behavior.md index fbf4bc4c786..82c75be1978 100644 --- a/docs/build/run-time-library-behavior.md +++ b/docs/build/run-time-library-behavior.md @@ -96,10 +96,9 @@ The Win32 SDK samples all use the first method. Refer to the Win32 Programmer's If you wish to use the second method and call the CRT initialization code yourself, instead of using `DllMainCRTStartup()` and `DllMain()`, there are two techniques: -1. If there's no entry function that performs initialization code, specify `_CRT_INIT()` as the entry point of the DLL. Assuming that you've included `NTWIN32.MAK`, which defines `DLLENTRY` as `@12`, add the option to the DLL's link line: `-entry:_CRT_INIT$(DLLENTRY)`. 1. If you do have your own DLL entry point, do the following in the entry point: - a. Use this prototype for `_CRT_INIT()`: `BOOL WINAPI _CRT_INIT(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved);` + a. Use this prototype (defined in `process.h` when `_DECL_DLLMAIN` is defined) for `_CRT_INIT()`: `BOOL WINAPI _CRT_INIT(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved);` For information on `_CRT_INIT()` return values, see the documentation for `DllEntryPoint`; the same values are returned. @@ -131,17 +130,6 @@ BOOL WINAPI DllEntryPoint(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved > [!NOTE] > This isn't necessary if you're using `DllMain()` and `-entry:_DllMainCRTStartup@12`. -### Using NTWIN32.MAK to simplify the build process - -There are macros defined in `NTWIN32.MAK` that can be used to simplify your makefiles and to ensure that they're properly built to avoid conflicts. For this reason, Microsoft highly recommends using `NTWIN32.MAK `and its macros. - -For compilation, use: `$(cvarsdll)` for apps/DLLs using CRT in a DLL. - -For linking, use one of the following: - -- `$(conlibsdll)` for console apps/DLLs using CRT in a DLL -- `$(guilibsdll)` for GUI apps using CRT in a DLL - ### Initialize regular MFC DLLs diff --git a/docs/c-runtime-library/crt-library-features.md b/docs/c-runtime-library/crt-library-features.md index 8795fdd9b27..aba039d6cf2 100644 --- a/docs/c-runtime-library/crt-library-features.md +++ b/docs/c-runtime-library/crt-library-features.md @@ -1,7 +1,7 @@ --- title: "C runtime (CRT) and C++ standard library (STL) lib files" description: "List of Microsoft C runtime and C++ standard library (STL) lib files that you can link against and their associated compiler options and preprocessor directives." -ms.date: "3/5/2021" +ms.date: 02/23/2026 ms.topic: "reference" helpviewer_keywords: ["MSVCR71.dll", "libraries [C++], multithreaded", "library files, run-time", "LIBCMT.lib", "LIBCP.lib", "LIBCPMT.lib", "run-time libraries, C", "CRT, release versions", "MSVCP71.dll", "LIBC.lib", "libraries [C++]", "libraries [C++], run-time", "linking [C++], libraries", "STL libraries", "Microsoft standard template libraries"] --- @@ -104,49 +104,6 @@ It's also possible to avoid some of these issues if all of the images in your pr Be careful if your program passes certain CRT resources across DLL boundaries. Resources such as file handles, locales, and environment variables can cause problems, even when using the same version of the CRT. For more information on the issues involved and how to resolve them, see [Potential errors passing CRT objects across DLL boundaries](./potential-errors-passing-crt-objects-across-dll-boundaries.md). -### Problems with statically linked CRT libraries - -There are three forms of the C Run-time library provided with the Win32 SDK: - -- `LIBC.LIB` is a statically linked library for single-threaded programs. -- `LIBCMT.LIB` is a statically linked library that supports multithreaded programs. -- `CRTDLL.LIB` is an import library for `CRTDLL.DLL` that also supports multithreaded programs. `CRTDLL.DLL` is part of Windows NT. - -Microsoft Visual C++ 32-bit edition contains these three forms as well, however, the CRT in a DLL is named `MSVCRT.LIB`. The DLL is redistributable. Its name depends on the version of VC++ (that is, `MSVCRT10.DLL` or `MSVCRT20.DLL`). Note however, that `MSVCRT10.DLL` is not supported on Win32s, while `CRTDLL.LIB` is supported on Win32s. `MSVCRT20.DLL` comes in two versions: one for Windows NT and the other for Win32s. - -If an application that makes C runtime calls links to a DLL that also makes C runtime calls, be aware that if they are both linked with one of the statically linked C runtime libraries, the `.EXE` and DLL will have separate copies of all C runtime functions and global variables. This means that C runtime data cannot be shared between the `.EXE` and the DLL. Some of the problems that can occur are: - -- Passing buffered stream handles from the .EXE/DLL to the other module -- Allocating memory with a C runtime call in the .EXE/DLL and reallocating or freeing it in the other module -- Checking or setting the value of the global `errno` variable in the .EXE/DLL and expecting it to be the same in the other module. A related problem is calling `perror()` in the opposite module from where the C runtime error occurred, since `perror()` uses `errno`. - -To avoid these problems, link both the `.EXE` and DLL with `CRTDLL.LIB` or `MSVCRT.LIB`, which allows both the `.EXE` and DLL to use the common set of functions and data contained within CRT in a DLL, and C runtime data such as stream handles can then be shared by both the `.EXE` and DLL. - -### Mixing library types - -You can link your DLL with `CRTDLL.LIB`/`MSVCRT.LIB` regardless of what your `.EXE` is linked with if you avoid mixing CRT data structures and passing CRT file handles or CRT `FILE*` pointers to other modules. - -When mixing library types adhere to the following: - -- CRT file handles may only be operated on by the CRT module that created them. -- CRT `FILE*` pointers may only be operated on by the CRT module that created them. -- Memory allocated with the CRT function `malloc()` may only be freed or reallocated by the CRT module that allocated it. - -To illustrate this, consider the following example: - -- `.EXE` is linked with `MSVCRT.LIB` -- DLL A is linked with `LIBCMT.LIB` -- DLL B is linked with `CRTDLL.LIB` - -If the `.EXE` creates a CRT file handle using `_create()` or `_open()`, this file handle may only be passed to `_lseek()`, `_read()`, `_write()`, `_close()`, etc. in the `.EXE` file. Do not pass this CRT file handle to either DLL. Do not pass a CRT file handle obtained from either DLL to the other DLL or to the `.EXE`. - -If DLL A allocates a block of memory with `malloc()`, only DLL A may call `free()`, `_expand()`, or `realloc()` to operate on that block. You cannot call `malloc()` from DLL A and try to free that block from the `.EXE` or from DLL B. - -> [!NOTE] -> If all three modules were linked with `CRTDLL.LIB` or all three were linked with `MSVCRT.LIB`, these restrictions would not apply. - -When linking DLLs with `LIBC.LIB`, be aware that if there is a possibility that such a DLL will be called by a multithreaded program, the DLL will not support multiple threads running in the DLL at the same time, which can cause major problems. If there is a possibility that the DLL will be called by multithreaded programs, be sure to link it with one of the libraries that support multithreaded programs (`LIBCMT.LIB`, `CRTDLL.LIB`, or `MSVCRT.LIB`). - ## See also [C runtime library reference](./c-run-time-library-reference.md)\ From c92211077384aef4a1ac982c1c2f14883166040f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 23 Feb 2026 13:53:00 -0800 Subject: [PATCH 315/619] tech review --- docs/build/run-time-library-behavior.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/build/run-time-library-behavior.md b/docs/build/run-time-library-behavior.md index 82c75be1978..7f0e5063991 100644 --- a/docs/build/run-time-library-behavior.md +++ b/docs/build/run-time-library-behavior.md @@ -7,11 +7,11 @@ helpviewer_keywords: ["DLLs [C++], entry point function", "process detach [C++]" --- # DLLs and Visual C++ runtime library behavior -When you build a Dynamic-link Library (DLL) by using Visual Studio, by default, the linker includes the Visual C++ runtime library (VCRuntime). The VCRuntime contains code required to initialize and terminate a C/C++ executable. When linked into a DLL, the VCRuntime code provides an internal DLL entry-point function called `_DllMainCRTStartup` that handles Windows OS messages to the DLL to attach to or detach from a process or thread. The `_DllMainCRTStartup` function performs essential tasks such as stack buffer security setup, C runtime library (CRT) initialization and termination, and calls to constructors and destructors for static and global objects. `_DllMainCRTStartup` also calls hook functions for other libraries such as WinRT, MFC, and ATL to perform their own initialization and termination. Without this initialization, the CRT and other libraries, and your static variables, would be left in an uninitialized state. The same VCRuntime internal initialization and termination routines are called whether your DLL uses a statically linked CRT or a dynamically linked CRT DLL. +When you build a Dynamic-link Library (DLL) using Visual Studio, by default, the linker includes the Visual C++ runtime library (VCRuntime). The VCRuntime contains code required to initialize and terminate a C/C++ executable. When linked into a DLL, the VCRuntime code provides an internal DLL entry-point function called `_DllMainCRTStartup` that handles Windows OS messages to the DLL to attach to or detach from a process or thread. The `_DllMainCRTStartup` function performs essential tasks such as stack buffer security setup, C runtime library (CRT) initialization and termination, and calls to constructors and destructors for static and global objects. `_DllMainCRTStartup` also calls hook functions for other libraries such as WinRT, MFC, and ATL to perform their own initialization and termination. Without this initialization, the CRT and other libraries, and your static variables, would be left in an uninitialized state. The same VCRuntime internal initialization and termination routines are called whether your DLL uses a statically linked CRT or a dynamically linked CRT DLL. ## Default DLL entry point _DllMainCRTStartup -In Windows, all DLLs can contain an optional entry-point function, usually called `DllMain`, that is called for both initialization and termination. This gives you an opportunity to allocate or release other resources as needed. Windows calls the entry-point function in four situations: process attach, process detach, thread attach, and thread detach. When a DLL is loaded into a process address space, either when an application that uses it is loaded, or when the application requests the DLL at runtime, the operating system creates a separate copy of the DLL data. This is called *process attach*. *Thread attach* occurs when the process the DLL is loaded in creates a new thread. *Thread detach* occurs when the thread terminates, and *process detach* is when the DLL is no longer required and is released by an application. The operating system makes a separate call to the DLL entry point for each of these events, passing a *reason* argument for each event type. For example, the OS sends `DLL_PROCESS_ATTACH` as the *reason* argument to signal process attach. +In Windows, all DLLs can contain an optional entry-point function, usually called `DllMain`, that is called for both initialization and termination. This gives you an opportunity to allocate or release other resources as needed. Windows calls the entry-point function in four situations: process attach, process detach, thread attach, and thread detach. When a DLL is loaded into a process address space, either when an application that uses it's loaded, or when the application requests the DLL at runtime, the operating system creates a separate copy of the DLL data. This is called *process attach*. *Thread attach* occurs when the process the DLL is loaded in creates a new thread. *Thread detach* occurs when the thread terminates, and *process detach* is when the DLL is no longer required and is released by an application. The operating system makes a separate call to the DLL entry point for each of these events, passing a *reason* argument for each event type. For example, the OS sends `DLL_PROCESS_ATTACH` as the *reason* argument to signal process attach. The VCRuntime library provides an entry-point function called `_DllMainCRTStartup` to handle default initialization and termination operations. On process attach, the `_DllMainCRTStartup` function sets up buffer security checks, initializes the CRT and other libraries, initializes runtime type information, initializes and calls constructors for static and nonlocal data, initializes thread-local storage, increments an internal static counter for each attach, and then calls a user- or library-supplied `DllMain`. On process detach, the function goes through these steps in reverse. It calls `DllMain`, decrements the internal counter, calls destructors, calls CRT termination functions and registered `atexit` functions, and notifies any other libraries of termination. When the attachment counter goes to zero, the function returns `FALSE` to indicate to Windows that the DLL can be unloaded. The `_DllMainCRTStartup` function is also called during thread attach and thread detach. In these cases, the VCRuntime code does no other initialization or termination on its own, and just calls `DllMain` to pass the message along. If `DllMain` returns `FALSE` from process attach, signaling failure, `_DllMainCRTStartup` calls `DllMain` again and passes `DLL_PROCESS_DETACH` as the *reason* argument, then goes through the rest of the termination process. @@ -81,14 +81,14 @@ extern "C" BOOL WINAPI DllMain ( ``` > [!NOTE] -> Older Windows SDK documentation says that the actual name of the DLL entry-point function must be specified on the linker command-line with the `/ENTRY` option. With Visual Studio, you don't need to use the `/ENTRY` option if the name of your entry-point function is `DllMain`. In fact, if you use the `/ENTRY` option and name your entry-point function something other than `DllMain`, the CRT does not get initialized properly unless your entry-point function makes the same initialization calls that `_DllMainCRTStartup` makes. +> Older Windows SDK documentation says that the actual name of the DLL entry-point function must be specified on the linker command-line with the `/ENTRY` option. With Visual Studio, you don't need to use the `/ENTRY` option if the name of your entry-point function is `DllMain`. In fact, if you use the `/ENTRY` option and name your entry-point function something other than `DllMain`, the CRT doesn't get initialized properly unless your entry-point function makes the same initialization calls that `_DllMainCRTStartup` makes. ### Manual CRT initialization with `_CRT_INIT` When building a DLL that uses any of the C runtime libraries, in order to ensure that the CRT is properly initialized, either: 1. The initialization function must be named `DllMain()` and the entry point must be specified with the linker option `-entry:_DllMainCRTStartup@12`, or -1. The DLL's entry point must explicitly call `_CRT_INIT()` on process attach and process detach. +1. The DLL's entry point must explicitly call `_CRT_INIT()` on process attach and process detach. This is only relevant if you are using `/NOENTRY` or have a custom entry point. We don't recommend using `/NOENTRY` or a custom entry point, if possible, because you would have to duplicate all of the initialization and termination code that `_DllMainCRTStartup` provides, in the same order. This permits the C runtime libraries to properly allocate and initialize C runtime data when a process or thread is attaching to the DLL, to properly clean up C runtime data when a process is detaching from the DLL, and for global C++ objects in the DLL to be properly constructed and destructed. @@ -195,21 +195,21 @@ In the `DllMain` that the MFC DLL Wizard generates, the call to `AfxInitExtensio If your MFC extension DLL is explicitly linked to an executable (meaning the executable calls `AfxLoadLibrary` to link to the DLL), you should add a call to `AfxTermExtensionModule` on `DLL_PROCESS_DETACH`. This function allows MFC to clean up the MFC extension DLL when each process detaches from the MFC extension DLL (which happens when the process exits or when the DLL is unloaded as a result of a `AfxFreeLibrary` call). If your MFC extension DLL is linked implicitly to the application, the call to `AfxTermExtensionModule` isn't necessary. -Applications that explicitly link to MFC extension DLLs must call `AfxTermExtensionModule` when freeing the DLL. They should also use `AfxLoadLibrary` and `AfxFreeLibrary` (instead of the Win32 functions `LoadLibrary` and `FreeLibrary`) if the application uses multiple threads. Using `AfxLoadLibrary` and `AfxFreeLibrary` ensures that the startup and shutdown code that executes when the MFC extension DLL is loaded and unloaded does not corrupt the global MFC state. +Applications that explicitly link to MFC extension DLLs must call `AfxTermExtensionModule` when freeing the DLL. They should also use `AfxLoadLibrary` and `AfxFreeLibrary` (instead of the Win32 functions `LoadLibrary` and `FreeLibrary`) if the application uses multiple threads. Using `AfxLoadLibrary` and `AfxFreeLibrary` ensures that the startup and shutdown code that executes when the MFC extension DLL is loaded and unloaded doesn't corrupt the global MFC state. Because the MFCx0.dll is fully initialized by the time `DllMain` is called, you can allocate memory and call MFC functions within `DllMain` (unlike the 16-bit version of MFC). -Extension DLLs can take care of multithreading by handling the `DLL_THREAD_ATTACH` and `DLL_THREAD_DETACH` cases in the `DllMain` function. These cases are passed to `DllMain` when threads attach and detach from the DLL. Calling [TlsAlloc](/windows/win32/api/processthreadsapi/nf-processthreadsapi-tlsalloc) when a DLL is attaching allows the DLL to maintain thread local storage (TLS) indexes for every thread attached to the DLL. +Extension DLLs can take care of multithreading by handling the `DLL_THREAD_ATTACH` and `DLL_THREAD_DETACH` cases in the `DllMain` function. These cases are passed to `DllMain` when threads attach and detach from the DLL. Calling [`TlsAlloc`](/windows/win32/api/processthreadsapi/nf-processthreadsapi-tlsalloc) when a DLL is attaching allows the DLL to maintain thread local storage (TLS) indexes for every thread attached to the DLL. The header file `Afxdllx.h` contains special definitions for structures used in MFC extension DLLs, such as the definition for `AFX_EXTENSION_MODULE` and `CDynLinkLibrary`. You should include this header file in your MFC extension DLL. > [!NOTE] -> It's important that you neither define nor undefine any of the `_AFX_NO_XXX` macros in *pch.h* (*stdafx.h* in Visual Studio 2017 and earlier). These macros exist only to check whether a particular target platform supports that feature or not. You can write your program to check these macros (for example, `#ifndef _AFX_NO_OLE_SUPPORT`), but your program should never define or undefine these macros. +> It's important that you don't define or undefine any of the `_AFX_NO_XXX` macros in `pch.h` (`stdafx.h` in Visual Studio 2017 and earlier). These macros exist only to check whether a particular target platform supports that feature or not. You can write your program to check these macros (for example, `#ifndef _AFX_NO_OLE_SUPPORT`), but your program should never define or undefine these macros. A sample initialization function that handles multithreading is included in [Using Thread Local Storage in a Dynamic-Link Library](/windows/win32/Dlls/using-thread-local-storage-in-a-dynamic-link-library) in the Windows SDK. Note that the sample contains an entry-point function called `LibMain`, but you should name this function `DllMain` so that it works with the MFC and C runtime libraries. ## See also -[Create C/C++ DLLs in Visual Studio](dlls-in-visual-cpp.md)
-[DllMain entry point](/windows/win32/Dlls/dllmain)
+[Create C/C++ DLLs in Visual Studio](dlls-in-visual-cpp.md)\ +[DllMain entry point](/windows/win32/Dlls/dllmain)\ [Dynamic-link Library Best Practices](/windows/win32/Dlls/dynamic-link-library-best-practices) From fa4159b2711d9b3f734f4ccf0688102a74072417 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 23 Feb 2026 14:45:31 -0800 Subject: [PATCH 316/619] Clarify processor environment for C4235 example Updated comment to clarify processor environment setup. --- .../compiler-warnings/compiler-warning-level-4-c4235.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md index 5cb82b34371..b1fa9f92226 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4235.md @@ -21,7 +21,7 @@ The following example generates C4235 as the [Inline Assembler](../../assembler/ ```cpp // C4235.cpp -// processor: x64 +// processor: x64 (set compiler environment with vcvars64.bat) int main() { From 8e05527d04f8029e6bf99983b2ec96c8ad5569b2 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 23 Feb 2026 14:58:56 -0800 Subject: [PATCH 317/619] expand on example --- .../compiler-warning-level-4-c4324.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md index 5aed86571e3..412a1180f29 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md @@ -21,13 +21,23 @@ For example, `S1` and `S2` generates C4324 because padding is added when the spe // C4324.cpp // compile with: /W4 /c -struct alignas(4) S1 {}; // C4324 - -struct alignas(8) S2 +struct alignas(8) S1 // C4324 { int i; }; // C4324 +union alignas(16) U1 +{ + int i; + float f; +}; // C4324 + +class alignas(8) C1 +{ +public: + int i = 0; +}; // C4324 + struct alignas(4) S3 { int i; From e66f1cef419c2e093375e03d03be2120ba1a9c80 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 23 Feb 2026 15:01:09 -0800 Subject: [PATCH 318/619] Clarify example for compiler warning C4324 --- .../compiler-warnings/compiler-warning-level-4-c4324.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md index 412a1180f29..d5643369a70 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md @@ -15,7 +15,7 @@ Padding was added at the end of a class/struct/union because you specified an al ## Example -For example, `S1` and `S2` generates C4324 because padding is added when the specified alignment is greater than the default alignment of `1` and `4` respectively: +For example, `S1`, `S2`, `U1`, and `C1` generate C4324 because padding is added when the specified alignment is greater than the default alignment for each: ```cpp // C4324.cpp From 57ba3227feadeb739d4b2e61566c424e9905fd86 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 23 Feb 2026 15:11:58 -0800 Subject: [PATCH 319/619] Fix alignment description in C4324 warning example expanded the example --- .../compiler-warning-level-4-c4324.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md index d5643369a70..e26ff5d09b0 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md @@ -15,31 +15,35 @@ Padding was added at the end of a class/struct/union because you specified an al ## Example -For example, `S1`, `S2`, `U1`, and `C1` generate C4324 because padding is added when the specified alignment is greater than the default alignment for each: +For example, `S1`, `U1`, and `C1` generate C4324 because padding is added when the specified alignment is greater than the nautral alignment for each. `S2` doesn't generate a warning because the specified aligment matches the natural alignment: ```cpp // C4324.cpp // compile with: /W4 /c +// natural 4 byte alignment struct alignas(8) S1 // C4324 { int i; }; // C4324 +// natural 4 byte alignment +struct alignas(4) S2 +{ + int i; +}; // OK + +// natural 4 byte alignment union alignas(16) U1 { int i; - float f; + char c; }; // C4324 +// natural 4 byte alignment class alignas(8) C1 { public: int i = 0; }; // C4324 - -struct alignas(4) S3 -{ - int i; -}; // OK ``` From f6a14b71eca9e42ff1eae76960c753b745f72024 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Mon, 23 Feb 2026 15:31:57 -0800 Subject: [PATCH 320/619] tech review --- docs/build/run-time-library-behavior.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/build/run-time-library-behavior.md b/docs/build/run-time-library-behavior.md index 7f0e5063991..1b755df2623 100644 --- a/docs/build/run-time-library-behavior.md +++ b/docs/build/run-time-library-behavior.md @@ -1,7 +1,7 @@ --- description: "Learn more about: DLLs and Microsoft C++ runtime library behavior" title: "DLLs and Visual C++ runtime library behavior" -ms.date: "08/19/2019" +ms.date: 02/23/2026 f1_keywords: ["_DllMainCRTStartup", "CRT_INIT"] helpviewer_keywords: ["DLLs [C++], entry point function", "process detach [C++]", "process attach [C++]", "DLLs [C++], run-time library behavior", "DllMain function", "_CRT_INIT macro", "_DllMainCRTStartup method", "run-time [C++], DLL startup sequence", "DLLs [C++], startup sequence"] --- @@ -87,8 +87,8 @@ extern "C" BOOL WINAPI DllMain ( When building a DLL that uses any of the C runtime libraries, in order to ensure that the CRT is properly initialized, either: -1. The initialization function must be named `DllMain()` and the entry point must be specified with the linker option `-entry:_DllMainCRTStartup@12`, or -1. The DLL's entry point must explicitly call `_CRT_INIT()` on process attach and process detach. This is only relevant if you are using `/NOENTRY` or have a custom entry point. We don't recommend using `/NOENTRY` or a custom entry point, if possible, because you would have to duplicate all of the initialization and termination code that `_DllMainCRTStartup` provides, in the same order. +- The initialization function must be named `DllMain()` and the entry point must be specified with the linker option `-entry:_DllMainCRTStartup@12` This is the default behavior when building a DLL (the `@12` is x86-only because that platform uses `stdcall`), or +- The DLL's entry point must explicitly call `_CRT_INIT()` on process attach and process detach. This is only relevant if you are using `/NOENTRY` or have a custom entry point. We don't recommend using `/NOENTRY` or a custom entry point, if possible, because you would have to duplicate all of the initialization and termination code that `_DllMainCRTStartup` provides, in the same order. This permits the C runtime libraries to properly allocate and initialize C runtime data when a process or thread is attaching to the DLL, to properly clean up C runtime data when a process is detaching from the DLL, and for global C++ objects in the DLL to be properly constructed and destructed. From 494666fe008ababc85d0cf1c3b047d5622887212 Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Mon, 23 Feb 2026 16:15:39 -0800 Subject: [PATCH 321/619] MSLearn page feedback from preserve_none author --- docs/build/x64-calling-convention.md | 3 ++- docs/cpp/preserve-none.md | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/build/x64-calling-convention.md b/docs/build/x64-calling-convention.md index d9bf0d97b40..ff47e9dfd76 100644 --- a/docs/build/x64-calling-convention.md +++ b/docs/build/x64-calling-convention.md @@ -8,7 +8,8 @@ ms.topic: concept-article This article describes the standard processes and conventions that one function (the caller) uses to make calls into another function (the callee) in x64 code. -For more information about the `__vectorcall` calling convention, see [__vectorcall](../cpp/vectorcall.md). +For more information about the `__vectorcall` calling convention, see [__vectorcall](../cpp/vectorcall.md). +For more information about the `__preserve_none` calling convention, see [__preserve_none](../cpp/preserve-none.md). ## Calling convention defaults diff --git a/docs/cpp/preserve-none.md b/docs/cpp/preserve-none.md index f90d613bc96..ba7d97cf3b4 100644 --- a/docs/cpp/preserve-none.md +++ b/docs/cpp/preserve-none.md @@ -21,10 +21,10 @@ The following list shows the behavior of this calling convention. | Element | Behavior | |---------|----------------| | Argument-passing order | Arguments are passed in up to 10 registers in the following order: `r13`, `r14`, `r15`, `rbx`, `rsi`, `rdi`, `r9`, `r8`, `rdx`, `rcx`. If a hidden parameter is required for struct returns, it's passed in `r13` (the first parameter register), reducing available parameter registers to 9. Registers `r10`-`r12` are reserved for various CRT and Windows runtimes. All parameters must be passed through registers; stack-based parameters aren't currently supported. | -| Register allocation strategy | To help minimize register spilling, the allocator assigns `r9`, `r8`, `rdx`, and `rcx` only after other registers have been used. | +| Register allocation strategy | To help minimize register spilling when calling functions with different calling conventions, the allocator assigns `rcx`, `rdx`, `r8`, and `r9` only after other registers have been used, since those registers are used first by the [__vectorcall](vectorcall.md) and [__cdecl](cdecl.md) calling conventions. | | Argument limit | Functions are restricted to a maximum of 10 parameters. An error is generated if this limit is exceeded. | | Return value convention | Follows the regular x64 calling convention rules. Scalar return values are returned in `rax`. Structs of size 1, 2, 4, or 8 bytes are returned through the `rax` register. For structs of other sizes, a pointer to memory allocated by the caller and passed through the hidden parameter is returned in `rax`. | -| Volatile registers | All general-purpose registers except `rsp` (stack pointer) and `rbp` (base pointer) are treated as volatile and don't need to be preserved across function calls. While `r10` and `r11` are volatile, they aren't used for parameter passing to maintain compatibility with existing programs. | +| Volatile registers | All general-purpose registers except `r12`, `rsp` (stack pointer) and `rbp` (base pointer) are treated as volatile and don't need to be preserved across function calls. While `r10` and `r11` are volatile, they aren't used for parameter passing to maintain compatibility with existing programs. | | Nonvolatile registers | Only `rsp`, `rbp`, and `r12` are nonvolatile. | | Stack alignment | The stack must maintain 16-byte alignment. | | Frame pointer | The `rbp` register and frame chain follow the [/Gy switch](../build/reference/gy-enable-function-level-linking.md) settings. | From 603930774fd8661dcbc16bc873d51104fd3ee7a5 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 23 Feb 2026 16:20:12 -0800 Subject: [PATCH 322/619] test if reverts --- docs/c-runtime-library/crt-library-features.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/c-runtime-library/crt-library-features.md b/docs/c-runtime-library/crt-library-features.md index aba039d6cf2..165f5090864 100644 --- a/docs/c-runtime-library/crt-library-features.md +++ b/docs/c-runtime-library/crt-library-features.md @@ -1,7 +1,7 @@ --- title: "C runtime (CRT) and C++ standard library (STL) lib files" description: "List of Microsoft C runtime and C++ standard library (STL) lib files that you can link against and their associated compiler options and preprocessor directives." -ms.date: 02/23/2026 +ms.date: "3/5/2021" ms.topic: "reference" helpviewer_keywords: ["MSVCR71.dll", "libraries [C++], multithreaded", "library files, run-time", "LIBCMT.lib", "LIBCP.lib", "LIBCPMT.lib", "run-time libraries, C", "CRT, release versions", "MSVCP71.dll", "LIBC.lib", "libraries [C++]", "libraries [C++], run-time", "linking [C++], libraries", "STL libraries", "Microsoft standard template libraries"] --- From 606fc4000d06a5f640ace7e99bb5c2cac4046140 Mon Sep 17 00:00:00 2001 From: paulth1 <42621139+paulth1@users.noreply.github.com> Date: Mon, 23 Feb 2026 16:47:41 -0800 Subject: [PATCH 323/619] edit pass: redistributing-microsoft-c++-files --- ...uting-components-by-using-merge-modules.md | 22 +++--- .../windows/redistributing-the-mfc-library.md | 32 ++++---- ...istributing-visual-cpp-activex-controls.md | 16 ++-- .../redistributing-visual-cpp-files.md | 77 ++++++++----------- 4 files changed, 67 insertions(+), 80 deletions(-) diff --git a/docs/windows/redistributing-components-by-using-merge-modules.md b/docs/windows/redistributing-components-by-using-merge-modules.md index e338d1c8b25..531ef3479d0 100644 --- a/docs/windows/redistributing-components-by-using-merge-modules.md +++ b/docs/windows/redistributing-components-by-using-merge-modules.md @@ -9,27 +9,27 @@ ms.topic: concept-article # Redistribute components by using merge modules > [!IMPORTANT] -> In Visual Studio 2019 and later, merge modules for Visual C++ Redistributable files are deprecated. We don't recommend that you use them for application deployment. Redistributables installed by using merge modules can't be updated by Windows Update because the detection mechanism depends on knowing details of the installing package. +> In Visual Studio 2019 and later, merge modules for Visual C++ Redistributable files are deprecated. We don't recommend that you use them for application deployment. Windows Update can't update redistributable files installed by using merge modules because the detection mechanism depends on knowing details of the installing package. > -> The Visual C++ Redistributable packages are known for each release, but packages that use MSMs are user generated. Microsoft can't know the details of user-generated packages. Instead, we recommend that you use central deployment of the Visual C++ Redistributable package. Central deployment installs the Redistributable files in the Windows *`%SYSTEMROOT%\system32\`* folder for use by all applications and users. Central deployment by a Redistributable package makes it possible for Microsoft to service runtime library files independently. An uninstall of your app can't break other applications that also use central deployment. +> The Visual C++ Redistributable Packages are known for each release, but packages that use MSMs are user generated. Microsoft can't know the details of user-generated packages. Instead, we recommend that you use central deployment of the Visual C++ Redistributable Package. Central deployment installs the redistributable files in the Windows `%SYSTEMROOT%\system32\` folder for use by all applications and users. Central deployment by a redistributable package makes it possible for Microsoft to service runtime library files independently. An uninstall of your app can't break other applications that also use central deployment. > -> When you use a Redistributable package for central deployment, you aren't responsible for tracking and updating the runtime libraries as part of your application maintenance. The Microsoft Update service updates these libraries for you. Otherwise, an update to the runtime library files requires you to update and redeploy your *`.msi`* installer. Your app could be vulnerable to bugs or security issues until you do. +> When you use a redistributable package for central deployment, you aren't responsible for tracking and updating the runtime libraries as part of your application maintenance. The Microsoft Update service updates these libraries for you. Otherwise, an update to the runtime library files requires you to update and redeploy your `.msi` installer. Your app could be vulnerable to bugs or security issues until you do. -Visual Studio includes [merge modules](/windows/win32/Msi/about-merge-modules) (*`.msm`* files) for each Visual C++ component that's licensed for redistribution with an application. There are separate versions of the merge modules for each target platform. When a merge module is compiled into a Windows Installer setup file, it enables the deployment of Visual C++ Redistributable files to that specific platform. You can't include merge modules for different versions of the same dynamic link library (DLL) in one installer. In your installer setup file, specify that the merge modules are prerequisites for your application. +Visual Studio includes [merge modules](/windows/win32/Msi/about-merge-modules) (`.msm` files) for each Visual C++ component that's licensed for redistribution with an application. There are separate versions of the merge modules for each target platform. When a merge module is compiled into a Windows Installer setup file, it enables the deployment of Visual C++ Redistributable files to that specific platform. You can't include merge modules for different versions of the same dynamic link library (DLL) in one installer. In your installer setup file, specify that the merge modules are prerequisites for your application. -You can use merge modules for either [central deployment](deployment-in-visual-cpp.md#central-deployment) or [local deployment](deployment-in-visual-cpp.md#local-deployment). Users can't install centrally deployed files unless they have administrator rights. Local deployment might allow a non-administrator to install and run your app, but at the cost of independent serviceability. +You can use merge modules for either [central deployment](deployment-in-visual-cpp.md#central-deployment) or [local deployment](deployment-in-visual-cpp.md#local-deployment). Users can't install centrally deployed files unless they have administrator rights. Local deployment might allow a nonadministrator to install and run your app, but at the cost of independent serviceability. The installation service reports an error if you attempt central deployment of older merge modules over newer existing libraries. You should write your installer setup to handle this failure gracefully and not display an error message. Your code can still deploy and run successfully despite this failure. For more information, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). -If you deploy your code only as an *`.msi`* installer, we recommend that you don't include the merge modules in the installer. Instead, report a failure to the user when the required Redistributable libraries aren't found. In the failure dialog, include instructions on how to find and install the latest Redistributable package. For more information and links to Redistributable packages, see [the latest supported Visual C++ downloads](latest-supported-vc-redist.md). +If you deploy your code only as an `.msi` installer, we recommend that you don't include the merge modules in the installer. Instead, report a failure to the user when the required redistributable libraries aren't found. In the failure dialog, include instructions on how to find and install the latest redistributable package. For more information and links to redistributable packages, see [the latest supported Visual C++ downloads](latest-supported-vc-redist.md). -The latest Redistributable packages and merge modules are compatible with code built by using Visual Studio 2015 and later. Code built by versions of Visual Studio before 2015 require a separate Redistributable package. +The latest redistributable packages and merge modules are compatible with code built by using Visual Studio 2015 and later. Code built by versions of Visual Studio before 2015 require a separate redistributable package. ## When to use merge modules -Merge modules are only appropriate in limited circumstances: +Merge modules are appropriate only in limited circumstances: -- You can't install or require a separate Redistributable package for policy reasons. +- You can't install or require a separate redistributable package for policy reasons. - Your code requires a specific, bug-compatible version of the libraries. - Your code targets only one platform, and you don't have dependencies on more than one version of the DLLs. - You intend to service your deployed code regularly so that the libraries remain up to date. @@ -38,9 +38,9 @@ When you use merge modules, you must track and regularly service your applicatio ## Where to find merge module files -In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named C++ \ Redistributable MSMs in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When installed in Visual Studio 2022, you can find the Visual C++ Redistributable merge modules in *`%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`*. +In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named C++ \ Redistributable MSMs in the Visual Studio Installer. The merge modules are installed by default as part of a C++ installation in Visual Studio 2017 and Visual Studio 2015. When the merge modules are installed in Visual Studio 2022, you can find the Visual C++ Redistributable merge modules in `%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`. -In the latest version of Visual Studio 2019, the merge modules are in *`%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`*. In both Visual Studio 2019 and Visual Studio 2017, they're also found in *`%VCToolsRedistDir%MergeModules`*. In Visual Studio 2015, they're found in *`Program Files [(x86)]\Common Files\Merge Modules`*. For more information and a link to a list of Redistributable merge modules, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). +In the latest version of Visual Studio 2019, the merge modules are in `%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`. In both Visual Studio 2019 and Visual Studio 2017, they're also found in `%VCToolsRedistDir%MergeModules`. In Visual Studio 2015, they're found in `Program Files [(x86)]\Common Files\Merge Modules`. For more information and a link to a list of redistributable merge modules, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). ## Related content diff --git a/docs/windows/redistributing-the-mfc-library.md b/docs/windows/redistributing-the-mfc-library.md index 512a0ae3a0a..313859cce13 100644 --- a/docs/windows/redistributing-the-mfc-library.md +++ b/docs/windows/redistributing-the-mfc-library.md @@ -1,44 +1,44 @@ --- description: "Learn More About: Redistribute the MFC Library" -title: Learn more about redistributing the MFC Library. +title: Learn more about redistributing the MFC library. ms.date: "11/04/2016" helpviewer_keywords: ["MFC, redistributing", "redistributing MFC library"] ms.assetid: 72714ce1-385e-4c1c-afa5-96b03e873866 ms.topic: concept-article --- -# Redistribute the MFC Library +# Redistribute the MFC library -If you dynamically link your application to the Microsoft Foundation Class (MFC) library, you must redistribute the matching MFC dynamic link library (DLL). For example, if your MFC app is built by using the version of MFC that ships with Visual Studio 2015, you must redistribute mfc140.dll or mfc140u.dll, depending on whether your app is compiled for narrow characters or Unicode support. +If you dynamically link your application to the Microsoft Foundation Class (MFC) library, you must redistribute the matching MFC dynamic link library (DLL). For example, if your MFC app is built by using the version of MFC that ships with Visual Studio 2015, you must redistribute `mfc140.dll` or `mfc140u.dll`, depending on whether your app is compiled for narrow characters or Unicode support. > [!NOTE] -> The mfc140.dll files were omitted from the redistributable files directory in Visual Studio 2015 RTM. You can use the versions installed by Visual Studio 2015 in the Windows\system32 and Windows\syswow64 directories instead. +> The `mfc140.dll` files were omitted from the redistributable files directory in Visual Studio 2015 RTM. You can use the versions installed by Visual Studio 2015 in the `Windows\system32 and Windows\syswow64` directories instead. -Because all MFC DLLs use the shared version of the C runtime library (CRT), you might also need to redistribute the CRT. The version of MFC that ships with Visual Studio 2015 uses the universal CRT library, which is distributed as part of Windows 10 and Windows 11. To run an MFC application built by using Visual Studio 2015 on earlier versions of Windows, you must redistribute the Universal CRT. +Because all MFC DLLs use the shared version of the C runtime library (CRT), you might also need to redistribute the CRT. The version of MFC that ships with Visual Studio 2015 uses the Universal CRT library, which is distributed as part of Windows 10 and Windows 11. To run an MFC application built by using Visual Studio 2015 on earlier versions of Windows, you must redistribute the Universal CRT. -For information on how to redistribute the universal CRT as an operating system component or by using local deployment, see [Introducing the Universal CRT](https://devblogs.microsoft.com/cppblog/introducing-the-universal-crt/). To download the universal CRT for central deployment on supported versions of Windows, see [Windows 10 Universal C Runtime](https://www.microsoft.com/download/details.aspx?id=48234). +For information on how to redistribute the Universal CRT as an operating system component or by using local deployment, see [Introducing the Universal CRT](https://devblogs.microsoft.com/cppblog/introducing-the-universal-crt/). To download the Universal CRT for central deployment on supported versions of Windows, see [Windows 10 Universal C Runtime](https://www.microsoft.com/download/details.aspx?id=48234). -You can find Redistributable architecture-specific versions of ucrtbase.dll for local deployment in the Windows SDK. By default, Visual Studio installs these versions in C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\ in an architecture-specific subdirectory. +You can find redistributable architecture-specific versions of `ucrtbase.dll` for local deployment in the Windows SDK. By default, Visual Studio installs these versions in `C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\` in an architecture-specific subdirectory. -If your app is built by using an earlier version of the MFC library, you must redistribute the matching CRT DLL from the redistributable files directory. For example, if your MFC application is built by using the Visual Studio 2013 (vc120) toolset, you must redistribute the msvcr120.dll. You also have to redistribute the matching mfc``u.dll or mfc``.dll. +If your app is built by using an earlier version of the MFC library, you must redistribute the matching CRT DLL from the redistributable files directory. For example, if your MFC application is built by using the Visual Studio 2013 (vc120) toolset, you must redistribute the `msvcr120.dll`. You also have to redistribute the matching `mfc``u.dll` or `mfc``.dll`. -If you statically link your application to MFC (that is, if you specify **Use MFC in a Static Library** on the **General** tab in the **Property Pages** dialog), you don't have to redistribute an MFC DLL. Although static linking might work for testing and internal deployment of applications, we recommend that you don't use it to redistribute MFC. For more information about the recommended strategies for deploying Visual C++ libraries, see [Choosing a deployment method](choosing-a-deployment-method.md). +If you statically link your application to MFC (that is, if you specify **Use MFC in a Static Library** on the **General** tab in the **Property Pages** dialog), you don't have to redistribute an MFC DLL. Although static linking might work for testing and internal deployment of applications, we recommend that you don't use it to redistribute MFC. For more information about the recommended strategies for deploying Visual C++ libraries, see [Choose a deployment method](choosing-a-deployment-method.md). -If your application uses the MFC classes that implement the WebBrowser control (for example, [CHtmlView Class](../mfc/reference/chtmlview-class.md) or [CHtmlEditView Class](../mfc/reference/chtmleditview-class.md)), we recommend that you also install the most current version of Microsoft Internet Explorer so that the target computer will have the most current common control files. (At a minimum, Internet Explorer 4.0 is required.) Information about how to install Internet Explorer components is available in "Article 185375: How To Create a Single EXE Install of Internet Explorer" on the Microsoft Support website. +If your application uses the MFC classes that implement the WebBrowser control (for example, [CHtmlView class](../mfc/reference/chtmlview-class.md) or [CHtmlEditView class](../mfc/reference/chtmleditview-class.md)), we recommend that you also install the most current version of Internet Explorer so that the target computer has the most current common control files. (At a minimum, Internet Explorer 4.0 is required.) Information about how to install Internet Explorer components is available in "Article 185375: How to Create a Single EXE Install of Internet Explorer" on the Microsoft Support website. -If your application uses the MFC database classes (for example, [CRecordset Class](../mfc/reference/crecordset-class.md) and [CRecordView Class](../mfc/reference/crecordview-class.md)), you must redistribute Open Database Connectivity (ODBC) and any ODBC drivers that your application uses. +If your application uses the MFC database classes (for example, [CRecordset class](../mfc/reference/crecordset-class.md) and [CRecordView class](../mfc/reference/crecordview-class.md)), you must redistribute Open Database Connectivity (ODBC) and any ODBC drivers that your application uses. -If your MFC application uses Windows Forms controls, you must redistribute mfcmifc80.dll with your application. This DLL is a strong-name-signed .NET assembly. You can redistribute it with an application in its application local folder. You can also deploy it to the Global Assembly Cache (GAC) by using the [Gacutil.exe (Global Assembly Cache Tool)](/dotnet/framework/tools/gacutil-exe-gac-tool). +If your MFC application uses Windows Forms controls, you must redistribute `mfcmifc80.dll` with your application. This DLL is a strong-name-signed .NET assembly. You can redistribute it with an application in its application local folder. You can also deploy it to the Global Assembly Cache (GAC) by using the [Gacutil.exe (Global Assembly Cache Tool)](/dotnet/framework/tools/gacutil-exe-gac-tool). -If you redistribute an MFC DLL, make sure to redistribute the retail version and not the debug version. Debug versions of the DLLs aren't redistributable. The names of debug versions of the MFC DLLs end with a "d," for example, Mfc140d.dll. +If you redistribute an MFC DLL, make sure to redistribute the retail version and not the debug version. Debug versions of the DLLs aren't redistributable. The names of debug versions of the MFC DLLs end with a "d," for example, `Mfc140d.dll`. -You can redistribute MFC by using either VCRedist_*architecture*.exe or merge modules that are installed with Visual Studio. You can also deploy the MFC DLL to the same folder as your application. For more information about how to redistribute MFC, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). +You can redistribute MFC by using either `VCRedist_*architecture*.exe` or merge modules that are installed with Visual Studio. You can also deploy the MFC DLL to the same folder as your application. For more information about how to redistribute MFC, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). ## Installation of localized MFC components -If you decide to localize your application by installing an MFC localization DLL, you must use the redistributable merge files (.msm). For example, if you want to localize your application on an x86 computer, you must merge Microsoft_VC``_MFCLOC_x86.msm into the installation package for an x86 computer. +If you decide to localize your application by installing an MFC localization DLL, you must use the redistributable merge files (`.msm`). For example, if you want to localize your application on an x86 computer, you must merge `Microsoft_VC``_MFCLOC_x86.msm` into the installation package for an x86 computer. -The redistributable .msm files contain the DLLs that are used for localization. There's one DLL for each supported language. The installation process installs these DLLs in the %windir%\system32\ folder on the target computer. +The redistributable `.msm` files contain the DLLs that are used for localization. There's one DLL for each supported language. The installation process installs these DLLs in the `%windir%\system32\` folder on the target computer. For more information about how to localize MFC applications, see [TN057: Localization of MFC components](../mfc/tn057-localization-of-mfc-components.md). diff --git a/docs/windows/redistributing-visual-cpp-activex-controls.md b/docs/windows/redistributing-visual-cpp-activex-controls.md index 882e4430902..1cb9bd521f7 100644 --- a/docs/windows/redistributing-visual-cpp-activex-controls.md +++ b/docs/windows/redistributing-visual-cpp-activex-controls.md @@ -13,17 +13,17 @@ Visual C++ 6.0 supplies ActiveX controls that you can use in applications that y > [!NOTE] > Visual C++ 6.0 is no longer supported by Microsoft. -For a list of the redistributable Visual C++ 6.0 ActiveX controls, see Common\Redist\Redist.txt on Disc 1 of the Visual C++ 6.0 product CD. +For a list of the redistributable Visual C++ 6.0 ActiveX controls, see `Common\Redist\Redist.txt` on Disc 1 of the Visual C++ 6.0 product CD. -When you distribute applications, you must install and register the `.ocx` for the ActiveX control (by using Regsvr32.exe). You should also make sure that the target computer has current versions of the following system files (an asterisk indicates that the file must be registered): +When you distribute applications, you must install and register the `.ocx` for the ActiveX control (by using `Regsvr32.exe`). The target computer also must have current versions of the following system files (an asterisk indicates that the file must be registered): -- Asycfilt.dll -- Comcat.dll \* -- Oleaut32.dll \* -- Olepro32.dll \* -- Stdole2.tlb +- `Asycfilt.dll` +- `Comcat.dll`\* +- `Oleaut32.dll`\* +- `Olepro32.dll`\* +- `Stdole2.tlb` -If these DLLs aren't available on the target system, you must get them updated by using the prescribed mechanism for updating the corresponding operating system. +If these dynamic link libraries (DLLs) aren't available on the target system, you must get them updated by using the prescribed mechanism for updating the corresponding operating system. When you use an ActiveX control that connects to a database, you also need to replicate the data source name on the target computer. You can do this task programmatically with functions such as `ConfigDSN`. diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index 0a1992a3719..049c8d504e3 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -1,6 +1,6 @@ --- title: Redistribute Visual C++ Files -description: Visual Studio includes Redistributable libraries and components that you can deploy with your app. +description: Visual Studio includes redistributable libraries and components that you can deploy with your app. ms.date: 01/15/2025 helpviewer_keywords: ["application deployment [C++], file redistributing", "redistributing applications [C++]", "deploying applications [C++], file redistributing", "file redistribution [C++]", "redistributing applications [C++], about redistributing applications"] ms.topic: concept-article @@ -8,13 +8,13 @@ ms.topic: concept-article # Redistribute Visual C++ files > [!NOTE] -> Are you here because you're looking for a download of one of the Visual C++ Runtime files? Go to the [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) page. +> Are you here because you're looking for a download of one of the Visual C++ Runtime files? Go to the [latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) page. ## Redistributable files and licensing -Distribution of the Visual C++ Runtime Redistributable package, merge modules, and individual binaries is limited to licensed Visual Studio users and is subject to such License Terms. +Distribution of the Visual C++ Runtime Redistributable Package, merge modules, and individual binaries is limited to licensed Visual Studio users and is subject to Microsoft Software License Terms. -When you deploy an application, you must also deploy the files that are required to support it. If any of these files are provided by Microsoft, check whether you're permitted to redistribute them. You can find a link to the Visual Studio license terms in the IDE. Use the License Terms link in the About Microsoft Visual Studio dialog. You can also download the relevant Microsoft Software Licence Terms and licenses from the Visual Studio [License Directory](https://visualstudio.microsoft.com/license-terms/). +When you deploy an application, you must also deploy the files that are required to support it. If any of these files are provided by Microsoft, check whether you're permitted to redistribute them. You can find a link to the Visual Studio license terms in the IDE. In the **About Microsoft Visual Studio** dialog, select the **License Terms** link. You can also download the relevant Microsoft Software License Terms and licenses from the Visual Studio [License Directory](https://visualstudio.microsoft.com/license-terms/). ::: moniker range="msvc-170" @@ -24,51 +24,51 @@ To view the "REDIST list" that's referenced in the "Distributable Code" section ::: moniker range="msvc-160" -To view the "REDIST list" that's referenced in the "Distributable Code" section of the Visual Studio 2019 Microsoft Software License Terms, see [Distributable Code Files for Microsoft Visual Studio 2019](/visualstudio/releases/2019/redistribution#-distributable-code-files-for-visual-studio-2019). +To view the "REDIST list" that's referenced in the "Distributable Code" section of the Visual Studio 2019 Microsoft Software License Terms, see [Distributable code files for Microsoft Visual Studio 2019](/visualstudio/releases/2019/redistribution#-distributable-code-files-for-visual-studio-2019). ::: moniker-end ::: moniker range="msvc-150" -To view the "REDIST list" that's referenced in the "Distributable Code" section of the Visual Studio 2017 Microsoft Software License Terms, see [Distributable Code Files for Microsoft Visual Studio 2017](/visualstudio/productinfo/2017-redistribution-vs#-distributable-code-files-for-visual-studio-2017). +To view the "REDIST list" that's referenced in the "Distributable Code" section of the Visual Studio 2017 Microsoft Software License Terms, see [Distributable code files for Microsoft Visual Studio 2017](/visualstudio/productinfo/2017-redistribution-vs#-distributable-code-files-for-visual-studio-2017). ::: moniker-end ::: moniker range="msvc-140" -To view the "REDIST list" that's referenced in the "Distributable Code" section of the Visual Studio 2015 Microsoft Software License Terms, see [Distributable Code Files for Microsoft Visual Studio 2015](/visualstudio/productinfo/2015-redistribution-vs#-distributable-code-files-for-visual-studio-2015). +To view the "REDIST list" that's referenced in the "Distributable Code" section of the Visual Studio 2015 Microsoft Software License Terms, see [Distributable code files for Microsoft Visual Studio 2015](/visualstudio/productinfo/2015-redistribution-vs#-distributable-code-files-for-visual-studio-2015). ::: moniker-end -For more information about redistributable files, see [Determining which DLLs to redistribute](determining-which-dlls-to-redistribute.md) and [Deployment examples](deployment-examples.md). +For more information about redistributable files, see [Determine which dynamic link libraries (DLLs) to redistribute](determining-which-dlls-to-redistribute.md) and [Deployment examples](deployment-examples.md). ## Locate the redistributable files -To deploy redistributable files, you can use the redistributable packages installed by Visual Studio. In versions of Visual Studio since 2017, these files are named *`vc_redist.arm64.exe`*, *`vc_redist.x64.exe`*, and *`vc_redist.x86.exe`*. In Visual Studio 2015, 2017, and 2019, they're also available under the names *`vcredist_x86.exe`*, *`vcredist_x64.exe`*, and (2015 only) *`vcredist_arm.exe`*. +To deploy redistributable files, you can use the redistributable packages installed by Visual Studio. In versions of Visual Studio since 2017, these files are named `vc_redist.arm64.exe`, `vc_redist.x64.exe`, and `vc_redist.x86.exe`. In Visual Studio 2015, 2017, and 2019, they're also available under the names `vcredist_x86.exe`, `vcredist_x64.exe`, and (2015 only) `vcredist_arm.exe`. -The easiest way to locate the redistributable files is by using environment variables set in a developer command prompt. In Visual Studio 2022, the redistributable files are in the *`%VCINSTALLDIR%Redist\MSVC\v143`* folder. In the latest version of Visual Studio 2019, you can find the redistributable files in the *`%VCINSTALLDIR%Redist\MSVC\v142`* folder. In both Visual Studio 2017 and Visual Studio 2019, they're also found in *`%VCToolsRedistDir%`*. In Visual Studio 2015, you can find these files in *`%VCINSTALLDIR%redist\`*, where *``* is the locale of the redistributable packages. +The easiest way to locate the redistributable files is by using environment variables set in a developer command prompt. In Visual Studio 2022, the redistributable files are in the `%VCINSTALLDIR%Redist\MSVC\v143` folder. In the latest version of Visual Studio 2019, you can find the redistributable files in the `%VCINSTALLDIR%Redist\MSVC\v142` folder. In both Visual Studio 2017 and Visual Studio 2019, the files are also found in `%VCToolsRedistDir%`. In Visual Studio 2015, you can find these files in `%VCINSTALLDIR%redist\`, where `` is the locale of the redistributable packages. -In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named C++ \ Redistributable MSMs in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When installed in Visual Studio 2022, you can find the redistributable merge modules in *`%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`*. In the latest version of Visual Studio 2019, the redistributable merge modules are in *`%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`*. In both Visual Studio 2019 and Visual Studio 2017, they're also found in *`%VCToolsRedistDir%MergeModules`*. In Visual Studio 2015, they're found in *`Program Files [(x86)]\Common Files\Merge Modules`*. +In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named Visual C++ \ Redistributable MSMs in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When they're installed in Visual Studio 2022, you can find the redistributable merge modules in `%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`. In the latest version of Visual Studio 2019, the redistributable merge modules are found in `%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`. In both Visual Studio 2019 and Visual Studio 2017, they're also found in `%VCToolsRedistDir%MergeModules`. In Visual Studio 2015, they're found in `Program Files [(x86)]\Common Files\Merge Modules`. ## Install the redistributable packages -The Visual C++ Redistributable Packages install and register all Visual C++ libraries. If you use one, run it as a prerequisite on the target system before you install your application. We recommend that you use these packages for your deployments because they enable automatic updating of the Visual C++ libraries. For an example about how to use these packages, see [Walkthrough: Deploying a Visual C++ Application by Using the Visual C++ Redistributable Package](deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md). +The Visual C++ Redistributable Packages install and register all Visual C++ libraries. If you use one, run it as a prerequisite on the target system before you install your application. We recommend that you use these packages for your deployments because they enable automatic updating of the Visual C++ libraries. For an example that shows how to use these packages, see [Walkthrough: Deploy a Visual C++ application by using the Visual C++ Redistributable Package](deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md). -Each Visual C++ Redistributable package checks for the existence of a more recent version on the machine. If a more recent version is found, the package won't get installed. In Visual Studio 2015 or later, Redistributable packages display an error message stating that setup failed. If a package uses the `/quiet` flag to run, no error message is displayed. In either case, an error is logged by the Microsoft installer, and an error result is returned to the caller. +Each Visual C++ Redistributable Package checks for the existence of a more recent version on the machine. If a more recent version is found, the package isn't installed. In Visual Studio 2015 or later, redistributable packages display an error message stating that setup failed. If a package uses the `/quiet` flag to run, no error message appears. In either case, the Microsoft installer logs the error, and an error result is returned to the caller. In Visual Studio 2015 and later, you can avoid this error by checking the registry to find out if a more recent version is installed. The current installed version number is stored in the `HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\{x86|x64|arm64}` key. -The version number is 14.0 for Visual Studio 2015, 2017, 2019, and 2022 because the latest Redistributable is binary compatible with previous versions back to 2015. The key is `arm64`, `x86`, or `x64` depending on the installed vcredist versions for the platform. (You need to check under the `Wow6432Node` subkey only if you use Regedit to view the version of the installed x86 package on an x64 platform.) +The version number is 14.0 for Visual Studio 2015, 2017, 2019, and 2022 because the latest Redistributable is binary compatible with previous versions back to 2015. The key is `arm64`, `x86`, or `x64` depending on the installed `vcredist` versions for the platform. (You need to check under the `Wow6432Node` subkey only if you use Regedit to view the version of the installed x86 package on an x64 platform.) -The version number is stored in the `REG_SZ` string value `Version` and also in the set of `Major`, `Minor`, `Bld`, and `Rbld` `REG_DWORD` values. To avoid an error at install time, you must skip installation of the Redistributable package if the currently installed version is more recent. +The version number is stored in the `REG_SZ` string value `Version` and also in the set of `Major`, `Minor`, `Bld`, and `Rbld` `REG_DWORD` values. To avoid an error at installation time, you must skip installation of the redistributable package if the currently installed version is more recent. -### Command-line options for the Redistributable packages +### Command-line options for the redistributable packages The Visual C++ Redistributable supports several command-line options. The `/?`, `/h`, or `/help` options display a dialog that lists the available options. You can specify `/install` to install, `/repair` to repair, or `/uninstall` to uninstall the Redistributable. The `/layout` option copies the complete contents of the Redistributable in the current directory. -By default, the Redistributable installs its contents and prompts the user for information and whether to restart after installation. You can specify the `/passive` option, which displays progress but doesn't otherwise require user interaction. You can also specify a `/quiet` option, which doesn't display any UI or require any user interaction. The `/norestart` option suppresses any attempts to restart. By default, a log file is created in *`%TEMP%`*. You can use `/log filename.txt` to log to a specific file. +By default, the Redistributable installs its contents and prompts the user for information and whether to restart after installation. You can specify the `/passive` option, which displays progress but doesn't otherwise require user interaction. You can also specify a `/quiet` option, which doesn't display a user interface or require any user interaction. The `/norestart` option suppresses any attempts to restart. By default, a log file is created in `%TEMP%`. You can use `/log filename.txt` to log to a specific file. -This example command installs the x64 Redistributable. It shows installation progress, but doesn't require user interaction or a restart: +This example command installs the x64 Redistributable. It shows installation progress but doesn't require user interaction or a restart: ```cmd vc_redist.x64.exe /install /passive /norestart @@ -77,41 +77,28 @@ vc_redist.x64.exe /install /passive /norestart ## Install the redistributable merge modules > [!IMPORTANT] -> Merge modules (*`.msm`* files) for Visual C++ Redistributable files are deprecated. We don't recommend that you use them for application deployment. Instead, we recommend central deployment of the Visual C++ Redistributable package. Central deployment by a Redistributable package makes it possible for Microsoft to service runtime library files independently. An uninstall of your app can't affect other applications that also use central deployment. +> Merge modules (`.msm` files) for Visual C++ Redistributable files are deprecated. We don't recommend that you use them for application deployment. Instead, we recommend central deployment of the Visual C++ Redistributable Package. Central deployment by a redistributable package makes it possible for Microsoft to service runtime library files independently. An uninstall of your app can't affect other applications that also use central deployment. > -> When you use a Redistributable package for central deployment, you aren't responsible for tracking and maintaining the runtime libraries. Otherwise, an update to the runtime library files requires you to update and redeploy your *`.msi`* installer. Your app could be vulnerable to bugs or security issues until you do. +> When you use a redistributable package for central deployment, you aren't responsible for tracking and maintaining the runtime libraries. Otherwise, an update to the runtime library files requires you to update and redeploy your *`.msi`* installer. Your app could be vulnerable to bugs or security issues until you do. -Redistributable merge modules must be included in the Windows Installer package (or similar installation package) that you use to deploy your application. For more information, see [Redistributing by using merge modules](redistributing-components-by-using-merge-modules.md). For an example, see [Walkthrough: Deploying a Visual C++ application by using a setup project](walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md). +Redistributable merge modules must be included in the Windows Installer package (or similar installation package) that you use to deploy your application. For more information, see [Redistribute by using merge modules](redistributing-components-by-using-merge-modules.md). For an example, see [Walkthrough: Deploy a Visual C++ application by using a setup project](walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md). ## Install individual redistributable files -It's also possible to directly install the Redistributable DLLs in the *application local folder*. The application local folder is the folder that contains your executable application file. For servicing reasons, we don't recommend you use this installation location. +It's also possible to directly install the Redistributable DLLs in the *application local folder*. The application local folder is the folder that contains your executable application file. For servicing reasons, we don't recommend that you use this installation location. ## Potential runtime errors -If Windows can't find one of the Redistributable library DLLs required by your application, it might display a message similar to: "This application has failed to start because *library*.dll was not found. Reinstalling the application may fix this problem." +If Windows can't find one of the Redistributable DLLs required by your application, it might display a message similar to this one: "This application has failed to start because *library*.dll was not found. Reinstalling the application may fix this problem." -To resolve this kind of error, make sure your application installer builds correctly. Verify that the Redistributable libraries get deployed correctly on the target system. For more information, see [Understanding the Dependencies of a Visual C++ Application](understanding-the-dependencies-of-a-visual-cpp-application.md). +To resolve this kind of error, make sure that your application installer builds correctly. Verify that the Redistributable libraries get deployed correctly on the target system. For more information, see [Understand the dependencies of a Visual C++ application](understanding-the-dependencies-of-a-visual-cpp-application.md). -## Related articles +## Related content -[Redistributing by using merge modules](redistributing-components-by-using-merge-modules.md)\ -Describes how to use Visual C++ Redistributable merge modules to install the Visual C++ runtime libraries as shared DLLs in the *`%windir%\system32\`* folder. - -[Redistributing Visual C++ ActiveX Controls](redistributing-visual-cpp-activex-controls.md)\ -Describes how to redistribute an application that uses ActiveX Controls. - -[Redistributing the MFC Library](redistributing-the-mfc-library.md)\ -Describes how to redistribute an application that uses MFC. - -[Redistributing an ATL application](redistributing-an-atl-application.md)\ -Describes how to redistribute an application that uses ATL. In Visual Studio 2012 and later, no ATL library is required. - -[Deployment Examples](deployment-examples.md)\ -Links to examples that demonstrate how to deploy Visual C++ applications. - -[Deploying Desktop Applications](deploying-native-desktop-applications-visual-cpp.md)\ -Introduces Visual C++ deployment concepts and technologies. - -[Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md)\ -Links to the latest supported Visual C++ Redistributable downloads. \ No newline at end of file +- [Redistribute by using merge modules](redistributing-components-by-using-merge-modules.md) describes how to use Visual C++ Redistributable merge modules to install the Visual C++ runtime libraries as shared DLLs in the `%windir%\system32\` folder. +- [Redistribute Visual C++ ActiveX controls](redistributing-visual-cpp-activex-controls.md) describes how to redistribute an application that uses ActiveX controls. +- [Redistribute the Microsoft Foundation Class (MFC) library](redistributing-the-mfc-library.md) describes how to redistribute an application that uses MFC. +- [Redistribute an Active Template Library (ATL) application](redistributing-an-atl-application.md) describes how to redistribute an application that uses an ATL. In Visual Studio 2012 and later, no ATL library is required. +- [Deployment examples](deployment-examples.md) links to examples that demonstrate how to deploy Visual C++ applications. +- [Deploy desktop applications](deploying-native-desktop-applications-visual-cpp.md) introduces Visual C++ deployment concepts and technologies. +- [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) links to the latest supported Visual C++ Redistributable downloads. \ No newline at end of file From 1a7906f49584a144f92db430b276f893b81e6fd1 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 24 Feb 2026 01:17:36 -0800 Subject: [PATCH 324/619] Docfx (#6260) * update ms.topic * restore test file --- docs/docfx.json | 4 ++-- docs/sanitizers/asan-building.md | 1 + docs/sanitizers/asan.md | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/docfx.json b/docs/docfx.json index e3765f2f722..752316e2e79 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -42,7 +42,7 @@ "ROBOTS": "INDEX,FOLLOW", "manager": "coxford", "ms.date": "11/16/2016", - "ms.topic": "article", + "ms.topic": "concept-article", "audience": "developer", "ms.service": "visual-cpp", "ms.tgt_pltfrm": "Windows", @@ -116,7 +116,7 @@ "intrinsics/**.md": "reference", "mfc/reference/**.md": "reference", "overview/**.md": "overview", - "parallel/**.md": "reference", + "parallel/**.md": "how-to", "preprocessor/**.md": "reference", "safeint/**.md": "reference", "sanitizers/**.md": "reference", diff --git a/docs/sanitizers/asan-building.md b/docs/sanitizers/asan-building.md index 5ea4cf7b5cf..a4fa4cd5814 100644 --- a/docs/sanitizers/asan-building.md +++ b/docs/sanitizers/asan-building.md @@ -2,6 +2,7 @@ title: "MSVC AddressSanitizer language, build, and debugging reference" description: "Technical description of building for the MSVC AddressSanitizer" ms.date: 02/05/2024 +ms.topic: overview f1_keywords: ["__SANITIZE_ADDRESS__", "ASAN_VCASAN_DEBUGGING"] helpviewer_keywords: ["ASan reference", "MSVC AddressSanitizer reference", "MSVC Address Sanitizer reference"] --- diff --git a/docs/sanitizers/asan.md b/docs/sanitizers/asan.md index 80f2a55b825..63d7c1cb7f2 100644 --- a/docs/sanitizers/asan.md +++ b/docs/sanitizers/asan.md @@ -2,6 +2,7 @@ title: "AddressSanitizer" description: "Top-level description of the AddressSanitizer feature for Microsoft C/C++." ms.date: 09/06/2024 +ms.topic: overview f1_keywords: ["AddressSanitizer"] helpviewer_keywords: ["ASan", "AddressSanitizer", "Address Sanitizer", "compiling for AddressSanitizer"] --- From 3823f9fd0f6d09688b1b79befa15f4f7b9122b8a Mon Sep 17 00:00:00 2001 From: Tracey Torble <56347952+ttorble@users.noreply.github.com> Date: Tue, 24 Feb 2026 15:19:19 +0000 Subject: [PATCH 325/619] Update docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md --- .../compiler-warnings/compiler-warning-level-4-c4324.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md index e26ff5d09b0..0d36a85e2ca 100644 --- a/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md +++ b/docs/error-messages/compiler-warnings/compiler-warning-level-4-c4324.md @@ -15,7 +15,7 @@ Padding was added at the end of a class/struct/union because you specified an al ## Example -For example, `S1`, `U1`, and `C1` generate C4324 because padding is added when the specified alignment is greater than the nautral alignment for each. `S2` doesn't generate a warning because the specified aligment matches the natural alignment: +For example, `S1`, `U1`, and `C1` generate C4324 because padding is added when the specified alignment is greater than the natural alignment for each. `S2` doesn't generate a warning because the specified alignment matches the natural alignment: ```cpp // C4324.cpp From 74924c2115b4874ecbe7f20dad93c19c63232893 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 24 Feb 2026 11:52:48 -0800 Subject: [PATCH 326/619] Mfc batch 10 (#6264) * Batch 10: update files * move note --- docs/mfc/reference/ctypedptrmap-class.md | 3 +++ docs/mfc/reference/cuintarray-class.md | 4 +++- docs/mfc/reference/cuserexception-class.md | 4 +++- docs/mfc/reference/cusertool-class.md | 4 +++- docs/mfc/reference/cusertoolsmanager-class.md | 4 +++- docs/mfc/reference/cview-class.md | 4 +++- docs/mfc/reference/cvslistbox-class.md | 4 +++- docs/mfc/reference/cwaitcursor-class.md | 4 +++- docs/mfc/reference/cwinapp-class.md | 3 +++ docs/mfc/reference/cwinappex-class.md | 3 +++ docs/mfc/reference/cwindowdc-class.md | 3 +++ docs/mfc/reference/cwinformscontrol-class.md | 4 +++- docs/mfc/reference/cwinformsdialog-class.md | 4 +++- docs/mfc/reference/cwinformsview-class.md | 4 +++- docs/mfc/reference/cwinthread-class.md | 4 +++- docs/mfc/reference/cwnd-class.md | 3 +++ docs/mfc/reference/cwordarray-class.md | 4 +++- .../dao-database-engine-initialization-and-termination.md | 4 +++- docs/mfc/reference/data-types-mfc.md | 3 +++ docs/mfc/reference/database-macros-and-globals.md | 4 +++- .../reference/database-support-mfc-application-wizard.md | 4 +++- docs/mfc/reference/ddx-dhtml-helper-macros.md | 4 +++- ...declaring-a-variable-based-on-your-new-control-class.md | 4 +++- .../defining-a-message-handler-for-a-reflected-message.md | 4 +++- docs/mfc/reference/delegate-and-interface-maps.md | 3 +++ .../details-of-atl-support-added-by-the-atl-wizard.md | 7 +++++-- docs/mfc/reference/dhtml-editing-command-maps.md | 4 +++- docs/mfc/reference/dhtml-event-maps.md | 4 +++- docs/mfc/reference/dhtmlurleventmapentry-structure.md | 4 +++- docs/mfc/reference/diagnostic-services.md | 3 +++ ...xchange-functions-for-crecordview-and-cdaorecordview.md | 4 +++- .../dialog-data-exchange-functions-for-ole-controls.md | 4 +++- docs/mfc/reference/dispatch-maps.md | 4 +++- .../document-template-strings-mfc-application-wizard.md | 4 +++- docs/mfc/reference/edit-control-handlers.md | 4 +++- docs/mfc/reference/editing-a-message-handler.md | 4 +++- docs/mfc/reference/event-maps.md | 4 +++- docs/mfc/reference/event-sink-maps.md | 3 +++ docs/mfc/reference/exception-processing.md | 4 +++- docs/mfc/reference/extension-dll-macros.md | 3 +++ .../reference/generated-classes-mfc-application-wizard.md | 4 +++- docs/mfc/reference/generic-control-handler.md | 4 +++- docs/mfc/reference/gray-and-dithered-bitmap-functions.md | 4 +++- docs/mfc/reference/handlers-for-wm-messages.md | 4 +++- .../how-to-use-the-message-map-cross-reference.md | 4 +++- docs/mfc/reference/hse-version-info-structure.md | 4 +++- docs/mfc/reference/icommandsource-interface.md | 3 +++ docs/mfc/reference/icommandtarget-interface.md | 4 +++- docs/mfc/reference/icommandui-interface.md | 4 +++- docs/mfc/reference/internal-classes.md | 3 +++ docs/mfc/reference/internet-url-parsing-globals.md | 4 +++- docs/mfc/reference/iview-interface.md | 4 +++- docs/mfc/reference/list-box-handlers.md | 4 +++- docs/mfc/reference/mapping-messages-to-functions.md | 4 +++- docs/mfc/reference/message-map-macros-mfc.md | 4 +++- docs/mfc/reference/message-maps-mfc.md | 4 +++- ...message-types-associated-with-user-interface-objects.md | 4 +++- docs/mfc/reference/mfc-activex-control-wizard.md | 4 +++- docs/mfc/reference/mfc-add-class-wizard.md | 4 +++- docs/mfc/reference/mfc-application-wizard.md | 3 +++ docs/mfc/reference/mfc-class-wizard.md | 3 +++ docs/mfc/reference/mfc-classes.md | 3 +++ docs/mfc/reference/mfc-dll-wizard.md | 4 +++- docs/mfc/reference/mfc-macros-and-globals.md | 4 +++- docs/mfc/reference/mfc-odbc-consumer-wizard.md | 4 +++- docs/mfc/reference/mfc-wizards-and-dialog-boxes.md | 4 +++- docs/mfc/reference/ole-initialization.md | 4 +++- docs/mfc/reference/persistence-of-ole-controls.md | 4 +++- docs/mfc/reference/property-pages-mfc.md | 4 +++- docs/mfc/reference/record-field-exchange-functions.md | 4 +++- docs/mfc/reference/registering-ole-controls.md | 4 +++- docs/mfc/reference/run-time-object-model-services.md | 3 +++ docs/mfc/reference/standard-command-and-window-ids.md | 4 +++- .../reference/standard-dialog-data-exchange-routines.md | 3 +++ .../reference/standard-dialog-data-validation-routines.md | 4 +++- .../structures-styles-callbacks-and-message-maps.md | 4 +++- docs/mfc/reference/structures-used-by-mfc.md | 4 +++- docs/mfc/reference/styles-used-by-mfc.md | 3 +++ docs/mfc/reference/toolbar-control-styles.md | 4 +++- docs/mfc/reference/type-casting-of-mfc-class-objects.md | 4 +++- docs/mfc/reference/type-library-access.md | 4 +++- docs/mfc/reference/uicheckstate-enumeration.md | 4 +++- docs/mfc/reference/user-button-handlers.md | 4 +++- docs/mfc/reference/user-defined-handlers.md | 4 +++- .../user-interface-features-mfc-application-wizard.md | 4 +++- docs/mfc/reference/variant-parameter-type-constants.md | 4 +++- docs/mfc/reference/wm-message-handlers-a-c.md | 3 +++ docs/mfc/reference/wm-message-handlers-d-e.md | 4 +++- docs/mfc/reference/wm-message-handlers-f-k.md | 4 +++- docs/mfc/reference/wm-message-handlers-l-m.md | 4 +++- docs/mfc/reference/wm-message-handlers-n-o.md | 4 +++- docs/mfc/reference/wm-messages-p-r.md | 4 +++- docs/mfc/reference/wm-messages-s.md | 4 +++- docs/mfc/reference/wm-messages-t-z.md | 4 +++- docs/mfc/reflected-window-message-ids.md | 4 +++- docs/mfc/registering-window-classes.md | 4 +++- docs/mfc/registration.md | 4 +++- ...relationship-between-a-cpp-window-object-and-an-hwnd.md | 4 +++- docs/mfc/relationship-to-the-c-language-api.md | 4 +++- docs/mfc/relationships-among-mfc-objects.md | 4 +++- 100 files changed, 302 insertions(+), 82 deletions(-) diff --git a/docs/mfc/reference/ctypedptrmap-class.md b/docs/mfc/reference/ctypedptrmap-class.md index 1e8ac54c643..7b430d55ba8 100644 --- a/docs/mfc/reference/ctypedptrmap-class.md +++ b/docs/mfc/reference/ctypedptrmap-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CTypedPtrMap [MFC], GetNextAssoc", "CTypedPtrMap [MFC], L --- # CTypedPtrMap Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides a type-safe "wrapper" for objects of the pointer-map classes `CMapPtrToPtr`, `CMapPtrToWord`, `CMapWordToPtr`, and `CMapStringToPtr`. ## Syntax diff --git a/docs/mfc/reference/cuintarray-class.md b/docs/mfc/reference/cuintarray-class.md index 6f73ded501d..fb9f1b1c845 100644 --- a/docs/mfc/reference/cuintarray-class.md +++ b/docs/mfc/reference/cuintarray-class.md @@ -4,10 +4,12 @@ title: "CUIntArray Class" ms.date: "11/04/2016" f1_keywords: ["CUIntArray", "AFXCOLL/CUIntArray", "AFXCOLL/CUIntArray::CUIntArray", "AFXCOLL/CUIntArray::Add", "AFXCOLL/CUIntArray::Append", "AFXCOLL/CUIntArray::Copy", "AFXCOLL/CUIntArray::ElementAt", "AFXCOLL/CUIntArray::FreeExtra", "AFXCOLL/CUIntArray::GetAt", "AFXCOLL/CUIntArray::GetCount", "AFXCOLL/CUIntArray::GetData", "AFXCOLL/CUIntArray::GetSize", "AFXCOLL/CUIntArray::GetUpperBound", "AFXCOLL/CUIntArray::InsertAt", "AFXCOLL/CUIntArray::IsEmpty", "AFXCOLL/CUIntArray::RemoveAll", "AFXCOLL/CUIntArray::RemoveAt", "AFXCOLL/CUIntArray::SetAt", "AFXCOLL/CUIntArray::SetAtGrow", "AFXCOLL/CUIntArray::SetSize"] helpviewer_keywords: ["CUIntArray [MFC], CUIntArray", "CUIntArray [MFC], Add", "CUIntArray [MFC], Append", "CUIntArray [MFC], Copy", "CUIntArray [MFC], ElementAt", "CUIntArray [MFC], FreeExtra", "CUIntArray [MFC], GetAt", "CUIntArray [MFC], GetCount", "CUIntArray [MFC], GetData", "CUIntArray [MFC], GetSize", "CUIntArray [MFC], GetUpperBound", "CUIntArray [MFC], InsertAt", "CUIntArray [MFC], IsEmpty", "CUIntArray [MFC], RemoveAll", "CUIntArray [MFC], RemoveAt", "CUIntArray [MFC], SetAt", "CUIntArray [MFC], SetAtGrow", "CUIntArray [MFC], SetSize"] -ms.assetid: d71f3d8f-ef9f-4e48-9b69-7782c0e2ddf7 --- # CUIntArray Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports arrays of unsigned integers. ## Syntax diff --git a/docs/mfc/reference/cuserexception-class.md b/docs/mfc/reference/cuserexception-class.md index b3dc67f0608..26387721c0a 100644 --- a/docs/mfc/reference/cuserexception-class.md +++ b/docs/mfc/reference/cuserexception-class.md @@ -4,10 +4,12 @@ title: "CUserException Class" ms.date: "11/04/2016" f1_keywords: ["CUserException"] helpviewer_keywords: ["operations [MFC], stopping", "exceptions [MFC], throwing", "CUserException class [MFC]", "errors [MFC], trapping", "operations [MFC]", "throwing exceptions [MFC], stopping user operations"] -ms.assetid: 2156ba6d-2cce-415a-9000-6f02c26fcd7d --- # CUserException Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Thrown to stop an end-user operation. ## Syntax diff --git a/docs/mfc/reference/cusertool-class.md b/docs/mfc/reference/cusertool-class.md index f664e322f8b..7701be54440 100644 --- a/docs/mfc/reference/cusertool-class.md +++ b/docs/mfc/reference/cusertool-class.md @@ -4,10 +4,12 @@ title: "CUserTool Class" ms.date: "11/04/2016" f1_keywords: ["CUserTool", "AFXUSERTOOL/CUserTool", "AFXUSERTOOL/CUserTool::CopyIconToClipboard", "AFXUSERTOOL/CUserTool::DrawToolIcon", "AFXUSERTOOL/CUserTool::GetCommand", "AFXUSERTOOL/CUserTool::GetCommandId", "AFXUSERTOOL/CUserTool::Invoke", "AFXUSERTOOL/CUserTool::Serialize", "AFXUSERTOOL/CUserTool::SetCommand", "AFXUSERTOOL/CUserTool::SetToolIcon", "AFXUSERTOOL/CUserTool::LoadDefaultIcon", "AFXUSERTOOL/CUserTool::m_strArguments", "AFXUSERTOOL/CUserTool::m_strInitialDirectory", "AFXUSERTOOL/CUserTool::m_strLabel"] helpviewer_keywords: ["CUserTool [MFC], CopyIconToClipboard", "CUserTool [MFC], DrawToolIcon", "CUserTool [MFC], GetCommand", "CUserTool [MFC], GetCommandId", "CUserTool [MFC], Invoke", "CUserTool [MFC], Serialize", "CUserTool [MFC], SetCommand", "CUserTool [MFC], SetToolIcon", "CUserTool [MFC], LoadDefaultIcon", "CUserTool [MFC], m_strArguments", "CUserTool [MFC], m_strInitialDirectory", "CUserTool [MFC], m_strLabel"] -ms.assetid: 7c287d3e-d012-488d-b4e1-aa0f83f294bb --- # CUserTool Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A user tool is a menu item that runs an external application. The **Tools** tab of the **Customize** dialog box ( [CMFCToolBarsCustomizeDialog Class](../../mfc/reference/cmfctoolbarscustomizedialog-class.md)) enables the user to add user tools, and to specify the name, command, arguments, and initial directory for each user tool. ## Syntax diff --git a/docs/mfc/reference/cusertoolsmanager-class.md b/docs/mfc/reference/cusertoolsmanager-class.md index a0b94f5dc84..eaa6e767e20 100644 --- a/docs/mfc/reference/cusertoolsmanager-class.md +++ b/docs/mfc/reference/cusertoolsmanager-class.md @@ -4,10 +4,12 @@ title: "CUserToolsManager Class" ms.date: "11/04/2016" f1_keywords: ["CUserToolsManager", "AFXUSERTOOLSMANAGER/CUserToolsManager", "AFXUSERTOOLSMANAGER/CUserToolsManager::CUserToolsManager", "AFXUSERTOOLSMANAGER/CUserToolsManager::CreateNewTool", "AFXUSERTOOLSMANAGER/CUserToolsManager::FindTool", "AFXUSERTOOLSMANAGER/CUserToolsManager::GetArgumentsMenuID", "AFXUSERTOOLSMANAGER/CUserToolsManager::GetDefExt", "AFXUSERTOOLSMANAGER/CUserToolsManager::GetFilter", "AFXUSERTOOLSMANAGER/CUserToolsManager::GetInitialDirMenuID", "AFXUSERTOOLSMANAGER/CUserToolsManager::GetMaxTools", "AFXUSERTOOLSMANAGER/CUserToolsManager::GetToolsEntryCmd", "AFXUSERTOOLSMANAGER/CUserToolsManager::GetUserTools", "AFXUSERTOOLSMANAGER/CUserToolsManager::InvokeTool", "AFXUSERTOOLSMANAGER/CUserToolsManager::IsUserToolCmd", "AFXUSERTOOLSMANAGER/CUserToolsManager::LoadState", "AFXUSERTOOLSMANAGER/CUserToolsManager::MoveToolDown", "AFXUSERTOOLSMANAGER/CUserToolsManager::MoveToolUp", "AFXUSERTOOLSMANAGER/CUserToolsManager::RemoveTool", "AFXUSERTOOLSMANAGER/CUserToolsManager::SaveState", "AFXUSERTOOLSMANAGER/CUserToolsManager::SetDefExt", "AFXUSERTOOLSMANAGER/CUserToolsManager::SetFilter"] helpviewer_keywords: ["CUserToolsManager [MFC], CUserToolsManager", "CUserToolsManager [MFC], CreateNewTool", "CUserToolsManager [MFC], FindTool", "CUserToolsManager [MFC], GetArgumentsMenuID", "CUserToolsManager [MFC], GetDefExt", "CUserToolsManager [MFC], GetFilter", "CUserToolsManager [MFC], GetInitialDirMenuID", "CUserToolsManager [MFC], GetMaxTools", "CUserToolsManager [MFC], GetToolsEntryCmd", "CUserToolsManager [MFC], GetUserTools", "CUserToolsManager [MFC], InvokeTool", "CUserToolsManager [MFC], IsUserToolCmd", "CUserToolsManager [MFC], LoadState", "CUserToolsManager [MFC], MoveToolDown", "CUserToolsManager [MFC], MoveToolUp", "CUserToolsManager [MFC], RemoveTool", "CUserToolsManager [MFC], SaveState", "CUserToolsManager [MFC], SetDefExt", "CUserToolsManager [MFC], SetFilter"] -ms.assetid: bdfa37ae-efca-4616-abb5-9d0dcd2d335b --- # CUserToolsManager Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Maintains the collection of [CUserTool Class](../../mfc/reference/cusertool-class.md) objects in an application. A user tool is a menu item that runs an external application. The `CUserToolsManager` object enables the user or developer to add new user tools to the application. It supports the execution of the commands associated with user tools, and it also saves information about user tools in the Windows registry. ## Syntax diff --git a/docs/mfc/reference/cview-class.md b/docs/mfc/reference/cview-class.md index 42e892ac90c..e9a3113ea03 100644 --- a/docs/mfc/reference/cview-class.md +++ b/docs/mfc/reference/cview-class.md @@ -4,10 +4,12 @@ title: "CView Class" ms.date: "11/04/2016" f1_keywords: ["CView", "AFXWIN/CView", "AFXWIN/CView::CView", "AFXWIN/CView::DoPreparePrinting", "AFXWIN/CView::GetDocument", "AFXWIN/CView::IsSelected", "AFXWIN/CView::OnDragEnter", "AFXWIN/CView::OnDragLeave", "AFXWIN/CView::OnDragOver", "AFXWIN/CView::OnDragScroll", "AFXWIN/CView::OnDrop", "AFXWIN/CView::OnDropEx", "AFXWIN/CView::OnInitialUpdate", "AFXWIN/CView::OnPrepareDC", "AFXWIN/CView::OnScroll", "AFXWIN/CView::OnScrollBy", "AFXWIN/CView::OnActivateFrame", "AFXWIN/CView::OnActivateView", "AFXWIN/CView::OnBeginPrinting", "AFXWIN/CView::OnDraw", "AFXWIN/CView::OnEndPrinting", "AFXWIN/CView::OnEndPrintPreview", "AFXWIN/CView::OnPreparePrinting", "AFXWIN/CView::OnPrint", "AFXWIN/CView::OnUpdate"] helpviewer_keywords: ["CView [MFC], CView", "CView [MFC], DoPreparePrinting", "CView [MFC], GetDocument", "CView [MFC], IsSelected", "CView [MFC], OnDragEnter", "CView [MFC], OnDragLeave", "CView [MFC], OnDragOver", "CView [MFC], OnDragScroll", "CView [MFC], OnDrop", "CView [MFC], OnDropEx", "CView [MFC], OnInitialUpdate", "CView [MFC], OnPrepareDC", "CView [MFC], OnScroll", "CView [MFC], OnScrollBy", "CView [MFC], OnActivateFrame", "CView [MFC], OnActivateView", "CView [MFC], OnBeginPrinting", "CView [MFC], OnDraw", "CView [MFC], OnEndPrinting", "CView [MFC], OnEndPrintPreview", "CView [MFC], OnPreparePrinting", "CView [MFC], OnPrint", "CView [MFC], OnUpdate"] -ms.assetid: 9cff3c56-7564-416b-b9a4-71a9254ed755 --- # `CView` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the basic functionality for user-defined view classes. ## Syntax diff --git a/docs/mfc/reference/cvslistbox-class.md b/docs/mfc/reference/cvslistbox-class.md index 45cbc0e8068..68cf0b67cc9 100644 --- a/docs/mfc/reference/cvslistbox-class.md +++ b/docs/mfc/reference/cvslistbox-class.md @@ -4,10 +4,12 @@ title: "CVSListBox Class" ms.date: "11/19/2018" f1_keywords: ["CVSListBox", "AFXVSLISTBOX/CVSListBox", "AFXVSLISTBOX/CVSListBox::CVSListBox", "AFXVSLISTBOX/CVSListBox::AddItem", "AFXVSLISTBOX/CVSListBox::EditItem", "AFXVSLISTBOX/CVSListBox::GetCount", "AFXVSLISTBOX/CVSListBox::GetItemData", "AFXVSLISTBOX/CVSListBox::GetItemText", "AFXVSLISTBOX/CVSListBox::GetSelItem", "AFXVSLISTBOX/CVSListBox::RemoveItem", "AFXVSLISTBOX/CVSListBox::SelectItem", "AFXVSLISTBOX/CVSListBox::SetItemData", "AFXVSLISTBOX/CVSListBox::GetListHwnd"] helpviewer_keywords: ["CVSListBox [MFC], CVSListBox", "CVSListBox [MFC], AddItem", "CVSListBox [MFC], EditItem", "CVSListBox [MFC], GetCount", "CVSListBox [MFC], GetItemData", "CVSListBox [MFC], GetItemText", "CVSListBox [MFC], GetSelItem", "CVSListBox [MFC], RemoveItem", "CVSListBox [MFC], SelectItem", "CVSListBox [MFC], SetItemData", "CVSListBox [MFC], GetListHwnd"] -ms.assetid: c79be7b4-46ed-4af8-a41e-68962782d8ef --- # CVSListBox Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `CVSListBox` class supports an editable list control. ## Syntax diff --git a/docs/mfc/reference/cwaitcursor-class.md b/docs/mfc/reference/cwaitcursor-class.md index 7a62508db91..36fd2f3f99d 100644 --- a/docs/mfc/reference/cwaitcursor-class.md +++ b/docs/mfc/reference/cwaitcursor-class.md @@ -4,10 +4,12 @@ title: "CWaitCursor Class" ms.date: "11/04/2016" f1_keywords: ["CWaitCursor", "AFXWIN/CWaitCursor", "AFXWIN/CWaitCursor::CWaitCursor", "AFXWIN/CWaitCursor::Restore"] helpviewer_keywords: ["CWaitCursor [MFC], CWaitCursor", "CWaitCursor [MFC], Restore"] -ms.assetid: 5dfae2ff-d7b6-4383-b0ad-91e0868c67b3 --- # CWaitCursor Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides a one-line way to show a wait cursor, which is usually displayed as an hourglass, while you're doing a lengthy operation. ## Syntax diff --git a/docs/mfc/reference/cwinapp-class.md b/docs/mfc/reference/cwinapp-class.md index 7f45102a51a..977fe4b8cc9 100644 --- a/docs/mfc/reference/cwinapp-class.md +++ b/docs/mfc/reference/cwinapp-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CWinApp [MFC], CWinApp", "CWinApp [MFC], AddDocTemplate", --- # CWinApp Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The base class from which you derive a Windows application object. ## Syntax diff --git a/docs/mfc/reference/cwinappex-class.md b/docs/mfc/reference/cwinappex-class.md index 85b09877183..6ddbfc30372 100644 --- a/docs/mfc/reference/cwinappex-class.md +++ b/docs/mfc/reference/cwinappex-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CWinAppEx [MFC], CWinAppEx", "CWinAppEx [MFC], CleanState --- # `CWinAppEx` class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + `CWinAppEx` handles the application state, saves the state to the registry, loads the state from the registry, initializes application managers, and provides links to those same application managers. For more detail, see the source code located in the `mfc` folder of your Visual Studio installation. For example, `%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\atlmfc\src\mfc`. diff --git a/docs/mfc/reference/cwindowdc-class.md b/docs/mfc/reference/cwindowdc-class.md index e27c7be752e..c47bff917d7 100644 --- a/docs/mfc/reference/cwindowdc-class.md +++ b/docs/mfc/reference/cwindowdc-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CWindowDC [MFC], CWindowDC", "CWindowDC [MFC], m_hWnd"] --- # CWindowDC Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Derived from `CDC`. ## Syntax diff --git a/docs/mfc/reference/cwinformscontrol-class.md b/docs/mfc/reference/cwinformscontrol-class.md index 78663935bdc..1d3e5e58e4a 100644 --- a/docs/mfc/reference/cwinformscontrol-class.md +++ b/docs/mfc/reference/cwinformscontrol-class.md @@ -4,10 +4,12 @@ title: "CWinFormsControl Class" ms.date: "11/04/2016" f1_keywords: ["CWinFormsControl", "AFXWINFORMS/CWinFormsControl", "AFXWINFORMS/CWinFormsControl::CWinFormsControl", "AFXWINFORMS/CWinFormsControl::CreateManagedControl", "AFXWINFORMS/CWinFormsControl::GetControl", "AFXWINFORMS/CWinFormsControl::GetControlHandle"] helpviewer_keywords: ["CWinFormsControl [MFC], CWinFormsControl", "CWinFormsControl [MFC], CreateManagedControl", "CWinFormsControl [MFC], GetControl", "CWinFormsControl [MFC], GetControlHandle"] -ms.assetid: 6406dd7b-fb89-4a18-ac3a-c010d6b6289a --- # CWinFormsControl Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the basic functionality for hosting of a Windows Forms control. ## Syntax diff --git a/docs/mfc/reference/cwinformsdialog-class.md b/docs/mfc/reference/cwinformsdialog-class.md index 89e9ab38315..f24797163f1 100644 --- a/docs/mfc/reference/cwinformsdialog-class.md +++ b/docs/mfc/reference/cwinformsdialog-class.md @@ -4,10 +4,12 @@ title: "CWinFormsDialog Class" ms.date: "03/27/2019" f1_keywords: ["CWinFormsDialog", "AFXWINFORMS/CWinFormsDialog", "AFXWINFORMS/CWinFormsDialog::CWinFormsDialog", "AFXWINFORMS/CWinFormsDialog::GetControl", "AFXWINFORMS/CWinFormsDialog::GetControlHandle", "AFXWINFORMS/CWinFormsDialog::OnInitDialog"] helpviewer_keywords: ["CWinFormsDialog [MFC], CWinFormsDialog", "CWinFormsDialog [MFC], GetControl", "CWinFormsDialog [MFC], GetControlHandle", "CWinFormsDialog [MFC], OnInitDialog"] -ms.assetid: e3cec000-a578-448e-b06a-8af256312f61 --- # CWinFormsDialog Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A wrapper for an MFC dialog class that hosts a Windows Forms user control. ## Syntax diff --git a/docs/mfc/reference/cwinformsview-class.md b/docs/mfc/reference/cwinformsview-class.md index 624a55aadff..549c6236de3 100644 --- a/docs/mfc/reference/cwinformsview-class.md +++ b/docs/mfc/reference/cwinformsview-class.md @@ -4,10 +4,12 @@ title: "CWinFormsView Class" ms.date: "11/04/2016" f1_keywords: ["CWinFormsView", "AFXWINFORMS/CWinFormsView", "AFXWINFORMS/CWinFormsView::CWinFormsView", "AFXWINFORMS/CWinFormsView::GetControl"] helpviewer_keywords: ["CWinFormsView [MFC], CWinFormsView", "CWinFormsView [MFC], GetControl"] -ms.assetid: d597e397-6529-469b-88f5-7f65a6b9e895 --- # CWinFormsView Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides generic functionality for hosting of a Windows Forms control as an MFC view. ## Syntax diff --git a/docs/mfc/reference/cwinthread-class.md b/docs/mfc/reference/cwinthread-class.md index 02e9bfbfa88..4cc52e29c7b 100644 --- a/docs/mfc/reference/cwinthread-class.md +++ b/docs/mfc/reference/cwinthread-class.md @@ -4,10 +4,12 @@ title: "CWinThread Class" ms.date: "11/04/2016" f1_keywords: ["CWinThread", "AFXWIN/CWinThread", "AFXWIN/CWinThread::CWinThread", "AFXWIN/CWinThread::CreateThread", "AFXWIN/CWinThread::ExitInstance", "AFXWIN/CWinThread::GetMainWnd", "AFXWIN/CWinThread::GetThreadPriority", "AFXWIN/CWinThread::InitInstance", "AFXWIN/CWinThread::IsIdleMessage", "AFXWIN/CWinThread::OnIdle", "AFXWIN/CWinThread::PostThreadMessage", "AFXWIN/CWinThread::PreTranslateMessage", "AFXWIN/CWinThread::ProcessMessageFilter", "AFXWIN/CWinThread::ProcessWndProcException", "AFXWIN/CWinThread::PumpMessage", "AFXWIN/CWinThread::ResumeThread", "AFXWIN/CWinThread::Run", "AFXWIN/CWinThread::SetThreadPriority", "AFXWIN/CWinThread::SuspendThread", "AFXWIN/CWinThread::m_bAutoDelete", "AFXWIN/CWinThread::m_hThread", "AFXWIN/CWinThread::m_nThreadID", "AFXWIN/CWinThread::m_pActiveWnd", "AFXWIN/CWinThread::m_pMainWnd"] helpviewer_keywords: ["CWinThread [MFC], CWinThread", "CWinThread [MFC], CreateThread", "CWinThread [MFC], ExitInstance", "CWinThread [MFC], GetMainWnd", "CWinThread [MFC], GetThreadPriority", "CWinThread [MFC], InitInstance", "CWinThread [MFC], IsIdleMessage", "CWinThread [MFC], OnIdle", "CWinThread [MFC], PostThreadMessage", "CWinThread [MFC], PreTranslateMessage", "CWinThread [MFC], ProcessMessageFilter", "CWinThread [MFC], ProcessWndProcException", "CWinThread [MFC], PumpMessage", "CWinThread [MFC], ResumeThread", "CWinThread [MFC], Run", "CWinThread [MFC], SetThreadPriority", "CWinThread [MFC], SuspendThread", "CWinThread [MFC], m_bAutoDelete", "CWinThread [MFC], m_hThread", "CWinThread [MFC], m_nThreadID", "CWinThread [MFC], m_pActiveWnd", "CWinThread [MFC], m_pMainWnd"] -ms.assetid: 10cdc294-4057-4e76-ac7c-a8967a89af0b --- # `CWinThread` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Represents a thread of execution within an application. ## Syntax diff --git a/docs/mfc/reference/cwnd-class.md b/docs/mfc/reference/cwnd-class.md index 37b4d19b134..40d6e732502 100644 --- a/docs/mfc/reference/cwnd-class.md +++ b/docs/mfc/reference/cwnd-class.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["CWnd [MFC], CWnd", "CWnd [MFC], accDoDefaultAction", "CWn --- # `CWnd` Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides the base functionality of all window classes in the Microsoft Foundation Class Library. ## Syntax diff --git a/docs/mfc/reference/cwordarray-class.md b/docs/mfc/reference/cwordarray-class.md index 76e6c6e25ab..52941cdfd84 100644 --- a/docs/mfc/reference/cwordarray-class.md +++ b/docs/mfc/reference/cwordarray-class.md @@ -4,10 +4,12 @@ title: "CWordArray Class" ms.date: "09/07/2019" f1_keywords: ["CWordArray", "AFXCOLL/CWordArray", "AFXCOLL/CWordArray::CWordArray", "AFXCOLL/CWordArray::Add", "AFXCOLL/CWordArray::Append", "AFXCOLL/CWordArray::Copy", "AFXCOLL/CWordArray::ElementAt", "AFXCOLL/CWordArray::FreeExtra", "AFXCOLL/CWordArray::GetAt", "AFXCOLL/CWordArray::GetCount", "AFXCOLL/CWordArray::GetData", "AFXCOLL/CWordArray::GetSize", "AFXCOLL/CWordArray::GetUpperBound", "AFXCOLL/CWordArray::InsertAt", "AFXCOLL/CWordArray::IsEmpty", "AFXCOLL/CWordArray::RemoveAll", "AFXCOLL/CWordArray::RemoveAt", "AFXCOLL/CWordArray::SetAt", "AFXCOLL/CWordArray::SetAtGrow", "AFXCOLL/CWordArray::SetSize"] helpviewer_keywords: ["CWordArray [MFC], CWordArray", "CWordArray [MFC], Add", "CWordArray [MFC], Append", "CWordArray [MFC], Copy", "CWordArray [MFC], ElementAt", "CWordArray [MFC], FreeExtra", "CWordArray [MFC], GetAt", "CWordArray [MFC], GetCount", "CWordArray [MFC], GetData", "CWordArray [MFC], GetSize", "CWordArray [MFC], GetUpperBound", "CWordArray [MFC], InsertAt", "CWordArray [MFC], IsEmpty", "CWordArray [MFC], RemoveAll", "CWordArray [MFC], RemoveAt", "CWordArray [MFC], SetAt", "CWordArray [MFC], SetAtGrow", "CWordArray [MFC], SetSize"] -ms.assetid: 2ba2c194-2c6c-40ff-9db4-e9dbe57e1f57 --- # CWordArray Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Supports arrays of 16-bit words. ## Syntax diff --git a/docs/mfc/reference/dao-database-engine-initialization-and-termination.md b/docs/mfc/reference/dao-database-engine-initialization-and-termination.md index 67e0826e34d..937431e7009 100644 --- a/docs/mfc/reference/dao-database-engine-initialization-and-termination.md +++ b/docs/mfc/reference/dao-database-engine-initialization-and-termination.md @@ -3,10 +3,12 @@ description: "Learn more about: DAO Database Engine Initialization and Terminati title: "DAO Database Engine Initialization and Termination" ms.date: "09/17/2019" helpviewer_keywords: ["DAO (Data Access Objects), termination", "DAO (Data Access Objects), initialization"] -ms.assetid: a7edf31c-e7c2-4f3e-aada-63c3e48781da --- # DAO Database Engine Initialization and Termination +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. When using MFC DAO objects, the DAO database engine must first be initialized and then terminated before your application or DLL quits. Two functions, `AfxDaoInit` and `AfxDaoTerm`, perform these tasks. ### DAO Database Engine Initialization and Termination diff --git a/docs/mfc/reference/data-types-mfc.md b/docs/mfc/reference/data-types-mfc.md index 9893062dab9..d8c7488a1cb 100644 --- a/docs/mfc/reference/data-types-mfc.md +++ b/docs/mfc/reference/data-types-mfc.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["LPCRECT data type [MFC]", "WPARAM data type [MFC]", "data --- # Data Types (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic lists the data types most commonly used in the Microsoft Foundation Class (MFC) Library. Most of the data types are the same as those in the Platform Software Development Kit (SDK), while others are unique to MFC. For information about the data types used in both the Windows SDK and MFC, see [Windows Data Types](/windows/win32/WinProg/windows-data-types). diff --git a/docs/mfc/reference/database-macros-and-globals.md b/docs/mfc/reference/database-macros-and-globals.md index 0a51a55db66..b210e2a8037 100644 --- a/docs/mfc/reference/database-macros-and-globals.md +++ b/docs/mfc/reference/database-macros-and-globals.md @@ -4,10 +4,12 @@ title: "Database Macros and Globals" ms.date: "11/04/2016" f1_keywords: ["AFXDB/AFX_ODBC_CALL", "AFXDB/AFX_SQL_ASYNC", "AFXDB/AFX_SQL_SYNC", "AFXDB/AfxGetHENV"] helpviewer_keywords: ["global database functions [MFC]", "database macros [MFC]", "database globals [MFC]", "global functions [MFC], database functions", "macros [MFC], MFC database"] -ms.assetid: 5b9b9e61-1cf9-4345-9f29-3807dd466488 --- # Database Macros and Globals +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The macros and globals listed below apply to ODBC-based database applications. They are not used with DAO-based applications. Before MFC 4.2, the macros `AFX_SQL_ASYNC` and `AFX_SQL_SYNC` gave asynchronous operations an opportunity to yield time to other processes. Beginning with MFC 4.2, the implementation of these macros changed because the MFC ODBC classes used only synchronous operations. The macro `AFX_ODBC_CALL` was new to MFC 4.2. diff --git a/docs/mfc/reference/database-support-mfc-application-wizard.md b/docs/mfc/reference/database-support-mfc-application-wizard.md index 8430be65389..317ec1832c8 100644 --- a/docs/mfc/reference/database-support-mfc-application-wizard.md +++ b/docs/mfc/reference/database-support-mfc-application-wizard.md @@ -4,10 +4,12 @@ title: "Database Support, MFC Application Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.mfc.exe.database"] helpviewer_keywords: ["MFC Application Wizard, database support"] -ms.assetid: 9ddf4558-fd41-4ac7-8d9b-c93d9c68ab59 --- # Database Support, MFC Application Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This page provides options that allow you to specify the level of database support (plus a data source, if necessary) for your project. - **Database support** diff --git a/docs/mfc/reference/ddx-dhtml-helper-macros.md b/docs/mfc/reference/ddx-dhtml-helper-macros.md index cc1d4e7bebf..597dbbc19ab 100644 --- a/docs/mfc/reference/ddx-dhtml-helper-macros.md +++ b/docs/mfc/reference/ddx-dhtml-helper-macros.md @@ -4,10 +4,12 @@ title: "DDX_DHtml Helper Macros" ms.date: "11/04/2016" f1_keywords: ["AFXDHTML/DDX_DHtml_ElementValue", "AFXDHTML/DDX_DHtml_ElementInnerText", "AFXDHTML/DDX_DHtml_ElementInnerHtml", "AFXDHTML/DDX_DHtml_Anchor_Href", "AFXDHTML/DDX_DHtml_Anchor_Target", "AFXDHTML/DDX_DHtml_Img_Src", "AFXDHTML/DDX_DHtml_Frame_Src", "AFXDHTML/DDX_DHtml_IFrame_Src"] helpviewer_keywords: ["macros [MFC], exchanging data with HMTL pages", "DDX macros [MFC]", "HTML pages [MFC], helper macros", "DDX (dialog data exchange), DHtml helper macros", "macros [MFC], DDX_DHtml helpers"] -ms.assetid: c46302d2-ea43-4fea-bfc2-6f590d99f267 --- # DDX_DHtml Helper Macros +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The DDX_DHtml helper macros allow easy access to the commonly used properties of controls on an HTML page. ### Data Exchange Macros diff --git a/docs/mfc/reference/declaring-a-variable-based-on-your-new-control-class.md b/docs/mfc/reference/declaring-a-variable-based-on-your-new-control-class.md index d911fb2a338..9d0cd90dd1f 100644 --- a/docs/mfc/reference/declaring-a-variable-based-on-your-new-control-class.md +++ b/docs/mfc/reference/declaring-a-variable-based-on-your-new-control-class.md @@ -4,10 +4,12 @@ title: "Declaring a Variable Based on Your New Control Class" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.classes.control.variable"] helpviewer_keywords: ["variables [MFC], control classes", "control classes [MFC], variables", "classes [MFC], declaring variables based on"] -ms.assetid: 5722dc38-c0eb-40bd-93da-67a808140d03 --- # Declaring a Variable Based on Your New Control Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Once you have created an MFC control class, you can declare a variable based on it. To provide a context for the new variable, you must open the dialog editor and edit the dialog box in which you want to use your reusable control. Also, the dialog box must already have a class associated with it. For information on using the dialog editor, see [Dialog Editor](../../windows/dialog-editor.md). ### To declare a variable based on your reusable class diff --git a/docs/mfc/reference/defining-a-message-handler-for-a-reflected-message.md b/docs/mfc/reference/defining-a-message-handler-for-a-reflected-message.md index 7e3b2efc820..cc57d41b8b6 100644 --- a/docs/mfc/reference/defining-a-message-handler-for-a-reflected-message.md +++ b/docs/mfc/reference/defining-a-message-handler-for-a-reflected-message.md @@ -4,10 +4,12 @@ title: "Defining a Message Handler for a Reflected Message" ms.date: "09/07/2019" f1_keywords: ["vc.codewiz.defining.msg.msghandler"] helpviewer_keywords: ["messages [MFC], reflected", "message handling [MFC], reflected messages"] -ms.assetid: 5a403528-58c5-46e7-90d5-4a77f0ab9b9c --- # Defining a Message Handler for a Reflected Message +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Once you have created a new MFC control class, you can define message handlers for it. Reflected message handlers allow your control class to handle its own messages before the message is received by the parent. You can use the MFC [CWnd::SendMessage](../../mfc/reference/cwnd-class.md#sendmessage) function to send messages from your control to a parent window. With this functionality you could, for example, create a list box that will redraw itself rather than relying on the parent window to do so (owner drawn). For more information on reflected messages, see [Handling Reflected Messages](../../mfc/handling-reflected-messages.md). diff --git a/docs/mfc/reference/delegate-and-interface-maps.md b/docs/mfc/reference/delegate-and-interface-maps.md index 518e659915c..2aa03516318 100644 --- a/docs/mfc/reference/delegate-and-interface-maps.md +++ b/docs/mfc/reference/delegate-and-interface-maps.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["delegate map macros [MFC]", "event map macros [MFC]", "in --- # Delegate and interface map macros +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC supports these macros for delegate and interface maps: |Name|Description| diff --git a/docs/mfc/reference/details-of-atl-support-added-by-the-atl-wizard.md b/docs/mfc/reference/details-of-atl-support-added-by-the-atl-wizard.md index 75372cba8f4..087069bbf41 100644 --- a/docs/mfc/reference/details-of-atl-support-added-by-the-atl-wizard.md +++ b/docs/mfc/reference/details-of-atl-support-added-by-the-atl-wizard.md @@ -4,13 +4,16 @@ title: "Details of ATL Support Added by the ATL Wizard" ms.date: "08/20/2019" f1_keywords: ["vc.codewiz.atl.support"] helpviewer_keywords: ["MFC, ATL support", "ATL, MFC projects"] -ms.assetid: aa66bad0-008f-4886-94c1-2a0a0d04bce4 --- + # Details of ATL Support Added by the ATL Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) and Active Template Library (ATL) libraries continue to be supported. However, we're no longer adding features or updating the documentation. + ::: moniker range=">=msvc-160" -When you [add ATL support to an existing MFC executable or DLL](../../mfc/reference/adding-atl-support-to-your-mfc-project.md), Visual Studio adds a header file called *framework.h* by default, which contains `#include` and `#define` preprocessor directives to enable the use of ATL in your project. No additional files or classes are added, as was done in previous versions of Visual Studio. +When you [add ATL support to an existing MFC executable or DLL](../../mfc/reference/adding-atl-support-to-your-mfc-project.md), Visual Studio adds a header file called `framework.h` by default, which contains `#include` and `#define` preprocessor directives to enable the use of ATL in your project. No additional files or classes are added, as was done in previous versions of Visual Studio. ::: moniker-end diff --git a/docs/mfc/reference/dhtml-editing-command-maps.md b/docs/mfc/reference/dhtml-editing-command-maps.md index 817b045cfc7..eb8672332d6 100644 --- a/docs/mfc/reference/dhtml-editing-command-maps.md +++ b/docs/mfc/reference/dhtml-editing-command-maps.md @@ -2,10 +2,12 @@ description: "Learn more about: DHTML Editing Command Maps" title: "DHTML Editing Command Maps" ms.date: "11/04/2016" -ms.assetid: c1b49876-039e-4a26-bb24-ea98ccf254a1 --- # DHTML Editing Command Maps +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following macros can be used to map DHTML editing commands in [CHtmlEditView](../../mfc/reference/chtmleditview-class.md)-derived classes. For an example of their use, see [HTMLEdit Sample](../../overview/visual-cpp-samples.md). ### DHTML Editing Command Map Macros diff --git a/docs/mfc/reference/dhtml-event-maps.md b/docs/mfc/reference/dhtml-event-maps.md index b613eca890f..edc049eefaa 100644 --- a/docs/mfc/reference/dhtml-event-maps.md +++ b/docs/mfc/reference/dhtml-event-maps.md @@ -4,10 +4,12 @@ title: "DHTML Event Maps" ms.date: "11/04/2016" f1_keywords: ["vc.macros.shared"] helpviewer_keywords: ["event map macros [MFC]", "DHTML [MFC], event map macros", "macros [MFC], DHTML event map", "DHTML events [MFC], event map", "DHTML events [MFC]"] -ms.assetid: 9a2c8ae7-7216-4a5e-bc60-6b98695be0c6 --- # DHTML Event Maps +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following macros can be used to handle DHTML events. ## DHTML Event Map Macros diff --git a/docs/mfc/reference/dhtmlurleventmapentry-structure.md b/docs/mfc/reference/dhtmlurleventmapentry-structure.md index 2664dadb6f2..d1b3181f822 100644 --- a/docs/mfc/reference/dhtmlurleventmapentry-structure.md +++ b/docs/mfc/reference/dhtmlurleventmapentry-structure.md @@ -4,10 +4,12 @@ title: "DHtmlUrlEventMapEntry Structure" ms.date: "11/04/2016" f1_keywords: ["DHtmlUrlEventMapEntry"] helpviewer_keywords: ["DHtmlUrlEventMapEntry structure [MFC]"] -ms.assetid: 43117c1f-1a51-406c-aa2f-fea647080049 --- # DHtmlUrlEventMapEntry Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The `DHtmlUrlEventMapEntry` structure provides multi-URL event map support. ## Syntax diff --git a/docs/mfc/reference/diagnostic-services.md b/docs/mfc/reference/diagnostic-services.md index 235d76280b4..afc822dd261 100644 --- a/docs/mfc/reference/diagnostic-services.md +++ b/docs/mfc/reference/diagnostic-services.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["diagnosi [MFC]s, diagnostic services", "diagnostic macros --- # Diagnostic Services +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Class Library supplies many diagnostic services that make debugging your programs easier. These diagnostic services include macros and global functions that allow you to track your program's memory allocations, dump the contents of objects during run time, and print debugging messages during run time. The macros and global functions for diagnostic services are grouped into the following categories: - General diagnostic macros diff --git a/docs/mfc/reference/dialog-data-exchange-functions-for-crecordview-and-cdaorecordview.md b/docs/mfc/reference/dialog-data-exchange-functions-for-crecordview-and-cdaorecordview.md index 06e79c9647e..c9544270702 100644 --- a/docs/mfc/reference/dialog-data-exchange-functions-for-crecordview-and-cdaorecordview.md +++ b/docs/mfc/reference/dialog-data-exchange-functions-for-crecordview-and-cdaorecordview.md @@ -4,10 +4,12 @@ title: "Dialog Data Exchange Functions for CRecordView and CDaoRecordView" ms.date: "09/17/2019" f1_keywords: ["AFXDAO/DDX_FieldCBIndex", "AFXDAO/DDX_FieldCBString", "AFXDAO/DDX_FieldCBStringExact", "AFXDAO/DDX_FieldCheck", "AFXDAO/DDX_FieldLBIndex", "AFXDAO/DDX_FieldLBString", "AFXDAO/DDX_FieldLBStringExact", "AFXDAO/DDX_FieldRadio", "AFXDAO/DDX_FieldScroll", "AFXDAO/DDX_FieldText"] helpviewer_keywords: ["DDX_Field functions [MFC]", "ODBC [MFC], dialog data exchange (DDX) support", "DDX (dialog data exchange) [MFC], database support", "DDX (dialog data exchange) [MFC], functions", "databases [MFC], dialog data exchange (DDX) support", "DAO [MFC], dialog data exchange (DDX) support"] -ms.assetid: 0d8cde38-3a2c-4100-9589-ac80a7b1ce91 --- # Dialog Data Exchange Functions for CRecordView and CDaoRecordView +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic lists the DDX_Field functions used to exchange data between a [CRecordset](../../mfc/reference/crecordset-class.md) and a [CRecordView](../../mfc/reference/crecordview-class.md) form or a [CDaoRecordset](../../mfc/reference/cdaorecordset-class.md) and a [CDaoRecordView](../../mfc/reference/cdaorecordview-class.md) form. DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. > [!NOTE] diff --git a/docs/mfc/reference/dialog-data-exchange-functions-for-ole-controls.md b/docs/mfc/reference/dialog-data-exchange-functions-for-ole-controls.md index 7df654e2812..35eba789e94 100644 --- a/docs/mfc/reference/dialog-data-exchange-functions-for-ole-controls.md +++ b/docs/mfc/reference/dialog-data-exchange-functions-for-ole-controls.md @@ -4,10 +4,12 @@ title: "Dialog Data Exchange Functions for OLE Controls" ms.date: "11/04/2016" f1_keywords: ["AFXDISP/DDX_OCBool", "AFXDISP/DDX_OCBoolRO", "AFXDISP/DDX_OCColor", "AFXDISP/DDX_OCColorRO", "AFXDISP/DDX_OCFloat", "AFXDISP/DDX_OCFloatRO", "AFXDISP/DDX_OCInt", "AFXDISP/DDX_OCIntRO", "AFXDISP/DDX_OCShort", "AFXDISP/DDX_OCShortRO", "AFXDISP/DDX_OCText", "AFXDISP/DDX_OCTextRO"] helpviewer_keywords: ["OLE controls [MFC], DDX functions", "DDX (dialog data exchange), OLE support"] -ms.assetid: 7ef1f288-ff65-40d4-aad2-5497bc00bb27 --- # Dialog Data Exchange Functions for OLE Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic lists the DDX_OC functions used to exchange data between a property of an OLE control in a dialog box, form view, or control view object and a data member of the dialog box, form view, or control view object. ### DDX_OC Functions diff --git a/docs/mfc/reference/dispatch-maps.md b/docs/mfc/reference/dispatch-maps.md index 571218e9715..9d7c82dd749 100644 --- a/docs/mfc/reference/dispatch-maps.md +++ b/docs/mfc/reference/dispatch-maps.md @@ -3,10 +3,12 @@ description: "Learn more about: Dispatch Maps" title: "Dispatch Maps" ms.date: "06/20/2018" helpviewer_keywords: ["dispatch maps [MFC], macros", "dispatch maps [MFC]", "dispatch map macros [MFC]"] -ms.assetid: bef9d08b-ad35-4c3a-99d8-04150c7c04e2 --- # Dispatch Maps +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + OLE Automation provides ways to call methods and to access properties across applications. The mechanism supplied by the Microsoft Foundation Class Library for dispatching these requests is the "dispatch map," which designates the internal and external names of object functions and properties, as well as the data types of the properties themselves and of function arguments. |Dispatch map macro|Description| diff --git a/docs/mfc/reference/document-template-strings-mfc-application-wizard.md b/docs/mfc/reference/document-template-strings-mfc-application-wizard.md index 29c42ee91a8..6cb67bac734 100644 --- a/docs/mfc/reference/document-template-strings-mfc-application-wizard.md +++ b/docs/mfc/reference/document-template-strings-mfc-application-wizard.md @@ -4,10 +4,12 @@ title: "Document Template Strings, MFC Application Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.mfc.exe.doctemp"] helpviewer_keywords: ["MFC Application Wizard, document template strings"] -ms.assetid: 8109f662-3182-4682-977a-2503321c678a --- # Document Template Strings, MFC Application Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In this page of the MFC Application Wizard, provide or refine the following options to help with document management and localization. Document template strings are available for applications that include **Document/view architecture support** in the [Application Type](../../mfc/reference/application-type-mfc-application-wizard.md). They are not available for dialog boxes. Because most document template strings are visible and used by the application's users, they are localized into the **Resource language** indicated in the **Application Type** page of the wizard. - **Nonlocalized strings** diff --git a/docs/mfc/reference/edit-control-handlers.md b/docs/mfc/reference/edit-control-handlers.md index 4fc2ee2591c..4b33390e216 100644 --- a/docs/mfc/reference/edit-control-handlers.md +++ b/docs/mfc/reference/edit-control-handlers.md @@ -4,10 +4,12 @@ title: "Edit Control Handlers" ms.date: "11/04/2016" f1_keywords: ["ON_EN_ERRSPACE", "ON_EN_UPDATE", "ON_EN_VSCROLL", "ON_EN_HSCROLL", "ON_EN_KILLFOCUS", "ON_EN_MAXTEXT", "ON_EN_SETFOCUS", "ON_EN_CHANGE"] helpviewer_keywords: ["ON_EN_ERRSPACE macro [MFC]", "ON_EN_SETFOCUS macro [MFC]", "ON_EN_UPDATE macro [MFC]", "ON_EN_MAXTEXT macro [MFC]", "ON_EN_CHANGE macro [MFC]", "ON_EN_HSCROLL macro [MFC]", "ON_EN_VSCROLL macro [MFC]", "ON_EN_KILLFOCUS macro [MFC]", "edit controls [MFC], edit control handlers"] -ms.assetid: 55b88b5e-12b5-4422-b03e-c8c2f27d095c --- # Edit Control Handlers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entries correspond to the function prototype. |Map entry|Function prototype| diff --git a/docs/mfc/reference/editing-a-message-handler.md b/docs/mfc/reference/editing-a-message-handler.md index 17f1783f009..e54b6e9322e 100644 --- a/docs/mfc/reference/editing-a-message-handler.md +++ b/docs/mfc/reference/editing-a-message-handler.md @@ -4,10 +4,12 @@ title: "Editing a Message Handler" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.editing.msghandler"] helpviewer_keywords: ["message handlers [MFC]", "message handling [MFC], editing handlers"] -ms.assetid: 7babb496-1f14-43b1-a14d-2e54402a92e2 --- # Editing a Message Handler +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Once you have defined a message handler, you can go to the member function's definition to add or modify code. To jump to a member function definition from the [dialog editor](../../windows/dialog-editor.md), double-click a control for which a handler is already defined. This navigates you to the file in which the selected control's message handler is defined. diff --git a/docs/mfc/reference/event-maps.md b/docs/mfc/reference/event-maps.md index 2766a3a56a5..b6392f23e83 100644 --- a/docs/mfc/reference/event-maps.md +++ b/docs/mfc/reference/event-maps.md @@ -3,10 +3,12 @@ description: "Learn more about: Event Maps" title: "Event Maps" ms.date: "09/07/2019" helpviewer_keywords: ["event maps [MFC]"] -ms.assetid: 1ed53aee-bc53-43cd-834a-6fb935c0d29b --- # Event Maps +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Whenever a control wishes to notify its container that some action (determined by the control developer) has happened (such as a keystroke, mouse click, or a change to the control's state) it calls an event-firing function. This function notifies the control container that some important action has occurred by firing the related event. The Microsoft Foundation Class Library offers a programming model optimized for firing events. In this model, "event maps" are used to designate which functions fire which events for a particular control. Event maps contain one macro for each event. For example, an event map that fires a stock Click event might look like this: diff --git a/docs/mfc/reference/event-sink-maps.md b/docs/mfc/reference/event-sink-maps.md index e1475a88c77..d4dad8707fc 100644 --- a/docs/mfc/reference/event-sink-maps.md +++ b/docs/mfc/reference/event-sink-maps.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["event sink maps [MFC]"] --- # Event Sink Maps +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When an embedded OLE control fires an event, the control's container receives the event using a mechanism, called an "event sink map," supplied by MFC. This event sink map designates handler functions for each specific event, as well as parameters of those events. For more information on event sink maps, see the article [ActiveX Control Containers](../../mfc/activex-control-containers.md). ### Event Sink Maps diff --git a/docs/mfc/reference/exception-processing.md b/docs/mfc/reference/exception-processing.md index cd5e64b1d63..687a470c9c4 100644 --- a/docs/mfc/reference/exception-processing.md +++ b/docs/mfc/reference/exception-processing.md @@ -3,10 +3,12 @@ description: "Learn more about: Exception Processing" title: "Exception Processing" ms.date: "11/04/2016" helpviewer_keywords: ["macros [MFC], exception handling", "DAO (Data Access Objects), exceptions [MFC]", "OLE exceptions [MFC], MFC functions", "exceptions [MFC], processing", "exception macros [MFC]", "termination functions, MFC", "MFC, exceptions", "exceptions [MFC], MFC throwing functions"] -ms.assetid: 26d4457c-8350-48f5-916e-78f919787c30 --- # Exception Processing +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When a program executes, a number of abnormal conditions and errors called "exceptions" can occur. These may include running out of memory, resource allocation errors, and failure to find files. The Microsoft Foundation Class Library uses an exception-handling scheme that is modeled closely after the one proposed by the ANSI standards committee for C++. An exception handler must be set up before calling a function that may encounter an abnormal situation. If the function encounters an abnormal condition, it throws an exception and control is passed to the exception handler. diff --git a/docs/mfc/reference/extension-dll-macros.md b/docs/mfc/reference/extension-dll-macros.md index a3682634f71..548496d62fa 100644 --- a/docs/mfc/reference/extension-dll-macros.md +++ b/docs/mfc/reference/extension-dll-macros.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["module macros in MFC"] --- # Macros and functions for managing DLLs +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + | Name | Description | |--|--| | [`AFX_EXT_CLASS`](#afx_ext_class)] | Exports classes. | diff --git a/docs/mfc/reference/generated-classes-mfc-application-wizard.md b/docs/mfc/reference/generated-classes-mfc-application-wizard.md index 7bdcfd54455..de59480ba26 100644 --- a/docs/mfc/reference/generated-classes-mfc-application-wizard.md +++ b/docs/mfc/reference/generated-classes-mfc-application-wizard.md @@ -4,10 +4,12 @@ title: "Generated Classes, MFC Application Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.mfc.exe.classes"] helpviewer_keywords: ["MFC Application Wizard, generated classes"] -ms.assetid: 5f33209c-7f01-4f72-8c1c-6f02f507ba9f --- # Generated Classes, MFC Application Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic lists the names of base classes and files that your project generates. By default, the names are based on the project name that you specified in the **New Project Dialog Box**. You can change most of these names, as described here: - **Generated classes** diff --git a/docs/mfc/reference/generic-control-handler.md b/docs/mfc/reference/generic-control-handler.md index 7006c0d77b3..37f27818fa9 100644 --- a/docs/mfc/reference/generic-control-handler.md +++ b/docs/mfc/reference/generic-control-handler.md @@ -3,10 +3,12 @@ description: "Learn more about: Generic Control Handler" title: "Generic Control Handler" ms.date: "11/04/2016" helpviewer_keywords: ["handlers [MFC], ON_CONTROL", "handlers [MFC]", "GenericControl Handler [MFC]", "ON_CONTROL macro [MFC]"] -ms.assetid: 1e25e583-5d5a-4363-8904-839991a8570d --- # Generic Control Handler +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entry corresponds to the function prototype. |Map entry|Function prototype| diff --git a/docs/mfc/reference/gray-and-dithered-bitmap-functions.md b/docs/mfc/reference/gray-and-dithered-bitmap-functions.md index d2d80261f07..4d33b4f498a 100644 --- a/docs/mfc/reference/gray-and-dithered-bitmap-functions.md +++ b/docs/mfc/reference/gray-and-dithered-bitmap-functions.md @@ -4,10 +4,12 @@ title: "Gray and Dithered Bitmap Functions" ms.date: "11/19/2018" f1_keywords: ["AFXWIN/AfxDrawGrayBitmap", "AFXWIN/AfxGetGrayBitmap", "AFXWIN/AfxDrawDitheredBitmap", "AFXWIN/AfxGetDitheredBitmap"] helpviewer_keywords: ["gray and dithered bitmap functions [MFC]"] -ms.assetid: cb139a77-b85e-4504-9d93-24156ad77a41 --- # Gray and Dithered Bitmap Functions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + **Gray Bitmap Functions** MFC provides two functions for giving a bitmap the appearance of a disabled control. diff --git a/docs/mfc/reference/handlers-for-wm-messages.md b/docs/mfc/reference/handlers-for-wm-messages.md index eb656fb8f76..a562529cbd9 100644 --- a/docs/mfc/reference/handlers-for-wm-messages.md +++ b/docs/mfc/reference/handlers-for-wm-messages.md @@ -3,10 +3,12 @@ description: "Learn more about: Handlers for WM_ Messages" title: "Handlers for WM_ Messages" ms.date: "11/04/2016" helpviewer_keywords: ["WM_ messages [MFC]"] -ms.assetid: cad81690-90bf-4f77-943f-a435e7563bdd --- # Handlers for WM_ Messages +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following topics correspond to the map entries. |Topic|Map entries| diff --git a/docs/mfc/reference/how-to-use-the-message-map-cross-reference.md b/docs/mfc/reference/how-to-use-the-message-map-cross-reference.md index 8141dd49521..b93284c67e1 100644 --- a/docs/mfc/reference/how-to-use-the-message-map-cross-reference.md +++ b/docs/mfc/reference/how-to-use-the-message-map-cross-reference.md @@ -3,10 +3,12 @@ description: "Learn more about: How to: Use the Message-Map Cross-Reference" title: "How to: Use the Message-Map Cross-Reference" ms.date: "11/04/2016" helpviewer_keywords: ["windows [MFC], message maps"] -ms.assetid: 2e863d23-9e58-45ba-b5e4-a8ceefccd0c8 --- # How to: Use the Message-Map Cross-Reference +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In entries labeled \, write your own member function for a derived [CWnd](../../mfc/reference/cwnd-class.md) class. Give your function any name you like. Other functions, such as `OnActivate`, are member functions of class `CWnd`. If called, they pass the message to the `DefWindowProc` Windows function. To process Windows notification messages, override the corresponding `CWnd` function in your derived class. Your function should call the overridden function in your base class to let the base class and Windows respond to the message. In all cases, put the function prototype in the `CWnd`-derived class header, and code the message map entry as shown. diff --git a/docs/mfc/reference/hse-version-info-structure.md b/docs/mfc/reference/hse-version-info-structure.md index 3917f359172..30cb155cdac 100644 --- a/docs/mfc/reference/hse-version-info-structure.md +++ b/docs/mfc/reference/hse-version-info-structure.md @@ -4,10 +4,12 @@ title: "HSE_VERSION_INFO Structure" ms.date: "11/04/2016" f1_keywords: ["HSE_VERSION_INFO"] helpviewer_keywords: ["HSE_VERSION_INFO structure [MFC]"] -ms.assetid: 4837312d-68c8-4d05-9afa-1934d7d49b20 --- # HSE_VERSION_INFO Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This structure is pointed to by the *pVer* parameter in the `CHttpServer::GetExtensionVersion` member function. It provides the ISA version number and a text description of the ISA. ## Syntax diff --git a/docs/mfc/reference/icommandsource-interface.md b/docs/mfc/reference/icommandsource-interface.md index 80fd3391887..b5499c10a48 100644 --- a/docs/mfc/reference/icommandsource-interface.md +++ b/docs/mfc/reference/icommandsource-interface.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["ICommandSource interface [MFC]"] --- # ICommandSource Interface +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Manages commands sent from a command source object to a user control. ## Syntax diff --git a/docs/mfc/reference/icommandtarget-interface.md b/docs/mfc/reference/icommandtarget-interface.md index 95e3b7d45b8..5d5d07a167a 100644 --- a/docs/mfc/reference/icommandtarget-interface.md +++ b/docs/mfc/reference/icommandtarget-interface.md @@ -4,10 +4,12 @@ title: "ICommandTarget Interface" ms.date: "11/04/2016" f1_keywords: ["ICommandTarget", "AFXWINFORMS/ICommandTarget", "AFXWINFORMS/ICommandTarget::Initialize"] helpviewer_keywords: ["ICommandTarget interface [MFC]"] -ms.assetid: dd9927f6-3479-4e7c-8ef9-13206cf901f3 --- # ICommandTarget Interface +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Provides a user control with an interface to receive commands from a command source object. ## Syntax diff --git a/docs/mfc/reference/icommandui-interface.md b/docs/mfc/reference/icommandui-interface.md index 8e4e7726a6b..c2bc8e659ea 100644 --- a/docs/mfc/reference/icommandui-interface.md +++ b/docs/mfc/reference/icommandui-interface.md @@ -4,10 +4,12 @@ title: "ICommandUI Interface" ms.date: "09/07/2019" f1_keywords: ["ICommandUI", "AFXWINFORMS/ICommandUI", "AFXWINFORMS/icommandui__Check", "AFXWINFORMS/ICommandUI::ContinueRouting", "AFXWINFORMS/ICommandUI::Enabled", "AFXWINFORMS/ICommandUI::ID", "AFXWINFORMS/ICommandUI::Index", "AFXWINFORMS/ICommandUI::Radio", "AFXWINFORMS/ICommandUI::Text"] helpviewer_keywords: ["ICommandUI interface [MFC]"] -ms.assetid: 134afe8d-dcdf-47ca-857a-a166a6b665dd --- # ICommandUI Interface +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Manages user interface commands. ## Syntax diff --git a/docs/mfc/reference/internal-classes.md b/docs/mfc/reference/internal-classes.md index 09282b431ff..ceb3619df8e 100644 --- a/docs/mfc/reference/internal-classes.md +++ b/docs/mfc/reference/internal-classes.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["UpdateTabs method [MFC]", "Start method [MFC]", "IsLast m --- # Internal Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following classes are used internally in MFC. For completeness, this section describes these internal classes, but they aren't intended to be used directly in your code. ## In This Section diff --git a/docs/mfc/reference/internet-url-parsing-globals.md b/docs/mfc/reference/internet-url-parsing-globals.md index d87c5d1798e..053844d9984 100644 --- a/docs/mfc/reference/internet-url-parsing-globals.md +++ b/docs/mfc/reference/internet-url-parsing-globals.md @@ -3,10 +3,12 @@ description: "Learn more about: Internet URL Parsing Globals and Helpers" title: "Internet URL Parsing Globals and Helpers" ms.date: "04/03/2017" helpviewer_keywords: ["parsing, URLs", "URLs, parsing"] -ms.assetid: 46c6384f-e4a6-4dbd-9196-219c19040ec5 --- # Internet URL Parsing Globals and Helpers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When a client sends a query to the Internet server, you can use one of the URL parsing globals to extract information about the client. The helper functions provide other internet functionality. ## Internet URL Parsing Globals diff --git a/docs/mfc/reference/iview-interface.md b/docs/mfc/reference/iview-interface.md index 0cd40802b71..af902350ca1 100644 --- a/docs/mfc/reference/iview-interface.md +++ b/docs/mfc/reference/iview-interface.md @@ -4,10 +4,12 @@ title: "IView Interface" ms.date: "11/04/2016" f1_keywords: ["IView", "AFXWINFORMS/IView", "AFXWINFORMS/IView::OnActivateView", "AFXWINFORMS/IView::OnInitialUpdate", "AFXWINFORMS/IView::OnUpdate"] helpviewer_keywords: ["views [MFC]", "IView class [MFC]", "views [MFC], classes"] -ms.assetid: 9321f299-486e-4551-bee9-d2c4a7b91548 --- # IView Interface +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Implements several methods that [CWinFormsView](../../mfc/reference/cwinformsview-class.md) uses to send view notifications to a managed control. ## Syntax diff --git a/docs/mfc/reference/list-box-handlers.md b/docs/mfc/reference/list-box-handlers.md index 6563a51a716..f331b682812 100644 --- a/docs/mfc/reference/list-box-handlers.md +++ b/docs/mfc/reference/list-box-handlers.md @@ -4,10 +4,12 @@ title: "List Box Handlers" ms.date: "11/04/2016" f1_keywords: ["ON_LBN_DBLCLK", "ON_LBN_ERRSPACE", "ON_LBN_SETFOCUS", "ON_LBN_SELCHANGE", "ON_LBN_KILLFOCUS"] helpviewer_keywords: ["list boxes [MFC], list box handlers", "ON_LBN_KILLFOCUS", "ON_LBN_ERRSPACE", "ON_LBN_SELCHANGE", "ON_LBN_SETFOCUS", "ON_LBN_DBLCLK"] -ms.assetid: e4e54412-2167-436a-883b-5dcad01820b8 --- # List Box Handlers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entries have the corresponding function prototype. |Map entry|Function prototype| diff --git a/docs/mfc/reference/mapping-messages-to-functions.md b/docs/mfc/reference/mapping-messages-to-functions.md index 6121a62bd33..5331cb8cc67 100644 --- a/docs/mfc/reference/mapping-messages-to-functions.md +++ b/docs/mfc/reference/mapping-messages-to-functions.md @@ -4,10 +4,12 @@ title: "Mapping Messages to Functions" ms.date: "09/06/2019" f1_keywords: ["vc.codewiz.mapping.msg.function"] helpviewer_keywords: ["Windows messages [MFC], adding message handlers", "message maps [MFC], mapping messages to functions"] -ms.assetid: a7727a62-f638-4b20-b7f5-131f47200d6a --- # Mapping Messages to Functions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The [Class Wizard](mfc-class-wizard.md) enables you to bind message handlers (member functions of MFC user-interface classes) to the messages generated by your application's resources. They use [MFC message maps](../../mfc/messages-and-commands-in-the-framework.md) to create the binding. When you use Class View to create a new class derived from one of the framework classes, it automatically places a complete and functional class in the header (.h) and implementation (.cpp) files that you specify. diff --git a/docs/mfc/reference/message-map-macros-mfc.md b/docs/mfc/reference/message-map-macros-mfc.md index f2739a164d2..8b21fa4fa91 100644 --- a/docs/mfc/reference/message-map-macros-mfc.md +++ b/docs/mfc/reference/message-map-macros-mfc.md @@ -4,10 +4,12 @@ title: "Message Map Macros (MFC)" ms.date: "03/27/2019" f1_keywords: ["AFXWIN/DECLARE_MESSAGE_MAP", "AFXWIN/BEGIN_MESSAGE_MAP", "AFXWIN/BEGIN_TEMPLATE_MESSAGE_MAP", "AFXWIN/END_MESSAGE_MAP", "AFXWIN/ON_COMMAND", "AFXWIN/ON_COMMAND_EX", "AFXWIN/ON_CONTROL", "AFXWIN/ON_MESSAGE", "AFXWIN/ON_OLECMD", "AFXWIN/ON_REGISTERED_MESSAGE", "AFXWIN/ON_REGISTERED_THREAD_MESSAGE", "AFXWIN/ON_THREAD_MESSAGE", "AFXWIN/ON_UPDATE_COMMAND_UI", "AFXWIN/ON_COMMAND_RANGE", "AFXWIN/ON_UPDATE_COMMAND_UI_RANGE", "AFXWIN/ON_CONTROL_RANGE"] helpviewer_keywords: ["message map macros", "Windows messages [MFC], declaration", "demarcating Windows messages", "message maps [MFC], macros", "message maps [MFC], declaration and demarcation", "message mapping macros", "ranges, message map", "message map ranges"] -ms.assetid: 531b15ce-32b5-4ca0-a849-bb519616c731 --- # Message Map Macros (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To support message maps, MFC supplies the following macros: ### Message-Map Declaration and Demarcation Macros diff --git a/docs/mfc/reference/message-maps-mfc.md b/docs/mfc/reference/message-maps-mfc.md index fcce99b97e6..2de3e965971 100644 --- a/docs/mfc/reference/message-maps-mfc.md +++ b/docs/mfc/reference/message-maps-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Message Maps (MFC)" title: "Message Maps (MFC)" ms.date: "09/07/2019" helpviewer_keywords: ["message maps [MFC], MFC", "Windows messages [MFC], message maps", "messages [MFC], Windows", "MFC, messages"] -ms.assetid: 3f9855e4-9d7d-4b64-8f3f-a19ea3cf79ba --- # Message Maps (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This section of the reference lists all [message mapping macros](../../mfc/reference/message-map-macros-mfc.md) and all [`CWnd`](../../mfc/reference/cwnd-class.md) message-map entries along with the corresponding member function prototypes: |Category|Description| diff --git a/docs/mfc/reference/message-types-associated-with-user-interface-objects.md b/docs/mfc/reference/message-types-associated-with-user-interface-objects.md index 61472bf5ac0..b9183f9ee34 100644 --- a/docs/mfc/reference/message-types-associated-with-user-interface-objects.md +++ b/docs/mfc/reference/message-types-associated-with-user-interface-objects.md @@ -4,10 +4,12 @@ title: "Message Types Associated with User-Interface Objects" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.uiobject.msgs"] helpviewer_keywords: ["message types and user interface objects [MFC]"] -ms.assetid: 681ee1a7-f6e6-4ea0-9fc6-1fb53a35516e --- # Message Types Associated with User-Interface Objects +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following table shows the types of objects with which you work, and the types of messages associated with them. ### User Interface Objects and Associated Messages diff --git a/docs/mfc/reference/mfc-activex-control-wizard.md b/docs/mfc/reference/mfc-activex-control-wizard.md index e949d307fa7..b3eadd27b35 100644 --- a/docs/mfc/reference/mfc-activex-control-wizard.md +++ b/docs/mfc/reference/mfc-activex-control-wizard.md @@ -4,11 +4,13 @@ title: "MFC ActiveX Control Wizard" ms.date: "03/04/2022" f1_keywords: ["vc.appwiz.mfc.ctl.overview"] helpviewer_keywords: ["ActiveX controls [MFC], MFC", "MFC ActiveX controls [MFC], wizards", "OLE controls [MFC], creating", "MFC ActiveX Control Wizard", "OLE controls [MFC]"] -ms.assetid: f19d698c-bdc3-4c74-af97-3d6ccb441b75 ms.custom: devdivchpfy22 --- # MFC ActiveX Control Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An ActiveX control is a specific type of [automation server](../../mfc/automation-servers.md); it's a reusable component. The application hosting the ActiveX control is the [automation client](../../mfc/automation-clients.md) of that control. If your goal is to create such a reusable component, then use this wizard to create your control. For more information, see [MFC ActiveX Controls](../../mfc/mfc-activex-controls.md). >[!IMPORTANT] diff --git a/docs/mfc/reference/mfc-add-class-wizard.md b/docs/mfc/reference/mfc-add-class-wizard.md index ce799af37fc..fe1567f8266 100644 --- a/docs/mfc/reference/mfc-add-class-wizard.md +++ b/docs/mfc/reference/mfc-add-class-wizard.md @@ -4,10 +4,12 @@ title: "MFC Add Class Wizard" ms.date: "09/06/2019" f1_keywords: ["vc.codewiz.class.mfc.simple.overview"] helpviewer_keywords: ["MFC Add Class Wizard", "wizards [MFC]"] -ms.assetid: ad3b0989-d307-43b2-9417-3f9a78889024 --- # MFC Add Class Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Use this code wizard to add a class to an existing MFC project, or to add a class to an ATL project that supports MFC. You can also add MFC classes to Win32 projects that have MFC support. The features you specified when you created your project determine the options available in this dialog box. To access the wizard, click on **Add Class** in [Class Wizard](mfc-class-wizard.md). ![Add MFC Class Wizard.](media/add-mfc-class-wizard.png "Add MFC Class Wizard") diff --git a/docs/mfc/reference/mfc-application-wizard.md b/docs/mfc/reference/mfc-application-wizard.md index 1ca347b8771..960a05d3ce5 100644 --- a/docs/mfc/reference/mfc-application-wizard.md +++ b/docs/mfc/reference/mfc-application-wizard.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["MFC Application Wizard", "executable files, creating"] --- # MFC Application Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The MFC Application Wizard generates an application that, when compiled, implements the basic features of a Windows executable (.exe) application. The MFC starter application includes C++ source (.cpp) files, resource (.rc) files, header (.h) files, and a project (.vcxproj) file. The code that is generated in these starter files is based on MFC. > [!NOTE] diff --git a/docs/mfc/reference/mfc-class-wizard.md b/docs/mfc/reference/mfc-class-wizard.md index ea0eb4c71b2..3af17c09036 100644 --- a/docs/mfc/reference/mfc-class-wizard.md +++ b/docs/mfc/reference/mfc-class-wizard.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["MFC Class Wizard"] --- # MFC Class Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Use the **Class Wizard** to create new MFC classes, or add messages and message handlers to existing classes in your project. There are three ways to open the **Class Wizard**: diff --git a/docs/mfc/reference/mfc-classes.md b/docs/mfc/reference/mfc-classes.md index 8389dcd7e55..99ecdc84b58 100644 --- a/docs/mfc/reference/mfc-classes.md +++ b/docs/mfc/reference/mfc-classes.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["MFC, classes", "classes [MFC], MFC"] --- # MFC Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The classes in the following list are included in the Microsoft Foundation Class (MFC) Library. > [!TIP] diff --git a/docs/mfc/reference/mfc-dll-wizard.md b/docs/mfc/reference/mfc-dll-wizard.md index ad350303e65..6d06403db33 100644 --- a/docs/mfc/reference/mfc-dll-wizard.md +++ b/docs/mfc/reference/mfc-dll-wizard.md @@ -4,10 +4,12 @@ title: "MFC DLL Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.mfc.dll.overview"] helpviewer_keywords: ["MFC DLLs [MFC], creating", "MFC DLL Wizard", "DLLs [MFC], MFC", "DLL wizard [MFC]", "MFC DLLs [MFC]", "DLLs [MFC], creating"] -ms.assetid: 4e936031-7e39-4f40-a295-42a09c5ff264 --- # MFC DLL Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When you use the MFC DLL wizard to create an MFC DLL project, you get a working starter application with built-in functionality that, when compiled, will implement the basic features of a [DLL](../../build/dlls-in-visual-cpp.md). The MFC starter program includes C++ source (.cpp) files, resource (.rc) files, and a project (.vcxproj) file. The code generated in these starter files is based on MFC. For more detailed information, see the file details in Readme.txt that is generated for your project in Visual Studio, and [Classes and Functions Generated by the MFC DLL Wizard](../../mfc/reference/classes-and-functions-generated-by-the-mfc-dll-wizard.md) ## Overview diff --git a/docs/mfc/reference/mfc-macros-and-globals.md b/docs/mfc/reference/mfc-macros-and-globals.md index 7055e4a7c74..10468fe5bbe 100644 --- a/docs/mfc/reference/mfc-macros-and-globals.md +++ b/docs/mfc/reference/mfc-macros-and-globals.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC Macros and Globals" title: "MFC Macros and Globals" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, global functions and variables", "MFC, macros", "global functions, MFC", "macros, MFC", "global functions [MFC]", "global variables, MFC", "Afx naming convention", "macros"] -ms.assetid: add4e33f-0e62-4d27-be14-896cb8675d22 --- # MFC Macros and Globals +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Class Library can be divided into two major sections: (1) the MFC classes and (2) macros and globals. If a function or variable is not a member of a class, it is a global function or variable. The MFC library and the Active Template Library (ATL) share string conversion macros. For more information, see [String Conversion Macros](../../atl/reference/string-conversion-macros.md) in the ATL documentation. diff --git a/docs/mfc/reference/mfc-odbc-consumer-wizard.md b/docs/mfc/reference/mfc-odbc-consumer-wizard.md index 4b3754189d2..f63ea871767 100644 --- a/docs/mfc/reference/mfc-odbc-consumer-wizard.md +++ b/docs/mfc/reference/mfc-odbc-consumer-wizard.md @@ -3,10 +3,12 @@ description: "Learn more about: MFC ODBC Consumer Wizard" title: "MFC ODBC Consumer Wizard" ms.date: "08/29/2019" helpviewer_keywords: ["wizards [MFC]"] -ms.assetid: f64a890b-a252-4887-88a1-782a7cd4ff3d --- # MFC ODBC Consumer Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + ::: moniker range=">=msvc-160" This wizard is not available in Visual Studio 2019 and later. diff --git a/docs/mfc/reference/mfc-wizards-and-dialog-boxes.md b/docs/mfc/reference/mfc-wizards-and-dialog-boxes.md index 6a99fce2ecd..1ca91580e76 100644 --- a/docs/mfc/reference/mfc-wizards-and-dialog-boxes.md +++ b/docs/mfc/reference/mfc-wizards-and-dialog-boxes.md @@ -2,10 +2,12 @@ description: "Learn more about: MFC Wizards and Dialog Boxes" title: "MFC Wizards and Dialog Boxes" ms.date: "11/04/2016" -ms.assetid: 2fae0a2c-d147-4468-a547-f7b85df767a1 --- # MFC Wizards and Dialog Boxes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Class (MFC) wizards generate boilerplate code for various kinds of components and objects. You can run the wizards by opening the shortcut menu for a project in **Solution Explorer** and choosing **Add**, **Class**. ## Related Articles diff --git a/docs/mfc/reference/ole-initialization.md b/docs/mfc/reference/ole-initialization.md index 9e2eb402775..739a71c9abf 100644 --- a/docs/mfc/reference/ole-initialization.md +++ b/docs/mfc/reference/ole-initialization.md @@ -4,10 +4,12 @@ title: "OLE Initialization" ms.date: "11/04/2016" f1_keywords: ["afxdisp/AfxOleInit", "afxdisp/AfxEnableControlContainer"] helpviewer_keywords: ["OLE initialization"] -ms.assetid: aa8a54a7-24c3-4344-b2c6-dbcf6084fa31 --- # OLE Initialization +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Before an application can use OLE system services, it must initialize the OLE system DLLs and verify that the DLLs are the correct version. The `AfxOleInit` function initializes the OLE system DLLs. ### OLE Initialization diff --git a/docs/mfc/reference/persistence-of-ole-controls.md b/docs/mfc/reference/persistence-of-ole-controls.md index f01c148c590..85a6f6459e5 100644 --- a/docs/mfc/reference/persistence-of-ole-controls.md +++ b/docs/mfc/reference/persistence-of-ole-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Persistence of OLE Controls" title: "Persistence of OLE Controls" ms.date: "11/04/2016" helpviewer_keywords: ["OLE controls [MFC], persistence", "persistence, OLE controls"] -ms.assetid: 64f8dc80-f110-41af-b3ea-14948f6bfdf7 --- # Persistence of OLE Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + One capability of OLE controls is property persistence (or serialization), which allows the OLE control to read or write property values to and from a file or stream. A container application can use serialization to store a control's property values even after the application has destroyed the control. The property values of the OLE control can then be read from the file or stream when a new instance of the control is created at a later time. ### Persistence of OLE Controls diff --git a/docs/mfc/reference/property-pages-mfc.md b/docs/mfc/reference/property-pages-mfc.md index 68a4e94fa5d..f46e45774dd 100644 --- a/docs/mfc/reference/property-pages-mfc.md +++ b/docs/mfc/reference/property-pages-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Property Pages (MFC)" title: "Property Pages (MFC)" ms.date: "11/04/2016" helpviewer_keywords: ["property page data transfer functions in MFC", "property pages [MFC], global MFC functions"] -ms.assetid: 734f88bc-c776-4136-9b0e-f45c761a45c1 --- # Property Pages (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Property pages display the current values of specific OLE control properties in a customizable, graphical interface for viewing and editing by supporting a data-mapping mechanism based on dialog data exchange (DDX). This data-mapping mechanism maps property page controls to the individual properties of the OLE control. The value of the control property reflects the status or content of the property page control. The mapping between property page controls and properties is specified by **DDP_** function calls in the property page's `DoDataExchange` member function. The following is a list of **DDP_** functions that exchange data entered using the property page of your control: diff --git a/docs/mfc/reference/record-field-exchange-functions.md b/docs/mfc/reference/record-field-exchange-functions.md index 477e1ec39a3..30388eac0ad 100644 --- a/docs/mfc/reference/record-field-exchange-functions.md +++ b/docs/mfc/reference/record-field-exchange-functions.md @@ -4,10 +4,12 @@ title: "Record Field Exchange Functions" ms.date: "09/17/2019" f1_keywords: ["AFXDB/RFX_Binary", "AFXDB/RFX_Bool", "AFXDB/RFX_Byte", "AFXDB/RFX_Date", "AFXDB/RFX_Double", "AFXDB/RFX_Int", "AFXDB/RFX_Long", "AFXDB/RFX_LongBinary", "AFXDB/RFX_Single", "AFXDB/RFX_Text", "AFXDB/RFX_Binary_Bulk", "AFXDB/RFX_Bool_Bulk", "AFXDB/RFX_Byte_Bulk", "AFXDB/RFX_Date_Bulk", "AFXDB/RFX_Double_Bulk", "AFXDB/RFX_Int_Bulk", "AFXDB/RFX_Long_Bulk", "AFXDB/RFX_Single_Bulk", "AFXDB/RFX_Text_Bulk", "AFXDB/DFX_Binary", "AFXDB/DFX_Bool", "AFXDB/DFX_Byte", "AFXDB/DFX_Currency", "AFXDB/DFX_DateTime", "AFXDB/DFX_Double", "AFXDB/DFX_Long", "AFXDB/DFX_LongBinary", "AFXDB/DFX_Short", "AFXDB/DFX_Single", "AFXDB/DFX_Text"] helpviewer_keywords: ["DAO (Data Access Objects), record field exchange (DFX)", "ODBC, bulk RFX data exchange functions [MFC]", "RFX (record field exchange), ODBC classes", "DFX (DAO record field exchange), data exchange functions [MFC]", "DFX functions [MFC]", "bulk RFX functions [MFC]", "DFX (DAO record field exchange)", "RFX (record field exchange), DAO classes", "ODBC, RFX", "RFX (record field exchange), data exchange functions [MFC]", "RFX (record field exchange)"] -ms.assetid: 6e4c5c1c-acb7-4c18-bf51-bf7959a696cd --- # Record Field Exchange Functions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic lists the Record Field Exchange (RFX, Bulk RFX, and DFX) functions used to automate the transfer of data between a recordset object and its data source and to perform other operations on the data. If you are using the ODBC-based classes and you have implemented bulk row fetching, you must manually override the `DoBulkFieldExchange` member function of `CRecordset` by calling the Bulk RFX functions for each data member corresponding to a data source column. diff --git a/docs/mfc/reference/registering-ole-controls.md b/docs/mfc/reference/registering-ole-controls.md index 8dd7892ccec..474f755e5d7 100644 --- a/docs/mfc/reference/registering-ole-controls.md +++ b/docs/mfc/reference/registering-ole-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Registering OLE Controls" title: "Registering OLE Controls" ms.date: "11/04/2016" helpviewer_keywords: ["registering OLE controls", "OLE controls [MFC], registering"] -ms.assetid: 73c45b7f-7dbc-43f5-bd17-dd77c6acec72 --- # Registering OLE Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + OLE controls, like other OLE server objects, can be accessed by other OLE-aware applications. This is achieved by registering the control's type library and class. The following functions allow you to add and remove the control's class, property pages, and type library in the Windows registration database: diff --git a/docs/mfc/reference/run-time-object-model-services.md b/docs/mfc/reference/run-time-object-model-services.md index b33e44f8ffd..b2554a26265 100644 --- a/docs/mfc/reference/run-time-object-model-services.md +++ b/docs/mfc/reference/run-time-object-model-services.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["run-time object model services macros"] --- # Run-Time Object Model Services +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The classes [`CObject`](../../mfc/reference/cobject-class.md) and [`CRuntimeClass`](../../mfc/reference/cruntimeclass-structure.md) encapsulate several object services, including access to run-time class information, serialization, and dynamic object creation. All classes derived from `CObject` inherit this functionality. Access to run-time class information enables you to determine information about an object's class at run time. The ability to determine the class of an object at run time is useful when you need extra type-checking of function arguments and when you must write special-purpose code based on the class of an object. Run-time class information isn't supported directly by the C++ language. diff --git a/docs/mfc/reference/standard-command-and-window-ids.md b/docs/mfc/reference/standard-command-and-window-ids.md index bd4e60b03d2..d856dbfd439 100644 --- a/docs/mfc/reference/standard-command-and-window-ids.md +++ b/docs/mfc/reference/standard-command-and-window-ids.md @@ -3,10 +3,12 @@ description: "Learn more about: Standard Command and Window IDs" title: "Standard Command and Window IDs" ms.date: "11/04/2016" helpviewer_keywords: ["standard command and Window IDs"] -ms.assetid: 0424805c-fff8-4531-8f0c-15cfb13aa612 --- # Standard Command and Window IDs +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Class Library defines a number of standard command and window IDs in Afxres.h. These IDs are most commonly used within the resource editors and the [Class Wizard](mfc-class-wizard.md) to map messages to your handler functions. All standard commands have an **ID_** prefix. For example, when you use the menu editor, you normally bind the File Open menu item to the standard ID_FILE_OPEN command ID. For most standard commands, application code does not need to refer to the command ID, because the framework itself handles the commands through message maps in its primary framework classes (`CWinThread`, `CWinApp`, `CView`, `CDocument`, and so on). diff --git a/docs/mfc/reference/standard-dialog-data-exchange-routines.md b/docs/mfc/reference/standard-dialog-data-exchange-routines.md index 0af24a8c467..75d3a07d319 100644 --- a/docs/mfc/reference/standard-dialog-data-exchange-routines.md +++ b/docs/mfc/reference/standard-dialog-data-exchange-routines.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["standard dialog, data exchange routines"] --- # Standard Dialog Data Exchange Routines +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic lists the standard dialog data exchange (DDX) routines used for common MFC dialog controls. > [!NOTE] diff --git a/docs/mfc/reference/standard-dialog-data-validation-routines.md b/docs/mfc/reference/standard-dialog-data-validation-routines.md index 43e9cb3e105..80d776f309b 100644 --- a/docs/mfc/reference/standard-dialog-data-validation-routines.md +++ b/docs/mfc/reference/standard-dialog-data-validation-routines.md @@ -3,10 +3,12 @@ description: "Learn more about: Standard Dialog Data Validation Routines" title: "Standard Dialog Data Validation Routines" ms.date: "11/04/2016" helpviewer_keywords: ["standard dialog, data validation routines"] -ms.assetid: 44dbc222-a897-4949-925e-7660e8964ccd --- # Standard Dialog Data Validation Routines +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic lists the standard dialog data validation (DDV) routines used for common MFC dialog controls. > [!NOTE] diff --git a/docs/mfc/reference/structures-styles-callbacks-and-message-maps.md b/docs/mfc/reference/structures-styles-callbacks-and-message-maps.md index f7b7d59f652..759dcd5d559 100644 --- a/docs/mfc/reference/structures-styles-callbacks-and-message-maps.md +++ b/docs/mfc/reference/structures-styles-callbacks-and-message-maps.md @@ -3,10 +3,12 @@ description: "Learn more about: Structures, Styles, Callbacks, and Message Maps" title: "Structures, Styles, Callbacks, and Message Maps" ms.date: "11/04/2016" helpviewer_keywords: ["callback functions, MFC", "styles, MFC", "message classes [MFC], MFC", "structures, MFC"] -ms.assetid: 27566602-7d84-4089-880c-8e90fb04fa56 --- # Structures, Styles, Callbacks, and Message Maps +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This section documents the structures, styles, and callback functions used by the Microsoft Foundation Class Library and the MFC message maps. ## In This Section diff --git a/docs/mfc/reference/structures-used-by-mfc.md b/docs/mfc/reference/structures-used-by-mfc.md index 4e4f0a60c98..f01d1b7ccbb 100644 --- a/docs/mfc/reference/structures-used-by-mfc.md +++ b/docs/mfc/reference/structures-used-by-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Structures Used by MFC" title: "Structures Used by MFC" ms.date: "12/03/2018" helpviewer_keywords: ["structures", "structures, MFC"] -ms.assetid: 2168fcc6-e800-4814-aabf-0bca86ff790d --- # Structures Used by MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following table lists structures that are called from various member functions. For further information on individual structure usage, refer to the classes and member functions noted in the See Also list for each structure. :::row::: diff --git a/docs/mfc/reference/styles-used-by-mfc.md b/docs/mfc/reference/styles-used-by-mfc.md index 7dc94df5291..57a0bfaa6b2 100644 --- a/docs/mfc/reference/styles-used-by-mfc.md +++ b/docs/mfc/reference/styles-used-by-mfc.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["button objects (CButton), button styles", "button styles --- # Styles Used by MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Use the following style flags to specify window or control appearance and behavior when you create the corresponding MFC object. In most cases, these styles are set in the *`dwStyle`* parameter of the class `Create` function. ## Button styles diff --git a/docs/mfc/reference/toolbar-control-styles.md b/docs/mfc/reference/toolbar-control-styles.md index 77597a53dab..f5b7a9d6002 100644 --- a/docs/mfc/reference/toolbar-control-styles.md +++ b/docs/mfc/reference/toolbar-control-styles.md @@ -3,10 +3,12 @@ description: "Learn more about: ToolBar Control Styles" title: "ToolBar Control Styles" ms.date: "11/04/2016" helpviewer_keywords: ["ToolBar control styles [MFC]"] -ms.assetid: 0f717eb9-fa32-4263-b852-809238863feb --- # ToolBar Control Styles +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + [CMFCToolBarButton Class](../../mfc/reference/cmfctoolbarbutton-class.md) has a set of style flags that determine the appearance and behavior of the button. You can set a combination of these flags by calling [CMFCToolBarButton::SetStyle](../../mfc/reference/cmfctoolbarbutton-class.md#setstyle). This topic lists the style flag values and their meanings. ## Property Values diff --git a/docs/mfc/reference/type-casting-of-mfc-class-objects.md b/docs/mfc/reference/type-casting-of-mfc-class-objects.md index ee081937069..233e7ad3cb8 100644 --- a/docs/mfc/reference/type-casting-of-mfc-class-objects.md +++ b/docs/mfc/reference/type-casting-of-mfc-class-objects.md @@ -3,10 +3,12 @@ description: "Learn more about: Type Casting of MFC Class Objects" title: "Type Casting of MFC Class Objects" ms.date: "11/04/2016" helpviewer_keywords: ["macros [MFC], type casting", "pointers [MFC], type casting", "type casts [MFC]", "casting types [MFC]", "macros [MFC], casting pointers"] -ms.assetid: e138465e-c35f-4e84-b788-bd200ccf2f0e --- # Type Casting of MFC Class Objects +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Type casting macros provide a way to cast a given pointer to a pointer that points to an object of specific class, with or without checking that the cast is legal. The following table lists the MFC type casting macros. diff --git a/docs/mfc/reference/type-library-access.md b/docs/mfc/reference/type-library-access.md index 6ef3220a64b..b0b56f09b88 100644 --- a/docs/mfc/reference/type-library-access.md +++ b/docs/mfc/reference/type-library-access.md @@ -3,10 +3,12 @@ description: "Learn more about: Type Library Access" title: "Type Library Access" ms.date: "11/04/2016" helpviewer_keywords: ["type libraries [MFC], accessing"] -ms.assetid: a03fa7f0-86c2-4119-bf81-202916fb74b3 --- # Type Library Access +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Type libraries expose the interfaces of an OLE control to other OLE-aware applications. Each OLE control must have a type library if one or more interfaces are to be exposed. The following macros allow an OLE control to provide access to its own type library: diff --git a/docs/mfc/reference/uicheckstate-enumeration.md b/docs/mfc/reference/uicheckstate-enumeration.md index 71cd897d5a1..8224123d07a 100644 --- a/docs/mfc/reference/uicheckstate-enumeration.md +++ b/docs/mfc/reference/uicheckstate-enumeration.md @@ -4,10 +4,12 @@ title: "UICheckState Enumeration" ms.date: "04/03/2017" f1_keywords: ["afxwinforms/uicheckstate"] helpviewer_keywords: ["uicheckstate enumeration [MFC]"] -ms.assetid: 2ac0098c-20e7-410c-9685-5ead5cb02b63 --- # UICheckState Enumeration +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Describes the check state of a user interface item for the command. ### Syntax diff --git a/docs/mfc/reference/user-button-handlers.md b/docs/mfc/reference/user-button-handlers.md index 60722f09cc4..8d81f6329ef 100644 --- a/docs/mfc/reference/user-button-handlers.md +++ b/docs/mfc/reference/user-button-handlers.md @@ -4,10 +4,12 @@ title: "User Button Handlers" ms.date: "11/04/2016" f1_keywords: ["ON_BN_HILITE", "ON_BN_DOUBLECLICKED", "ON_BN_CLICKED", "ON_BN_PAINT", "ON_BN_DISABLE", "ON_BN_UNHILITE"] helpviewer_keywords: ["ON_BN_PAINT", "user buttons [MFC]", "ON_BN_DOUBLECLICKED [MFC]", "ON_BN_DISABLE [MFC]", "ON_BN_UNHILITE [MFC]", "ON_BN_HILITE [MFC]", "ON_BN_CLICKED [MFC]"] -ms.assetid: 410ea968-478f-4806-b7b8-5d7c8dc2bf42 --- # User Button Handlers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entries correspond to the function prototypes. |Map entry|Function prototype| diff --git a/docs/mfc/reference/user-defined-handlers.md b/docs/mfc/reference/user-defined-handlers.md index e975f7b8127..f7774849951 100644 --- a/docs/mfc/reference/user-defined-handlers.md +++ b/docs/mfc/reference/user-defined-handlers.md @@ -3,10 +3,12 @@ description: "Learn more about: User-Defined Handlers" title: "User-Defined Handlers" ms.date: "11/04/2016" helpviewer_keywords: ["ON_REGISTERED_MESSAGE macro [MFC]", "ON_MESSAGE macro [MFC]", "user-defined handlers [MFC]"] -ms.assetid: 99478294-bef0-4ba7-a369-25a6abdcdb62 --- # User-Defined Handlers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entries correspond to the function prototypes. |Map entry|Function prototype| diff --git a/docs/mfc/reference/user-interface-features-mfc-application-wizard.md b/docs/mfc/reference/user-interface-features-mfc-application-wizard.md index 68ccfa97e30..3dee4ab90ac 100644 --- a/docs/mfc/reference/user-interface-features-mfc-application-wizard.md +++ b/docs/mfc/reference/user-interface-features-mfc-application-wizard.md @@ -4,10 +4,12 @@ title: "User Interface Features, MFC Application Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.mfc.exe.ui"] helpviewer_keywords: ["MFC Application Wizard, user interface features"] -ms.assetid: 59e7b829-a665-42eb-be23-3f2a36eb2dad --- # User Interface Features, MFC Application Wizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic explains the options that you can use to specify the look of your application. The user interface features available for your project depend on the type of application you specified in the [Application Type, MFC Application Wizard](../../mfc/reference/application-type-mfc-application-wizard.md) page of the MFC Application Wizard. For example, if you create a single document interface application, you cannot add child frame styles. - **Main frame styles** diff --git a/docs/mfc/reference/variant-parameter-type-constants.md b/docs/mfc/reference/variant-parameter-type-constants.md index 0304c57c92c..2a6d1aadeee 100644 --- a/docs/mfc/reference/variant-parameter-type-constants.md +++ b/docs/mfc/reference/variant-parameter-type-constants.md @@ -4,10 +4,12 @@ title: "Variant Parameter Type Constants" ms.date: "11/04/2016" f1_keywords: ["VTS_YPOS_HIMETRIC", "VTS_PICTURE", "VTS_FONT", "VTS_XPOS_HIMETRIC", "VTS_XPOS_PIXELS", "VTS_XSIZE_HIMETRIC", "VTS_YPOS_PIXELS", "VTS_TRISTATE", "VTS_HANDLE", "VTS_YSIZE_HIMETRIC", "VTS_COLOR", "VTS_OPTEXCLUSIVE", "VTS_YSIZE_PIXELS", "VTS_XSIZE_PIXELS"] helpviewer_keywords: ["VTS_XPOS_HIMETRIC constant [MFC]", "VTS_FONT constant [MFC]", "VTS_XPOS_PIXELS constant [MFC]", "VTS_COLOR constant [MFC]", "Variants [MFC]", "VTS_YPOS_PIXELS constant [MFC]", "VTS_YSIZE_HIMETRIC constant [MFC]", "VTS_YPOS_HIMETRIC constant [MFC]", "Variants, parameter type constants", "Variant data constants [MFC]", "VTS_PICTURE constant [MFC]", "VTS_TRISTATE constant [MFC]", "VTS_XSIZE_HIMETRIC constant [MFC]", "VTS_HANDLE constant [MFC]", "VTS_XSIZE_PIXELS constant [MFC]", "VTS_OPTEXCLUSIVE constant [MFC]", "VTS_YSIZE_PIXELS constant [MFC]"] -ms.assetid: de99c7a9-7aae-4dc4-b723-40c6380543ab --- # Variant Parameter Type Constants +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic lists new constants that indicate variant parameter types designed for use with the OLE control classes of the Microsoft Foundation Class Library. The following is a list of class constants: diff --git a/docs/mfc/reference/wm-message-handlers-a-c.md b/docs/mfc/reference/wm-message-handlers-a-c.md index e6e35de0fcc..8301bf57d3d 100644 --- a/docs/mfc/reference/wm-message-handlers-a-c.md +++ b/docs/mfc/reference/wm-message-handlers-a-c.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["ON_WM_COMPACTING [MFC]", "ON_WM_COMPAREITEM [MFC]", "ON_W --- # `WM_` Message Handlers: A - C +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entries on the left correspond to the function prototypes on the right: |Map entry|Function prototype| diff --git a/docs/mfc/reference/wm-message-handlers-d-e.md b/docs/mfc/reference/wm-message-handlers-d-e.md index 3e6cded86cc..0f1932a34bd 100644 --- a/docs/mfc/reference/wm-message-handlers-d-e.md +++ b/docs/mfc/reference/wm-message-handlers-d-e.md @@ -4,10 +4,12 @@ title: "WM_ Message Handlers: D - E" ms.date: "11/04/2016" f1_keywords: ["ON_WM_ERASEBKGND", "ON_WM_DEVICECHANGE", "ON_WM_ENTERIDLE", "ON_WM_DESTROYCLIPBOARD", "ON_WM_DESTROY", "ON_WM_DEADCHAR", "ON_WM_DELETEITEM", "ON_WM_DROPFILES", "ON_WM_DEVMODECHANGE", "ON_WM_ENDSESSION", "ON_WM_ENABLE", "ON_WM_DRAWITEM", "ON_WM_DRAWCLIPBOARD"] helpviewer_keywords: ["ON_WM_ENTERIDLE [MFC]", "ON_WM_DESTROYCLIPBOARD [MFC]", "ON_WM_DEADCHAR [MFC]", "ON_WM_DEVMODECHANGE [MFC]", "ON_WM_ERASEBKGND [MFC]", "ON_WM_DESTROY [MFC]", "ON_WM_DRAWCLIPBOARD [MFC]", "ON_WM_ENDSESSION [MFC]", "ON_WM_DRAWITEM [MFC]", "ON_WM_ENABLE [MFC]", "ON_WM_DROPFILES [MFC]", "ON_WM_DELETEITEM [MFC]", "ON_WM_DEVICECHANGE [MFC]", "WM_ messages [MFC]"] -ms.assetid: 56fb89c8-68a8-4adf-883e-a9f63bf677e9 --- # WM_ Message Handlers: D - E +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entries on the left correspond to the function prototypes on the right: |Map entry|Function prototype| diff --git a/docs/mfc/reference/wm-message-handlers-f-k.md b/docs/mfc/reference/wm-message-handlers-f-k.md index e696a99370d..d5fdf788d64 100644 --- a/docs/mfc/reference/wm-message-handlers-f-k.md +++ b/docs/mfc/reference/wm-message-handlers-f-k.md @@ -4,10 +4,12 @@ title: "WM_ Message Handlers: F - K" ms.date: "11/27/2018" f1_keywords: ["ON_WM_FONTCHANGE", "ON_WM_ICONERASEBKGND", "ON_WM_KEYDOWN", "ON_WM_GETMINMAXINFO", "ON_WM_KEYUP", "ON_WM_HSCROLL", "ON_WM_KILLFOCUS", "ON_WM_HSCROLLCLIPBOARD", "ON_WM_GETDLGCODE", "ON_WM_HELPINFO", "ON_WM_INITMENUPOPUP", "ON_WM_INITMENU"] helpviewer_keywords: ["ON_WM_HELPINFO [MFC]", "ON_WM_KILLFOCUS [MFC]", "ON_WM_GETMINMAXINFO [MFC]", "ON_WM_KEYUP [MFC]", "ON_WM_HSCROLL [MFC]", "ON_WM_INITMENUPOPUP [MFC]", "ON_WM_FONTCHANGE [MFC]", "ON_WM_ICONERASEBKGND [MFC]", "ON_WM_GETDLGCODE [MFC]", "ON_WM_HSCROLLCLIPBOARD [MFC]", "ON_WM_INITMENU [MFC]", "WM_ messages [MFC]", "ON_WM_KEYDOWN [MFC]"] -ms.assetid: 0e7de191-1499-499f-859c-62742797808e --- # WM_ Message Handlers: F - K +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entries on the left correspond to the function prototypes on the right: |Map entry|Function prototype| diff --git a/docs/mfc/reference/wm-message-handlers-l-m.md b/docs/mfc/reference/wm-message-handlers-l-m.md index 264bc859502..6b128ee4e41 100644 --- a/docs/mfc/reference/wm-message-handlers-l-m.md +++ b/docs/mfc/reference/wm-message-handlers-l-m.md @@ -4,10 +4,12 @@ title: "WM_ Message Handlers: L - M" ms.date: "11/04/2016" f1_keywords: ["ON_WM_MENUSELECT", "ON_WM_MBUTTONDBLCLK", "ON_WM_MOUSEACTIVATE", "ON_WM_MOUSEMOVE", "ON_WM_MOVING", "ON_WM_LBUTTONUP", "ON_WM_LBUTTONDBLCLK", "ON_WM_MEASUREITEM", "ON_WM_MDIACTIVATE", "ON_WM_MOVE", "ON_WM_LBUTTONDOWN", "ON_WM_MBUTTONDOWN", "ON_WM_MENUCHAR", "ON_WM_MBUTTONUP"] helpviewer_keywords: ["ON_WM_MENUSELECT [MFC]", "ON_WM_MBUTTONDBLCLK [MFC]", "ON_WM_MOVE [MFC]", "ON_WM_MOUSEACTIVATE [MFC]", "ON_WM_MBUTTONUP [MFC]", "ON_WM_MOUSEMOVE [MFC]", "ON_WM_MENUCHAR [MFC]", "ON_WM_MBUTTONDOWN [MFC]", "ON_WM_MEASUREITEM [MFC]", "ON_WM_MOVING [MFC]", "ON_WM_LBUTTONDOWN [MFC]", "ON_WM_MDIACTIVATE [MFC]", "ON_WM_LBUTTONDBLCLK [MFC]", "ON_WM_LBUTTONUP [MFC]", "WM_ messages"] -ms.assetid: 96ecaaf1-6d13-4e12-a454-535635967489 --- # WM_ Message Handlers: L - M +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entries on the left correspond to the function prototypes on the right: |Map entry|Function prototype| diff --git a/docs/mfc/reference/wm-message-handlers-n-o.md b/docs/mfc/reference/wm-message-handlers-n-o.md index 51f2cc151fc..7d21b6da435 100644 --- a/docs/mfc/reference/wm-message-handlers-n-o.md +++ b/docs/mfc/reference/wm-message-handlers-n-o.md @@ -4,10 +4,12 @@ title: "WM_ Message Handlers: N - O" ms.date: "11/04/2016" f1_keywords: ["ON_WM_NCHITTEST", "ON_WM_NCLBUTTONDOWN", "ON_WM_NCCALCSIZE", "ON_WM_NCLBUTTONUP", "ON_WM_NCPAINT", "ON_WM_NCMBUTTONUP", "ON_WM_NCCREATE", "ON_WM_NCACTIVATE", "ON_WM_NCMOUSEMOVE", "ON_WM_NCRBUTTONDBLCLK", "ON_WM_NCLBUTTONDBLCLK", "ON_WM_NCDESTROY", "ON_WM_NCMBUTTONDBLCLK", "ON_WM_NCRBUTTONDOWN", "ON_WM_NCRBUTTONUP", "ON_WM_NCMBUTTONDOWN"] helpviewer_keywords: ["ON_WM_NCCALCSIZE [MFC]", "ON_WM_NCMBUTTONDOWN [MFC]", "ON_WM_NCRBUTTONDBLCLK [MFC]", "ON_WM_NCMBUTTONDBLCLK [MFC]", "ON_WM_NCLBUTTONDBLCLK [MFC]", "ON_WM_NCDESTROY [MFC]", "ON_WM_NCRBUTTONDOWN [MFC]", "ON_WM_NCLBUTTONDOWN [MFC]", "ON_WM_NCCREATE [MFC]", "ON_WM_NCRBUTTONUP [MFC]", "ON_WM_NCLBUTTONUP [MFC]", "ON_WM_NCPAINT [MFC]", "ON_WM_NCACTIVATE [MFC]", "ON_WM_NCHITTEST [MFC]", "ON_WM_NCMOUSEMOVE [MFC]", "ON_WM_NCMBUTTONUP [MFC]", "WM_ messages"] -ms.assetid: 4efd1cda-b642-4e8b-89e8-73255fa70d77 --- # WM_ Message Handlers: N - O +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entries on the left correspond to the function prototypes on the right: |Map entry|Function prototype| diff --git a/docs/mfc/reference/wm-messages-p-r.md b/docs/mfc/reference/wm-messages-p-r.md index 257f831f491..11aef99dbbf 100644 --- a/docs/mfc/reference/wm-messages-p-r.md +++ b/docs/mfc/reference/wm-messages-p-r.md @@ -4,10 +4,12 @@ title: "WM_ Messages: P - R" ms.date: "11/04/2016" f1_keywords: ["ON_WM_RBUTTONUP", "ON_WM_PALETTECHANGED", "ON_WM_RBUTTONDBLCLK", "ON_WM_QUERYENDSESSION", "ON_WM_PARENTNOTIFY", "ON_WM_PALETTEISCHANGING", "ON_WM_QUERYOPEN", "ON_WM_PAINT", "ON_WM_QUERYNEWPALETTE", "ON_WM_RBUTTONDOWN", "ON_WM_RENDERALLFORMATS", "ON_WM_PAINTCLIPBOARD", "ON_WM_RENDERFORMAT", "ON_WM_QUERYDRAGICON"] helpviewer_keywords: ["ON_WM_RENDERFORMAT [MFC]", "ON_WM_QUERYOPEN [MFC]", "ON_WM_RBUTTONDOWN [MFC]", "ON_WM_PAINTCLIPBOARD [MFC]", "ON_WM_QUERYNEWPALETTE [MFC]", "ON_WM_RBUTTONUP [MFC]", "ON_WM_PARENTNOTIFY [MFC]", "ON_WM_RBUTTONDBLCLK [MFC]", "ON_WM_PALETTECHANGED [MFC]", "ON_WM_PALETTEISCHANGING [MFC]", "ON_WM_QUERYDRAGICON [MFC]", "ON_WM_PAINT [MFC]", "ON_WM_RENDERALLFORMATS [MFC]", "ON_WM_QUERYENDSESSION [MFC]", "WM_ messages"] -ms.assetid: f46962e5-8329-4f1f-9b4d-fdad2a5ce1f8 --- # WM_ Messages: P - R +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entries correspond to the function prototypes: |Map entry|Function prototype| diff --git a/docs/mfc/reference/wm-messages-s.md b/docs/mfc/reference/wm-messages-s.md index 78fee76db60..70fb5ac333d 100644 --- a/docs/mfc/reference/wm-messages-s.md +++ b/docs/mfc/reference/wm-messages-s.md @@ -4,10 +4,12 @@ title: "WM_ Messages: S" ms.date: "11/04/2016" f1_keywords: ["ON_WM_SYSDEADCHAR", "ON_WM_SYSKEYDOWN", "ON_WM_STYLECHANGING", "ON_WM_STYLECHANGED", "ON_WM_SPOOLERSTATUS", "ON_WM_SYSCHAR", "ON_WM_SETFOCUS", "ON_WM_SIZE", "ON_WM_SIZING", "ON_WM_SETCURSOR", "ON_WM_SYSCOMMAND", "ON_WM_SETTINGCHANGE", "ON_WM_SHOWWINDOW", "ON_WM_SYSKEYUP", "ON_WM_SIZECLIPBOARD", "ON_WM_SYSCOLORCHANGE"] helpviewer_keywords: ["ON_WM_SIZE [MFC]", "ON_WM_SETFOCUS [MFC]", "ON_WM_SIZING [MFC]", "ON_WM_SYSCHAR [MFC]", "ON_WM_SETTINGCHANGE [MFC]", "ON_WM_SYSDEADCHAR [MFC]", "ON_WM_SHOWWINDOW [MFC]", "ON_WM_STYLECHANGING [MFC]", "ON_WM_SYSCOMMAND [MFC]", "ON_WM_STYLECHANGED [MFC]", "ON_WM_SPOOLERSTATUS [MFC]", "ON_WM_SYSCOLORCHANGE [MFC]", "ON_WM_SETCURSOR [MFC]", "ON_WM_SIZECLIPBOARD [MFC]", "ON_WM_SYSKEYUP [MFC]", "ON_WM_SYSKEYDOWN [MFC]", "WM_ messages"] -ms.assetid: 4b9aec79-a98f-4aa0-a3d9-110941b6dcbc --- # WM_ Messages: S +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entries correspond to the function prototypes. |Map entry|Function prototype| diff --git a/docs/mfc/reference/wm-messages-t-z.md b/docs/mfc/reference/wm-messages-t-z.md index b60436e68dc..4c65130ce0f 100644 --- a/docs/mfc/reference/wm-messages-t-z.md +++ b/docs/mfc/reference/wm-messages-t-z.md @@ -4,10 +4,12 @@ title: "WM_ Messages: T - Z" ms.date: "11/04/2016" f1_keywords: ["ON_WM_TCARD", "ON_WM_WININICHANGE", "ON_WM_VSCROLLCLIPBOARD", "ON_WM_VSCROLL", "ON_WM_WINDOWPOSCHANGED", "ON_WM_TIMECHANGE", "ON_WM_TIMER", "ON_WM_VKEYTOITEM", "ON_WM_WINDOWPOSCHANGING"] helpviewer_keywords: ["ON_WM_VSCROLLCLIPBOARD [MFC]", "ON_WM_WININICHANGE [MFC]", "ON_WM_WINDOWPOSCHANGED [MFC]", "ON_WM_TCARD [MFC]", "ON_WM_TIMECHANGE [MFC]", "ON_WM_TIMER [MFC]", "WM_ messages [MFC]", "ON_WM_WINDOWPOSCHANGING [MFC]", "ON_WM_VKEYTOITEM [MFC]", "ON_WM_VSCROLL"] -ms.assetid: c528bb2e-ddb5-4da6-b652-432a387408b8 --- # WM_ Messages: T - Z +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following map entries correspond to the function prototypes: |Map entry|Function prototype| diff --git a/docs/mfc/reflected-window-message-ids.md b/docs/mfc/reflected-window-message-ids.md index 45071edf6dd..aec1d557a2b 100644 --- a/docs/mfc/reflected-window-message-ids.md +++ b/docs/mfc/reflected-window-message-ids.md @@ -4,10 +4,12 @@ title: "Reflected Window Message IDs" ms.date: "11/04/2016" f1_keywords: ["OCM_CTLCOLORBTN", "OCM_PARENTNOTIFY", "OCM_VKEYTOITEM", "OCM_CTLCOLORSTATIC", "OCM_HSCROLL", "OCM_CHARTOITEM", "OCM_DRAWITEM", "OCM_MEASUREITEM", "OCM_COMPAREITEM", "OCM_COMMAND", "OCM_NOTIFY", "OCM_CTLCOLORMSGBOX", "OCM_DELETEITEM", "OCM_CTLCOLORLISTBOX", "OCM_CTLCOLORDLG", "OCM_CTLCOLOREDIT", "OCM_CTLCOLORSCROLLBAR", "OCM_VSCROLL", "OCM_CTLCOLOR"] helpviewer_keywords: ["OCM_HSCROLL message [MFC]", "OCM_PARENTNOTIFY message [MFC]", "messages, reflected", "reflected messages, window message Ids", "OCM_CTLCOLORDLG message [MFC]", "OCM_COMMAND message [MFC]", "OCM_CTLCOLORMSGBOX message [MFC]", "OCM_COMPAREITEM message [MFC]", "OCM_DRAWITEM message [MFC]", "OCM_VSCROLL message [MFC]", "OCM_CTLCOLOREDIT message [MFC]", "OCM_VKEYTOITEM message [MFC]", "OCM_CHARTOITEM message [MFC]", "OCM_CTLCOLORBTN message [MFC]", "OCM_CTLCOLORSTATIC message [MFC]", "OCM_MEASUREITEM message [MFC]", "OCM_CTLCOLOR message [MFC]", "OCM_CTLCOLORSCROLLBAR message [MFC]", "OCM_ messages", "OCM_DELETEITEM message [MFC]", "OCM_CTLCOLORLISTBOX message [MFC]", "OCM_NOTIFY message [MFC]", "reflected messages"] -ms.assetid: 3417ff51-ff9f-458c-bff4-17c200f00d96 --- # Reflected Window Message IDs +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A quick way to create an ActiveX control, or other specialized control, is to subclass a window. For more information, see [MFC ActiveX Controls: Subclassing a Windows Control](../mfc/mfc-activex-controls-subclassing-a-windows-control.md). To prevent the control's container from receiving the window messages sent by a subclassed Windows control, [COleControl](../mfc/reference/colecontrol-class.md) creates a "reflector" window to intercept certain window messages and send them back to the control. The control, in its window procedure, can then process these reflected messages by taking actions appropriate for an ActiveX control. diff --git a/docs/mfc/registering-window-classes.md b/docs/mfc/registering-window-classes.md index 20bf96df284..be9840fb0a4 100644 --- a/docs/mfc/registering-window-classes.md +++ b/docs/mfc/registering-window-classes.md @@ -4,11 +4,13 @@ title: "Registering Window Classes" ms.date: "11/04/2016" f1_keywords: ["WndProc"] helpviewer_keywords: ["window classes [MFC], registering", "registry [MFC], registering classes", "AfxRegisterWndClass method [MFC]", "MFC, windows", "WinMain method [MFC], and registering window classes", "WndProc method [MFC]", "classes [MFC], registering window classes", "WinMain method [MFC]", "registering window classes [MFC]"] -ms.assetid: 30994bc4-a362-43da-bcc5-1bf67a3fc929 ms.topic: concept-article --- # Registering Window Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Window "classes" in traditional programming for Windows define the characteristics of a "class" (not a C++ class) from which any number of windows can be created. This kind of class is a template or model for creating windows. ## Window Class Registration in Traditional Programs for Windows diff --git a/docs/mfc/registration.md b/docs/mfc/registration.md index 93dd93f87f5..33ac6b7fa0b 100644 --- a/docs/mfc/registration.md +++ b/docs/mfc/registration.md @@ -3,10 +3,12 @@ description: "Learn more about: Registration" title: "Registration" ms.date: "11/04/2016" helpviewer_keywords: ["servers [MFC], initializing", "initializing servers [MFC]", "OLE, registration", "installing servers [MFC]", "registry [MFC], OLE item database", "registration databases [MFC]", "servers [MFC], installing", "OLE server applications [MFC], registering servers"] -ms.assetid: 991d5684-72c1-4f9e-a09a-9184ed12bbb9 --- # Registration +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When a user wants to insert an OLE item into an application, OLE presents a list of object types to choose from. OLE gets this list from the system registration database, which contains information provided by all server applications. When a server registers itself, the entries it puts into the system registration database (the Registry) describe each type of object it supplies, file extensions, and the path to itself, among other information. The framework and the OLE system dynamic-link libraries (DLL) use this registry to determine what types of OLE items are available on the system. The OLE system DLLs also use this registry to determine how to launch a server application when a linked or embedded object is activated. diff --git a/docs/mfc/relationship-between-a-cpp-window-object-and-an-hwnd.md b/docs/mfc/relationship-between-a-cpp-window-object-and-an-hwnd.md index 91522b05d2d..0ce79cf6314 100644 --- a/docs/mfc/relationship-between-a-cpp-window-object-and-an-hwnd.md +++ b/docs/mfc/relationship-between-a-cpp-window-object-and-an-hwnd.md @@ -4,10 +4,12 @@ title: "Relationship Between a C++ Window Object and an HWND" ms.date: "11/19/2018" f1_keywords: ["HWND"] helpviewer_keywords: ["Windows window [MFC]", "window objects [MFC], HWND and", "HWND [MFC]", "CWnd class [MFC], HWND", "HWND, window objects [MFC]"] -ms.assetid: f2e76340-6691-4ee6-9424-0345634a9469 --- # Relationship Between a C++ Window Object and an HWND +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The window *object* is an object of the C++ `CWnd` class (or a derived class) that your program creates directly. It comes and goes in response to your program's constructor and destructor calls. The Windows *window*, on the other hand, is an opaque handle to an internal Windows data structure that corresponds to a window and consumes system resources when present. A Windows window is identified by a "window handle" (`HWND`) and is created after the `CWnd` object is created by a call to the `Create` member function of class `CWnd`. The window may be destroyed either by a program call or by a user's action. The window handle is stored in the window object's *m_hWnd* member variable. The following figure shows the relationship between the C++ window object and the Windows window. Creating windows is discussed in [Creating Windows](../mfc/creating-windows.md). Destroying windows is discussed in [Destroying Window Objects](../mfc/destroying-window-objects.md). ![CWnd window object and resulting window.](../mfc/media/vc37fj1.gif "CWnd window object and resulting window")
diff --git a/docs/mfc/relationship-to-the-c-language-api.md b/docs/mfc/relationship-to-the-c-language-api.md index 22c012bd971..5fe382a89a6 100644 --- a/docs/mfc/relationship-to-the-c-language-api.md +++ b/docs/mfc/relationship-to-the-c-language-api.md @@ -3,10 +3,12 @@ description: "Learn more about: Relationship to the C-Language API" title: "Relationship to the C-Language API" ms.date: "11/04/2016" helpviewer_keywords: ["books [MFC], about MFC and Windows SDK", "books [MFC]", "MFC, Windows API", "Visual C, Windows API calls", "Windows API [MFC], and MFC"] -ms.assetid: 334e8efc-f3cc-4018-bc2e-02908b2a39fe --- # Relationship to the C-Language API +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The single characteristic that sets the Microsoft Foundation Class (MFC) Library apart from other class libraries for Windows is the very close mapping to the Windows API written in the C language. Further, you can generally mix calls to the class library freely with direct calls to the Windows API. This direct access does not, however, imply that the classes are a complete replacement for that API. Developers must still occasionally make direct calls to some Windows functions, such as [SetCursor](/windows/win32/api/winuser/nf-winuser-setcursor) and [GetSystemMetrics](/windows/win32/api/winuser/nf-winuser-getsystemmetrics), for example. A Windows function is wrapped by a class member function only when there is a clear advantage to doing so. Because you sometimes need to make native Windows function calls, you should have access to the C-language Windows API documentation. This documentation is included with Visual Studio. diff --git a/docs/mfc/relationships-among-mfc-objects.md b/docs/mfc/relationships-among-mfc-objects.md index 81cdad19204..a81651518ab 100644 --- a/docs/mfc/relationships-among-mfc-objects.md +++ b/docs/mfc/relationships-among-mfc-objects.md @@ -3,10 +3,12 @@ description: "Learn more about: Relationships Among MFC Objects" title: "Relationships Among MFC Objects" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, relationships between key objects", "objects [MFC], relationships", "relationships, MFC objects", "MFC object relationships"] -ms.assetid: 6e8f3b51-e80f-4d88-94c8-4c1e4ee163ad --- # Relationships Among MFC Objects +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To help put the document/view creation process in perspective, consider a running program: a document, the frame window used to contain the view, and the view associated with the document. - A document keeps a list of the views of that document and a pointer to the document template that created the document. From 77d011251234af8130fec5147636162bf8c2df35 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 24 Feb 2026 12:05:05 -0800 Subject: [PATCH 327/619] Batch 11: update files (#6265) --- docs/mfc/responding-to-dynamic-data-exchange-dde.md | 4 +++- docs/mfc/retrieving-data-from-the-dialog-object.md | 4 +++- docs/mfc/ribbon-designer-mfc.md | 4 +++- docs/mfc/rich-edit-control-examples.md | 4 +++- docs/mfc/role-of-the-view-in-printing.md | 4 +++- docs/mfc/root-class-cobject.md | 4 +++- docs/mfc/rubber-banding-and-trackers.md | 4 +++- docs/mfc/run-member-function.md | 4 +++- docs/mfc/scrolling-and-scaling-views.md | 4 +++- ...crolling-arranging-sorting-and-finding-in-list-controls.md | 4 +++- docs/mfc/sdi-and-mdi.md | 4 +++- docs/mfc/security-implications-of-customization.md | 4 +++- docs/mfc/selecting-a-graphic-object-into-a-device-context.md | 4 +++- .../sequence-of-operations-for-building-mfc-applications.md | 4 +++- .../sequence-of-operations-for-creating-activex-controls.md | 4 +++- ...quence-of-operations-for-creating-database-applications.md | 4 +++- .../sequence-of-operations-for-creating-ole-applications.md | 4 +++- docs/mfc/serialization-in-mfc.md | 4 +++- docs/mfc/serialization-making-a-serializable-class.md | 4 +++- .../serialization-serialization-vs-database-input-output.md | 4 +++- docs/mfc/serialization-serializing-an-object.md | 4 +++- docs/mfc/serializing-data-to-and-from-files.md | 4 +++- docs/mfc/servers-implementing-a-server.md | 4 +++- docs/mfc/servers-implementing-in-place-frame-windows.md | 4 +++- docs/mfc/servers-implementing-server-documents.md | 4 +++- docs/mfc/servers-server-items.md | 4 +++- docs/mfc/servers-user-interface-issues.md | 4 +++- docs/mfc/servers.md | 4 +++- docs/mfc/setting-a-hot-key.md | 4 +++- docs/mfc/setting-the-day-state-of-a-month-calendar-control.md | 4 +++- docs/mfc/setting-the-dialog-boxs-background-color.md | 3 +++ docs/mfc/setting-the-images-for-an-individual-item.md | 4 +++- docs/mfc/setting-the-mode-of-a-cstatusbarctrl-object.md | 4 +++- docs/mfc/settings-for-the-cstatusbarctrl.md | 4 +++- docs/mfc/settings-for-the-progress-control.md | 4 +++- docs/mfc/settings-for-the-tool-tip-control.md | 4 +++- docs/mfc/settings-for-the-toolbar-control.md | 4 +++- docs/mfc/simple-data-type-classes.md | 4 +++- docs/mfc/slider-control-member-functions.md | 4 +++- docs/mfc/slider-control-styles.md | 4 +++- docs/mfc/slider-notification-messages.md | 4 +++- docs/mfc/special-cwinapp-services.md | 4 +++- docs/mfc/specifying-levels-of-functionality.md | 4 +++- docs/mfc/spin-button-member-functions.md | 4 +++- docs/mfc/spin-button-styles.md | 4 +++- docs/mfc/standard-commands.md | 4 +++- docs/mfc/status-bar-implementation-in-mfc.md | 4 +++- docs/mfc/status-bars.md | 4 +++- ...ps-in-a-typical-ftp-client-application-to-delete-a-file.md | 4 +++- docs/mfc/steps-in-a-typical-ftp-client-application.md | 4 +++- docs/mfc/steps-in-a-typical-gopher-client-application.md | 4 +++- docs/mfc/steps-in-a-typical-http-client-application.md | 4 +++- docs/mfc/steps-in-a-typical-internet-client-application.md | 4 +++- docs/mfc/storing-and-loading-cobjects-via-an-archive.md | 4 +++- docs/mfc/stream-operations-in-rich-edit-controls.md | 4 +++- docs/mfc/styles-for-the-progress-control.md | 4 +++- ...support-for-activation-contexts-in-the-mfc-module-state.md | 4 +++- docs/mfc/tab-controls-and-property-sheets.md | 4 +++- docs/mfc/tabs-and-tab-control-attributes.md | 4 +++- docs/mfc/technical-notes-by-category.md | 4 +++- docs/mfc/technical-notes-by-number.md | 4 +++- docs/mfc/template-based-classes.md | 4 +++- docs/mfc/template-classes-for-arrays-lists-and-maps.md | 4 +++- docs/mfc/testing-internet-applications.md | 4 +++- docs/mfc/testing-properties-and-events-with-test-container.md | 3 +++ docs/mfc/the-ccmdui-class.md | 4 +++- docs/mfc/thread-specific-hot-keys.md | 4 +++- docs/mfc/tn001-window-class-registration.md | 4 +++- docs/mfc/tn002-persistent-object-data-format.md | 3 +++ docs/mfc/tn003-mapping-of-windows-handles-to-objects.md | 4 +++- docs/mfc/tn006-message-maps.md | 4 +++- docs/mfc/tn011-using-mfc-as-part-of-a-dll.md | 4 +++- docs/mfc/tn014-custom-controls.md | 3 +++ docs/mfc/tn016-using-cpp-multiple-inheritance-with-mfc.md | 4 +++- docs/mfc/tn017-destroying-window-objects.md | 4 +++- docs/mfc/tn020-id-naming-and-numbering-conventions.md | 4 +++- docs/mfc/tn021-command-and-message-routing.md | 4 +++- docs/mfc/tn022-standard-commands-implementation.md | 4 +++- docs/mfc/tn023-standard-mfc-resources.md | 4 +++- docs/mfc/tn024-mfc-defined-messages-and-resources.md | 4 +++- docs/mfc/tn025-document-view-and-frame-creation.md | 4 +++- docs/mfc/tn026-ddx-and-ddv-routines.md | 4 +++- docs/mfc/tn028-context-sensitive-help-support.md | 4 +++- docs/mfc/tn029-splitter-windows.md | 4 +++- docs/mfc/tn030-customizing-printing-and-print-preview.md | 4 +++- docs/mfc/tn031-control-bars.md | 4 +++- docs/mfc/tn032-mfc-exception-mechanism.md | 4 +++- docs/mfc/tn033-dll-version-of-mfc.md | 3 +++ ...ultiple-resource-files-and-header-files-with-visual-cpp.md | 4 +++- .../tn036-using-cformview-with-appwizard-and-classwizard.md | 4 +++- docs/mfc/tn037-multithreaded-mfc-2-1-applications.md | 4 +++- docs/mfc/tn038-mfc-ole-iunknown-implementation.md | 3 +++ docs/mfc/tn039-mfc-ole-automation-implementation.md | 4 +++- docs/mfc/tn040-mfc-ole-in-place-resizing-and-zooming.md | 4 +++- docs/mfc/tn041-mfc-ole1-migration-to-mfc-ole-2.md | 4 +++- docs/mfc/tn042-odbc-driver-developer-recommendations.md | 4 +++- docs/mfc/tn043-rfx-routines.md | 4 +++- docs/mfc/tn044-mfc-support-for-dbcs.md | 4 +++- .../tn045-mfc-database-support-for-long-varchar-varbinary.md | 4 +++- docs/mfc/tn046-commenting-conventions-for-the-mfc-classes.md | 4 +++- 100 files changed, 300 insertions(+), 94 deletions(-) diff --git a/docs/mfc/responding-to-dynamic-data-exchange-dde.md b/docs/mfc/responding-to-dynamic-data-exchange-dde.md index cfcc4ddc454..c34e3e3c131 100644 --- a/docs/mfc/responding-to-dynamic-data-exchange-dde.md +++ b/docs/mfc/responding-to-dynamic-data-exchange-dde.md @@ -3,11 +3,13 @@ description: "Learn more about: Responding to Dynamic Data Exchange (DDE)" title: "Responding to Dynamic Data Exchange (DDE)" ms.date: "11/04/2016" helpviewer_keywords: ["registry [MFC], most recently used files", "frame windows [MFC], dynamic data exchange (DDE)", "DDE (Dynamic Data Exchange), frame windows", "registration [MFC], shell", "Shell [MFC], registering file types", "windows [MFC], and dynamic data exchange", "responding to dynamic data exchange (DDE)", "frame windows [MFC], shell registration"] -ms.assetid: 4db838d5-62cf-4123-915a-66e514155c0c ms.topic: concept-article --- # Responding to Dynamic Data Exchange (DDE) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The frame window can respond to dynamic data exchange (DDE) requests to open files from the File Manager (if the file extension is registered or associated with the application). See [Shell Registration](../mfc/special-cwinapp-services.md). ## See also diff --git a/docs/mfc/retrieving-data-from-the-dialog-object.md b/docs/mfc/retrieving-data-from-the-dialog-object.md index 0177ee9d4a8..cd3e39f36e0 100644 --- a/docs/mfc/retrieving-data-from-the-dialog-object.md +++ b/docs/mfc/retrieving-data-from-the-dialog-object.md @@ -3,11 +3,13 @@ description: "Learn more about: Retrieving Data from the Dialog Object" title: "Retrieving Data from the Dialog Object" ms.date: "11/04/2016" helpviewer_keywords: ["dialog boxes [MFC], retrieving user data", "dialog box data [MFC]", "data [MFC], retrieving", "GetDlgItemText method [MFC]", "SetDlgItemText method [MFC]", "SetWindowText method [MFC]", "dialog box data [MFC], retrieving", "retrieving data [MFC]", "user input [MFC], retrieving from MFC dialog boxes", "capturing user input [MFC]", "dialog box controls [MFC], initializing values", "DDX (dialog data exchange) [MFC]", "MFC dialog boxes [MFC], retrieving user input", "data retrieval [MFC], dialog boxes", "data [MFC], dialog boxes", "DDX (dialog data exchange) [MFC], about DDX", "DDX (dialog data exchange) [MFC], retrieving data from Dialog object", "GetWindowText method [MFC]"] -ms.assetid: bdca2b61-6b53-4c2e-b426-8712c7a38ec0 ms.topic: concept-article --- # Retrieving Data from the Dialog Object +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The framework provides an easy way to initialize the values of controls in a dialog box and to retrieve values from the controls. The more laborious manual approach is to call functions such as the `SetDlgItemText` and `GetDlgItemText` member functions of class `CWnd`, which apply to control windows. With these functions, you access each control individually to set or get its value, calling functions such as `SetWindowText` and `GetWindowText`. The framework's approach automates both initialization and retrieval. Dialog data exchange (DDX) lets you exchange data between the controls in the dialog box and member variables in the dialog object more easily. This exchange works both ways. To initialize the controls in the dialog box, you can set the values of data members in the dialog object, and the framework will transfer the values to the controls before the dialog box is displayed. Then you can at any time update the dialog data members with data entered by the user. At that point, you can use the data by referring to the data member variables. diff --git a/docs/mfc/ribbon-designer-mfc.md b/docs/mfc/ribbon-designer-mfc.md index d642ff01095..92a66a7e4ec 100644 --- a/docs/mfc/ribbon-designer-mfc.md +++ b/docs/mfc/ribbon-designer-mfc.md @@ -4,10 +4,12 @@ title: "Ribbon Designer (MFC)" ms.date: "11/19/2018" f1_keywords: ["vc.editors.ribbon.F1"] helpviewer_keywords: ["Ribbon Designer (MFC)", "MFC Ribbon Designer"] -ms.assetid: 0806dfd6-7d11-471a-99e1-4072852231f9 --- # Ribbon Designer (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Ribbon Designer lets you create and customize ribbons in MFC applications. A ribbon is a user interface (UI) element that organizes commands into logical groups. These groups appear on separate tabs in a strip across the top of the window. The ribbon replaces the menu bar and toolbars. A ribbon can significantly improve application usability. For more information, see [Ribbons](/windows/win32/uxguide/cmd-ribbons). The following illustration shows a ribbon. ![MFC Ribbon Resource Control.](../mfc/media/ribbon_no_callouts.png "MFC Ribbon Resource Control") diff --git a/docs/mfc/rich-edit-control-examples.md b/docs/mfc/rich-edit-control-examples.md index 8a37dc61eb9..f5b095f2dc4 100644 --- a/docs/mfc/rich-edit-control-examples.md +++ b/docs/mfc/rich-edit-control-examples.md @@ -2,10 +2,12 @@ description: "Learn more about: Rich Edit Control Examples" title: "Rich Edit Control Examples" ms.date: "02/06/2019" -ms.assetid: ac98bf45-ca74-459c-9b3e-df278a67a00f --- # Rich Edit Control Examples +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The MFC OLE sample [WORDPAD](https://github.com/Microsoft/VCSamples/tree/da802c2aa92a730b3da33c5957186f128709c398/VC2010Samples/MFC/Visual%20C%2B%2B%202008%20Feature%20Pack/WordPad) uses the `CRichEditView`, `CRichEditDoc`, and `CRichEditCntrItem` classes. By extension, it uses the [CRichEditCtrl](../mfc/reference/cricheditctrl-class.md). For a quick description of these three classes, see [Classes Related to Rich Edit Controls](../mfc/classes-related-to-rich-edit-controls.md). ## See also diff --git a/docs/mfc/role-of-the-view-in-printing.md b/docs/mfc/role-of-the-view-in-printing.md index d6d0724eeaa..5900d5ab150 100644 --- a/docs/mfc/role-of-the-view-in-printing.md +++ b/docs/mfc/role-of-the-view-in-printing.md @@ -3,10 +3,12 @@ description: "Learn more about: Role of the View in Printing" title: "Role of the View in Printing" ms.date: "11/04/2016" helpviewer_keywords: ["views [MFC], printing", "OnDraw method [MFC], and printing", "printing [MFC], OnDraw method [MFC]", "printing [MFC], views", "CView class [MFC], role in printing", "printing views [MFC]"] -ms.assetid: 8d4a3c8e-1fce-4edc-b608-94cb5f3e487e --- # Role of the View in Printing +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Your view also plays two important roles in printing its associated document. The view: diff --git a/docs/mfc/root-class-cobject.md b/docs/mfc/root-class-cobject.md index 3f59550cd10..faaf0b9e8cb 100644 --- a/docs/mfc/root-class-cobject.md +++ b/docs/mfc/root-class-cobject.md @@ -3,10 +3,12 @@ description: "Learn more about: Root Class: CObject" title: "Root Class: CObject" ms.date: "11/04/2016" helpviewer_keywords: ["base classes [MFC], MFC objects", "classes [MFC], MFC base class [MFC]", "root class [MFC]", "MFC, base class"] -ms.assetid: 593706f3-e9e5-435f-815d-e7b5176b2a61 --- # Root Class: CObject +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Most of the classes in the Microsoft Foundation Class (MFC) Library are derived from a single base class at the root of the class hierarchy. `CObject` provides a number of useful capabilities to all classes derived from it, with very low overhead. For more information about `CObject` and its capabilities, see [Using CObject](../mfc/using-cobject.md). [CObject](../mfc/reference/cobject-class.md)
diff --git a/docs/mfc/rubber-banding-and-trackers.md b/docs/mfc/rubber-banding-and-trackers.md index 78313d57451..0e3385f5383 100644 --- a/docs/mfc/rubber-banding-and-trackers.md +++ b/docs/mfc/rubber-banding-and-trackers.md @@ -3,11 +3,13 @@ description: "Learn more about: Rubber-Banding and Trackers" title: "Rubber-Banding and Trackers" ms.date: "11/04/2016" helpviewer_keywords: ["trackers [MFC]", "CRectTracker class [MFC], implementing trackers", "OLE objects [MFC], selecting", "rubber banding [MFC]", "WM_LBUTTONDOWN [MFC]"] -ms.assetid: 0d0fa64c-6418-4baf-ab7f-2d16ca039230 ms.topic: concept-article --- # Rubber-Banding and Trackers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Another feature supplied with trackers is the "rubber-band" selection, which allows a user to select multiple OLE items by dragging a sizing rectangle around the items to be selected. When the user releases the left mouse button, items within the region selected by the user are selected and can be manipulated by the user. For instance, the user might drag the selection into another container application. Implementing this feature requires some additional code in your application's WM_LBUTTONDOWN handler function. diff --git a/docs/mfc/run-member-function.md b/docs/mfc/run-member-function.md index d9524c34a85..6c22de662c5 100644 --- a/docs/mfc/run-member-function.md +++ b/docs/mfc/run-member-function.md @@ -3,10 +3,12 @@ description: "Learn more about: Run Member Function" title: "Run Member Function" ms.date: "11/04/2016" helpviewer_keywords: ["WinMain method [MFC]"] -ms.assetid: 24ab7597-2354-495b-9a20-2c8ccc7385b3 --- # Run Member Function +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A framework application spends most of its time in the [Run](../mfc/reference/cwinapp-class.md#run) member function of class [CWinApp](../mfc/reference/cwinapp-class.md). After initialization, `WinMain` calls `Run` to process the message loop. `Run` cycles through a message loop, checking the message queue for available messages. If a message is available, `Run` dispatches it for action. If no messages are available, which is often true, `Run` calls `OnIdle` to do any idle-time processing that you or the framework may need done. If there are no messages and no idle processing to do, the application waits until something happens. When the application terminates, `Run` calls `ExitInstance`. The figure in [OnIdle Member Function](../mfc/onidle-member-function.md) shows the sequence of actions in the message loop. diff --git a/docs/mfc/scrolling-and-scaling-views.md b/docs/mfc/scrolling-and-scaling-views.md index ae3f1dd968d..ab7a05dacbb 100644 --- a/docs/mfc/scrolling-and-scaling-views.md +++ b/docs/mfc/scrolling-and-scaling-views.md @@ -3,11 +3,13 @@ description: "Learn more about: Scrolling and Scaling Views" title: "Scrolling and Scaling Views" ms.date: "11/04/2016" helpviewer_keywords: ["message handlers [MFC]", "scaling views [MFC]", "message handling [MFC], scroll bars in view class [MFC]", "scroll bars [MFC], messages", "scrolling views [MFC]"] -ms.assetid: f98a3421-c336-407e-97ee-dbb2ffd76fbd ms.topic: concept-article --- # Scrolling and Scaling Views +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC supports views that scroll and views that are automatically scaled to the size of the frame window that displays them. Class `CScrollView` supports both kinds of views. For more information about scrolling and scaling, see class [CScrollView](../mfc/reference/cscrollview-class.md) in the *MFC Reference*. For a scrolling example, see the [Scribble sample](../overview/visual-cpp-samples.md). diff --git a/docs/mfc/scrolling-arranging-sorting-and-finding-in-list-controls.md b/docs/mfc/scrolling-arranging-sorting-and-finding-in-list-controls.md index 118697bf2bf..d2f6e704ec7 100644 --- a/docs/mfc/scrolling-arranging-sorting-and-finding-in-list-controls.md +++ b/docs/mfc/scrolling-arranging-sorting-and-finding-in-list-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Scrolling, Arranging, Sorting, and Finding in Li title: "Scrolling, Arranging, Sorting, and Finding in List Controls" ms.date: "06/03/2019" helpviewer_keywords: ["image lists [MFC], sorting", "image lists [MFC], arranging", "image lists [MFC], scrolling", "CListCtrl class [MFC], finding items in", "image lists [MFC], finding items", "CListCtrl class [MFC], scrolling", "CListCtrl class [MFC], sorting", "CListCtrl class [MFC], arranging the list"] -ms.assetid: dcc51e4c-0ca8-4319-bec5-6994cc8ac9e5 --- # Scrolling, Arranging, Sorting, and Finding in List Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + List controls ([CListCtrl](../mfc/reference/clistctrl-class.md)) are scrollable by default. For more information, see [Scroll Position](/windows/win32/Controls/using-list-view-controls) in the Windows SDK and the [Scroll](../mfc/reference/clistctrl-class.md#scroll) member function. You can call `CListCtrl` member functions to arrange list items in the control, sort items, and find particular items. For more information, see [Using ListView Controls](/windows/win32/Controls/using-list-view-controls) in the Windows SDK and the [CListCtrl](../mfc/reference/clistctrl-class.md) members [Arrange](../mfc/reference/clistctrl-class.md#arrange), [SortItems](../mfc/reference/clistctrl-class.md#sortitems), and [FindItem](../mfc/reference/clistctrl-class.md#finditem). diff --git a/docs/mfc/sdi-and-mdi.md b/docs/mfc/sdi-and-mdi.md index 9eb07bb3531..0d8faf95203 100644 --- a/docs/mfc/sdi-and-mdi.md +++ b/docs/mfc/sdi-and-mdi.md @@ -3,10 +3,12 @@ description: "Learn more about: SDI and MDI" title: "SDI and MDI" ms.date: "11/04/2016" helpviewer_keywords: ["frame windows [MFC], SDI applications", "frame windows [MFC], MDI applications", "MFC, windows", "single document interface (SDI) [MFC], applications", "MDI [MFC], vs. SDI"] -ms.assetid: bb7239d9-4759-4f63-bfff-44a04b48c067 --- # SDI and MDI +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC makes it easy to work with both single-document interface (SDI) and multiple-document interface (MDI) applications. SDI applications allow only one open document frame window at a time. MDI applications allow multiple document frame windows to be open in the same instance of an application. An MDI application has a window within which multiple MDI child windows, which are frame windows themselves, can be opened, each containing a separate document. In some applications, the child windows can be of different types, such as chart windows and spreadsheet windows. In that case, the menu bar can change as MDI child windows of different types are activated. diff --git a/docs/mfc/security-implications-of-customization.md b/docs/mfc/security-implications-of-customization.md index e5a33963ddb..ba8a5191d15 100644 --- a/docs/mfc/security-implications-of-customization.md +++ b/docs/mfc/security-implications-of-customization.md @@ -3,10 +3,12 @@ description: "Learn more about: Security Implications of Customization" title: "Security Implications of Customization" ms.date: "11/04/2016" helpviewer_keywords: ["security, MFC Feature Pack", "MFC Feature Pack, security"] -ms.assetid: 9be96b12-be38-43bd-a133-5d671265f7a1 --- # Security Implications of Customization +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic discusses a potential security weakness in MFC. ## Potential Security Weakness diff --git a/docs/mfc/selecting-a-graphic-object-into-a-device-context.md b/docs/mfc/selecting-a-graphic-object-into-a-device-context.md index 722c6609e74..a1946b710d9 100644 --- a/docs/mfc/selecting-a-graphic-object-into-a-device-context.md +++ b/docs/mfc/selecting-a-graphic-object-into-a-device-context.md @@ -3,11 +3,13 @@ description: "Learn more about: Selecting a Graphic Object into a Device Context title: "Selecting a Graphic Object into a Device Context" ms.date: "11/04/2016" helpviewer_keywords: ["graphic objects [MFC], selecting into device context", "SelectObject method [MFC]", "GDI objects [MFC], device contexts", "lifetime, graphic objects [MFC]", "device contexts, selecting graphic objects into", "device contexts, graphic objects [MFC]"] -ms.assetid: cf54a330-63ef-421f-83eb-90ec7bd82eef ms.topic: concept-article --- # Selecting a Graphic Object into a Device Context +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This topic applies to using graphic objects in a window's device context. After you [create a drawing object](../mfc/one-stage-and-two-stage-construction-of-objects.md), you must select it into the device context in place of the default object stored there: [!code-cpp[NVC_MFCDocViewSDI#7](../mfc/codesnippet/cpp/selecting-a-graphic-object-into-a-device-context_1.cpp)] diff --git a/docs/mfc/sequence-of-operations-for-building-mfc-applications.md b/docs/mfc/sequence-of-operations-for-building-mfc-applications.md index 529a989c36c..a19042a0516 100644 --- a/docs/mfc/sequence-of-operations-for-building-mfc-applications.md +++ b/docs/mfc/sequence-of-operations-for-building-mfc-applications.md @@ -3,10 +3,12 @@ description: "Learn more about: Sequence of Operations for Building MFC Applicat title: "Sequence of Operations for Building MFC Applications" ms.date: "09/09/2019" helpviewer_keywords: ["applications [MFC], developing"] -ms.assetid: 6973c714-fe20-48c6-926b-de88356b3a3d --- # Sequence of Operations for Building MFC Applications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following table explains the general sequence you might typically follow as you develop your MFC application. ### Sequence for Building an Application with the Framework diff --git a/docs/mfc/sequence-of-operations-for-creating-activex-controls.md b/docs/mfc/sequence-of-operations-for-creating-activex-controls.md index e534e12453f..ac9ef6254a2 100644 --- a/docs/mfc/sequence-of-operations-for-creating-activex-controls.md +++ b/docs/mfc/sequence-of-operations-for-creating-activex-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Sequence of Operations for Creating ActiveX Cont title: "Sequence of Operations for Creating ActiveX Controls" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ActiveX controls [MFC], creating", "ActiveX controls [MFC], creating", "sequence [MFC], for creating ActiveX controls", "OLE controls [MFC], MFC", "sequence [MFC]"] -ms.assetid: 7d868c53-a0af-4ef6-a89c-e1c03c583a53 --- # Sequence of Operations for Creating ActiveX Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following table shows your role and the framework's role in creating ActiveX controls (formerly known as OLE controls). ### Creating ActiveX Controls diff --git a/docs/mfc/sequence-of-operations-for-creating-database-applications.md b/docs/mfc/sequence-of-operations-for-creating-database-applications.md index 8243421de2d..ea35c960ae0 100644 --- a/docs/mfc/sequence-of-operations-for-creating-database-applications.md +++ b/docs/mfc/sequence-of-operations-for-creating-database-applications.md @@ -3,10 +3,12 @@ description: "Learn more about: Sequence of Operations for Creating Database App title: "Sequence of Operations for Creating Database Applications" ms.date: "11/04/2016" helpviewer_keywords: ["applications [MFC], database", "database applications [MFC]", "database applications [MFC], creating", "MFC, database applications"] -ms.assetid: 9371da59-8536-43cd-8314-706ad320e2ec --- # Sequence of Operations for Creating Database Applications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following table shows your role and the framework's role in writing database applications. > [!NOTE] diff --git a/docs/mfc/sequence-of-operations-for-creating-ole-applications.md b/docs/mfc/sequence-of-operations-for-creating-ole-applications.md index 067edaef529..3ea89654f37 100644 --- a/docs/mfc/sequence-of-operations-for-creating-ole-applications.md +++ b/docs/mfc/sequence-of-operations-for-creating-ole-applications.md @@ -3,10 +3,12 @@ description: "Learn more about: Sequence of Operations for Creating OLE Applicat title: "Sequence of Operations for Creating OLE Applications" ms.date: "11/04/2016" helpviewer_keywords: ["OLE applications [MFC], creating", "OLE applications [MFC]", "applications [OLE], creating", "applications [OLE]"] -ms.assetid: 84b0f606-36c1-4253-9cea-44427f0074b9 --- # Sequence of Operations for Creating OLE Applications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following table shows your role and the framework's role in creating OLE linking and embedding applications. These represent options available rather than a sequence of steps to perform. ### Creating OLE Applications diff --git a/docs/mfc/serialization-in-mfc.md b/docs/mfc/serialization-in-mfc.md index e864816e8ab..36fb257c7f9 100644 --- a/docs/mfc/serialization-in-mfc.md +++ b/docs/mfc/serialization-in-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Serialization in MFC" title: "Serialization in MFC" ms.date: "11/04/2016" helpviewer_keywords: ["collection classes [MFC], serialization", "bypassing serialization [MFC]", "MFC, serialization", "serialization [MFC], MFC", "serialization [MFC], bypassing"] -ms.assetid: fb596a18-4522-47e0-96e0-192732d24c12 --- # Serialization in MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the serialization mechanism provided in the Microsoft Foundation Class Library (MFC) to allow objects to persist between runs of your program. Serialization is the process of writing or reading an object to or from a persistent storage medium such as a disk file. Serialization is ideal for situations where it is desired to maintain the state of structured data (such as C++ classes or structures) during or after execution of a program. Using the serialization objects provided by MFC allows this to occur in a standard and consistent manner, relieving the user from the need to perform file operations by hand. diff --git a/docs/mfc/serialization-making-a-serializable-class.md b/docs/mfc/serialization-making-a-serializable-class.md index 1f99e1741f4..c5108c24f65 100644 --- a/docs/mfc/serialization-making-a-serializable-class.md +++ b/docs/mfc/serialization-making-a-serializable-class.md @@ -3,10 +3,12 @@ description: "Learn more about: Serialization: Making a Serializable Class" title: "Serialization: Making a Serializable Class" ms.date: "11/04/2016" helpviewer_keywords: ["serializable class [MFC]", "DECLARE_SERIAL macro [MFC]", "default constructor [MFC]", "VERSIONABLE_SCHEMA macro [MFC]", "classes [MFC], derived", "IMPLEMENT_SERIAL macro [MFC]", "no-arguments constructor [MFC]", "Serialize method, overriding", "defaults [MFC], constructor", "CObject class [MFC], deriving serializable classes", "constructors [MFC], defining with no arguments", "serialization [MFC], serializable classes", "no default constructor"] -ms.assetid: 59a14d32-1cc8-4275-9829-99639beee27c --- # Serialization: Making a Serializable Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Five main steps are required to make a class serializable. They are listed below and explained in the following sections: 1. [Deriving your class from CObject](#_core_deriving_your_class_from_cobject) (or from some class derived from `CObject`). diff --git a/docs/mfc/serialization-serialization-vs-database-input-output.md b/docs/mfc/serialization-serialization-vs-database-input-output.md index e1aca76ea6c..52e8a9d75a6 100644 --- a/docs/mfc/serialization-serialization-vs-database-input-output.md +++ b/docs/mfc/serialization-serialization-vs-database-input-output.md @@ -3,10 +3,12 @@ description: "Learn more about: Serialization: Serialization vs. Database Input/ title: "Serialization: Serialization vs. Database Input-Output" ms.date: "11/04/2016" helpviewer_keywords: ["database applications [MFC], file I/O vs. serialization", "serialization [MFC], vs. database I/O", "I/O [MFC], vs. serialization", "databases [MFC], input/output handling"] -ms.assetid: f1d23d77-4761-4a52-a7ea-54fc92d347ea --- # Serialization: Serialization vs. Database Input/Output +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains when to use document objects and serialization for file-based input/output (I/O) and when other I/O techniques are appropriate — because the application reads and writes data on a per-transaction basis, as in database applications. If you don't use serialization, you also won't need the File Open, Save, and Save As commands. Topics covered include: - [Recommendations for handling input/output](../mfc/recommendations-for-handling-input-output.md) diff --git a/docs/mfc/serialization-serializing-an-object.md b/docs/mfc/serialization-serializing-an-object.md index 232074c244b..cadb13d0f3f 100644 --- a/docs/mfc/serialization-serializing-an-object.md +++ b/docs/mfc/serialization-serializing-an-object.md @@ -3,10 +3,12 @@ description: "Learn more about: Serialization: Serializing an Object" title: "Serialization: Serializing an Object" ms.date: "11/04/2016" helpviewer_keywords: ["serializing objects [MFC]", "serialization [MFC], objects", "objects [MFC], serializing"] -ms.assetid: 1db772b1-ad55-4fcf-b133-126cca082510 --- # Serialization: Serializing an Object +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The article [Serialization: Making a Serializable Class](../mfc/serialization-making-a-serializable-class.md) shows how to make a class serializable. Once you have a serializable class, you can serialize objects of that class to and from a file via a [CArchive](../mfc/reference/carchive-class.md) object. This article explains: - [What a CArchive object is](../mfc/what-is-a-carchive-object.md). diff --git a/docs/mfc/serializing-data-to-and-from-files.md b/docs/mfc/serializing-data-to-and-from-files.md index 4131496be72..f261f8b8832 100644 --- a/docs/mfc/serializing-data-to-and-from-files.md +++ b/docs/mfc/serializing-data-to-and-from-files.md @@ -3,11 +3,13 @@ description: "Learn more about: Serializing Data to and from Files" title: "Serializing Data to and from Files" ms.date: "11/04/2016" helpviewer_keywords: ["documents [MFC], serialization", "documents [MFC], saving", "saving documents", "deserialization [MFC]", "serialization [MFC], role of document", "serialization [MFC], role of data", "data [MFC]", "data [MFC], serializing", "document data [MFC]"] -ms.assetid: b42a0c68-4bc4-4012-9938-5433a26d2c24 ms.topic: concept-article --- # Serializing Data to and from Files +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The basic idea of persistence is that an object should be able to write its current state, indicated by the values of its member variables, to persistent storage. Later, the object can be re-created by reading, or "deserializing," the object's state from persistent storage. A key point here is that the object itself is responsible for reading and writing its own state. Thus, for a class to be persistent, it must implement the basic serialization operations. The framework provides a default implementation for saving documents to disk files in response to the Save and Save As commands on the File menu and for loading documents from disk files in response to the Open command. With very little work, you can implement a document's ability to write and read its data to and from a file. The main thing you must do is override the [Serialize](../mfc/reference/cobject-class.md#serialize) member function in your document class. diff --git a/docs/mfc/servers-implementing-a-server.md b/docs/mfc/servers-implementing-a-server.md index c7b9e42a749..d7e904aaf38 100644 --- a/docs/mfc/servers-implementing-a-server.md +++ b/docs/mfc/servers-implementing-a-server.md @@ -3,10 +3,12 @@ description: "Learn more about: Servers: Implementing a Server" title: "Servers: Implementing a Server" ms.date: "11/04/2016" helpviewer_keywords: ["servers, implementing", "OLE server applications [MFC], implementing OLE servers"] -ms.assetid: 5bd57e8e-3b23-4f23-9597-496fac2d24b5 --- # Servers: Implementing a Server +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the code the MFC Application Wizard creates for a visual editing server application. If you are not using the application wizard, this article lists the areas where you must write code to implement a server application. If you are using the application wizard to create a new server application, it provides a significant amount of server-specific code for you. If you are adding visual editing server functionality to an existing application, you must duplicate the code that the application wizard would have provided before adding the rest of the necessary server code. diff --git a/docs/mfc/servers-implementing-in-place-frame-windows.md b/docs/mfc/servers-implementing-in-place-frame-windows.md index ae276eda3ea..8df12137b90 100644 --- a/docs/mfc/servers-implementing-in-place-frame-windows.md +++ b/docs/mfc/servers-implementing-in-place-frame-windows.md @@ -3,10 +3,12 @@ description: "Learn more about: Servers: Implementing In-Place Frame Windows" title: "Servers: Implementing In-Place Frame Windows" ms.date: "09/09/2019" helpviewer_keywords: ["frame windows [MFC], implementing", "OLE server applications [MFC], frame windows", "servers, in-place frame windows", "frame windows [MFC], in-place", "in-place frame windows"] -ms.assetid: 09bde4d8-15e2-4fba-8d14-9b954d926b92 --- # Servers: Implementing In-Place Frame Windows +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains what you must do to implement in-place frame windows in your visual editing server application if you do not use the application wizard to create your server application. In place of following the procedure outlined in this article, you could use an existing in-place frame-window class from either an application wizard-generated application or a sample provided with Visual Studio. #### To declare an in-place frame-window class diff --git a/docs/mfc/servers-implementing-server-documents.md b/docs/mfc/servers-implementing-server-documents.md index 63a6bb9c0bb..05049ed51a8 100644 --- a/docs/mfc/servers-implementing-server-documents.md +++ b/docs/mfc/servers-implementing-server-documents.md @@ -3,10 +3,12 @@ description: "Learn more about: Servers: Implementing Server Documents" title: "Servers: Implementing Server Documents" ms.date: "11/04/2016" helpviewer_keywords: ["OLE server applications [MFC], managing server documents", "OLE server applications [MFC], implementing OLE servers", "servers, server documents", "server documents [MFC], implementing"] -ms.assetid: cca1451a-ad09-47ed-b56e-bccd78fc86d1 --- # Servers: Implementing Server Documents +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the steps you must take to successfully implement a server document if you did not specify the OLE Server option in the application wizard. #### To define a server document class diff --git a/docs/mfc/servers-server-items.md b/docs/mfc/servers-server-items.md index 86bcb8eb760..8ede0e366d0 100644 --- a/docs/mfc/servers-server-items.md +++ b/docs/mfc/servers-server-items.md @@ -3,10 +3,12 @@ description: "Learn more about: Servers: Server Items" title: "Servers: Server Items" ms.date: "11/04/2016" helpviewer_keywords: ["server items, implementing", "servers [MFC], server items", "architecture [MFC], server-item", "server items", "OLE server applications [MFC], server items"] -ms.assetid: 28ba81a1-726a-4728-a52d-68bc7efd5a3c --- # Servers: Server Items +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When a container launches a server so that a user can edit an embedded or linked OLE item, the server application creates a "server item." The server item, which is an object of a class derived from `COleServerItem`, provides an interface between the server document and the container application. The `COleServerItem` class defines several overridable member functions that are called by OLE, usually in response to requests from the container. Server items can represent part of the server document or the entire document. When an OLE item is embedded in the container document, the server item represents the entire server document. When the OLE item is linked, the server item can represent a part of the server document or the whole document, depending on whether the link is to a part or to the whole. diff --git a/docs/mfc/servers-user-interface-issues.md b/docs/mfc/servers-user-interface-issues.md index d0dd6bf54da..5c53ea2e53b 100644 --- a/docs/mfc/servers-user-interface-issues.md +++ b/docs/mfc/servers-user-interface-issues.md @@ -3,10 +3,12 @@ description: "Learn more about: Servers: User-Interface Issues" title: "Servers: User-Interface Issues" ms.date: "11/04/2016" helpviewer_keywords: ["OLE server applications [MFC], user interface", "servers, user-interface issues", "user interface issues"] -ms.assetid: 7ef55702-b439-43fa-8ced-c69b96239a89 --- # Servers: User-Interface Issues +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A server application has a number of features that must be added to the user interface to supply OLE items to container applications. For further information on the menus and additional resources that need to be added to a server application, see [Menus and Resources: Server Additions](../mfc/menus-and-resources-server-additions.md). ## See also diff --git a/docs/mfc/servers.md b/docs/mfc/servers.md index 79e33d42863..f4ad231f490 100644 --- a/docs/mfc/servers.md +++ b/docs/mfc/servers.md @@ -3,10 +3,12 @@ description: "Learn more about: Servers" title: "Servers" ms.date: "11/04/2016" helpviewer_keywords: ["OLE server applications [MFC]", "OLE server applications [MFC], activation", "full-server", "servers", "mini-server", "OLE server applications [MFC], server types", "server applications [MFC]"] -ms.assetid: e45172e8-eae3-400a-8139-0fa009a42fdc --- # Servers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A server application (or component application) creates OLE items (or components) for use by container applications. A visual editing server application also supports visual editing or in-place activation. Another form of OLE server is an [automation server](../mfc/automation-servers.md). Some server applications support only the creation of embedded items; others support the creation of both embedded and linked items. Some support linking only, although this is rare. All server applications must support activation by container applications when the user wants to edit an item. An application can be both a container and a server. In other words, it can both incorporate data into its documents, and create data that can be incorporated as items into other applications' documents. A miniserver is a special type of server application that can only be launched by a container. Microsoft Draw and Microsoft Graph are examples of miniservers. A miniserver does not store documents as files on disk. Instead, it reads its documents from and writes them to items in documents belonging to containers. As a result, a miniserver supports embedding only, not linking. diff --git a/docs/mfc/setting-a-hot-key.md b/docs/mfc/setting-a-hot-key.md index fbe03ecfbdd..902a72d9a00 100644 --- a/docs/mfc/setting-a-hot-key.md +++ b/docs/mfc/setting-a-hot-key.md @@ -3,11 +3,13 @@ description: "Learn more about: Setting a Hot Key" title: "Setting a Hot Key" ms.date: "11/04/2016" helpviewer_keywords: ["keyboard shortcuts [MFC], hot keys", "access keys [MFC], hot keys", "CHotKeyCtrl class [MFC], setting hot key"] -ms.assetid: 6f3bc141-e346-4dce-9ca7-3e6b2c453f3f ms.topic: concept-article --- # Setting a Hot Key +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Your application can use the information provided by a hot key ([CHotKeyCtrl](../mfc/reference/chotkeyctrl-class.md)) control in one of two ways: - Set up a global hot key for activating a nonchild window by sending a [WM_SETHOTKEY](/windows/win32/inputdev/wm-sethotkey) message to the window to be activated. diff --git a/docs/mfc/setting-the-day-state-of-a-month-calendar-control.md b/docs/mfc/setting-the-day-state-of-a-month-calendar-control.md index f563ff6a993..8e99333c363 100644 --- a/docs/mfc/setting-the-day-state-of-a-month-calendar-control.md +++ b/docs/mfc/setting-the-day-state-of-a-month-calendar-control.md @@ -4,11 +4,13 @@ title: "Setting the Day State of a Month Calendar Control" ms.date: "11/04/2016" f1_keywords: ["MCN_GETDAYSTATE"] helpviewer_keywords: ["CMonthCalCtrl class [MFC], setting day state info", "MCN_GETDAYSTATE notification [MFC]", "month calendar controls [MFC], day state info"] -ms.assetid: 435d1b11-ec0e-4121-9e25-aaa6af812a3c ms.topic: how-to --- # Setting the Day State of a Month Calendar Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + One of the attributes of a month calendar control is the ability to store information, referred to as the day state of the control, for each day of the month. This information is used to emphasize certain dates for the month currently displayed. > [!NOTE] diff --git a/docs/mfc/setting-the-dialog-boxs-background-color.md b/docs/mfc/setting-the-dialog-boxs-background-color.md index f9636fc6710..5adc2f37f3c 100644 --- a/docs/mfc/setting-the-dialog-boxs-background-color.md +++ b/docs/mfc/setting-the-dialog-boxs-background-color.md @@ -7,6 +7,9 @@ ms.topic: concept-article --- # Setting the Dialog Box's Background Color +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can set the background color of your dialog boxes by handling `WM_CTLCOLOR` messages for the dialog box window. The color you set is used for only the specified dialog box. For example, the following code fragment sets the background color of the dialog box to dark grey. The `OnCtlColor` member function is called whenever the dialog box is redrawn: diff --git a/docs/mfc/setting-the-images-for-an-individual-item.md b/docs/mfc/setting-the-images-for-an-individual-item.md index d8b1d62da58..e871b56a334 100644 --- a/docs/mfc/setting-the-images-for-an-individual-item.md +++ b/docs/mfc/setting-the-images-for-an-individual-item.md @@ -3,11 +3,13 @@ description: "Learn more about: Setting the Images for an Individual Item" title: "Setting the Images for an Individual Item" ms.date: "11/04/2016" helpviewer_keywords: ["extended combo boxes [MFC], images", "images [MFC], combo box items"] -ms.assetid: bde83db8-23a7-4e35-837a-c86447d2c0af ms.topic: how-to --- # Setting the Images for an Individual Item +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The different types of images used by the extended combo box item are determined by the values in the *iImage*, *iSelectedImage*, and *iOverlay* members of the [COMBOBOXEXITEM](/windows/win32/api/commctrl/ns-commctrl-comboboxexitemw) structure. Each value is the index of an image in the associated image list of the control. By default, these members are set to 0, causing the control to display no image for the item. If you want to use images for a specific item, you can modify the structure accordingly, either when inserting the combo box item or by modifying an existing combo box item. ## Setting the Image for a New Item diff --git a/docs/mfc/setting-the-mode-of-a-cstatusbarctrl-object.md b/docs/mfc/setting-the-mode-of-a-cstatusbarctrl-object.md index 2b6710e45a3..cbf9cb32b0f 100644 --- a/docs/mfc/setting-the-mode-of-a-cstatusbarctrl-object.md +++ b/docs/mfc/setting-the-mode-of-a-cstatusbarctrl-object.md @@ -3,11 +3,13 @@ description: "Learn more about: Setting the Mode of a CStatusBarCtrl Object" title: "Setting the Mode of a CStatusBarCtrl Object" ms.date: "11/04/2016" helpviewer_keywords: ["simple mode and status bar controls", "IsSimple method, using", "SetSimple method [MFC]", "status bar controls [MFC], simple and nonsimple modes", "non-simple mode and status bar controls", "CStatusBarCtrl class [MFC], simple and nonsimple modes"] -ms.assetid: ca6076e5-1501-4e33-8d35-9308941e46c0 ms.topic: concept-article --- # Setting the Mode of a CStatusBarCtrl Object +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + There are two modes for a `CStatusBarCtrl` object: simple and nonsimple. In the majority of cases, your status bar control will have one or more parts, along with text and perhaps an icon or icons. This is called the nonsimple mode. For more information on this mode, see [Initializing the Parts of a CStatusBarCtrl Object](../mfc/initializing-the-parts-of-a-cstatusbarctrl-object.md). However, there are cases where you only need to display a single line of text. In this case, the simple mode is sufficient for your needs. To change the mode of the `CStatusBarCtrl` object to simple, make a call to the [SetSimple](../mfc/reference/cstatusbarctrl-class.md#setsimple) member function. Once the status bar control is in simple mode, set the text by calling the `SetText` member function, passing 255 as the value for the *nPane* parameter. diff --git a/docs/mfc/settings-for-the-cstatusbarctrl.md b/docs/mfc/settings-for-the-cstatusbarctrl.md index a8ec8d51a93..332b48a0464 100644 --- a/docs/mfc/settings-for-the-cstatusbarctrl.md +++ b/docs/mfc/settings-for-the-cstatusbarctrl.md @@ -3,10 +3,12 @@ description: "Learn more about: Settings for the CStatusBarCtrl" title: "Settings for the CStatusBarCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["status bar controls [MFC], settings", "CStatusBarCtrl class [MFC], settings"] -ms.assetid: adeba0c3-17f3-435c-b140-a57845e9ce49 --- # Settings for the CStatusBarCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The default position of a [CStatusBarCtrl](../mfc/reference/cstatusbarctrl-class.md) status window is along the bottom of the parent window, but you can specify the CCS_TOP style to have it appear at the top of the parent window's client area. You can specify the SBARS_SIZEGRIP style to include a sizing grip at the right end of the `CStatusBarCtrl` status window. A sizing grip is similar to a sizing border; it is a rectangular area that the user can click and drag to resize the parent window. diff --git a/docs/mfc/settings-for-the-progress-control.md b/docs/mfc/settings-for-the-progress-control.md index 982abdb535b..778150af132 100644 --- a/docs/mfc/settings-for-the-progress-control.md +++ b/docs/mfc/settings-for-the-progress-control.md @@ -3,10 +3,12 @@ description: "Learn more about: Settings for the Progress Control" title: "Settings for the Progress Control" ms.date: "11/04/2016" helpviewer_keywords: ["CProgressCtrl class [MFC], settings", "progress controls [MFC], settings"] -ms.assetid: f4616e91-74fa-4000-ba0d-d3ddc0ee075b --- # Settings for the Progress Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The basic settings for the progress control ([CProgressCtrl](../mfc/reference/cprogressctrl-class.md)) are the range and current position. The range represents the entire duration of the operation. The current position represents the progress that your application has made toward completing the operation. Any changes to the range or position cause the progress control to redraw itself. By default, the range is set to 0 - 100, and the initial position is set to 0. To retrieve the current range settings for the progress control, use the [GetRange](../mfc/reference/cprogressctrl-class.md#getrange) member function. To change the range, use the [SetRange](../mfc/reference/cprogressctrl-class.md#setrange) member function. diff --git a/docs/mfc/settings-for-the-tool-tip-control.md b/docs/mfc/settings-for-the-tool-tip-control.md index 05c07197ab0..adde2501854 100644 --- a/docs/mfc/settings-for-the-tool-tip-control.md +++ b/docs/mfc/settings-for-the-tool-tip-control.md @@ -3,10 +3,12 @@ description: "Learn more about: Settings for the Tool Tip Control" title: "Settings for the Tool Tip Control" ms.date: "11/04/2016" helpviewer_keywords: ["tool tips [MFC], activating", "CToolTipCtrl class [MFC], settings"] -ms.assetid: ff8c5c46-2047-403a-bd98-ffec3d21ee3a --- # Settings for the Tool Tip Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can set the tool tip control ([CToolTipCtrl](../mfc/reference/ctooltipctrl-class.md)) to be either active or inactive. When you set it to be active, the tool tip control appears when the cursor is on a tool. When you set it to be inactive, the tool tip control does not appear, even if the cursor is on a tool. Call [Activate](../mfc/reference/ctooltipctrl-class.md#activate) to activate or deactivate a tool tip control. You can set an active tool tip to display the tool tip when the cursor is on a tool, whether or not the tool tip control's owner window is active or inactive, by using the TTS_ALWAYSTIP style. If you do not use this style, the tool tip control appears when the tool's owner window is active, but not when it is inactive. diff --git a/docs/mfc/settings-for-the-toolbar-control.md b/docs/mfc/settings-for-the-toolbar-control.md index 5649440229c..91e4a115f28 100644 --- a/docs/mfc/settings-for-the-toolbar-control.md +++ b/docs/mfc/settings-for-the-toolbar-control.md @@ -3,10 +3,12 @@ description: "Learn more about: Settings for the Toolbar Control" title: "Settings for the Toolbar Control" ms.date: "11/04/2016" helpviewer_keywords: ["toolbar controls [MFC], about toolbar controls", "CToolBarCtrl class [MFC], settings"] -ms.assetid: 025ba920-b3ee-4d82-9367-e652cd7875b9 --- # Settings for the Toolbar Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The buttons on a toolbar can display a bitmap, a string, or both. By default, the image size is set to the dimensions of 16 by 15 pixels. All buttons are the same width, by default 24 by 22 pixels. A toolbar's height is determined by the height of the buttons, and a toolbar's width is the same as the width of the parent window's client area, also by default. A toolbar can have built-in customization features, including a system-defined customization dialog box, that allow the user to insert, delete, or rearrange toolbar buttons. An application determines whether the customization features are available to the user and controls the extent to which the user can customize the toolbar. For more information about customizing the toolbar, see class [CToolBarCtrl](../mfc/reference/ctoolbarctrl-class.md) in the *MFC Reference*. diff --git a/docs/mfc/simple-data-type-classes.md b/docs/mfc/simple-data-type-classes.md index 4e332b84f9c..d5dbfc4d22f 100644 --- a/docs/mfc/simple-data-type-classes.md +++ b/docs/mfc/simple-data-type-classes.md @@ -4,10 +4,12 @@ title: "Simple Data Type Classes" ms.date: "11/04/2016" f1_keywords: ["vc.classes.data"] helpviewer_keywords: ["scalar classes [MFC]", "data classes [MFC]", "simple data type classes [MFC]"] -ms.assetid: 0d591d68-0a33-49e9-8a6d-90c90de5c16a --- # Simple Data Type Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following classes encapsulate drawing coordinates, character strings, and time and date information, allowing convenient use of C++ syntax. These objects are used widely as parameters to the member functions of Windows classes in the class library. Because `CPoint`, `CSize`, and `CRect` correspond to the **POINT**, **SIZE**, and **RECT** structures, respectively, in the Windows SDK, you can use objects of these C++ classes wherever you can use these C-language structures. The classes provide useful interfaces through their member functions. `CStringT` provides very flexible dynamic character strings. `CTime`, `COleDateTime`, `CTimeSpan`, and `COleTimeSpan` represent time and date values. For more information about these classes, see the article [Date and Time](../atl-mfc-shared/date-and-time.md). The classes that begin with "`COle`" are encapsulations of data types provided by OLE. These data types can be used in Windows programs regardless of whether other OLE features are used. diff --git a/docs/mfc/slider-control-member-functions.md b/docs/mfc/slider-control-member-functions.md index 2e0e2228d90..3bd37f94b77 100644 --- a/docs/mfc/slider-control-member-functions.md +++ b/docs/mfc/slider-control-member-functions.md @@ -3,10 +3,12 @@ description: "Learn more about: Slider Control Member Functions" title: "Slider Control Member Functions" ms.date: "11/04/2016" helpviewer_keywords: ["CSliderCtrl class [MFC], methods", "slider controls [MFC], member functions"] -ms.assetid: dbde49ee-7306-4d14-a6ce-d09aa198178f --- # Slider Control Member Functions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An application can call the slider control's member functions to retrieve information about the slider control ([CSliderCtrl](../mfc/reference/csliderctrl-class.md)) and to change its characteristics. To retrieve the position of the slider (that is, the value the user has chosen), use the [GetPos](../mfc/reference/csliderctrl-class.md#getpos) member function. To set the position of the slider, use the [SetPos](../mfc/reference/csliderctrl-class.md#setpos) member function. diff --git a/docs/mfc/slider-control-styles.md b/docs/mfc/slider-control-styles.md index b84fb69f468..b779c005ee2 100644 --- a/docs/mfc/slider-control-styles.md +++ b/docs/mfc/slider-control-styles.md @@ -3,10 +3,12 @@ description: "Learn more about: Slider Control Styles" title: "Slider Control Styles" ms.date: "11/04/2016" helpviewer_keywords: ["slider controls [MFC], styles", "CSliderCtrl class [MFC], styles", "styles [MFC], CSliderCtrl", "styles [MFC], slider controls"] -ms.assetid: 64c491fc-5af1-4f97-ae30-854071b3dc02 --- # Slider Control Styles +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Slider controls ([CSliderCtrl](../mfc/reference/csliderctrl-class.md)) can have either a vertical or horizontal orientation. They can have tick marks on either side, both sides, or neither. They can also be used to specify a range of consecutive values. These properties are controlled by using slider control styles, which you specify when you create the slider control. The TBS_HORZ and TBS_VERT styles determine the orientation of the slider control. If you do not specify an orientation, the slider control is oriented horizontally. diff --git a/docs/mfc/slider-notification-messages.md b/docs/mfc/slider-notification-messages.md index 3e750d22cde..da9382e3626 100644 --- a/docs/mfc/slider-notification-messages.md +++ b/docs/mfc/slider-notification-messages.md @@ -3,10 +3,12 @@ description: "Learn more about: Slider Notification Messages" title: "Slider Notification Messages" ms.date: "11/04/2016" helpviewer_keywords: ["CSliderCtrl class [MFC], notifications", "slider controls [MFC], notification messages", "messages, notification", "notifications [MFC], CSliderCtrl"] -ms.assetid: b9121104-3889-4a10-92bf-f3723f1af9d0 --- # Slider Notification Messages +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A slider control notifies its parent window of user actions by sending the parent WM_HSCROLL or WM_VSCROLL messages, depending on the orientation of the slider control. To handle these messages, add handlers for the WM_HSCROLL and WM_VSCROLL messages to the parent window. The [OnHScroll](../mfc/reference/cwnd-class.md#onhscroll) and [OnVScroll](../mfc/reference/cwnd-class.md#onvscroll) member functions will be passed a notification code, the position of the slider, and a pointer to the [CSliderCtrl](../mfc/reference/csliderctrl-class.md) object. Note that the pointer is of type `CScrollBar *` even though it points to a `CSliderCtrl` object. You may need to typecast this pointer if you need to manipulate the slider control. Rather than using the scroll bar notification codes, slider controls send a different set of notification codes. A slider control sends the TB_BOTTOM, TB_LINEDOWN, TB_LINEUP, and TB_TOP notification codes only when the user interacts with a slider control by using the keyboard. The TB_THUMBPOSITION and TB_THUMBTRACK notification messages are only sent when the user is using the mouse. The TB_ENDTRACK, TB_PAGEDOWN, and TB_PAGEUP notification codes are sent in both cases. diff --git a/docs/mfc/special-cwinapp-services.md b/docs/mfc/special-cwinapp-services.md index ee7285fee54..e0f956d3860 100644 --- a/docs/mfc/special-cwinapp-services.md +++ b/docs/mfc/special-cwinapp-services.md @@ -4,10 +4,12 @@ title: "Special CWinApp Services" ms.date: "11/04/2016" f1_keywords: ["LoadStdProfileSettings", "EnableShellOpen"] helpviewer_keywords: ["files [MFC], most recently used", "DragAcceptFiles method [MFC]", "MRU lists", "GDI+, initializing for MFC", "GDI+, suppressing background thread [MFC]", "CWinApp class [MFC], shell registration", "application objects [MFC], services", "CWinApp class [MFC], initializing GDI+", "MFC, shell registration", "CWinApp class [MFC], File Manager drag and drop", "LoadStdProfileSettings method [MFC]", "MFC, most-recently-used file list", "RegisterShellFileTypes method [MFC]", "drag and drop [MFC], files", "registering file types", "Shell, registering file types", "services, provided by CWinApp", "CWinApp class [MFC], recently used documents", "CWinApp class [MFC], services", "files [MFC], drag and drop", "EnableShellOpen method [MFC]", "registry [MFC], most recently used files", "MFC, file operations", "registration [MFC], shell"] -ms.assetid: 0480cd01-f629-4249-b221-93432d95b431 --- # Special CWinApp Services +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Besides running the message loop and giving you an opportunity to initialize the application and clean up after it, [CWinApp](../mfc/reference/cwinapp-class.md) provides several other services. ## Shell Registration diff --git a/docs/mfc/specifying-levels-of-functionality.md b/docs/mfc/specifying-levels-of-functionality.md index cfaa99c8a47..5c5b2617a16 100644 --- a/docs/mfc/specifying-levels-of-functionality.md +++ b/docs/mfc/specifying-levels-of-functionality.md @@ -3,11 +3,13 @@ description: "Learn more about: Specifying Levels of Functionality" title: "Specifying Levels of Functionality" ms.date: "11/06/2018" helpviewer_keywords: ["CObject class [MFC], adding functionality to derived classes", "runtime [MFC], class information", "serialization [MFC], Cobject", "dynamic creation support", "levels [MFC], functionality in CObject", "run-time class [MFC], information support", "levels [MFC]"] -ms.assetid: 562669ba-c858-4f66-b5f1-b3beeea4f486 ms.topic: how-to --- # Specifying Levels of Functionality +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes how to add the following levels of functionality to your [CObject](../mfc/reference/cobject-class.md)-derived class: - Run-time class information diff --git a/docs/mfc/spin-button-member-functions.md b/docs/mfc/spin-button-member-functions.md index 9c2b9529356..5346069e91c 100644 --- a/docs/mfc/spin-button-member-functions.md +++ b/docs/mfc/spin-button-member-functions.md @@ -3,10 +3,12 @@ description: "Learn more about: Spin Button Member Functions" title: "Spin Button Member Functions" ms.date: "11/04/2016" helpviewer_keywords: ["spin button control, methods", "CSpinButtonCtrl class [MFC], methods"] -ms.assetid: a08a26fd-b803-4cbe-a509-395fa357d057 --- # Spin Button Member Functions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + There are several member functions available for the spin control ([CSpinButtonCtrl](../mfc/reference/cspinbuttonctrl-class.md)). Use these functions to change the following attributes of the spin button. - **Acceleration** You can adjust the rate at which the position changes when the user holds down the arrow button. To work with acceleration, use the [SetAccel](../mfc/reference/cspinbuttonctrl-class.md#setaccel) and [GetAccel](../mfc/reference/cspinbuttonctrl-class.md#getaccel) member functions. diff --git a/docs/mfc/spin-button-styles.md b/docs/mfc/spin-button-styles.md index aaa73fe9d2f..4abc91b2123 100644 --- a/docs/mfc/spin-button-styles.md +++ b/docs/mfc/spin-button-styles.md @@ -3,10 +3,12 @@ description: "Learn more about: Spin Button Styles" title: "Spin Button Styles" ms.date: "09/09/2019" helpviewer_keywords: ["styles [MFC], CSpinButtonCtrl", "CSpinButtonCtrl class [MFC], styles", "styles [MFC], spin button control", "spin button control, styles"] -ms.assetid: fb4a7f6f-9182-47be-bccf-0728fdc5332f --- # Spin Button Styles +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Many of the settings for a spin button ([CSpinButtonCtrl](../mfc/reference/cspinbuttonctrl-class.md)) are controlled by styles. You can set the following styles using the [Class Wizard](reference/mfc-class-wizard.md). - **Orientation** Either Vertical or Horizontal. Controls the orientation of the arrow buttons. Associated with the UDS_HORZ style. diff --git a/docs/mfc/standard-commands.md b/docs/mfc/standard-commands.md index 116be5bb811..6c1c07c796f 100644 --- a/docs/mfc/standard-commands.md +++ b/docs/mfc/standard-commands.md @@ -3,10 +3,12 @@ description: "Learn more about: Standard Commands" title: "Standard Commands" ms.date: "11/04/2016" helpviewer_keywords: ["File menu", "identifiers [MFC], command IDs", "command IDs, standard commands", "OLE commands", "commands [MFC], standard", "standard command IDs", "Window menu commands", "standard commands", "View menu commands", "Edit menu standard commands", "Help [MFC], menus", "programmer-defined IDs [MFC]"] -ms.assetid: 88cf3ab4-79b3-4ac6-9365-8ac561036fbf --- # Standard commands +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The framework defines many standard command messages. The IDs for these commands typically take the form **`ID__`**, where `` is usually a menu name and `` is a menu item. For example, the command ID for the **New** command on the **File** menu is `ID_FILE_NEW`. Standard command IDs are shown in bold type in the documentation. Programmer-defined IDs are shown in a font that's different from the surrounding text. The following list shows some of the most important commands supported: diff --git a/docs/mfc/status-bar-implementation-in-mfc.md b/docs/mfc/status-bar-implementation-in-mfc.md index 6ddeb263c87..343121838b1 100644 --- a/docs/mfc/status-bar-implementation-in-mfc.md +++ b/docs/mfc/status-bar-implementation-in-mfc.md @@ -4,10 +4,12 @@ title: "Status Bar Implementation in MFC" ms.date: "11/19/2018" f1_keywords: ["COldStatusBar"] helpviewer_keywords: ["status bars [MFC], implementing in MFC", "CStatusBarCtrl class [MFC], and MFC status bars", "CStatusBar class [MFC], and CStatusBarCtrl class [MFC]", "CStatusBarCtrl class [MFC], and CStatusBar class [MFC]", "status bars [MFC], backward compatibility", "status bars [MFC], old with COldStatusBar class [MFC]", "COldStatusBar class [MFC]", "status bars [MFC], and CStatusBarCtrl class", "CStatusBar class [MFC], and MFC status bars", "status indicators", "status bars [MFC], Windows 95 implementation"] -ms.assetid: be5cd876-38e3-4d5c-b8cb-16d57a16a142 --- # Status Bar Implementation in MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A [CStatusBar](../mfc/reference/cstatusbar-class.md) object is a control bar with a row of text output panes. The output panes are commonly used as message lines and as status indicators. Examples include the menu help-message lines that briefly explain the selected menu command and the indicators that show the status of the SCROLL LOCK, NUM LOCK, and other keys. As of MFC version 4.0, status bars are implemented using class [CStatusBarCtrl](../mfc/reference/cstatusbarctrl-class.md), which encapsulates a status bar common control. For backward compatibility, MFC retains the older status bar implementation in class `COldStatusBar`. The documentation for earlier versions of MFC describes `COldStatusBar` under `CStatusBar`. diff --git a/docs/mfc/status-bars.md b/docs/mfc/status-bars.md index d780d9410ee..29ff0152e63 100644 --- a/docs/mfc/status-bars.md +++ b/docs/mfc/status-bars.md @@ -3,10 +3,12 @@ description: "Learn more about: Status Bars" title: "Status Bars" ms.date: "11/04/2016" helpviewer_keywords: ["status bars", "control bars [MFC], status bar"] -ms.assetid: fcbc5029-1aab-4e14-adf7-419038a4935e --- # Status Bars +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Status bars give your application a place to display messages and useful information to the user without interrupting the user's work. Typically displayed at the bottom of a window, status bars have "panes," which include "indicators" and a "message line." The indicators give the status of such things as SCROLL LOCK, whether macro recording is turned on, and so on. The message line on the status bar can display information about program status or about a toolbar button or menu item that the user is pointing to with the mouse. Create a status bar in your program by selecting the **Initial Status Bar** option in the MFC Application Wizard. diff --git a/docs/mfc/steps-in-a-typical-ftp-client-application-to-delete-a-file.md b/docs/mfc/steps-in-a-typical-ftp-client-application-to-delete-a-file.md index fe0603edff7..e6f3ca36d29 100644 --- a/docs/mfc/steps-in-a-typical-ftp-client-application-to-delete-a-file.md +++ b/docs/mfc/steps-in-a-typical-ftp-client-application-to-delete-a-file.md @@ -3,11 +3,13 @@ description: "Learn more about: Steps in a Typical FTP Client Application to Del title: "Steps in a Typical FTP Client Application to Delete a File" ms.date: "11/04/2016" helpviewer_keywords: ["Internet client applications [MFC], FTP delete", "WinInet classes [MFC], FTP", "FTP (File Transfer Protocol) [MFC], client applications", "Internet applications [MFC], FTP client applications"] -ms.assetid: 2c347a96-c0a4-4827-98fe-668406e552bc ms.topic: how-to --- # Steps in a Typical FTP Client Application to Delete a File +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following table shows the steps you might perform in a typical FTP client application that deletes a file. |Your goal|Actions you take|Effects| diff --git a/docs/mfc/steps-in-a-typical-ftp-client-application.md b/docs/mfc/steps-in-a-typical-ftp-client-application.md index c1d16114ffe..b1b865a3ea1 100644 --- a/docs/mfc/steps-in-a-typical-ftp-client-application.md +++ b/docs/mfc/steps-in-a-typical-ftp-client-application.md @@ -3,11 +3,13 @@ description: "Learn more about: Steps in a Typical FTP Client Application" title: "Steps in a Typical FTP Client Application" ms.date: "11/04/2016" helpviewer_keywords: ["Internet client applications [MFC], FTP table", "FTP (File Transfer Protocol)", "WinInet classes [MFC], FTP", "FTP (File Transfer Protocol) [MFC], client applications", "Internet applications [MFC], FTP client applications"] -ms.assetid: 70bed7b5-6040-40d1-bc77-702e63a698f2 ms.topic: how-to --- # Steps in a Typical FTP Client Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A typical FTP client application creates a [CInternetSession](../mfc/reference/cinternetsession-class.md) and a [CFtpConnection](../mfc/reference/cftpconnection-class.md) object. Note that these MFC WinInet classes do not actually control the proxy type settings; IIS does. The following table shows the steps you might perform in a typical FTP client application. diff --git a/docs/mfc/steps-in-a-typical-gopher-client-application.md b/docs/mfc/steps-in-a-typical-gopher-client-application.md index 4468557ab4d..8e6d6c44703 100644 --- a/docs/mfc/steps-in-a-typical-gopher-client-application.md +++ b/docs/mfc/steps-in-a-typical-gopher-client-application.md @@ -3,11 +3,13 @@ description: "Learn more about: Steps in a Typical Gopher Client Application" title: "Steps in a Typical Gopher Client Application" ms.date: "11/04/2016" helpviewer_keywords: ["WinInet classes [MFC], gopher", "Internet applications [MFC], gopher client applications", "Gopher client applications [MFC]", "Internet client applications [MFC], gopher table"] -ms.assetid: 3e4e1869-5da0-453d-8ba9-b648c894bb90 ms.topic: how-to --- # Steps in a Typical Gopher Client Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following table shows the steps you might perform in a typical gopher client application. |Your goal|Actions you take|Effects| diff --git a/docs/mfc/steps-in-a-typical-http-client-application.md b/docs/mfc/steps-in-a-typical-http-client-application.md index fa830ffcdb9..59dd59a7cb3 100644 --- a/docs/mfc/steps-in-a-typical-http-client-application.md +++ b/docs/mfc/steps-in-a-typical-http-client-application.md @@ -3,11 +3,13 @@ description: "Learn more about: Steps in a Typical HTTP Client Application" title: "Steps in a Typical HTTP Client Application" ms.date: "11/04/2016" helpviewer_keywords: ["HTTP client applications [MFC]", "client applications [MFC], HTTP", "Internet applications [MFC], HTTP client applications", "applications [MFC], HTTP client", "Internet client applications [MFC], HTTP table", "WinInet classes [MFC], HTTP"] -ms.assetid: f86552e8-8acd-4b23-bdc5-0c3a247ebd74 ms.topic: how-to --- # Steps in a Typical HTTP Client Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following table shows the steps you might perform in a typical HTTP client application: |Your goal|Actions you take|Effects| diff --git a/docs/mfc/steps-in-a-typical-internet-client-application.md b/docs/mfc/steps-in-a-typical-internet-client-application.md index 24f95bcbc51..4f1851ddc27 100644 --- a/docs/mfc/steps-in-a-typical-internet-client-application.md +++ b/docs/mfc/steps-in-a-typical-internet-client-application.md @@ -3,11 +3,13 @@ description: "Learn more about: Steps in a Typical Internet Client Application" title: "Steps in a Typical Internet Client Application" ms.date: "11/04/2016" helpviewer_keywords: ["Internet client applications [MFC], general table", "WinInet classes [MFC], programming", "Internet applications [MFC], client applications"] -ms.assetid: 7aba135c-7c15-4e2f-8c34-bbaf792c89a6 ms.topic: how-to --- # Steps in a Typical Internet Client Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The following table shows the steps you might perform in a typical Internet client application. |Your goal|Actions you take|Effects| diff --git a/docs/mfc/storing-and-loading-cobjects-via-an-archive.md b/docs/mfc/storing-and-loading-cobjects-via-an-archive.md index f08ce386eab..145b8d1f840 100644 --- a/docs/mfc/storing-and-loading-cobjects-via-an-archive.md +++ b/docs/mfc/storing-and-loading-cobjects-via-an-archive.md @@ -3,11 +3,13 @@ description: "Learn more about: Storing and Loading CObjects via an Archive" title: "Storing and Loading CObjects via an Archive" ms.date: "11/04/2016" helpviewer_keywords: ["CObjects [MFC], loading through archives", "CArchive class [MFC], storing and loading objects", "Serialize method, vs. CArchive operators", "CObject class [MFC], CArchive objects", "CObjects [MFC]"] -ms.assetid: a829b6dd-bc31-47e0-8108-fbb946722db9 ms.topic: concept-article --- # Storing and Loading CObjects via an Archive +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Storing and loading `CObject`s via an archive requires extra consideration. In certain cases, you should call the `Serialize` function of the object, where the `CArchive` object is a parameter of the `Serialize` call, as opposed to using the **<\<** or **>>** operator of the `CArchive`. The important fact to keep in mind is that the `CArchive` **>>** operator constructs the `CObject` in memory based on `CRuntimeClass` information previously written to the file by the storing archive. Therefore, whether you use the `CArchive` **<\<** and **>>** operators, versus calling `Serialize`, depends on whether you *need* the loading archive to dynamically reconstruct the object based on previously stored `CRuntimeClass` information. Use the `Serialize` function in the following cases: diff --git a/docs/mfc/stream-operations-in-rich-edit-controls.md b/docs/mfc/stream-operations-in-rich-edit-controls.md index 81ae2c76cec..04f1e5d277c 100644 --- a/docs/mfc/stream-operations-in-rich-edit-controls.md +++ b/docs/mfc/stream-operations-in-rich-edit-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Stream Operations in Rich Edit Controls" title: "Stream Operations in Rich Edit Controls" ms.date: "11/04/2016" helpviewer_keywords: ["CRichEditCtrl class [MFC], stream operations", "CRichEditCtrl class [MFC], stream storage", "rich edit controls [MFC], stream operations", "storage, stream in CRichEditCtrl", "stream operations in CRichEditCtrl", "stream storage and CRichEditCtrl"] -ms.assetid: 110b4684-1e76-4ca6-9ef0-5bc8b2d93c78 --- # Stream Operations in Rich Edit Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can use streams to transfer data into or out of a rich edit control ([CRichEditCtrl](../mfc/reference/cricheditctrl-class.md)). A stream is defined by an [EDITSTREAM](/windows/win32/api/richedit/ns-richedit-editstream) structure, which specifies a buffer and an application-defined callback function. To read data into a rich edit control (that is, stream the data in), use the [StreamIn](../mfc/reference/cricheditctrl-class.md#streamin) member function. The control repeatedly calls the application-defined callback function, which transfers a portion of the data into the buffer each time. diff --git a/docs/mfc/styles-for-the-progress-control.md b/docs/mfc/styles-for-the-progress-control.md index 2fe586be746..9a43e2cb16d 100644 --- a/docs/mfc/styles-for-the-progress-control.md +++ b/docs/mfc/styles-for-the-progress-control.md @@ -3,10 +3,12 @@ description: "Learn more about: Styles for the Progress Control" title: "Styles for the Progress Control" ms.date: "11/19/2018" helpviewer_keywords: ["PBS_SMOOTH style", "progress controls [MFC], styles", "PBS_VERTICAL style", "CProgressCtrl class [MFC], styles"] -ms.assetid: 39eb8081-bc20-4552-91b9-e7cdd1b7d8ae --- # Styles for the Progress Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When you initially create the progress control ([CProgressCtrl::Create](../mfc/reference/cprogressctrl-class.md#create)), use the *dwStyle* parameter to specify the desired window styles for your progress control. The following list details the applicable window styles. The control ignores any window style other than the ones listed here. You should always create the control as a child window, usually of a dialog box parent. |Window style|Effect| diff --git a/docs/mfc/support-for-activation-contexts-in-the-mfc-module-state.md b/docs/mfc/support-for-activation-contexts-in-the-mfc-module-state.md index 38bebdec767..b4a07738a52 100644 --- a/docs/mfc/support-for-activation-contexts-in-the-mfc-module-state.md +++ b/docs/mfc/support-for-activation-contexts-in-the-mfc-module-state.md @@ -3,10 +3,12 @@ description: "Learn more about: Support for Activation Contexts in the MFC Modul title: "Support for Activation Contexts in the MFC Module State" ms.date: "11/04/2016" helpviewer_keywords: ["activation contexts [MFC]", "activation contexts [MFC], MFC support"] -ms.assetid: 1e49eea9-3620-46dd-bc5f-d664749567c7 --- # Support for Activation Contexts in the MFC Module State +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC creates an activation context using a manifest resource provided by the user module. For more information on how activation contexts are created, see the following topics: - [Activation Contexts](/windows/win32/SbsCs/activation-contexts) diff --git a/docs/mfc/tab-controls-and-property-sheets.md b/docs/mfc/tab-controls-and-property-sheets.md index 594015025ce..adcb8c11d50 100644 --- a/docs/mfc/tab-controls-and-property-sheets.md +++ b/docs/mfc/tab-controls-and-property-sheets.md @@ -3,10 +3,12 @@ description: "Learn more about: Tab Controls and Property Sheets" title: "Tab Controls and Property Sheets" ms.date: "11/04/2016" helpviewer_keywords: ["property sheets, tab controls", "tab controls [MFC], and property sheets", "CTabCtrl class [MFC], and property sheets"] -ms.assetid: f3b87bea-9ad9-41e6-a7ff-a9285308267e --- # Tab Controls and Property Sheets +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Property sheets are multiple-page dialogs or "tab dialogs" that can display up to 24 dialog template resources to the user. For examples of property sheets, see the Windows Display Properties dialog box or the following MFC sample application: [CMNCTRL1: Demonstrates Common Control Classes, Part 1](../overview/visual-cpp-samples.md) diff --git a/docs/mfc/tabs-and-tab-control-attributes.md b/docs/mfc/tabs-and-tab-control-attributes.md index 61dcc0d87b4..02ea18ccdc2 100644 --- a/docs/mfc/tabs-and-tab-control-attributes.md +++ b/docs/mfc/tabs-and-tab-control-attributes.md @@ -3,10 +3,12 @@ description: "Learn more about: Tabs and Tab Control Attributes" title: "Tabs and Tab Control Attributes" ms.date: "11/04/2016" helpviewer_keywords: ["attributes [MFC], reference topics", "tab controls [MFC], attributes", "tabs [MFC]", "tabs [MFC], attributes", "CTabCtrl class [MFC], tab control attributes"] -ms.assetid: ecf190cb-f323-4751-bfdb-766dbe6bb553 --- # Tabs and Tab Control Attributes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You have considerable control over the appearance and behavior of tabs that make up a tab control ([CTabCtrl](../mfc/reference/ctabctrl-class.md)). Each tab can have a label, an icon, an item state, and an application-defined 32-bit value associated with it. For each tab, you can display the icon, the label, or both. In addition, each tab item can have three possible states: pressed, unpressed, or highlighted. This state can only be set by modifying an existing tab item. To modify an existing tab item, retrieve it with a call to [GetItem](../mfc/reference/ctabctrl-class.md#getitem), modify the `TCITEM` structure (specifically the *dwState* and *dwStateMask* data members), and then return the modified `TCITEM` structure with a call to [SetItem](../mfc/reference/ctabctrl-class.md#setitem). If you need to clear the item states of all the tab items in a `CTabCtrl` object, make a call to [DeselectAll](../mfc/reference/ctabctrl-class.md#deselectall). This function resets the state of all tab items or all items except the one currently selected. diff --git a/docs/mfc/technical-notes-by-category.md b/docs/mfc/technical-notes-by-category.md index 288094ac3af..7128376cfaa 100644 --- a/docs/mfc/technical-notes-by-category.md +++ b/docs/mfc/technical-notes-by-category.md @@ -2,10 +2,12 @@ description: "Learn more about: Technical Notes by Category" title: "Technical Notes by Category" ms.date: "11/04/2016" -ms.assetid: b9f1c953-233d-4d64-9e8e-ca69b79460b8 --- # Technical Notes by Category +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Technical notes are divided into the following categories. For a numerical listing of the technical notes, see [Technical Notes by Number](../mfc/technical-notes-by-number.md). ### MFC and Windows diff --git a/docs/mfc/technical-notes-by-number.md b/docs/mfc/technical-notes-by-number.md index d07d4b3b3bd..ce0f9032bba 100644 --- a/docs/mfc/technical-notes-by-number.md +++ b/docs/mfc/technical-notes-by-number.md @@ -3,10 +3,12 @@ description: "Learn more about: Technical Notes by Number" title: "Technical Notes by Number" ms.date: "11/04/2016" f1_keywords: ["vc.tables.mfc.technotes"] -ms.assetid: aaa449be-9167-4510-a490-af872c4f60a2 --- # Technical Notes by Number +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The technical notes below are listed numerically, with the most recently written technical note first. For a listing by category, see [Technical Notes by Category](../mfc/technical-notes-by-category.md). |Number|Title| diff --git a/docs/mfc/template-based-classes.md b/docs/mfc/template-based-classes.md index b60a54b82a6..c15c730b488 100644 --- a/docs/mfc/template-based-classes.md +++ b/docs/mfc/template-based-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: Template-Based Classes" title: "Template-Based Classes" ms.date: "11/04/2016" helpviewer_keywords: ["type-safe collections", "CTypedPtrList class [MFC], template-based classes", "arrays [MFC], classes", "arrays [MFC], pointers", "typed pointers, collections of", "arrays [MFC], template-based", "CArray class [MFC], template-based classes", "simple template-based collections", "simple array collection classes [MFC]", "typed pointers", "collections, typed-pointer", "CList class [MFC], template-based classes", "collection classes [MFC], template-based", "CTypedPtrMap class [MFC], template-based classes", "pointers, collections of typed", "CTypedPtrArray class [MFC], template-based classes", "MFC collection classes [MFC], template-based", "template-based collection classes [MFC]", "simple list collection classes [MFC]"] -ms.assetid: c69fc95b-c8f6-4a99-abed-517c9898ef0c --- # Template-Based Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the type-safe template-based collection classes in MFC version 3.0 and later. Using these templates to create type-safe collections is more convenient and helps provide type safety more effectively than using the collection classes not based on templates. MFC predefines two categories of template-based collections: diff --git a/docs/mfc/template-classes-for-arrays-lists-and-maps.md b/docs/mfc/template-classes-for-arrays-lists-and-maps.md index adf320b1c3e..f76f823414c 100644 --- a/docs/mfc/template-classes-for-arrays-lists-and-maps.md +++ b/docs/mfc/template-classes-for-arrays-lists-and-maps.md @@ -4,10 +4,12 @@ title: "Template Classes for Arrays, Lists, and Maps" ms.date: "11/04/2016" f1_keywords: ["vc.classes.template"] helpviewer_keywords: ["arrays [MFC], classes", "template classes [MFC], for arrays/lists and maps", "list classes [MFC]", "map classes [MFC]", "template classes [MFC]"] -ms.assetid: a8331c4b-068a-48f8-a629-b8449601e121 --- # Template Classes for Arrays, Lists, and Maps +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + These collection classes are templates whose parameters determine the types of the objects stored in the aggregates. The `CArray`, `CMap`, and `CList` classes use global helper functions that must usually be customized. For more information about these helper functions, see [Collection Class Helpers](../mfc/reference/collection-class-helpers.md). The typed pointer classes are wrappers for other classes in the class library. By using these wrappers, you enlist the compiler's type-checking to help you avoid errors. For more information on using these classes, see [Collections](../mfc/collections.md). These classes provide templates you can use to create arrays, lists, and maps using any type you like. diff --git a/docs/mfc/testing-internet-applications.md b/docs/mfc/testing-internet-applications.md index 40e53d914f6..cee0b483a39 100644 --- a/docs/mfc/testing-internet-applications.md +++ b/docs/mfc/testing-internet-applications.md @@ -3,11 +3,13 @@ description: "Learn more about: Testing Internet Applications" title: "Testing Internet Applications" ms.date: "11/04/2016" helpviewer_keywords: ["Web applications [MFC], testing", "debugging Web applications [MFC], testing applications", "testing [MFC], Internet applications", "debugging [MFC], Web applications", "Internet debugging and testing"] -ms.assetid: ac4c74e3-d4ad-4e19-8f6c-e270de067f01 ms.topic: concept-article --- # Testing Internet Applications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + There are some unique testing challenges on the Internet, especially for applications running on a Web server. Your initial testing will probably be done using a single-user client connecting to a test server. This will be useful for debugging your code. You will also want to test under real conditions: with multiple clients connected over high-speed connections as well as low-speed serial lines, including modem connections. It can be difficult to simulate real conditions, but it is certainly worth spending time designing possible scenarios and executing them. If possible, you will also want to use tools to do capacity and stress testing. Certain classes of bugs, such as timing bugs, are difficult to find and to reproduce. diff --git a/docs/mfc/testing-properties-and-events-with-test-container.md b/docs/mfc/testing-properties-and-events-with-test-container.md index d7258a77d5c..e6d18116671 100644 --- a/docs/mfc/testing-properties-and-events-with-test-container.md +++ b/docs/mfc/testing-properties-and-events-with-test-container.md @@ -7,6 +7,9 @@ ms.topic: how-to --- # Testing Properties and Events with Test Container +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Test Container application, shipped in Visual C++, is an ActiveX control container for testing and debugging ActiveX controls. Test Container allows the control developer to test the control's functionality by changing its properties, invoking its methods, and firing its events. Test Container can display logs of data-binding notifications and also provides facilities for testing an ActiveX control's persistence functionality: you can save properties to a stream or to substorage, reload them, and examine the stored stream data. This section describes how to use the basic features of Test Container. For additional information, select the **Help** menu while running Test Container. ### To access the ActiveX Control Test Container diff --git a/docs/mfc/the-ccmdui-class.md b/docs/mfc/the-ccmdui-class.md index 7b932b51d26..4769f532e4c 100644 --- a/docs/mfc/the-ccmdui-class.md +++ b/docs/mfc/the-ccmdui-class.md @@ -3,10 +3,12 @@ description: "Learn more about: The CCmdUI Class" title: "The CCmdUI Class" ms.date: "11/04/2016" helpviewer_keywords: ["updating user interface objects [MFC]", "user interface objects [MFC], updating", "CCmdUI class [MFC], menu updating", "update handlers [MFC]", "toolbars [MFC], updating"] -ms.assetid: 2f2bae62-8c29-45a4-bbce-490eb01907d5 --- # The CCmdUI Class +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When it routes an update command to its handler, the framework passes the handler a pointer to a `CCmdUI` object (or to an object of a `CCmdUI`-derived class). This object represents the menu item or toolbar button or other user-interface object that generated the command. The update handler calls member functions of the `CCmdUI` structure through the pointer to update the user-interface object. For example, here is an update handler for the Clear All menu item: [!code-cpp[NVC_MFCDocView#3](../mfc/codesnippet/cpp/the-ccmdui-class_1.cpp)] diff --git a/docs/mfc/thread-specific-hot-keys.md b/docs/mfc/thread-specific-hot-keys.md index cf9bd0c9221..bb3eddc5a5c 100644 --- a/docs/mfc/thread-specific-hot-keys.md +++ b/docs/mfc/thread-specific-hot-keys.md @@ -3,10 +3,12 @@ description: "Learn more about: Thread-Specific Hot Keys" title: "Thread-Specific Hot Keys" ms.date: "11/04/2016" helpviewer_keywords: ["CHotKeyCtrl class [MFC], thread-specific hot keys", "keyboard shortcuts [MFC], hot keys", "threading [MFC], hot keys in CHotKeyCtrl", "access keys [MFC], hot keys"] -ms.assetid: b6021274-1498-483f-bcbf-ba5723547cc8 --- # Thread-Specific Hot Keys +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An application sets a thread-specific hot key ([CHotKeyCtrl](../mfc/reference/chotkeyctrl-class.md)) by using the Windows `RegisterHotKey` function. When the user presses a thread-specific hot key, Windows posts a [WM_HOTKEY](/windows/win32/inputdev/wm-hotkey) message to the beginning of a particular thread's message queue. The WM_HOTKEY message contains the virtual key code, shift state, and user-defined ID of the specific hot key that was pressed. For a list of standard virtual key codes, see Winuser.h. For more information on this method, see [RegisterHotKey](/windows/win32/api/winuser/nf-winuser-registerhotkey). Note that the shift state flags used in the call to `RegisterHotKey` are not the same as those returned by the [GetHotKey](../mfc/reference/chotkeyctrl-class.md#gethotkey) member function; you'll have to translate these flags before calling `RegisterHotKey`. diff --git a/docs/mfc/tn001-window-class-registration.md b/docs/mfc/tn001-window-class-registration.md index 9a528229abf..df44ee16549 100644 --- a/docs/mfc/tn001-window-class-registration.md +++ b/docs/mfc/tn001-window-class-registration.md @@ -4,10 +4,12 @@ title: "TN001: Window Class Registration" ms.date: "11/04/2016" f1_keywords: ["vc.registration"] helpviewer_keywords: ["TN001", "WNDCLASS [MFC]", "AfxRegisterClass function"] -ms.assetid: 1abf678e-f220-4606-85e0-03df32f64c54 --- # TN001: Window Class Registration +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note describes the MFC routines that register the special [WNDCLASS](/windows/win32/api/winuser/ns-winuser-wndclassw)es needed by Microsoft Windows. Specific `WNDCLASS` attributes used by MFC and Windows are discussed. ## The Problem diff --git a/docs/mfc/tn002-persistent-object-data-format.md b/docs/mfc/tn002-persistent-object-data-format.md index 46c468bb74b..710322980dc 100644 --- a/docs/mfc/tn002-persistent-object-data-format.md +++ b/docs/mfc/tn002-persistent-object-data-format.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["VERSIONABLE_SCHEMA macro [MFC]", "persistent object data" --- # TN002: Persistent Object Data Format +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note describes the MFC routines that support persistent C++ objects and the format of the object data when it is stored in a file. This applies only to classes with the [DECLARE_SERIAL](../mfc/reference/run-time-object-model-services.md#declare_serial) and [IMPLEMENT_SERIAL](../mfc/reference/run-time-object-model-services.md#implement_serial) macros. ## The Problem diff --git a/docs/mfc/tn003-mapping-of-windows-handles-to-objects.md b/docs/mfc/tn003-mapping-of-windows-handles-to-objects.md index aae3e6e82cb..b7b4f207886 100644 --- a/docs/mfc/tn003-mapping-of-windows-handles-to-objects.md +++ b/docs/mfc/tn003-mapping-of-windows-handles-to-objects.md @@ -4,10 +4,12 @@ title: "TN003: Mapping of Windows Handles to Objects" ms.date: "11/04/2016" f1_keywords: ["vc.mapping"] helpviewer_keywords: ["TN003", "handle maps", "Windows handles to objects [MFC]", "mappings [MFC], Windows handles to objects"] -ms.assetid: fbea9f38-992c-4091-8dbc-f29e288617d6 --- # TN003: Mapping of Windows Handles to Objects +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note describes the MFC routines that support mapping Windows object handles to C++ objects. ## The Problem diff --git a/docs/mfc/tn006-message-maps.md b/docs/mfc/tn006-message-maps.md index 4c24ca0197d..41ac839b2e1 100644 --- a/docs/mfc/tn006-message-maps.md +++ b/docs/mfc/tn006-message-maps.md @@ -4,10 +4,12 @@ title: "TN006: Message Maps" ms.date: "06/25/2018" f1_keywords: ["vc.messages.maps"] helpviewer_keywords: ["ON_UPDATE_COMMAND_UI macro [MFC]", "ON_NOTIFY_RANGE macro [MFC]", "ON_COMMAND macro [MFC]", "ON_CONTROL_RANGE macro [MFC]", "ON_REGISTERED_MESSAGE macro [MFC]", "ON_NOTIFY message [MFC]", "ON_COMMAND_RANGE_EX macro [MFC]", "ON_MESSAGE macro [MFC]", "Windows messages [MFC], message maps", "ON_COMMAND_RANGE macro [MFC]", "TN006", "ON_CONTROL macro [MFC]", "ON_COMMAND_EX macro [MFC]", "message maps [MFC], Windows messaging"] -ms.assetid: af4b6794-4b40-4f1e-ad41-603c3b7409bb --- # TN006: Message Maps +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note describes the MFC message map facility. ## The Problem diff --git a/docs/mfc/tn011-using-mfc-as-part-of-a-dll.md b/docs/mfc/tn011-using-mfc-as-part-of-a-dll.md index d46e12b6e97..bc0600b0c0b 100644 --- a/docs/mfc/tn011-using-mfc-as-part-of-a-dll.md +++ b/docs/mfc/tn011-using-mfc-as-part-of-a-dll.md @@ -3,10 +3,12 @@ description: "Learn more about: TN011: Using MFC as Part of a DLL" title: "TN011: Using MFC as Part of a DLL" ms.date: "11/04/2016" helpviewer_keywords: ["_USRDLL symbol", "USRDLLs, compiler switches", "TN011", "DLLs [MFC], linking", "MFC DLLs [MFC], linking regular MFC DLLs to MFC"] -ms.assetid: 76753e9c-59dc-40f6-b6a7-f6bb9a7c4190 --- # TN011: Using MFC as Part of a DLL +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note describes regular MFC DLLs, which allow you to use the MFC library as part of a Windows dynamic-link library (DLL). It assumes that you are familiar with Windows DLLs and how to build them. For information about MFC extension DLLs, with which you can create extensions to the MFC library, see [DLL Version of MFC](../mfc/tn033-dll-version-of-mfc.md). ## DLL Interfaces diff --git a/docs/mfc/tn014-custom-controls.md b/docs/mfc/tn014-custom-controls.md index d6eb5e03e11..f1562fa20f3 100644 --- a/docs/mfc/tn014-custom-controls.md +++ b/docs/mfc/tn014-custom-controls.md @@ -7,6 +7,9 @@ helpviewer_keywords: ["TN014", "custom controls [MFC]"] --- # TN014: Custom Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note describes the MFC Support for custom and self-drawing controls. It also describes dynamic subclassing, and describes the relationship between [CWnd](../mfc/reference/cwnd-class.md) objects and `HWND`s. The MFC sample application CTRLTEST illustrates how to use many custom controls. See the source code for the MFC General sample [CTRLTEST](../overview/visual-cpp-samples.md) and online help. diff --git a/docs/mfc/tn016-using-cpp-multiple-inheritance-with-mfc.md b/docs/mfc/tn016-using-cpp-multiple-inheritance-with-mfc.md index cf44c6bf0ea..fec8f1aa64e 100644 --- a/docs/mfc/tn016-using-cpp-multiple-inheritance-with-mfc.md +++ b/docs/mfc/tn016-using-cpp-multiple-inheritance-with-mfc.md @@ -4,10 +4,12 @@ title: "TN016: Using C++ Multiple Inheritance with MFC" ms.date: "06/28/2018" f1_keywords: ["vc.inheritance"] helpviewer_keywords: ["TN016", "MI (Multiple Inheritance)", "multiple inheritance, MFC support for"] -ms.assetid: 4ee27ae1-1410-43a5-b111-b6af9b84535d --- # TN016: Using C++ Multiple Inheritance with MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note describes how to use multiple inheritance (MI) with the Microsoft Foundation Classes. The use of MI is not required with MFC. MI is not used in any MFC classes and is not required to write a class library. The following subtopics describe how MI affects the use of common MFC idioms as well as covering some of the restrictions of MI. Some of these restrictions are general C++ restrictions. Others are imposed by the MFC architecture. diff --git a/docs/mfc/tn017-destroying-window-objects.md b/docs/mfc/tn017-destroying-window-objects.md index f50a0b32b71..960374a2479 100644 --- a/docs/mfc/tn017-destroying-window-objects.md +++ b/docs/mfc/tn017-destroying-window-objects.md @@ -4,10 +4,12 @@ title: "TN017: Destroying window objects" ms.date: 06/03/2022 f1_keywords: ["vc.objects"] helpviewer_keywords: ["destroying windows", "TN017", "PostNcDestroy method [MFC]"] -ms.assetid: 5bf208a5-5683-439b-92a1-547c5ded26cd --- # TN017: Destroying window objects +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note describes the use of the [`CWnd::PostNcDestroy`](../mfc/reference/cwnd-class.md#postncdestroy) method. Use this method if you want to do customized allocation of `CWnd`-derived objects. This note also explains why you should use [`CWnd::DestroyWindow`](../mfc/reference/cwnd-class.md#destroywindow) to destroy a C++ Windows object instead of the **`delete`** operator. If you follow the guidelines in this article, you'll have few cleanup problems. These problems can result from issues such as forgetting to delete/free C++ memory, forgetting to free system resources like `HWND`s, or freeing objects too many times. diff --git a/docs/mfc/tn020-id-naming-and-numbering-conventions.md b/docs/mfc/tn020-id-naming-and-numbering-conventions.md index 96b6e6d29b3..39b718d2625 100644 --- a/docs/mfc/tn020-id-naming-and-numbering-conventions.md +++ b/docs/mfc/tn020-id-naming-and-numbering-conventions.md @@ -4,10 +4,12 @@ title: "TN020: ID Naming and Numbering Conventions" ms.date: "11/04/2016" f1_keywords: ["vc.id"] helpviewer_keywords: ["TN020", "resource identifiers, naming and numbering", "resource identifiers"] -ms.assetid: aecbd2cf-68b3-47f6-ae21-b1f507917245 --- # TN020: ID Naming and Numbering Conventions +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note describes the ID naming and numbering conventions that MFC 2.0 uses for resources, commands, strings, controls, and child windows. The MFC ID naming and numbering conventions are intended to meet the following requirements: diff --git a/docs/mfc/tn021-command-and-message-routing.md b/docs/mfc/tn021-command-and-message-routing.md index 8e2210c3546..1ad354a62dd 100644 --- a/docs/mfc/tn021-command-and-message-routing.md +++ b/docs/mfc/tn021-command-and-message-routing.md @@ -4,10 +4,12 @@ title: "TN021: Command and Message Routing" ms.date: "06/28/2018" f1_keywords: ["vc.routing"] helpviewer_keywords: ["TN021", "command routing [MFC], technical note TN021", "Windows messages [MFC], routing"] -ms.assetid: b5952c8b-123e-406c-a36d-a6ac7c6df307 --- # TN021: Command and Message Routing +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn022-standard-commands-implementation.md b/docs/mfc/tn022-standard-commands-implementation.md index b58bce0c1b6..a12033ebd64 100644 --- a/docs/mfc/tn022-standard-commands-implementation.md +++ b/docs/mfc/tn022-standard-commands-implementation.md @@ -4,10 +4,12 @@ title: "TN022: Standard Commands Implementation" ms.date: "11/04/2016" f1_keywords: ["vc.commands"] helpviewer_keywords: ["ID_PREV_PANE command [MFC]", "ID_APP_EXIT command [MFC]", "ID_NEXT_PANE command [MFC]", "ID_INDICATOR_REC command [MFC]", "ID_WINDOW_SPLIT command [MFC]", "ID_FILE_PRINT_PREVIEW command [MFC]", "ID_WINDOW_CASCADE command [MFC]", "ID_FILE_CLOSE command [MFC]", "ID_FILE_SAVE_COPY_AS command [MFC]", "ID_WINDOW_ARRANGE command [MFC]", "ID_EDIT_FIND command [MFC]", "ID_FILE_OPEN command [MFC]", "ID_FILE_PAGE_SETUP command [MFC]", "ID_OLE_VERB_FIRST command [MFC]", "ID_EDIT_UNDO command [MFC]", "ID_EDIT_CLEAR command [MFC]", "ID_INDICATOR_CAPS command [MFC]", "ID_HELP_INDEX command [MFC]", "commands [MFC], standard", "ID_FILE_PRINT_SETUP command [MFC]", "ID_DEFAULT_HELP command [MFC]", "ID_INDICATOR_SCRL command [MFC]", "ID_FILE_PRINT command [MFC]", "ID_INDICATOR_OVR command [MFC]", "ID_INDICATOR_KANA command [MFC]", "ID_EDIT_COPY command [MFC]", "ID_EDIT_REDO command [MFC]", "ID_EDIT_PASTE command [MFC]", "ID_OLE_INSERT_NEW command [MFC]", "ID_OLE_EDIT_LINKS command [MFC]", "ID_EDIT_PASTE_SPECIAL command [MFC]", "ID_INDICATOR_EXT command [MFC]", "ID_HELP_USING command [MFC]", "standard commands", "ID_VIEW_STATUS_BAR command [MFC]", "ID_FILE_SAVE_AS command [MFC]", "ID_EDIT_CLEAR_ALL command [MFC]", "ID_WINDOW_NEW command [MFC]", "ID_CONTEXT_HELP command [MFC]", "ID_EDIT_REPLACE command [MFC]", "ID_WINDOW_TILE_HORZ command [MFC]", "ID_APP_ABOUT command [MFC]", "TN022", "ID_VIEW_TOOLBAR command [MFC]", "ID_HELP command [MFC]", "ID_WINDOW_TILE_VERT command [MFC]", "ID_EDIT_CUT command [MFC]", "ID_FILE_UPDATE command [MFC]", "ID_EDIT_REPEAT command [MFC]", "ID_FILE_SAVE command [MFC]", "ID_EDIT_PASTE_LINK command [MFC]", "ID_EDIT_SELECT_ALL command [MFC]", "ID_FILE_NEW command [MFC]", "ID_INDICATOR_NUM command"] -ms.assetid: a7883b46-23f7-4870-ac3a-804aed9258b5 --- # TN022: Standard Commands Implementation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn023-standard-mfc-resources.md b/docs/mfc/tn023-standard-mfc-resources.md index f0dfaccf661..913e6b22d01 100644 --- a/docs/mfc/tn023-standard-mfc-resources.md +++ b/docs/mfc/tn023-standard-mfc-resources.md @@ -3,10 +3,12 @@ description: "Learn more about: TN023: Standard MFC Resources" title: "TN023: Standard MFC Resources" ms.date: "11/04/2016" helpviewer_keywords: ["resources [MFC]", "TN023", "standard resources"] -ms.assetid: 60af8415-c576-4c2f-a711-ca5da0b9a1f2 --- # TN023: Standard MFC Resources +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note describes the standard resources provided with and needed by the MFC library. ## Standard Resources diff --git a/docs/mfc/tn024-mfc-defined-messages-and-resources.md b/docs/mfc/tn024-mfc-defined-messages-and-resources.md index 4c2ed67fd50..6a18d57ef98 100644 --- a/docs/mfc/tn024-mfc-defined-messages-and-resources.md +++ b/docs/mfc/tn024-mfc-defined-messages-and-resources.md @@ -3,10 +3,12 @@ description: "Learn more about: TN024: MFC-Defined Messages and Resources" title: "TN024: MFC-Defined Messages and Resources" ms.date: "11/04/2016" helpviewer_keywords: ["resources [MFC]", "Windows messages [MFC], MFC-defined", "messages [MFC], MFC", "TN024"] -ms.assetid: c65353ce-8096-454b-ad22-1a7a1dd9a788 --- # TN024: MFC-Defined Messages and Resources +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn025-document-view-and-frame-creation.md b/docs/mfc/tn025-document-view-and-frame-creation.md index a914375e71e..425c5552a97 100644 --- a/docs/mfc/tn025-document-view-and-frame-creation.md +++ b/docs/mfc/tn025-document-view-and-frame-creation.md @@ -4,10 +4,12 @@ title: "TN025: Document, View, and Frame Creation" ms.date: "11/04/2016" f1_keywords: ["vc.creation"] helpviewer_keywords: ["documents [MFC], view and frame creation", "TN025"] -ms.assetid: 09254d72-6e1d-43db-80e9-693887dbeda2 --- # TN025: Document, View, and Frame Creation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn026-ddx-and-ddv-routines.md b/docs/mfc/tn026-ddx-and-ddv-routines.md index 8cfde655e61..0d6e4eb4176 100644 --- a/docs/mfc/tn026-ddx-and-ddv-routines.md +++ b/docs/mfc/tn026-ddx-and-ddv-routines.md @@ -4,10 +4,12 @@ title: "TN026: DDX and DDV Routines" ms.date: "06/28/2018" f1_keywords: ["DDX", "DDV"] helpviewer_keywords: ["DDX (dialog data exchange), procedures", "TN026", "DDV (dialog data validation), procedures"] -ms.assetid: c2eba87a-4b47-4083-b28b-e2fa77dfb4c4 --- # TN026: DDX and DDV Routines +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn028-context-sensitive-help-support.md b/docs/mfc/tn028-context-sensitive-help-support.md index 7b6b5753c5f..b6ae1421563 100644 --- a/docs/mfc/tn028-context-sensitive-help-support.md +++ b/docs/mfc/tn028-context-sensitive-help-support.md @@ -4,10 +4,12 @@ title: "TN028: Context-Sensitive Help Support" ms.date: "11/04/2016" f1_keywords: ["vc.help"] helpviewer_keywords: ["context-sensitive Help [MFC], MFC applications", "TN028", "resource identifiers, context-sensitive Help"] -ms.assetid: 884f1c55-fa27-4d4c-984f-30907d477484 --- # TN028: Context-Sensitive Help Support +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note describes the rules for assigning Help contexts IDs and other help issues in MFC. Context-sensitive help support requires the help compiler that is available in Visual Studio. > [!NOTE] diff --git a/docs/mfc/tn029-splitter-windows.md b/docs/mfc/tn029-splitter-windows.md index 5e0142a3312..4a8d2d983dd 100644 --- a/docs/mfc/tn029-splitter-windows.md +++ b/docs/mfc/tn029-splitter-windows.md @@ -4,10 +4,12 @@ title: "TN029: Splitter Windows" ms.date: "11/04/2016" f1_keywords: ["vc.windows.splitter"] helpviewer_keywords: ["TN029", "splitter windows [MFC], about splitter windows"] -ms.assetid: 2c57ce99-2a3c-4eff-9cea-baccb13af075 --- # TN029: Splitter Windows +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note describes the MFC [CSplitterWnd Class](../mfc/reference/csplitterwnd-class.md), which provides window splits and manages the resizing of other pane windows. ## Splitter Styles diff --git a/docs/mfc/tn030-customizing-printing-and-print-preview.md b/docs/mfc/tn030-customizing-printing-and-print-preview.md index 851f9d6ad6d..859df12533e 100644 --- a/docs/mfc/tn030-customizing-printing-and-print-preview.md +++ b/docs/mfc/tn030-customizing-printing-and-print-preview.md @@ -4,10 +4,12 @@ title: "TN030: Customizing Printing and Print Preview" ms.date: "06/28/2018" f1_keywords: ["vc.print"] helpviewer_keywords: ["TN030", "customizing printing and print preview", "printing [MFC], views", "printing views [MFC]", "print preview [MFC], customizing"] -ms.assetid: 32744697-c91c-41b6-9a12-b8ec01e0d438 --- # TN030: Customizing Printing and Print Preview +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn031-control-bars.md b/docs/mfc/tn031-control-bars.md index cdd945cff4a..f186f5a4dc3 100644 --- a/docs/mfc/tn031-control-bars.md +++ b/docs/mfc/tn031-control-bars.md @@ -4,10 +4,12 @@ title: "TN031: Control Bars" ms.date: "11/04/2016" f1_keywords: ["vc.controls.bars"] helpviewer_keywords: ["control bars [MFC], styles", "CStatusBar class [MFC], Tech Note 31 usage", "CControlBar class [MFC], Tech Note 31 usage", "CControlBar class [MFC], deriving from", "control bars [MFC], classes [MFC]", "CDialogBar class [MFC], Tech Note 31 usage", "CToolBar class [MFC], Tech Note 31 usage", "TN031", "styles [MFC], control bars"] -ms.assetid: 8cb895c0-40ea-40ef-90ee-1dd29f34cfd1 --- # TN031: Control Bars +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn032-mfc-exception-mechanism.md b/docs/mfc/tn032-mfc-exception-mechanism.md index 37d0ecc454e..37358762f81 100644 --- a/docs/mfc/tn032-mfc-exception-mechanism.md +++ b/docs/mfc/tn032-mfc-exception-mechanism.md @@ -3,10 +3,12 @@ description: "Learn more about: TN032: MFC Exception Mechanism" title: "TN032: MFC Exception Mechanism" ms.date: "11/04/2016" helpviewer_keywords: ["TN032", "MFC, exceptions", "CException class [MFC], using"] -ms.assetid: 0271f0aa-82cb-47a2-b7ea-e88126fc7e43 --- # TN032: MFC Exception Mechanism +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Previous versions of Visual C++ did not support the standard C++ exception mechanism, and MFC provided macros **TRY/CATCH/THROW** that were used instead. This version of Visual C++ fully supports C++ exceptions. This note covered some of the advanced implementation details of the previous macros including how to automatically cleanup stack based objects. Because C++ exceptions support stack unwinding by default, this technical note is no longer necessary. Refer to [Exceptions: Using MFC Macros and C++ Exceptions](../mfc/exceptions-using-mfc-macros-and-cpp-exceptions.md) for more information on the differences between the MFC macros and the new C++ keywords. diff --git a/docs/mfc/tn033-dll-version-of-mfc.md b/docs/mfc/tn033-dll-version-of-mfc.md index b4d84359c16..3db6c4930e0 100644 --- a/docs/mfc/tn033-dll-version-of-mfc.md +++ b/docs/mfc/tn033-dll-version-of-mfc.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["MFC DLLs [MFC], writing MFC extension DLLS", "AFXDLL libr --- # TN033: DLL Version of MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note describes how you can use the *`MFCxx.DLL`* and *`MFCxxD.DLL`* (where *xx* is the MFC version number) shared dynamic link libraries with MFC applications and MFC extension DLLs. For more information about regular MFC DLLs, see [Using MFC as Part of a DLL](../mfc/tn011-using-mfc-as-part-of-a-dll.md). This technical note covers three aspects of DLLs. The last two are for the more advanced users: diff --git a/docs/mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md b/docs/mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md index 96416abb045..21c577de734 100644 --- a/docs/mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md +++ b/docs/mfc/tn035-using-multiple-resource-files-and-header-files-with-visual-cpp.md @@ -4,10 +4,12 @@ title: "TN035: Using multiple resource files and header files with Visual Studio ms.date: "11/04/2016" f1_keywords: ["vc.resources"] helpviewer_keywords: ["resource files, multiple", "TN035"] -ms.assetid: 1f08ce5e-a912-44cc-ac56-7dd93ad73fb6 --- # TN035: Using multiple resource files and header files with Visual Studio +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn036-using-cformview-with-appwizard-and-classwizard.md b/docs/mfc/tn036-using-cformview-with-appwizard-and-classwizard.md index 4d3569e13ae..9e8261d1fbe 100644 --- a/docs/mfc/tn036-using-cformview-with-appwizard-and-classwizard.md +++ b/docs/mfc/tn036-using-cformview-with-appwizard-and-classwizard.md @@ -3,10 +3,12 @@ description: "Learn more about: TN036: Using CFormView with AppWizard and ClassW title: "TN036: Using CFormView with AppWizard and ClassWizard" ms.date: "11/04/2016" helpviewer_keywords: ["TN036"] -ms.assetid: dd54053f-ae80-4d23-9180-c7d07ddf2290 --- # TN036: Using CFormView with AppWizard and ClassWizard +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This technical note described how to modify an AppWizard generated application so that it used a `CFormView` instead of the default `CView` as its main view class. This is supported directly with this version of Visual C++. ## See also diff --git a/docs/mfc/tn037-multithreaded-mfc-2-1-applications.md b/docs/mfc/tn037-multithreaded-mfc-2-1-applications.md index 8b1d54b02af..ac6bb8c4a7e 100644 --- a/docs/mfc/tn037-multithreaded-mfc-2-1-applications.md +++ b/docs/mfc/tn037-multithreaded-mfc-2-1-applications.md @@ -3,10 +3,12 @@ description: "Learn more about: TN037: Multithreaded MFC 2.1 Applications" title: "TN037: Multithreaded MFC 2.1 Applications" ms.date: "11/04/2016" helpviewer_keywords: ["TN037"] -ms.assetid: 05ee204c-700a-4c40-957c-dc2d0db1249d --- # TN037: Multithreaded MFC 2.1 Applications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This technical note originally described the limitations of multithreaded programs with MFC 2.1, originally provided with Visual C++ 1.0 for Windows NT. MFC 3.0 supports multithreading directly and is documented. See that reference for more information. ## See also diff --git a/docs/mfc/tn038-mfc-ole-iunknown-implementation.md b/docs/mfc/tn038-mfc-ole-iunknown-implementation.md index f9dd6560fb7..5389681a074 100644 --- a/docs/mfc/tn038-mfc-ole-iunknown-implementation.md +++ b/docs/mfc/tn038-mfc-ole-iunknown-implementation.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["aggregation macros [MFC]", "COM interfaces, base interfac --- # TN038: MFC/OLE IUnknown Implementation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn039-mfc-ole-automation-implementation.md b/docs/mfc/tn039-mfc-ole-automation-implementation.md index 9cc0196268e..07218539d2f 100644 --- a/docs/mfc/tn039-mfc-ole-automation-implementation.md +++ b/docs/mfc/tn039-mfc-ole-automation-implementation.md @@ -3,10 +3,12 @@ description: "Learn more about: TN039: MFC/OLE Automation Implementation" title: "TN039: MFC-OLE Automation Implementation" ms.date: "06/28/2018" helpviewer_keywords: ["MFC, COM support", "IDispatch interface", "MFC, OLE DB and", "TN039", "Automation, MFC COM interface entry points"] -ms.assetid: 765fa3e9-dd54-4f08-9ad2-26e0546ff8b6 --- # TN039: MFC/OLE Automation Implementation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn040-mfc-ole-in-place-resizing-and-zooming.md b/docs/mfc/tn040-mfc-ole-in-place-resizing-and-zooming.md index 4feead7b1e8..48d421019bc 100644 --- a/docs/mfc/tn040-mfc-ole-in-place-resizing-and-zooming.md +++ b/docs/mfc/tn040-mfc-ole-in-place-resizing-and-zooming.md @@ -3,10 +3,12 @@ description: "Learn more about: TN040: MFC/OLE In-Place Resizing and Zooming" title: "TN040: MFC-OLE In-Place Resizing and Zooming" ms.date: "11/04/2016" helpviewer_keywords: ["resizing in-place", "TN040", "zooming and in-place activation", "in-place activation, zooming and resizing"] -ms.assetid: 4d7859bd-0b2e-4254-be62-2735cecf02c6 --- # TN040: MFC/OLE In-Place Resizing and Zooming +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn041-mfc-ole1-migration-to-mfc-ole-2.md b/docs/mfc/tn041-mfc-ole1-migration-to-mfc-ole-2.md index 5dbdc995f5f..bb8cdf822ee 100644 --- a/docs/mfc/tn041-mfc-ole1-migration-to-mfc-ole-2.md +++ b/docs/mfc/tn041-mfc-ole1-migration-to-mfc-ole-2.md @@ -3,10 +3,12 @@ description: "Learn more about: TN041: MFC/OLE1 Migration to MFC/OLE 2" title: "TN041: MFC-OLE1 Migration to MFC-OLE 2" ms.date: "10/18/2018" helpviewer_keywords: ["OLE1 [MFC]", "migrating OLE1 to OLE2", "migration [MFC], OLE1 to OLE2", "OLE2 [MFC]", "porting OLE1 to OLE2", "converting OLE1 to OLE2", "upgrading Visual C++ applications [MFC], OLE1 to OLE2", "TN041"] -ms.assetid: 67f55552-4b04-4ddf-af0b-4d9eaf5da957 --- # TN041: MFC/OLE1 Migration to MFC/OLE 2 +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn042-odbc-driver-developer-recommendations.md b/docs/mfc/tn042-odbc-driver-developer-recommendations.md index 67507a46417..50e12f2ed4f 100644 --- a/docs/mfc/tn042-odbc-driver-developer-recommendations.md +++ b/docs/mfc/tn042-odbc-driver-developer-recommendations.md @@ -4,10 +4,12 @@ title: "TN042: ODBC Driver Developer Recommendations" ms.date: "11/04/2016" f1_keywords: ["vc.odbc"] helpviewer_keywords: ["ODBC drivers [MFC], writing", "databases [MFC], ODBC", "TN042"] -ms.assetid: ecc6b5d9-f480-4582-9e22-8309fe561dad --- # TN042: ODBC Driver Developer Recommendations +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn043-rfx-routines.md b/docs/mfc/tn043-rfx-routines.md index 9c22c0478d5..9ce9eb78ffb 100644 --- a/docs/mfc/tn043-rfx-routines.md +++ b/docs/mfc/tn043-rfx-routines.md @@ -4,10 +4,12 @@ title: "TN043: RFX Routines" ms.date: "06/28/2018" f1_keywords: ["RFX"] helpviewer_keywords: ["RFX (record field exchange), architecture", "TN043", "RFX (record field exchange)"] -ms.assetid: f552d0c1-2c83-4389-b472-42c9940aa713 --- # TN043: RFX Routines +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn044-mfc-support-for-dbcs.md b/docs/mfc/tn044-mfc-support-for-dbcs.md index d20373e0d56..a49ca84591f 100644 --- a/docs/mfc/tn044-mfc-support-for-dbcs.md +++ b/docs/mfc/tn044-mfc-support-for-dbcs.md @@ -3,10 +3,12 @@ description: "Learn more about: TN044: MFC Support for DBCS" title: "TN044: MFC Support for DBCS" ms.date: "11/04/2016" helpviewer_keywords: ["TN044"] -ms.assetid: 8160bb2a-012d-4c5a-b05c-91ee6d4ca4cb --- # TN044: MFC Support for DBCS +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This technical note described the support in MFC for "double-byte character sets" or DBCS. This information as well as information on MFC's support for UNICODE is now available in the *Class Library Reference*. ## See also diff --git a/docs/mfc/tn045-mfc-database-support-for-long-varchar-varbinary.md b/docs/mfc/tn045-mfc-database-support-for-long-varchar-varbinary.md index 871ed060118..ae8ac6acc8c 100644 --- a/docs/mfc/tn045-mfc-database-support-for-long-varchar-varbinary.md +++ b/docs/mfc/tn045-mfc-database-support-for-long-varchar-varbinary.md @@ -3,10 +3,12 @@ description: "Learn more about: TN045: MFC/Database Support for Long Varchar/Var title: "TN045: MFC-Database Support for Long Varchar-Varbinary" ms.date: "11/04/2016" helpviewer_keywords: ["TN045", "Varbinary data type", "Varchar data type"] -ms.assetid: cf572c35-5275-45b5-83df-5f0e36114f40 --- # TN045: MFC/Database Support for Long Varchar/Varbinary +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn046-commenting-conventions-for-the-mfc-classes.md b/docs/mfc/tn046-commenting-conventions-for-the-mfc-classes.md index 26c2dc119d1..bec24e62f25 100644 --- a/docs/mfc/tn046-commenting-conventions-for-the-mfc-classes.md +++ b/docs/mfc/tn046-commenting-conventions-for-the-mfc-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: TN046: Commenting Conventions for the MFC Classe title: "TN046: Commenting Conventions for the MFC Classes" ms.date: "11/04/2016" helpviewer_keywords: ["TN046"] -ms.assetid: 0d6ff3c9-4a5d-44df-b121-be4b0a649947 --- # TN046: Commenting Conventions for the MFC Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This technical note originally described the conventions used to comment the MFC classes. This information is now covered in [MFC: Using the MFC Source Files](../mfc/using-the-mfc-source-files.md). ## See also From cc9f70910437684f72938a2e10200b5def7cf6ea Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 24 Feb 2026 12:06:15 -0800 Subject: [PATCH 328/619] Batch 12: update files (#6266) --- docs/mfc/tn047-relaxing-database-transaction-requirements.md | 4 +++- .../tn048-writing-odbc-setup-and-administration-programs.md | 4 +++- ...n049-mfc-ole-mbcs-to-unicode-translation-layer-mfcans32.md | 4 +++- docs/mfc/tn050-mfc-ole-common-dialogs-mfcuix32.md | 4 +++- docs/mfc/tn051-using-ctl3d-now-and-in-the-future.md | 4 +++- .../mfc/tn053-custom-dfx-routines-for-dao-database-classes.md | 4 +++- .../tn054-calling-dao-directly-while-using-mfc-dao-classes.md | 4 +++- ...mfc-odbc-database-class-applications-to-mfc-dao-classes.md | 4 +++- docs/mfc/tn056-installation-of-localized-mfc-components.md | 4 +++- docs/mfc/tn057-localization-of-mfc-components.md | 4 +++- docs/mfc/tn058-mfc-module-state-implementation.md | 4 +++- docs/mfc/tn059-using-mfc-mbcs-unicode-conversion-macros.md | 4 +++- docs/mfc/tn060-the-new-windows-common-controls.md | 4 +++- docs/mfc/tn061-on-notify-and-wm-notify-messages.md | 4 +++- docs/mfc/tn062-message-reflection-for-windows-controls.md | 4 +++- docs/mfc/tn063-debugging-internet-extension-dlls.md | 4 +++- .../tn064-apartment-model-threading-in-activex-controls.md | 4 +++- ...tn065-dual-interface-support-for-ole-automation-servers.md | 4 +++- docs/mfc/tn066-common-mfc-3-x-to-4-0-porting-issues.md | 4 +++- ...ng-transactions-with-the-microsoft-access-7-odbc-driver.md | 4 +++- docs/mfc/tn070-mfc-window-class-names.md | 4 +++- docs/mfc/tn071-mfc-iolecommandtarget-implementation.md | 4 +++- docs/mfc/tool-tips-in-windows-not-derived-from-cframewnd.md | 4 +++- docs/mfc/tool-tips.md | 4 +++- docs/mfc/toolbar-fundamentals.md | 4 +++- docs/mfc/toolbar-sample-list.md | 4 +++- docs/mfc/toolbar-tool-tips.md | 4 +++- docs/mfc/toolbars.md | 4 +++- docs/mfc/tooltiptext-structure.md | 4 +++- .../trackers-implementing-trackers-in-your-ole-application.md | 4 +++- docs/mfc/trackers.md | 4 +++- docs/mfc/tree-control-drag-and-drop-operations.md | 4 +++- docs/mfc/tree-control-image-lists.md | 4 +++- docs/mfc/tree-control-item-information.md | 4 +++- docs/mfc/tree-control-item-labels.md | 4 +++- docs/mfc/tree-control-item-position.md | 4 +++- docs/mfc/tree-control-item-selection.md | 4 +++- docs/mfc/tree-control-item-states-overview.md | 4 +++- docs/mfc/tree-control-label-editing.md | 4 +++- docs/mfc/tree-control-notification-messages.md | 4 +++- docs/mfc/tree-control-parent-and-child-items.md | 4 +++- docs/mfc/tree-control-styles.md | 4 +++- docs/mfc/turning-off-the-activate-when-visible-option.md | 4 +++- docs/mfc/two-ways-to-create-a-carchive-object.md | 4 +++- docs/mfc/type-safe-access-to-controls-in-a-dialog-box.md | 4 +++- docs/mfc/type-safe-access-to-controls-with-code-wizards.md | 4 +++- docs/mfc/type-safe-access-to-controls-without-code-wizards.md | 4 +++- docs/mfc/types-of-image-lists.md | 4 +++- docs/mfc/updating-the-text-of-a-status-bar-pane.md | 4 +++- docs/mfc/upgrading-an-existing-activex-control.md | 4 +++- docs/mfc/user-defined-tools.md | 4 +++- docs/mfc/user-interface-elements-mfc.md | 4 +++- docs/mfc/user-interface-objects-and-command-ids.md | 4 +++- docs/mfc/using-a-common-control-as-a-child-window.md | 4 +++- docs/mfc/using-a-dialog-bar-with-a-rebar-control.md | 4 +++- docs/mfc/using-a-dialog-template-in-memory.md | 4 +++- docs/mfc/using-a-hot-key-control.md | 4 +++- docs/mfc/using-an-animation-control.md | 4 +++- docs/mfc/using-an-image-list-with-a-rebar-control.md | 4 +++- docs/mfc/using-an-image-list.md | 4 +++- docs/mfc/using-an-unclipped-device-context.md | 4 +++- ...using-callback-fields-in-a-date-and-time-picker-control.md | 4 +++- docs/mfc/using-canimatectrl.md | 4 +++- docs/mfc/using-ccomboboxex.md | 4 +++- docs/mfc/using-cdatetimectrl.md | 4 +++- docs/mfc/using-cheaderctrl.md | 4 +++- docs/mfc/using-chotkeyctrl.md | 4 +++- docs/mfc/using-cimagelist.md | 4 +++- docs/mfc/using-clistctrl.md | 4 +++- docs/mfc/using-cmonthcalctrl.md | 4 +++- docs/mfc/using-cobject.md | 4 +++- docs/mfc/using-common-controls-in-a-dialog-box.md | 4 +++- docs/mfc/using-cprogressctrl.md | 4 +++- docs/mfc/using-crebarctrl.md | 4 +++- docs/mfc/using-cricheditctrl.md | 4 +++- docs/mfc/using-csliderctrl.md | 4 +++- docs/mfc/using-cspinbuttonctrl.md | 4 +++- .../using-cstatusbarctrl-to-create-a-cstatusbarctrl-object.md | 4 +++- docs/mfc/using-cstatusbarctrl.md | 4 +++- docs/mfc/using-ctabctrl.md | 4 +++- docs/mfc/using-ctoolbarctrl.md | 4 +++- ...ltipctrl-to-create-and-manipulate-a-ctooltipctrl-object.md | 4 +++- docs/mfc/using-ctooltipctrl.md | 4 +++- docs/mfc/using-ctreectrl.md | 4 +++- ...custom-format-strings-in-a-date-and-time-picker-control.md | 4 +++- docs/mfc/using-documents.md | 4 +++- docs/mfc/using-drop-down-buttons-in-a-toolbar-control.md | 4 +++- docs/mfc/using-frame-windows.md | 4 +++- docs/mfc/using-image-lists-in-a-toolbar-control.md | 4 +++- .../mfc/using-image-lists-in-an-extended-combo-box-control.md | 4 +++- docs/mfc/using-image-lists-with-header-controls.md | 4 +++- docs/mfc/using-property-sheets-in-your-application.md | 4 +++- docs/mfc/using-slider-controls.md | 4 +++- docs/mfc/using-the-carchive-output-and-input-operators.md | 4 +++- .../using-the-classes-to-write-applications-for-windows.md | 4 +++- docs/mfc/using-the-dialog-editor-to-add-controls.md | 4 +++- docs/mfc/using-the-mfc-source-files.md | 4 +++- docs/mfc/using-tooltips-in-a-cstatusbarctrl-object.md | 4 +++- docs/mfc/using-tree-controls.md | 4 +++- docs/mfc/using-views.md | 4 +++- 100 files changed, 300 insertions(+), 100 deletions(-) diff --git a/docs/mfc/tn047-relaxing-database-transaction-requirements.md b/docs/mfc/tn047-relaxing-database-transaction-requirements.md index 43e0e700c54..51f54a2b31b 100644 --- a/docs/mfc/tn047-relaxing-database-transaction-requirements.md +++ b/docs/mfc/tn047-relaxing-database-transaction-requirements.md @@ -4,10 +4,12 @@ title: "TN047: Relaxing Database Transaction Requirements" ms.date: "11/04/2016" f1_keywords: ["vc.data"] helpviewer_keywords: ["TN047"] -ms.assetid: f93c51cf-a8c0-43d0-aa47-7bcb8333d693 --- # TN047: Relaxing Database Transaction Requirements +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This tech note, which discussed the transaction requirements of the MFC ODBC database classes, is now obsolete. Before MFC 4.2, the database classes required that cursors be preserved on recordsets after a **CommitTrans** or **Rollback** operation. If the ODBC driver and DBMS did not support this level of cursor preservation, then the database classes did not enable transactions. Beginning with MFC 4.2, the database classes have relaxed the restriction of requiring cursor preservation. Transactions will be enabled if the driver supports them. However, you must now check the effect of a **CommitTrans** or **Rollback** operation on open recordsets. See the member functions [CDatabase::GetCursorCommitBehavior](../mfc/reference/cdatabase-class.md#getcursorcommitbehavior) and [CDatabase::GetCursorRollbackBehavior](../mfc/reference/cdatabase-class.md#getcursorrollbackbehavior) for more information. diff --git a/docs/mfc/tn048-writing-odbc-setup-and-administration-programs.md b/docs/mfc/tn048-writing-odbc-setup-and-administration-programs.md index 40acefd321e..af7fe25e2bf 100644 --- a/docs/mfc/tn048-writing-odbc-setup-and-administration-programs.md +++ b/docs/mfc/tn048-writing-odbc-setup-and-administration-programs.md @@ -3,11 +3,13 @@ description: "Learn more about: TN048: Writing ODBC Setup and Administration Pro title: "TN048: Writing ODBC Setup and Administration Programs for MFC Database Applications" ms.date: "11/04/2016" helpviewer_keywords: ["installing ODBC", "ODBC, installing", "setup, ODBC setup programs", "TN048", "ODBC, and MFC", "MFC, database applications"] -ms.assetid: d456cdd4-0513-4a51-80c0-9132b66115ce ms.topic: install-set-up-deploy --- # TN048: Writing ODBC Setup and Administration Programs for MFC Database Applications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn049-mfc-ole-mbcs-to-unicode-translation-layer-mfcans32.md b/docs/mfc/tn049-mfc-ole-mbcs-to-unicode-translation-layer-mfcans32.md index 85033aff5c3..b5125053a59 100644 --- a/docs/mfc/tn049-mfc-ole-mbcs-to-unicode-translation-layer-mfcans32.md +++ b/docs/mfc/tn049-mfc-ole-mbcs-to-unicode-translation-layer-mfcans32.md @@ -3,10 +3,12 @@ description: "Learn more about: TN049: MFC/OLE MBCS to Unicode Translation Layer title: "TN049: MFC-OLE MBCS to Unicode Translation Layer (MFCANS32)" ms.date: "11/04/2016" helpviewer_keywords: ["MFCANS32.DLL", "TN049"] -ms.assetid: c027e30d-8a51-4e28-b215-13fc49b40431 --- # TN049: MFC/OLE MBCS to Unicode Translation Layer (MFCANS32) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note originally described how MFCANS32.DLL provides ANSI interfaces in the primarily Unicode world of 32-bit OLE. This DLL is no longer used by MFC. ## See also diff --git a/docs/mfc/tn050-mfc-ole-common-dialogs-mfcuix32.md b/docs/mfc/tn050-mfc-ole-common-dialogs-mfcuix32.md index 622181cfa4f..e1aefa45288 100644 --- a/docs/mfc/tn050-mfc-ole-common-dialogs-mfcuix32.md +++ b/docs/mfc/tn050-mfc-ole-common-dialogs-mfcuix32.md @@ -3,10 +3,12 @@ description: "Learn more about: TN050: MFC/OLE Common Dialogs (MFCUIx32)" title: "TN050: MFC-OLE Common Dialogs (MFCUIx32)" ms.date: "11/04/2016" helpviewer_keywords: ["MFCUIx32", "TN050"] -ms.assetid: 397c92f7-e7c8-49fb-97bc-f5602ec744b8 --- # TN050: MFC/OLE Common Dialogs (MFCUIx32) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This note originally covered some issues and the future of the OLE common dialogs provided and used by MFC. The OLE common dialogs are now provided as a component built-in to the system (OLEDLG.DLL) and are fully documented in the product documentation. ## See also diff --git a/docs/mfc/tn051-using-ctl3d-now-and-in-the-future.md b/docs/mfc/tn051-using-ctl3d-now-and-in-the-future.md index 2507945e66f..7ce559319cf 100644 --- a/docs/mfc/tn051-using-ctl3d-now-and-in-the-future.md +++ b/docs/mfc/tn051-using-ctl3d-now-and-in-the-future.md @@ -3,10 +3,12 @@ description: "Learn more about: TN051: Using CTL3D Now and in the Future" title: "TN051: Using CTL3D Now and in the Future" ms.date: "11/04/2016" helpviewer_keywords: ["TN051", "CTL3D.DLL", "3D effect"] -ms.assetid: ab517a13-a137-4a60-8039-be92a632b76b --- # TN051: Using CTL3D Now and in the Future +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This technical note, which previously discussed CTL3D and MFC, is now obsolete. The 3D effect for controls is automatically implemented by MFC. ## See also diff --git a/docs/mfc/tn053-custom-dfx-routines-for-dao-database-classes.md b/docs/mfc/tn053-custom-dfx-routines-for-dao-database-classes.md index 0a40b8e8745..68d83d09180 100644 --- a/docs/mfc/tn053-custom-dfx-routines-for-dao-database-classes.md +++ b/docs/mfc/tn053-custom-dfx-routines-for-dao-database-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: TN053: Custom DFX Routines for DAO Database Clas title: "TN053: Custom DFX Routines for DAO Database Classes" ms.date: "09/17/2019" helpviewer_keywords: ["MFC, DAO and", "database classes [MFC], DAO", "DAO [MFC], MFC", "DFX (DAO record field exchange) [MFC], custom routines", "TN053", "DAO [MFC], classes", "DFX (DAO record field exchange) [MFC]", "custom DFX routines [MFC]"] -ms.assetid: fdcf3c51-4fa8-4517-9222-58aaa4f25cac --- # TN053: Custom DFX Routines for DAO Database Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual Studio environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. diff --git a/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md b/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md index 3b44465a053..c39376ef8a7 100644 --- a/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md +++ b/docs/mfc/tn054-calling-dao-directly-while-using-mfc-dao-classes.md @@ -3,11 +3,13 @@ description: "Learn more about: TN054: Calling DAO Directly While Using MFC DAO title: "TN054: Calling DAO Directly While Using MFC DAO Classes" ms.date: "09/17/2019" helpviewer_keywords: ["MFC, DAO and", "passwords [MFC], calling DAO", "security [MFC], DAO", "DAO (Data Access Objects), calling directly", "DAO (Data Access Objects), security", "security [MFC]", "TN054", "DAO (Data Access Objects), and MFC"] -ms.assetid: f7de7d85-8d6c-4426-aa05-2e617c0da957 ms.custom: sfi-ropc-nochange --- # TN054: Calling DAO Directly While Using MFC DAO Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual Studio environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. diff --git a/docs/mfc/tn055-migrating-mfc-odbc-database-class-applications-to-mfc-dao-classes.md b/docs/mfc/tn055-migrating-mfc-odbc-database-class-applications-to-mfc-dao-classes.md index 20f25fc6f90..8b669381a6b 100644 --- a/docs/mfc/tn055-migrating-mfc-odbc-database-class-applications-to-mfc-dao-classes.md +++ b/docs/mfc/tn055-migrating-mfc-odbc-database-class-applications-to-mfc-dao-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: TN055: Migrating MFC ODBC Database Class Applica title: "TN055: Migrating MFC ODBC Database Class Applications to MFC DAO Classes" ms.date: "09/17/2019" helpviewer_keywords: ["DAO [MFC], migration", "TN055", "migration [MFC], ODBC database applications", "ODBC classes [MFC], DAO classes", "migrating ODBC database applications [MFC]", "porting database applications to DAO", "ODBC [MFC], DAO", "porting ODBC database applications to DAO", "migrating database applications [MFC]"] -ms.assetid: 0f858bd1-e168-4e2e-bcd1-8debd82856e4 --- # TN055: Migrating MFC ODBC Database Class Applications to MFC DAO Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > DAO is used with Access databases and is supported through Office 2013. DAO 3.6 is the final version, and it is considered obsolete. The Visual Studio environment and wizards do not support DAO (although the DAO classes are included and you can still use them). Microsoft recommends that you use [OLE DB Templates](../data/oledb/ole-db-templates.md) or [ODBC and MFC](../data/odbc/odbc-and-mfc.md) for new projects. You should only use DAO in maintaining existing applications. diff --git a/docs/mfc/tn056-installation-of-localized-mfc-components.md b/docs/mfc/tn056-installation-of-localized-mfc-components.md index c3257be73fd..48848e726d2 100644 --- a/docs/mfc/tn056-installation-of-localized-mfc-components.md +++ b/docs/mfc/tn056-installation-of-localized-mfc-components.md @@ -3,10 +3,12 @@ description: "Learn more about: TN056: Installation of Localized MFC Components" title: "TN056: Installation of Localized MFC Components" ms.date: "11/04/2016" helpviewer_keywords: ["components [MFC]", "TN056", "resources [MFC], localization", "localization [MFC], MFC resources", "MFC70LOC.DLL", "MFC DLLs [MFC], localizing", "components [MFC], installing", "DLLs [MFC], localizing MFC", "CTL3D32.DLL", "localization [MFC], resources", "installing MFC components"] -ms.assetid: 0b582615-3bb1-4fc0-b569-d127d6deccd3 --- # TN056: Installation of Localized MFC Components +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This tech note, which discussed the installation of localized MFC components, is now obsolete. **See** [TechNote 57](../mfc/tn057-localization-of-mfc-components.md) for more information on localizing MFC applications. diff --git a/docs/mfc/tn057-localization-of-mfc-components.md b/docs/mfc/tn057-localization-of-mfc-components.md index bb920458129..fe12fc41a47 100644 --- a/docs/mfc/tn057-localization-of-mfc-components.md +++ b/docs/mfc/tn057-localization-of-mfc-components.md @@ -3,10 +3,12 @@ description: "Learn more about: TN057: Localization of MFC Components" title: "TN057: Localization of MFC Components" ms.date: "06/28/2018" helpviewer_keywords: ["components [MFC], localizing", "TN057", "resources [MFC], localization", "localization [MFC], MFC resources", "localization [MFC], MFC components", "MFC DLLs [MFC], localizing", "DLLs [MFC], localizing MFC", "localization [MFC], resources"] -ms.assetid: 5376d329-bd45-41bd-97f5-3d895a9a0af5 --- # TN057: Localization of MFC Components +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn058-mfc-module-state-implementation.md b/docs/mfc/tn058-mfc-module-state-implementation.md index 29a3777b22a..b2ca4bf12b7 100644 --- a/docs/mfc/tn058-mfc-module-state-implementation.md +++ b/docs/mfc/tn058-mfc-module-state-implementation.md @@ -3,10 +3,12 @@ description: "Learn more about: TN058: MFC Module State Implementation" title: "TN058: MFC Module State Implementation" ms.date: "06/28/2018" helpviewer_keywords: ["thread state [MFC]", "module states [MFC], managing state data", "TN058", "MFC, managing state data", "module states [MFC], switching", "DLLs [MFC], module states", "process state [MFC]"] -ms.assetid: 72f5b36f-b3da-4009-a144-24258dcd2b2f --- # TN058: MFC Module State Implementation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn059-using-mfc-mbcs-unicode-conversion-macros.md b/docs/mfc/tn059-using-mfc-mbcs-unicode-conversion-macros.md index ad8aba48e47..b4bae8e9fe9 100644 --- a/docs/mfc/tn059-using-mfc-mbcs-unicode-conversion-macros.md +++ b/docs/mfc/tn059-using-mfc-mbcs-unicode-conversion-macros.md @@ -3,10 +3,12 @@ description: "Learn more about: TN059: Using MFC MBCS/Unicode Conversion Macros" title: "TN059: Using MFC MBCS-Unicode Conversion Macros" ms.date: "11/04/2016" helpviewer_keywords: ["MFCANS32.DLL", "Unicode [MFC], conversion macros", "Unicode [MFC], OLE interfaces", "conversion macros [MFC]", "converting Unicode", "MBCS [MFC], conversion macros", "macros [MFC], MBCS conversion macros", "TN059"] -ms.assetid: a2aab748-94d0-4e2f-8447-3bd07112a705 --- # TN059: Using MFC MBCS/Unicode Conversion Macros +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn060-the-new-windows-common-controls.md b/docs/mfc/tn060-the-new-windows-common-controls.md index 587bb4c4336..2fc9ddc17bd 100644 --- a/docs/mfc/tn060-the-new-windows-common-controls.md +++ b/docs/mfc/tn060-the-new-windows-common-controls.md @@ -4,10 +4,12 @@ title: "TN060: The New Windows Common Controls" ms.date: "11/04/2016" f1_keywords: ["vc.controls.common"] helpviewer_keywords: ["TN060"] -ms.assetid: 1a8eea6c-283a-4043-a7dc-a036e37e508e --- # TN060: The New Windows Common Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Technical Note 60, describing the new Windows common controls and how to use them, has been incorporated into [Controls](../mfc/controls-mfc.md). ## See also diff --git a/docs/mfc/tn061-on-notify-and-wm-notify-messages.md b/docs/mfc/tn061-on-notify-and-wm-notify-messages.md index 41abe932b83..8575d247f07 100644 --- a/docs/mfc/tn061-on-notify-and-wm-notify-messages.md +++ b/docs/mfc/tn061-on-notify-and-wm-notify-messages.md @@ -3,11 +3,13 @@ description: "Learn more about: TN061: ON_NOTIFY and WM_NOTIFY Messages" title: "TN061: ON_NOTIFY and WM_NOTIFY Messages" ms.date: "06/28/2018" helpviewer_keywords: ["ON_NOTIFY_EX message [MFC]", "TN061", "ON_NOTIFY message [MFC]", "ON_NOTIFY_EX_RANGE message [MFC]", "ON_NOTIFY_RANGE message [MFC]", "notification messages", "WM_NOTIFY message"] -ms.assetid: 04a96dde-7049-41df-9954-ad7bb5587caf ms.topic: reference --- # TN061: ON_NOTIFY and WM_NOTIFY Messages +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn062-message-reflection-for-windows-controls.md b/docs/mfc/tn062-message-reflection-for-windows-controls.md index ce9be5675ff..dda93b386df 100644 --- a/docs/mfc/tn062-message-reflection-for-windows-controls.md +++ b/docs/mfc/tn062-message-reflection-for-windows-controls.md @@ -4,10 +4,12 @@ title: "TN062: Message Reflection for Windows Controls" ms.date: "06/28/2018" f1_keywords: ["vc.controls.messages"] helpviewer_keywords: ["ON_WM_VKEYTOITEM_REFLECT macro [MFC]", "ON_WM_DRAWITEM_REFLECT macro [MFC]", "ON_WM_VSCROLL_REFLECT macro [MFC]", "ON_NOTIFY_REFLECT message [MFC]", "ON_CONTROL_REFLECT_EX macro [MFC]", "ON_UPDATE_COMMAND_UI_REFLECT macro [MFC]", "ON_NOTIFY_REFLECT_EX message [MFC]", "ON_WM_HSCROLL_REFLECT macro [MFC]", "message reflection [MFC]", "ON_WM_COMPAREITEM_REFLECT macro [MFC]", "ON_WM_MEASUREITEM_REFLECT macro [MFC]", "ON_NOTIFY message [MFC]", "WM_COMMAND [MFC]", "WM_CTLCOLOR message [MFC]", "TN062 [MFC]", "ON_WM_CHARTOITEM_REFLECT macro [MFC]", "ON_WM_CTLCOLOR_REFLECT macro [MFC]", "ON_WM_DELETEITEM_REFLECT macro [MFC]", "notification messages [MFC]", "ON_WM_PARENTNOTIFY_REFLECT macro [MFC]", "WM_NOTIFY message [MFC]", "ON_CONTROL_REFLECT macro"] -ms.assetid: 53efb0ba-fcda-4fa0-a3c7-14e0b78fb494 --- # TN062: Message Reflection for Windows Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn063-debugging-internet-extension-dlls.md b/docs/mfc/tn063-debugging-internet-extension-dlls.md index 221dc62282f..cbc729feaf3 100644 --- a/docs/mfc/tn063-debugging-internet-extension-dlls.md +++ b/docs/mfc/tn063-debugging-internet-extension-dlls.md @@ -4,10 +4,12 @@ title: "TN063: Debugging Internet MFC extension DLLs" ms.date: "11/04/2016" f1_keywords: ["vs.debug.dlls"] helpviewer_keywords: ["IIS [MFC], debugging DLLs", "TN063 [MFC]", "DLLs [MFC], Internet extension"] -ms.assetid: 7012d592-9d2f-491a-b417-48e5c2a7680f --- # TN063: Debugging Internet MFC extension DLLs +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This information is obsolete and has been removed. ## See also diff --git a/docs/mfc/tn064-apartment-model-threading-in-activex-controls.md b/docs/mfc/tn064-apartment-model-threading-in-activex-controls.md index 0d71b56986e..126989be356 100644 --- a/docs/mfc/tn064-apartment-model-threading-in-activex-controls.md +++ b/docs/mfc/tn064-apartment-model-threading-in-activex-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: TN064: Apartment-Model Threading in ActiveX Cont title: "TN064: Apartment-Model Threading in ActiveX Controls" ms.date: "11/04/2016" helpviewer_keywords: ["OLE controls [MFC], container support", "containers [MFC], multithreaded", "TN064 [MFC]", "multithread container [MFC]", "apartment model threading [MFC]"] -ms.assetid: b2ab4c88-6954-48e2-9a74-01d4a60df073 --- # TN064: Apartment-Model Threading in ActiveX Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn065-dual-interface-support-for-ole-automation-servers.md b/docs/mfc/tn065-dual-interface-support-for-ole-automation-servers.md index d7b44243e73..956ba9e677a 100644 --- a/docs/mfc/tn065-dual-interface-support-for-ole-automation-servers.md +++ b/docs/mfc/tn065-dual-interface-support-for-ole-automation-servers.md @@ -4,10 +4,12 @@ title: "TN065: Dual-Interface Support for OLE Automation Servers" ms.date: "06/28/2018" f1_keywords: ["vc.ole"] helpviewer_keywords: ["dual interfaces [MFC], OLE Automation", "TN065 [MFC]", "ACDUAL sample [MFC]", "Automation servers [MFC], dual-interface support"] -ms.assetid: b5c8ed09-2f7f-483c-80fc-2a47ad896063 --- # TN065: Dual-Interface Support for OLE Automation Servers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn066-common-mfc-3-x-to-4-0-porting-issues.md b/docs/mfc/tn066-common-mfc-3-x-to-4-0-porting-issues.md index ecfa6eef124..6b374174140 100644 --- a/docs/mfc/tn066-common-mfc-3-x-to-4-0-porting-issues.md +++ b/docs/mfc/tn066-common-mfc-3-x-to-4-0-porting-issues.md @@ -3,10 +3,12 @@ description: "Learn more about: TN066: Common MFC 3.x to 4.0 Porting Issues" title: "TN066: Common MFC 3.x to 4.0 Porting Issues" ms.date: "11/04/2016" helpviewer_keywords: ["porting MFC, 3.x to 4.0", "TN066 [MFC]", "porting MFC"] -ms.assetid: 88308897-8da8-496d-bdef-d34ab77cdd79 --- # TN066: Common MFC 3.x to 4.0 Porting Issues +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This technical note described the most common problems that can occur when attempting to port an application written with MFC 3.x (the MFC included with Visual C++ 2.x) to MFC 4.0. ## See also diff --git a/docs/mfc/tn068-performing-transactions-with-the-microsoft-access-7-odbc-driver.md b/docs/mfc/tn068-performing-transactions-with-the-microsoft-access-7-odbc-driver.md index 41fbc200c66..64b92977edd 100644 --- a/docs/mfc/tn068-performing-transactions-with-the-microsoft-access-7-odbc-driver.md +++ b/docs/mfc/tn068-performing-transactions-with-the-microsoft-access-7-odbc-driver.md @@ -4,10 +4,12 @@ title: "TN068: Performing Transactions with the Microsoft Access 7 ODBC Driver" ms.date: "06/28/2018" f1_keywords: ["vc.data.odbc"] helpviewer_keywords: ["TN068 [MFC]", "transactions [MFC], calling BeginTrans", "transactions [MFC], Microsoft Access"] -ms.assetid: d3f8f5d9-b118-4194-be36-a1aefb630c45 --- # TN068: Performing Transactions with the Microsoft Access 7 ODBC Driver +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn070-mfc-window-class-names.md b/docs/mfc/tn070-mfc-window-class-names.md index f72a9dadf3f..f3d9fe97e47 100644 --- a/docs/mfc/tn070-mfc-window-class-names.md +++ b/docs/mfc/tn070-mfc-window-class-names.md @@ -3,10 +3,12 @@ description: "Learn more about: TN070: MFC Window Class Names" title: "TN070: MFC Window Class Names" ms.date: "11/04/2016" helpviewer_keywords: ["window class names [MFC]", "TN070 [MFC]"] -ms.assetid: 90617912-dd58-4a7c-9082-ced71736d7cd --- # TN070: MFC Window Class Names +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tn071-mfc-iolecommandtarget-implementation.md b/docs/mfc/tn071-mfc-iolecommandtarget-implementation.md index 293dda09b60..33a2073e56b 100644 --- a/docs/mfc/tn071-mfc-iolecommandtarget-implementation.md +++ b/docs/mfc/tn071-mfc-iolecommandtarget-implementation.md @@ -3,10 +3,12 @@ description: "Learn more about: TN071: MFC IOleCommandTarget Implementation" title: "TN071: MFC IOleCommandTarget Implementation" ms.date: "06/28/2018" helpviewer_keywords: ["TN071 [MFC]", "IOleCommandTarget interface [MFC]"] -ms.assetid: 3eef571e-6357-444d-adbb-6f734a0c3161 --- # TN071: MFC IOleCommandTarget Implementation +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > The following technical note has not been updated since it was first included in the online documentation. As a result, some procedures and topics might be out of date or incorrect. For the latest information, it is recommended that you search for the topic of interest in the online documentation index. diff --git a/docs/mfc/tool-tips-in-windows-not-derived-from-cframewnd.md b/docs/mfc/tool-tips-in-windows-not-derived-from-cframewnd.md index ae8986fef63..8d3d3ee6772 100644 --- a/docs/mfc/tool-tips-in-windows-not-derived-from-cframewnd.md +++ b/docs/mfc/tool-tips-in-windows-not-derived-from-cframewnd.md @@ -3,10 +3,12 @@ description: "Learn more about: Tool Tips in Windows Not Derived from CFrameWnd" title: "Tool Tips in Windows Not Derived from CFrameWnd" ms.date: "11/04/2016" helpviewer_keywords: ["enabling tool tips [MFC]", "TOOLTIPTEXT structure [MFC]", "Help [MFC], tool tips for controls", "TTN_NEEDTEXT message [MFC]", "controls [MFC], tool tips", "handler functions [MFC], tool tips"] -ms.assetid: cad5ef0f-02e3-4151-ad0d-3d42e6932b0e --- # Tool Tips in Windows Not Derived from CFrameWnd +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article family covers enabling tool tips for controls contained in a window that is not derived from [CFrameWnd](../mfc/reference/cframewnd-class.md). The article [Toolbars Tool Tips](../mfc/toolbar-tool-tips.md) provides information about tool tips for controls in a `CFrameWnd`. Topics covered in this article family include: diff --git a/docs/mfc/tool-tips.md b/docs/mfc/tool-tips.md index 33ac9aa93ef..84f1e235f9b 100644 --- a/docs/mfc/tool-tips.md +++ b/docs/mfc/tool-tips.md @@ -3,10 +3,12 @@ description: "Learn more about: Tool Tips" title: "Tool Tips" ms.date: "11/04/2016" helpviewer_keywords: ["CFrameWnd class [MFC], tool tips", "Help [MFC], tool tips for controls", "tool tips [MFC], CFrameWnd", "controls [MFC], tool tips", "buttons [MFC], tool tips"] -ms.assetid: 7f0bba86-7c55-4bf6-8455-687a4dcb2be8 --- # Tool Tips +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The procedures are distinct for adding tool tips to controls contained in windows derived from MFC class [CFrameWnd](../mfc/reference/cframewnd-class.md) and windows not derived from `CFrameWnd`. ## What do you want to know more about diff --git a/docs/mfc/toolbar-fundamentals.md b/docs/mfc/toolbar-fundamentals.md index e6f6328e2f2..92532ae95e8 100644 --- a/docs/mfc/toolbar-fundamentals.md +++ b/docs/mfc/toolbar-fundamentals.md @@ -4,10 +4,12 @@ title: "Toolbar Fundamentals" ms.date: "11/04/2016" f1_keywords: ["RT_TOOLBAR"] helpviewer_keywords: ["embedding toolbar in frame window class [MFC]", "application wizards [MFC], installing default application toolbars", "toolbars [MFC], creating", "resources [MFC], toolbar", "toolbar controls [MFC], toolbars created using Application Wizard", "toolbar controls [MFC], command ID", "RT_TOOLBAR resource [MFC]", "toolbars [MFC], adding default using Application Wizard", "LoadBitmap method [MFC], toolbars", "Toolbar editor [MFC], Application Wizard", "command IDs [MFC], toolbar buttons", "SetButtons method [MFC]", "CToolBar class [MFC], default toolbars in Application Wizard", "frame window classes [MFC], toolbar embedded in", "LoadToolBar method [MFC]"] -ms.assetid: cc00aaff-8a56-433b-b0c0-b857d76b4ffd --- # Toolbar Fundamentals +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes the fundamental MFC implementation that lets you add a default toolbar to your application by selecting an option in the Application Wizard. Topics covered include: - [The Application Wizard toolbar option](#_core_the_appwizard_toolbar_option) diff --git a/docs/mfc/toolbar-sample-list.md b/docs/mfc/toolbar-sample-list.md index f7ec47b1bec..a47fdf7ea6c 100644 --- a/docs/mfc/toolbar-sample-list.md +++ b/docs/mfc/toolbar-sample-list.md @@ -3,10 +3,12 @@ description: "Learn more about: Toolbar Sample List" title: "Toolbar Sample List" ms.date: "11/04/2016" helpviewer_keywords: ["sample applications [MFC], toolbars"] -ms.assetid: 61310e4e-3df7-47c2-8b10-7c6cb45c5d1b --- # Toolbar Sample List +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + See the following sample programs that illustrate using MFC's toolbars: - [SCRIBBLE](../overview/visual-cpp-samples.md) diff --git a/docs/mfc/toolbar-tool-tips.md b/docs/mfc/toolbar-tool-tips.md index d7914d8884d..b0ea2b0d9a7 100644 --- a/docs/mfc/toolbar-tool-tips.md +++ b/docs/mfc/toolbar-tool-tips.md @@ -3,10 +3,12 @@ description: "Learn more about: Toolbar Tool Tips" title: "Toolbar Tool Tips" ms.date: "11/04/2016" helpviewer_keywords: ["tool tips [MFC], activating", "CBRS_TOOLTIPS constant [MFC]", "tool tips [MFC], adding text", "updates [MFC]", "CBRS_FLYBY constant [MFC]", "tool tips [MFC]", "updating status bar messages", "updates, status bar messages", "status bars [MFC], tool tips", "flyby status bar updates"] -ms.assetid: d1696305-b604-4fad-9f09-638878371412 --- # Toolbar Tool Tips +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Tool tips are the tiny popup windows that present short descriptions of a toolbar button's purpose when you position the mouse over a button for a period of time. When you create an application with the Application Wizard that has a toolbar, tool tip support is provided for you. This article explains both the tool tip support created by the Application Wizard and how to add tool tip support to your application. This article covers: diff --git a/docs/mfc/toolbars.md b/docs/mfc/toolbars.md index 7ad24693784..cca3d41db3b 100644 --- a/docs/mfc/toolbars.md +++ b/docs/mfc/toolbars.md @@ -3,10 +3,12 @@ description: "Learn more about: Toolbars" title: "Toolbars" ms.date: "11/04/2016" helpviewer_keywords: ["toolbars [MFC]", "command bars [MFC], MFC toolbars"] -ms.assetid: c22ecc5b-a84c-4979-8d1a-8e3e71d5ce33 --- # Toolbars +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The toolbar family of articles describes MFC toolbars and how to create and use them. ## What do you want to know more about diff --git a/docs/mfc/tooltiptext-structure.md b/docs/mfc/tooltiptext-structure.md index 2fb1e28f541..ebb33d4f484 100644 --- a/docs/mfc/tooltiptext-structure.md +++ b/docs/mfc/tooltiptext-structure.md @@ -4,10 +4,12 @@ title: "TOOLTIPTEXT Structure" ms.date: "11/04/2016" f1_keywords: ["TOOLTIPTEXT"] helpviewer_keywords: ["TOOLTIPTEXT structure [MFC]", "tool tips [MFC], notifications"] -ms.assetid: 547591bf-80f5-400e-a2a7-0708cfffbb5d --- # TOOLTIPTEXT Structure +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In writing your [tool tip notification handler](../mfc/handling-ttn-needtext-notification-for-tool-tips.md), you need to use the **TOOLTIPTEXT** structure. The members of the **TOOLTIPTEXT** structure are: ```cpp diff --git a/docs/mfc/trackers-implementing-trackers-in-your-ole-application.md b/docs/mfc/trackers-implementing-trackers-in-your-ole-application.md index d5718ffda1d..208656401f8 100644 --- a/docs/mfc/trackers-implementing-trackers-in-your-ole-application.md +++ b/docs/mfc/trackers-implementing-trackers-in-your-ole-application.md @@ -3,10 +3,12 @@ description: "Learn more about: Trackers: Implementing Trackers in Your OLE Appl title: "Trackers: Implementing Trackers in Your OLE Application" ms.date: "11/04/2016" helpviewer_keywords: ["trackers [MFC]", "OLE applications [MFC], trackers", "applications [OLE], trackers", "tracking OLE items [MFC]", "OLE containers [MFC], trackers", "CRectTracker class [MFC], implementing trackers"] -ms.assetid: 5103a517-65bd-441a-8a53-02915ff3ef08 --- # Trackers: Implementing Trackers in Your OLE Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Trackers provide a graphical interface to enable users to interact with OLE client items. By using different tracker styles, OLE client items can be displayed with hatched borders, resize handles, or a variety of other visual effects. This article describes: - [How to Implement Tracking in Your Code](../mfc/how-to-implement-tracking-in-your-code.md). diff --git a/docs/mfc/trackers.md b/docs/mfc/trackers.md index 284e9585651..c3f2d1dec11 100644 --- a/docs/mfc/trackers.md +++ b/docs/mfc/trackers.md @@ -3,10 +3,12 @@ description: "Learn more about: Trackers" title: "Trackers" ms.date: "11/04/2016" helpviewer_keywords: ["trackers [MFC]", "OLE applications [MFC], trackers", "applications [OLE], trackers", "tracking OLE items [MFC]", "OLE containers [MFC], trackers", "CDC class [MFC], trackers", "CRectTracker class [MFC], implementing trackers", "OLE server applications [MFC], trackers"] -ms.assetid: dcd09399-6637-4621-80e5-d12670429787 --- # Trackers +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The [CRectTracker](../mfc/reference/crecttracker-class.md) class provides a user interface between rectangular items in your application and your user by providing a variety of display styles. These styles include solid, hatched, or dashed borders; a hatched pattern that covers the item; and resize handles that can be located on the outside or inside of a border. Trackers are often used in conjunction with OLE items, that is, objects derived from `COleClientItem`. The tracker rectangles give visual cues on the current status of the item. The MFC OLE sample [OCLIENT](../overview/visual-cpp-samples.md) demonstrates a common interface using trackers and OLE client items from the viewpoint of a container application. For a demonstration of the different styles and abilities of a tracker object, see the MFC general sample [TRACKER](../overview/visual-cpp-samples.md). diff --git a/docs/mfc/tree-control-drag-and-drop-operations.md b/docs/mfc/tree-control-drag-and-drop-operations.md index 32bfd434cb4..bd72d567335 100644 --- a/docs/mfc/tree-control-drag-and-drop-operations.md +++ b/docs/mfc/tree-control-drag-and-drop-operations.md @@ -3,10 +3,12 @@ description: "Learn more about: Tree Control Drag-and-Drop Operations" title: "Tree Control Drag-and-Drop Operations" ms.date: "11/04/2016" helpviewer_keywords: ["CTreeCtrl class [MFC], drag and drop operations", "drag and drop [MFC], CTreeCtrl", "tree controls [MFC], drag and drop operations"] -ms.assetid: 3cf78b4c-4579-4fe1-9bc9-c5ab876e4af1 --- # Tree Control Drag-and-Drop Operations +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A tree control ([CTreeCtrl](../mfc/reference/ctreectrl-class.md)) sends a notification when the user starts to drag an item. The control sends a [TVN_BEGINDRAG](/windows/win32/Controls/tvn-begindrag) notification message when the user begins dragging an item with the left mouse button and a [TVN_BEGINRDRAG](/windows/win32/Controls/tvn-beginrdrag) notification message when the user begins dragging with the right button. You can prevent a tree control from sending these notifications by giving the tree control the TVS_DISABLEDRAGDROP style. You obtain an image to display during a drag operation by calling the [CreateDragImage](../mfc/reference/ctreectrl-class.md#createdragimage) member function. The tree control creates a dragging bitmap based on the label of the item being dragged. Then the tree control creates an image list, adds the bitmap to it, and returns a pointer to the [CImageList](../mfc/reference/cimagelist-class.md) object. diff --git a/docs/mfc/tree-control-image-lists.md b/docs/mfc/tree-control-image-lists.md index d8525bec05f..93787bb896f 100644 --- a/docs/mfc/tree-control-image-lists.md +++ b/docs/mfc/tree-control-image-lists.md @@ -3,10 +3,12 @@ description: "Learn more about: Tree Control Image Lists" title: "Tree Control Image Lists" ms.date: "11/04/2016" helpviewer_keywords: ["images [MFC], lists in tree controls", "tree controls [MFC], image lists", "CTreeCtrl class [MFC], image lists"] -ms.assetid: f560c4f2-20d2-4d28-ac33-4017e65fb0a6 --- # Tree Control Image Lists +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Each item in a tree control ([CTreeCtrl](../mfc/reference/ctreectrl-class.md)) can have a pair of bitmapped images associated with it. The images appear on the left side of an item's label. One image is displayed when the item is selected, and the other is displayed when the item is not selected. For example, an item might display an open folder when it is selected and a closed folder when it is not selected. To use item images, you must create an image list by constructing a [CImageList](../mfc/reference/cimagelist-class.md) object and using the [CImageList::Create](../mfc/reference/cimagelist-class.md#create) function to create the associated image list. Then add the desired bitmaps to the list, and associate the list with the tree control by using the [SetImageList](../mfc/reference/ctreectrl-class.md#setimagelist) member function. By default, all items display the first image in the image list for both the selected and nonselected states. You can change the default behavior for a particular item by specifying the indexes of the selected and nonselected images when adding the item to the tree control using the [InsertItem](../mfc/reference/ctreectrl-class.md#insertitem) member function. You can change the indexes after adding an item by using the [SetItemImage](../mfc/reference/ctreectrl-class.md#setitemimage) member function. diff --git a/docs/mfc/tree-control-item-information.md b/docs/mfc/tree-control-item-information.md index acf7eb6b7d9..bc49370f2b1 100644 --- a/docs/mfc/tree-control-item-information.md +++ b/docs/mfc/tree-control-item-information.md @@ -3,10 +3,12 @@ description: "Learn more about: Tree Control Item Information" title: "Tree Control Item Information" ms.date: "11/04/2016" helpviewer_keywords: ["tree controls [MFC], item information", "CTreeCtrl class [MFC], item information"] -ms.assetid: 8dcab855-27de-49e9-95d8-f78ba963ea71 --- # Tree Control Item Information +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Tree controls ([CTreeCtrl](../mfc/reference/ctreectrl-class.md)) have a number of member functions that retrieve information about items in the control. The [GetItem](../mfc/reference/ctreectrl-class.md#getitem) member function retrieves some or all of the data associated with an item. This data could include the item's text, state, images, count of child items, and an application-defined 32-bit data value. There is also a [SetItem](../mfc/reference/ctreectrl-class.md#setitem) function that can set some or all of the data associated with an item. The [GetItemState](../mfc/reference/ctreectrl-class.md#getitemstate), [GetItemText](../mfc/reference/ctreectrl-class.md#getitemtext), [GetItemData](../mfc/reference/ctreectrl-class.md#getitemdata), and [GetItemImage](../mfc/reference/ctreectrl-class.md#getitemimage) member functions retrieve individual attributes of an item. Each of these functions has a corresponding Set function for setting the attributes of an item. diff --git a/docs/mfc/tree-control-item-labels.md b/docs/mfc/tree-control-item-labels.md index aea13c5e902..42490361966 100644 --- a/docs/mfc/tree-control-item-labels.md +++ b/docs/mfc/tree-control-item-labels.md @@ -3,10 +3,12 @@ description: "Learn more about: Tree Control Item Labels" title: "Tree Control Item Labels" ms.date: "11/04/2016" helpviewer_keywords: ["tree controls [MFC], item labels", "labels, CTreeCtrl items", "CTreeCtrl class [MFC], item labels", "item labels, tree controls", "item labels"] -ms.assetid: fe834107-1a25-4280-aced-774c11565805 --- # Tree Control Item Labels +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You typically specify the text of an item's label when adding the item to the tree control ([CTreeCtrl](../mfc/reference/ctreectrl-class.md)). The `InsertItem` member function can pass a [TVITEM](/windows/win32/api/commctrl/ns-commctrl-tvitemw) structure that defines the item's properties, including a string containing the text of the label. `InsertItem` has several overloads that can be called with various combinations of parameters. A tree control allocates memory for storing each item; the text of the item labels takes up a significant portion of this memory. If your application maintains a copy of the strings in the tree control, you can decrease the memory requirements of the control by specifying the **LPSTR_TEXTCALLBACK** value in the *pszText* member of `TV_ITEM` or the *lpszItem* parameter instead of passing actual strings to the tree control. Using **LPSTR_TEXTCALLBACK** causes the tree control to retrieve the text of an item's label from the application whenever the item needs to be redrawn. To retrieve the text, the tree control sends a [TVN_GETDISPINFO](/windows/win32/Controls/tvn-getdispinfo) notification message, which includes the address of a [NMTVDISPINFO](/windows/win32/api/commctrl/ns-commctrl-nmtvdispinfow) structure. You must respond by setting the appropriate members of the included structure. diff --git a/docs/mfc/tree-control-item-position.md b/docs/mfc/tree-control-item-position.md index f6a855c2018..11544293a93 100644 --- a/docs/mfc/tree-control-item-position.md +++ b/docs/mfc/tree-control-item-position.md @@ -3,10 +3,12 @@ description: "Learn more about: Tree Control Item Position" title: "Tree Control Item Position" ms.date: "11/04/2016" helpviewer_keywords: ["CTreeCtrl class [MFC], item position", "item position in tree controls", "tree controls [MFC], item position", "position, CTreeCtrl items"] -ms.assetid: cd264344-2cf9-4d90-9ea8-c6900b6f60e7 --- # Tree Control Item Position +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An item's initial position is set when the item is added to the tree control ([CTreeCtrl](../mfc/reference/ctreectrl-class.md)) by using the `InsertItem` member function. The member function call specifies the handle of the parent item and the handle of the item after which the new item is to be inserted. The second handle must identify either a child item of the given parent or one of these values: `TVI_FIRST`, `TVI_LAST`, or `TVI_SORT`. When `TVI_FIRST` or `TVI_LAST` is specified, the tree control places the new item at the beginning or end of the given parent item's list of child items. When `TVI_SORT` is specified, the tree control inserts the new item into the list of child items in alphabetical order based on the text of the item labels. diff --git a/docs/mfc/tree-control-item-selection.md b/docs/mfc/tree-control-item-selection.md index e48ff060f2c..411f20dbc4f 100644 --- a/docs/mfc/tree-control-item-selection.md +++ b/docs/mfc/tree-control-item-selection.md @@ -3,10 +3,12 @@ description: "Learn more about: Tree Control Item Selection" title: "Tree Control Item Selection" ms.date: "11/04/2016" helpviewer_keywords: ["tree controls [MFC], item selection", "controls [MFC], selecting items in", "CTreeCtrl class [MFC], item selection", "item selection in tree controls"] -ms.assetid: 7bcb3b16-b9c8-4c06-9350-7bc3c1c5009b --- # Tree Control Item Selection +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When the selection changes from one item to another, a tree control ([CTreeCtrl](../mfc/reference/ctreectrl-class.md)) sends [TVN_SELCHANGING](/windows/win32/Controls/tvn-selchanging) and [TVN_SELCHANGED](/windows/win32/Controls/tvn-selchanged) notification messages. Both notifications include a value that specifies whether the change is the result of a mouse click or a keystroke. The notifications also include information about the item that is gaining the selection and the item that is losing the selection. You can use this information to set item attributes that depend on the selection state of the item. Returning **TRUE** in response to `TVN_SELCHANGING` prevents the selection from changing; returning **FALSE** allows the change. An application can change the selection by calling the [SelectItem](../mfc/reference/ctreectrl-class.md#selectitem) member function. diff --git a/docs/mfc/tree-control-item-states-overview.md b/docs/mfc/tree-control-item-states-overview.md index ca07cec4fa6..856d9a7e72d 100644 --- a/docs/mfc/tree-control-item-states-overview.md +++ b/docs/mfc/tree-control-item-states-overview.md @@ -3,11 +3,13 @@ description: "Learn more about: Tree Control Item States Overview" title: "Tree Control Item States Overview" ms.date: "11/04/2016" helpviewer_keywords: ["states, CTreeCtrl items", "tree controls [MFC], item states overview", "CTreeCtrl class [MFC], item states"] -ms.assetid: 2db11ae0-0d87-499d-8c1f-5e0dbe9e94c8 ms.topic: concept-article --- # Tree Control Item States Overview +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Each item in a tree control ([CTreeCtrl](../mfc/reference/ctreectrl-class.md)) has a current state. For example, an item can be selected, disabled, expanded, and so on. For the most part, the tree control automatically sets an item's state to reflect user actions, such as selection of an item. However, you can also set an item's state by using the [SetItemState](../mfc/reference/ctreectrl-class.md#setitemstate) member function and retrieve the current state of an item by using the [GetItemState](../mfc/reference/ctreectrl-class.md#getitemstate) member function. For a complete list of item states, see [Tree-View Control Constants](/windows/win32/Controls/tree-view-control-item-states) in the Windows SDK. An item's current state is specified by the *nState* parameter. A tree control might change an item's state to reflect a user action, such as selecting the item or setting the focus to the item. In addition, an application might change an item's state to disable or hide the item or to specify an overlay image or state image. diff --git a/docs/mfc/tree-control-label-editing.md b/docs/mfc/tree-control-label-editing.md index ec3bd79edfb..fbef5efff63 100644 --- a/docs/mfc/tree-control-label-editing.md +++ b/docs/mfc/tree-control-label-editing.md @@ -3,10 +3,12 @@ description: "Learn more about: Tree Control Label Editing" title: "Tree Control Label Editing" ms.date: "11/04/2016" helpviewer_keywords: ["editing tree control labels", "CTreeCtrl class [MFC], editing labels", "label editing in CTreeCtrl class [MFC]", "tree controls [MFC], label editing"] -ms.assetid: 6cde2ac3-43ee-468f-bac2-cf1a228ad32d --- # Tree Control Label Editing +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The user can directly edit the labels of items in a tree control ([CTreeCtrl](../mfc/reference/ctreectrl-class.md)) that has the **TVS_EDITLABELS** style. The user begins editing by clicking the label of the item that has the focus. An application begins editing by using the [EditLabel](../mfc/reference/ctreectrl-class.md#editlabel) member function. The tree control sends the notification when editing begins and when it is canceled or completed. When editing is completed, you are responsible for updating the item's label, if appropriate. When label editing begins, a tree control sends a [TVN_BEGINLABELEDIT](/windows/win32/Controls/tvn-beginlabeledit) notification message. By processing this notification, you can allow editing of some labels and prevent editing of others. Returning 0 allows editing, and returning nonzero prevents it. diff --git a/docs/mfc/tree-control-notification-messages.md b/docs/mfc/tree-control-notification-messages.md index d17b69afe5d..15a91e6e4fb 100644 --- a/docs/mfc/tree-control-notification-messages.md +++ b/docs/mfc/tree-control-notification-messages.md @@ -3,10 +3,12 @@ description: "Learn more about: Tree Control Notification Messages" title: "Tree Control Notification Messages" ms.date: "11/04/2016" helpviewer_keywords: ["notifications [MFC], tree controls", "messages [MFC], notification", "CTreeCtrl class [MFC], notifications", "notifications [MFC], CTreeCtrl", "tree controls [MFC], notification messages"] -ms.assetid: ac7013b4-91dd-4668-bd75-439ca0680ef9 --- # Tree Control Notification Messages +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A tree control ([CTreeCtrl](../mfc/reference/ctreectrl-class.md)) sends the following notification messages as WM_NOTIFY messages: |Notification message|Description| diff --git a/docs/mfc/tree-control-parent-and-child-items.md b/docs/mfc/tree-control-parent-and-child-items.md index 27d07a900eb..ddc959d65e6 100644 --- a/docs/mfc/tree-control-parent-and-child-items.md +++ b/docs/mfc/tree-control-parent-and-child-items.md @@ -3,10 +3,12 @@ description: "Learn more about: Tree Control Parent and Child Items" title: "Tree Control Parent and Child Items" ms.date: "11/04/2016" helpviewer_keywords: ["parent items in CTreeCtrl [MFC]", "child items in tree control [MFC]", "CTreeCtrl class [MFC], parent and child items", "tree controls [MFC], parent and child items"] -ms.assetid: abcea1e4-fe9b-40d9-86dc-1db235f8f103 --- # Tree Control Parent and Child Items +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Any item in a tree control ([CTreeCtrl](../mfc/reference/ctreectrl-class.md)) can have a list of subitems, which are called child items, associated with it. An item that has one or more child items is called a parent item. A child item is displayed below its parent item and is indented to indicate it is subordinate to the parent. An item that has no parent is at the top of the hierarchy and is called a root item. At any given time, the state of a parent item's list of child items can be either expanded or collapsed. When the state is expanded, the child items are displayed below the parent item. When it is collapsed, the child items are not displayed. The list automatically toggles between the expanded and collapsed states when the user double-clicks the parent item or, if the parent has the **TVS_HASBUTTONS** style, when the user clicks the button associated with the parent item. An application can expand or collapse the child items by using the [Expand](../mfc/reference/ctreectrl-class.md#expand) member function. diff --git a/docs/mfc/tree-control-styles.md b/docs/mfc/tree-control-styles.md index bde048b5f4f..b801000df1d 100644 --- a/docs/mfc/tree-control-styles.md +++ b/docs/mfc/tree-control-styles.md @@ -4,10 +4,12 @@ title: "Tree Control Styles" ms.date: "11/04/2016" f1_keywords: ["TVS_SINGLEEXPAND", "TVS_LINESATROOT", "TVS_HASBUTTONS", "TVS_NOTOOLTIPS", "TVS_HASLINES"] helpviewer_keywords: ["TVS_LINESATROOT [MFC]", "styles [MFC], CTreeCtrl", "styles [MFC], tree control", "TVS_HASLINES", "TVS_SINGLEEXPAND", "CTreeCtrl class [MFC], styles", "TVS_EDITLABELS [MFC]", "TVS_NOTOOLTIPS [MFC]", "TVS_HASBUTTONS [MFC]", "tree controls [MFC], styles"] -ms.assetid: f43faebd-a355-479e-888a-bf0673d5e1b4 --- # Tree Control Styles +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Tree control ([CTreeCtrl](../mfc/reference/ctreectrl-class.md)) styles govern aspects of a tree control's appearance. You set the initial styles when you create the tree control. You can retrieve and change the styles after creating the tree control by using the [GetWindowLong](/windows/win32/api/winuser/nf-winuser-getwindowlongw) and [SetWindowLong](/windows/win32/api/winuser/nf-winuser-setwindowlongw) Windows functions, specifying **GWL_STYLE** for the *nIndex* parameter. For a complete list of styles, see [Tree View Control Window Styles](/windows/win32/Controls/tree-view-control-window-styles) in the Windows SDK. The **TVS_HASLINES** style enhances the graphic representation of a tree control's hierarchy by drawing lines that link child items to their corresponding parent item. This style does not link items at the root of the hierarchy. To do so, you need to combine the **TVS_HASLINES** and **TVS_LINESATROOT** styles. diff --git a/docs/mfc/turning-off-the-activate-when-visible-option.md b/docs/mfc/turning-off-the-activate-when-visible-option.md index a72e1bf165f..530d54f0526 100644 --- a/docs/mfc/turning-off-the-activate-when-visible-option.md +++ b/docs/mfc/turning-off-the-activate-when-visible-option.md @@ -3,11 +3,13 @@ description: "Learn more about: Turning off the Activate When Visible Option" title: "Turning off the Activate When Visible Option" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ActiveX controls [MFC], activate options", "Activate When Visible option [MFC]"] -ms.assetid: 8f7ddc5a-a7a6-4da8-bcb9-1b569f0ecb48 ms.topic: concept-article --- # Turning off the Activate When Visible Option +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A control has two basic states: active and inactive. Traditionally, these states were distinguished by whether the control had a window. An active control had a window; an inactive control did not. With the introduction of windowless activation, this distinction is no longer universal, but still applies to many controls. Compared with the rest of the initialization typically performed by an ActiveX control, the creation of a window is an extremely expensive operation. Ideally, a control would defer creating its window until absolutely necessary. diff --git a/docs/mfc/two-ways-to-create-a-carchive-object.md b/docs/mfc/two-ways-to-create-a-carchive-object.md index 9347fd20f75..b63004007b1 100644 --- a/docs/mfc/two-ways-to-create-a-carchive-object.md +++ b/docs/mfc/two-ways-to-create-a-carchive-object.md @@ -3,10 +3,12 @@ description: "Learn more about: Two Ways to Create a CArchive Object" title: "Two Ways to Create a CArchive Object" ms.date: "11/04/2016" helpviewer_keywords: ["CArchive class [MFC], closing CArchive objects", "CArchive objects [MFC], closing", "I/O [MFC], creating CArchive objects", "serialization [MFC], CArchive class", "CArchive objects [MFC]", "storage [MFC], CArchive class [MFC]", "data storage [MFC], CArchive class", "CArchive class [MFC], constructor"] -ms.assetid: aefa28ce-b55c-40dc-9e42-5f038030985d --- # Two Ways to Create a CArchive Object +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + There are two ways to create a `CArchive` object: - [Implicit creation of a CArchive object via the framework](#_core_implicit_creation_of_a_carchive_object_via_the_framework) diff --git a/docs/mfc/type-safe-access-to-controls-in-a-dialog-box.md b/docs/mfc/type-safe-access-to-controls-in-a-dialog-box.md index 0e628e5526b..1154f42ac06 100644 --- a/docs/mfc/type-safe-access-to-controls-in-a-dialog-box.md +++ b/docs/mfc/type-safe-access-to-controls-in-a-dialog-box.md @@ -3,10 +3,12 @@ description: "Learn more about: Type-Safe Access to Controls in a Dialog Box" title: "Type-Safe Access to Controls in a Dialog Box" ms.date: "11/04/2016" helpviewer_keywords: ["common controls [MFC], in dialog boxes", "Windows common controls [MFC], in dialog boxes", "safe access to dialog box controls", "dialog boxes [MFC], type-safe access to controls", "controls [MFC], accessing in dialog boxes", "type-safe access to dialog box controls", "MFC dialog boxes [MFC], type-safe access to controls"] -ms.assetid: 67021025-dd93-4d6a-8bed-a1348fe50685 --- # Type-Safe Access to Controls in a Dialog Box +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The controls in a dialog box can use the interfaces of MFC control classes such as `CListBox` and `CEdit`. You can create a control object and attach it to a dialog control. Then you can access the control through its class interface, calling member functions to operate on the control. The methods described here are designed to give you type-safe access to a control. This is especially useful for controls such as edit boxes and list boxes. There are two approaches to making a connection between a control in a dialog box and a C++ control member variable in a `CDialog`-derived class: diff --git a/docs/mfc/type-safe-access-to-controls-with-code-wizards.md b/docs/mfc/type-safe-access-to-controls-with-code-wizards.md index 0ac28da3350..56892af1285 100644 --- a/docs/mfc/type-safe-access-to-controls-with-code-wizards.md +++ b/docs/mfc/type-safe-access-to-controls-with-code-wizards.md @@ -3,10 +3,12 @@ description: "Learn more about: Type-Safe Access to Controls With Code Wizards" title: "Type-Safe Access to Controls With Code Wizards" ms.date: "11/04/2016" helpviewer_keywords: ["DDX (dialog data exchange), access to controls", "code wizards", "dialog boxes [MFC], access to controls", "dialog box controls [MFC], accessing"] -ms.assetid: b8874393-ee48-4124-8d78-e3648a7e29b9 --- # Type-Safe Access to Controls With Code Wizards +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If you are familiar with DDX features, you can use the Control property in the [Add Member Variable Wizard](../ide/adding-a-member-variable-visual-cpp.md#add-member-variable-wizard) to create type-safe access. This approach is easier than creating controls without code wizards. If you simply want access to a control's value, DDX provides it. If you want to do more than access a control's value, use the Add Member Variable Wizard to add a member variable of the appropriate class to your dialog class. Attach this member variable to the Control property. diff --git a/docs/mfc/type-safe-access-to-controls-without-code-wizards.md b/docs/mfc/type-safe-access-to-controls-without-code-wizards.md index 6783fcc6296..613307d7c10 100644 --- a/docs/mfc/type-safe-access-to-controls-without-code-wizards.md +++ b/docs/mfc/type-safe-access-to-controls-without-code-wizards.md @@ -3,10 +3,12 @@ description: "Learn more about: Type-Safe Access to Controls Without Code Wizard title: "Type-Safe Access to Controls Without Code Wizards" ms.date: "11/04/2016" helpviewer_keywords: ["dialog boxes [MFC], accessing controls", "dialog box controls [MFC], accessing"] -ms.assetid: 325b4927-d49b-42b4-8e0b-fc84f31fb059 --- # Type-Safe Access to Controls Without Code Wizards +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The first approach to creating type-safe access to controls uses an inline member function to cast the return type of class `CWnd`'s `GetDlgItem` member function to the appropriate C++ control type, as in this example: [!code-cpp[NVC_MFCControlLadenDialog#50](../mfc/codesnippet/cpp/type-safe-access-to-controls-without-code-wizards_1.cpp)] diff --git a/docs/mfc/types-of-image-lists.md b/docs/mfc/types-of-image-lists.md index 3ed02c1d59a..d93ce25d1c3 100644 --- a/docs/mfc/types-of-image-lists.md +++ b/docs/mfc/types-of-image-lists.md @@ -3,10 +3,12 @@ description: "Learn more about: Types of Image Lists" title: "Types of Image Lists" ms.date: "11/04/2016" helpviewer_keywords: ["lists [MFC], image", "image lists [MFC], types of", "CImageList class [MFC], types"] -ms.assetid: bee5e7c3-78f5-4037-a136-9c50d67cdee5 --- # Types of Image Lists +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + There are two types of image lists ([CImageList](../mfc/reference/cimagelist-class.md)): nonmasked and masked. A "nonmasked image list" consists of a color bitmap that contains one or more images. A "masked image list" consists of two bitmaps of equal size. The first is a color bitmap that contains the images, and the second is a monochrome bitmap that contains a series of masks — one for each image in the first bitmap. One of the overloads of the `Create` member function takes a flag to indicate whether or not the image list is masked. (The other overloads create masked image lists.) diff --git a/docs/mfc/updating-the-text-of-a-status-bar-pane.md b/docs/mfc/updating-the-text-of-a-status-bar-pane.md index 1954167790e..e77e2921ab3 100644 --- a/docs/mfc/updating-the-text-of-a-status-bar-pane.md +++ b/docs/mfc/updating-the-text-of-a-status-bar-pane.md @@ -3,11 +3,13 @@ description: "Learn more about: Updating the Text of a Status-Bar Pane" title: "Updating the Text of a Status-Bar Pane" ms.date: "11/04/2016" helpviewer_keywords: ["updating user interface objects [MFC]", "ON_UPDATE_COMMAND_UI macro [MFC]", "user interface objects [MFC], updating", "text, status bar", "CStatusBar class [MFC], updating", "SetText method [MFC]", "panes, status bar", "status bars [MFC], updating"] -ms.assetid: 4984a3f4-9905-4d8c-a927-dca19781053b ms.topic: how-to --- # Updating the Text of a Status-Bar Pane +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how to change the text that appears in an MFC status bar pane. A status bar — a window object of class [CStatusBar](../mfc/reference/cstatusbar-class.md) — contains several "panes." Each pane is a rectangular area of the status bar that you can use to display information. For example, many applications display the status of the CAPS LOCK, NUM LOCK, and other keys in the rightmost panes. Applications also often display informative text in the leftmost pane (pane 0), sometimes called the "message pane." For example, the default MFC status bar uses the message pane to display a string explaining the currently selected menu item or toolbar button. The figure in [Status Bars](../mfc/status-bar-implementation-in-mfc.md) shows a status bar from an Application Wizard-created MFC application. By default, MFC does not enable a `CStatusBar` pane when it creates the pane. To activate a pane, you must use the ON_UPDATE_COMMAND_UI macro for each pane on the status bar and update the panes. Because panes do not send WM_COMMAND messages (they aren't like toolbar buttons), you must type the code manually. diff --git a/docs/mfc/upgrading-an-existing-activex-control.md b/docs/mfc/upgrading-an-existing-activex-control.md index a6038e41168..5af223c224e 100644 --- a/docs/mfc/upgrading-an-existing-activex-control.md +++ b/docs/mfc/upgrading-an-existing-activex-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Upgrading an Existing ActiveX Control" title: "Upgrading an Existing ActiveX Control" ms.date: 11/03/2021 helpviewer_keywords: ["ActiveX controls [MFC], Internet", "LPK files for Internet controls", "safe for scripting and initialization (controls)", "OLE controls [MFC], upgrading to ActiveX", "CAB files, for ActiveX controls", "Internet applications [MFC], ActiveX controls", "Internet applications [MFC], packaging code for download", "upgrading ActiveX controls", "licensing ActiveX controls"] -ms.assetid: 4d12ddfa-b491-4f9f-a0b7-b51458e05651 ms.topic: how-to --- # Upgrading an Existing ActiveX Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Existing ActiveX controls (formerly OLE controls) can be used on the Internet without modification. However, you may want to modify controls to improve their performance. > [!IMPORTANT] diff --git a/docs/mfc/user-defined-tools.md b/docs/mfc/user-defined-tools.md index 9f477181081..e29719954c4 100644 --- a/docs/mfc/user-defined-tools.md +++ b/docs/mfc/user-defined-tools.md @@ -3,10 +3,12 @@ description: "Learn more about: User-defined Tools" title: "User-defined Tools" ms.date: "11/19/2018" helpviewer_keywords: ["user-defined tools (MFC Extensions)"] -ms.assetid: cb887421-78ce-4652-bc67-96a53984ccaa --- # User-defined Tools +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC supports user-defined tools. A user-defined tool is a special command that executes an external, user-specified program. You can use the customization process to manage user-defined tools. However, you cannot use this process if your application object is not derived from [CWinAppEx Class](../mfc/reference/cwinappex-class.md). For more information about customization, see [Customization for MFC](../mfc/customization-for-mfc.md). If you enabled user-defined tools support, the customization dialog box automatically includes the **Tools** tab. The following illustration shows the **Tools** page. diff --git a/docs/mfc/user-interface-elements-mfc.md b/docs/mfc/user-interface-elements-mfc.md index a4c20c415e1..fb716052e9a 100644 --- a/docs/mfc/user-interface-elements-mfc.md +++ b/docs/mfc/user-interface-elements-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: User Interface Elements (MFC)" title: "User Interface Elements (MFC)" ms.date: "11/04/2016" helpviewer_keywords: ["MFC, user interface", "user interfaces, creating", "user interfaces"] -ms.assetid: f5daf2c1-bc08-4b71-9b03-da2c0aab5764 --- # User Interface Elements (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + For information about how to create the user interface for your application by using the Microsoft Foundation Class (MFC) Library, see the following topics. ## In This Section diff --git a/docs/mfc/user-interface-objects-and-command-ids.md b/docs/mfc/user-interface-objects-and-command-ids.md index 25183aea048..ec45364b2e3 100644 --- a/docs/mfc/user-interface-objects-and-command-ids.md +++ b/docs/mfc/user-interface-objects-and-command-ids.md @@ -3,10 +3,12 @@ description: "Learn more about: User-Interface Objects and Command IDs" title: "User-Interface Objects and Command IDs" ms.date: "11/19/2018" helpviewer_keywords: ["keyboard shortcuts, associating with IDs", "MFC, command routing", "toolbar controls [MFC], command ID", "menu items, associating with IDs", "user interface objects [MFC], associating with IDs", "command IDs, user interface objects", "command routing [MFC], MFC", "command handling [MFC], user-interface objects"] -ms.assetid: 4ea19e9b-ed1e-452e-bd33-7f509107a45b --- # User-Interface Objects and Command IDs +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Menu items, toolbar buttons, and accelerator keys are "user-interface objects" capable of generating commands. Each such user-interface object has an ID. You associate a user-interface object with a command by assigning the same ID to the object and the command. As explained in [Messages](../mfc/messages.md), commands are implemented as special messages. The figure "Commands in the Framework" below shows how the framework manages commands. When a user-interface object generates a command, such as `ID_EDIT_CLEAR_ALL`, one of the objects in your application handles the command — in the figure below, the document object's `OnEditClearAll` function is called via the document's message map. ![Commands in the Framework.](../mfc/media/vc385p1.gif "Commands in the Framework")
diff --git a/docs/mfc/using-a-common-control-as-a-child-window.md b/docs/mfc/using-a-common-control-as-a-child-window.md index a6bb23d0b33..8e0cd9bb980 100644 --- a/docs/mfc/using-a-common-control-as-a-child-window.md +++ b/docs/mfc/using-a-common-control-as-a-child-window.md @@ -3,11 +3,13 @@ description: "Learn more about: Using a Common Control as a Child Window" title: "Using a Common Control as a Child Window" ms.date: "11/04/2016" helpviewer_keywords: ["controls [MFC], using as child windows", "windows [MFC], common controls as", "child windows [MFC], common controls as", "common controls [MFC], child windows", "Windows common controls [MFC], child windows"] -ms.assetid: 608f7d47-7854-4fce-bde9-856c51e76753 ms.topic: how-to --- # Using a Common Control as a Child Window +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Any of the Windows common controls can be used as a child window of any other window. The following procedure describes how to create a common control dynamically and then work with it. ### To use a common control as a child window diff --git a/docs/mfc/using-a-dialog-bar-with-a-rebar-control.md b/docs/mfc/using-a-dialog-bar-with-a-rebar-control.md index 896a649cbc1..d96d2431b8b 100644 --- a/docs/mfc/using-a-dialog-bar-with-a-rebar-control.md +++ b/docs/mfc/using-a-dialog-bar-with-a-rebar-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Using a Dialog Bar with a Rebar Control" title: "Using a Dialog Bar with a Rebar Control" ms.date: "11/04/2016" helpviewer_keywords: ["WS_EX_TRANSPARENT style", "rebar controls [MFC], dialog bars", "dialog bars [MFC], using with rebar bands"] -ms.assetid: e528cea0-6b81-4bdf-9643-7c03b6176590 ms.topic: how-to --- # Using a Dialog Bar with a Rebar Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + As mentioned in [Rebar Controls and Bands](../mfc/rebar-controls-and-bands.md), each band can contain only one child window (or control). This might be a limitation if you want to have more than one child window per band. A convenient workaround is to create a dialog bar resource with multiple controls and then add a rebar band (containing the dialog bar) to the rebar control. Normally, if you wanted the dialog bar band to appear transparent, you would set the WS_EX_TRANSPARENT extended style for the dialog bar object. However, because WS_EX_TRANSPARENT has some issues with properly painting the background of a dialog bar, you will need to do a little extra work to achieve the desired effect. diff --git a/docs/mfc/using-a-dialog-template-in-memory.md b/docs/mfc/using-a-dialog-template-in-memory.md index 2ebc1096f2c..5be7e52e6a5 100644 --- a/docs/mfc/using-a-dialog-template-in-memory.md +++ b/docs/mfc/using-a-dialog-template-in-memory.md @@ -3,11 +3,13 @@ description: "Learn more about: Using a Dialog Template in Memory" title: "Using a Dialog Template in Memory" ms.date: "11/04/2016" helpviewer_keywords: ["templates [MFC], for dialog boxes", "dialog templates [MFC]", "dialog templates [MFC], in memory", "MFC dialog boxes [MFC], dialog templates"] -ms.assetid: edb443bb-e614-4f77-8a3b-74d93871e9bd ms.topic: concept-article --- # Using a Dialog Template in Memory +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Instead of using the methods given in the [Dialog Creation table](../mfc/creating-a-dialog-class-with-code-wizards.md), you can create either kind of dialog box indirectly from a dialog template in memory. For more information, see class [CDialog](../mfc/reference/cdialog-class.md) in the *MFC Reference*. ## See also diff --git a/docs/mfc/using-a-hot-key-control.md b/docs/mfc/using-a-hot-key-control.md index ca29fb0d076..2ecb69d51f2 100644 --- a/docs/mfc/using-a-hot-key-control.md +++ b/docs/mfc/using-a-hot-key-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Using a Hot Key Control" title: "Using a Hot Key Control" ms.date: "11/04/2016" helpviewer_keywords: ["CHotKeyCtrl class [MFC], using", "hot key controls"] -ms.assetid: cdd6524b-cc43-447f-b151-164273559685 ms.topic: concept-article --- # Using a Hot Key Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Typical usage of a hot key control follows the pattern below: - The control is created. If the control is specified in a dialog box template, creation is automatic when the dialog box is created. (You should have a [CHotKeyCtrl](../mfc/reference/chotkeyctrl-class.md) member in your dialog class that corresponds to the hot key control.) Alternatively, you can use the [Create](../mfc/reference/chotkeyctrl-class.md#create) member function to create the control as a child window of any window. diff --git a/docs/mfc/using-an-animation-control.md b/docs/mfc/using-an-animation-control.md index ceff13db018..39919ad405b 100644 --- a/docs/mfc/using-an-animation-control.md +++ b/docs/mfc/using-an-animation-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Using an Animation Control" title: "Using an Animation Control" ms.date: "11/04/2016" helpviewer_keywords: ["controls [MFC], animation", "CAnimateCtrl class [MFC], animation controls", "animation controls [MFC]"] -ms.assetid: a009a464-e12d-4112-bf52-04a09b28dd88 ms.topic: concept-article --- # Using an Animation Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Typical usage of an animation control follows the pattern below: - The control is created. If the control is specified in a dialog box template, creation is automatic when the dialog box is created. (You should have a [CAnimateCtrl](../mfc/reference/canimatectrl-class.md) member in your dialog class that corresponds to the animation control.) Alternatively, you can use the [Create](../mfc/reference/canimatectrl-class.md#create) member function to create the control as a child window of any window. diff --git a/docs/mfc/using-an-image-list-with-a-rebar-control.md b/docs/mfc/using-an-image-list-with-a-rebar-control.md index 4384b1557b7..9e60de4bb38 100644 --- a/docs/mfc/using-an-image-list-with-a-rebar-control.md +++ b/docs/mfc/using-an-image-list-with-a-rebar-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Using an Image List with a Rebar Control" title: "Using an Image List with a Rebar Control" ms.date: "11/04/2016" helpviewer_keywords: ["image lists [MFC], rebar controls", "rebar controls [MFC], image lists"] -ms.assetid: 1a5836ac-019a-46aa-8741-b35c3376b839 ms.topic: how-to --- # Using an Image List with a Rebar Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Each rebar band can contain, among other things, an image from an associated image list. The following procedure details the necessary steps for displaying an image in a rebar band. ### To display images in a rebar band diff --git a/docs/mfc/using-an-image-list.md b/docs/mfc/using-an-image-list.md index 7016e9dd277..5eac2d45cf2 100644 --- a/docs/mfc/using-an-image-list.md +++ b/docs/mfc/using-an-image-list.md @@ -3,11 +3,13 @@ description: "Learn more about: Using an Image List" title: "Using an Image List" ms.date: "11/04/2016" helpviewer_keywords: ["lists [MFC], image", "CImageList class [MFC], using", "image lists [MFC]"] -ms.assetid: e0aed188-a1e6-400e-9f51-033d61c5541f ms.topic: concept-article --- # Using an Image List +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Typical usage of an image list follows the pattern below: - Construct a [CImageList](../mfc/reference/cimagelist-class.md) object and call one of the overloads of its [Create](../mfc/reference/cimagelist-class.md#create) function to create an image list and attach it to the `CImageList` object. diff --git a/docs/mfc/using-an-unclipped-device-context.md b/docs/mfc/using-an-unclipped-device-context.md index 35bd4e6fa10..6e2d218703e 100644 --- a/docs/mfc/using-an-unclipped-device-context.md +++ b/docs/mfc/using-an-unclipped-device-context.md @@ -3,11 +3,13 @@ description: "Learn more about: Using an Unclipped Device Context" title: "Using an Unclipped Device Context" ms.date: "11/04/2016" helpviewer_keywords: ["MFC ActiveX controls [MFC], unclipped device context"] -ms.assetid: 9c020063-73da-4803-bf7b-2e1fd950c9ed ms.topic: concept-article --- # Using an Unclipped Device Context +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If you are absolutely certain that your control does not paint outside its client rectangle, you can realize a small but detectable speed gain by disabling the call to `IntersectClipRect` that is made by `COleControl`. To do this, remove the *clipPaintDC* flag from the set of flags returned by [COleControl::GetControlFlags](../mfc/reference/colecontrol-class.md#getcontrolflags). For example: [!code-cpp[NVC_MFC_AxOpt#5](../mfc/codesnippet/cpp/using-an-unclipped-device-context_1.cpp)] diff --git a/docs/mfc/using-callback-fields-in-a-date-and-time-picker-control.md b/docs/mfc/using-callback-fields-in-a-date-and-time-picker-control.md index 34e4486769c..bc01e6ebe10 100644 --- a/docs/mfc/using-callback-fields-in-a-date-and-time-picker-control.md +++ b/docs/mfc/using-callback-fields-in-a-date-and-time-picker-control.md @@ -4,11 +4,13 @@ title: "Using Callback Fields in a Date and Time Picker Control" ms.date: "11/04/2016" f1_keywords: ["DTN_FORMATQUERY", "DTN_FORMAT"] helpviewer_keywords: ["DateTimePicker control [MFC], callback fields", "callback fields in CDateTimeCtrl class [MFC]", "CDateTimeCtrl class [MFC], callback fields", "CDateTimeCtrl class [MFC], handling DTN_FORMAT and DTN_FORMATQ", "DTN_FORMATQUERY notification [MFC]", "DTN_FORMAT notification [MFC]", "DateTimePicker control [MFC]"] -ms.assetid: 404f4ba9-cba7-4718-9faa-bc6b274a723f ms.topic: concept-article --- # Using Callback Fields in a Date and Time Picker Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In addition to the standard format characters that define date and time picker fields, you can customize your output by specifying certain parts of a custom format string as callback fields. To declare a callback field, include one or more "X" characters (ASCII Code 88) anywhere in the body of the format string. For example, the following string "'Today is: 'yy'/'MM'/'dd' (Day 'X')'"causes the date and time picker control to display the current value as the year followed by the month, date, and finally the day of the year. > [!NOTE] diff --git a/docs/mfc/using-canimatectrl.md b/docs/mfc/using-canimatectrl.md index 76302558736..f22e7a7519b 100644 --- a/docs/mfc/using-canimatectrl.md +++ b/docs/mfc/using-canimatectrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CAnimateCtrl" title: "Using CAnimateCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["animation controls [MFC], CAnimateCtrl class", "controls [MFC], animation", "CAnimateCtrl class [MFC], about CAnimateCtrl class [MFC]"] -ms.assetid: 696c0805-bef0-4e2e-a9e7-b37b9215b7f0 ms.topic: concept-article --- # Using CAnimateCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An animation control, represented by the class [CAnimateCtrl](../mfc/reference/canimatectrl-class.md), is a window that displays a clip in Audio Video Interleaved (AVI) format — the standard Windows video/audio format. An AVI clip is a series of bitmap frames, like a movie. Since your thread continues executing while the AVI clip is displayed, one common use for an animation control is to indicate system activity during a lengthy operation. For example, the Windows Find dialog box displays a moving magnifying glass as the system searches for a file. diff --git a/docs/mfc/using-ccomboboxex.md b/docs/mfc/using-ccomboboxex.md index a9c9fca4d11..bed47613510 100644 --- a/docs/mfc/using-ccomboboxex.md +++ b/docs/mfc/using-ccomboboxex.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CComboBoxEx" title: "Using CComboBoxEx" ms.date: "11/04/2016" helpviewer_keywords: ["combo boxes [MFC], extended", "extended combo boxes [MFC], about extended combo boxes", "combo boxes [MFC], CComboBoxEx class", "CComboBox class [MFC], extended"] -ms.assetid: c23cbfe8-75d2-4f98-a753-c942416eda52 ms.topic: concept-article --- # Using CComboBoxEx +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The extended combo box control is an extension of the standard combo box control that provides native support for item images. These images can be used to indicate the status of individual items in the combo box, such as the currently selected and unselected items. To make item images easily accessible, the control provides image list support. Use this control to provide the functionality of a combo box without having to manually draw item graphics. diff --git a/docs/mfc/using-cdatetimectrl.md b/docs/mfc/using-cdatetimectrl.md index 2a67477916f..de67e342135 100644 --- a/docs/mfc/using-cdatetimectrl.md +++ b/docs/mfc/using-cdatetimectrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CDateTimeCtrl" title: "Using CDateTimeCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["DateTimePicker control [MFC], CDateTimeCtrl class"] -ms.assetid: cb2a8720-43f1-4c33-a3a4-def9a1622e00 ms.topic: concept-article --- # Using CDateTimeCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The date and time picker control ([CDateTimeCtrl](../mfc/reference/cdatetimectrl-class.md)) implements an intuitive and recognizable method of entering or selecting a specific date. The main interface of the control is similar in functionality to a combo box. However, if the user expands the control, a month calendar control appears (by default), allowing the user to specify a particular date. When a date is chosen, the month calendar control automatically disappears. > [!NOTE] diff --git a/docs/mfc/using-cheaderctrl.md b/docs/mfc/using-cheaderctrl.md index acc495d5aa1..f2b2ef3eb29 100644 --- a/docs/mfc/using-cheaderctrl.md +++ b/docs/mfc/using-cheaderctrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CHeaderCtrl" title: "Using CHeaderCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["header controls [MFC], using", "CHeaderCtrl class [MFC]"] -ms.assetid: fb3e512b-9539-43c4-a7e7-3fafd6d0706e ms.topic: concept-article --- # Using CHeaderCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Use a header control, represented by class [CHeaderCtrl](../mfc/reference/cheaderctrl-class.md), to display column headers for a columnar list. For example, a header control would be useful for implementing column controls in a spreadsheet. The header control is usually divided into parts, called "header items," each bearing a title for the associated column of text or numbers. Depending on the styles you set, you can provide a number of direct ways for users to manipulate the header items. diff --git a/docs/mfc/using-chotkeyctrl.md b/docs/mfc/using-chotkeyctrl.md index 2d7022a2830..f3f757de784 100644 --- a/docs/mfc/using-chotkeyctrl.md +++ b/docs/mfc/using-chotkeyctrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CHotKeyCtrl" title: "Using CHotKeyCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["keys, hot and CHotKeyCtrl", "CHotKeyCtrl class [MFC], using", "hot key controls"] -ms.assetid: 9b207117-d848-4224-8888-c3d197bb0c95 ms.topic: concept-article --- # Using CHotKeyCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A hot key control, represented by class [CHotKeyCtrl](../mfc/reference/chotkeyctrl-class.md), is a window that displays a text representation of the key combination the user types into it, such as CTRL+SHIFT+Q. It also maintains an internal representation of this key in the form of a virtual key code and a set of flags that represent the shift state. The hot key control does not actually set the hot key — doing that is up to your program. (For a list of standard virtual key codes, see Winuser.h.) Use a hot key control to get a user's input for which hot key to associate with a window or thread. Hot key controls are often used in dialog boxes, such as you might display when asking the user to assign a hot key. It is your program's responsibility to retrieve the values describing the hot key from the hot key control and to call the appropriate functions to associate the hot key with a window or thread. diff --git a/docs/mfc/using-cimagelist.md b/docs/mfc/using-cimagelist.md index 64daaad06c3..e9042469157 100644 --- a/docs/mfc/using-cimagelist.md +++ b/docs/mfc/using-cimagelist.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CImageList" title: "Using CImageList" ms.date: "11/04/2016" helpviewer_keywords: ["image list control", "CImageList class [MFC], using"] -ms.assetid: 3d2a909e-d641-46b7-aada-81cab1a29b41 ms.topic: concept-article --- # Using CImageList +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An image list, represented by class [CImageList](../mfc/reference/cimagelist-class.md), is a collection of same-sized images, each of which can be referred to by its index. Image lists are used to efficiently manage large sets of icons or bitmaps. Image lists are not themselves controls since they are not windows; however, they are used with several different types of controls, including list controls ([CListCtrl](../mfc/reference/clistctrl-class.md)), tree controls ([CTreeCtrl](../mfc/reference/ctreectrl-class.md)), and tab controls ([CTabCtrl](../mfc/reference/ctabctrl-class.md)). All images in an image list are contained in a single, wide bitmap in screen-device format. An image list may also include a monochrome bitmap that contains masks used to draw images transparently (icon style). `CImageList` provides member functions that enable you to draw images, create and destroy image lists, add and remove images, replace images, merge images, and drag images. diff --git a/docs/mfc/using-clistctrl.md b/docs/mfc/using-clistctrl.md index 9381c761991..afb3b2c7928 100644 --- a/docs/mfc/using-clistctrl.md +++ b/docs/mfc/using-clistctrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CListCtrl" title: "Using CListCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["CListCtrl class [MFC], using"] -ms.assetid: 20d6a5d6-8f07-4ddf-975f-ea2dfebcc835 ms.topic: concept-article --- # Using CListCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Use a list control to display any arrangement of icons with labels, as in File Explorer, or columnar lists of text, with or without icons. For a description of the four possible "views" (not to be confused with MFC views) you can have in a list control — icon view, small icon view, list view, and report view — see Views in the [CListCtrl](../mfc/reference/clistctrl-class.md) class overview. In some views, users can drag icons to different positions or edit icon labels. For example, see the right-hand pane in File Explorer, which uses a list control in a nondialog window. You can experiment with the available views in Explorer's View menu. diff --git a/docs/mfc/using-cmonthcalctrl.md b/docs/mfc/using-cmonthcalctrl.md index 270c33595c5..b61d0562f7e 100644 --- a/docs/mfc/using-cmonthcalctrl.md +++ b/docs/mfc/using-cmonthcalctrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CMonthCalCtrl" title: "Using CMonthCalCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["CMonthCalCtrl class [MFC], about CMonthCalCtrl class"] -ms.assetid: 2be0e8c2-ed03-4853-aea1-4461eba18611 ms.topic: concept-article --- # Using CMonthCalCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The month calendar control ([CMonthCalCtrl](../mfc/reference/cmonthcalctrl-class.md)) implements a calendar-like user interface. This provides the user with a very intuitive and recognizable method of entering or selecting a date. The control also provides the application with the means to obtain and set the date information in the control using existing data types. By default, the month calendar control displays the current day and month. However, the user is able to scroll to the previous and next months and select a specific month and/or year. > [!NOTE] diff --git a/docs/mfc/using-cobject.md b/docs/mfc/using-cobject.md index a528b36ec18..0b1071f2035 100644 --- a/docs/mfc/using-cobject.md +++ b/docs/mfc/using-cobject.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CObject" title: "Using CObject" ms.date: "11/04/2016" helpviewer_keywords: ["examples [MFC], CObject", "root base class for MFC", "derived classes [MFC], from CObject", "MFC, base class", "CObject class [MFC]"] -ms.assetid: d0cd19bb-2856-4b41-abbc-620fd64cb223 ms.topic: concept-article --- # Using CObject +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + [CObject](../mfc/reference/cobject-class.md) is the root base class for most of the Microsoft Foundation Class Library (MFC). The `CObject` class contains many useful features that you may want to incorporate into your own program objects, including serialization support, run-time class information, and object diagnostic output. If you derive your class from `CObject`, your class can exploit these `CObject` features. ## What do you want to do diff --git a/docs/mfc/using-common-controls-in-a-dialog-box.md b/docs/mfc/using-common-controls-in-a-dialog-box.md index d28c82e7536..e4d84c57642 100644 --- a/docs/mfc/using-common-controls-in-a-dialog-box.md +++ b/docs/mfc/using-common-controls-in-a-dialog-box.md @@ -3,11 +3,13 @@ description: "Learn more about: Using Common Controls in a Dialog Box" title: "Using Common Controls in a Dialog Box" ms.date: "11/04/2016" helpviewer_keywords: ["common controls [MFC], in dialog boxes", "dialog box controls [MFC], common controls", "Windows common controls [MFC], in dialog boxes"] -ms.assetid: 17713caf-09f8-484a-bf54-5f48bf09cce9 ms.topic: how-to --- # Using Common Controls in a Dialog Box +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Windows common controls can be used in [dialog boxes](../mfc/dialog-boxes.md), form views, record views, and any other window based on a dialog template. The following procedure, with minor changes, will work for forms as well. ## Procedures diff --git a/docs/mfc/using-cprogressctrl.md b/docs/mfc/using-cprogressctrl.md index 07121a9f076..db9747fac63 100644 --- a/docs/mfc/using-cprogressctrl.md +++ b/docs/mfc/using-cprogressctrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CProgressCtrl" title: "Using CProgressCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["progress controls [MFC]", "CProgressCtrl class [MFC], using", "progress controls [MFC], CProgressCtrl", "progress controls [MFC], using"] -ms.assetid: 61473270-196b-41ab-bf2b-467f46673539 ms.topic: concept-article --- # Using CProgressCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can use the progress control to indicate the progress of a lengthy operation. It is a rectangle that is gradually filled with the system highlight color as the operation progresses. The progress control is represented in MFC by class [CProgressCtrl](../mfc/reference/cprogressctrl-class.md). diff --git a/docs/mfc/using-crebarctrl.md b/docs/mfc/using-crebarctrl.md index ce1e299588f..4100cc50206 100644 --- a/docs/mfc/using-crebarctrl.md +++ b/docs/mfc/using-crebarctrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CReBarCtrl" title: "Using CReBarCtrl" ms.date: "11/19/2018" helpviewer_keywords: ["child windows [MFC], rebar controls", "combo boxes [MFC], in rebar controls", "rebar controls"] -ms.assetid: 2c0aeec2-ffc3-44b8-97b5-0f56e116a338 ms.topic: concept-article --- # Using CReBarCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A rebar control acts as a container for child windows. These child windows, often other controls, are assigned to a rebar control band. A rebar control can contain one or more bands, with each band having any combination of a gripper bar, a bitmap, a text label, and a child window. However, bands cannot contain more than one child window. The following illustration shows a rebar control that has two bands. One contains a gripper bar, a text label ("Address"), and a combo box child window. The other band contains a gripper bar, a text label, and a flat toolbar (implemented with a child window). diff --git a/docs/mfc/using-cricheditctrl.md b/docs/mfc/using-cricheditctrl.md index 1d96ea63105..e53c1400f84 100644 --- a/docs/mfc/using-cricheditctrl.md +++ b/docs/mfc/using-cricheditctrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CRichEditCtrl" title: "Using CRichEditCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["rich edit controls [MFC], using", "CRichEditCtrl class [MFC], using"] -ms.assetid: e400c6ed-563e-4d4c-ab3b-a3f0aa20273b ms.topic: concept-article --- # Using CRichEditCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A rich edit control is a window in which the user can enter and edit text. The text can be assigned character and paragraph formatting, and can include embedded OLE objects. The rich edit control is represented in MFC by the [CRichEditCtrl](../mfc/reference/cricheditctrl-class.md) class. ## What do you want to know more about diff --git a/docs/mfc/using-csliderctrl.md b/docs/mfc/using-csliderctrl.md index f4b91032146..0bcaefe6cb7 100644 --- a/docs/mfc/using-csliderctrl.md +++ b/docs/mfc/using-csliderctrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CSliderCtrl" title: "Using CSliderCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["CSliderCtrl class [MFC], using", "slider controls [MFC], using"] -ms.assetid: 242c7bcd-126e-4b9b-8f76-8082ad06fe73 ms.topic: concept-article --- # Using CSliderCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The [CSliderCtrl](../mfc/reference/csliderctrl-class.md) class represents a slider control, which is also called a trackbar. A "slider control" is a window that contains a slider and optional tick marks. When the user moves the slider, using either the mouse or the arrow keys, the slider control sends notification messages to indicate the change. Slider controls are useful when you want the user to select a discrete value or a set of consecutive values in a range. For example, you might use a slider control to allow the user to set the repeat rate of the keyboard by moving the slider to a given tick mark. diff --git a/docs/mfc/using-cspinbuttonctrl.md b/docs/mfc/using-cspinbuttonctrl.md index 9a28599d04b..a34cbab66da 100644 --- a/docs/mfc/using-cspinbuttonctrl.md +++ b/docs/mfc/using-cspinbuttonctrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CSpinButtonCtrl" title: "Using CSpinButtonCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["up-down controls [MFC], spin button control", "up-down controls", "spin button control", "CSpinButtonCtrl class [MFC], using"] -ms.assetid: a91db36b-e11e-42ef-8e89-51915cc486d2 ms.topic: concept-article --- # Using CSpinButtonCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The *spin button* control (also known as an *up-down* control) provides a pair of arrows that a user can click to adjust a value. This value is known as the *current position*. The position stays within the range of the spin button. When the user clicks the up arrow, the position moves toward the maximum; and when the user clicks the down arrow, the position moves toward the minimum. The spin button control is represented in MFC by the [CSpinButtonCtrl](../mfc/reference/cspinbuttonctrl-class.md) class. diff --git a/docs/mfc/using-cstatusbarctrl-to-create-a-cstatusbarctrl-object.md b/docs/mfc/using-cstatusbarctrl-to-create-a-cstatusbarctrl-object.md index daf703d6076..e1a227e63c5 100644 --- a/docs/mfc/using-cstatusbarctrl-to-create-a-cstatusbarctrl-object.md +++ b/docs/mfc/using-cstatusbarctrl-to-create-a-cstatusbarctrl-object.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CStatusBarCtrl to Create a CStatusBarCtrl title: "Using CStatusBarCtrl to Create a CStatusBarCtrl Object" ms.date: "11/04/2016" helpviewer_keywords: ["status bar controls [MFC], creating", "CStatusBarCtrl class [MFC], creating"] -ms.assetid: 365c2b65-12de-49e6-9a2e-416c6ee10d60 ms.topic: how-to --- # Using CStatusBarCtrl to Create a CStatusBarCtrl Object +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Here is an example of a typical use of [CStatusBarCtrl](../mfc/reference/cstatusbarctrl-class.md): ### To use a status bar control with parts diff --git a/docs/mfc/using-cstatusbarctrl.md b/docs/mfc/using-cstatusbarctrl.md index 9cb57d6094d..3f547a0312b 100644 --- a/docs/mfc/using-cstatusbarctrl.md +++ b/docs/mfc/using-cstatusbarctrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CStatusBarCtrl" title: "Using CStatusBarCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["CStatusBarCtrl class [MFC], using", "status bar controls [MFC], about status bar controls"] -ms.assetid: 08b39f83-580d-439a-b93e-7ef9e2a5702a ms.topic: concept-article --- # Using CStatusBarCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can use the status bar control ([CStatusBarCtrl](../mfc/reference/cstatusbarctrl-class.md)) to create a control window that reflects various kinds of status information about the application. The status window can be divided into parts that display more than one type of information. ## What do you want to know more about diff --git a/docs/mfc/using-ctabctrl.md b/docs/mfc/using-ctabctrl.md index 6d93b0163f0..ce3200242ed 100644 --- a/docs/mfc/using-ctabctrl.md +++ b/docs/mfc/using-ctabctrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CTabCtrl" title: "Using CTabCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["CTabCtrl class [MFC], using", "tab controls [MFC], using"] -ms.assetid: 6bda6798-0085-4c09-a5ea-fe0e97af5c95 ms.topic: concept-article --- # Using CTabCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A "tab control" is analogous to the dividers in a notebook or the labeled folders in a file cabinet. Use the tab control, represented by class [CTabCtrl](../mfc/reference/ctabctrl-class.md), to show multiple pages of information or controls to a user, one at a time, in a format that suggests a peer or logical relationship between each page. For more information on tab controls, see [Tab Controls](/windows/win32/Controls/tab-controls) in the Windows SDK. diff --git a/docs/mfc/using-ctoolbarctrl.md b/docs/mfc/using-ctoolbarctrl.md index 51e7fb244bb..0322ea45f27 100644 --- a/docs/mfc/using-ctoolbarctrl.md +++ b/docs/mfc/using-ctoolbarctrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CToolBarCtrl" title: "Using CToolBarCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["CToolBarCtrl class [MFC]", "toolbar controls [MFC], creating"] -ms.assetid: 13cf3753-135b-4a3e-a850-ed30177fcf9d ms.topic: concept-article --- # Using CToolBarCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can use the toolbar control ([CToolBarCtrl](../mfc/reference/ctoolbarctrl-class.md)) to create a control window containing buttons and optional spaces. Each button in the toolbar control window sends a command message to the parent window as the user chooses it. Typically, the buttons in a toolbar correspond to items in the application's menu, providing an additional and more direct way for the user to access an application's commands. ## What do you want to know more about diff --git a/docs/mfc/using-ctooltipctrl-to-create-and-manipulate-a-ctooltipctrl-object.md b/docs/mfc/using-ctooltipctrl-to-create-and-manipulate-a-ctooltipctrl-object.md index 8bb04ae8078..8dc58397f7d 100644 --- a/docs/mfc/using-ctooltipctrl-to-create-and-manipulate-a-ctooltipctrl-object.md +++ b/docs/mfc/using-ctooltipctrl-to-create-and-manipulate-a-ctooltipctrl-object.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CToolTipCtrl to Create and Manipulate a CT title: "Using CToolTipCtrl to Create and Manipulate a CToolTipCtrl Object" ms.date: "11/04/2016" helpviewer_keywords: ["tool tips [MFC], creating", "CToolTipCtrl class [MFC], using"] -ms.assetid: 0a34583f-f66d-46a1-a239-31b80ea395ad ms.topic: how-to --- # Using CToolTipCtrl to Create and Manipulate a CToolTipCtrl Object +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Here is an example of [CToolTipCtrl](../mfc/reference/ctooltipctrl-class.md) usage: ### To create and manipulate a CToolTipCtrl diff --git a/docs/mfc/using-ctooltipctrl.md b/docs/mfc/using-ctooltipctrl.md index 88c9dd0e09b..bacc499c4bd 100644 --- a/docs/mfc/using-ctooltipctrl.md +++ b/docs/mfc/using-ctooltipctrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CToolTipCtrl" title: "Using CToolTipCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["CToolTipCtrl class [MFC], creating tool tips", "CToolTipCtrl class"] -ms.assetid: 8fc58a04-4792-4223-a092-d349d11344da ms.topic: concept-article --- # Using CToolTipCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The [CToolTipCtrl](../mfc/reference/ctooltipctrl-class.md) class encapsulates the functionality of a tool tip control, a small pop-up window that displays a single line of text describing the purpose of a tool in an application. A tool tip is hidden most of the time, appearing only when the user puts the cursor on a tool and leaves it there for approximately one-half second. The tool tip appears near the cursor and disappears when the user clicks a mouse button or moves the cursor off of the tool. ## What do you want to know more about diff --git a/docs/mfc/using-ctreectrl.md b/docs/mfc/using-ctreectrl.md index 18651d78c16..8d379b429ba 100644 --- a/docs/mfc/using-ctreectrl.md +++ b/docs/mfc/using-ctreectrl.md @@ -3,11 +3,13 @@ description: "Learn more about: Using CTreeCtrl" title: "Using CTreeCtrl" ms.date: "11/04/2016" helpviewer_keywords: ["CTreeCtrl class [MFC], about CTreeCtrl", "tree controls [MFC], using"] -ms.assetid: 6a262f2c-3540-43e5-b03f-e4b6f9cb0325 ms.topic: concept-article --- # Using CTreeCtrl +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A tree control, represented by the class [CTreeCtrl](../mfc/reference/ctreectrl-class.md), is a window that displays a hierarchical list of items, such as the headings in a document, the entries in an index, or the files and directories on a disk. Each item consists of a label and an optional bitmapped image, and each item can have a list of subitems associated with it. By clicking an item, the user can expand and collapse the associated list of subitems. The directory tree in the left-hand pane of File Explorer is an example of a tree control. ## What do you want to know more about diff --git a/docs/mfc/using-custom-format-strings-in-a-date-and-time-picker-control.md b/docs/mfc/using-custom-format-strings-in-a-date-and-time-picker-control.md index 0137fffce30..1c22a9078aa 100644 --- a/docs/mfc/using-custom-format-strings-in-a-date-and-time-picker-control.md +++ b/docs/mfc/using-custom-format-strings-in-a-date-and-time-picker-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Using Custom Format Strings in a Date and Time P title: "Using Custom Format Strings in a Date and Time Picker Control" ms.date: "11/04/2016" helpviewer_keywords: ["CDateTimeCtrl class [MFC], display styles", "DateTimePicker control [MFC], display styles", "DateTimePicker control [MFC]"] -ms.assetid: 7d577f03-6ca0-4597-9093-50b78f304719 ms.topic: concept-article --- # Using Custom Format Strings in a Date and Time Picker Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + By default, date and time picker controls provide three format types (each format corresponding to a unique style) for displaying the current date or time: - **DTS_LONGDATEFORMAT** Displays the date in long format, producing output like "Wednesday, January 3, 2000". diff --git a/docs/mfc/using-documents.md b/docs/mfc/using-documents.md index 73f97283a24..f975b3b9f94 100644 --- a/docs/mfc/using-documents.md +++ b/docs/mfc/using-documents.md @@ -3,11 +3,13 @@ description: "Learn more about: Using Documents" title: "Using Documents" ms.date: "11/04/2016" helpviewer_keywords: ["documents [MFC], C++ applications", "data [MFC], reading", "documents [MFC]", "files [MFC], writing to", "data [MFC], documents", "files [MFC]", "views [MFC], C++ applications", "document/view architecture [MFC], documents", "reading data [MFC], documents and views", "printing [MFC], documents", "writing to files [MFC]"] -ms.assetid: f390d6d8-d0e1-4497-9b6a-435f7ce0776c ms.topic: concept-article --- # Using Documents +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Working together, documents and views: - Contain, manage, and display your application-specific [data](../mfc/managing-data-with-document-data-variables.md). diff --git a/docs/mfc/using-drop-down-buttons-in-a-toolbar-control.md b/docs/mfc/using-drop-down-buttons-in-a-toolbar-control.md index 86403dd5c23..10ebb0f4aa4 100644 --- a/docs/mfc/using-drop-down-buttons-in-a-toolbar-control.md +++ b/docs/mfc/using-drop-down-buttons-in-a-toolbar-control.md @@ -4,11 +4,13 @@ title: "Using Drop-Down Buttons in a Toolbar Control" ms.date: "11/04/2016" f1_keywords: ["TBN_DROPDOWN", "TBSTYLE_EX_DRAWDDARROWS"] helpviewer_keywords: ["CToolBarCtrl class [MFC], drop-down buttons", "toolbars [MFC], drop-down buttons", "drop-down buttons in toolbars", "TBSTYLE_EX_DRAWDDARROWS", "TBN_DROPDOWN notification [MFC]"] -ms.assetid: b859f758-d2f6-40d9-9c26-0ff61993b9b2 ms.topic: how-to --- # Using Drop-Down Buttons in a Toolbar Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In addition to standard push buttons, a toolbar can also have drop-down buttons. A drop-down button is usually indicated by the presence of an attached down arrow. > [!NOTE] diff --git a/docs/mfc/using-frame-windows.md b/docs/mfc/using-frame-windows.md index 39440816e66..dc593d3783f 100644 --- a/docs/mfc/using-frame-windows.md +++ b/docs/mfc/using-frame-windows.md @@ -3,11 +3,13 @@ description: "Learn more about: Using Frame Windows" title: "Using Frame Windows" ms.date: "11/04/2016" helpviewer_keywords: ["windows [MFC], frame windows", "frame windows [MFC], using", "MFC, frame windows"] -ms.assetid: 4d773238-11f6-4ccf-8114-57310c5aaa2d ms.topic: concept-article --- # Using Frame Windows +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The MFC framework creates document frame windows — and their views and documents — as part of its implementation of the New and Open commands on the File menu. Because the framework does most of the frame-window work for you, you play only a small role in creating, using, and destroying those windows. You can, however, explicitly create your own frame windows and child windows for special purposes. ## What do you want to know more about diff --git a/docs/mfc/using-image-lists-in-a-toolbar-control.md b/docs/mfc/using-image-lists-in-a-toolbar-control.md index 5b280fa57e3..c8dd09a333f 100644 --- a/docs/mfc/using-image-lists-in-a-toolbar-control.md +++ b/docs/mfc/using-image-lists-in-a-toolbar-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Using Image Lists in a Toolbar Control" title: "Using Image Lists in a Toolbar Control" ms.date: "11/04/2016" helpviewer_keywords: ["toolbar controls [MFC], image", "image lists [MFC], toolbar controls", "CToolBarCtrl class [MFC], image lists"] -ms.assetid: ccbe8df4-4ed9-4b54-bb93-9a1dcb3b97eb ms.topic: concept-article --- # Using Image Lists in a Toolbar Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + By default, the images used by the buttons in a toolbar control are stored as a single bitmap. However, you can also store button images in a set of image lists. The toolbar control object can use up to three separate image lists: - Enabled image list Contains images for toolbar buttons that are currently enabled. diff --git a/docs/mfc/using-image-lists-in-an-extended-combo-box-control.md b/docs/mfc/using-image-lists-in-an-extended-combo-box-control.md index 4060970825c..4c3c8a928e5 100644 --- a/docs/mfc/using-image-lists-in-an-extended-combo-box-control.md +++ b/docs/mfc/using-image-lists-in-an-extended-combo-box-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Using Image Lists in an Extended Combo Box Contr title: "Using Image Lists in an Extended Combo Box Control" ms.date: "11/04/2016" helpviewer_keywords: ["image lists [MFC], combo boxes", "extended combo boxes [MFC], images", "images [MFC], combo box items"] -ms.assetid: dfff25fe-af70-47a2-8032-3901d1e6842d ms.topic: how-to --- # Using Image Lists in an Extended Combo Box Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The main feature of extended combo box controls is the ability to associate images from an image list with individual items in a combo box control. Each item is able to display three different images: one for its selected state, one for its nonselected state, and a third for an overlay image. The following procedure associates an image list with an extended combo box control: diff --git a/docs/mfc/using-image-lists-with-header-controls.md b/docs/mfc/using-image-lists-with-header-controls.md index 830297f5a5f..76ea9410dc0 100644 --- a/docs/mfc/using-image-lists-with-header-controls.md +++ b/docs/mfc/using-image-lists-with-header-controls.md @@ -3,11 +3,13 @@ description: "Learn more about: Using Image Lists with Header Controls" title: "Using Image Lists with Header Controls" ms.date: "11/04/2016" helpviewer_keywords: ["header controls [MFC], image lists", "CHeaderCtrl class [MFC], image lists", "image lists [MFC], header controls"] -ms.assetid: d5e9b310-6278-406c-909c-eefa09549a47 ms.topic: how-to --- # Using Image Lists with Header Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Header items have the ability to display an image within a header item. This image, stored in an associated image list, is 16 x 16 pixels and has the same characteristics as the icon images used in a list view control. In order to implement this behavior successfully, you must first create and initialize the image list, associate the list with the header control, and then modify the attributes of the header item that will display the image. The following procedure illustrates the details, using a pointer to a header control (`m_pHdrCtrl`) and a pointer to an image list (`m_pHdrImages`). diff --git a/docs/mfc/using-property-sheets-in-your-application.md b/docs/mfc/using-property-sheets-in-your-application.md index e3dc0d6e6b8..dd89bad3850 100644 --- a/docs/mfc/using-property-sheets-in-your-application.md +++ b/docs/mfc/using-property-sheets-in-your-application.md @@ -3,11 +3,13 @@ description: "Learn more about: Using Property Sheets in Your Application" title: "Using Property Sheets in Your Application" ms.date: "11/04/2016" helpviewer_keywords: ["dialog templates [MFC], property sheets", "dialog resources", "property pages [MFC], property sheets", "DoModal method property sheets", "AddPage method [MFC]", "property sheets, about property sheets", "Create method [MFC], property sheets", "CPropertyPage class [MFC], styles"] -ms.assetid: 240654d4-152b-4e3f-af7b-44234339206e ms.topic: how-to --- # Using Property Sheets in Your Application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To use a property sheet in your application, complete the following steps: 1. Create a dialog template resource for each property page. Keep in mind that the user may be switching from one page to another, so lay out each page as consistently as possible. diff --git a/docs/mfc/using-slider-controls.md b/docs/mfc/using-slider-controls.md index 2c970e4c5b0..52555ecbd5d 100644 --- a/docs/mfc/using-slider-controls.md +++ b/docs/mfc/using-slider-controls.md @@ -3,11 +3,13 @@ description: "Learn more about: Using Slider Controls" title: "Using Slider Controls" ms.date: "11/04/2016" helpviewer_keywords: ["CSliderCtrl class [MFC], using", "slider controls", "slider controls [MFC], using"] -ms.assetid: 2b1a8ac8-2b17-41e1-aa24-83c1fd737049 ms.topic: concept-article --- # Using Slider Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Typical usage of an slider control follows the pattern below: - The control is created. If the control is specified in a dialog box template, creation is automatic when the dialog box is created. (You should have a [CSliderCtrl](../mfc/reference/csliderctrl-class.md) member in your dialog class that corresponds to the slider control.) Alternatively, you can use the [Create](../mfc/reference/csliderctrl-class.md#create) member function to create the control as a child window of any window. diff --git a/docs/mfc/using-the-carchive-output-and-input-operators.md b/docs/mfc/using-the-carchive-output-and-input-operators.md index 533547cef5d..1f57ddc404c 100644 --- a/docs/mfc/using-the-carchive-output-and-input-operators.md +++ b/docs/mfc/using-the-carchive-output-and-input-operators.md @@ -3,11 +3,13 @@ description: "Learn more about: Using the CArchive << and >> Operators" title: "Using the CArchive << and >> Operators" ms.date: "11/04/2016" helpviewer_keywords: ["objects [MFC], loading from previously stored values", "CArchive class [MFC], storing and loading objects", "CArchive class [MFC], operators"] -ms.assetid: 56aef326-02dc-4992-8282-f0a4b78a064e ms.topic: how-to --- # Using the CArchive `<<` and `>>` Operators +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + `CArchive` provides <\< and >> operators for writing and reading simple data types as well as `CObject`s to and from a file. #### To store an object in a file via an archive diff --git a/docs/mfc/using-the-classes-to-write-applications-for-windows.md b/docs/mfc/using-the-classes-to-write-applications-for-windows.md index 26a4f9ebf3c..27b9d14cf40 100644 --- a/docs/mfc/using-the-classes-to-write-applications-for-windows.md +++ b/docs/mfc/using-the-classes-to-write-applications-for-windows.md @@ -3,11 +3,13 @@ description: "Learn more about: Using the Classes to Write Applications for Wind title: "Using the Classes to Write Applications for Windows" ms.date: "11/04/2016" helpviewer_keywords: ["Windows applications [MFC], MFC application framework", "MFC, application development", "applications [OLE], MFC application framework", "MFC ActiveX controls [MFC], creating", "OLE applications [MFC], MFC application framework", "database applications [MFC], creating"] -ms.assetid: 73f63470-857d-43dd-9a54-b38b7be0f1b7 ms.topic: concept-article --- # Using the Classes to Write Applications for Windows +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Taken together, the classes in the Microsoft Foundation Class (MFC) Library make up an "application framework," on which you build an application for the Windows operating system. At a very general level, the framework defines the skeleton of an application and supplies standard user-interface implementations that can be placed onto the skeleton. Your job as programmer is to fill in the rest of the skeleton, which are those things that are specific to your application. You can get a head start by using the MFC Application Wizard to create the files for a very thorough starter application. You use the Visual Studio resource editors to design your user-interface elements visually, Class View commands to connect those elements to code, and the class library to implement your application-specific logic. Version 3.0 and later of the MFC framework supports programming for Win32 platforms, including Microsoft Windows 95 and later, and Windows NT versions 3.51 and later. MFC Win32 support includes multithreading. Use version 1.5*x* if you need to do 16-bit programming. diff --git a/docs/mfc/using-the-dialog-editor-to-add-controls.md b/docs/mfc/using-the-dialog-editor-to-add-controls.md index c5912c87f60..713ea777a5d 100644 --- a/docs/mfc/using-the-dialog-editor-to-add-controls.md +++ b/docs/mfc/using-the-dialog-editor-to-add-controls.md @@ -3,11 +3,13 @@ description: "Learn more about: Using the Dialog Editor to Add Controls" title: "Using the Dialog Editor to Add Controls" ms.date: "11/04/2016" helpviewer_keywords: ["Windows common controls [MFC], adding", "dialog box controls [MFC], adding to dialog boxes", "controls [MFC], adding to dialog boxes", "Dialog editor, creating controls", "common controls [MFC], adding"] -ms.assetid: d3f9f994-7e54-4656-a545-42c204557c36 ms.topic: concept-article --- # Using the Dialog Editor to Add Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When you create your dialog-template resource with the [dialog editor](../windows/dialog-editor.md), you drag controls from a controls palette and drop them into the dialog box. This adds the specifications for that control type to the dialog-template resource. When you construct a dialog object and call its `Create` or `DoModal` member function, the framework creates a Windows control and places it in the dialog window on screen. You can instead [create controls by hand](../mfc/adding-controls-by-hand.md) if you want. This is more work. diff --git a/docs/mfc/using-the-mfc-source-files.md b/docs/mfc/using-the-mfc-source-files.md index 10c7f2d0fcc..ab89891084c 100644 --- a/docs/mfc/using-the-mfc-source-files.md +++ b/docs/mfc/using-the-mfc-source-files.md @@ -3,11 +3,13 @@ description: "Learn more about: Using the MFC source files" title: "Using the MFC source files" ms.date: "08/19/2019" helpviewer_keywords: ["public members", "source files", "MFC, source files", "MFC source files", "comments, MFC", "private member access", "protected member access", "source files, MFC"] -ms.assetid: 3230e8fb-3b69-4ddf-9538-365ac7ea5e72 ms.topic: concept-article --- # Using the MFC source files +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Class (MFC) Library supplies full source code. Header files (.h) are in the *\atlmfc\include* directory. Implementation files (.cpp) are in the *\atlmfc\src\mfc* directory. This article explains the conventions that MFC uses to comment the various parts of each class, what these comments mean, and what you should expect to find in each section. The Visual Studio wizards use similar conventions for the classes that they create for you, and you'll probably find these conventions useful for your own code. diff --git a/docs/mfc/using-tooltips-in-a-cstatusbarctrl-object.md b/docs/mfc/using-tooltips-in-a-cstatusbarctrl-object.md index 2573a72f55c..acc70168491 100644 --- a/docs/mfc/using-tooltips-in-a-cstatusbarctrl-object.md +++ b/docs/mfc/using-tooltips-in-a-cstatusbarctrl-object.md @@ -3,11 +3,13 @@ description: "Learn more about: Using Tooltips in a CStatusBarCtrl Object" title: "Using Tooltips in a CStatusBarCtrl Object" ms.date: "11/04/2016" helpviewer_keywords: ["tool tips [MFC], using in status bars", "status bars [MFC], tool tips", "CStatusBarCtrl class [MFC], tool tips"] -ms.assetid: a77597a7-43ef-4b8f-87bc-a8ea1dc63dc3 ms.topic: how-to --- # Using Tooltips in a CStatusBarCtrl Object +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To enable tooltips for a status bar control, create the `CStatusBarCtrl` object with the SBT_TOOLTIPS style. > [!NOTE] diff --git a/docs/mfc/using-tree-controls.md b/docs/mfc/using-tree-controls.md index 9130eb9f032..e444398c798 100644 --- a/docs/mfc/using-tree-controls.md +++ b/docs/mfc/using-tree-controls.md @@ -3,11 +3,13 @@ description: "Learn more about: Using Tree Controls" title: "Using Tree Controls" ms.date: "11/04/2016" helpviewer_keywords: ["CTreeCtrl class [MFC], using", "tree controls [MFC], about tree controls"] -ms.assetid: 4e92941a-e477-4fb1-b1ce-4abeafbef1c1 ms.topic: concept-article --- # Using Tree Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Typical usage of a tree control ([CTreeCtrl](../mfc/reference/ctreectrl-class.md)) follows the pattern below: - The control is created. If the control is specified in a dialog box template or if you're using `CTreeView`, creation is automatic when the dialog box or view is created. If you want to create the tree control as a child window of some other window, use the [Create](../mfc/reference/ctreectrl-class.md#create) member function. diff --git a/docs/mfc/using-views.md b/docs/mfc/using-views.md index 2a3ce75afca..e83e30e8e11 100644 --- a/docs/mfc/using-views.md +++ b/docs/mfc/using-views.md @@ -3,11 +3,13 @@ description: "Learn more about: Using Views" title: "Using Views" ms.date: "11/04/2016" helpviewer_keywords: ["interacting with users and role of view class [MFC]", "drawing [MFC], data", "rendering data", "view classes [MFC], role in managing user interaction", "CView class [MFC], view architecture", "MFC, views", "views [MFC], using", "painting data", "user input [MFC], interpreting through view class [MFC]", "view classes [MFC], role in displaying application data"] -ms.assetid: dc3de6ad-5c64-4317-8f10-8bdcc38cdbd5 ms.topic: concept-article --- # Using Views +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The view's responsibilities are to display the document's data graphically to the user and to accept and interpret user input as operations on the document. Your tasks in writing your view class are to: - Write your view class's [OnDraw](../mfc/reference/cview-class.md#ondraw) member function, which renders the document's data. From 4536d5bfdc429ec0a35976b0876d95ce1a23ca1f Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Tue, 24 Feb 2026 12:07:42 -0800 Subject: [PATCH 329/619] Batch 13: update files (#6267) --- docs/mfc/using-your-old-toolbars.md | 4 +++- docs/mfc/view-classes-architecture.md | 4 +++- docs/mfc/view-classes-windows.md | 4 +++- docs/mfc/virtual-list-controls.md | 4 +++- docs/mfc/visualization-manager.md | 4 +++- .../mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md | 3 +++ docs/mfc/walkthrough-adding-a-d2d-object-to-an-mfc-project.md | 4 +++- docs/mfc/walkthrough-adding-animation-to-an-mfc-project.md | 4 +++- .../walkthrough-creating-a-ribbon-application-by-using-mfc.md | 4 +++- docs/mfc/walkthrough-putting-controls-on-toolbars.md | 3 +++ ...alkthrough-updating-the-mfc-scribble-application-part-1.md | 4 +++- ...alkthrough-updating-the-mfc-scribble-application-part-2.md | 4 +++- docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md | 4 +++- docs/mfc/walkthroughs-mfc.md | 4 +++- .../what-does-it-cost-me-to-derive-a-class-from-cobject-q.md | 4 +++- docs/mfc/what-frame-windows-do.md | 4 +++- docs/mfc/what-is-a-carchive-object.md | 4 +++- docs/mfc/when-to-initialize-cwnd-objects.md | 4 +++- docs/mfc/when-update-handlers-are-called.md | 4 +++- docs/mfc/where-to-find-message-maps.md | 4 +++- docs/mfc/win32-internet-classes.md | 4 +++- docs/mfc/win32-internet-extensions-wininet.md | 4 +++- docs/mfc/window-destruction-sequence.md | 4 +++- docs/mfc/window-dialog-and-control-classes.md | 4 +++- docs/mfc/window-objects.md | 4 +++- docs/mfc/window-procedure-entry-points.md | 4 +++- docs/mfc/windows-sockets-background.md | 4 +++- docs/mfc/windows-sockets-blocking.md | 4 +++- docs/mfc/windows-sockets-byte-ordering.md | 4 +++- docs/mfc/windows-sockets-classes.md | 4 +++- docs/mfc/windows-sockets-converting-strings.md | 4 +++- docs/mfc/windows-sockets-datagram-sockets.md | 4 +++- docs/mfc/windows-sockets-deriving-from-socket-classes.md | 4 +++- docs/mfc/windows-sockets-example-of-sockets-using-archives.md | 3 +++ docs/mfc/windows-sockets-how-sockets-with-archives-work.md | 4 +++- docs/mfc/windows-sockets-in-mfc.md | 4 +++- docs/mfc/windows-sockets-ports-and-socket-addresses.md | 4 +++- docs/mfc/windows-sockets-sequence-of-operations.md | 4 +++- docs/mfc/windows-sockets-socket-notifications.md | 4 +++- docs/mfc/windows-sockets-stream-sockets.md | 4 +++- docs/mfc/windows-sockets-using-class-casyncsocket.md | 3 +++ docs/mfc/windows-sockets-using-sockets-with-archives.md | 4 +++- docs/mfc/windows-sockets.md | 4 +++- docs/mfc/windows.md | 4 +++- docs/mfc/wininet-basics.md | 4 +++- docs/mfc/wizards-and-the-resource-editors.md | 4 +++- docs/mfc/word-breaks-in-rich-edit-controls.md | 4 +++- docs/mfc/working-with-a-header-control.md | 4 +++- docs/mfc/working-with-a-tab-control.md | 4 +++- docs/mfc/working-with-the-toolbar-control.md | 4 +++- docs/mfc/working-with-window-objects.md | 4 +++- ...n-internet-client-application-using-mfc-wininet-classes.md | 4 +++- docs/mfc/writing-mfc-applications.md | 4 +++- docs/parallel/multithreading-with-cpp-and-mfc.md | 4 +++- 54 files changed, 162 insertions(+), 50 deletions(-) diff --git a/docs/mfc/using-your-old-toolbars.md b/docs/mfc/using-your-old-toolbars.md index 36e8fd1616e..8433410e874 100644 --- a/docs/mfc/using-your-old-toolbars.md +++ b/docs/mfc/using-your-old-toolbars.md @@ -4,11 +4,13 @@ title: "Using Your Old Toolbars" ms.date: "11/04/2016" f1_keywords: ["COldToolBar"] helpviewer_keywords: ["toolbars [MFC], backward compatibility", "COldToolBar class [MFC]"] -ms.assetid: 3543257c-8547-43f0-a66a-ee641dc1cf89 ms.topic: concept-article --- # Using Your Old Toolbars +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + If you have used previous versions of Visual Studio to create customized toolbars, the new implementation of class [CToolBar](../mfc/reference/ctoolbar-class.md) could cause you problems. So that you don't have to give up your old toolbars to use the new functionality, the old implementation is still supported. The DOCKTOOL sample does not use the old-style toolbars, only the new-style toolbars. diff --git a/docs/mfc/view-classes-architecture.md b/docs/mfc/view-classes-architecture.md index b49cc3c4ec7..3e5e53eedb3 100644 --- a/docs/mfc/view-classes-architecture.md +++ b/docs/mfc/view-classes-architecture.md @@ -3,10 +3,12 @@ description: "Learn more about: View Classes (Architecture)" title: "View Classes (Architecture)" ms.date: "09/17/2019" helpviewer_keywords: ["form and record views [MFC]", "view classes [MFC]", "control views [MFC]", "view classes [MFC], architecture"] -ms.assetid: 8894579a-1436-441e-b985-83711061e495 --- # View Classes (Architecture) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + `CView` and its derived classes are child windows that represent the client area of a frame window. Views show data and accept input for a document. A view class is associated with a document class and a frame window class using a document-template object. diff --git a/docs/mfc/view-classes-windows.md b/docs/mfc/view-classes-windows.md index 763e0ca629a..ebd9220138c 100644 --- a/docs/mfc/view-classes-windows.md +++ b/docs/mfc/view-classes-windows.md @@ -4,10 +4,12 @@ title: "View Classes (Windows)" ms.date: "09/17/2019" f1_keywords: ["vc.classes.view"] helpviewer_keywords: ["form and record views [MFC]", "splitter window classes [MFC]", "view classes [MFC], Windows"] -ms.assetid: b11683fb-9f43-4de3-9499-2b55775f9870 --- # View Classes (Windows) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + `CView` and its derived classes are child windows that represent the client area of a frame window. Views show data and accept input for a document. A view class is associated with a document class and a frame window class using a document-template object. diff --git a/docs/mfc/virtual-list-controls.md b/docs/mfc/virtual-list-controls.md index f2e9003efd4..311cac31958 100644 --- a/docs/mfc/virtual-list-controls.md +++ b/docs/mfc/virtual-list-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Virtual List Controls" title: "Virtual List Controls" ms.date: "11/04/2016" helpviewer_keywords: ["cache, virtual list control item data", "list controls [MFC], virtual", "list controls [MFC], List view", "virtual list controls"] -ms.assetid: 319f841f-e426-423a-8276-d93f965b0b45 --- # Virtual List Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A virtual list control is a list view control that has the LVS_OWNERDATA style. This style enables the control to support an item count up to a **DWORD** (the default item count only extends to an **`int`**). However, the biggest advantage provided by this style is the ability to only have a subset of data items in memory at any one time. This allows the virtual list view control to lend itself for use with large databases of information, where specific methods of accessing data are already in place. > [!NOTE] diff --git a/docs/mfc/visualization-manager.md b/docs/mfc/visualization-manager.md index b02e2a7bb43..3325a8136a0 100644 --- a/docs/mfc/visualization-manager.md +++ b/docs/mfc/visualization-manager.md @@ -3,10 +3,12 @@ description: "Learn more about: Visualization Manager" title: "Visualization Manager" ms.date: "11/19/2018" helpviewer_keywords: ["Visualization Manager"] -ms.assetid: c9dd1365-27ac-42e5-8caa-1004525b4129 --- # Visualization Manager +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The visual manager is an object that controls the appearance of a whole application. It acts as a single class where you can put all the drawing code for your application. The MFC Library includes several visual managers. You can also create your own visual manager if you want to create a custom view for your application. The following images show the same application when different visual managers are enabled: ![MyApp as rendered by CMFCVisualManagerWindows.](../mfc/media/vmwindows.png "MyApp as rendered by CMFCVisualManagerWindows")
diff --git a/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md b/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md index 1174ea2988d..22a01a8430a 100644 --- a/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md +++ b/docs/mfc/walkthrough-adding-a-ctaskdialog-to-an-application.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["CTaskDialog, adding", "walkthroughs [MFC], dialogs"] --- # Walkthrough: Adding a CTaskDialog to an application +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This walkthrough introduces the [`CTaskDialog` class](../mfc/reference/ctaskdialog-class.md) and shows how to add it to your application. The `CTaskDialog` is a task dialog box that replaces the Windows message box in Windows Vista or later. The `CTaskDialog` improves on the original message box and adds functionality. The Windows message box is still supported in Visual Studio. diff --git a/docs/mfc/walkthrough-adding-a-d2d-object-to-an-mfc-project.md b/docs/mfc/walkthrough-adding-a-d2d-object-to-an-mfc-project.md index 2f3c6645ec7..f947e363ef4 100644 --- a/docs/mfc/walkthrough-adding-a-d2d-object-to-an-mfc-project.md +++ b/docs/mfc/walkthrough-adding-a-d2d-object-to-an-mfc-project.md @@ -3,10 +3,12 @@ description: "Learn more about: Walkthrough: Adding a D2D Object to an MFC Proje title: "Walkthrough: Adding a D2D Object to an MFC Project" ms.date: "04/25/2019" helpviewer_keywords: ["MFC, D2D", "D2D [MFC]"] -ms.assetid: dda36c33-c231-4da6-a62f-72d69a12b6dd --- # Walkthrough: Adding a D2D Object to an MFC Project +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This walkthrough teaches how to add a basic Direct2D (D2D) object to a Visual Studio, Microsoft Foundation Class Library (MFC) project, and then build the project into an application that prints "Hello, World!" on a gradient background. The walkthrough shows how to accomplish these tasks: diff --git a/docs/mfc/walkthrough-adding-animation-to-an-mfc-project.md b/docs/mfc/walkthrough-adding-animation-to-an-mfc-project.md index 203b4313782..8c7a5e4ed3c 100644 --- a/docs/mfc/walkthrough-adding-animation-to-an-mfc-project.md +++ b/docs/mfc/walkthrough-adding-animation-to-an-mfc-project.md @@ -3,10 +3,12 @@ description: "Learn more about: Walkthrough: Adding Animation to an MFC Project" title: "Walkthrough: Adding Animation to an MFC Project" ms.date: "04/25/2019" helpviewer_keywords: ["animation [MFC]", "MFC, animation"] -ms.assetid: 004f832c-9fd5-4f88-9ca9-ae65dececdc2 --- # Walkthrough: Adding Animation to an MFC Project +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This walkthrough teaches how to add a basic animated object to a Visual Studio, Microsoft Foundation Class Library (MFC) project. The walkthrough shows how to accomplish these tasks: diff --git a/docs/mfc/walkthrough-creating-a-ribbon-application-by-using-mfc.md b/docs/mfc/walkthrough-creating-a-ribbon-application-by-using-mfc.md index 6421813b892..68f02ff75c1 100644 --- a/docs/mfc/walkthrough-creating-a-ribbon-application-by-using-mfc.md +++ b/docs/mfc/walkthrough-creating-a-ribbon-application-by-using-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Walkthrough: Creating a Ribbon Application By Us title: "Walkthrough: Creating a Ribbon Application By Using MFC" ms.date: "09/09/2019" helpviewer_keywords: ["ribbon application, creating (MFC)", "creating a ribbon application (MFC)"] -ms.assetid: e61393e2-1d6b-4594-a7ce-157d3d1b0d9f --- # Walkthrough: Creating a Ribbon Application By Using MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This walkthrough shows how to use the **MFC Application Wizard** to create an application that has a ribbon by default. You can then expand the ribbon by adding a **Custom** ribbon category that has a **Favorites** ribbon panel, and then adding some frequently used commands to the panel. ## Prerequisites diff --git a/docs/mfc/walkthrough-putting-controls-on-toolbars.md b/docs/mfc/walkthrough-putting-controls-on-toolbars.md index 2d3962ab8c2..9688e8d6d59 100644 --- a/docs/mfc/walkthrough-putting-controls-on-toolbars.md +++ b/docs/mfc/walkthrough-putting-controls-on-toolbars.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["Customize dialog box, adding controls", "toolbars [MFC], --- # Walkthrough: Putting Controls On Toolbars +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes how to add a toolbar button that contains a Windows control to a toolbar. In MFC, a toolbar button must be a [`CMFCToolBarButton` Class](reference/cmfctoolbarbutton-class.md)-derived class, for example [`CMFCToolBarComboBoxButton` Class](reference/cmfctoolbarcomboboxbutton-class.md), [`CMFCToolBarEditBoxButton` Class](reference/cmfctoolbareditboxbutton-class.md), [`CMFCDropDownToolbarButton` Class](reference/cmfcdropdowntoolbarbutton-class.md), or [`CMFCToolBarMenuButton` Class](reference/cmfctoolbarmenubutton-class.md). ## Adding Controls to Toolbars diff --git a/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-1.md b/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-1.md index 6a37a8bff6a..0df6ca00842 100644 --- a/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-1.md +++ b/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-1.md @@ -3,10 +3,12 @@ description: "Learn more about: Walkthrough: Updating the MFC Scribble Applicati title: "Walkthrough: Updating the MFC Scribble Application (Part 1)" ms.date: "09/09/2019" helpviewer_keywords: ["examples [MFC], update existing application", "ribbon UI, porting to", "Office Fluent UI, porting to", "samples [MFC], update existing application", "MFC Feature Pack, update existing application", "walkthroughs [MFC], update existing application"] -ms.assetid: aa6330d3-6cfc-4c79-8fcb-0282263025f7 --- # Walkthrough: Updating the MFC Scribble Application (Part 1) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This walkthrough demonstrates how to modify an existing MFC application to use the Ribbon user interface. Visual Studio supports both the Office 2007 Ribbon and the Windows 7 Scenic Ribbon. For more information about the Ribbon user interface, see [Ribbons](/windows/win32/uxguide/cmd-ribbons). This walkthrough modifies the classic Scribble 1.0 MFC sample that lets you use the mouse to create line drawings. This part of the walkthrough shows how to modify the Scribble sample so that it displays a ribbon bar. [Part 2](../mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md) adds more buttons to the ribbon bar. diff --git a/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md b/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md index 19b88357d9d..81cb6c4023a 100644 --- a/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md +++ b/docs/mfc/walkthrough-updating-the-mfc-scribble-application-part-2.md @@ -3,10 +3,12 @@ description: "Learn more about: Walkthrough: Updating the MFC Scribble Applicati title: "Walkthrough: Updating the MFC Scribble Application (Part 2)" ms.date: "04/25/2019" helpviewer_keywords: ["walkthroughs [MFC]"] -ms.assetid: 602df5c2-17d4-4cd9-8cf6-dff652c4cae5 --- # Walkthrough: Updating the MFC Scribble Application (Part 2) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + [Part 1](../mfc/walkthrough-updating-the-mfc-scribble-application-part-1.md) of this walkthrough showed how to add an Office Fluent Ribbon to the classic Scribble application. This part shows how to add ribbon panels and controls that users can use instead of menus and commands. ## Prerequisites diff --git a/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md b/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md index 35d503d1884..7b82b7990a9 100644 --- a/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md +++ b/docs/mfc/walkthrough-using-the-new-mfc-shell-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Walkthrough: Using the New MFC Shell Controls" title: "Walkthrough: Using the New MFC Shell Controls" ms.date: 10/27/2021 helpviewer_keywords: ["shell controls (MFC)"] -ms.assetid: f0015caa-199d-4aaf-9501-5a239fce9095 --- # Walkthrough: Using the New MFC Shell Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In this walkthrough, you'll create an application that resembles File Explorer. You'll create a window that has two panes. The left pane will hold a [CMFCShellTreeCtrl](../mfc/reference/cmfcshelltreectrl-class.md) object that displays your Desktop in a hierarchical view. The right pane will hold a [CMFCShellListCtrl](../mfc/reference/cmfcshelllistctrl-class.md) that shows the files in the folder that is selected in the left pane. ## Prerequisites diff --git a/docs/mfc/walkthroughs-mfc.md b/docs/mfc/walkthroughs-mfc.md index a286a742aec..d5c6bf20893 100644 --- a/docs/mfc/walkthroughs-mfc.md +++ b/docs/mfc/walkthroughs-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Walkthroughs (MFC)" title: "Walkthroughs (MFC)" ms.date: "09/20/2018" helpviewer_keywords: ["MFC Feature Pack, walkthroughs"] -ms.assetid: 20d5756f-ad58-46f4-8b6c-c7a1020b72eb --- # Walkthroughs (MFC) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This section contains articles that walk you through various tasks associated with new MFC library features. ## In This Section diff --git a/docs/mfc/what-does-it-cost-me-to-derive-a-class-from-cobject-q.md b/docs/mfc/what-does-it-cost-me-to-derive-a-class-from-cobject-q.md index 5aedcbf9840..6f32909aa5b 100644 --- a/docs/mfc/what-does-it-cost-me-to-derive-a-class-from-cobject-q.md +++ b/docs/mfc/what-does-it-cost-me-to-derive-a-class-from-cobject-q.md @@ -3,10 +3,12 @@ description: "Learn more about: What Does it Cost me to Derive a Class from CObj title: "What Does it Cost me to Derive a Class from CObject?" ms.date: "11/04/2016" helpviewer_keywords: ["CObject class [MFC], overhead of derived classes [MFC]"] -ms.assetid: 9b92c98b-b3dd-48a7-9d24-c3b8554edf90 --- # What Does it Cost me to Derive a Class from CObject? +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The overhead in deriving from class [CObject](../mfc/reference/cobject-class.md) is minimal. Your derived class inherits only four virtual functions and a single [CRuntimeClass](../mfc/reference/cruntimeclass-structure.md) object. ## See also diff --git a/docs/mfc/what-frame-windows-do.md b/docs/mfc/what-frame-windows-do.md index 4949a47ade0..bb4c94ccf7a 100644 --- a/docs/mfc/what-frame-windows-do.md +++ b/docs/mfc/what-frame-windows-do.md @@ -3,10 +3,12 @@ description: "Learn more about: What Frame Windows Do" title: "What Frame Windows Do" ms.date: "11/04/2016" helpviewer_keywords: ["frame windows [MFC], about frame windows", "frame windows [MFC], tasks", "MFC, frame windows"] -ms.assetid: 1148a952-6786-4622-b5a8-68a2d7eae584 --- # What Frame Windows Do +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Besides simply framing a view, frame windows are responsible for numerous tasks involved in coordinating the frame with its view and with the application. [CMDIFrameWnd](../mfc/reference/cmdiframewnd-class.md) and [CMDIChildWnd](../mfc/reference/cmdichildwnd-class.md) inherit from [CFrameWnd](../mfc/reference/cframewnd-class.md), so they have `CFrameWnd` capabilities as well as new capabilities that they add. Examples of child windows include views, controls such as buttons and list boxes, and control bars, including toolbars, status bars, and dialog bars. The frame window is responsible for managing the layout of its child windows. In the MFC framework, a frame window positions any control bars, views, and other child windows inside its client area. diff --git a/docs/mfc/what-is-a-carchive-object.md b/docs/mfc/what-is-a-carchive-object.md index 69b0bdb75a6..07598d35a70 100644 --- a/docs/mfc/what-is-a-carchive-object.md +++ b/docs/mfc/what-is-a-carchive-object.md @@ -3,12 +3,14 @@ description: "Learn more about: What Is a CArchive Object" title: "What Is a CArchive Object" ms.date: "11/04/2016" helpviewer_keywords: ["archive objects [MFC]", "archives [MFC], for serialization", "buffers, serializable objects", "CArchive class [MFC], about CArchive class [MFC]", "buffering, serializable objects"] -ms.assetid: 843f1825-288d-4d89-a1fa-70e1f92d9b8b ms.custom: intro-overview ms.topic: concept-article --- # What Is a CArchive Object +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A `CArchive` object provides a type-safe buffering mechanism for writing or reading serializable objects to or from a `CFile` object. Usually the `CFile` object represents a disk file; however, it can also be a memory file (`CSharedFile` object), perhaps representing the Clipboard. A given `CArchive` object either stores (writes, serializes) data or loads (reads, deserializes) data, but never both. The life of a `CArchive` object is limited to one pass through writing objects to a file or reading objects from a file. Thus, two successively created `CArchive` objects are required to serialize data to a file and then deserialize it back from the file. diff --git a/docs/mfc/when-to-initialize-cwnd-objects.md b/docs/mfc/when-to-initialize-cwnd-objects.md index 4097208b0f6..88b6408936f 100644 --- a/docs/mfc/when-to-initialize-cwnd-objects.md +++ b/docs/mfc/when-to-initialize-cwnd-objects.md @@ -3,10 +3,12 @@ description: "Learn more about: When to Initialize CWnd Objects" title: "When to Initialize CWnd Objects" ms.date: "11/04/2016" helpviewer_keywords: ["window objects [MFC], when to initialize CWnd", "initializing CWnd objects [MFC]", "initializing objects [MFC], CWnd", "CWnd objects [MFC], when HWND is attached", "HWND, when attached to CWnd object", "CWnd objects [MFC], when to initialize"] -ms.assetid: 4d31bcb1-73db-4f2f-b71c-89b087569a10 --- # When to Initialize CWnd Objects +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You cannot create your own child windows or call any Windows API functions in the constructor of a `CWnd`-derived object. This is because the `HWND` for the `CWnd` object has not been created yet. Most Windows-specific initialization, such as adding child windows, must be done in an [OnCreate](../mfc/reference/cwnd-class.md#oncreate) message handler. ## What do you want to know more about diff --git a/docs/mfc/when-update-handlers-are-called.md b/docs/mfc/when-update-handlers-are-called.md index 63558a68e37..ad527d5e48d 100644 --- a/docs/mfc/when-update-handlers-are-called.md +++ b/docs/mfc/when-update-handlers-are-called.md @@ -3,10 +3,12 @@ description: "Learn more about: When Update Handlers Are Called" title: "When Update Handlers Are Called" ms.date: "11/04/2016" helpviewer_keywords: ["updating user interface objects [MFC]", "command routing [MFC], update commands", "toolbar buttons [MFC], enabling", "disabling toolbar buttons", "menus [MFC], initializing", "update handlers [MFC]", "disabling menu items", "toolbars [MFC], updating", "menus [MFC], updating as context changes", "toolbar controls [MFC], updated during OnIdle method [MFC]", "menu items, enabling", "command routing [MFC], update handlers", "update handlers, calling"] -ms.assetid: 7359f6b1-4669-477d-bd99-690affed08d9 --- # When Update Handlers Are Called +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Suppose the user clicks the mouse in the File menu, which generates a WM_INITMENUPOPUP message. The framework's update mechanism collectively updates all items on the File menu before the menu drops down so the user can see it. To do this, the framework routes update commands for all menu items in the pop-up menu along the standard command routing. Command targets on the routing have an opportunity to update any menu items by matching the update command with an appropriate message-map entry (of the form `ON_UPDATE_COMMAND_UI`) and calling an "update handler" function. Thus, for a menu with six menu items, six update commands are sent out. If an update handler exists for the command ID of the menu item, it is called to do the updating. If not, the framework checks for the existence of a handler for that command ID and enables or disables the menu item as appropriate. diff --git a/docs/mfc/where-to-find-message-maps.md b/docs/mfc/where-to-find-message-maps.md index 2d4a1403aa2..5db17291298 100644 --- a/docs/mfc/where-to-find-message-maps.md +++ b/docs/mfc/where-to-find-message-maps.md @@ -3,10 +3,12 @@ description: "Learn more about: Where to Find Message Maps" title: "Where to Find Message Maps" ms.date: "11/04/2016" helpviewer_keywords: ["macros, message map", "locating message maps", "message classes [MFC], finding", "message-map macros"] -ms.assetid: bf59fbc8-b222-42d3-b5d3-0a79aa3cb923 --- # Where to Find Message Maps +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + When you create a new skeleton application with the Application Wizard, the Application Wizard writes a message map for each command-target class it creates for you. This includes your derived application, document, view, and frame-window classes. Some of these message maps already have the entries supplied by the Application Wizard for certain messages and predefined commands, and some are just placeholders for handlers that you will add. A class's message map is located in the .CPP file for the class. Working with the basic message maps that the Application Wizard creates, you use the [Class Wizard](reference/mfc-class-wizard.md) to add entries for the messages and commands that each class will handle. A typical message map might look like the following after you add some entries: diff --git a/docs/mfc/win32-internet-classes.md b/docs/mfc/win32-internet-classes.md index 218920d5438..f30bb06f4b3 100644 --- a/docs/mfc/win32-internet-classes.md +++ b/docs/mfc/win32-internet-classes.md @@ -4,10 +4,12 @@ title: "Win32 Internet Classes" ms.date: "09/12/2018" f1_keywords: ["vc.classes.win32"] helpviewer_keywords: ["Internet classes [MFC]", "WinInet classes [MFC], classes", "Win32 [MFC], Internet classes", "Windows API [MFC], Internet classes"] -ms.assetid: b49601d5-3025-4068-9408-316b54ee4375 --- # Win32 Internet Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC wraps the Win32 Internet (WinInet) and ActiveX technology to make Internet programming easier. >[!IMPORTANT] diff --git a/docs/mfc/win32-internet-extensions-wininet.md b/docs/mfc/win32-internet-extensions-wininet.md index 801fcbb1aca..63a5cba7c3f 100644 --- a/docs/mfc/win32-internet-extensions-wininet.md +++ b/docs/mfc/win32-internet-extensions-wininet.md @@ -3,10 +3,12 @@ description: "Learn more about: Win32 Internet Extensions (WinInet)" title: "Win32 Internet Extensions (WinInet)" ms.date: "11/04/2016" helpviewer_keywords: ["Internet applications [MFC], Win32 Internet Extensions", "Internet client applications [MFC], about Internet client applications", "client applications [MFC], Win32 Internet", "WinInet classes [MFC], about WinInet classes"] -ms.assetid: f8c80f0b-ce14-4f0d-a3cf-4f7d8c5cca59 --- # Win32 Internet Extensions (WinInet) +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + An Internet client application is a program that accesses information from a network data source (server) using Internet protocols such as gopher, FTP, or HTTP. An Internet client application might access a server to retrieve data such as weather maps, stock prices, or newspaper headlines, for example. The Internet client can access the server through an external network (the Internet) or an internal network (sometimes called an intranet). MFC includes the Win32 Internet Extensions, or WinInet, for creating an Internet client application. MFC encapsulates these Internet extensions in a set of standard, easy-to-use classes. You can write a WinInet client application by calling the Win32 functions directly or by using the MFC WinInet classes. diff --git a/docs/mfc/window-destruction-sequence.md b/docs/mfc/window-destruction-sequence.md index 7cc74192df7..24af36131b3 100644 --- a/docs/mfc/window-destruction-sequence.md +++ b/docs/mfc/window-destruction-sequence.md @@ -3,10 +3,12 @@ description: "Learn more about: Window Destruction Sequence" title: "Window Destruction Sequence" ms.date: "11/04/2016" helpviewer_keywords: ["destruction, windows", "destroying windows", "sequence [MFC], window destruction", "CWnd objects [MFC], destruction sequence", "sequence [MFC]", "windows [MFC], destroying"] -ms.assetid: 2d819196-6240-415f-a308-db43745e616c --- # Window Destruction Sequence +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + In the MFC framework, when the user closes the frame window, the window's default [OnClose](../mfc/reference/cwnd-class.md#onclose) handler calls [DestroyWindow](../mfc/reference/cwnd-class.md#destroywindow). The last member function called when the Windows window is destroyed is [OnNcDestroy](../mfc/reference/cwnd-class.md#onncdestroy), which does some cleanup, calls the [Default](../mfc/reference/cwnd-class.md#default) member function to perform Windows cleanup, and lastly calls the virtual member function [PostNcDestroy](../mfc/reference/cwnd-class.md#postncdestroy). The [CFrameWnd](../mfc/reference/cframewnd-class.md) implementation of `PostNcDestroy` deletes the C++ window object. ## What do you want to know more about diff --git a/docs/mfc/window-dialog-and-control-classes.md b/docs/mfc/window-dialog-and-control-classes.md index 9beece06877..730a6baea47 100644 --- a/docs/mfc/window-dialog-and-control-classes.md +++ b/docs/mfc/window-dialog-and-control-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: Window, Dialog, and Control Classes" title: "Window, Dialog, and Control Classes" ms.date: "11/04/2016" helpviewer_keywords: ["windows [MFC], dialog and control classes"] -ms.assetid: b3610da6-9644-49b7-adbf-0e04f0d6d2b5 --- # Window, Dialog, and Control Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Class `CWnd` and its derived classes encapsulate an `HWND`, a handle to a Windows window. `CWnd` can be used by itself or as a base for deriving new classes. The derived classes supplied by the class library represent various kinds of windows. [CWnd](../mfc/reference/cwnd-class.md)
diff --git a/docs/mfc/window-objects.md b/docs/mfc/window-objects.md index a4f2924d5be..fc1929cb147 100644 --- a/docs/mfc/window-objects.md +++ b/docs/mfc/window-objects.md @@ -3,10 +3,12 @@ description: "Learn more about: Window Objects" title: "Window Objects" ms.date: "11/04/2016" helpviewer_keywords: ["objects [MFC], window", "Windows window [MFC]", "MFC, windows", "frame windows [MFC], C++ window objects", "window objects [MFC]", "windows [MFC], C++ window objects", "window messages [MFC]", "HWND", "messages [MFC], Windows", "Visual C++, window objects [MFC]", "HWND, window objects [MFC]"] -ms.assetid: 28b33ce2-af05-4617-9d03-1cb9a02be687 --- # Window Objects +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + MFC supplies class [CWnd](../mfc/reference/cwnd-class.md) to encapsulate the `HWND` handle of a window. The `CWnd` object is a C++ window object, distinct from the `HWND` that represents a Windows window but containing it. Use `CWnd` to derive your own child window classes, or use one of the many MFC classes derived from `CWnd`. Class `CWnd` is the base class for all windows, including frame windows, dialog boxes, child windows, controls, and control bars such as toolbars. A good understanding of [the relationship between a C++ window object and an HWND](../mfc/relationship-between-a-cpp-window-object-and-an-hwnd.md) is crucial for effective programming with MFC. MFC provides some default functionality and management of windows, but you can derive your own class from `CWnd` and use its member functions to customize the provided functionality. You can create child windows by constructing a `CWnd` object and calling its [Create](../mfc/reference/cwnd-class.md#create) member function, then customize the child windows using `CWnd` member functions. You can embed objects derived from [CView](../mfc/reference/cview-class.md), such as form views or tree views, in a frame window. And you can support multiple views of your documents via splitter panes, supplied by class [CSplitterWnd](../mfc/reference/csplitterwnd-class.md). diff --git a/docs/mfc/window-procedure-entry-points.md b/docs/mfc/window-procedure-entry-points.md index 2655dd259f0..a56476482dd 100644 --- a/docs/mfc/window-procedure-entry-points.md +++ b/docs/mfc/window-procedure-entry-points.md @@ -3,10 +3,12 @@ description: "Learn more about: Window Procedure Entry Points" title: "Window Procedure Entry Points" ms.date: "11/04/2016" helpviewer_keywords: ["state management, window procedures", "MFC, managing state data", "window procedure entry points", "entry points, window procedures"] -ms.assetid: a6b46a7f-6e42-45f2-9ae6-82e19fc57148 --- # Window Procedure Entry Points +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + To protect MFC window procedures, a module static links with a special window procedure implementation. The linkage occurs automatically when the module is linked with MFC. This window procedure uses the AFX_MANAGE_STATE macro to properly set the effective module state, then it calls `AfxWndProc`, which in turn delegates to the `WindowProc` member function of the appropriate `CWnd`-derived object. ## See also diff --git a/docs/mfc/windows-sockets-background.md b/docs/mfc/windows-sockets-background.md index 8bb853e4102..26d496907f5 100644 --- a/docs/mfc/windows-sockets-background.md +++ b/docs/mfc/windows-sockets-background.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets: Background" title: "Windows Sockets: Background" ms.date: "11/04/2016" helpviewer_keywords: ["record-oriented data [MFC]", "e-mail [MFC]", "Internet Protocol Suite", "mail [MFC]", "communications [MFC], domain", "Windows Sockets [MFC], stream sockets", "mail [MFC], programming for", "sockets [MFC], stream sockets", "datagram sockets [MFC]", "SOCKET handle", "data types [MFC], socket", "e-mail [MFC], programming for", "X Window servers", "sequenced data flow", "stream sockets [MFC]"] -ms.assetid: f60d4ed2-bf23-4a0e-98d2-fee77e8473dd --- # Windows Sockets: Background +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the nature and purpose of Windows Sockets. The article also: - [Defines the term "socket"](#_core_definition_of_a_socket). diff --git a/docs/mfc/windows-sockets-blocking.md b/docs/mfc/windows-sockets-blocking.md index f0e50a171df..2c2d61ed2d6 100644 --- a/docs/mfc/windows-sockets-blocking.md +++ b/docs/mfc/windows-sockets-blocking.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets: Blocking" title: "Windows Sockets: Blocking" ms.date: "11/04/2016" helpviewer_keywords: ["sockets [MFC], blocking mode", "Windows Sockets [MFC], Windows platforms", "Windows Sockets [MFC], blocking mode", "sockets [MFC], behavior on different Windows platforms", "blocking mode sockets"] -ms.assetid: 10aca9b1-bfba-41a8-9c55-ea8082181e63 --- # Windows Sockets: Blocking +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article and two companion articles explain several issues in Windows Sockets programming. This article covers blocking. The other issues are covered in the articles: [Windows Sockets: Byte Ordering](../mfc/windows-sockets-byte-ordering.md) and [Windows Sockets: Converting Strings](../mfc/windows-sockets-converting-strings.md). If you use or derive from class [CAsyncSocket](../mfc/reference/casyncsocket-class.md), you will need to manage these issues yourself. If you use or derive from class [CSocket](../mfc/reference/csocket-class.md), MFC manages them for you. diff --git a/docs/mfc/windows-sockets-byte-ordering.md b/docs/mfc/windows-sockets-byte-ordering.md index fde1d2eed8e..d8b3e1a50ae 100644 --- a/docs/mfc/windows-sockets-byte-ordering.md +++ b/docs/mfc/windows-sockets-byte-ordering.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets: Byte Ordering" title: "Windows Sockets: Byte Ordering" ms.date: "11/04/2016" helpviewer_keywords: ["byte order issues in sockets programming", "sockets [MFC], byte order issues", "Windows Sockets [MFC], byte order issues"] -ms.assetid: 8a787a65-f9f4-4002-a02f-ac25a5dace5d --- # Windows Sockets: Byte Ordering +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article and two companion articles explain several issues in Windows Sockets programming. This article covers byte ordering. The other issues are covered in the articles: [Windows Sockets: Blocking](../mfc/windows-sockets-blocking.md) and [Windows Sockets: Converting Strings](../mfc/windows-sockets-converting-strings.md). If you use or derive from class [CAsyncSocket](../mfc/reference/casyncsocket-class.md), you will need to manage these issues yourself. If you use or derive from class [CSocket](../mfc/reference/csocket-class.md), MFC manages them for you. diff --git a/docs/mfc/windows-sockets-classes.md b/docs/mfc/windows-sockets-classes.md index c80ea097acb..0c0b8f257ec 100644 --- a/docs/mfc/windows-sockets-classes.md +++ b/docs/mfc/windows-sockets-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets Classes" title: "Windows Sockets Classes" ms.date: "11/04/2016" helpviewer_keywords: ["sockets classes [MFC]", "Windows Sockets [MFC], classes"] -ms.assetid: 58b9ab8d-9e44-4db3-8265-e04e713d2e9a --- # Windows Sockets Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Windows Sockets provide a network protocol-independent way to communicate between two computers. These sockets can be synchronous (your program waits until the communication is done) or asynchronous (your program continues running while the communication is going on). [CAsyncSocket](../mfc/reference/casyncsocket-class.md)
diff --git a/docs/mfc/windows-sockets-converting-strings.md b/docs/mfc/windows-sockets-converting-strings.md index 6afd8d49102..d7a439eb926 100644 --- a/docs/mfc/windows-sockets-converting-strings.md +++ b/docs/mfc/windows-sockets-converting-strings.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets: Converting Strings" title: "Windows Sockets: Converting Strings" ms.date: "11/04/2016" helpviewer_keywords: ["Windows Sockets [MFC], multibyte character string conversion", "sockets [MFC], multibyte character string conversion issues", "string conversion, multibyte character strings"] -ms.assetid: 9df522b5-6b23-41e0-bb96-e4e623baf141 --- # Windows Sockets: Converting Strings +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article and two companion articles explain several issues in Windows Sockets programming. This article covers converting strings. The other issues are covered in [Windows Sockets: Blocking](../mfc/windows-sockets-blocking.md) and [Windows Sockets: Byte Ordering](../mfc/windows-sockets-byte-ordering.md). If you use or derive from class [CAsyncSocket](../mfc/reference/casyncsocket-class.md), you will need to manage these issues yourself. If you use or derive from class [CSocket](../mfc/reference/csocket-class.md), MFC manages them for you. diff --git a/docs/mfc/windows-sockets-datagram-sockets.md b/docs/mfc/windows-sockets-datagram-sockets.md index b751ab84485..6382445c37f 100644 --- a/docs/mfc/windows-sockets-datagram-sockets.md +++ b/docs/mfc/windows-sockets-datagram-sockets.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets: Datagram Sockets" title: "Windows Sockets: Datagram Sockets" ms.date: "11/04/2016" helpviewer_keywords: ["sockets [MFC], datagram", "Windows Sockets [MFC], bi-directional data flow", "datagram sockets [MFC]", "Windows Sockets [MFC], datagram", "sockets [MFC], bi-directional data flow"] -ms.assetid: bec16a1c-74c0-4ff9-8c18-c2d87897d264 --- # Windows Sockets: Datagram Sockets +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes datagram sockets, one of the two Windows Socket types available. (The other type is the [stream socket](../mfc/windows-sockets-stream-sockets.md).) Datagram sockets support a bidirectional data flow that is not guaranteed to be sequenced or unduplicated. Datagrams also are not guaranteed to be reliable; they can fail to arrive. Datagram data may arrive out of order and possibly duplicated, but record boundaries in the data are preserved, as long as the records are smaller than the receiver's internal size limit. You are responsible for managing sequencing and reliability. (Reliability tends to be good on local-area networks [LAN] but less so on wide-area networks [WAN], such as the Internet.) diff --git a/docs/mfc/windows-sockets-deriving-from-socket-classes.md b/docs/mfc/windows-sockets-deriving-from-socket-classes.md index 3915149c498..42d1d881cb8 100644 --- a/docs/mfc/windows-sockets-deriving-from-socket-classes.md +++ b/docs/mfc/windows-sockets-deriving-from-socket-classes.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets: Deriving from Socket Classes" title: "Windows Sockets: Deriving from Socket Classes" ms.date: "11/04/2016" helpviewer_keywords: ["derived classes [MFC], from socket classes", "Windows Sockets [MFC], deriving from socket classes", "sockets [MFC], deriving from socket classes"] -ms.assetid: 3a26e67a-e323-433b-9b05-eca018799801 --- # Windows Sockets: Deriving from Socket Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes some of the functionality you can gain by deriving your own class from one of the socket classes. You can derive your own socket classes from either [CAsyncSocket](../mfc/reference/casyncsocket-class.md) or [CSocket](../mfc/reference/csocket-class.md) to add your own functionality. In particular, these classes supply a number of virtual member functions that you can override. These functions include [OnReceive](../mfc/reference/casyncsocket-class.md#onreceive), [OnSend](../mfc/reference/casyncsocket-class.md#onsend), [OnAccept](../mfc/reference/casyncsocket-class.md#onaccept), [OnConnect](../mfc/reference/casyncsocket-class.md#onconnect), and [OnClose](../mfc/reference/casyncsocket-class.md#onclose). You can override the functions in your derived socket class to take advantage of the notifications they provide when network events occur. The framework calls these notification callback functions to notify you of important socket events, such as the receipt of data that you can begin reading. For more information about notification functions, see [Windows Sockets: Socket Notifications](../mfc/windows-sockets-socket-notifications.md). diff --git a/docs/mfc/windows-sockets-example-of-sockets-using-archives.md b/docs/mfc/windows-sockets-example-of-sockets-using-archives.md index 89e332528ba..92d56b0acb9 100644 --- a/docs/mfc/windows-sockets-example-of-sockets-using-archives.md +++ b/docs/mfc/windows-sockets-example-of-sockets-using-archives.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["sockets [MFC], with archives", "examples [MFC], Windows S --- # Windows Sockets: Example of Sockets Using Archives +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article presents an example of using class [CSocket](../mfc/reference/csocket-class.md). The example employs `CArchive` objects to serialize data through a socket. Note that this is not document serialization to or from a file. The following example illustrates how you use the archive to send and receive data through `CSocket` objects. The example is designed so that two instances of the application (on the same machine or on different machines on the network) exchange data. One instance sends data, which the other instance receives and acknowledges. Either application can initiate an exchange, and either can act as server or as client to the other application. The following function is defined in the application's view class: diff --git a/docs/mfc/windows-sockets-how-sockets-with-archives-work.md b/docs/mfc/windows-sockets-how-sockets-with-archives-work.md index 6532e6b427a..d09962908a2 100644 --- a/docs/mfc/windows-sockets-how-sockets-with-archives-work.md +++ b/docs/mfc/windows-sockets-how-sockets-with-archives-work.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets: How Sockets with Archives Work" title: "Windows Sockets: How Sockets with Archives Work" ms.date: "11/19/2018" helpviewer_keywords: ["Windows Sockets [MFC], synchronous", "sockets [MFC], synchronous operation", "sockets [MFC], with archives", "synchronous state socket", "Windows Sockets [MFC], with archives", "two-state socket object"] -ms.assetid: d8ae4039-391d-44f0-a19b-558817affcbb --- # Windows Sockets: How Sockets with Archives Work +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how a [CSocket](../mfc/reference/csocket-class.md) object, a [CSocketFile](../mfc/reference/csocketfile-class.md) object, and a [CArchive](../mfc/reference/carchive-class.md) object are combined to simplify sending and receiving data through a Windows Socket. The article [Windows Sockets: Example of Sockets Using Archives](../mfc/windows-sockets-example-of-sockets-using-archives.md) presents the `PacketSerialize` function. The archive object in the `PacketSerialize` example works much like an archive object passed to an MFC [Serialize](../mfc/reference/cobject-class.md#serialize) function. The essential difference is that for sockets, the archive is attached not to a standard [CFile](../mfc/reference/cfile-class.md) object (typically associated with a disk file) but to a `CSocketFile` object. Rather than connecting to a disk file, the `CSocketFile` object connects to a `CSocket` object. diff --git a/docs/mfc/windows-sockets-in-mfc.md b/docs/mfc/windows-sockets-in-mfc.md index ade1e931319..d63008126b5 100644 --- a/docs/mfc/windows-sockets-in-mfc.md +++ b/docs/mfc/windows-sockets-in-mfc.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets in MFC" title: "Windows Sockets in MFC" ms.date: "11/04/2016" helpviewer_keywords: ["WINSOCK.DLL", "sockets [MFC], programming models", "MFC, Windows Sockets", "Windows Sockets [MFC], MFC support", "Windows Sockets [MFC], programming models", "WSOCK32.DLL", "sockets [MFC], MFC"] -ms.assetid: 1f3c476a-9c68-49fe-9a25-d22971a334d0 --- # Windows Sockets in MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + > [!NOTE] > MFC supports Windows Sockets 1 but does not support [Windows Sockets 2](/windows/win32/WinSock/windows-sockets-start-page-2). Windows Sockets 2 first shipped with Windows 98 and is the version included with Windows 2000. diff --git a/docs/mfc/windows-sockets-ports-and-socket-addresses.md b/docs/mfc/windows-sockets-ports-and-socket-addresses.md index d4026d95f32..a8de0f7603f 100644 --- a/docs/mfc/windows-sockets-ports-and-socket-addresses.md +++ b/docs/mfc/windows-sockets-ports-and-socket-addresses.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets: Ports and Socket Addresses" title: "Windows Sockets: Ports and Socket Addresses" ms.date: "11/04/2016" helpviewer_keywords: ["ports [MFC], definition", "Windows Sockets [MFC], ports", "Windows Sockets [MFC], addresses", "ports [MFC]", "addresses [MFC], socket", "sockets [MFC], addresses", "sockets [MFC], ports"] -ms.assetid: e050261a-9285-4f31-a1c5-6c8033af5b4a --- # Windows Sockets: Ports and Socket Addresses +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the terms "port" and "address" as used with Windows Sockets. ## Port diff --git a/docs/mfc/windows-sockets-sequence-of-operations.md b/docs/mfc/windows-sockets-sequence-of-operations.md index cf5c241e016..82a4873c610 100644 --- a/docs/mfc/windows-sockets-sequence-of-operations.md +++ b/docs/mfc/windows-sockets-sequence-of-operations.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets: Sequence of Operations" title: "Windows Sockets: Sequence of Operations" ms.date: "11/04/2016" helpviewer_keywords: ["Windows Sockets [MFC], operations", "Windows Sockets [MFC], stream sockets", "sockets [MFC], stream sockets", "sockets [MFC], operations", "stream sockets [MFC]"] -ms.assetid: 43ce76f5-aad3-4247-b8a6-16cc7d012796 --- # Windows Sockets: Sequence of Operations +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article illustrates, side by side, the sequence of operations for a server socket and a client socket. Because the sockets use `CArchive` objects, they are necessarily [stream sockets](../mfc/windows-sockets-stream-sockets.md). ## Sequence of Operations for a Stream Socket Communication diff --git a/docs/mfc/windows-sockets-socket-notifications.md b/docs/mfc/windows-sockets-socket-notifications.md index b0119e77c9b..2716daf8e39 100644 --- a/docs/mfc/windows-sockets-socket-notifications.md +++ b/docs/mfc/windows-sockets-socket-notifications.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets: Socket Notifications" title: "Windows Sockets: Socket Notifications" ms.date: "11/04/2016" helpviewer_keywords: ["Windows Sockets [MFC], notifications", "notifications [MFC], socket", "sockets [MFC], notifications"] -ms.assetid: 87d5bf70-6e77-49a9-9a64-aaadee2ad018 --- # Windows Sockets: Socket Notifications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes the notification functions in the socket classes. These member functions are callback functions that the framework calls to notify your socket object of important events. The notification functions are: - [OnReceive](../mfc/reference/casyncsocket-class.md#onreceive): Notifies this socket that there is data in the buffer for it to retrieve by calling [Receive](../mfc/reference/casyncsocket-class.md#receive). diff --git a/docs/mfc/windows-sockets-stream-sockets.md b/docs/mfc/windows-sockets-stream-sockets.md index e87a2ee37f2..30bff346e13 100644 --- a/docs/mfc/windows-sockets-stream-sockets.md +++ b/docs/mfc/windows-sockets-stream-sockets.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets: Stream Sockets" title: "Windows Sockets: Stream Sockets" ms.date: "11/04/2016" helpviewer_keywords: ["Windows Sockets [MFC], stream sockets", "sockets [MFC], stream sockets", "stream sockets [MFC]"] -ms.assetid: 31faaa34-a995-493f-a30b-b8115293d619 --- # Windows Sockets: Stream Sockets +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes stream sockets, one of the two Windows Socket types available. (The other type is the [datagram socket](../mfc/windows-sockets-datagram-sockets.md).) Stream sockets provide for a data flow without record boundaries: a stream of bytes that can be bidirectional (the application is full duplex: it can both transmit and receive through the socket). Streams can be relied upon to deliver sequenced, unduplicated data. ("Sequenced" means that packets are delivered in the order sent. "Unduplicated" means that you get a particular packet only once.) Receipt of stream messages is guaranteed, and streams are well suited to handling large amounts of data. diff --git a/docs/mfc/windows-sockets-using-class-casyncsocket.md b/docs/mfc/windows-sockets-using-class-casyncsocket.md index 4b93d33ecb9..e4628d00c61 100644 --- a/docs/mfc/windows-sockets-using-class-casyncsocket.md +++ b/docs/mfc/windows-sockets-using-class-casyncsocket.md @@ -6,6 +6,9 @@ helpviewer_keywords: ["CAsyncSocket class [MFC], programming model", "Windows So --- # Windows Sockets: Using Class `CAsyncSocket` +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how to use class [`CAsyncSocket`](reference/casyncsocket-class.md). This class encapsulates the Windows Sockets API at a very low level. `CAsyncSocket` is for use by programmers who know network communications in detail but want the convenience of callbacks for notification of network events. Based on this assumption, this article provides only basic instruction. You should probably consider using `CAsyncSocket` if you want Windows Sockets' ease of dealing with multiple network protocols in an MFC application but don't want to sacrifice flexibility. You might also feel that you can get better efficiency by programming the communications more directly yourself than you could using the more general alternative model of class `CSocket`. `CAsyncSocket` is documented in the *MFC Reference*. Visual Studio also supplies the Windows Sockets specification, located in the Windows SDK. The details are left to you. Visual Studio doesn't supply a sample application for `CAsyncSocket`. diff --git a/docs/mfc/windows-sockets-using-sockets-with-archives.md b/docs/mfc/windows-sockets-using-sockets-with-archives.md index cd35be2b053..139a4bfd6be 100644 --- a/docs/mfc/windows-sockets-using-sockets-with-archives.md +++ b/docs/mfc/windows-sockets-using-sockets-with-archives.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets: Using Sockets with Archives" title: "Windows Sockets: Using Sockets with Archives" ms.date: "11/04/2016" helpviewer_keywords: ["Windows Sockets [MFC], archives", "sockets [MFC], with archives", "archives [MFC], and Windows Sockets", "CSocket class [MFC], programming model"] -ms.assetid: 17e71a99-a09e-4e1a-9fda-13d62805c824 --- # Windows Sockets: Using Sockets with Archives +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article describes the [CSocket programming model](#_core_the_csocket_programming_model). Class [CSocket](../mfc/reference/csocket-class.md) supplies socket support at a higher level of abstraction than does class [CAsyncSocket](../mfc/reference/casyncsocket-class.md). `CSocket` uses a version of the MFC serialization protocol to pass data to and from a socket object through an MFC [CArchive](../mfc/reference/carchive-class.md) object. `CSocket` provides blocking (while managing background processing of Windows messages) and gives you access to `CArchive`, which manages many aspects of the communication that you would have to do yourself using either the raw API or class `CAsyncSocket`. > [!TIP] diff --git a/docs/mfc/windows-sockets.md b/docs/mfc/windows-sockets.md index 5459fe65933..04568103ca6 100644 --- a/docs/mfc/windows-sockets.md +++ b/docs/mfc/windows-sockets.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows Sockets" title: "Windows Sockets" ms.date: "11/04/2016" helpviewer_keywords: ["sockets [MFC], Windows sockets", "networks [MFC], Windows Sockets", "programming [MFC], network", "sockets [MFC]", "Windows Sockets [MFC]"] -ms.assetid: c077ec53-540d-4bfb-a1e0-bd6482ab9e19 --- # Windows Sockets +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This family of articles covers the MFC implementation of Windows Sockets. MFC supplies two classes to support programming network applications with the Windows Sockets API. Class [CAsyncSocket](../mfc/reference/casyncsocket-class.md) encapsulates the Windows Sockets API one for one, giving advanced network programmers the most power and flexibility. Class [CSocket](../mfc/reference/csocket-class.md) provides a simplified interface for serializing data to and from a [CArchive](../mfc/reference/carchive-class.md) object. ## In This Section diff --git a/docs/mfc/windows.md b/docs/mfc/windows.md index b8c0f5aee20..92c62e35331 100644 --- a/docs/mfc/windows.md +++ b/docs/mfc/windows.md @@ -3,10 +3,12 @@ description: "Learn more about: Windows" title: "Windows" ms.date: "11/04/2016" helpviewer_keywords: ["objects [MFC], window", "windows [MFC]", "MFC, windows", "window objects [MFC], MFC Framework"] -ms.assetid: dd92bf34-842e-40fe-8aea-3028b55314d5 --- # Windows +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This family of articles covers window objects in the MFC framework. All MFC windows derive from class [CWnd](../mfc/reference/cwnd-class.md), including frame windows, views, dialog boxes, and controls. The first group of articles describes [window objects](../mfc/window-objects.md) in general. Refer to this group for general information about C++ window objects, how they encapsulate an `HWND`, and how you use them when creating your own windows, such as child windows. diff --git a/docs/mfc/wininet-basics.md b/docs/mfc/wininet-basics.md index 8dc432382e0..57b100acb73 100644 --- a/docs/mfc/wininet-basics.md +++ b/docs/mfc/wininet-basics.md @@ -3,10 +3,12 @@ description: "Learn more about: WinInet Basics" title: "WinInet Basics" ms.date: "11/04/2016" helpviewer_keywords: ["OnStatusCallback method [MFC]", "WinInet classes [MFC], displaying progress", "WinInet classes [MFC], about WinInet classes"] -ms.assetid: 665de5ac-e80d-427d-8d91-2ae466885940 --- # WinInet Basics +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + You can use WinInet to add FTP support to download and upload files from within your application. You can override [OnStatusCallback](../mfc/reference/cinternetsession-class.md#onstatuscallback) and use the *dwContext* parameter to provide progress information to users as you search for and download files. This article contains the following topics: diff --git a/docs/mfc/wizards-and-the-resource-editors.md b/docs/mfc/wizards-and-the-resource-editors.md index 5646150d063..d7b409d03e4 100644 --- a/docs/mfc/wizards-and-the-resource-editors.md +++ b/docs/mfc/wizards-and-the-resource-editors.md @@ -3,10 +3,12 @@ description: "Learn more about: Wizards and the Resource Editors" title: "Wizards and the Resource Editors" ms.date: "11/04/2016" helpviewer_keywords: ["application wizards [MFC], and MFC", "MFC, resource editors", "resource editors, MFC", "MFC Application Wizard", "editors [MFC], resource", "wizards [MFC]", "wizards [MFC], MFC programming", "MFC, wizards", "Class View tool, managing Windows messages"] -ms.assetid: f5dd4d13-9dc1-4a49-b6bf-5b3cb45fa8ba --- # Wizards and the Resource Editors +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Visual Studio includes several wizards for use in MFC programming, along with many integrated resource editors. For ActiveX controls programming, the [ActiveX Control Wizard](../mfc/reference/mfc-activex-control-wizard.md) serves a purpose much like that of the MFC Application Wizard. While you can write MFC applications without most of these tools, the tools greatly simplify and speed your work. ## Use the MFC Application Wizard to Create an MFC Application diff --git a/docs/mfc/word-breaks-in-rich-edit-controls.md b/docs/mfc/word-breaks-in-rich-edit-controls.md index c4bd94e11bb..860a8188dac 100644 --- a/docs/mfc/word-breaks-in-rich-edit-controls.md +++ b/docs/mfc/word-breaks-in-rich-edit-controls.md @@ -3,10 +3,12 @@ description: "Learn more about: Word Breaks in Rich Edit Controls" title: "Word Breaks in Rich Edit Controls" ms.date: "11/04/2016" helpviewer_keywords: ["CRichEditCtrl class [MFC], word breaks in", "word breaks", "breaking words in CRichEditCtrl", "rich edit controls [MFC], word breaks in"] -ms.assetid: 641dcf9e-7b40-4dc0-85f7-575a8c142f73 --- # Word Breaks in Rich Edit Controls +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + A rich edit control ([CRichEditCtrl](../mfc/reference/cricheditctrl-class.md)) calls a function called a "word break procedure" to find breaks between words and to determine where it can break lines. The control uses this information when performing word-wrap operations and when processing the CTRL+LEFT and CTRL+RIGHT key combinations. An application can send messages to a rich edit control to replace the default word-break procedure, to retrieve word-break information, and to determine what line a given character falls on. ## See also diff --git a/docs/mfc/working-with-a-header-control.md b/docs/mfc/working-with-a-header-control.md index 1cd98c32b13..d08784122db 100644 --- a/docs/mfc/working-with-a-header-control.md +++ b/docs/mfc/working-with-a-header-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Working with a Header Control" title: "Working with a Header Control" ms.date: "11/04/2016" helpviewer_keywords: ["header controls [MFC], working with", "header controls"] -ms.assetid: af3afb5c-bf97-451b-8fee-3adcb8257210 ms.topic: concept-article --- # Working with a Header Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The easy way to use a header control ([CHeaderCtrl](../mfc/reference/cheaderctrl-class.md)) is in conjunction with a list control; see [Using CListCtrl](../mfc/using-clistctrl.md) later in this topic family. You can also use a header control by itself. MFC calls `InitCommonControls` for you. The key tasks are as follows: - [Creating the header control](../mfc/creating-the-header-control.md) diff --git a/docs/mfc/working-with-a-tab-control.md b/docs/mfc/working-with-a-tab-control.md index e730f954acd..6e7adf73b88 100644 --- a/docs/mfc/working-with-a-tab-control.md +++ b/docs/mfc/working-with-a-tab-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Working with a Tab Control" title: "Working with a Tab Control" ms.date: "11/04/2016" helpviewer_keywords: ["CTabCtrl class [MFC], using", "tab controls [MFC], working with", "tab controls [MFC], using"] -ms.assetid: 819488e3-4944-44b7-9483-195edb8e0aed ms.topic: concept-article --- # Working with a Tab Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The easiest way to use a tab control ([CTabCtrl](../mfc/reference/ctabctrl-class.md)) is by adding it to a dialog template resource with the dialog editor. You can also use a tab control by itself. MFC calls `InitCommonControls` for you. The key tasks are as follows: - [Creating the tab control](../mfc/creating-the-tab-control.md) diff --git a/docs/mfc/working-with-the-toolbar-control.md b/docs/mfc/working-with-the-toolbar-control.md index 486ff79f32e..ed5fe057c34 100644 --- a/docs/mfc/working-with-the-toolbar-control.md +++ b/docs/mfc/working-with-the-toolbar-control.md @@ -3,11 +3,13 @@ description: "Learn more about: Working with the Toolbar Control" title: "Working with the Toolbar Control" ms.date: "11/04/2016" helpviewer_keywords: ["GetToolBarCtrl method [MFC]", "toolbars [MFC], accessing common control", "CToolBarCtrl class [MFC], accessing toolbar", "toolbar controls [MFC], accessing"] -ms.assetid: b19409d5-3831-42c7-80ae-195c49dc9085 ms.topic: how-to --- # Working with the Toolbar Control +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains how you can access the [CToolBarCtrl](../mfc/reference/ctoolbarctrl-class.md) object underlying a [CToolBar](../mfc/reference/ctoolbar-class.md) for greater control over your toolbars. This is an advanced topic. ## Procedures diff --git a/docs/mfc/working-with-window-objects.md b/docs/mfc/working-with-window-objects.md index 55547aac560..2630a6af645 100644 --- a/docs/mfc/working-with-window-objects.md +++ b/docs/mfc/working-with-window-objects.md @@ -3,11 +3,13 @@ description: "Learn more about: Working with Window Objects" title: "Working with Window Objects" ms.date: "11/04/2016" helpviewer_keywords: ["child windows [MFC], working with", "window objects [MFC], working with"] -ms.assetid: f73aa254-90e3-46a9-8e9b-d78b7054a331 ms.topic: concept-article --- # Working with Window Objects +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + Working with windows calls for two kinds of activity: - Handling Windows messages diff --git a/docs/mfc/writing-an-internet-client-application-using-mfc-wininet-classes.md b/docs/mfc/writing-an-internet-client-application-using-mfc-wininet-classes.md index 89176ac68ec..339dc335a7b 100644 --- a/docs/mfc/writing-an-internet-client-application-using-mfc-wininet-classes.md +++ b/docs/mfc/writing-an-internet-client-application-using-mfc-wininet-classes.md @@ -3,11 +3,13 @@ description: "Learn more about: Writing an Internet Client Application Using MFC title: "Writing an Internet Client Application Using MFC WinInet Classes" ms.date: "11/04/2016" helpviewer_keywords: ["Internet client applications [MFC]", "WinInet classes [MFC], programming", "Internet client applications [MFC], writing", "Internet applications [MFC], WinInet", "Internet applications [MFC], client applications", "MFC, Internet applications"] -ms.assetid: a2c4a40c-a94e-4b3e-9dbf-f8a8dc8e5428 ms.topic: concept-article --- # Writing an Internet Client Application Using MFC WinInet Classes +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The basis of every Internet client application is the Internet session. MFC implements Internet sessions as objects of class [CInternetSession](../mfc/reference/cinternetsession-class.md). Using this class, you can create one Internet session or several simultaneous sessions. To communicate with a server, you need a [CInternetConnection](../mfc/reference/cinternetconnection-class.md) object as well as a `CInternetSession`. You can create a `CInternetConnection` by using [CInternetSession::GetFtpConnection](../mfc/reference/cinternetsession-class.md#getftpconnection), [CInternetSession::GetHttpConnection](../mfc/reference/cinternetsession-class.md#gethttpconnection), or [CInternetSession::GetGopherConnection](../mfc/reference/cinternetsession-class.md#getgopherconnection). Each of these calls is specific to the protocol type. These calls do not open a file on the server for reading or writing. If you intend to read or write data, you must open the file as a separate step. diff --git a/docs/mfc/writing-mfc-applications.md b/docs/mfc/writing-mfc-applications.md index abb166fc975..b42cbf62a52 100644 --- a/docs/mfc/writing-mfc-applications.md +++ b/docs/mfc/writing-mfc-applications.md @@ -3,11 +3,13 @@ description: "Learn more about: Writing MFC Applications" title: "Writing MFC Applications" ms.date: "09/12/2018" helpviewer_keywords: ["Internet applications [MFC], MFC", "MFC, Internet applications", "application wizards [MFC], Internet applications", "MFC, application development"] -ms.assetid: 6a8d8a03-abfa-4976-86c2-c5773a4b7179 ms.topic: concept-article --- # Writing MFC Applications +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + This article explains the initial steps you take to develop your application. First, you must decide what kind of application you are writing. Several of the choices were discussed in [Application Design Choices](../mfc/application-design-choices.md). Will your application be: - Running on the Internet or an intranet diff --git a/docs/parallel/multithreading-with-cpp-and-mfc.md b/docs/parallel/multithreading-with-cpp-and-mfc.md index 7fc4d93386e..286a5155131 100644 --- a/docs/parallel/multithreading-with-cpp-and-mfc.md +++ b/docs/parallel/multithreading-with-cpp-and-mfc.md @@ -3,11 +3,13 @@ description: "Learn more about: Multithreading with C++ and MFC" title: "Multithreading with C++ and MFC" ms.date: "08/27/2018" helpviewer_keywords: ["MFC [C++], multithreading", "threading [C++], MFC", "worker threads [C++]", "synchronization classes [C++]", "synchronization [C++], multithreading", "threading [MFC], about threading", "CWinThread class, purpose of", "multithreading [C++], MFC", "threading [MFC]", "user interface threads [C++]"] -ms.assetid: 979605f8-3988-44b5-ac9c-b8cce7fcce14 ms.topic: concept-article --- # Multithreading with C++ and MFC +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. + The Microsoft Foundation Class (MFC) library provides support for multithreaded applications. This topic describes processes and threads and the MFC approach to multithreading. A process is an executing instance of an application. For example, when you double-click the Notepad icon, you start a process that runs Notepad. From 0f5a5aed3f2229589ea7eaa7acd6de5af458e02d Mon Sep 17 00:00:00 2001 From: paulth1 <42621139+paulth1@users.noreply.github.com> Date: Tue, 24 Feb 2026 17:01:05 -0800 Subject: [PATCH 330/619] edit pass: redistributing-microsoft-c++-files --- docs/windows/latest-supported-vc-redist.md | 90 +++++++++---------- docs/windows/redist-version-auditing.md | 54 +++++------ .../redistributing-an-atl-application.md | 25 +++--- ...uting-components-by-using-merge-modules.md | 6 +- .../windows/redistributing-the-mfc-library.md | 14 +-- ...istributing-visual-cpp-activex-controls.md | 6 +- .../redistributing-visual-cpp-files.md | 4 +- 7 files changed, 99 insertions(+), 100 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 7ddd701f486..18bb356f080 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -1,6 +1,6 @@ --- -title: "Latest supported Visual C++ Redistributable downloads" -description: "This article provides download links for the latest Visual C++ Redistributable packages." +title: Latest Supported Visual C++ Redistributable Downloads +description: This article provides download links for the latest Visual C++ Redistributable Packages. ms.date: 12/03/2025 helpviewer_keywords: [ @@ -20,12 +20,9 @@ ms.author: msaleh > [!NOTE] > Are you here to download Visual Studio? Go to [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/). -> [!TIP] -> Having issues installing the Visual C++ Redistributable? Check out the [troubleshooting guide](troubleshoot-vc-redistributable-installation-issues.md). - -This topic is for developers who need to install the Visual C++ runtime libraries with their app. If you're an end user trying to fix an app by updating the Visual C++ runtime libraries, contact the app vendor for instructions. +This article is for developers who need to install the Visual C++ Runtime Libraries with their app. If you're trying to fix an app by updating the Visual C++ Runtime Libraries, contact the app vendor for instructions. -To find the download you need, choose your version of Visual Studio from the table below. Each link takes you to the appropriate download section. +To find the download you need, choose your version of Visual Studio from the following table. Each link takes you to the appropriate download section. | Version | Section | |--|--| @@ -37,51 +34,56 @@ To find the download you need, choose your version of Visual Studio from the tab | Visual Studio 2008 | [Visual Studio 2008 (VC++ 9.0)](#visual-studio-2008-vc-90-sp1-no-longer-supported) | | Visual Studio 2005 | [Visual Studio 2005 (VC++ 8.0)](#visual-studio-2005-vc-80-sp1-no-longer-supported) | -Redistribution is permitted only for licensed Visual Studio users, as described in the [Visual Studio license terms](https://visualstudio.microsoft.com/license-terms/). For details on redistributing Visual C++ files, see [Redistributing Visual C++ Files](redistributing-visual-cpp-files.md). +> [!TIP] +> Are you having issues installing the Visual C++ Redistributable? Refer to the [Troubleshooting Guide](troubleshoot-vc-redistributable-installation-issues.md). + +Redistribution is permitted only for licensed Visual Studio users, as described in the [Visual Studio license terms](https://visualstudio.microsoft.com/license-terms/). For details on redistributing Visual C++ files, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). -A Visual C++ Redistributable installs Microsoft C and C++ runtime libraries. Many applications built using Microsoft C++ (MSVC) Build Tools require these libraries. If your app is built using those libraries, a Microsoft Visual C++ Redistributable package at least as recent as the build tools used to build your app must be installed on the target system along with the app. The Redistributable package architecture must match your app's target architecture (you can't install an ARM64 Redistributable on an x86 system, or an x64 Redistributable on an x86 system, for example). We recommend you use the latest Redistributable available for your version of Visual Studio. +A Visual C++ Redistributable installs Microsoft C and C++ Runtime Libraries. Many applications built by using Microsoft Visual C++ (MSVC) Build Tools require these libraries. If your app is built by using those libraries, a Microsoft Visual C++ Redistributable Package at least as recent as the build tools used to build your app must be installed on the target system along with the app. -## Visual C++ Redistributable v14 +The Redistributable package architecture must match your app's target architecture. (You can't install an ARM64 Redistributable on an x86 system or an x64 Redistributable on an x86 system, for example.) We recommend that you use the latest Redistributable available for your version of Visual Studio. -This table lists the latest supported Microsoft Visual C++ Redistributable v14 packages. The latest supported version has the most recently implemented C++ features, security, reliability, and performance improvements. It also includes the latest C++ standard language and library standards conformance updates. We recommend that you install this version for all applications created using MSVC C and C++ Build Tools available in Visual Studio 2017, 2019, 2022, or 2026. +## Visual C++ v14 Redistributable -Unlike older versions of Visual Studio that have infrequent redistributable updates, the version number isn't listed in the following table for the Visual C++ v14 Redistributable because it is updated frequently. To find the version number of the latest redistributable, download the one you're interested in using one of the following links. Then, look at its properties using Windows File Explorer. In the **Details** pane, the **File version** contains the version of the redistributable. +The following table lists the latest supported Microsoft Visual C++ v14 Redistributable Packages. The latest supported version has the most recently implemented C++ features, security, reliability, and performance improvements. It also includes the latest C++ standard language and library standards conformance updates. We recommend that you install this version for all applications created by using MSVC C and C++ Build Tools available in Visual Studio 2017, 2019, 2022, or 2026. + +Unlike older versions of Visual Studio that have infrequent redistributable updates, the version number isn't listed in the following table for the Visual C++ v14 Redistributable because it's updated frequently. To find the version number of the latest redistributable, download the one you're interested in by using one of the following links. Then, look at its properties by using Windows File Explorer. On the **Details** pane, **File version** contains the version of the redistributable. ### Latest supported redistributable version | Architecture | Link | Notes | |--|--|--| -| ARM64 | [https://aka.ms/vc14/vc_redist.arm64.exe](https://aka.ms/vc14/vc_redist.arm64.exe) | Permalink for latest supported ARM64 version | -| X86 | [https://aka.ms/vc14/vc_redist.x86.exe](https://aka.ms/vc14/vc_redist.x86.exe) | Permalink for latest supported x86 version | -| X64 | [https://aka.ms/vc14/vc_redist.x64.exe](https://aka.ms/vc14/vc_redist.x64.exe) | Permalink for latest supported x64 version. The X64 Redistributable package contains both ARM64 and X64 binaries. This package makes it easy to install required Visual C++ ARM64 binaries when the X64 Redistributable is installed on an ARM64 device. | +| ARM64 | [https://aka.ms/vc14/vc_redist.arm64.exe](https://aka.ms/vc14/vc_redist.arm64.exe) | Permalink for latest supported ARM64 version. | +| X86 | [https://aka.ms/vc14/vc_redist.x86.exe](https://aka.ms/vc14/vc_redist.x86.exe) | Permalink for latest supported x86 version. | +| X64 | [https://aka.ms/vc14/vc_redist.x64.exe](https://aka.ms/vc14/vc_redist.x64.exe) | Permalink for latest supported x64 version. The X64 Redistributable Package contains both ARM64 and X64 binaries. This package makes it easy to install required Visual C++ ARM64 binaries when the X64 Redistributable is installed on an ARM64 device. | -Download other versions, including long term servicing release channel (LTSC) versions, from [my.visualstudio.com](https://my.visualstudio.com/). +Download other versions, including long-term servicing release channel versions, from [my.visualstudio.com](https://my.visualstudio.com/). ### Notes -- Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Log in using a Visual Studio Subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or, create a free account by choosing the [**No account? Create one!**](https://my.visualstudio.com/). -- The Visual C++ v14 Redistributable doesn't have separate packages for different languages. License terms for different languages are available at [https://aka.ms/VCRedistLicense](https://aka.ms/VCRedistLicense). -- Visual Studio 2017 and later share the same Redistributable files. Any apps built by Microsoft C++ (MSVC) Build Tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ v14 Redistributable. The version of the redistributable installed on the machine must be the same or higher than the version of the MSVC Build Tools used to create your application. For more information about which version of the Redistributable to install, see [Determining which DLLs to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). -- The latest version of the Visual C++ v14 Redistributable included with Visual Studio 2026 only supports the following operating systems: +- Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Sign in by using a Visual Studio subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or to create a free account. select [No account? Create one!](https://my.visualstudio.com/). +- The Visual C++ v14 Redistributable doesn't have separate packages for different languages. License terms for different languages are available at [Microsoft Software License Terms](https://aka.ms/VCRedistLicense). +- Visual Studio 2017 and later share the same redistributable files. Any apps built by Microsoft Visual C++ (MSVC) Build Tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ v14 Redistributable. The version of the Redistributable installed on the machine must be the same or later than the version of the MSVC Build Tools used to create your application. For more information about which version of the Redistributable to install, see [Determine which dynamic-link-libraries (DLLs) to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). +- The latest version of the Visual C++ v14 Redistributable included with Visual Studio 2026 supports only the following operating systems: * Windows 10 and 11 * Windows Server 2016, 2019, 2022, and 2025 -- Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which it first ships, support for Visual C++ 2015 Redistributable (version 14.0.24212) also ended October 15, 2025. See [Visual Studio 2015 (VC++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section below for the latest available version.
-When Visual Studio 2015 support ended, the v14 runtime was binary compatible with applications built using the VS 2015 MSVC Build Tools. Since VS 2015 is no longer supported, we recommend updating your projects to use a supported MSVC Build Tools version and the latest v14 runtime. The Visual C++ Redistributable for 2017, and later, in-place upgrade the Visual C++ 2015 Redistributable (14.0.24212.0). Redistributables for 2013 and earlier remain installed side-by-side. +- Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which it first ships, support for Visual C++ 2015 Redistributable (version 14.0.24212) also ended October 15, 2025. For the latest available version, see the [Visual Studio 2015 (Visual C++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section.
+When Visual Studio 2015 support ended, the v14 runtime was binary compatible with applications built by using the Visual Studio 2015 MSVC Build Tools. Since Visual Studio 2015 is no longer supported, we recommend that you update your projects to use a supported MSVC Build Tools version and the latest v14 runtime. The Visual C++ Redistributable for 2017, and later, in-place upgrade the Visual C++ 2015 Redistributable (14.0.24212.0). Redistributables for 2013 and earlier remain installed side by side. -- The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). +- The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). ## Unsupported legacy versions ### Visual Studio 2015 (VC++ 14.0) (no longer supported) -To download the latest available version of Visual C++ Redistributable for Visual Studio 2015, please visit [my.visualstudio.com](https://my.visualstudio.com/) and search for "Visual C++ Redistributable for Visual Studio 2015" in the _Downloads_ section +To download the latest available version of Visual C++ Redistributable for Visual Studio 2015, see the [Visual Studio Subscriptions](https://my.visualstudio.com/) website. On the **Downloads** tab, search for **Visual C++ Redistributable for Visual Studio 2015**. -The latest version of Visual C++ Redistributable for Visual Studio 2015 is `14.0.24212.0`, available for ARM64, X86, and X64 architectures. +The latest version of Visual C++ Redistributable for Visual Studio 2015 is `14.0.24212.0` and is available for ARM64, X86, and X64 architectures. ### Visual Studio 2013 (VC++ 12.0) (no longer supported) -These links download the latest available en-US Microsoft Visual C++ Redistributable packages for Visual Studio 2013. -You can download other versions and languages from [Update for Visual C++ 2013 Redistributable Package](https://support.microsoft.com/topic/update-for-visual-c-2013-redistributable-package-d8ccd6a5-4e26-c290-517b-8da6cfdf4f10) or from [my.visualstudio.com](https://my.visualstudio.com/). +These links download the latest available en-US Microsoft Visual C++ Redistributable Packages for Visual Studio 2013. +You can download other versions and languages from [Update for Visual C++ 2013 Redistributable Package](https://support.microsoft.com/topic/update-for-visual-c-2013-redistributable-package-d8ccd6a5-4e26-c290-517b-8da6cfdf4f10) or from the [Visual Studio Subscriptions](https://my.visualstudio.com/) website. | Architecture | Version | Link | | ------------ | :----------: | ------------------------------------------------------: | @@ -90,15 +92,15 @@ You can download other versions and languages from [Update for Visual C++ 2013 R ### Other 2013 versions -- [Multibyte MFC Library for Visual Studio 2013](https://my.visualstudio.com/Downloads?pid=1430). This MFC add-on for Visual Studio 2013 contains the multibyte character set (MBCS) version of the Microsoft Foundation Class (MFC) Library. -- [Visual C++ 2013 Runtime for Sideloaded Windows 8.1 apps](https://download.microsoft.com/download/5/f/0/5f0f8404-9329-44a9-8176-ed6f7f746f25/vclibs_redist_packages.zip). For more information, see [C++ Runtime for Sideloaded Windows 8.1 apps](https://devblogs.microsoft.com/cppblog/c-runtime-for-sideloaded-windows-8-1-apps/) on the C++ Team Blog. +- [Multibyte Microsoft Foundation Class (MFC) Library for Visual Studio 2013](https://my.visualstudio.com/Downloads?pid=1430). This MFC add-on for Visual Studio 2013 contains the multibyte character set (MBCS) version of the MFC Library. +- [Visual C++ 2013 Runtime for sideloaded Windows 8.1 apps](https://download.microsoft.com/download/5/f/0/5f0f8404-9329-44a9-8176-ed6f7f746f25/vclibs_redist_packages.zip). For more information, see [C++ Runtime for sideloaded Windows 8.1 apps](https://devblogs.microsoft.com/cppblog/c-runtime-for-sideloaded-windows-8-1-apps/) on the C++ Team Blog. ### Visual Studio 2012 (VC++ 11.0) Update 4 (no longer supported) > [!NOTE] -> Visual Studio 2012 [reached end of extended support on Jan 10, 2023](/lifecycle/products/visual-studio-2012) +> Visual Studio 2012 [reached the end of extended support on January 10, 2023](/lifecycle/products/visual-studio-2012). -These links download the latest available en-US Microsoft Visual C++ Redistributable packages for Visual Studio 2012 Update 4. You can download other versions and languages from [Microsoft Visual C++ Redistributable Packages for Visual Studio 2012 Update 4](https://www.microsoft.com/download/details.aspx?id=30679) or from [my.visualstudio.com](https://my.visualstudio.com/Downloads?pid=1452). +These links download the latest available en-US Microsoft Visual C++ Redistributable Packages for Visual Studio 2012 Update 4. You can download other versions and languages from [Microsoft Visual C++ Redistributable Packages for Visual Studio 2012 Update 4](https://www.microsoft.com/download/details.aspx?id=30679) or from the [Visual Studio Subscriptions](https://my.visualstudio.com/Downloads?pid=1452) website. | Architecture | Version | Link | |--|:-:|-:| @@ -108,46 +110,42 @@ These links download the latest available en-US Microsoft Visual C++ Redistribut ### Visual Studio 2010 (VC++ 10.0) SP1 (no longer supported) > [!NOTE] -> Visual Studio 2010 Service Pack 1 [reached end of extended support on July 14, 2020](/lifecycle/products/visual-studio-2010) +> Visual Studio 2010 Service Pack 1 [reached the end of extended support on July 14, 2020](/lifecycle/products/visual-studio-2010). | Architecture | Version | Link | |--|:-:|-:| | X86 | 10.0.40219.325 | [vcredist_x86.exe](https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe) | | X64 | 10.0.40219.325 | [vcredist_x64.exe](https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x64.exe) | -Download Redistributable files for other languages and architectures from: - -- [Microsoft Visual C++ 2010 SP1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26999) +Download Redistributable files for other languages and architectures from [Microsoft Visual C++ 2010 SP1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26999). ### Visual Studio 2008 (VC++ 9.0) SP1 (no longer supported) > [!NOTE] -> Visual Studio 2008 Service Pack 1 [reached end of extended support on April 10, 2018](/lifecycle/products/visual-studio-2008) +> Visual Studio 2008 Service Pack 1 [reached the end of extended support on April 10, 2018](/lifecycle/products/visual-studio-2008). | Architecture | Version | Link | |--|:-:|-:| | X86 | 9.0.30729.5677 | [vcredist_x86.exe](https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe) | | X64 | 9.0.30729.5677 | [vcredist_x64.exe](https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe) | -Download Redistributable files for other languages and architectures from: - -- [Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26368) +Download redistributable files for other languages and architectures from [Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26368). ### Visual Studio 2005 (VC++ 8.0) SP1 (no longer supported) > [!NOTE] -> Visual Studio 2005 [reached end of extended support on April 12, 2016](/lifecycle/products/microsoft-visual-studio-2005) +> Visual Studio 2005 [reached the end of extended support on April 12, 2016](/lifecycle/products/microsoft-visual-studio-2005). -- Redistributable files for X86, X64, and IA64 architectures are available from [Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26347). +Redistributable files for X86, X64, and IA64 architectures are available from [Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26347). -## See also +## Related content - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) -- [How to audit Visual C++ Runtime version usage](redist-version-auditing.md) -- [Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) +- [Audit Visual C++ Runtime version usage](redist-version-auditing.md) +- [Lifecycle FAQ: Visual C++ Redistributable and Runtime Libraries](/lifecycle/faq/visual-c-faq) - [Troubleshoot Visual C++ Redistributable installation issues](troubleshoot-vc-redistributable-installation-issues.md) -**Release notes** +### Release notes - [What's new for C++ in Visual Studio](../overview/what-s-new-for-visual-cpp-in-visual-studio.md) - [Visual Studio 2026 release notes](/visualstudio/releases/2026/release-notes) @@ -156,7 +154,7 @@ Download Redistributable files for other languages and architectures from: - [A year of C++ improvements](https://devblogs.microsoft.com/cppblog/a-year-of-cpp-improvements-in-visual-studio-vs-code-and-vcpkg) - [Microsoft Visual C++ compiler versioning](../overview/compiler-versions.md) -**C++ conformance notes** +### C++ conformance notes - [C++ conformance improvements in Visual Studio](../overview/cpp-conformance-improvements.md) - [C++ conformance improvements in Visual Studio 2019](../overview/cpp-conformance-improvements-2019.md) diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index a2cc229117a..2e09b9c1607 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -1,6 +1,6 @@ --- -title: "How to audit Visual C++ Runtime version usage" -description: "A detailed guide for auditing Visual C++ Runtime file usage." +title: Audit Visual C++ Runtime Version Usage +description: A detailed guide for auditing Visual C++ Runtime file usage. ms.date: 1/27/2025 helpviewer_keywords: [ @@ -12,26 +12,26 @@ ms.author: msaleh ms.topic: how-to --- -# How to audit Visual C++ Runtime version usage +# Audit Visual C++ Runtime version usage -The Microsoft Visual C++ Redistributable and the Visual Studio C++ Runtime (collectively, "VC Runtime") are critical components of many applications. Across your network, machines may still be running applications that install and use an out-of-support version of the VC Runtime. You can use NTFS file auditing to identify such usage as a step towards replacing those applications with ones that use a supported version of the VC Runtime. This guide walks you through setting up NTFS file auditing, provides troubleshooting tips, and highlights the benefits of regular audits. +The Microsoft Visual C++ Redistributable and the Visual Studio C++ Runtime (collectively, "VC Runtime") are critical components of many applications. Across your network, machines might still be running applications that install and use an out-of-support version of the VC Runtime. You can use NTFS file auditing to identify such usage as a step toward replacing those applications with ones that use a supported version of the VC Runtime. This article walks you through setting up NTFS file auditing, provides troubleshooting tips, and highlights the benefits of regular audits. For more information about the versions of VC Runtime that are no longer supported, see [Microsoft Visual C++ Redistributable latest supported downloads](latest-supported-vc-redist.md). ## Enable NTFS file auditing to determine VC Runtime usage -This guide provides the steps to manually enable NTFS file auditing and review audit events to determine which applications are calling the unsupported versions of the VC Runtime. Because there are several files that can be used by an application, this guide also shows how to use PowerShell's [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl) and [`Set-Acl`](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update auditing permissions. For more information about how to configure audit policies for a file, see [Apply a basic audit policy on a file or folder](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder). +This article provides the steps to manually enable NTFS file auditing and review audit events to determine which applications are calling the unsupported versions of the VC Runtime. Because there are several files that can be used by an application, this article also shows how to use the PowerShell [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl) and [`Set-Acl`](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update auditing permissions. For more information about how to configure audit policies for a file, see [Apply a basic audit policy on a file or folder](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder). ### Manually enable object access auditing on the system Object access must be enabled before you enable file level auditing: 1. Open the **Local Group Policy Editor** by pressing `Windows` + `R` to open the **Run** dialog. Then type `gpedit.msc` and press **Enter**. -1. Navigate to **Computer Configuration** > **Windows Settings** > **Security Settings** > **Advanced Audit Policy Configuration** > **System Audit Policies** > **Object Access**. +1. Go to **Computer Configuration** > **Windows Settings** > **Security Settings** > **Advanced Audit Policy Configuration** > **System Audit Policies** > **Object Access**. 1. Double-click **Audit File System**. In the **Audit File System Properties** dialog, select **Configure the following audit events** > **Success** > **OK**. 1. Close the **Local Group Policy Editor**. -Alternatively, you may use `auditpol.exe` to enable object access: +Alternatively, you can use `auditpol.exe` to enable object access: 1. List the current settings from the command line with `AuditPol.exe /get /category:"Object Access"`. 1. Enable object access with `AuditPol.exe /set /category:"Object Access" /subcategory:"File System" /success:enable`. @@ -42,12 +42,12 @@ To monitor which process accesses a VC Runtime file, enable auditing on the VC R 1. Right-click the file that you want to audit, select **Properties**, and then select the **Security** tab. For more information about finding installed VC Runtime files, see [VC Runtime installed locations](#vcruntime_install_location). 1. Select **Advanced**. -1. In the **Advanced Security Settings** dialog box, select the **Auditing** tab and then select **Continue**. -1. To add a new auditing rule, select **Add**. In the **Auditing Entry** dialog, select a principal, then type the name of the user or group you want to add such as **(Everyone)**, and then select **OK**. -1. In **Type**, select ensure that **Success** is selected. +1. In the **Advanced Security Settings** dialog, select the **Auditing** tab and then select **Continue**. +1. To add a new auditing rule, select **Add**. In the **Auditing Entry** dialog, select a principal, and then enter the name of the user or group you want to add, such as **(Everyone)**. Then select **OK**. +1. In **Type**, ensure that **Success** is selected. 1. Select **Show advance permissions** > **Clear all** > **Traverse folder / execute file** > **OK**. -1. There should now be a new row in the **Auditing** entries matching what you have selected. Select **OK**. -1. In the **Properties** Dialog, select **OK**. +1. There should now be a new row in the **Auditing** entries matching what you selected. Select **OK**. +1. In the **Properties** dialog, select **OK**. The audit rule is now enabled for the file. @@ -55,17 +55,17 @@ The audit rule is now enabled for the file. NTFS file auditing generates ["Event 4663: An attempt was made to access an object"](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) for each file that includes the audit permission and is accessed by a process. -1. Open the **Event Viewer** by pressing `Windows` + `R` to open the **Run** dialog. Then type `eventvwr.msc`, and press **Enter**. -1. Navigate to the **Security** logs in the **Event Viewer** by expanding **Windows Logs** > **Security**. The results pane lists security events. -1. Find the audit events by choosing **Filter Current Log...** in the **Actions** pane. Narrow down the events to **Event ID 4663 (Audit Success for the File System Category)** by entering **4663 into the Includes/Excludes Event IDs** text box. +1. Open the **Event Viewer** by selecting **Windows** + **R** to open the **Run** dialog. Then enter **eventvwr.msc** and select **Enter**. +1. Go to the **Security** logs in the **Event Viewer** by expanding **Windows Logs** > **Security**. The results pane lists security events. +1. Find the audit events by choosing **Filter Current Log...** in the **Actions** pane. Narrow down the events to **Event ID 4663 (Audit Success for the File System Category)** by entering **4663** into the **Includes/Excludes Event IDs** text box. -For an example of a File Access Auditing Event 4663, see ["4663(S): An attempt was made to access an object."](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) +For an example of a File Access Auditing Event 4663, see ["4663(S): An attempt was made to access an object."](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663). ### Use PowerShell to audit VC Runtime usage -As an overview, updating File Auditing Permissions with PowerShell follows these steps: +To update File Auditing Permissions with PowerShell, follow these steps: -1. Define the [file system audit rule](/dotnet/api/system.security.accesscontrol.filesystemauditrule.-ctor) to apply to the file(s). +1. Define the [file system audit rule](/dotnet/api/system.security.accesscontrol.filesystemauditrule.-ctor) to apply to the files. 1. Obtain a file's security descriptor with [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl). 1. [Apply the audit rule](/dotnet/api/system.security.accesscontrol.filesystemsecurity.setaccessrule) to the security descriptor. 1. Apply the updated security descriptor on the original file with [`Set-Acl`](/powershell/module/microsoft.powershell.security/set-acl). @@ -122,7 +122,7 @@ ForEach-Object { ### PowerShell: View file audit events -PowerShell provides `Get-WinEvent` to get event records for various event logs as shown in the following PowerShell code that lists all of the Auditing Event 4663 records over the past 24 hours: +PowerShell provides `Get-WinEvent` to get event records for various event logs, as shown in the following PowerShell code that lists all of the Auditing Event 4663 records over the past 24 hours: ```powershell function Get-AuditEntries { @@ -171,9 +171,9 @@ ResourceAttributes : S:AI ### Next steps after auditing VC Runtime usage -After you have determined which processes are using the VC Runtime files, or which applications have installed the VC Redistributable, uninstall those applications or upgrade them to newer versions that don't depend on unsupported VC Runtimes. +After you determine which processes use the VC Runtime files, or which applications installed the VC Redistributable, uninstall those applications or upgrade them to newer versions that don't depend on unsupported VC Runtimes. -Some Microsoft applications require legacy versions of the VC Runtime. For details, see [Visual C++ Redistributable and runtime libraries FAQ | Microsoft Learn](/lifecycle/faq/visual-c-faq). +Some Microsoft applications require legacy versions of the VC Runtime. For details, see [Visual C++ Redistributable and Runtime Libraries FAQ | Microsoft Learn](/lifecycle/faq/visual-c-faq). @@ -181,7 +181,7 @@ Some Microsoft applications require legacy versions of the VC Runtime. For detai Here is where each version of the VC Runtime is installed: -| **Visual Studio Version**| **Installed Location(s)**| +| Visual Studio version| Installed locations| | ------------- | ------------- | | Visual Studio 2013 (VC++ 12.0) | `%SystemRoot%\\System32, %SystemRoot%\\SysWOW64` | | Visual Studio 2012 (VC++ 11.0) | `%SystemRoot%\\System32, %SystemRoot%\\SysWOW64` | @@ -189,9 +189,9 @@ Here is where each version of the VC Runtime is installed: | Visual Studio 2008 (VC++ 9.0) | `%SystemRoot%\\WinSxS\\Fusion` | | Visual Studio 2005 (VC++ 8.0) | `%SystemRoot%\\WinSxS\\Fusion` | -## See also +## Related content -[Redistributing Visual C++ Files](redistributing-visual-cpp-files.md)\ -[The latest supported Visual C++ downloads](latest-supported-vc-redist.md)\ -[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq)\ -[C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) +- [Redistribute Visual C++ files](redistributing-visual-cpp-files.md)\ +- [The latest supported Visual C++ downloads](latest-supported-vc-redist.md)\ +- [Lifecycle FAQ: Visual C++ Redistributable and Runtime Libraries](/lifecycle/faq/visual-c-faq)\ +- [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) diff --git a/docs/windows/redistributing-an-atl-application.md b/docs/windows/redistributing-an-atl-application.md index 84bb01ef68b..a226fc8848b 100644 --- a/docs/windows/redistributing-an-atl-application.md +++ b/docs/windows/redistributing-an-atl-application.md @@ -1,16 +1,16 @@ --- -description: "Learn more about: Redistributing an ATL application" -title: "Redistributing an ATL application" +title: Redistribute an ATL Application +description: Learn more about how to redistribute an ATL application. ms.date: "11/04/2016" helpviewer_keywords: ["ATL, redistributing", "redistributing ATL", "redistributing OLE DB templates", "OLE DB templates, redistributing"] ms.assetid: 9a696b22-2345-43ec-826b-be7cb8cfd676 ms.topic: concept-article --- -# Redistributing an ATL application +# Redistribute an ATL application -Starting in Visual Studio 2012, Active Template Library (ATL) is a header-only library. ATL projects do not have a Dynamic Link to ATL option. No redistributable ATL library is required. +Starting in Visual Studio 2012, Active Template Library (ATL) is a header-only library. ATL projects don't have a dynamic link to an ATL option. No redistributable ATL library is required. -If you redistribute an ATL executable application, you must register the .exe file (and any controls inside it) by issuing the following command: +If you redistribute an ATL executable application, you must register the `.exe` file (and any controls inside it). Use the following command: ``` filename /regserver @@ -18,15 +18,16 @@ filename /regserver where `filename` is the name of the executable file. -In Visual Studio 2010, an ATL project can be built for a MinDependency or a MinSize configuration. A MinDependency configuration is what you get when you set the **Use of ATL** property to **Static Link to ATL** on the **General** property page and set the **Runtime Library** property to **Multi-threaded (/MT)** on the **Code Generation** property page (C/C++ folder). +In Visual Studio 2010, you can build an ATL project for a `MinDependency` or a `MinSize` configuration: -A MinSize configuration is what you get when you set the **Use of ATL** property to **Dynamic Link to ATL** on the **General** property page, or set the **Runtime Library** property to **Multi-threaded DLL (/MD)** on the **Code Generation** property page (C/C++ folder). +- To get a `MinDependency` configuration, on the **General** property page, set the **Use of ATL** property to **Static Link to ATL**. On the **Code Generation** property page (C/C++ folder), set the **Runtime Library** property to **Multi-threaded (/MT)**. +- To get a `MinSize` configuration, on the **General** property page, set the **Use of ATL** property to **Dynamic Link to ATL**. Or on the **Code Generation** property page (C/C++ folder), set the **Runtime Library** property to **Multi-threaded DLL (/MD)**. -MinSize makes the output file as small as possible but requires that ATL100.dll and Msvcr100.dll (if you selected the **Multi-threaded DLL (/MD)** option) are on the target computer. ATL100.dll should be registered on the target computer to ensure that all ATL functionality is present. ATL100.dll contains ANSI and Unicode exports. +`MinSize` makes the output file as small as possible but requires that `ATL100.dll` and `Msvcr100.dll` (if you selected the **Multi-threaded DLL (/MD)** option) are on the target computer. Register `ATL100.dll` on the target computer to ensure that all ATL functionality is present. `ATL100.dll` contains ANSI and Unicode exports. -If you build your ATL or OLE DB Templates project for a MinDependency target, you do not need to install and register ATL100.dll on the target computer, although you might get a larger program image. +If you build your ATL or OLE DB templates project for a `MinDependency` target, you don't need to install and register `ATL100.dll` on the target computer, although you might get a larger program image. -If you redistribute an ATL executable application, you must register the .exe file (and any controls inside it) by issuing the following command: +If you redistribute an ATL executable application, you must register the `.exe` file (and any controls inside it). Use the following command: ``` filename /regserver @@ -34,6 +35,6 @@ filename /regserver where `filename` is the name of the executable file. -## See also +## Related content -[Redistributing Visual C++ Files](redistributing-visual-cpp-files.md) +- [Redistribute Visual C++ files](redistributing-visual-cpp-files.md) diff --git a/docs/windows/redistributing-components-by-using-merge-modules.md b/docs/windows/redistributing-components-by-using-merge-modules.md index 531ef3479d0..814fdfb1822 100644 --- a/docs/windows/redistributing-components-by-using-merge-modules.md +++ b/docs/windows/redistributing-components-by-using-merge-modules.md @@ -1,6 +1,6 @@ --- -description: "Learn More About: Redistribute Components by Using Merge Modules" -title: Learn more about redistributing components by using merge modules. +title: Redistribute Components by Using Merge Modules +description: Learn more about how to redistribute components by using merge modules. ms.date: 06/08/2022 helpviewer_keywords: ["merge modules, using", "redistributing applications, using merge modules"] ms.assetid: 93b84211-bf9b-4a78-9f22-474ac2ef7840 @@ -15,7 +15,7 @@ ms.topic: concept-article > > When you use a redistributable package for central deployment, you aren't responsible for tracking and updating the runtime libraries as part of your application maintenance. The Microsoft Update service updates these libraries for you. Otherwise, an update to the runtime library files requires you to update and redeploy your `.msi` installer. Your app could be vulnerable to bugs or security issues until you do. -Visual Studio includes [merge modules](/windows/win32/Msi/about-merge-modules) (`.msm` files) for each Visual C++ component that's licensed for redistribution with an application. There are separate versions of the merge modules for each target platform. When a merge module is compiled into a Windows Installer setup file, it enables the deployment of Visual C++ Redistributable files to that specific platform. You can't include merge modules for different versions of the same dynamic link library (DLL) in one installer. In your installer setup file, specify that the merge modules are prerequisites for your application. +Visual Studio includes [merge modules](/windows/win32/Msi/about-merge-modules) (`.msm` files) for each Visual C++ component that's licensed for redistribution with an application. There are separate versions of the merge modules for each target platform. When a merge module is compiled into a Windows Installer setup file, it enables the deployment of Visual C++ Redistributable files to that specific platform. You can't include merge modules for different versions of the same dynamic-link library (DLL) in one installer. In your installer setup file, specify that the merge modules are prerequisites for your application. You can use merge modules for either [central deployment](deployment-in-visual-cpp.md#central-deployment) or [local deployment](deployment-in-visual-cpp.md#local-deployment). Users can't install centrally deployed files unless they have administrator rights. Local deployment might allow a nonadministrator to install and run your app, but at the cost of independent serviceability. diff --git a/docs/windows/redistributing-the-mfc-library.md b/docs/windows/redistributing-the-mfc-library.md index 313859cce13..470fa794f85 100644 --- a/docs/windows/redistributing-the-mfc-library.md +++ b/docs/windows/redistributing-the-mfc-library.md @@ -1,28 +1,28 @@ --- -description: "Learn More About: Redistribute the MFC Library" -title: Learn more about redistributing the MFC library. +title: Redistribute the MFC Library +description: Learn more about how to redistribute the MFC Library. ms.date: "11/04/2016" helpviewer_keywords: ["MFC, redistributing", "redistributing MFC library"] ms.assetid: 72714ce1-385e-4c1c-afa5-96b03e873866 ms.topic: concept-article --- -# Redistribute the MFC library +# Redistribute the MFC Library -If you dynamically link your application to the Microsoft Foundation Class (MFC) library, you must redistribute the matching MFC dynamic link library (DLL). For example, if your MFC app is built by using the version of MFC that ships with Visual Studio 2015, you must redistribute `mfc140.dll` or `mfc140u.dll`, depending on whether your app is compiled for narrow characters or Unicode support. +If you dynamically link your application to the Microsoft Foundation Class (MFC) Library, you must redistribute the matching MFC dynamic-link library (DLL). For example, if your MFC app is built by using the version of MFC that ships with Visual Studio 2015, you must redistribute `mfc140.dll` or `mfc140u.dll`, depending on whether your app is compiled for narrow characters or Unicode support. > [!NOTE] > The `mfc140.dll` files were omitted from the redistributable files directory in Visual Studio 2015 RTM. You can use the versions installed by Visual Studio 2015 in the `Windows\system32 and Windows\syswow64` directories instead. -Because all MFC DLLs use the shared version of the C runtime library (CRT), you might also need to redistribute the CRT. The version of MFC that ships with Visual Studio 2015 uses the Universal CRT library, which is distributed as part of Windows 10 and Windows 11. To run an MFC application built by using Visual Studio 2015 on earlier versions of Windows, you must redistribute the Universal CRT. +Because all MFC DLLs use the shared version of the Microsoft C Runtime Library (CRT), you might also need to redistribute the CRT. The version of MFC that ships with Visual Studio 2015 uses the Universal CRT Library, which is distributed as part of Windows 10 and Windows 11. To run an MFC application built by using Visual Studio 2015 on earlier versions of Windows, you must redistribute the Universal CRT. For information on how to redistribute the Universal CRT as an operating system component or by using local deployment, see [Introducing the Universal CRT](https://devblogs.microsoft.com/cppblog/introducing-the-universal-crt/). To download the Universal CRT for central deployment on supported versions of Windows, see [Windows 10 Universal C Runtime](https://www.microsoft.com/download/details.aspx?id=48234). You can find redistributable architecture-specific versions of `ucrtbase.dll` for local deployment in the Windows SDK. By default, Visual Studio installs these versions in `C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\` in an architecture-specific subdirectory. -If your app is built by using an earlier version of the MFC library, you must redistribute the matching CRT DLL from the redistributable files directory. For example, if your MFC application is built by using the Visual Studio 2013 (vc120) toolset, you must redistribute the `msvcr120.dll`. You also have to redistribute the matching `mfc``u.dll` or `mfc``.dll`. +If your app is built by using an earlier version of the MFC Library, you must redistribute the matching CRT DLL from the redistributable files directory. For example, if your MFC application is built by using the Visual Studio 2013 (vc120) toolset, you must redistribute the `msvcr120.dll`. You also have to redistribute the matching `mfc``u.dll` or `mfc``.dll`. -If you statically link your application to MFC (that is, if you specify **Use MFC in a Static Library** on the **General** tab in the **Property Pages** dialog), you don't have to redistribute an MFC DLL. Although static linking might work for testing and internal deployment of applications, we recommend that you don't use it to redistribute MFC. For more information about the recommended strategies for deploying Visual C++ libraries, see [Choose a deployment method](choosing-a-deployment-method.md). +If you statically link your application to MFC (in the **Property Pages** dialog, on the **General** tab, select **Use MFC in a Static Library**), you don't have to redistribute an MFC DLL. Although static linking might work for testing and internal deployment of applications, we recommend that you don't use it to redistribute MFC. For more information about the recommended strategies for deploying Visual C++ libraries, see [Choose a deployment method](choosing-a-deployment-method.md). If your application uses the MFC classes that implement the WebBrowser control (for example, [CHtmlView class](../mfc/reference/chtmlview-class.md) or [CHtmlEditView class](../mfc/reference/chtmleditview-class.md)), we recommend that you also install the most current version of Internet Explorer so that the target computer has the most current common control files. (At a minimum, Internet Explorer 4.0 is required.) Information about how to install Internet Explorer components is available in "Article 185375: How to Create a Single EXE Install of Internet Explorer" on the Microsoft Support website. diff --git a/docs/windows/redistributing-visual-cpp-activex-controls.md b/docs/windows/redistributing-visual-cpp-activex-controls.md index 1cb9bd521f7..93b6d3156bf 100644 --- a/docs/windows/redistributing-visual-cpp-activex-controls.md +++ b/docs/windows/redistributing-visual-cpp-activex-controls.md @@ -1,6 +1,6 @@ --- -description: "Learn More About: Redistribute Visual C++ ActiveX Controls" -title: Learn more about redistributing Visual C++ ActiveX controls. +title: Redistribute Visual C++ ActiveX Controls +description: Learn more about how to redistribute Visual C++ ActiveX controls. ms.date: "11/04/2016" helpviewer_keywords: ["controls [C++], redistributing", "controls [C++], distributing"] ms.assetid: eefbb7e4-d28c-4c35-98bf-d9540cfaae83 @@ -23,7 +23,7 @@ When you distribute applications, you must install and register the `.ocx` for t - `Olepro32.dll`\* - `Stdole2.tlb` -If these dynamic link libraries (DLLs) aren't available on the target system, you must get them updated by using the prescribed mechanism for updating the corresponding operating system. +If these dynamic-link libraries (DLLs) aren't available on the target system, you must get them updated by using the prescribed mechanism for updating the corresponding operating system. When you use an ActiveX control that connects to a database, you also need to replicate the data source name on the target computer. You can do this task programmatically with functions such as `ConfigDSN`. diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index 049c8d504e3..7e802ee221e 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -1,6 +1,6 @@ --- title: Redistribute Visual C++ Files -description: Visual Studio includes redistributable libraries and components that you can deploy with your app. +description: Learn about Visual Studio redistributable libraries and components that you can deploy with your app. ms.date: 01/15/2025 helpviewer_keywords: ["application deployment [C++], file redistributing", "redistributing applications [C++]", "deploying applications [C++], file redistributing", "file redistribution [C++]", "redistributing applications [C++], about redistributing applications"] ms.topic: concept-article @@ -40,7 +40,7 @@ To view the "REDIST list" that's referenced in the "Distributable Code" section ::: moniker-end -For more information about redistributable files, see [Determine which dynamic link libraries (DLLs) to redistribute](determining-which-dlls-to-redistribute.md) and [Deployment examples](deployment-examples.md). +For more information about redistributable files, see [Determine which dynamic-link libraries (DLLs) to redistribute](determining-which-dlls-to-redistribute.md) and [Deployment examples](deployment-examples.md). ## Locate the redistributable files From e8f28de7c618efccfc4a0cc3f618d34956c6b70a Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 25 Feb 2026 14:38:00 -0800 Subject: [PATCH 331/619] add lifecycle note to the ATL docs (#6268) * test * test * fix path * fix note --- docs/atl/includes/lifecycle-note.md | 3 +++ docs/atl/recommendations-for-choosing-between-atl-and-mfc.md | 2 +- docs/atl/tear-off-interfaces-classes.md | 3 ++- docs/mfc/mfc-and-atl.md | 2 +- docs/mfc/reference/adding-atl-support-to-your-mfc-project.md | 4 ++-- .../details-of-atl-support-added-by-the-atl-wizard.md | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 docs/atl/includes/lifecycle-note.md diff --git a/docs/atl/includes/lifecycle-note.md b/docs/atl/includes/lifecycle-note.md new file mode 100644 index 00000000000..7d403694aaa --- /dev/null +++ b/docs/atl/includes/lifecycle-note.md @@ -0,0 +1,3 @@ +>[!NOTE] +> The Active Template Library (ATL) continues to be supported. However, we're no longer adding features or updating the documentation. + diff --git a/docs/atl/recommendations-for-choosing-between-atl-and-mfc.md b/docs/atl/recommendations-for-choosing-between-atl-and-mfc.md index df9f94e0a58..f52522b644c 100644 --- a/docs/atl/recommendations-for-choosing-between-atl-and-mfc.md +++ b/docs/atl/recommendations-for-choosing-between-atl-and-mfc.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["MFC, ATL support", "ATL, vs. MFC"] # Recommendations for Choosing Between ATL and MFC >[!NOTE] -> The Microsoft Foundation Classes (MFC) and Active Template Library (ATL) libraries continue to be supported. However, we're no longer adding features or updating the documentation. +> The Microsoft Foundation Classes library (MFC) and Active Template Library (ATL) continue to be supported. However, we're no longer adding features or updating the documentation. When developing components and applications, you can choose between two approaches — ATL and MFC (the Microsoft Foundation Class Library). diff --git a/docs/atl/tear-off-interfaces-classes.md b/docs/atl/tear-off-interfaces-classes.md index 0f6c3667bd5..9de3758a0d8 100644 --- a/docs/atl/tear-off-interfaces-classes.md +++ b/docs/atl/tear-off-interfaces-classes.md @@ -4,10 +4,11 @@ title: "Tear-Off Interfaces Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["interfaces, tear-off", "tear-off interfaces classes"] -ms.assetid: 14e4ab01-9213-43e5-bef5-78af1e6206ff --- # Tear-Off Interfaces Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes provide support for tear-off interfaces: - [CComTearOffObject](../atl/reference/ccomtearoffobject-class.md) Implements `IUnknown` for a tear-off interface. diff --git a/docs/mfc/mfc-and-atl.md b/docs/mfc/mfc-and-atl.md index aa2f69dadc0..424ca2dd106 100644 --- a/docs/mfc/mfc-and-atl.md +++ b/docs/mfc/mfc-and-atl.md @@ -8,7 +8,7 @@ ms.custom: intro-overview # MFC and ATL >[!NOTE] -> The Microsoft Foundation Classes (MFC) and Active Template Library (ATL) libraries continue to be supported. However, we're no longer adding features or updating the documentation. +> The Microsoft Foundation Classes (MFC) library and Active Template Library (ATL) continue to be supported. However, we're no longer adding features or updating the documentation. The Microsoft Foundation Classes (MFC) provide a C++ object-oriented wrapper over Win32 for rapid development of native desktop applications. The Active Template Library (ATL) is a wrapper library that simplifies COM development and is used extensively for creating ActiveX controls. diff --git a/docs/mfc/reference/adding-atl-support-to-your-mfc-project.md b/docs/mfc/reference/adding-atl-support-to-your-mfc-project.md index db988111e96..0648dcb7ea1 100644 --- a/docs/mfc/reference/adding-atl-support-to-your-mfc-project.md +++ b/docs/mfc/reference/adding-atl-support-to-your-mfc-project.md @@ -8,8 +8,8 @@ helpviewer_keywords: ["MFC, ATL support", "ATL, MFC projects"] # Adding ATL Support to Your MFC Project >[!NOTE] -> The Microsoft Foundation Classes (MFC) and Active Template Library (ATL) libraries continue to be supported. However, we're no longer adding features or updating the documentation. -> Active Template Library (ATL) support applies only to simple COM objects added to an MFC executable or DLL project. You can add other COM objects (including ActiveX controls) to MFC projects, but the objects might not operate as expected. +> The Microsoft Foundation Classes (MFC) library and Active Template Library (ATL) continue to be supported. However, we're no longer adding features or updating the documentation. +> ATL support applies only to simple COM objects added to an MFC executable or DLL project. You can add other COM objects (including ActiveX controls) to MFC projects, but the objects might not operate as expected. If you have already created an MFC-based application, then you can add support for the Active Template Library (ATL) easily by using the IDE. diff --git a/docs/mfc/reference/details-of-atl-support-added-by-the-atl-wizard.md b/docs/mfc/reference/details-of-atl-support-added-by-the-atl-wizard.md index 087069bbf41..938589b2b95 100644 --- a/docs/mfc/reference/details-of-atl-support-added-by-the-atl-wizard.md +++ b/docs/mfc/reference/details-of-atl-support-added-by-the-atl-wizard.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["MFC, ATL support", "ATL, MFC projects"] # Details of ATL Support Added by the ATL Wizard >[!NOTE] -> The Microsoft Foundation Classes (MFC) and Active Template Library (ATL) libraries continue to be supported. However, we're no longer adding features or updating the documentation. +> The Microsoft Foundation Classes (MFC) library and Active Template Library (ATL) continue to be supported. However, we're no longer adding features or updating the documentation. ::: moniker range=">=msvc-160" From 7dd9d68db7ea6b6c5065fdd72bf4c6fef7937c8e Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Wed, 25 Feb 2026 14:38:00 -0800 Subject: [PATCH 332/619] add lifecycle note to the ATL docs (#6268) * test * test * fix path * fix note --- docs/atl/includes/lifecycle-note.md | 3 +++ docs/atl/recommendations-for-choosing-between-atl-and-mfc.md | 2 +- docs/atl/tear-off-interfaces-classes.md | 3 ++- docs/mfc/mfc-and-atl.md | 2 +- docs/mfc/reference/adding-atl-support-to-your-mfc-project.md | 4 ++-- .../details-of-atl-support-added-by-the-atl-wizard.md | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 docs/atl/includes/lifecycle-note.md diff --git a/docs/atl/includes/lifecycle-note.md b/docs/atl/includes/lifecycle-note.md new file mode 100644 index 00000000000..7d403694aaa --- /dev/null +++ b/docs/atl/includes/lifecycle-note.md @@ -0,0 +1,3 @@ +>[!NOTE] +> The Active Template Library (ATL) continues to be supported. However, we're no longer adding features or updating the documentation. + diff --git a/docs/atl/recommendations-for-choosing-between-atl-and-mfc.md b/docs/atl/recommendations-for-choosing-between-atl-and-mfc.md index df9f94e0a58..f52522b644c 100644 --- a/docs/atl/recommendations-for-choosing-between-atl-and-mfc.md +++ b/docs/atl/recommendations-for-choosing-between-atl-and-mfc.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["MFC, ATL support", "ATL, vs. MFC"] # Recommendations for Choosing Between ATL and MFC >[!NOTE] -> The Microsoft Foundation Classes (MFC) and Active Template Library (ATL) libraries continue to be supported. However, we're no longer adding features or updating the documentation. +> The Microsoft Foundation Classes library (MFC) and Active Template Library (ATL) continue to be supported. However, we're no longer adding features or updating the documentation. When developing components and applications, you can choose between two approaches — ATL and MFC (the Microsoft Foundation Class Library). diff --git a/docs/atl/tear-off-interfaces-classes.md b/docs/atl/tear-off-interfaces-classes.md index 0f6c3667bd5..9de3758a0d8 100644 --- a/docs/atl/tear-off-interfaces-classes.md +++ b/docs/atl/tear-off-interfaces-classes.md @@ -4,10 +4,11 @@ title: "Tear-Off Interfaces Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["interfaces, tear-off", "tear-off interfaces classes"] -ms.assetid: 14e4ab01-9213-43e5-bef5-78af1e6206ff --- # Tear-Off Interfaces Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes provide support for tear-off interfaces: - [CComTearOffObject](../atl/reference/ccomtearoffobject-class.md) Implements `IUnknown` for a tear-off interface. diff --git a/docs/mfc/mfc-and-atl.md b/docs/mfc/mfc-and-atl.md index aa2f69dadc0..424ca2dd106 100644 --- a/docs/mfc/mfc-and-atl.md +++ b/docs/mfc/mfc-and-atl.md @@ -8,7 +8,7 @@ ms.custom: intro-overview # MFC and ATL >[!NOTE] -> The Microsoft Foundation Classes (MFC) and Active Template Library (ATL) libraries continue to be supported. However, we're no longer adding features or updating the documentation. +> The Microsoft Foundation Classes (MFC) library and Active Template Library (ATL) continue to be supported. However, we're no longer adding features or updating the documentation. The Microsoft Foundation Classes (MFC) provide a C++ object-oriented wrapper over Win32 for rapid development of native desktop applications. The Active Template Library (ATL) is a wrapper library that simplifies COM development and is used extensively for creating ActiveX controls. diff --git a/docs/mfc/reference/adding-atl-support-to-your-mfc-project.md b/docs/mfc/reference/adding-atl-support-to-your-mfc-project.md index db988111e96..0648dcb7ea1 100644 --- a/docs/mfc/reference/adding-atl-support-to-your-mfc-project.md +++ b/docs/mfc/reference/adding-atl-support-to-your-mfc-project.md @@ -8,8 +8,8 @@ helpviewer_keywords: ["MFC, ATL support", "ATL, MFC projects"] # Adding ATL Support to Your MFC Project >[!NOTE] -> The Microsoft Foundation Classes (MFC) and Active Template Library (ATL) libraries continue to be supported. However, we're no longer adding features or updating the documentation. -> Active Template Library (ATL) support applies only to simple COM objects added to an MFC executable or DLL project. You can add other COM objects (including ActiveX controls) to MFC projects, but the objects might not operate as expected. +> The Microsoft Foundation Classes (MFC) library and Active Template Library (ATL) continue to be supported. However, we're no longer adding features or updating the documentation. +> ATL support applies only to simple COM objects added to an MFC executable or DLL project. You can add other COM objects (including ActiveX controls) to MFC projects, but the objects might not operate as expected. If you have already created an MFC-based application, then you can add support for the Active Template Library (ATL) easily by using the IDE. diff --git a/docs/mfc/reference/details-of-atl-support-added-by-the-atl-wizard.md b/docs/mfc/reference/details-of-atl-support-added-by-the-atl-wizard.md index 087069bbf41..938589b2b95 100644 --- a/docs/mfc/reference/details-of-atl-support-added-by-the-atl-wizard.md +++ b/docs/mfc/reference/details-of-atl-support-added-by-the-atl-wizard.md @@ -9,7 +9,7 @@ helpviewer_keywords: ["MFC, ATL support", "ATL, MFC projects"] # Details of ATL Support Added by the ATL Wizard >[!NOTE] -> The Microsoft Foundation Classes (MFC) and Active Template Library (ATL) libraries continue to be supported. However, we're no longer adding features or updating the documentation. +> The Microsoft Foundation Classes (MFC) library and Active Template Library (ATL) continue to be supported. However, we're no longer adding features or updating the documentation. ::: moniker range=">=msvc-160" From ab0464d5855074eb93dbd328fa10bd2e4c0894a6 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 25 Feb 2026 15:02:17 -0800 Subject: [PATCH 333/619] ATL batch 1: docs updates (files 1-94 + cherry-picked commit) --- docs/atl/active-template-library-atl-concepts.md | 3 ++- docs/atl/active-template-library-atl-tutorial.md | 3 ++- docs/atl/adding-a-control-atl-tutorial-part-2.md | 3 ++- docs/atl/adding-a-property-page-atl-tutorial-part-6.md | 3 ++- .../adding-a-property-to-the-control-atl-tutorial-part-3.md | 3 ++- docs/atl/adding-an-atl-message-handler.md | 3 ++- docs/atl/adding-an-event-atl-tutorial-part-5.md | 3 ++- docs/atl/adding-connection-points-to-an-object.md | 2 ++ docs/atl/adding-functionality-to-the-composite-control.md | 3 ++- docs/atl/aggregation.md | 3 ++- docs/atl/atl-and-the-free-threaded-marshaler.md | 3 ++- docs/atl/atl-class-overview.md | 3 ++- docs/atl/atl-collection-and-enumerator-classes.md | 3 ++- docs/atl/atl-collection-classes.md | 3 ++- docs/atl/atl-collections-and-enumerators.md | 3 ++- docs/atl/atl-com-desktop-components.md | 3 ++- docs/atl/atl-com-property-pages.md | 3 ++- docs/atl/atl-composite-control-fundamentals.md | 3 ++- docs/atl/atl-connection-point-classes.md | 3 ++- docs/atl/atl-connection-point-example.md | 3 ++- docs/atl/atl-connection-points.md | 3 ++- docs/atl/atl-copy-policy-classes.md | 3 ++- docs/atl/atl-encoding-reference.md | 3 ++- docs/atl/atl-event-handling-summary.md | 3 ++- docs/atl/atl-module-classes.md | 3 ++- docs/atl/atl-registry-component-registrar.md | 3 ++- docs/atl/atl-services.md | 3 ++- docs/atl/atl-support-for-dhtml-controls.md | 3 ++- docs/atl/atl-utilities-reference.md | 2 ++ docs/atl/atl-window-classes.md | 3 ++- ...fits-and-tradeoffs-of-the-method-used-to-link-to-the-crt.md | 3 ++- docs/atl/building-and-testing-the-atl-project.md | 3 ++- docs/atl/calling-cpp-code-from-dhtml.md | 3 ++- docs/atl/catlservicemodulet-handler-function.md | 3 ++- docs/atl/catlservicemodulet-run-function.md | 3 ++- docs/atl/catlservicemodulet-servicemain-function.md | 3 ++- docs/atl/catlservicemodulet-start-function.md | 3 ++- ...changing-the-default-class-factory-and-aggregation-model.md | 3 ++- docs/atl/changing-the-drawing-code-atl-tutorial-part-4.md | 3 ++- docs/atl/class-factories-classes.md | 3 ++- docs/atl/class-information-classes.md | 3 ++- docs/atl/collection-classes.md | 3 ++- docs/atl/com-modules-classes.md | 3 ++- docs/atl/commandhandler.md | 3 ++- docs/atl/composite-controls-classes.md | 3 ++- docs/atl/connection-points-classes.md | 3 ++- docs/atl/control-containment-classes.md | 3 ++- docs/atl/controls-general-support-classes.md | 3 ++- docs/atl/creating-an-aggregated-object.md | 3 ++- docs/atl/creating-an-atl-dhtml-control.md | 3 ++- docs/atl/creating-registrar-scripts.md | 3 ++- docs/atl/creating-the-project-atl-tutorial-part-1.md | 3 ++- docs/atl/data-transfer-classes.md | 3 ++- docs/atl/data-types-classes.md | 3 ++- docs/atl/dcomcnfg.md | 3 ++- docs/atl/debugging-and-exceptions-classes.md | 3 ++- docs/atl/debugging-tips.md | 3 ++- ...sign-principles-for-collection-and-enumerator-interfaces.md | 3 ++- docs/atl/displaying-assertions.md | 3 ++- docs/atl/dual-interfaces-and-atl.md | 3 ++- docs/atl/dual-interfaces-and-events.md | 3 ++- docs/atl/dual-interfaces-classes.md | 3 ++- docs/atl/enumerators-and-collections-classes.md | 3 ++- docs/atl/error-information-classes.md | 3 ++- docs/atl/event-handling-and-atl.md | 3 ++- docs/atl/event-handling-principles.md | 3 ++- docs/atl/example-implementing-a-property-page.md | 3 ++- docs/atl/file-handling-classes.md | 3 ++- docs/atl/fundamentals-of-atl-com-objects.md | 3 ++- .../identifying-the-elements-of-the-dhtml-control-project.md | 3 ++- docs/atl/implementing-a-dialog-box.md | 3 ++- docs/atl/implementing-a-dual-interface.md | 3 ++- docs/atl/implementing-a-window-with-cwindowimpl.md | 3 ++- docs/atl/implementing-a-window.md | 3 ++- docs/atl/implementing-an-stl-based-collection.md | 3 ++- ...implementing-ccomobject-ccomaggobject-and-ccompolyobject.md | 3 ++- docs/atl/implementing-ccomobjectrootex.md | 3 ++- docs/atl/implementing-property-pages.md | 3 ++- docs/atl/implementing-the-event-handling-interface.md | 3 ++- docs/atl/inserting-a-composite-control.md | 3 ++- docs/atl/interface-pointers-classes.md | 3 ++- docs/atl/interfaces-atl.md | 3 ++- docs/atl/introduction-to-atl-window-classes.md | 3 ++- docs/atl/introduction-to-atl.md | 3 ++- docs/atl/introduction-to-com-and-atl.md | 3 ++- docs/atl/introduction-to-com.md | 3 ++- docs/atl/invoking-scripts.md | 3 ++- docs/atl/iunknown-implementation-classes.md | 3 ++- docs/atl/iunknown.md | 3 ++- docs/atl/linking-to-the-crt-in-your-atl-project.md | 3 ++- docs/atl/marshaling.md | 3 ++- docs/atl/memory-management-classes.md | 3 ++- docs/atl/message-handler-functions.md | 3 ++- docs/atl/message-maps-atl.md | 3 ++- 94 files changed, 188 insertions(+), 92 deletions(-) diff --git a/docs/atl/active-template-library-atl-concepts.md b/docs/atl/active-template-library-atl-concepts.md index cda405159a6..ba5f6335bbc 100644 --- a/docs/atl/active-template-library-atl-concepts.md +++ b/docs/atl/active-template-library-atl-concepts.md @@ -3,11 +3,12 @@ description: "Learn more about: Active Template Library (ATL) Concepts" title: "Active Template Library (ATL) Concepts" ms.date: "05/06/2019" helpviewer_keywords: ["ATL, about ATL"] -ms.assetid: a3960991-4d76-4da5-9568-3fa7fde53ff4 ms.topic: concept-article --- # Active Template Library (ATL) Concepts +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The Active Template Library (ATL) is a set of template-based C++ classes that let you create small, fast Component Object Model (COM) objects. It has special support for key COM features, including stock implementations, dual interfaces, standard COM enumerator interfaces, connection points, tear-off interfaces, and ActiveX controls. If you do a lot of ATL programming, you will want to learn more about COM and .NET attributes, which is designed to simplify COM programming. For more information, see [Attributed Programming](../windows/attributes/cpp-attributes-com-net.md). (COM and .NET attributes are not to be confused with the \[\[attribute]] feature in the C++ standard.) diff --git a/docs/atl/active-template-library-atl-tutorial.md b/docs/atl/active-template-library-atl-tutorial.md index 2a9841ea00c..e8054c8897f 100644 --- a/docs/atl/active-template-library-atl-tutorial.md +++ b/docs/atl/active-template-library-atl-tutorial.md @@ -4,11 +4,12 @@ description: "Create an ActiveX control using Microsoft C++ and the Active Templ ms.custom: "get-started-article" ms.date: "05/03/2019" helpviewer_keywords: ["ATL projects, tutorials", "controls [ATL], tutorials", "ATL tutorial", "tutorials [ATL]", "ATL, tutorials"] -ms.assetid: f921a121-09c8-4812-9317-e15b2f1471fa ms.topic: tutorial --- # Active Template Library (ATL) Tutorial +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ATL is designed to simplify the process of creating efficient, flexible, lightweight controls. This tutorial leads you through the creation of an ActiveX control, demonstrating many ATL and COM fundamentals. By following this tutorial, you will learn how to add a control to an ATL project that draws a circle and a filled polygon. You will then add a property to indicate how many sides the polygon will have and create drawing code for updating the control when the property changes. The control will then be displayed on a Web page using some VBScript to make it respond to events. diff --git a/docs/atl/adding-a-control-atl-tutorial-part-2.md b/docs/atl/adding-a-control-atl-tutorial-part-2.md index 668cb2039f1..f0cdb0d25aa 100644 --- a/docs/atl/adding-a-control-atl-tutorial-part-2.md +++ b/docs/atl/adding-a-control-atl-tutorial-part-2.md @@ -3,11 +3,12 @@ description: "Learn more about: Adding a Control (ATL Tutorial, Part 2)" title: "Adding a Control (ATL Tutorial, Part 2)" ms.custom: "get-started-article" ms.date: "08/19/2019" -ms.assetid: c9575a75-1064-41f1-9697-7aada560c669 ms.topic: tutorial --- # Adding a Control (ATL Tutorial, Part 2) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + In this step, you add a control to your project, build it, and test it on a Web page. ## Procedures diff --git a/docs/atl/adding-a-property-page-atl-tutorial-part-6.md b/docs/atl/adding-a-property-page-atl-tutorial-part-6.md index 394d9aff8da..1d169bed706 100644 --- a/docs/atl/adding-a-property-page-atl-tutorial-part-6.md +++ b/docs/atl/adding-a-property-page-atl-tutorial-part-6.md @@ -3,11 +3,12 @@ description: "Learn more about: Adding a Property Page (ATL Tutorial, Part 6)" title: "Adding a Property Page (ATL Tutorial, Part 6)" ms.custom: "get-started-article" ms.date: "09/27/2018" -ms.assetid: df80d255-e7ea-49d9-b940-3f012e90cf9b ms.topic: tutorial --- # Adding a Property Page (ATL Tutorial, Part 6) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + > [!NOTE] > The ATL OLE DB Provider wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/adding-a-property-to-the-control-atl-tutorial-part-3.md b/docs/atl/adding-a-property-to-the-control-atl-tutorial-part-3.md index 839a2653ed1..852dd925637 100644 --- a/docs/atl/adding-a-property-to-the-control-atl-tutorial-part-3.md +++ b/docs/atl/adding-a-property-to-the-control-atl-tutorial-part-3.md @@ -3,11 +3,12 @@ description: "Learn more about: Adding a Property to the Control (ATL Tutorial, title: "Adding a Property to the Control (ATL Tutorial, Part 3)" ms.custom: "get-started-article" ms.date: "09/26/2018" -ms.assetid: f775fe34-103b-4f07-9999-400e987ee030 ms.topic: tutorial --- # Adding a Property to the Control (ATL Tutorial, Part 3) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + `IPolyCtl` is the interface that contains the control's custom methods and properties, and you will add a property to it. ### To add the property definitions to your project diff --git a/docs/atl/adding-an-atl-message-handler.md b/docs/atl/adding-an-atl-message-handler.md index ee2243126a9..178eb55484c 100644 --- a/docs/atl/adding-an-atl-message-handler.md +++ b/docs/atl/adding-an-atl-message-handler.md @@ -3,11 +3,12 @@ description: "Learn more about: Adding an ATL Message Handler" title: "Adding an ATL Message Handler" ms.date: "11/04/2016" helpviewer_keywords: ["message handlers [C++]", "ATL, windows", "message handling [C++], ATL message handler", "windows [C++], ATL", "ATL, message handlers"] -ms.assetid: cdea38a1-0d9b-4f8d-bbd5-b4f063fb3eeb ms.topic: concept-article --- # Adding an ATL Message Handler +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + To add a message handler (a member function that handles Windows messages) to a control, first select the control in the Class View. Then open the **Properties** window, select the **Messages** icon, and click the drop-down control in the box opposite the required message. This will add a declaration for the message handler in the control's header file and a skeleton implementation of the handler in the control's .cpp file. It will also add the message map and add an entry for the handler. Adding a message handler in ATL is similar to adding a message handler to an MFC class. See [Adding an MFC Message Handler](../mfc/reference/adding-an-mfc-message-handler.md) for more information. diff --git a/docs/atl/adding-an-event-atl-tutorial-part-5.md b/docs/atl/adding-an-event-atl-tutorial-part-5.md index 48d9ef8f01d..ed1690d4df0 100644 --- a/docs/atl/adding-an-event-atl-tutorial-part-5.md +++ b/docs/atl/adding-an-event-atl-tutorial-part-5.md @@ -3,11 +3,12 @@ description: "Learn more about: Adding an Event (ATL Tutorial, Part 5)" title: "Adding an Event (ATL Tutorial, Part 5)" ms.custom: "get-started-article" ms.date: "09/27/2018" -ms.assetid: 2de12022-3148-4ce3-8606-8a9d4274f0e9 ms.topic: tutorial --- # Adding an Event (ATL Tutorial, Part 5) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + In this step, you will add a `ClickIn` and a `ClickOut` event to your ATL control. You will fire the `ClickIn` event if the user clicks within the polygon and fire `ClickOut` if the user clicks outside. The tasks to add an event are as follows: - Adding the `ClickIn` and `ClickOut` methods diff --git a/docs/atl/adding-connection-points-to-an-object.md b/docs/atl/adding-connection-points-to-an-object.md index d2564c44cd6..732d3688c9c 100644 --- a/docs/atl/adding-connection-points-to-an-object.md +++ b/docs/atl/adding-connection-points-to-an-object.md @@ -7,6 +7,8 @@ ms.topic: how-to --- # Adding Connection Points to an Object +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The [ATL Tutorial](active-template-library-atl-tutorial.md) demonstrates how to create a control with support for connection points, how to add events, and then how to implement the connection point. ATL implements connection points with the [`IConnectionPointImpl`](reference/iconnectionpointimpl-class.md) class. To implement a connection point, you have two choices: diff --git a/docs/atl/adding-functionality-to-the-composite-control.md b/docs/atl/adding-functionality-to-the-composite-control.md index 35766209450..f32c146abd8 100644 --- a/docs/atl/adding-functionality-to-the-composite-control.md +++ b/docs/atl/adding-functionality-to-the-composite-control.md @@ -3,11 +3,12 @@ description: "Learn more about: Adding Functionality to the Composite Control" title: "Adding Functionality to the Composite Control" ms.date: "11/04/2016" helpviewer_keywords: ["event handlers [C++], ActiveX controls", "composite controls, handling events", "ActiveX controls [C++], events"] -ms.assetid: 98f85681-9564-480d-af38-03f9733fe58b ms.topic: concept-article --- # Adding Functionality to the Composite Control +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Once you have inserted any necessary controls into the composite control, the next step involves adding new functionality. This new functionality usually falls into two categories: - Supporting additional interfaces and customizing the behavior of your composite control with additional, specific features. diff --git a/docs/atl/aggregation.md b/docs/atl/aggregation.md index 36c510daf37..e1b0448277a 100644 --- a/docs/atl/aggregation.md +++ b/docs/atl/aggregation.md @@ -3,10 +3,11 @@ description: "Learn more about: Aggregation" title: "Aggregation" ms.date: "11/04/2016" helpviewer_keywords: ["aggregation [C++]", "aggregate objects [C++]"] -ms.assetid: 7125bb8e-b269-4b50-9bba-295b467a54cc --- # Aggregation +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + There are times when an object's implementor would like to take advantage of the services offered by another, prebuilt object. Furthermore, it would like this second object to appear as a natural part of the first. COM achieves both of these goals through containment and aggregation. Aggregation means that the containing (outer) object creates the contained (inner) object as part of its creation process and the interfaces of the inner object are exposed by the outer. An object allows itself to be aggregatable or not. If it is, then it must follow certain rules for aggregation to work properly. diff --git a/docs/atl/atl-and-the-free-threaded-marshaler.md b/docs/atl/atl-and-the-free-threaded-marshaler.md index 5d5e78c8a63..b496b5b4fc8 100644 --- a/docs/atl/atl-and-the-free-threaded-marshaler.md +++ b/docs/atl/atl-and-the-free-threaded-marshaler.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL and the Free Threaded Marshaler" title: "ATL and the Free Threaded Marshaler" ms.date: "11/04/2016" helpviewer_keywords: ["ATL, free threaded marshaler", "free threaded marshaler", "threading [C++], marshaler in ATL", "threading [ATL], free threaded marshaler", "FTM in ATL"] -ms.assetid: 2db88a13-2217-4ebc-aa7e-432d5da902eb --- # ATL and the Free Threaded Marshaler +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The ATL Simple Object Wizard's Attributes page provides an option that allows your class to aggregate the free threaded marshaler (FTM). The wizard generates code to create an instance of the free threaded marshaler in `FinalConstruct` and release that instance in `FinalRelease`. A COM_INTERFACE_ENTRY_AGGREGATE macro is automatically added to the COM map to ensure that `QueryInterface` requests for [IMarshal](/windows/win32/api/objidlbase/nn-objidlbase-imarshal) are handled by the free threaded marshaler. diff --git a/docs/atl/atl-class-overview.md b/docs/atl/atl-class-overview.md index 98846a0de5f..bf22cf76fca 100644 --- a/docs/atl/atl-class-overview.md +++ b/docs/atl/atl-class-overview.md @@ -3,11 +3,12 @@ description: "Learn more about: ATL class overview" title: "ATL class overview" ms.date: "11/04/2016" helpviewer_keywords: ["classes [C++], ATL", "ATL, class reference"] -ms.assetid: c38ac93d-c3a2-4ce7-8153-f1d34c0f0fa6 ms.topic: concept-article --- # ATL class overview +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Classes in the Active Template Library (ATL) can be categorized as follows: [Class factories](../atl/class-factories-classes.md)\ diff --git a/docs/atl/atl-collection-and-enumerator-classes.md b/docs/atl/atl-collection-and-enumerator-classes.md index d96c74e5703..b887eabdb83 100644 --- a/docs/atl/atl-collection-and-enumerator-classes.md +++ b/docs/atl/atl-collection-and-enumerator-classes.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Collection and Enumerator Classes" title: "ATL Collection and Enumerator Classes" ms.date: "11/04/2016" helpviewer_keywords: ["enumerators, ATL classes", "collection classes, ATL"] -ms.assetid: 6818db73-7094-48d8-a0ca-18147beec362 --- # ATL Collection and Enumerator Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ATL provides the following classes to help you implement collections and enumerators. |Class|Description| diff --git a/docs/atl/atl-collection-classes.md b/docs/atl/atl-collection-classes.md index db96014d6f0..bd9c02edc03 100644 --- a/docs/atl/atl-collection-classes.md +++ b/docs/atl/atl-collection-classes.md @@ -3,11 +3,12 @@ description: "Learn more about: ATL Collection Classes" title: "ATL collection class overview" ms.date: "11/19/2018" helpviewer_keywords: ["DestructElements function", "collection classes, choosing", "ConstructElements function", "SerializeElements function", "traits classes", "collection classes, about collection classes", "CTraits classes", "collection classes"] -ms.assetid: 4d619d46-5b4e-41dd-b9fd-e86b1fbc00b5 ms.topic: concept-article --- # ATL Collection Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ATL provides many classes for storing and accessing data. Which class you decide to use depends on several factors, including: - The amount of data to be stored diff --git a/docs/atl/atl-collections-and-enumerators.md b/docs/atl/atl-collections-and-enumerators.md index 68eea6e6f86..ba991026b3c 100644 --- a/docs/atl/atl-collections-and-enumerators.md +++ b/docs/atl/atl-collections-and-enumerators.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Collections and Enumerators" title: "ATL Collections and Enumerators" ms.date: "11/04/2016" helpviewer_keywords: ["enumerator interfaces", "collections, ATL classes", "enumerators, ATL classes", "collection interfaces"] -ms.assetid: b2d37119-3ab2-4e0a-b65b-f377f07e4098 --- # ATL Collections and Enumerators +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + A `collection` is a COM object that provides an interface that allows access to a group of data items (raw data or other objects). An interface that follows the standards for providing access to a group of objects is known as a *collection interface*. At a minimum, collection interfaces must provide a `Count` property that returns the number of items in the collection, an `Item` property that returns an item from the collection based on an index, and a `_NewEnum` property that returns an enumerator for the collection. Optionally, collection interfaces can provide `Add` and `Remove` methods to allow items to be inserted into or deleted from the collection, and a `Clear` method to remove all items. diff --git a/docs/atl/atl-com-desktop-components.md b/docs/atl/atl-com-desktop-components.md index 3d5d2ad0c96..e12f41f8be4 100644 --- a/docs/atl/atl-com-desktop-components.md +++ b/docs/atl/atl-com-desktop-components.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL COM Desktop Components" title: "ATL COM Desktop Components" ms.date: "10/19/2018" helpviewer_keywords: ["ATL, reference", "ATL, about ATL"] -ms.assetid: 291f38d1-d2de-4687-86a9-99b4fd35706c --- # ATL COM Desktop Components +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The ATL Reference documents the Active Template Library (ATL), a set of template-based C++ classes that simplify the programming of Component Object Model (COM) objects. COM is a binary specification for creating and consuming software components on Windows. To fully take advantage of ATL, a working familiarity with COM is highly recommended. For more information about COM, see [Component Object Model (COM)](/windows/win32/com/component-object-model--com--portal). ## In This Section diff --git a/docs/atl/atl-com-property-pages.md b/docs/atl/atl-com-property-pages.md index 109d83b95c0..3b84ea0421e 100644 --- a/docs/atl/atl-com-property-pages.md +++ b/docs/atl/atl-com-property-pages.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL COM Property Pages" title: "ATL COM Property Pages" ms.date: "11/04/2016" helpviewer_keywords: ["property pages, COM", "ATL COM objects", "COM property pages", "property pages, ATL", "COM objects, ATL", "ATL property pages"] -ms.assetid: 663c7caa-2e5e-4b5c-b8ea-fd434ceb1654 --- # ATL COM Property Pages +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + COM property pages provide a user interface for setting the properties (or calling the methods) of one or more COM objects. Property pages are used extensively by ActiveX controls for providing rich user interfaces that allow control properties to be set at design time. Property pages are COM objects that implement the [IPropertyPage](/windows/win32/api/ocidl/nn-ocidl-ipropertypage) or [IPropertyPage2](/windows/win32/api/ocidl/nn-ocidl-ipropertypage2) interface. These interfaces provide methods that allow the page to be associated with a `site` (a COM object representing the container of the page) and a number of *objects* (COM objects whose methods will be called in response to changes made by the user of the property page). The property page container is responsible for calling methods on the property page interface to tell the page when to show or hide its user interface, and when to apply the changes made by the user to the underlying objects. diff --git a/docs/atl/atl-composite-control-fundamentals.md b/docs/atl/atl-composite-control-fundamentals.md index 99d5bc76e01..c96615a0bd2 100644 --- a/docs/atl/atl-composite-control-fundamentals.md +++ b/docs/atl/atl-composite-control-fundamentals.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Composite Control Fundamentals" title: "ATL Composite Control Fundamentals" ms.date: "11/04/2016" helpviewer_keywords: ["composite controls, about composite controls"] -ms.assetid: 2ac78cdd-1ec4-4d78-871c-1bcc23b5253e --- # ATL Composite Control Fundamentals +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + A composite control is a type of ActiveX control that can contain (similar to a dialog box) other ActiveX controls or Windows controls. Once the composite control is built, it can be inserted anywhere an ActiveX control can be hosted. The ATL Project Wizard and **Add Class** dialog box automate the process of creating and implementing a composite control project, similar to the result of running the Application Wizard to create an MFC application framework. The development process consists of five steps: diff --git a/docs/atl/atl-connection-point-classes.md b/docs/atl/atl-connection-point-classes.md index 9de4d1eaf44..21d955c22e5 100644 --- a/docs/atl/atl-connection-point-classes.md +++ b/docs/atl/atl-connection-point-classes.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Connection Point Classes" title: "ATL Connection Point Classes" ms.date: "11/04/2016" helpviewer_keywords: ["CFirePropNotifyEvent class, connection point classes", "connection points [C++], ATL classes", "ATL, connection points", "CComDynamicUnkArray class, connection point classes", "CFirePropNotifyEvent class", "CComUnkArray class, connection point classes"] -ms.assetid: 9582ba71-7ace-4df4-9c9b-1b0636953efc --- # ATL Connection Point Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ATL uses the following classes to support connection points: - [IConnectionPointImpl](../atl/reference/iconnectionpointimpl-class.md) implements a connection point. The IID of the outgoing interface it represents is passed as a template parameter. diff --git a/docs/atl/atl-connection-point-example.md b/docs/atl/atl-connection-point-example.md index 0a7cf22ac7a..c837053c9e1 100644 --- a/docs/atl/atl-connection-point-example.md +++ b/docs/atl/atl-connection-point-example.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Connection Point Example" title: "ATL Connection Point Example" ms.date: "11/04/2016" helpviewer_keywords: ["connection points [C++], examples", "examples [ATL]"] -ms.assetid: a49721b7-f308-43de-8868-f662a94bc81a --- # ATL Connection Point Example +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + This example shows an object that supports [IPropertyNotifySink](/windows/win32/api/ocidl/nn-ocidl-ipropertynotifysink) as an outgoing interface: [!code-cpp[NVC_ATL_Windowing#84](../atl/codesnippet/cpp/atl-connection-point-example_1.h)] diff --git a/docs/atl/atl-connection-points.md b/docs/atl/atl-connection-points.md index 9bad34db0b4..cb3f08ffa9f 100644 --- a/docs/atl/atl-connection-points.md +++ b/docs/atl/atl-connection-points.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Connection Points" title: "ATL Connection Points" ms.date: "11/04/2016" helpviewer_keywords: ["connections, connection points", "ATL, connection points", "connection points [C++], about connection points"] -ms.assetid: 17d76165-5f83-4f95-b36d-483821c247a1 --- # ATL Connection Points +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + A connectable object is one that supports outgoing interfaces. An outgoing interface allows the object to communicate with a client. For each outgoing interface, the connectable object exposes a connection point. Each outgoing interface is implemented by a client on an object called a sink. ![Diagram that shows the connection points on a client object and a connectable object.](../atl/media/vc2zw31.gif "Connection points") diff --git a/docs/atl/atl-copy-policy-classes.md b/docs/atl/atl-copy-policy-classes.md index 08787e3fe9b..0c2aad5b629 100644 --- a/docs/atl/atl-copy-policy-classes.md +++ b/docs/atl/atl-copy-policy-classes.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Copy Policy Classes" title: "ATL Copy Policy Classes" ms.date: "11/04/2016" helpviewer_keywords: ["data [C++], ATL", "classes [C++], copy policy", "copy policy classes [C++]", "_Copy class", "_CopyInterface class"] -ms.assetid: 06704b68-d318-4c5d-a65b-71457fe9d00d --- # ATL Copy Policy Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Copy policy classes are [utility classes](../atl/utility-classes.md) used to initialize, copy, and delete data. Copy policy classes allow you to define copy semantics for any type of data, and to define conversions between different data types. ATL uses copy policy classes in its implementations of the following templates: diff --git a/docs/atl/atl-encoding-reference.md b/docs/atl/atl-encoding-reference.md index e7153b05201..36787474f2a 100644 --- a/docs/atl/atl-encoding-reference.md +++ b/docs/atl/atl-encoding-reference.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Encoding Reference" title: "ATL Encoding Reference" ms.date: "11/04/2016" helpviewer_keywords: ["encoding", "encoding, functions"] -ms.assetid: 82d4fdf3-3c4a-4fe2-b297-8ffb4714406f --- # ATL Encoding Reference +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Encoding in a range of common Internet standards such as uuencode, hexadecimal, and UTF8 is supported by the code found in *`atlenc.h`*. ### Functions diff --git a/docs/atl/atl-event-handling-summary.md b/docs/atl/atl-event-handling-summary.md index 166f1d40284..55d8eabacca 100644 --- a/docs/atl/atl-event-handling-summary.md +++ b/docs/atl/atl-event-handling-summary.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Event Handling Summary" title: "ATL Event Handling Summary" ms.date: "11/04/2016" helpviewer_keywords: ["event handling, implementing"] -ms.assetid: e8b47ef0-0bdc-47ff-9dd6-34df11dde9a2 --- # ATL Event Handling Summary +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + In general, handling COM events is a relatively simple process. There are three main steps: - Implement the event interface on your object. diff --git a/docs/atl/atl-module-classes.md b/docs/atl/atl-module-classes.md index 4613d5af005..512b96192d5 100644 --- a/docs/atl/atl-module-classes.md +++ b/docs/atl/atl-module-classes.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Module Classes" title: "ATL Module Classes" ms.date: "11/04/2016" helpviewer_keywords: ["CComModule class, what's changed", "ATL, module classes", "module classes"] -ms.assetid: fd75382d-c955-46ba-a38e-37728b7fa00f --- # ATL Module Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + This topic discusses the module classes that were new in ATL 7.0. ## CComModule Replacement Classes diff --git a/docs/atl/atl-registry-component-registrar.md b/docs/atl/atl-registry-component-registrar.md index 6fc68ca1fc2..3615ba7fc45 100644 --- a/docs/atl/atl-registry-component-registrar.md +++ b/docs/atl/atl-registry-component-registrar.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Registry Component (Registrar)" title: "ATL Registry Component (Registrar)" ms.date: "11/04/2016" helpviewer_keywords: ["scripting, registry scripting", "ATL, registry", "registrar scripts [ATL]", "registry, accessing", "ATL Registrar", "scripts, Registrar scripts", "registry, Registrar"] -ms.assetid: 106752ae-4cfc-4030-8cb2-d36a1d635a2e --- # ATL Registry Component (Registrar) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The ATL Registrar provides optimized access to the system registry through a custom interface. The Registrar is free-threaded and allows static linking of code for C++ clients. > [!NOTE] diff --git a/docs/atl/atl-services.md b/docs/atl/atl-services.md index 4acde07ca7e..591a7222173 100644 --- a/docs/atl/atl-services.md +++ b/docs/atl/atl-services.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Services" title: "ATL Services" ms.date: "11/04/2016" helpviewer_keywords: ["CServiceModule class", "COM objects, ATL", "services, ATL", "ATL services"] -ms.assetid: 8c09d1a8-7548-4d2c-947c-9d795a81659b --- # ATL Services +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + To create your ATL COM object so that it runs in a service, simply select Service (EXE) from the list of server options in the ATL Project Wizard. The wizard will then create a class derived from `CAtlServiceModuleT` to implement the service. When the ATL COM object is built as a service, it will only be registered as a local server, and it will not appear in the list of services in Control Panel. This is because it is easier to debug the service as a local server than as a service. To install it as a service, run the following at the command prompt: diff --git a/docs/atl/atl-support-for-dhtml-controls.md b/docs/atl/atl-support-for-dhtml-controls.md index eca0e2fe0b1..2a2f8c091f8 100644 --- a/docs/atl/atl-support-for-dhtml-controls.md +++ b/docs/atl/atl-support-for-dhtml-controls.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Support for DHTML Controls" title: "ATL Support for DHTML Controls" ms.date: "11/04/2016" helpviewer_keywords: ["HTML controls, ATL support", "DHTML controls, ATL support", "DHTML controls"] -ms.assetid: 4ba98098-da5d-4362-96ad-8372f816c307 --- # ATL Support for DHTML Controls +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Using ATL, you can create a control with Dynamic HTML (DHTML) capability. An ATL DHTML control: - Hosts the WebBrowser control. diff --git a/docs/atl/atl-utilities-reference.md b/docs/atl/atl-utilities-reference.md index d903e4dbab6..19120124b84 100644 --- a/docs/atl/atl-utilities-reference.md +++ b/docs/atl/atl-utilities-reference.md @@ -5,6 +5,8 @@ ms.date: 11/04/2016 --- # ATL utilities reference +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ATL provides code for manipulating paths and URLs in the form of [CPathT](../atl/reference/cpatht-class.md) and [CUrl](../atl/reference/curl-class.md). A thread pool, [CThreadPool](../atl/reference/cthreadpool-class.md), can be used in your applications. This code can be found in atlpath.h and atlutil.h. ## Classes diff --git a/docs/atl/atl-window-classes.md b/docs/atl/atl-window-classes.md index bf9968a0313..92c7c453843 100644 --- a/docs/atl/atl-window-classes.md +++ b/docs/atl/atl-window-classes.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Window Classes" title: "ATL Window Classes" ms.date: "11/04/2016" helpviewer_keywords: ["ATL, windows", "windows [C++], subclassing", "windows [C++], superclassing", "windows [C++], ATL", "subclassing ATL window classes", "superclassing", "superclassing, ATL"] -ms.assetid: 1d12b708-de3e-49d5-9e41-42fe4769fa62 --- # ATL Window Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ATL includes several classes that allow you to use and implement windows. These classes, like other ATL classes, provide an efficient implementation that does not impose an overhead on your code. This section describes the ATL window classes and explains how to use them. diff --git a/docs/atl/benefits-and-tradeoffs-of-the-method-used-to-link-to-the-crt.md b/docs/atl/benefits-and-tradeoffs-of-the-method-used-to-link-to-the-crt.md index d84c7e8e639..3c3d0fe0276 100644 --- a/docs/atl/benefits-and-tradeoffs-of-the-method-used-to-link-to-the-crt.md +++ b/docs/atl/benefits-and-tradeoffs-of-the-method-used-to-link-to-the-crt.md @@ -3,10 +3,11 @@ description: "Learn more about: Benefits and Tradeoffs of the Method Used to Lin title: "Benefits and Tradeoffs of the Method Used to Link to the CRT" ms.date: "05/06/2019" helpviewer_keywords: ["_ATL_MIN_CRT macro"] -ms.assetid: 49b485f7-9487-49e4-b12a-0f710b620e2b --- # Benefits and Tradeoffs of the Method Used to Link to the CRT +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Your project can link with the CRT either dynamically or statically. The table below outlines the benefits and tradeoffs involved in choosing which method to use. |Method|Benefit|Tradeoff| diff --git a/docs/atl/building-and-testing-the-atl-project.md b/docs/atl/building-and-testing-the-atl-project.md index d5920c6e591..53aebdcc5e4 100644 --- a/docs/atl/building-and-testing-the-atl-project.md +++ b/docs/atl/building-and-testing-the-atl-project.md @@ -3,11 +3,12 @@ description: "Learn more about: Building and Testing the ATL Project" title: "Building and Testing the ATL Project" ms.date: "11/04/2016" helpviewer_keywords: ["composite controls, building and testing the project", "composite controls, containers for"] -ms.assetid: 5c1541f8-f6cb-4c22-bd22-c66bcfbaa077 ms.topic: concept-article --- # Building and Testing the ATL Project +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + As mentioned in [Inserting a Composite Control](../atl/inserting-a-composite-control.md), one of the initial components of the project is a default HTML page that hosts your new composite control. After you finish modifying the composite control, click **Build Solution** or **Rebuild Solution** from the **Build** menu. Once the project successfully builds, load the HTML page, located in the root directory of your composite control project, into Internet Explorer or another browser and test the functionality of your control. You can also test your composite control using the Test Container tool, or any other application that can host an ActiveX control. See [Testing Properties and Events with Test Container](../mfc/testing-properties-and-events-with-test-container.md) for information on how to access the test container. diff --git a/docs/atl/calling-cpp-code-from-dhtml.md b/docs/atl/calling-cpp-code-from-dhtml.md index a5d05fe09ee..03f3e87a0d4 100644 --- a/docs/atl/calling-cpp-code-from-dhtml.md +++ b/docs/atl/calling-cpp-code-from-dhtml.md @@ -3,11 +3,12 @@ description: "Learn more about: Calling C++ Code from DHTML" title: "Calling C++ Code from DHTML" ms.date: "11/04/2016" helpviewer_keywords: ["DHTML, calling C++ code from"] -ms.assetid: 37329acd-4c22-40ca-a85a-b7480748f75f ms.topic: concept-article --- # Calling C++ Code from DHTML +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + A DHTML control can be hosted in a container, such as Test Container or Internet Explorer. See [Testing Properties and Events with Test Container](../mfc/testing-properties-and-events-with-test-container.md) for information on how to access Test Container. The container hosting the control communicates with the control using the normal control interfaces. DHTML uses the dispatch interface that ends with "UI" to communicate with your C++ code and your HTML resource. In [Modifying the ATL DHTML Control](../atl/modifying-the-atl-dhtml-control.md), you can practice adding the methods to be called by these different interfaces. diff --git a/docs/atl/catlservicemodulet-handler-function.md b/docs/atl/catlservicemodulet-handler-function.md index a2da13bec83..c21778eec43 100644 --- a/docs/atl/catlservicemodulet-handler-function.md +++ b/docs/atl/catlservicemodulet-handler-function.md @@ -3,10 +3,11 @@ description: "Learn more about: CAtlServiceModuleT::Handler Function" title: "CAtlServiceModuleT::Handler Function" ms.date: "11/04/2016" helpviewer_keywords: ["Handler method"] -ms.assetid: 14db5f2a-be87-4774-a296-445cb6fc7b2e --- # CAtlServiceModuleT::Handler Function +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + `CAtlServiceModuleT::Handler` is the routine that the service control manager (SCM) calls to retrieve the status of the service and give it various instructions (such as stopping or pausing). The SCM passes an operation code to `Handler` to indicate what the service should do. A default ATL-generated service only handles the stop instruction. If the SCM passes the stop instruction, the service tells the SCM that the program is about to stop. The service then calls `PostThreadMessage` to post a quit message to itself. This terminates the message loop and the service will ultimately close. To handle more instructions, you need to change the `m_status` data member initialized in the `CAtlServiceModuleT` constructor. This data member tells the SCM which buttons to enable when the service is selected in the Services Control Panel application. diff --git a/docs/atl/catlservicemodulet-run-function.md b/docs/atl/catlservicemodulet-run-function.md index 9471ee390a8..e9aadfc95c2 100644 --- a/docs/atl/catlservicemodulet-run-function.md +++ b/docs/atl/catlservicemodulet-run-function.md @@ -3,10 +3,11 @@ description: "Learn more about: CAtlServiceModuleT::Run Function" title: "CAtlServiceModuleT::Run Function" ms.date: "11/04/2016" helpviewer_keywords: ["ATL services, security"] -ms.assetid: 42c010f0-e60e-459c-a63b-a53a24cda93b --- # CAtlServiceModuleT::Run Function +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + `Run` contains calls to `PreMessageLoop`, `RunMessageLoop`, and `PostMessageLoop`. After being called, `PreMessageLoop` first stores the service's thread ID. The service will use this ID to close itself by sending a WM_QUIT message using the Win32 API function, [PostThreadMessage](/windows/win32/api/winuser/nf-winuser-postthreadmessagew). `PreMessageLoop` then calls `InitializeSecurity`. By default, `InitializeSecurity` calls [CoInitializeSecurity](/windows/win32/api/combaseapi/nf-combaseapi-coinitializesecurity) with the security descriptor set to NULL, which means that any user has access to your object. diff --git a/docs/atl/catlservicemodulet-servicemain-function.md b/docs/atl/catlservicemodulet-servicemain-function.md index f3cfffa7fd3..f037a2ca6ae 100644 --- a/docs/atl/catlservicemodulet-servicemain-function.md +++ b/docs/atl/catlservicemodulet-servicemain-function.md @@ -3,10 +3,11 @@ description: "Learn more about: CAtlServiceModuleT::ServiceMain Function" title: "CAtlServiceModuleT::ServiceMain Function" ms.date: "11/04/2016" helpviewer_keywords: ["ServiceMain method"] -ms.assetid: f21408c1-1919-4dec-88d8-bf5b39ac9808 --- # CAtlServiceModuleT::ServiceMain Function +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The service control manager (SCM) calls `ServiceMain` when you open the Services Control Panel application, select the service, and click **Start**. After the SCM calls `ServiceMain`, a service must give the SCM a handler function. This function lets the SCM obtain the service's status and pass specific instructions (such as pausing or stopping). The SCM gets this function when the service passes `_Handler` to the Win32 API function, [RegisterServiceCtrlHandler](/windows/win32/api/winsvc/nf-winsvc-registerservicectrlhandlerw). (`_Handler` is a static member function that calls the non-static member function [Handler](../atl/reference/catlservicemodulet-class.md#handler).) diff --git a/docs/atl/catlservicemodulet-start-function.md b/docs/atl/catlservicemodulet-start-function.md index 920857413d4..670a2023aee 100644 --- a/docs/atl/catlservicemodulet-start-function.md +++ b/docs/atl/catlservicemodulet-start-function.md @@ -3,10 +3,11 @@ description: "Learn more about: CAtlServiceModuleT::Start Function" title: "CAtlServiceModuleT::Start Function" ms.date: "11/04/2016" helpviewer_keywords: ["Start method"] -ms.assetid: b5193a23-41bc-42d2-8d55-3eb43dc62238 --- # CAtlServiceModuleT::Start Function +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + When the service is run, `_tWinMain` calls `CAtlServiceModuleT::WinMain`, which in turn calls `CAtlServiceModuleT::Start`. `CAtlServiceModuleT::Start` sets up an array of `SERVICE_TABLE_ENTRY` structures that map each service to its startup function. This array is then passed to the Win32 API function, [StartServiceCtrlDispatcher](/windows/win32/api/winsvc/nf-winsvc-startservicectrldispatcherw). In theory, one EXE could handle multiple services and the array could have multiple `SERVICE_TABLE_ENTRY` structures. Currently, however, an ATL-generated service supports only one service per EXE. Therefore, the array has a single entry that contains the service name and `_ServiceMain` as the startup function. `_ServiceMain` is a static member function of `CAtlServiceModuleT` that calls the non-static member function, `ServiceMain`. diff --git a/docs/atl/changing-the-default-class-factory-and-aggregation-model.md b/docs/atl/changing-the-default-class-factory-and-aggregation-model.md index 78b9ca1c8a0..31cf67c1254 100644 --- a/docs/atl/changing-the-default-class-factory-and-aggregation-model.md +++ b/docs/atl/changing-the-default-class-factory-and-aggregation-model.md @@ -3,11 +3,12 @@ description: "Learn more about: Changing the Default Class Factory and Aggregati title: "Changing the Default Class Factory and Aggregation Model" ms.date: "11/04/2016" helpviewer_keywords: ["CComClassFactory class, making the default", "aggregation [C++], using ATL", "aggregation [C++], aggregation models", "defaults [C++], aggregation model in ATL", "default class factory", "class factories, changing default", "CComCoClass class, default class factory and aggregation model", "default class factory, ATL", "defaults [C++], class factory"] -ms.assetid: 6e040e95-0f38-4839-8a8b-c9800dd47e8c ms.topic: concept-article --- # Changing the Default Class Factory and Aggregation Model +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ATL uses [CComCoClass](../atl/reference/ccomcoclass-class.md) to define the default class factory and aggregation model for your object. `CComCoClass` specifies the following two macros: - [DECLARE_CLASSFACTORY](reference/aggregation-and-class-factory-macros.md#declare_classfactory) Declares the class factory to be [CComClassFactory](../atl/reference/ccomclassfactory-class.md). diff --git a/docs/atl/changing-the-drawing-code-atl-tutorial-part-4.md b/docs/atl/changing-the-drawing-code-atl-tutorial-part-4.md index 2ed4a960e6b..d835f00e7d9 100644 --- a/docs/atl/changing-the-drawing-code-atl-tutorial-part-4.md +++ b/docs/atl/changing-the-drawing-code-atl-tutorial-part-4.md @@ -4,11 +4,12 @@ title: "Changing the Drawing Code (ATL Tutorial, Part 4)" ms.custom: "get-started-article" ms.date: "09/26/2018" helpviewer_keywords: ["_ATL_MIN_CRT macro"] -ms.assetid: 08ff14e8-aa49-4139-a110-5d071939cf1e ms.topic: tutorial --- # Changing the Drawing Code (ATL Tutorial, Part 4) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + By default, the control's drawing code displays a square and the text **PolyCtl**. In this step, you will change the code to display something more interesting. The following tasks are involved: - Modifying the Header File diff --git a/docs/atl/class-factories-classes.md b/docs/atl/class-factories-classes.md index 15bda12d380..a0e9bdb8927 100644 --- a/docs/atl/class-factories-classes.md +++ b/docs/atl/class-factories-classes.md @@ -4,10 +4,11 @@ title: " ATL Class Factories Classes" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["class factories", "class factories, ATL classes"] -ms.assetid: 1d8c2ae2-2c37-452c-a02d-1ecbdd309f84 --- # Class Factories Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes implement or support a class factory: - [CComClassFactory](../atl/reference/ccomclassfactory-class.md) Provides a default class factory for object creation. diff --git a/docs/atl/class-information-classes.md b/docs/atl/class-information-classes.md index 4f4b3f3158e..b1854183884 100644 --- a/docs/atl/class-information-classes.md +++ b/docs/atl/class-information-classes.md @@ -4,10 +4,11 @@ title: "Class Information Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["class information, retrieving"] -ms.assetid: 39365025-f24a-41ae-87ab-4ae8ed085b98 --- # Class Information Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following class provides support for retrieving class information: - [IProvideClassInfo2Impl](../atl/reference/iprovideclassinfo2impl-class.md) Provides access to type information. Retrieves the outgoing IID for the object's default event set. diff --git a/docs/atl/collection-classes.md b/docs/atl/collection-classes.md index 0545b6d29b0..5702e9832d1 100644 --- a/docs/atl/collection-classes.md +++ b/docs/atl/collection-classes.md @@ -4,10 +4,11 @@ title: "Collection classes in ATL" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["collection classes"] -ms.assetid: eff95de6-78ef-4212-9d7d-1dacbdd4cc58 --- # Collection Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes provide support for arrays, lists, maps, and also traits methods for helping with comparisons and element access. - [CAtlArray](../atl/reference/catlarray-class.md) This class implements an array object. diff --git a/docs/atl/com-modules-classes.md b/docs/atl/com-modules-classes.md index 4c4671f1231..768c712e943 100644 --- a/docs/atl/com-modules-classes.md +++ b/docs/atl/com-modules-classes.md @@ -4,10 +4,11 @@ title: "COM Modules Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["COM modules classes"] -ms.assetid: 0a8a82dd-a153-47cd-9bbe-1a1ad5d1a6ff --- # COM Modules Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes provide support for a COM module: - [CAtlBaseModule](../atl/reference/catlbasemodule-class.md) This class is instantiated in every ATL project. diff --git a/docs/atl/commandhandler.md b/docs/atl/commandhandler.md index 6ad29accfb3..2a299bfa7d7 100644 --- a/docs/atl/commandhandler.md +++ b/docs/atl/commandhandler.md @@ -4,10 +4,11 @@ title: "CommandHandler" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["CommandHandler function"] -ms.assetid: 662bc7bf-4a10-42b3-986d-d8bae4f63551 --- # CommandHandler +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + `CommandHandler` is the function identified by the third parameter of the COMMAND_HANDLER macro in your message map. ## Syntax diff --git a/docs/atl/composite-controls-classes.md b/docs/atl/composite-controls-classes.md index 0e45651cc80..42f653e0cbb 100644 --- a/docs/atl/composite-controls-classes.md +++ b/docs/atl/composite-controls-classes.md @@ -4,10 +4,11 @@ title: "Composite Controls Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["composite controls, C++", "composite controls classes"] -ms.assetid: 9e8d65c4-d631-4500-a28b-6d42c35aba26 --- # Composite Controls Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following class provides support for creating composite controls - [CComCompositeControl](../atl/reference/ccomcompositecontrol-class.md) ActiveX controls derived from `CComCompositeControl` are hosted by a standard dialog box. These types of controls are called composite controls because they are able to host other controls (native Windows controls and ActiveX controls). diff --git a/docs/atl/connection-points-classes.md b/docs/atl/connection-points-classes.md index 52b73a0103c..4903c12022e 100644 --- a/docs/atl/connection-points-classes.md +++ b/docs/atl/connection-points-classes.md @@ -4,10 +4,11 @@ title: "Connection Points Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["classes [C++], connection points", "connection points classes"] -ms.assetid: 076365fa-299a-4dce-84c3-a5dff0e0da1f --- # Connection Points Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes provide support for connection points: - [IConnectionPointContainerImpl](../atl/reference/iconnectionpointcontainerimpl-class.md) Implements a connection point container. diff --git a/docs/atl/control-containment-classes.md b/docs/atl/control-containment-classes.md index 1446101b696..8eb055a2cbf 100644 --- a/docs/atl/control-containment-classes.md +++ b/docs/atl/control-containment-classes.md @@ -4,10 +4,11 @@ title: "Control Containment Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["control containment classes"] -ms.assetid: e0812aee-c078-4ced-b967-247976552b9a --- # Control Containment Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes provide containment support for hosting controls: - [CAxWindow](../atl/reference/caxwindow-class.md) Provides methods for manipulating a window that hosts an ActiveX control. diff --git a/docs/atl/controls-general-support-classes.md b/docs/atl/controls-general-support-classes.md index fdb016140e0..2bcaa142937 100644 --- a/docs/atl/controls-general-support-classes.md +++ b/docs/atl/controls-general-support-classes.md @@ -4,10 +4,11 @@ title: "ATL Controls: General Support Classes" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["controls [ATL]", "general support classes"] -ms.assetid: cf73f1d2-7542-48e3-b8c8-9d3abf29f85b --- # Controls: General Support Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes provide general support for ATL controls: - [CComControl](../atl/reference/ccomcontrol-class.md) Consists of helper functions and data members that are essential to ATL controls. diff --git a/docs/atl/creating-an-aggregated-object.md b/docs/atl/creating-an-aggregated-object.md index f0bc8d88b24..e6e24a5bf08 100644 --- a/docs/atl/creating-an-aggregated-object.md +++ b/docs/atl/creating-an-aggregated-object.md @@ -3,11 +3,12 @@ description: "Learn more about: Creating an Aggregated Object" title: "Creating an Aggregated Object" ms.date: "11/04/2016" helpviewer_keywords: ["aggregation [C++], creating aggregated objects", "aggregate objects [C++], creating"] -ms.assetid: fc29d7aa-fd53-4276-9c2f-37379f71b179 ms.topic: how-to --- # Creating an Aggregated Object +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Aggregation delegates `IUnknown` calls, providing a pointer to the outer object's `IUnknown` to the inner object. ## To create an aggregated object diff --git a/docs/atl/creating-an-atl-dhtml-control.md b/docs/atl/creating-an-atl-dhtml-control.md index 1831d58d0b3..c6c4f9c846b 100644 --- a/docs/atl/creating-an-atl-dhtml-control.md +++ b/docs/atl/creating-an-atl-dhtml-control.md @@ -3,11 +3,12 @@ description: "Learn more about: Creating an ATL DHTML Control" title: "Creating an ATL DHTML Control" ms.date: "11/04/2016" helpviewer_keywords: ["HTML controls, creating", "DHTML controls", "DHTML controls, creating"] -ms.assetid: 1d8f0ede-7d8b-4959-976e-b4d0e2a87f5a ms.topic: how-to --- # Creating an ATL DHTML Control +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The ATL Control Wizard automates the process of creating a DHTML control. It generates the necessary resource files, including an HTML file containing sample code. ## To create an ATL DHTML control diff --git a/docs/atl/creating-registrar-scripts.md b/docs/atl/creating-registrar-scripts.md index d9d281b53ab..9e9e8eb0ca2 100644 --- a/docs/atl/creating-registrar-scripts.md +++ b/docs/atl/creating-registrar-scripts.md @@ -3,11 +3,12 @@ description: "Learn more about: Creating Registrar scripts" title: "Creating scripts for ATL Registrar" ms.date: "05/14/2014" helpviewer_keywords: ["scripting, registry scripting", "ATL, registry", "registrar scripts [ATL]", "scripts, Registrar scripts", "scripts, creating"] -ms.assetid: cbd5024b-8061-4a71-be65-7fee90374a35 ms.topic: concept-article --- # Creating Registrar scripts +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + A registrar script provides data-driven, rather than API-driven, access to the system registry. Data-driven access is typically more efficient since it takes only one or two lines in a script to add a key to the registry. The [ATL Control Wizard](../atl/reference/atl-control-wizard.md) automatically generates a registrar script for your COM server. You can find this script in the .rgs file associated with your object. diff --git a/docs/atl/creating-the-project-atl-tutorial-part-1.md b/docs/atl/creating-the-project-atl-tutorial-part-1.md index b8a01fd2255..c7aa2721438 100644 --- a/docs/atl/creating-the-project-atl-tutorial-part-1.md +++ b/docs/atl/creating-the-project-atl-tutorial-part-1.md @@ -3,11 +3,12 @@ description: "Learn more about: Creating the Project (ATL Tutorial, Part 1)" title: "Creating the Project (ATL Tutorial, Part 1)" ms.custom: "get-started-article" ms.date: "08/19/2019" -ms.assetid: f6b727d1-390a-4b27-b82f-daadcd9fc059 ms.topic: tutorial --- # Creating the Project (ATL Tutorial, Part 1) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + This tutorial walks you step-by-step through a non-attributed ATL project that creates an ActiveX object that displays a polygon. The object includes options for allowing the user to change the number of sides making up the polygon, and code to refresh the display. > [!NOTE] diff --git a/docs/atl/data-transfer-classes.md b/docs/atl/data-transfer-classes.md index 67709a809cd..c3515d329ca 100644 --- a/docs/atl/data-transfer-classes.md +++ b/docs/atl/data-transfer-classes.md @@ -4,10 +4,11 @@ title: "Data Transfer Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["data transfer [C++]", "data transfer [C++], classes", "data transfer classes [C++]"] -ms.assetid: c10bcdc8-b90c-4c2a-9179-fd3de80461da --- # Data Transfer Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes support various types of data transfer: - [IDataObjectImpl](../atl/reference/idataobjectimpl-class.md) Supports Uniform Data Transfer by using standard formats to retrieve and set data. Handles data change notifications by managing connections to advise sinks. diff --git a/docs/atl/data-types-classes.md b/docs/atl/data-types-classes.md index 85d986bad81..c636b279ff2 100644 --- a/docs/atl/data-types-classes.md +++ b/docs/atl/data-types-classes.md @@ -4,10 +4,11 @@ title: "Data Types Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["data types classes [C++]", "data types [C++], classes"] -ms.assetid: 29882bab-9174-4dfa-8227-ccfeba80b865 --- # Data Types Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes wrap C++ data types: - [CComBSTR](../atl/reference/ccombstr-class.md) Wraps the `BSTR` data type. diff --git a/docs/atl/dcomcnfg.md b/docs/atl/dcomcnfg.md index 0a0468d6a57..ac312effae9 100644 --- a/docs/atl/dcomcnfg.md +++ b/docs/atl/dcomcnfg.md @@ -3,10 +3,11 @@ description: "Learn more about: DCOMCNFG" title: "DCOMCNFG" ms.date: "11/04/2016" helpviewer_keywords: ["DCOMCNFG utility", "DCOM, configuring in ATL"] -ms.assetid: 5a8126e9-ef27-40fb-a66e-9dce8d1a7e80 --- # DCOMCNFG +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + DCOMCNFG is a Windows NT 4.0 utility that allows you to configure various DCOM-specific settings in the registry. The DCOMCNFG window has three pages: Default Security, Default Properties, and Applications. Under Windows 2000 a fourth page, Default Protocols, is present. ## Default Security Page diff --git a/docs/atl/debugging-and-exceptions-classes.md b/docs/atl/debugging-and-exceptions-classes.md index 703972808b0..c8a8205fa2c 100644 --- a/docs/atl/debugging-and-exceptions-classes.md +++ b/docs/atl/debugging-and-exceptions-classes.md @@ -4,10 +4,11 @@ title: "Debugging and Exceptions Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["debugging and exceptions classes"] -ms.assetid: d42d7649-9721-4a1a-8b38-d983a649fdb9 --- # Debugging and Exceptions Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + These classes provide support for exception handling and debugging. - [CAtlDebugInterfacesModule](../atl/reference/catldebuginterfacesmodule-class.md) This class provides support for debugging interfaces. diff --git a/docs/atl/debugging-tips.md b/docs/atl/debugging-tips.md index 5fcdee636d5..f5680d207ed 100644 --- a/docs/atl/debugging-tips.md +++ b/docs/atl/debugging-tips.md @@ -3,11 +3,12 @@ description: "Learn more about: Debugging Tips" title: "Debugging Tips (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["ATL, debugging", "services, debugging"] -ms.assetid: 48c60244-d0ce-4466-85fa-6fa65fcfe86c ms.topic: concept-article --- # Debugging Tips +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following topics outline some useful steps for debugging your service: - [Using Task Manager](../atl/using-task-manager.md) diff --git a/docs/atl/design-principles-for-collection-and-enumerator-interfaces.md b/docs/atl/design-principles-for-collection-and-enumerator-interfaces.md index e75179b64e0..7f9b5386a3b 100644 --- a/docs/atl/design-principles-for-collection-and-enumerator-interfaces.md +++ b/docs/atl/design-principles-for-collection-and-enumerator-interfaces.md @@ -3,11 +3,12 @@ description: "Learn more about: Design Principles for Collection and Enumerator title: "Designing Collection and Enumerator Interfaces (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["enumerator interfaces", "collection interfaces"] -ms.assetid: ea19a39e-6333-41a1-be62-5435c236640e ms.topic: concept-article --- # Design Principles for Collection and Enumerator Interfaces +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + There are different design principles behind each type of interface: - A collection interface provides *random* access to a *single* item in the collection via the `Item` method, it lets clients discover how many items are in the collection via the `Count` property, and often allows clients to add and remove items. diff --git a/docs/atl/displaying-assertions.md b/docs/atl/displaying-assertions.md index 8587c3eb40c..e4ffc2a6420 100644 --- a/docs/atl/displaying-assertions.md +++ b/docs/atl/displaying-assertions.md @@ -3,11 +3,12 @@ description: "Learn more about: Displaying Assertions" title: "Displaying Assertions" ms.date: "05/05/2019" helpviewer_keywords: ["debugging [ATL], displaying assertions", "assertions, displaying", "debugging assertions", "assertions, debugging"] -ms.assetid: fa353fe8-4656-4384-a5d2-8866bc977f06 ms.topic: concept-article --- # Displaying Assertions +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + If the client connected to your service appears to stop responding, the service may have asserted and displayed a message box that you are not able to see. You can confirm this by using the Visual Studio debugger to debug your code (see [Using Task Manager](../atl/using-task-manager.md) earlier in this section). If you determine that your service is displaying a message box that you cannot see, you may want to set the **Allow Service to Interact with Desktop** option before using the service again. This option is a startup parameter that permits any message boxes displayed by the service to appear on the desktop. To set this option, open the Services Control Panel application, select the service, click **Startup**, and then select the **Allow Service to Interact with Desktop** option. diff --git a/docs/atl/dual-interfaces-and-atl.md b/docs/atl/dual-interfaces-and-atl.md index 2039cb3e12e..38dcc7d2888 100644 --- a/docs/atl/dual-interfaces-and-atl.md +++ b/docs/atl/dual-interfaces-and-atl.md @@ -3,10 +3,11 @@ description: "Learn more about: Dual Interfaces and ATL" title: "Dual Interfaces and ATL" ms.date: "11/04/2016" helpviewer_keywords: ["COM, and ATL", "ATL, dual interfaces", "dual interfaces, about dual interfaces"] -ms.assetid: 5a390e89-d2c4-41f0-8538-cab2c5e5d4c8 --- # Dual Interfaces and ATL +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + A dual interface allows its methods to be accessed as dispinterface methods or as vtable methods. This section covers some of the features of dual interfaces from an ATL perspective. ## In This Section diff --git a/docs/atl/dual-interfaces-and-events.md b/docs/atl/dual-interfaces-and-events.md index a0a520b396a..5e5fc2bc5e1 100644 --- a/docs/atl/dual-interfaces-and-events.md +++ b/docs/atl/dual-interfaces-and-events.md @@ -3,10 +3,11 @@ description: "Learn more about: Dual Interfaces and Events" title: "Dual Interfaces and Events" ms.date: "11/04/2016" helpviewer_keywords: ["events [C++], dual interfaces", "dual interfaces, events"] -ms.assetid: bb382f7c-e885-4274-bf07-83f3602615d2 --- # Dual Interfaces and Events +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + While it is possible to design an event interface as a dual, there are a number of good design reasons not to do so. The fundamental reason is that the source of the event will only fire the event via the vtable or via `Invoke`, not both. If the event source fires the event as a direct vtable method call, the `IDispatch` methods will never be used and it's clear that the interface should have been a pure vtable interface. If the event source fires the event as a call to `Invoke`, the vtable methods will never be used and it's clear that the interface should have been a dispinterface. If you define your event interfaces as duals, you'll be requiring clients to implement part of an interface that will never be used. > [!NOTE] diff --git a/docs/atl/dual-interfaces-classes.md b/docs/atl/dual-interfaces-classes.md index b6755655498..c66bd005920 100644 --- a/docs/atl/dual-interfaces-classes.md +++ b/docs/atl/dual-interfaces-classes.md @@ -4,10 +4,11 @@ title: "Dual Interfaces Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["dual interfaces, classes", "dual interfaces"] -ms.assetid: c2b1b165-ff39-4e4a-a683-91eca9158304 --- # Dual Interfaces Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following class provides support for dual interfaces: - [IDispatchImpl](../atl/reference/idispatchimpl-class.md) Implements the `IDispatch` portion of a dual interface. For more information, see [Implementing the IDispatch Interface](/previous-versions/windows/desktop/automat/implementing-the-idispatch-interface). diff --git a/docs/atl/enumerators-and-collections-classes.md b/docs/atl/enumerators-and-collections-classes.md index 6ccef203df3..1362c008dee 100644 --- a/docs/atl/enumerators-and-collections-classes.md +++ b/docs/atl/enumerators-and-collections-classes.md @@ -4,10 +4,11 @@ title: "Enumerators and Collections Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["enumerators, ATL classes"] -ms.assetid: fcd093b2-98bf-444d-94ab-9a55520a5051 --- # Enumerators and Collections Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes provide support for COM collections and enumerations: - [CComEnum](../atl/reference/ccomenum-class.md) Defines a COM enumerator object based on an array. diff --git a/docs/atl/error-information-classes.md b/docs/atl/error-information-classes.md index 5a2a987385b..bea5c2cbbe2 100644 --- a/docs/atl/error-information-classes.md +++ b/docs/atl/error-information-classes.md @@ -4,10 +4,11 @@ title: "Error Information Classe (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["error handling, error information classes", "error handling, classes", "error information, classes"] -ms.assetid: ba40c8fb-81fd-4f61-8f47-fa2cb540e274 --- # Error Information Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following class indicates how error information is handled: - [ISupportErrorInfoImpl](../atl/reference/isupporterrorinfoimpl-class.md) Determines whether the object supports the [IErrorInfo](/windows/win32/api/oaidl/nn-oaidl-ierrorinfo) interface. `IErrorInfo` allows error information to be propagated back to the client. diff --git a/docs/atl/event-handling-and-atl.md b/docs/atl/event-handling-and-atl.md index 649b68042c1..9a06e07a6a7 100644 --- a/docs/atl/event-handling-and-atl.md +++ b/docs/atl/event-handling-and-atl.md @@ -3,10 +3,11 @@ description: "Learn more about: Event Handling and ATL" title: "Event Handling and ATL" ms.date: "11/04/2016" helpviewer_keywords: ["event handling, about event handling"] -ms.assetid: e4812b0d-6fdd-4e8c-bdb8-378a25c7bde2 --- # Event Handling and ATL +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + This section shows how to sink events using ATL. It covers the principles of COM event handling and the specifics of sinking events using the support provided by ATL. For information on how to fire events and implement connection points, read [ATL Connection Points](../atl/atl-connection-points.md). diff --git a/docs/atl/event-handling-principles.md b/docs/atl/event-handling-principles.md index 41c766a5e7a..4aba9a8917b 100644 --- a/docs/atl/event-handling-principles.md +++ b/docs/atl/event-handling-principles.md @@ -3,10 +3,11 @@ description: "Learn more about: Event Handling Principles" title: "Event Handling Principles (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["event handling, implementing", "event handling, advising event sources", "interfaces, event and event sink", "dual interfaces, event interfaces", "event handling, dual event interfaces"] -ms.assetid: d17ca7cb-54f2-4658-ab8b-b721ac56801d --- # Event Handling Principles +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + There are three steps common to all event handling. You will need to: - Implement the event interface on your object. diff --git a/docs/atl/example-implementing-a-property-page.md b/docs/atl/example-implementing-a-property-page.md index 6e7ee66751a..57f0ba62255 100644 --- a/docs/atl/example-implementing-a-property-page.md +++ b/docs/atl/example-implementing-a-property-page.md @@ -3,11 +3,12 @@ description: "Learn more about: Example: Implementing a Property Page" title: "Implementing a Property Page (ATL)" ms.date: "05/09/2019" helpviewer_keywords: ["property pages, implementing"] -ms.assetid: c30b67fe-ce08-4249-ae29-f3060fa8d61e ms.topic: how-to --- # Example: Implementing a Property Page +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" The ATL Property Page wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/file-handling-classes.md b/docs/atl/file-handling-classes.md index 22602083ecb..da26a0af03f 100644 --- a/docs/atl/file-handling-classes.md +++ b/docs/atl/file-handling-classes.md @@ -4,10 +4,11 @@ title: "File Handling Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["file classes [C++]"] -ms.assetid: 94355eb1-daa3-4825-b183-7392b3899561 --- # File Handling Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + These classes provide methods for handling files, temporary files, and memory-mapped files. - [CAtlFile](../atl/reference/catlfile-class.md) This class provides a thin wrapper around the Windows file-handling API. diff --git a/docs/atl/fundamentals-of-atl-com-objects.md b/docs/atl/fundamentals-of-atl-com-objects.md index afc7adb434f..336b93f9f20 100644 --- a/docs/atl/fundamentals-of-atl-com-objects.md +++ b/docs/atl/fundamentals-of-atl-com-objects.md @@ -3,10 +3,11 @@ description: "Learn more about: Fundamentals of ATL COM Objects" title: "Fundamentals of ATL COM Objects" ms.date: "11/19/2018" helpviewer_keywords: ["COM, and ATL", "ATL, COM", "ATL COM objects", "COM objects, ATL"] -ms.assetid: 0f9c9d98-cc28-45da-89ac-dc94cee422fe --- # Fundamentals of ATL COM Objects +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following illustration depicts the relationship among the classes and interfaces that are used to define an ATL COM object. ![Diagram of the classes and interfaces used to define an A T L object.](../atl/media/vc307y1.gif "ATL structure") diff --git a/docs/atl/identifying-the-elements-of-the-dhtml-control-project.md b/docs/atl/identifying-the-elements-of-the-dhtml-control-project.md index 7ac825b8372..563f6a8ec03 100644 --- a/docs/atl/identifying-the-elements-of-the-dhtml-control-project.md +++ b/docs/atl/identifying-the-elements-of-the-dhtml-control-project.md @@ -3,11 +3,12 @@ description: "Learn more about: Identifying the Elements of the DHTML Control Pr title: "Identifying the Elements of the DHTML Control Project" ms.date: "11/19/2018" helpviewer_keywords: ["HTML controls, ATL support", "DHTML controls, ATL support"] -ms.assetid: b627547a-3768-4346-9900-4b7a21fb8e27 ms.topic: concept-article --- # Identifying the Elements of the DHTML Control Project +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Most DHTML control code is exactly like that created for any ATL control. For a basic understanding of the generic code, work through the [ATL tutorial](../atl/active-template-library-atl-tutorial.md), and read the sections [Creating an ATL Project](../atl/reference/creating-an-atl-project.md) and [Fundamentals of ATL COM Objects](../atl/fundamentals-of-atl-com-objects.md). A DHTML control is similar to any ATL control, except: diff --git a/docs/atl/implementing-a-dialog-box.md b/docs/atl/implementing-a-dialog-box.md index c84428bea54..a416d87a717 100644 --- a/docs/atl/implementing-a-dialog-box.md +++ b/docs/atl/implementing-a-dialog-box.md @@ -3,11 +3,12 @@ description: "Learn more about: Implementing a Dialog Box" title: "Implementing a Dialog Box" ms.date: "11/04/2016" helpviewer_keywords: ["CSimpleDialog class, implementing dialog boxes in ATL", "dialog boxes, ATL", "CAxDialogImpl class, implementing dialog boxes in ATL", "ATL, dialog boxes"] -ms.assetid: 478525f2-aa6a-435a-b162-68fc8aa98a8e ms.topic: how-to --- # Implementing a Dialog Box +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + There are two ways to add a dialog box to your ATL project: use the ATL Dialog Wizard or add it manually. ## Adding a Dialog Box with the ATL Dialog Wizard diff --git a/docs/atl/implementing-a-dual-interface.md b/docs/atl/implementing-a-dual-interface.md index 6abd84d51b4..fc2afff4195 100644 --- a/docs/atl/implementing-a-dual-interface.md +++ b/docs/atl/implementing-a-dual-interface.md @@ -3,11 +3,12 @@ description: "Learn more about: Implementing a Dual Interface" title: "Implementing a Dual Interface (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["IDispatchImpl class, implementing dual interfaces", "dual interfaces, implementing"] -ms.assetid: d1da3633-b445-4dcd-8a0a-3efdafada3ea ms.topic: concept-article --- # Implementing a Dual Interface +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + You can implement a dual interface using the [IDispatchImpl](../atl/reference/idispatchimpl-class.md) class, which provides a default implementation of the `IDispatch` methods in a dual interface. For more information, see [Implementing the IDispatch Interface](/previous-versions/windows/desktop/automat/implementing-the-idispatch-interface). To use this class: diff --git a/docs/atl/implementing-a-window-with-cwindowimpl.md b/docs/atl/implementing-a-window-with-cwindowimpl.md index be0f590b83f..aaad98298e0 100644 --- a/docs/atl/implementing-a-window-with-cwindowimpl.md +++ b/docs/atl/implementing-a-window-with-cwindowimpl.md @@ -3,11 +3,12 @@ description: "Learn more about: Implementing a Window with CWindowImpl" title: "Implementing a Window with CWindowImpl" ms.date: "11/04/2016" helpviewer_keywords: ["ATL, windows", "windows [C++], subclassing", "windows [C++], superclassing", "windows [C++], ATL", "subclassing ATL window classes", "superclassing, ATL"] -ms.assetid: 3fc40550-f1d6-4702-8b7c-4cf682b6a855 ms.topic: how-to --- # Implementing a Window with CWindowImpl +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + To implement a window, derive a class from `CWindowImpl`. In your derived class, declare a message map and the message handler functions. You can now use your class in three different ways: - [Create a window based on a new Windows class](#_atl_creating_a_window_based_on_a_new_windows_class) diff --git a/docs/atl/implementing-a-window.md b/docs/atl/implementing-a-window.md index dbe42c3fbc5..478f0fa5750 100644 --- a/docs/atl/implementing-a-window.md +++ b/docs/atl/implementing-a-window.md @@ -3,11 +3,12 @@ description: "Learn more about: Implementing a Window" title: "Implementing a Window (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["ATL, windows", "CWindowImpl class, using", "windows [C++], implementing in ATL"] -ms.assetid: eb1ce8d6-72f9-4894-aae7-e60a61665628 ms.topic: concept-article --- # Implementing a Window +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Class [CWindowImpl](../atl/reference/cwindowimpl-class.md) allows you to implement a window and handle its messages. Message handing in ATL is based on a message map. This section explains: - How to [add a message handler](../atl/adding-an-atl-message-handler.md) to a control. diff --git a/docs/atl/implementing-an-stl-based-collection.md b/docs/atl/implementing-an-stl-based-collection.md index 761ef740d16..5670f233a3b 100644 --- a/docs/atl/implementing-an-stl-based-collection.md +++ b/docs/atl/implementing-an-stl-based-collection.md @@ -3,11 +3,12 @@ description: "Learn more about: Implementing a C++ Standard Library-Based Collec title: "Implementing a C++ Standard Library-Based Collection" ms.date: "11/04/2016" helpviewer_keywords: ["ICollectionOnSTLImpl interface"] -ms.assetid: 6d49f819-1957-4813-b074-3f12c494d8ca ms.topic: how-to --- # Implementing a C++ Standard Library-Based Collection +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ATL provides the `ICollectionOnSTLImpl` interface to enable you to quickly implement C++ Standard Library-based collection interfaces on your objects. To understand how this class works, you will work through a simple example (below) that uses this class to implement a read-only collection aimed at Automation clients. The sample code is from the [ATLCollections sample](../overview/visual-cpp-samples.md). diff --git a/docs/atl/implementing-ccomobject-ccomaggobject-and-ccompolyobject.md b/docs/atl/implementing-ccomobject-ccomaggobject-and-ccompolyobject.md index e7a6428fbaa..1248dc40715 100644 --- a/docs/atl/implementing-ccomobject-ccomaggobject-and-ccompolyobject.md +++ b/docs/atl/implementing-ccomobject-ccomaggobject-and-ccompolyobject.md @@ -3,11 +3,12 @@ description: "Learn more about: Implementing CComObject, CComAggObject, and CCom title: "Implementing CComObject, CComAggObject, and CComPolyObject" ms.date: "11/04/2016" helpviewer_keywords: ["CComPolyObject class, implementing", "CreateInstance method", "CComAggObject class", "CComObject class, implementing"] -ms.assetid: 5aabe938-104d-492e-9c41-9f7fb1c62098 ms.topic: concept-article --- # Implementing CComObject, CComAggObject, and CComPolyObject +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The template classes [CComObject](../atl/reference/ccomobject-class.md), [CComAggObject](../atl/reference/ccomaggobject-class.md), and [CComPolyObject](../atl/reference/ccompolyobject-class.md) are always the most derived classes in the inheritance chain. It is their responsibility to handle all of the methods in `IUnknown`: `QueryInterface`, `AddRef`, and `Release`. In addition, `CComAggObject` and `CComPolyObject` (when used for aggregated objects) provide the special reference counting and `QueryInterface` semantics required for the inner unknown. Whether `CComObject`, `CComAggObject`, or `CComPolyObject` is used depends on whether you declare one (or none) of the following macros: diff --git a/docs/atl/implementing-ccomobjectrootex.md b/docs/atl/implementing-ccomobjectrootex.md index 5dc0fc19caf..48a7ab9b4de 100644 --- a/docs/atl/implementing-ccomobjectrootex.md +++ b/docs/atl/implementing-ccomobjectrootex.md @@ -3,11 +3,12 @@ description: "Learn more about: Implementing CComObjectRootEx" title: "Implementing CComObjectRootEx" ms.date: "11/04/2016" helpviewer_keywords: ["CComObjectRoot class, implementing", "CComObjectRootEx class"] -ms.assetid: 79630c44-f2df-4e9e-b730-400a0ebfbd2b ms.topic: concept-article --- # Implementing CComObjectRootEx +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + [CComObjectRootEx](../atl/reference/ccomobjectrootex-class.md) is essential; all ATL objects must have one instance of `CComObjectRootEx` or [CComObjectRoot](../atl/reference/ccomobjectroot-class.md) in their inheritance. `CComObjectRootEx` provides the default `QueryInterface` mechanism based on COM map entries. Through its COM map, an object's interfaces are exposed to a client when the client queries for an interface. The query is performed through `CComObjectRootEx::InternalQueryInterface`. `InternalQueryInterface` only handles interfaces in the COM map table. diff --git a/docs/atl/implementing-property-pages.md b/docs/atl/implementing-property-pages.md index d9e3b0942c4..b6fb0ecf5ee 100644 --- a/docs/atl/implementing-property-pages.md +++ b/docs/atl/implementing-property-pages.md @@ -3,11 +3,12 @@ description: "Learn more about: Implementing Property Pages" title: "Implementing Property Pages" ms.date: "11/04/2016" helpviewer_keywords: ["IPropertyPage2 class", "IPropertyPage class", "property pages, implementing"] -ms.assetid: 62f29440-33a7-40eb-a1ef-3634c95f640c ms.topic: how-to --- # Implementing Property Pages +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" The ATL Property Page wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/implementing-the-event-handling-interface.md b/docs/atl/implementing-the-event-handling-interface.md index 3442039a73e..121be8961ce 100644 --- a/docs/atl/implementing-the-event-handling-interface.md +++ b/docs/atl/implementing-the-event-handling-interface.md @@ -3,11 +3,12 @@ description: "Learn more about: Implementing the Event Handling Interface" title: "Implementing the Event Handling Interface" ms.date: "11/04/2016" helpviewer_keywords: ["ATL, event handling", "event handling, ATL", "interfaces, event and event sink"] -ms.assetid: eb2a5b33-88dc-4ce3-bee0-c5c38ea050d7 ms.topic: concept-article --- # Implementing the Event Handling Interface +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ATL helps you with all three elements required for handling events: implementing the event interface, advising the event source, and unadvising the event source. The precise steps you'll need to take depend on the type of the event interface and the performance requirements of your application. The most common ways of implementing an interface using ATL are: diff --git a/docs/atl/inserting-a-composite-control.md b/docs/atl/inserting-a-composite-control.md index ad1f4f6dc24..78e2ee55f0d 100644 --- a/docs/atl/inserting-a-composite-control.md +++ b/docs/atl/inserting-a-composite-control.md @@ -3,11 +3,12 @@ description: "Learn more about: Inserting a Composite Control" title: "Inserting a Composite Control" ms.date: "11/04/2016" helpviewer_keywords: ["composite controls, inserting with ATL Object Wizard", "composite controls", "ATL Control Wizard"] -ms.assetid: f10b1927-9fc6-40a7-ac29-efdac70584fe ms.topic: how-to --- # Inserting a Composite Control +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The **Add Class** dialog box allows you to insert an ATL object into a project. Access this dialog box by right-clicking the project name in Solution Explorer, pointing to **Add**, and then clicking **Add Class**. In the **Add Class** dialog box, choose **ATL Control**. This will start the [ATL Control Wizard](../atl/reference/atl-control-wizard.md). To create a composite control, select the **Options** tab, and click the **Composite control** check box. diff --git a/docs/atl/interface-pointers-classes.md b/docs/atl/interface-pointers-classes.md index d54f0ad4aa5..06f9c44a043 100644 --- a/docs/atl/interface-pointers-classes.md +++ b/docs/atl/interface-pointers-classes.md @@ -4,10 +4,11 @@ title: "Interface Pointers Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["pointers, to interfaces", "interfaces, pointers classes", "interface pointers classes"] -ms.assetid: 712617a1-17ae-4b5c-a32c-a48b758df7a6 --- # Interface Pointers Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes manage a given interface pointer: - [CComPtr](../atl/reference/ccomptr-class.md) Performs automatic reference counting. diff --git a/docs/atl/interfaces-atl.md b/docs/atl/interfaces-atl.md index 93422d3cd23..1b36fe72cec 100644 --- a/docs/atl/interfaces-atl.md +++ b/docs/atl/interfaces-atl.md @@ -4,10 +4,11 @@ title: "Interfaces (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["COM interfaces", "interfaces, COM"] -ms.assetid: de6c8b12-6230-4fdc-af66-a28b91d5ee55 --- # Interfaces (ATL) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + An interface is the way in which an object exposes its functionality to the outside world. In COM, an interface is a table of pointers (like a C++ vtable) to functions implemented by the object. The table represents the interface, and the functions to which it points are the methods of that interface. An object can expose as many interfaces as it chooses. Each interface is based on the fundamental COM interface, [IUnknown](../atl/iunknown.md). The methods of `IUnknown` allow navigation to other interfaces exposed by the object. diff --git a/docs/atl/introduction-to-atl-window-classes.md b/docs/atl/introduction-to-atl-window-classes.md index 5ae3fc8c8a3..6c245514d51 100644 --- a/docs/atl/introduction-to-atl-window-classes.md +++ b/docs/atl/introduction-to-atl-window-classes.md @@ -3,11 +3,12 @@ description: "Learn more about: Introduction to ATL Window Classes" title: "Introduction to ATL Window Classes" ms.date: "11/04/2016" helpviewer_keywords: ["window classes"] -ms.assetid: 503efc2c-a269-495d-97cf-3fb300d52f3d ms.topic: concept-article --- # Introduction to ATL Window Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following ATL classes are designed to implement and manipulate windows: - [CWindow](../atl/reference/cwindow-class.md) allows you to attach a window handle to the `CWindow` object. You then call `CWindow` methods to manipulate the window. diff --git a/docs/atl/introduction-to-atl.md b/docs/atl/introduction-to-atl.md index cccfc973918..0a62bded508 100644 --- a/docs/atl/introduction-to-atl.md +++ b/docs/atl/introduction-to-atl.md @@ -4,11 +4,12 @@ title: "Introduction to ATL" ms.custom: "index-page" ms.date: "11/04/2016" helpviewer_keywords: ["COM objects, creating in ATL", "ATL"] -ms.assetid: 77f565e8-c4ec-4a80-af4b-7278fcfe5c98 ms.topic: concept-article --- # Introduction to ATL +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ATL is the Active Template Library, a set of template-based C++ classes with which you can easily create small, fast Component Object Model (COM) objects. It has special support for key COM features including: stock implementations of [IUnknown](/windows/win32/api/unknwn/nn-unknwn-iunknown), [IClassFactory](/windows/win32/api/unknwnbase/nn-unknwnbase-iclassfactory), [IClassFactory2](/windows/win32/api/ocidl/nn-ocidl-iclassfactory2), and `IDispatch`; dual interfaces; standard COM enumerator interfaces; connection points; tear-off interfaces; and ActiveX controls. ATL code can be used to create single-threaded objects, apartment-model objects, free-threaded model objects, or both free-threaded and apartment-model objects. diff --git a/docs/atl/introduction-to-com-and-atl.md b/docs/atl/introduction-to-com-and-atl.md index 57e25904bca..47447c9ebdb 100644 --- a/docs/atl/introduction-to-com-and-atl.md +++ b/docs/atl/introduction-to-com-and-atl.md @@ -4,11 +4,12 @@ title: "Introduction to COM and ATL" ms.custom: "index-page" ms.date: "11/04/2016" helpviewer_keywords: ["COM, and ATL", "ATL, COM", "COM objects, ATL"] -ms.assetid: 35d6ae9c-abbb-42f0-9344-33f3c19ac3ce ms.topic: concept-article --- # Introduction to COM and ATL +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + This section provides a brief introduction to COM and ATL. ## In This Section diff --git a/docs/atl/introduction-to-com.md b/docs/atl/introduction-to-com.md index c44fc4f0652..8b192520ef9 100644 --- a/docs/atl/introduction-to-com.md +++ b/docs/atl/introduction-to-com.md @@ -4,11 +4,12 @@ title: "Introduction to COM" ms.custom: "index-page" ms.date: "11/04/2016" helpviewer_keywords: ["COM"] -ms.assetid: 120735d9-db71-4ad3-a730-ce576ea2354e ms.topic: concept-article --- # Introduction to COM +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + COM is the fundamental "object model" on which ActiveX Controls and OLE are built. COM allows an object to expose its functionality to other components and to host applications. It defines both how the object exposes itself and how this exposure works across processes and across networks. COM also defines the object's life cycle. Fundamental to COM are these concepts: diff --git a/docs/atl/invoking-scripts.md b/docs/atl/invoking-scripts.md index 2d339471811..3cc906049fc 100644 --- a/docs/atl/invoking-scripts.md +++ b/docs/atl/invoking-scripts.md @@ -3,11 +3,12 @@ description: "Learn more about: Invoking Scripts" title: "Invoking Scripts (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["StringRegister method", "scripts, invoking registry in ATL"] -ms.assetid: eabd41ee-586b-4266-9e92-5aaad04b73a4 ms.topic: concept-article --- # Invoking Scripts +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + [Using Replaceable Parameters (The Registrar's Preprocessor)](../atl/using-replaceable-parameters-the-registrar-s-preprocessor.md) discusses replacement maps and mentions the Registrar method **AddReplacement**. The Registrar has eight other methods specific to scripting, and all are described in the following table. |Method|Syntax/Description| diff --git a/docs/atl/iunknown-implementation-classes.md b/docs/atl/iunknown-implementation-classes.md index 7721fad35c6..a64a723fe84 100644 --- a/docs/atl/iunknown-implementation-classes.md +++ b/docs/atl/iunknown-implementation-classes.md @@ -4,10 +4,11 @@ title: "IUnknown Implementation Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["IUnknown implementation classes"] -ms.assetid: 47b69bb5-69d8-4a9c-84a8-329bdde2bb3f --- # IUnknown Implementation Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes implement `IUnknown` and related methods: - [CComObjectRootEx](../atl/reference/ccomobjectrootex-class.md) Manages reference counting for both aggregated and nonaggregated objects. Allows you to specify a threading model. diff --git a/docs/atl/iunknown.md b/docs/atl/iunknown.md index ee1578aa31f..e466a86e6a5 100644 --- a/docs/atl/iunknown.md +++ b/docs/atl/iunknown.md @@ -4,10 +4,11 @@ title: "IUnknown" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["COM interfaces, base interface", "IUnknown interface"] -ms.assetid: e6b85472-e54b-4b8c-b19f-4454d6c05a8f --- # IUnknown +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + [IUnknown](/windows/win32/api/unknwn/nn-unknwn-iunknown) is the base interface of every other COM interface. This interface defines three methods: [QueryInterface](/windows/win32/api/unknwn/nf-unknwn-iunknown-queryinterface(q)), [AddRef](/windows/win32/api/unknwn/nf-unknwn-iunknown-addref), and [Release](/windows/win32/api/unknwn/nf-unknwn-iunknown-release). [QueryInterface](/windows/win32/api/unknwn/nf-unknwn-iunknown-queryinterface(q)) allows an interface user to ask the object for a pointer to another of its interfaces. [AddRef](/windows/win32/api/unknwn/nf-unknwn-iunknown-addref) and [Release](/windows/win32/api/unknwn/nf-unknwn-iunknown-release) implement reference counting on the interface. ## See also diff --git a/docs/atl/linking-to-the-crt-in-your-atl-project.md b/docs/atl/linking-to-the-crt-in-your-atl-project.md index 430134baa43..3e5d84ca794 100644 --- a/docs/atl/linking-to-the-crt-in-your-atl-project.md +++ b/docs/atl/linking-to-the-crt-in-your-atl-project.md @@ -3,11 +3,12 @@ description: "Learn more about: Linking to the CRT in Your ATL Project" title: "Linking to the CRT in Your ATL Project" ms.date: "11/04/2016" helpviewer_keywords: ["CRT, linking with ATL", "WinMainCRTStartup method", "DllMainCRTStartup method", "wWinMainCRTStartup method", "ATL, C Run-Time library (CRT)"] -ms.assetid: 650957ae-362c-4ecf-8b03-5d49138e8b5b ms.topic: concept-article --- # Linking to the CRT in Your ATL Project +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The [C Run-Time Libraries](../c-runtime-library/crt-library-features.md) (CRT) provide many useful functions that can make programming much easier during ATL development. All ATL projects link to the CRT library. You can see the advantages and disadvantages of linking method in [Benefits and Tradeoffs of the Method Used to Link to the CRT](../atl/benefits-and-tradeoffs-of-the-method-used-to-link-to-the-crt.md). ## Effects of Linking to the CRT on Your Program Image diff --git a/docs/atl/marshaling.md b/docs/atl/marshaling.md index 1f5c52b2be5..28f1c0f3582 100644 --- a/docs/atl/marshaling.md +++ b/docs/atl/marshaling.md @@ -3,11 +3,12 @@ description: "Learn more about: Marshaling" title: "Marshaling" ms.date: "11/04/2016" helpviewer_keywords: ["marshaling, COM interop", "marshaling", "COM interfaces, marshaling"] -ms.assetid: 40644b0a-1106-4fc8-9dfb-9bee9915d825 ms.topic: concept-article --- # Marshaling +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The COM technique of marshaling allows interfaces exposed by an object in one process to be used in another process. In marshaling, COM provides code (or uses code provided by the interface implementor) both to pack a method's parameters into a format that can be moved across processes (as well as, across the wire to processes running on other machines) and to unpack those parameters at the other end. Likewise, COM must perform these same steps on the return from the call. > [!NOTE] diff --git a/docs/atl/memory-management-classes.md b/docs/atl/memory-management-classes.md index 680e61f19de..89bea5d1d08 100644 --- a/docs/atl/memory-management-classes.md +++ b/docs/atl/memory-management-classes.md @@ -4,10 +4,11 @@ title: "Memory Management Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["memory, managing"] -ms.assetid: be564a5e-577e-40a7-bfe3-25ad21e57270 --- # Memory Management Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + These classes provide support for heap pointers, smart pointers, and other memory allocation routines. - [CAutoPtr](../atl/reference/cautoptr-class.md) This class represents a smart pointer object. diff --git a/docs/atl/message-handler-functions.md b/docs/atl/message-handler-functions.md index a37dc85d188..e478109d521 100644 --- a/docs/atl/message-handler-functions.md +++ b/docs/atl/message-handler-functions.md @@ -4,10 +4,11 @@ title: "Message Handler Functions" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["MESSAGE_HANDLER macro", "COMMAND_HANDLER macro", "CommandHandler method", "MessageHandler method", "NotifyHandler method", "message maps, ATL", "NOTIFY_HANDLER macro, message handler functions", "ATL, message handlers"] -ms.assetid: 2007a8c5-0143-42f1-91ab-809f235f9d50 --- # Message Handler Functions +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ATL provides three types of message handler functions: |Type of message handler|Corresponding message macro| diff --git a/docs/atl/message-maps-atl.md b/docs/atl/message-maps-atl.md index 0ab8a690a8f..6b0ab765a4d 100644 --- a/docs/atl/message-maps-atl.md +++ b/docs/atl/message-maps-atl.md @@ -4,10 +4,11 @@ title: "Message Maps (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["message maps, ATL", "ATL, message handlers"] -ms.assetid: 9e100400-65c7-4a85-8857-4e6cb6dd7340 --- # Message Maps (ATL) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + A message map associates a handler function with a particular message, command, or notification. By using ATL's [message map macros](../atl/reference/message-map-macros-atl.md), you can specify a message map for a window. The window procedures in `CWindowImpl`, `CDialogImpl`, and `CContainedWindowT` direct a window's messages to its message map. The [message handler functions](../atl/message-handler-functions.md) accept an additional argument of type `BOOL&`. This argument indicates whether a message has been processed, and it is set to TRUE by default. A handler function can then set the argument to FALSE to indicate that it has not handled a message. In this case, ATL will continue to look for a handler function further in the message map. By setting this argument to FALSE, you can first perform some action in response to a message and then allow the default processing or another handler function to finish handling the message. From 740d676a707c4b73e5351c3c93b7e807cf67a22b Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 25 Feb 2026 15:03:26 -0800 Subject: [PATCH 334/619] ATL batch 2: docs updates (files 95-194) --- docs/atl/messagehandler.md | 3 ++- docs/atl/mmc-snap-in-classes.md | 3 ++- docs/atl/modifying-the-atl-dhtml-control.md | 3 ++- docs/atl/modifying-the-atl-project.md | 3 ++- docs/atl/multiple-dual-interfaces.md | 3 ++- docs/atl/nonextensible-attribute.md | 3 ++- docs/atl/notifyhandler.md | 3 ++- docs/atl/object-safety-classes.md | 3 ++- docs/atl/persistence-classes.md | 3 ++- docs/atl/programming-with-atl-and-c-run-time-code.md | 3 ++- docs/atl/programming-with-ccombstr-atl.md | 3 ++- docs/atl/properties-and-property-pages-classes.md | 3 ++- .../putting-the-control-on-a-web-page-atl-tutorial-part-7.md | 3 ++- docs/atl/queryinterface.md | 3 ++- docs/atl/reference-counting.md | 3 ++- docs/atl/reference/adding-a-new-interface-in-an-atl-project.md | 3 ++- .../reference/adding-an-atl-active-server-page-component.md | 3 ++- docs/atl/reference/adding-an-atl-com-plus-1-0-component.md | 3 ++- docs/atl/reference/adding-an-atl-control.md | 3 ++- docs/atl/reference/adding-an-atl-dialog-box.md | 3 ++- docs/atl/reference/adding-an-atl-ole-db-consumer.md | 3 ++- docs/atl/reference/adding-an-atl-ole-db-provider.md | 3 ++- docs/atl/reference/adding-an-atl-property-page.md | 3 ++- docs/atl/reference/adding-an-atl-simple-object.md | 3 ++- .../reference/adding-objects-and-controls-to-an-atl-project.md | 3 ++- docs/atl/reference/aggregation-and-class-factory-macros.md | 3 ++- docs/atl/reference/appearance-atl-control-wizard.md | 3 ++- docs/atl/reference/application-settings-atl-project-wizard.md | 3 ++- .../reference/asp-atl-active-server-page-component-wizard.md | 3 ++- docs/atl/reference/atl-active-server-page-component-wizard.md | 3 ++- docs/atl/reference/atl-base-module70-structure.md | 3 ++- docs/atl/reference/atl-classes.md | 2 ++ docs/atl/reference/atl-com-module70-structure.md | 3 ++- docs/atl/reference/atl-com-plus-1-0-component-wizard.md | 3 ++- docs/atl/reference/atl-control-wizard.md | 3 ++- docs/atl/reference/atl-dialog-wizard.md | 3 ++- docs/atl/reference/atl-drawinfo-structure.md | 3 ++- docs/atl/reference/atl-func-info-structure.md | 3 ++- docs/atl/reference/atl-functions.md | 3 ++- docs/atl/reference/atl-global-variables.md | 3 ++- docs/atl/reference/atl-http-utility-functions.md | 3 ++- docs/atl/reference/atl-macros.md | 3 ++- docs/atl/reference/atl-module70-structure.md | 3 ++- docs/atl/reference/atl-ole-db-consumer-wizard.md | 3 ++- docs/atl/reference/atl-ole-db-provider-wizard.md | 3 ++- docs/atl/reference/atl-operators.md | 3 ++- docs/atl/reference/atl-path-functions.md | 3 ++- docs/atl/reference/atl-project-wizard.md | 3 ++- docs/atl/reference/atl-property-page-wizard.md | 3 ++- docs/atl/reference/atl-simple-object-wizard.md | 3 ++- docs/atl/reference/atl-text-encoding-functions.md | 3 ++- docs/atl/reference/atl-typedefs.md | 3 ++- docs/atl/reference/atl-url-scheme-enum.md | 3 ++- docs/atl/reference/atl-win-module70-structure.md | 3 ++- docs/atl/reference/atl-wizards-and-dialog-boxes.md | 3 ++- docs/atl/reference/atlcreatewnddata-structure.md | 3 ++- docs/atl/reference/ca2aex-class.md | 3 ++- docs/atl/reference/ca2caex-class.md | 3 ++- docs/atl/reference/ca2wex-class.md | 3 ++- docs/atl/reference/caccesstoken-class.md | 3 ++- docs/atl/reference/cacl-class.md | 3 ++- docs/atl/reference/cadapt-class.md | 3 ++- docs/atl/reference/category-macros.md | 3 ++- docs/atl/reference/catlarray-class.md | 3 ++- docs/atl/reference/catlautothreadmodule-class.md | 3 ++- docs/atl/reference/catlautothreadmodulet-class.md | 3 ++- docs/atl/reference/catlbasemodule-class.md | 3 ++- docs/atl/reference/catlcommodule-class.md | 3 ++- docs/atl/reference/catldebuginterfacesmodule-class.md | 3 ++- docs/atl/reference/catldllmodulet-class.md | 3 ++- docs/atl/reference/catlexception-class.md | 3 ++- docs/atl/reference/catlexemodulet-class.md | 3 ++- docs/atl/reference/catlfile-class.md | 3 ++- docs/atl/reference/catlfilemapping-class.md | 3 ++- docs/atl/reference/catlfilemappingbase-class.md | 3 ++- docs/atl/reference/catllist-class.md | 3 ++- docs/atl/reference/catlmap-class.md | 3 ++- docs/atl/reference/catlmodule-class.md | 3 ++- docs/atl/reference/catlmodulet-class.md | 3 ++- docs/atl/reference/catlpreviewctrlimpl-class.md | 3 ++- docs/atl/reference/catlservicemodulet-class.md | 3 ++- docs/atl/reference/catltemporaryfile-class.md | 2 ++ docs/atl/reference/catltransactionmanager-class.md | 2 ++ docs/atl/reference/catlwinmodule-class.md | 3 ++- docs/atl/reference/cautoptr-class.md | 3 ++- docs/atl/reference/cautoptrarray-class.md | 3 ++- docs/atl/reference/cautoptrelementtraits-class.md | 3 ++- docs/atl/reference/cautoptrlist-class.md | 3 ++- docs/atl/reference/cautorevertimpersonation-class.md | 3 ++- docs/atl/reference/cautovectorptr-class.md | 3 ++- docs/atl/reference/cautovectorptrelementtraits-class.md | 3 ++- docs/atl/reference/caxdialogimpl-class.md | 3 ++- docs/atl/reference/caxwindow-class.md | 3 ++- docs/atl/reference/caxwindow2t-class.md | 3 ++- docs/atl/reference/cbindstatuscallback-class.md | 3 ++- docs/atl/reference/ccomaggobject-class.md | 3 ++- docs/atl/reference/ccomallocator-class.md | 3 ++- docs/atl/reference/ccomapartment-class.md | 3 ++- docs/atl/reference/ccomautocriticalsection-class.md | 3 ++- docs/atl/reference/ccomautodeletecriticalsection-class.md | 3 ++- 100 files changed, 200 insertions(+), 97 deletions(-) diff --git a/docs/atl/messagehandler.md b/docs/atl/messagehandler.md index 4fcdaad53bd..4fa25ca0ead 100644 --- a/docs/atl/messagehandler.md +++ b/docs/atl/messagehandler.md @@ -4,10 +4,11 @@ title: "MessageHandler" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["MessageHandler function"] -ms.assetid: 8a0acf97-1b0d-4226-91b9-75446634a03c --- # MessageHandler +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + `MessageHandler` is the name of the function identified by the second parameter of the MESSAGE_HANDLER macro in your message map. ## Syntax diff --git a/docs/atl/mmc-snap-in-classes.md b/docs/atl/mmc-snap-in-classes.md index 140e10dc5e1..62c9af27f64 100644 --- a/docs/atl/mmc-snap-in-classes.md +++ b/docs/atl/mmc-snap-in-classes.md @@ -4,10 +4,11 @@ title: "MMC Snap-In Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["MMC Snap-In classes"] -ms.assetid: 4af1d5af-687f-48b1-b2c5-fa252241b4d6 --- # MMC Snap-In Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes provide support for developing Microsoft Management Console (MMC) snap-in components: - [CSnapInItemImpl](../atl/reference/csnapinitemimpl-class.md) Implements a snap-in node object, such as adding menu items and toolbars, and forwarding commands for the snap-in node to the appropriate handler function. diff --git a/docs/atl/modifying-the-atl-dhtml-control.md b/docs/atl/modifying-the-atl-dhtml-control.md index 3e77a536a1f..34fab00665a 100644 --- a/docs/atl/modifying-the-atl-dhtml-control.md +++ b/docs/atl/modifying-the-atl-dhtml-control.md @@ -3,11 +3,12 @@ description: "Learn more about: Modifying the ATL DHTML Control" title: "Modifying the ATL DHTML Control" ms.date: "11/04/2016" helpviewer_keywords: ["HTML controls, modifying", "DHTML controls", "DHTML controls, modifying"] -ms.assetid: c053f35f-8629-4600-9595-721f5956777a ms.topic: how-to --- # Modifying the ATL DHTML Control +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The ATL Control Wizard provides starter code so you can build and run the control, and so you can see how the methods are written in the project files and how the DHTML calls into the control's C++ code using the dispatch methods. You can add any dispatch method to the interface. Then, you can call the methods in the HTML resource. ## To modify the ATL DHTML control diff --git a/docs/atl/modifying-the-atl-project.md b/docs/atl/modifying-the-atl-project.md index d9211d97764..7b87fb2adbf 100644 --- a/docs/atl/modifying-the-atl-project.md +++ b/docs/atl/modifying-the-atl-project.md @@ -3,11 +3,12 @@ description: "Learn more about: Modifying the ATL Project" title: "Modifying the ATL Project" ms.date: "11/04/2016" helpviewer_keywords: ["controls [ATL], adding to composite controls", "Dialog editor, working with composite controls", "composite controls, adding controls"] -ms.assetid: 59984518-748f-4b8b-875f-3e97d22d0b0f ms.topic: concept-article --- # Modifying the ATL Project +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + At this point, your composite control project implements the necessary objects for your composite control. The next step is to add any controls that the composite control will contain and handle any necessary events. To add additional ActiveX or Windows controls, add a new resource script and then use the Dialog editor. For more information on adding controls (and related tasks), see [Dialog Editor](../windows/dialog-editor.md). diff --git a/docs/atl/multiple-dual-interfaces.md b/docs/atl/multiple-dual-interfaces.md index 99c43025249..52b22900163 100644 --- a/docs/atl/multiple-dual-interfaces.md +++ b/docs/atl/multiple-dual-interfaces.md @@ -4,10 +4,11 @@ title: "Multiple Dual Interfaces" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["multiple dual interfaces", "COM_INTERFACE_ENTRY2 macro", "dual interfaces, exposing multiple", "multiple dual interfaces, exposing with ATL", "IDispatchImpl class, multiple dual interfaces", "COM_INTERFACE_ENTRY_IID macro"] -ms.assetid: 7fea86e6-247f-4063-be6e-85588a9e3719 --- # Multiple Dual Interfaces +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + You may want to combine the advantages of a dual interface (that is, the flexibility of both vtable and late binding, thus making the class available to scripting languages as well as C++) with the techniques of multiple inheritance. Although it is possible to expose multiple dual interfaces on a single COM object, it is not recommended. If there are multiple dual interfaces, there must be only one `IDispatch` interface exposed. The techniques available to ensure that this is the case carry penalties such as loss of function or increased code complexity. The developer considering this approach should carefully weigh the advantages and disadvantages. diff --git a/docs/atl/nonextensible-attribute.md b/docs/atl/nonextensible-attribute.md index 08a854a4873..517f6ad1da7 100644 --- a/docs/atl/nonextensible-attribute.md +++ b/docs/atl/nonextensible-attribute.md @@ -3,10 +3,11 @@ description: "Learn more about: nonextensible Attribute" title: "nonextensible Attribute" ms.date: "11/04/2016" helpviewer_keywords: ["nonextensible attribute", "dual interfaces, nonextensible attribute"] -ms.assetid: 02a4a18b-ffd3-4d53-8fd1-feb1c05ad5ac --- # nonextensible Attribute +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + If a dual interface will not be extended at run time (that is, you won't provide methods or properties via `IDispatch::Invoke` that are not available via the vtable), you should apply the **nonextensible** attribute to your interface definition. This attribute provides information to client languages (such as Visual Basic) that can be used to enable full code verification at compile time. If this attribute is not supplied, bugs may remain hidden in the client code until run time. For more information on the **nonextensible** attribute and an example, see [nonextensible](../windows/attributes/nonextensible.md). diff --git a/docs/atl/notifyhandler.md b/docs/atl/notifyhandler.md index adb1d4a0db6..deaf83115cf 100644 --- a/docs/atl/notifyhandler.md +++ b/docs/atl/notifyhandler.md @@ -4,10 +4,11 @@ title: "NotifyHandler" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["NotifyHandler function"] -ms.assetid: 5ff953ec-de35-42bc-8b3c-d384d636c139 --- # NotifyHandler +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The name of the function identified by the third parameter of the NOTIFY_HANDLER macro in your message map. ## Syntax diff --git a/docs/atl/object-safety-classes.md b/docs/atl/object-safety-classes.md index 8021fd778b8..69ec66cf8eb 100644 --- a/docs/atl/object-safety-classes.md +++ b/docs/atl/object-safety-classes.md @@ -4,10 +4,11 @@ title: Object Safety Classes (ATL) ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["safety classes", "object safety classes"] -ms.assetid: 00060b28-49e2-4ec1-9a22-f501e07821d6 --- # Object Safety Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following class provides support for object safety: - [IObjectSafetyImpl](../atl/reference/iobjectsafetyimpl-class.md) Allows an object to be marked as safe for initialization or safe for scripting. diff --git a/docs/atl/persistence-classes.md b/docs/atl/persistence-classes.md index bce7966eb71..18d1a4e3826 100644 --- a/docs/atl/persistence-classes.md +++ b/docs/atl/persistence-classes.md @@ -4,10 +4,11 @@ title: "Persistence Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["persistence classes", "persistence, classes"] -ms.assetid: a6a2b6b2-52bc-471c-b78a-de58363128bb --- # Persistence Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes implement object persistence: - [IPersistPropertyBagImpl](../atl/reference/ipersistpropertybagimpl-class.md) Allows a client to load and save an object's properties to a property bag. diff --git a/docs/atl/programming-with-atl-and-c-run-time-code.md b/docs/atl/programming-with-atl-and-c-run-time-code.md index 66c4ade4f21..804e19a5600 100644 --- a/docs/atl/programming-with-atl-and-c-run-time-code.md +++ b/docs/atl/programming-with-atl-and-c-run-time-code.md @@ -3,11 +3,12 @@ description: "Learn more about: Programming with ATL and C Run-Time Code" title: "Programming with ATL and C Run-Time Code" ms.date: "11/04/2016" helpviewer_keywords: ["ATL_MIN_CRT macro", "CRT, using with ATL", "_ATL_MIN_CRT macro", "ATL, C Run-Time library (CRT)"] -ms.assetid: 20f03b66-1eb7-4add-84a2-6047db0911eb ms.topic: concept-article --- # Programming with ATL and C Run-Time Code +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + This section discusses the benefits of using the C Run-Time Library (CRT) with either static or dynamic linking. ## In This Section diff --git a/docs/atl/programming-with-ccombstr-atl.md b/docs/atl/programming-with-ccombstr-atl.md index 31f7ee2d370..c1b044ae46b 100644 --- a/docs/atl/programming-with-ccombstr-atl.md +++ b/docs/atl/programming-with-ccombstr-atl.md @@ -3,11 +3,12 @@ description: "Learn more about: Programming with CComBSTR (ATL)" title: "Programming with CComBSTR (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["CComBSTR class, programming with", "Unicode, using CComBSTR [ATL]"] -ms.assetid: d3bd0851-d132-4be9-9c4c-6ccba17acb2b ms.topic: concept-article --- # Programming with CComBSTR (ATL) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The ATL class [CComBSTR](../atl/reference/ccombstr-class.md) provides a wrapper around the BSTR data type. While `CComBSTR` is a useful tool, there are several situations that require caution. - [Conversion Issues](#programmingwithccombstr_conversionissues) diff --git a/docs/atl/properties-and-property-pages-classes.md b/docs/atl/properties-and-property-pages-classes.md index 17e8307bb07..9fafa9baf65 100644 --- a/docs/atl/properties-and-property-pages-classes.md +++ b/docs/atl/properties-and-property-pages-classes.md @@ -4,10 +4,11 @@ title: "Properties and Property Pages Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["property pages, classes", "properties [ATL], classes", "properties [ATL]"] -ms.assetid: 31616f98-69f8-48b2-8d58-b8e7d1c2b2d8 --- # Properties and Property Pages Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes support properties and property pages: - [CComDispatchDriver](../atl/reference/atl-typedefs.md#ccomdispatchdriver) Retrieves or sets an object's properties through an `IDispatch` pointer. diff --git a/docs/atl/putting-the-control-on-a-web-page-atl-tutorial-part-7.md b/docs/atl/putting-the-control-on-a-web-page-atl-tutorial-part-7.md index faf66529f16..b191688f163 100644 --- a/docs/atl/putting-the-control-on-a-web-page-atl-tutorial-part-7.md +++ b/docs/atl/putting-the-control-on-a-web-page-atl-tutorial-part-7.md @@ -3,11 +3,12 @@ description: "Learn more about: Putting the Control on a Web Page (ATL Tutorial, title: "Putting the Control on a Web Page (ATL Tutorial, Part 7)" ms.custom: "get-started-article" ms.date: "05/06/2019" -ms.assetid: 50dc4c95-c95b-4006-b88a-9826f7bdb222 ms.topic: tutorial --- # Putting the Control on a Web Page (ATL Tutorial, Part 7) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Your control is now finished. To see your control work in a real-world situation, put it on a Web page. An HTML file that contains the control was created when you defined your control. Open the PolyCtl.htm file from **Solution Explorer**, and you can see your control on a Web page. In this step, you add functionality to the control and script the Web page to respond to events. You'll also modify the control to let Internet Explorer know the control is safe for scripting. diff --git a/docs/atl/queryinterface.md b/docs/atl/queryinterface.md index 3d982e0e938..6849e52d2cd 100644 --- a/docs/atl/queryinterface.md +++ b/docs/atl/queryinterface.md @@ -4,10 +4,11 @@ title: "QueryInterface" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["interfaces, pointers", "interfaces, availability", "QueryInterface method"] -ms.assetid: 62fce95e-aafa-4187-b50b-e6611b74c3b3 --- # `QueryInterface` +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Although there are mechanisms by which an object can express the functionality it provides statically (before it is instantiated), the fundamental COM mechanism is to use the `IUnknown` method called [`QueryInterface`](/windows/win32/api/unknwn/nf-unknwn-iunknown-queryinterface(q)). Every interface is derived from `IUnknown`, so every interface has an implementation of `QueryInterface`. Regardless of implementation, this method queries an object using the `IID` of the interface to which the caller wants a pointer. If the object supports that interface, `QueryInterface` retrieves a pointer to the interface, while also calling `AddRef`. Otherwise, it returns the `E_NOINTERFACE` error code. diff --git a/docs/atl/reference-counting.md b/docs/atl/reference-counting.md index db71a9ca66c..594cc68c495 100644 --- a/docs/atl/reference-counting.md +++ b/docs/atl/reference-counting.md @@ -3,10 +3,11 @@ description: "Learn more about: Reference Counting" title: "Reference Counting (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["AddRef method [C++], reference counting", "reference counting", "AddRef method [C++]", "reference counts", "references, counting"] -ms.assetid: b1fd4514-6de6-429f-9e60-2777c0d07a3d --- # Reference Counting +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + COM itself does not automatically try to remove an object from memory when it thinks the object is no longer being used. Instead, the object programmer must remove the unused object. The programmer determines whether an object can be removed based on a reference count. COM uses the `IUnknown` methods, [AddRef](/windows/win32/api/unknwn/nf-unknwn-iunknown-addref) and [Release](/windows/win32/api/unknwn/nf-unknwn-iunknown-release), to manage the reference count of interfaces on an object. The general rules for calling these methods are: diff --git a/docs/atl/reference/adding-a-new-interface-in-an-atl-project.md b/docs/atl/reference/adding-a-new-interface-in-an-atl-project.md index f9b927b58c0..04bda95f84c 100644 --- a/docs/atl/reference/adding-a-new-interface-in-an-atl-project.md +++ b/docs/atl/reference/adding-a-new-interface-in-an-atl-project.md @@ -4,10 +4,11 @@ title: "Adding a New Interface in an ATL Project" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.ATL.interface"] helpviewer_keywords: ["interfaces, adding to ATL objects", "Implement Interface ATL wizard", "controls [ATL], interfaces", "ATL projects, adding interfaces"] -ms.assetid: 7d34b023-2c6b-4155-aca3-d47a40968063 --- # Adding a New Interface in an ATL Project +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + When you add an interface to your object or control, you create stubbed-out functions for each method in that interface. In your object or control, you can add only interfaces currently found in an existing type library. Also, the class in which you add the interface must implement the [BEGIN_COM_MAP](com-map-macros.md#begin_com_map) macro or, if the project is attributed, it must have the `coclass` attribute. You can add a new interface to your control in one of two ways: manually or using code wizards in Class View. diff --git a/docs/atl/reference/adding-an-atl-active-server-page-component.md b/docs/atl/reference/adding-an-atl-active-server-page-component.md index 508bf1fbfca..9b0aa9b0b73 100644 --- a/docs/atl/reference/adding-an-atl-active-server-page-component.md +++ b/docs/atl/reference/adding-an-atl-active-server-page-component.md @@ -2,10 +2,11 @@ description: "Learn more about: Adding an ATL Active Server Page Component" title: "Adding an ATL Active Server Page Component" ms.date: "05/09/2019" -ms.assetid: 7be2204c-6e58-4099-8892-001b848c8987 --- # Adding an ATL Active Server Page Component +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" The ATL Active Server Pages component wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/reference/adding-an-atl-com-plus-1-0-component.md b/docs/atl/reference/adding-an-atl-com-plus-1-0-component.md index 6df0a367ba5..b04378c1ea7 100644 --- a/docs/atl/reference/adding-an-atl-com-plus-1-0-component.md +++ b/docs/atl/reference/adding-an-atl-com-plus-1-0-component.md @@ -2,10 +2,11 @@ description: "Learn more about: Adding an ATL COM+ 1.0 Component" title: "Adding an ATL COM+ 1.0 Component" ms.date: "05/09/2019" -ms.assetid: c6c95e64-9ee4-4a6e-8804-5930202ce1b9 --- # Adding an ATL COM+ 1.0 Component +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" The ATL COM+ 1.0 Component wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/reference/adding-an-atl-control.md b/docs/atl/reference/adding-an-atl-control.md index c9a01745336..e62a42cd078 100644 --- a/docs/atl/reference/adding-an-atl-control.md +++ b/docs/atl/reference/adding-an-atl-control.md @@ -3,10 +3,11 @@ description: "Learn more about: Adding an ATL Control" title: "Adding an ATL Control" ms.date: "11/04/2016" helpviewer_keywords: ["ATL projects, adding controls", "controls [ATL], adding to projects"] -ms.assetid: 10223e7e-fdb7-4163-80c6-44aeafa8e6ce --- # Adding an ATL Control +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Use this wizard to add a user interface object to a project that supports interfaces for all potential containers. To support these interfaces, the project must have been created as an ATL application or as an MFC application that contains ATL support. You can use the [ATL Project Wizard](../../atl/reference/atl-project-wizard.md) to create an ATL application, or [add an ATL object to your MFC application](../../mfc/reference/adding-atl-support-to-your-mfc-project.md) to implement ATL support for an MFC application. ## To add an ATL control to your project diff --git a/docs/atl/reference/adding-an-atl-dialog-box.md b/docs/atl/reference/adding-an-atl-dialog-box.md index 928fd204304..e7519718ea2 100644 --- a/docs/atl/reference/adding-an-atl-dialog-box.md +++ b/docs/atl/reference/adding-an-atl-dialog-box.md @@ -3,10 +3,11 @@ description: "Learn more about: Adding an ATL Dialog Box" title: "Adding an ATL Dialog Box" ms.date: "11/04/2016" helpviewer_keywords: ["ATL projects, adding dialog resources", "MFC dialog boxes, ATL dialogs", "dialog boxes, ATL"] -ms.assetid: 152a378f-7b24-4f66-aeba-c740973f03a6 --- # Adding an ATL Dialog Box +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + To add an ATL dialog to your project, your project must be either an ATL project or an MFC project that includes ATL support. You can use the [ATL Project Wizard](../../atl/reference/atl-project-wizard.md) to create an ATL application, or [add an ATL object to your MFC application](../../mfc/reference/adding-atl-support-to-your-mfc-project.md) to implement ATL support for an MFC application. By default, the ATL Dialog Wizard implements a dialog box derived from [CAxDialogImpl](../../atl/reference/caxdialogimpl-class.md). This class includes support for hosting ActiveX and Windows controls. If you do not want the overhead of ActiveX control support, once the wizard has generated your code, replace all instances of `CAxDialogImpl` with either [CSimpleDialog](../../atl/reference/csimpledialog-class.md) or [CDialogImpl](../../atl/reference/cdialogimpl-class.md) as your base class. diff --git a/docs/atl/reference/adding-an-atl-ole-db-consumer.md b/docs/atl/reference/adding-an-atl-ole-db-consumer.md index 52b1acc39ab..52b42c75ed2 100644 --- a/docs/atl/reference/adding-an-atl-ole-db-consumer.md +++ b/docs/atl/reference/adding-an-atl-ole-db-consumer.md @@ -3,10 +3,11 @@ description: "Learn more about: Adding an ATL OLE DB Consumer" title: "Adding an ATL OLE DB Consumer" ms.date: "05/09/2019" helpviewer_keywords: ["ATL OLE DB consumers"] -ms.assetid: f940a513-4e42-4148-b521-dd0d7dc89fa2 --- # Adding an ATL OLE DB Consumer +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" The ATL OLE DB Consumer wizard is not available in Visual Studio 2019 and later. You can still add the functionality manually. For more information, see [Creating a Consumer Without Using a Wizard](../../data/oledb/creating-a-consumer-without-using-a-wizard.md). diff --git a/docs/atl/reference/adding-an-atl-ole-db-provider.md b/docs/atl/reference/adding-an-atl-ole-db-provider.md index 3aba76e606f..908e53502a3 100644 --- a/docs/atl/reference/adding-an-atl-ole-db-provider.md +++ b/docs/atl/reference/adding-an-atl-ole-db-provider.md @@ -3,10 +3,11 @@ description: "Learn more about: Adding an ATL OLE DB Provider" title: "Adding an ATL OLE DB Provider" ms.date: "05/09/2019" helpviewer_keywords: ["OLE DB, adding ATL OLE DB provider to projects", "ATL projects, adding ATL OLE DB providers", "ATL OLE DB providers"] -ms.assetid: 26fba1e3-880f-4bc6-90e5-2096a48a3a6c --- # Adding an ATL OLE DB Provider +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" The ATL OLE DB Provider wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/reference/adding-an-atl-property-page.md b/docs/atl/reference/adding-an-atl-property-page.md index 376b4875a7f..543c72db463 100644 --- a/docs/atl/reference/adding-an-atl-property-page.md +++ b/docs/atl/reference/adding-an-atl-property-page.md @@ -3,10 +3,11 @@ description: "Learn more about: Adding an ATL Property Page" title: "Adding an ATL Property Page" ms.date: "05/09/2019" helpviewer_keywords: ["property pages, adding", "ATL projects, adding property pages", "controls [ATL], property pages"] -ms.assetid: ddf92b49-42a2-46d2-b6b8-d37baedebeca --- # Adding an ATL Property Page +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + > [!NOTE] > The ATL Property Page wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/reference/adding-an-atl-simple-object.md b/docs/atl/reference/adding-an-atl-simple-object.md index 91e8e2ddac4..53c4b37fd33 100644 --- a/docs/atl/reference/adding-an-atl-simple-object.md +++ b/docs/atl/reference/adding-an-atl-simple-object.md @@ -4,10 +4,11 @@ title: "Adding an ATL Simple Object" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.classes.adding.atl"] helpviewer_keywords: ["ATL projects, adding objects", "objects [ATL]", "ATL, simple objects"] -ms.assetid: 9c57d2ef-0447-4c84-8982-3304b8e49847 --- # Adding an ATL Simple Object +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + To add an ATL (Active Template Library) object to your project, your project must have been created as an ATL application or as an MFC application that contains ATL support. You can use the [ATL Project Wizard](../../atl/reference/atl-project-wizard.md) to create an ATL application, or [add an ATL object to your MFC application](../../mfc/reference/adding-atl-support-to-your-mfc-project.md) to implement ATL support for an MFC application. You can define COM interfaces for your new ATL object when you first create it, or add them later by using the [Implement Interface](../../ide/implementing-an-interface-visual-cpp.md#implement-interface-wizard) command from the **Class View** shortcut menu. diff --git a/docs/atl/reference/adding-objects-and-controls-to-an-atl-project.md b/docs/atl/reference/adding-objects-and-controls-to-an-atl-project.md index 036b72dc54c..f77dfceb83e 100644 --- a/docs/atl/reference/adding-objects-and-controls-to-an-atl-project.md +++ b/docs/atl/reference/adding-objects-and-controls-to-an-atl-project.md @@ -4,10 +4,11 @@ title: "Adding Objects and Controls to an ATL Project" ms.date: "05/09/2019" f1_keywords: ["vc.appwiz.ATL.controls"] helpviewer_keywords: ["ATL projects, adding objects", "wizards [C++], ATL projects", "ATL projects, adding controls", "controls [ATL], adding to projects", "objects [C++], adding to ATL projects", "ATL Control Wizard"] -ms.assetid: c0adcbd0-07fe-4c55-a8fd-8c2c65ecdaad --- # Adding Objects and Controls to an ATL Project +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + > [!NOTE] > The ATL COM+ 1.0 Component Wizard, ATL OLE DB Consumer wizard, and ATL Active Server Page Component wizard are not available in Visual Studio 2019 and later. diff --git a/docs/atl/reference/aggregation-and-class-factory-macros.md b/docs/atl/reference/aggregation-and-class-factory-macros.md index b6dacd4282f..7520e67a5f9 100644 --- a/docs/atl/reference/aggregation-and-class-factory-macros.md +++ b/docs/atl/reference/aggregation-and-class-factory-macros.md @@ -4,10 +4,11 @@ title: "Aggregation and Class Factory Macros" ms.date: 08/12/2020 f1_keywords: ["ATLCOM/ATL::DECLARE_AGGREGATABLE", "ATLCOM/ATL::DECLARE_CLASSFACTORY", "ATLCOM/ATL::DECLARE_CLASSFACTORY_EX", "ATLCOM/ATL::DECLARE_CLASSFACTORY_AUTO_THREAD", "ATLCOM/ATL::DECLARE_CLASSFACTORY_SINGLETON", "ATLCOM/ATL::DECLARE_GET_CONTROLLING_UNKNOWN", "ATLCOM/ATL::DECLARE_NOT_AGGREGATABLE", "ATLCOM/ATL::DECLARE_ONLY_AGGREGATABLE", "ATLCOM/ATL::DECLARE_POLY_AGGREGATABLE", "ATLCOM/ATL::DECLARE_PROTECT_FINAL_CONSTRUCT", "ATLCOM/ATL::DECLARE_VIEW_STATUS", "ATLDEF/ATL::DECLARE_AGGREGATABLE", "ATLDEF/ATL::DECLARE_CLASSFACTORY", "ATLDEF/ATL::DECLARE_CLASSFACTORY_EX", "ATLDEF/ATL::DECLARE_CLASSFACTORY_AUTO_THREAD", "ATLDEF/ATL::DECLARE_CLASSFACTORY_SINGLETON", "ATLDEF/ATL::DECLARE_GET_CONTROLLING_UNKNOWN", "ATLDEF/ATL::DECLARE_NOT_AGGREGATABLE", "ATLDEF/ATL::DECLARE_ONLY_AGGREGATABLE", "ATLDEF/ATL::DECLARE_POLY_AGGREGATABLE", "ATLDEF/ATL::DECLARE_PROTECT_FINAL_CONSTRUCT", "ATLDEF/ATL::DECLARE_VIEW_STATUS", "ATLCOM/DECLARE_AGGREGATABLE", "ATLCOM/DECLARE_CLASSFACTORY", "ATLCOM/DECLARE_CLASSFACTORY_EX", "ATLCOM/DECLARE_CLASSFACTORY_AUTO_THREAD", "ATLCOM/DECLARE_CLASSFACTORY_SINGLETON", "ATLCOM/DECLARE_GET_CONTROLLING_UNKNOWN", "ATLCOM/DECLARE_NOT_AGGREGATABLE", "ATLCOM/DECLARE_ONLY_AGGREGATABLE", "ATLCOM/DECLARE_POLY_AGGREGATABLE", "ATLCOM/DECLARE_PROTECT_FINAL_CONSTRUCT", "ATLCOM/DECLARE_VIEW_STATUS", "ATL::DECLARE_AGGREGATABLE", "ATL::DECLARE_CLASSFACTORY", "ATL::DECLARE_CLASSFACTORY_EX", "ATL::DECLARE_CLASSFACTORY_AUTO_THREAD", "ATL::DECLARE_CLASSFACTORY_SINGLETON", "ATL::DECLARE_GET_CONTROLLING_UNKNOWN", "ATL::DECLARE_NOT_AGGREGATABLE", "ATL::DECLARE_ONLY_AGGREGATABLE", "ATL::DECLARE_POLY_AGGREGATABLE", "ATL::DECLARE_PROTECT_FINAL_CONSTRUCT", "ATL::DECLARE_VIEW_STATUS", "DECLARE_AGGREGATABLE", "DECLARE_CLASSFACTORY", "DECLARE_CLASSFACTORY_EX", "DECLARE_CLASSFACTORY_AUTO_THREAD", "DECLARE_CLASSFACTORY_SINGLETON", "DECLARE_GET_CONTROLLING_UNKNOWN", "DECLARE_NOT_AGGREGATABLE", "DECLARE_ONLY_AGGREGATABLE", "DECLARE_POLY_AGGREGATABLE", "DECLARE_PROTECT_FINAL_CONSTRUCT", "DECLARE_VIEW_STATUS"] helpviewer_keywords: ["class factories, ATL macros", "aggregation [C++], ATL macros", "ATL::DECLARE_AGGREGATABLE", "ATL::DECLARE_CLASSFACTORY", "ATL::DECLARE_CLASSFACTORY_EX", "ATL::DECLARE_CLASSFACTORY_AUTO_THREAD", "ATL::DECLARE_CLASSFACTORY_SINGLETON", "ATL::DECLARE_GET_CONTROLLING_UNKNOWN", "ATL::DECLARE_NOT_AGGREGATABLE", "ATL::DECLARE_ONLY_AGGREGATABLE", "ATL::DECLARE_POLY_AGGREGATABLE", "ATL::DECLARE_PROTECT_FINAL_CONSTRUCT", "ATL::DECLARE_VIEW_STATUS"] -ms.assetid: d99d379a-0eec-481f-8daa-252dac18f163 --- # Aggregation and Class Factory Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros provide ways of controlling aggregation and of declaring class factories. | Macro | Description | diff --git a/docs/atl/reference/appearance-atl-control-wizard.md b/docs/atl/reference/appearance-atl-control-wizard.md index 5a28f5a572e..2f305fd5e95 100644 --- a/docs/atl/reference/appearance-atl-control-wizard.md +++ b/docs/atl/reference/appearance-atl-control-wizard.md @@ -4,10 +4,11 @@ title: "Appearance, ATL Control Wizard" ms.date: "08/31/2018" f1_keywords: ["vc.codewiz.class.atl.control.misc"] helpviewer_keywords: ["ATL Control Wizard, appearance"] -ms.assetid: cc16d7ff-74d7-4c15-9ebd-4b19201ff457 --- # Appearance, ATL Control Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Use this page of the wizard to identify additional user element options for the control. This page is available for controls identified as **Standard controls** under **Control type** on the [Options, ATL Control Wizard](../../atl/reference/options-atl-control-wizard.md) page. ## UIElement List diff --git a/docs/atl/reference/application-settings-atl-project-wizard.md b/docs/atl/reference/application-settings-atl-project-wizard.md index 03b0fade12f..6922ea0313c 100644 --- a/docs/atl/reference/application-settings-atl-project-wizard.md +++ b/docs/atl/reference/application-settings-atl-project-wizard.md @@ -4,10 +4,11 @@ title: "Application Settings, ATL Project Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.atl.com.appset"] helpviewer_keywords: ["ATL Project Wizard, application settings"] -ms.assetid: d48c9fc5-f439-49fd-884c-8bcfa7d52991 --- # Application Settings, ATL Project Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Use the **Application Settings** page of the ATL Project Wizard to design and add basic features to a new ATL project. ## Server type diff --git a/docs/atl/reference/asp-atl-active-server-page-component-wizard.md b/docs/atl/reference/asp-atl-active-server-page-component-wizard.md index efb54c5bbfa..3a9dd3f5419 100644 --- a/docs/atl/reference/asp-atl-active-server-page-component-wizard.md +++ b/docs/atl/reference/asp-atl-active-server-page-component-wizard.md @@ -4,10 +4,11 @@ title: "ASP, ATL Active Server Page Component Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.class.atl.asp.asp"] helpviewer_keywords: ["ATL Active Server Page Component Wizard, ASP"] -ms.assetid: 4d8cafd6-5e12-4461-8911-29288896af3c --- # ASP, ATL Active Server Page Component Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Use this page of the ATL Active Server Page Component Wizard to specify optional settings for handling information and state related to your ASP component. - **Optional methods** diff --git a/docs/atl/reference/atl-active-server-page-component-wizard.md b/docs/atl/reference/atl-active-server-page-component-wizard.md index ceab8c73f93..410c00ddb87 100644 --- a/docs/atl/reference/atl-active-server-page-component-wizard.md +++ b/docs/atl/reference/atl-active-server-page-component-wizard.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Active Server Page Component Wizard" title: "ATL Active Server Page Component Wizard" ms.date: "05/09/2019" helpviewer_keywords: ["ASP components, creating in ATL"] -ms.assetid: 5a5cb904-dbbf-44ea-ad3d-2ddd14c1d3c5 --- # ATL Active Server Page Component Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" This wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/reference/atl-base-module70-structure.md b/docs/atl/reference/atl-base-module70-structure.md index 78cbd738768..004ec92a8bd 100644 --- a/docs/atl/reference/atl-base-module70-structure.md +++ b/docs/atl/reference/atl-base-module70-structure.md @@ -4,10 +4,11 @@ title: "_ATL_BASE_MODULE70 Structure" ms.date: "11/04/2016" f1_keywords: ["ATL::_ATL_BASE_MODULE70", "ATL._ATL_BASE_MODULE70", "_ATL_BASE_MODULE70"] helpviewer_keywords: ["ATL_BASE_MODULE70 structure", "_ATL_BASE_MODULE70 structure"] -ms.assetid: 4539282f-15b8-4d7c-aafa-a85dc56f4980 --- # _ATL_BASE_MODULE70 Structure +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Used by any project that uses ATL. ## Syntax diff --git a/docs/atl/reference/atl-classes.md b/docs/atl/reference/atl-classes.md index 36a3ed3f0de..836fa1aa854 100644 --- a/docs/atl/reference/atl-classes.md +++ b/docs/atl/reference/atl-classes.md @@ -6,6 +6,8 @@ helpviewer_keywords: ["classes [C++], ATL", "ATL, classes"] --- # ATL classes and structs +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + The Active Template Library (ATL) includes the following classes and structs. To find a particular class by category, see the [ATL Class Overview](../../atl/atl-class-overview.md). |Class / struct|Description|Header file| diff --git a/docs/atl/reference/atl-com-module70-structure.md b/docs/atl/reference/atl-com-module70-structure.md index 3f37add4ec9..424d68a7e57 100644 --- a/docs/atl/reference/atl-com-module70-structure.md +++ b/docs/atl/reference/atl-com-module70-structure.md @@ -4,10 +4,11 @@ title: "_ATL_COM_MODULE70 Structure" ms.date: "11/04/2016" f1_keywords: ["ATL::_ATL_COM_MODULE70", "ATL._ATL_COM_MODULE70", "_ATL_COM_MODULE70"] helpviewer_keywords: ["_ATL_COM_MODULE70 structure", "ATL_COM_MODULE70 structure"] -ms.assetid: 5b0b2fd0-bdeb-4c7e-8870-78fa69ace6e6 --- # _ATL_COM_MODULE70 Structure +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Used by COM-related code in ATL. ## Syntax diff --git a/docs/atl/reference/atl-com-plus-1-0-component-wizard.md b/docs/atl/reference/atl-com-plus-1-0-component-wizard.md index 4f342caa931..a72c326005e 100644 --- a/docs/atl/reference/atl-com-plus-1-0-component-wizard.md +++ b/docs/atl/reference/atl-com-plus-1-0-component-wizard.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL COM+ 1.0 Component Wizard" title: "ATL COM+ 1.0 Component Wizard" ms.date: "05/08/2019" helpviewer_keywords: ["ATL projects, adding components"] -ms.assetid: 11670681-8671-4122-96a4-2e52f8dadce0 --- # ATL COM+ 1.0 Component Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" This wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/reference/atl-control-wizard.md b/docs/atl/reference/atl-control-wizard.md index f1ba09a54dd..1c7f40ee9f4 100644 --- a/docs/atl/reference/atl-control-wizard.md +++ b/docs/atl/reference/atl-control-wizard.md @@ -4,10 +4,11 @@ title: "ATL Control Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.class.atl.control.overview"] helpviewer_keywords: ["ATL projects, adding controls", "controls [ATL], adding to projects", "ATL Control Wizard"] -ms.assetid: 991f8e72-ffbc-4382-a4ce-e255acfba5b6 --- # ATL Control Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Inserts into an ATL project (or an MFC project with ATL support) an ATL control. You can use this wizard to insert one of three kinds of controls: - Standard control diff --git a/docs/atl/reference/atl-dialog-wizard.md b/docs/atl/reference/atl-dialog-wizard.md index c2908571e3c..862cb038b71 100644 --- a/docs/atl/reference/atl-dialog-wizard.md +++ b/docs/atl/reference/atl-dialog-wizard.md @@ -4,10 +4,11 @@ title: "ATL Dialog Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.class.atl.dlg.overview"] helpviewer_keywords: ["ATL projects, adding dialog resources", "ATL Dialog Wizard"] -ms.assetid: b0b9ace5-83c9-40d3-82c3-eb6293f10583 --- # ATL Dialog Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This wizard inserts into the project an ATL dialog box object, derived from [CAxDialogImpl](../../atl/reference/caxdialogimpl-class.md). A dialog box derived from `CAxDialogImpl` can host ActiveX controls. The wizard creates a dialog resource with default **OK** and **Cancel** buttons. You can edit the dialog resource and add ActiveX controls using the [Dialog Editor](../../windows/dialog-editor.md) in Resource View. diff --git a/docs/atl/reference/atl-drawinfo-structure.md b/docs/atl/reference/atl-drawinfo-structure.md index 8c44e5e231a..971943f6209 100644 --- a/docs/atl/reference/atl-drawinfo-structure.md +++ b/docs/atl/reference/atl-drawinfo-structure.md @@ -4,10 +4,11 @@ title: "ATL_DRAWINFO Structure" ms.date: "11/04/2016" f1_keywords: ["ATL::ATL_DRAWINFO", "ATL_DRAWINFO", "ATL.ATL_DRAWINFO"] helpviewer_keywords: ["ATL_DRAWINFO structure"] -ms.assetid: dd2e2aa8-e8c5-403b-b4df-35c0f6f57fb7 --- # ATL_DRAWINFO Structure +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Contains information used for rendering to various targets, such as a printer, metafile, or ActiveX control. ## Syntax diff --git a/docs/atl/reference/atl-func-info-structure.md b/docs/atl/reference/atl-func-info-structure.md index 2be432a32d9..7f3e2b1dc1d 100644 --- a/docs/atl/reference/atl-func-info-structure.md +++ b/docs/atl/reference/atl-func-info-structure.md @@ -4,10 +4,11 @@ title: "_ATL_FUNC_INFO Structure" ms.date: "11/04/2016" f1_keywords: ["_ATL_FUNC_INFO", "ATL::_ATL_FUNC_INFO", "ATL._ATL_FUNC_INFO"] helpviewer_keywords: ["_ATL_FUNC_INFO structure", "ATL_FUNC_INFO structure"] -ms.assetid: 441ebe2c-f971-47de-9f52-a258e8d6f88e --- # _ATL_FUNC_INFO Structure +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Contains type information used to describe a method or property on a dispinterface. ## Syntax diff --git a/docs/atl/reference/atl-functions.md b/docs/atl/reference/atl-functions.md index f32f42b2041..96a93f09150 100644 --- a/docs/atl/reference/atl-functions.md +++ b/docs/atl/reference/atl-functions.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Functions" title: "ATL Functions" ms.date: "11/04/2016" helpviewer_keywords: ["functions [ATL]", "ATL, global functions"] -ms.assetid: 69db0cb2-de1d-445b-b692-020d6e8c2173 --- # ATL Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + To find an ATL function by category, see the following topics. [ATL Path Functions](../../atl/reference/com-map-global-functions.md)
diff --git a/docs/atl/reference/atl-global-variables.md b/docs/atl/reference/atl-global-variables.md index 68a23951c11..553aec1f266 100644 --- a/docs/atl/reference/atl-global-variables.md +++ b/docs/atl/reference/atl-global-variables.md @@ -4,10 +4,11 @@ title: "ATL Global Variables" ms.date: "12/06/2017" f1_keywords: ["ATLBASE/_pAtlModule"] helpviewer_keywords: ["global variables, ATL", "_pAtlModule"] -ms.assetid: e881a319-99ca-4f5d-8a0b-34b3dcd0f37f --- # ATL Global Variables +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ## _pAtlModule A global variable storing a pointer to the current module. diff --git a/docs/atl/reference/atl-http-utility-functions.md b/docs/atl/reference/atl-http-utility-functions.md index 47f78813f00..6980b30e704 100644 --- a/docs/atl/reference/atl-http-utility-functions.md +++ b/docs/atl/reference/atl-http-utility-functions.md @@ -2,10 +2,11 @@ description: "Learn more about: ATL HTTP Utility Functions" title: "ATL HTTP Utility Functions" ms.date: "11/04/2016" -ms.assetid: 4db57ef2-31fa-4696-bbeb-79a9035033ed --- # ATL HTTP Utility Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These functions support manipulation of URLs. |Function|Description| diff --git a/docs/atl/reference/atl-macros.md b/docs/atl/reference/atl-macros.md index 28f62b30117..d660507aeb8 100644 --- a/docs/atl/reference/atl-macros.md +++ b/docs/atl/reference/atl-macros.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Macros" title: "ATL Macros" ms.date: "11/04/2016" helpviewer_keywords: ["ATL, macros", "macros, ATL"] -ms.assetid: 788bd803-e7dc-4dc5-9e8d-31649471415b --- # ATL Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + To find an ATL macro by category, see the following topics. [Aggregation and Class Factory Macros](../../atl/reference/aggregation-and-class-factory-macros.md)
diff --git a/docs/atl/reference/atl-module70-structure.md b/docs/atl/reference/atl-module70-structure.md index eeee4263273..642c262492a 100644 --- a/docs/atl/reference/atl-module70-structure.md +++ b/docs/atl/reference/atl-module70-structure.md @@ -4,10 +4,11 @@ title: "_ATL_MODULE70 Structure" ms.date: "11/04/2016" f1_keywords: ["_ATL_MODULE70", "ATL::_ATL_MODULE70", "ATL._ATL_MODULE70"] helpviewer_keywords: ["ATL_MODULE70 structure", "_ATL_MODULE70 structure"] -ms.assetid: b059b2c8-dfd1-4ac9-b07d-39df638cc7b3 --- # _ATL_MODULE70 Structure +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Contains data used by every ATL module. ## Syntax diff --git a/docs/atl/reference/atl-ole-db-consumer-wizard.md b/docs/atl/reference/atl-ole-db-consumer-wizard.md index da09ffeebbb..8192655ec73 100644 --- a/docs/atl/reference/atl-ole-db-consumer-wizard.md +++ b/docs/atl/reference/atl-ole-db-consumer-wizard.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL OLE DB Consumer Wizard" title: "ATL OLE DB Consumer Wizard" ms.date: "07/02/2019" helpviewer_keywords: ["ATL projects, adding ATL OLE DB consumers"] -ms.assetid: dcb68ed1-2224-422f-9f7b-108a74864204 --- # ATL OLE DB Consumer Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" This wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/reference/atl-ole-db-provider-wizard.md b/docs/atl/reference/atl-ole-db-provider-wizard.md index 29417f6f85d..e0d73a85994 100644 --- a/docs/atl/reference/atl-ole-db-provider-wizard.md +++ b/docs/atl/reference/atl-ole-db-provider-wizard.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL OLE DB Provider Wizard" title: "ATL OLE DB Provider Wizard" ms.date: "05/09/2019" helpviewer_keywords: ["ATL projects, adding ATL OLE DB providers"] -ms.assetid: cf91ba78-01d1-4d12-b673-e95d96bfbebe --- # ATL OLE DB Provider Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" This wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/reference/atl-operators.md b/docs/atl/reference/atl-operators.md index 85beb951ab3..2e16c36d15a 100644 --- a/docs/atl/reference/atl-operators.md +++ b/docs/atl/reference/atl-operators.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Operators" title: "ATL Operators" ms.date: "11/04/2016" helpviewer_keywords: ["operators [ATL]"] -ms.assetid: 58ccd252-2869-45ee-8a5c-3ca40ee7f8a2 --- # ATL Operators +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This section contains the reference topics for the ATL global operators. |Operator|Description| diff --git a/docs/atl/reference/atl-path-functions.md b/docs/atl/reference/atl-path-functions.md index 33562d071a8..709a5e9f82a 100644 --- a/docs/atl/reference/atl-path-functions.md +++ b/docs/atl/reference/atl-path-functions.md @@ -4,10 +4,11 @@ title: "ATL Path functions" ms.date: "11/04/2016" helpviewer_keywords: ["ATL, path"] f1_keywords: ["ATLPATH/ATL::ATLPath::AddBackslash", "ATLPATH/ATL::ATLPath::AddExtension", "ATLPATH/ATL::ATLPath::Append", "ATLPATH/ATL::ATLPath::BuildRoot", "ATLPATH/ATL::ATLPath::Canonicalize", "ATLPATH/ATL::ATLPath::Combine", "ATLPATH/ATL::ATLPath::CommonPrefix", "ATLPATH/ATL::ATLPath::CompactPath", "ATLPATH/ATL::ATLPath::CompactPathEx", "ATLPATH/ATL::ATLPath::FileExists", "ATLPATH/ATL::ATLPath::FindExtension", "ATLPATH/ATL::ATLPath::FindFileName", "ATLPATH/ATL::ATLPath::GetDriveNumber", "ATLPATH/ATL::ATLPath::IsDirectory", "ATLPATH/ATL::ATLPath::IsFileSpec", "ATLPATH/ATL::ATLPath::IsPrefix", "ATLPATH/ATL::ATLPath::IsRelative", "ATLPATH/ATL::ATLPath::IsRoot", "ATLPATH/ATL::ATLPath::IsSameRoot", "ATLPATH/ATL::ATLPath::IsUNC", "ATLPATH/ATL::ATLPath::IsUNCServer", "ATLPATH/ATL::ATLPath::IsUNCServerShare", "ATLPATH/ATL::ATLPath::MakePretty", "ATLPATH/ATL::ATLPath::MatchSpec", "ATLPATH/ATL::ATLPath::QuoteSpaces", "ATLPATH/ATL::ATLPath::RelativePathTo", "ATLPATH/ATL::ATLPath::RemoveArgs", "ATLPATH/ATL::ATLPath::RemoveBackslash", "ATLPATH/ATL::ATLPath::RemoveBlanks", "ATLPATH/ATL::ATLPath::RemoveExtension", "ATLPATH/ATL::ATLPath::RemoveFileSpec", "ATLPATH/ATL::ATLPath::RenameExtension", "ATLPATH/ATL::ATLPath::SkipRoot", "ATLPATH/ATL::ATLPath::StripPath", "ATLPATH/ATL::ATLPath::StripToRoot", "ATLPATH/ATL::ATLPath::UnquoteSpaces"] -ms.assetid: d1ec2b8d-7ec7-43ea-90dd-0a740d2a742b --- # ATL Path functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ATL provides the ATLPath class for manipulating paths in the form of [CPathT](cpatht-class.md). This code can be found in atlpath.h. ## Related Classes diff --git a/docs/atl/reference/atl-project-wizard.md b/docs/atl/reference/atl-project-wizard.md index 54180ade5d1..f0ceeb5726f 100644 --- a/docs/atl/reference/atl-project-wizard.md +++ b/docs/atl/reference/atl-project-wizard.md @@ -4,10 +4,11 @@ title: "ATL Project Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.atl.com.overview"] helpviewer_keywords: ["ATL projects, creating", "ATL Project Wizard"] -ms.assetid: 564d2aaf-5b8e-4c2a-a925-ca40a283ea34 --- # ATL Project Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + The Active Template Library (ATL) is a set of template-based C++ classes that simplify writing small and fast COM objects. The ATL Project Wizard creates a project with the structures to contain COM objects. ## Overview diff --git a/docs/atl/reference/atl-property-page-wizard.md b/docs/atl/reference/atl-property-page-wizard.md index 16c00456903..4d7eb8263ac 100644 --- a/docs/atl/reference/atl-property-page-wizard.md +++ b/docs/atl/reference/atl-property-page-wizard.md @@ -4,10 +4,11 @@ title: "ATL Property Page Wizard" ms.date: "05/09/2019" f1_keywords: ["vc.codewiz.class.atl.ppg.overview"] helpviewer_keywords: ["ATL projects, adding property pages", "ATL Property Page Wizard"] -ms.assetid: 6113e325-facd-4f68-b491-144d75209922 --- # ATL Property Page Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" This wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/reference/atl-simple-object-wizard.md b/docs/atl/reference/atl-simple-object-wizard.md index 23a819b1bf8..392f374f655 100644 --- a/docs/atl/reference/atl-simple-object-wizard.md +++ b/docs/atl/reference/atl-simple-object-wizard.md @@ -4,10 +4,11 @@ title: "ATL Simple Object Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.class.atl.simple.overview"] helpviewer_keywords: ["ATL projects, adding objects", "ATL Simple Object Wizard"] -ms.assetid: f7f85741-9aad-4543-a917-a29b996364da --- # ATL Simple Object Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This wizard inserts into the project a minimal COM object. Use this page of the wizard to specify the names that identify the C++ class and files for your object and its COM functionality. Use the [Options](../../atl/reference/options-atl-simple-object-wizard.md) page of this wizard to specify the object's threading model, its aggregation support, and whether it supports dual interfaces and Automation. You can also indicate support for the error information interface, connection points, Internet Explorer support, and free-threaded marshaling. diff --git a/docs/atl/reference/atl-text-encoding-functions.md b/docs/atl/reference/atl-text-encoding-functions.md index aa50e31f2ef..6afe2a4900b 100644 --- a/docs/atl/reference/atl-text-encoding-functions.md +++ b/docs/atl/reference/atl-text-encoding-functions.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Text Encoding Functions" title: "ATL Text Encoding Functions" ms.date: "11/04/2016" f1_keywords: ["atlbase/ATL::AtlGetHexValue", "atlbase/ATL::AtlGetVersion", "atlenc/ATL::AtlHexDecode", "atlenc/ATL::AtlHexDecodeGetRequiredLength", "atlenc/ATL::AtlHexEncode", "atlenc/ATL::AtlHexEncodeGetRequiredLength", "atlenc/ATL::AtlHexValue", "atlenc/ATL::BEncode", "atlenc/ATL::BEncodeGetRequiredLength", "atlenc/ATL::EscapeXML", "atlenc/ATL::GetExtendedChars", "atlenc/ATL::IsExtendedChar", "atlenc/ATL::QEncode", "atlenc/ATL::QEncodeGetRequiredLength", "atlenc/ATL::QPDecode", "atlenc/ATL::QPDecodeGetRequiredLength", "atlenc/ATL::QPEncode", "atlenc/ATL::QPEncodeGetRequiredLength", "atlenc/ATL::UUDecode", "atlenc/ATL::UUDecodeGetRequiredLength", "atlenc/ATL::UUEncode", "atlenc/ATL::UUEncodeGetRequiredLength"] -ms.assetid: 2ae1648b-2b87-4112-92aa-0069fcfd23da --- # ATL Text Encoding Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These functions support text encoding and decoding. |Function|Description| diff --git a/docs/atl/reference/atl-typedefs.md b/docs/atl/reference/atl-typedefs.md index 471587e3278..28f4a79773f 100644 --- a/docs/atl/reference/atl-typedefs.md +++ b/docs/atl/reference/atl-typedefs.md @@ -4,10 +4,11 @@ title: "ATL Typedefs" ms.date: "11/04/2016" f1_keywords: ["atlcore/ATL::_ATL_BASE_MODULE", "atlbase/ATL::_ATL_COM_MODULE", "atlbase/ATL::_ATL_MODULE", "atlbase/ATL::_ATL_WIN_MODULE", "atlutil/ATL::ATL_URL_PORT", "atlbase/ATL::CComDispatchDriver", "atlbase/ATL::CComGlobalsThreadModel", "atlbase/ATL::CComObjectThreadModel", "atlwin/ATL::CContainedWindow", "atlpath/ATL::CPath", "atlpath/ATL::CPathA", "atlpath/ATL::CPathW", " atlsimpcoll/ATL::CSimpleValArray", " atlutil/ATL::LPCURL", "atlbase/ATL::DefaultThreadTraits", "atlutil/ATL::LPURL"] helpviewer_keywords: ["typedefs, ATL", "typedefs", "ATL, typedefs"] -ms.assetid: 7dd05baa-3efb-4e3b-af23-793c610f4560 --- # ATL Typedefs +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + The Active Template Library includes the following typedefs. |Typedef|Description| diff --git a/docs/atl/reference/atl-url-scheme-enum.md b/docs/atl/reference/atl-url-scheme-enum.md index fbed95cb013..8c6df2df608 100644 --- a/docs/atl/reference/atl-url-scheme-enum.md +++ b/docs/atl/reference/atl-url-scheme-enum.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL_URL_SCHEME" title: "ATL_URL_SCHEME enumeration" ms.date: "11/04/2016" helpviewer_keywords: ["ATLUTIL/ATL::ATL_URL_SCHEME"] -ms.assetid: f4131046-8ba0-4ec1-8209-84203f05d20e --- # ATL_URL_SCHEME +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + The members of this enumeration provide constants for the schemes understood by [CUrl](curl-class.md). ## Syntax diff --git a/docs/atl/reference/atl-win-module70-structure.md b/docs/atl/reference/atl-win-module70-structure.md index 4a053f0aecd..b5e717cbc3a 100644 --- a/docs/atl/reference/atl-win-module70-structure.md +++ b/docs/atl/reference/atl-win-module70-structure.md @@ -4,10 +4,11 @@ title: "_ATL_WIN_MODULE70 Structure" ms.date: "11/04/2016" f1_keywords: ["_ATL_WIN_MODULE70", "ATL::_ATL_WIN_MODULE70", "ATL._ATL_WIN_MODULE70"] helpviewer_keywords: ["_ATL_WIN_MODULE70 structure", "ATL_WIN_MODULE70 structure"] -ms.assetid: a0aaf3ea-ca77-46ec-bd53-4dfb61dffbea --- # _ATL_WIN_MODULE70 Structure +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Used by windowing code in ATL. ## Syntax diff --git a/docs/atl/reference/atl-wizards-and-dialog-boxes.md b/docs/atl/reference/atl-wizards-and-dialog-boxes.md index 0632227a113..0b3400f14d8 100644 --- a/docs/atl/reference/atl-wizards-and-dialog-boxes.md +++ b/docs/atl/reference/atl-wizards-and-dialog-boxes.md @@ -3,10 +3,11 @@ description: "Learn more about: ATL Wizards and Dialog Boxes" title: "ATL Wizards and Dialog Boxes" ms.date: "06/26/2020" helpviewer_keywords: ["ATL, class wizards"] -ms.assetid: 51cf002a-83bc-41ba-aeb8-364ea2331375 --- # ATL Wizards and Dialog Boxes +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + The Active Template Library (ATL) wizards generate boilerplate code for various kinds of COM objects. You can run the wizards by opening the shortcut menu for a project in **Solution Explorer** and choosing **Add**, **Class**. ## Related Articles diff --git a/docs/atl/reference/atlcreatewnddata-structure.md b/docs/atl/reference/atlcreatewnddata-structure.md index ab5f1b3cf66..ccef921db99 100644 --- a/docs/atl/reference/atlcreatewnddata-structure.md +++ b/docs/atl/reference/atlcreatewnddata-structure.md @@ -4,10 +4,11 @@ title: "_AtlCreateWndData Structure" ms.date: "11/04/2016" f1_keywords: ["ATL::_AtlCreateWndData", "ATL._AtlCreateWndData", "_AtlCreateWndData"] helpviewer_keywords: ["_AtlCreateWndData structure", "AtlCreateWndData structure"] -ms.assetid: 76ed5382-bfbf-4b8b-8a29-912688dfd2ae --- # _AtlCreateWndData Structure +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This structure contains class instance data in windowing code in ATL. ## Syntax diff --git a/docs/atl/reference/ca2aex-class.md b/docs/atl/reference/ca2aex-class.md index 17184ac1d4a..17355a4e6d8 100644 --- a/docs/atl/reference/ca2aex-class.md +++ b/docs/atl/reference/ca2aex-class.md @@ -4,10 +4,11 @@ title: "CA2AEX Class" ms.date: "11/04/2016" f1_keywords: ["CA2AEX", "ATLCONV/ATL::CA2AEX", "ATLCONV/ATL::CA2AEX::CA2AEX", "ATLCONV/ATL::CA2AEX::m_psz", "ATLCONV/ATL::CA2AEX::m_szBuffer"] helpviewer_keywords: ["CA2AEX class"] -ms.assetid: 57dc65df-d9cf-4a84-99d3-6e031dde3664 --- # CA2AEX Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is used by the string conversion macros CA2TEX and CT2AEX, and the typedef CA2A. > [!IMPORTANT] diff --git a/docs/atl/reference/ca2caex-class.md b/docs/atl/reference/ca2caex-class.md index 384efbd5ea5..74d94867f69 100644 --- a/docs/atl/reference/ca2caex-class.md +++ b/docs/atl/reference/ca2caex-class.md @@ -4,10 +4,11 @@ title: "CA2CAEX Class" ms.date: "11/04/2016" f1_keywords: ["CA2CAEX", "ATLCONV/ATL::CA2CAEX", "ATLCONV/ATL::CA2CAEX::CA2CAEX", "ATLCONV/ATL::CA2CAEX::m_psz"] helpviewer_keywords: ["CA2CAEX class"] -ms.assetid: 388e7c1d-a144-474c-a182-b15f69a74bd8 --- # CA2CAEX Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is used by string conversion macros CA2CTEX and CT2CAEX, and the typedef CA2CA. > [!IMPORTANT] diff --git a/docs/atl/reference/ca2wex-class.md b/docs/atl/reference/ca2wex-class.md index 6b350dc68cf..efe52c7c486 100644 --- a/docs/atl/reference/ca2wex-class.md +++ b/docs/atl/reference/ca2wex-class.md @@ -4,10 +4,11 @@ title: "CA2WEX Class" ms.date: "11/04/2016" f1_keywords: ["CA2WEX", "ATLCONV/ATL::CA2WEX", "ATLCONV/ATL::CA2WEX::CA2WEX", "ATLCONV/ATL::CA2WEX::m_psz", "ATLCONV/ATL::CA2WEX::m_szBuffer"] helpviewer_keywords: ["CA2WEX class"] -ms.assetid: 317d9ffb-e84f-47e8-beda-57e28fb19124 --- # CA2WEX Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is used by the string conversion macros CA2TEX, CA2CTEX, CT2WEX, and CT2CWEX, and the typedef CA2W. > [!IMPORTANT] diff --git a/docs/atl/reference/caccesstoken-class.md b/docs/atl/reference/caccesstoken-class.md index 49272bfcd4a..6cd58e432ee 100644 --- a/docs/atl/reference/caccesstoken-class.md +++ b/docs/atl/reference/caccesstoken-class.md @@ -4,10 +4,11 @@ title: "CAccessToken Class" ms.date: "07/02/2019" f1_keywords: ["CAccessToken", "ATLSECURITY/ATL::CAccessToken", "ATLSECURITY/ATL::CAccessToken::Attach", "ATLSECURITY/ATL::CAccessToken::CheckTokenMembership", "ATLSECURITY/ATL::CAccessToken::CreateImpersonationToken", "ATLSECURITY/ATL::CAccessToken::CreatePrimaryToken", "ATLSECURITY/ATL::CAccessToken::CreateProcessAsUser", "ATLSECURITY/ATL::CAccessToken::CreateRestrictedToken", "ATLSECURITY/ATL::CAccessToken::Detach", "ATLSECURITY/ATL::CAccessToken::DisablePrivilege", "ATLSECURITY/ATL::CAccessToken::DisablePrivileges", "ATLSECURITY/ATL::CAccessToken::EnablePrivilege", "ATLSECURITY/ATL::CAccessToken::EnablePrivileges", "ATLSECURITY/ATL::CAccessToken::GetDefaultDacl", "ATLSECURITY/ATL::CAccessToken::GetEffectiveToken", "ATLSECURITY/ATL::CAccessToken::GetGroups", "ATLSECURITY/ATL::CAccessToken::GetHandle", "ATLSECURITY/ATL::CAccessToken::GetImpersonationLevel", "ATLSECURITY/ATL::CAccessToken::GetLogonSessionId", "ATLSECURITY/ATL::CAccessToken::GetLogonSid", "ATLSECURITY/ATL::CAccessToken::GetOwner", "ATLSECURITY/ATL::CAccessToken::GetPrimaryGroup", "ATLSECURITY/ATL::CAccessToken::GetPrivileges", "ATLSECURITY/ATL::CAccessToken::GetProcessToken", "ATLSECURITY/ATL::CAccessToken::GetProfile", "ATLSECURITY/ATL::CAccessToken::GetSource", "ATLSECURITY/ATL::CAccessToken::GetStatistics", "ATLSECURITY/ATL::CAccessToken::GetTerminalServicesSessionId", "ATLSECURITY/ATL::CAccessToken::GetThreadToken", "ATLSECURITY/ATL::CAccessToken::GetTokenId", "ATLSECURITY/ATL::CAccessToken::GetType", "ATLSECURITY/ATL::CAccessToken::GetUser", "ATLSECURITY/ATL::CAccessToken::HKeyCurrentUser", "ATLSECURITY/ATL::CAccessToken::Impersonate", "ATLSECURITY/ATL::CAccessToken::ImpersonateLoggedOnUser", "ATLSECURITY/ATL::CAccessToken::IsTokenRestricted", "ATLSECURITY/ATL::CAccessToken::LoadUserProfile", "ATLSECURITY/ATL::CAccessToken::LogonUser", "ATLSECURITY/ATL::CAccessToken::OpenCOMClientToken", "ATLSECURITY/ATL::CAccessToken::OpenNamedPipeClientToken", "ATLSECURITY/ATL::CAccessToken::OpenRPCClientToken", "ATLSECURITY/ATL::CAccessToken::OpenThreadToken", "ATLSECURITY/ATL::CAccessToken::PrivilegeCheck", "ATLSECURITY/ATL::CAccessToken::Revert", "ATLSECURITY/ATL::CAccessToken::SetDefaultDacl", "ATLSECURITY/ATL::CAccessToken::SetOwner", "ATLSECURITY/ATL::CAccessToken::SetPrimaryGroup"] helpviewer_keywords: ["CAccessToken class"] -ms.assetid: bb5c5945-56a5-4083-b442-76573cee83ab --- # CAccessToken Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a wrapper for an access token. > [!IMPORTANT] diff --git a/docs/atl/reference/cacl-class.md b/docs/atl/reference/cacl-class.md index 1521ad15fe8..49733e001d4 100644 --- a/docs/atl/reference/cacl-class.md +++ b/docs/atl/reference/cacl-class.md @@ -4,10 +4,11 @@ title: "CAcl Class" ms.date: "11/04/2016" f1_keywords: ["CAcl", "ATLSECURITY/ATL::CAcl", "ATLSECURITY/ATL::CAcl::CAccessMaskArray", "ATLSECURITY/ATL::CAcl::CAceFlagArray", "ATLSECURITY/ATL::CAcl::CAceTypeArray", "ATLSECURITY/ATL::CAcl::CAcl", "ATLSECURITY/ATL::CAcl::GetAceCount", "ATLSECURITY/ATL::CAcl::GetAclEntries", "ATLSECURITY/ATL::CAcl::GetAclEntry", "ATLSECURITY/ATL::CAcl::GetLength", "ATLSECURITY/ATL::CAcl::GetPACL", "ATLSECURITY/ATL::CAcl::IsEmpty", "ATLSECURITY/ATL::CAcl::IsNull", "ATLSECURITY/ATL::CAcl::RemoveAce", "ATLSECURITY/ATL::CAcl::RemoveAces", "ATLSECURITY/ATL::CAcl::SetEmpty", "ATLSECURITY/ATL::CAcl::SetNull"] helpviewer_keywords: ["CAcl class"] -ms.assetid: 20bcb9af-dc1c-4737-b923-3864776680d6 --- # CAcl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a wrapper for an `ACL` (access-control list) structure. > [!IMPORTANT] diff --git a/docs/atl/reference/cadapt-class.md b/docs/atl/reference/cadapt-class.md index e3596e34f0d..010fa0f3f7f 100644 --- a/docs/atl/reference/cadapt-class.md +++ b/docs/atl/reference/cadapt-class.md @@ -4,10 +4,11 @@ title: "CAdapt Class" ms.date: "11/04/2016" f1_keywords: ["CAdapt", "ATLCOMCLI/ATL::CAdapt", "ATLCOMCLI/ATL::CAdapt::CAdapt", "ATLCOMCLI/ATL::CAdapt::m_T"] helpviewer_keywords: ["address-of operator", "adapter objects", "& operator, address-of operator", "CAdapt class"] -ms.assetid: 0bb695a5-72fe-43d1-8f39-7e4da6e34765 --- # CAdapt Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This template is used to wrap classes that redefine the address-of operator to return something other than the address of the object. ## Syntax diff --git a/docs/atl/reference/category-macros.md b/docs/atl/reference/category-macros.md index 2520af59602..c6339244da1 100644 --- a/docs/atl/reference/category-macros.md +++ b/docs/atl/reference/category-macros.md @@ -3,10 +3,11 @@ description: "Learn more about: Category Macros" title: "Category Macros" ms.date: "11/04/2016" f1_keywords: ["ATLCOM/BEGIN_CATEGORY_MAP", "ATLCOM/END_CATEGORY_MAP", "ATLCOM/IMPLEMENTED_CATEGORY", "ATLCOM/REQUIRED_CATEGORY", "atlcom/ATL::BEGIN_CATEGORY_MAP", "atlcom/ATL::END_CATEGORY_MAP", "atlcom/ATL::IMPLEMENTED_CATEGORY", "atlcom/ATL::REQUIRED_CATEGORY"] -ms.assetid: 223578cb-6180-4787-a8d8-ba3787a5d3ee --- # Category Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros define category maps. |Macro|Description| diff --git a/docs/atl/reference/catlarray-class.md b/docs/atl/reference/catlarray-class.md index e2ff7b40f54..9a7af00b550 100644 --- a/docs/atl/reference/catlarray-class.md +++ b/docs/atl/reference/catlarray-class.md @@ -4,10 +4,11 @@ title: "CAtlArray Class" ms.date: "11/04/2016" f1_keywords: ["CAtlArray", "ATLCOLL/ATL::CAtlArray", "ATLCOLL/ATL::Add", "ATLCOLL/ATL::Append", "ATLCOLL/ATL::AssertValid", "ATLCOLL/ATL::Copy", "ATLCOLL/ATL::FreeExtra", "ATLCOLL/ATL::GetAt", "ATLCOLL/ATL::GetCount", "ATLCOLL/ATL::GetData", "ATLCOLL/ATL::InsertArrayAt", "ATLCOLL/ATL::InsertAt", "ATLCOLL/ATL::IsEmpty", "ATLCOLL/ATL::RemoveAll", "ATLCOLL/ATL::RemoveAt", "ATLCOLL/ATL::SetAt", "ATLCOLL/ATL::SetAtGrow", "ATLCOLL/ATL::SetCount", "ATLCOLL/ATL::INARGTYPE", "ATLCOLL/ATL::OUTARGTYPE"] helpviewer_keywords: ["CAtlArray class"] -ms.assetid: 0b503aa8-2357-40af-a326-6654bf1da098 --- # CAtlArray Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements an array object. ## Syntax diff --git a/docs/atl/reference/catlautothreadmodule-class.md b/docs/atl/reference/catlautothreadmodule-class.md index ad171cbf113..fde8b27ac04 100644 --- a/docs/atl/reference/catlautothreadmodule-class.md +++ b/docs/atl/reference/catlautothreadmodule-class.md @@ -4,10 +4,11 @@ title: "CAtlAutoThreadModule Class" ms.date: "11/04/2016" f1_keywords: ["CAtlAutoThreadModule", "atlbase/ATL::CAtlAutoThreadModule"] helpviewer_keywords: ["CAtlAutoThreadModule class"] -ms.assetid: 3be834aa-55ef-403e-94ae-41979691b15f --- # CAtlAutoThreadModule Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements a thread-pooled, apartment-model COM server. > [!IMPORTANT] diff --git a/docs/atl/reference/catlautothreadmodulet-class.md b/docs/atl/reference/catlautothreadmodulet-class.md index b3551f67c25..fdc99205556 100644 --- a/docs/atl/reference/catlautothreadmodulet-class.md +++ b/docs/atl/reference/catlautothreadmodulet-class.md @@ -4,10 +4,11 @@ title: "CAtlAutoThreadModuleT Class" ms.date: "11/04/2016" f1_keywords: ["CAtlAutoThreadModuleT", "ATLBASE/ATL::CAtlAutoThreadModuleT", "ATLBASE/ATL::CAtlAutoThreadModuleT::GetDefaultThreads"] helpviewer_keywords: ["CAtlAutoThreadModuleT class"] -ms.assetid: ae1667c6-3fb8-47bc-b35d-9ea5e9896d7f --- # CAtlAutoThreadModuleT Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for implementing a thread-pooled, apartment-model COM server. > [!IMPORTANT] diff --git a/docs/atl/reference/catlbasemodule-class.md b/docs/atl/reference/catlbasemodule-class.md index ca75cf7b50b..1126d5109ea 100644 --- a/docs/atl/reference/catlbasemodule-class.md +++ b/docs/atl/reference/catlbasemodule-class.md @@ -4,10 +4,11 @@ title: "CAtlBaseModule Class" ms.date: "11/04/2016" f1_keywords: ["CAtlBaseModule", "ATLCORE/ATL::CAtlBaseModule", "ATLCORE/ATL::CAtlBaseModule::CAtlBaseModule", "ATLCORE/ATL::CAtlBaseModule::AddResourceInstance", "ATLCORE/ATL::CAtlBaseModule::GetHInstanceAt", "ATLCORE/ATL::CAtlBaseModule::GetModuleInstance", "ATLCORE/ATL::CAtlBaseModule::GetResourceInstance", "ATLCORE/ATL::CAtlBaseModule::RemoveResourceInstance", "ATLCORE/ATL::CAtlBaseModule::SetResourceInstance", "ATLCORE/ATL::CAtlBaseModule::m_bInitFailed"] helpviewer_keywords: ["CAtlBaseModule class"] -ms.assetid: 55ade80c-9b0c-4c51-933e-2158436c1096 --- # CAtlBaseModule Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is instantiated in every ATL project. ## Syntax diff --git a/docs/atl/reference/catlcommodule-class.md b/docs/atl/reference/catlcommodule-class.md index ec1824a9769..cb307e817bc 100644 --- a/docs/atl/reference/catlcommodule-class.md +++ b/docs/atl/reference/catlcommodule-class.md @@ -4,10 +4,11 @@ title: "CAtlComModule Class" ms.date: "11/04/2016" f1_keywords: ["CAtlComModule", "ATLBASE/ATL::CAtlComModule", "ATLBASE/ATL::CAtlComModule::CAtlComModule", "ATLBASE/ATL::CAtlComModule::RegisterServer", "ATLBASE/ATL::CAtlComModule::RegisterTypeLib", "ATLBASE/ATL::CAtlComModule::UnregisterServer", "ATLBASE/ATL::CAtlComModule::UnRegisterTypeLib"] helpviewer_keywords: ["CAtlComModule class"] -ms.assetid: af5dd71a-a0d1-4a2e-9a24-154a03381c75 --- # CAtlComModule Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements a COM server module. ## Syntax diff --git a/docs/atl/reference/catldebuginterfacesmodule-class.md b/docs/atl/reference/catldebuginterfacesmodule-class.md index 38a674b3e7c..ff00c86e3c5 100644 --- a/docs/atl/reference/catldebuginterfacesmodule-class.md +++ b/docs/atl/reference/catldebuginterfacesmodule-class.md @@ -4,10 +4,11 @@ title: "CAtlDebugInterfacesModule Class" ms.date: "11/04/2016" f1_keywords: ["CAtlDebugInterfacesModule", "atlbase/ATL::CAtlDebugInterfacesModule"] helpviewer_keywords: ["_ATL_DEBUG_QI macro", "CAtlDebugInterfacesModule class"] -ms.assetid: a193b567-8191-4115-a963-a10805972bac --- # CAtlDebugInterfacesModule Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides support for debugging interfaces. ## Syntax diff --git a/docs/atl/reference/catldllmodulet-class.md b/docs/atl/reference/catldllmodulet-class.md index af960db0ee0..95c947d68cd 100644 --- a/docs/atl/reference/catldllmodulet-class.md +++ b/docs/atl/reference/catldllmodulet-class.md @@ -4,10 +4,11 @@ title: "CAtlDllModuleT Class" ms.date: "11/04/2016" f1_keywords: ["CAtlDllModuleT", "ATLBASE/ATL::CAtlDllModuleT", "ATLBASE/ATL::CAtlDllModuleT::CAtlDllModuleT", "ATLBASE/ATL::CAtlDllModuleT::DllCanUnloadNow", "ATLBASE/ATL::CAtlDllModuleT::DllGetClassObject", "ATLBASE/ATL::CAtlDllModuleT::DllMain", "ATLBASE/ATL::CAtlDllModuleT::DllRegisterServer", "ATLBASE/ATL::CAtlDllModuleT::DllUnregisterServer", "ATLBASE/ATL::CAtlDllModuleT::GetClassObject"] helpviewer_keywords: ["CAtlDllModuleT class"] -ms.assetid: 351d5767-8257-4878-94be-45a85e31a72d --- # CAtlDllModuleT Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents the module for a DLL. ## Syntax diff --git a/docs/atl/reference/catlexception-class.md b/docs/atl/reference/catlexception-class.md index 5549aa2ab77..584270063fc 100644 --- a/docs/atl/reference/catlexception-class.md +++ b/docs/atl/reference/catlexception-class.md @@ -4,10 +4,11 @@ title: "CAtlException Class" ms.date: "11/04/2016" f1_keywords: ["CAtlException", "ATLEXCEPT/ATL::CAtlException", "ATLEXCEPT/ATL::CAtlException::CAtlException", "ATLEXCEPT/ATL::CAtlException::m_hr"] helpviewer_keywords: ["CAtlException class"] -ms.assetid: 3fd7b041-f70d-4292-b947-0d70781d95a8 --- # CAtlException Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class defines an ATL exception. ## Syntax diff --git a/docs/atl/reference/catlexemodulet-class.md b/docs/atl/reference/catlexemodulet-class.md index 9d191306d99..fa15ff7dee1 100644 --- a/docs/atl/reference/catlexemodulet-class.md +++ b/docs/atl/reference/catlexemodulet-class.md @@ -4,10 +4,11 @@ title: "CAtlExeModuleT Class" ms.date: "11/04/2016" f1_keywords: ["CAtlExeModuleT", "ATLBASE/ATL::CAtlExeModuleT", "ATLBASE/ATL::CAtlExeModuleT::CAtlExeModuleT", "ATLBASE/ATL::CAtlExeModuleT::InitializeCom", "ATLBASE/ATL::CAtlExeModuleT::ParseCommandLine", "ATLBASE/ATL::CAtlExeModuleT::PostMessageLoop", "ATLBASE/ATL::CAtlExeModuleT::PreMessageLoop", "ATLBASE/ATL::CAtlExeModuleT::RegisterClassObjects", "ATLBASE/ATL::CAtlExeModuleT::RevokeClassObjects", "ATLBASE/ATL::CAtlExeModuleT::Run", "ATLBASE/ATL::CAtlExeModuleT::RunMessageLoop", "ATLBASE/ATL::CAtlExeModuleT::UninitializeCom", "ATLBASE/ATL::CAtlExeModuleT::Unlock", "ATLBASE/ATL::CAtlExeModuleT::WinMain", "ATLBASE/ATL::CAtlExeModuleT::m_bDelayShutdown", "ATLBASE/ATL::CAtlExeModuleT::m_dwPause", "ATLBASE/ATL::CAtlExeModuleT::m_dwTimeOut"] helpviewer_keywords: ["CAtlExeModuleT class"] -ms.assetid: 82245f3d-91d4-44fa-aa86-7cc7fbd758d9 --- # CAtlExeModuleT Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents the module for an application. ## Syntax diff --git a/docs/atl/reference/catlfile-class.md b/docs/atl/reference/catlfile-class.md index bbc448b9790..d959d4b8c38 100644 --- a/docs/atl/reference/catlfile-class.md +++ b/docs/atl/reference/catlfile-class.md @@ -4,10 +4,11 @@ title: "CAtlFile Class" ms.date: "11/04/2016" f1_keywords: ["CAtlFile", "ATLFILE/ATL::CAtlFile", "ATLFILE/ATL::CAtlFile::CAtlFile", "ATLFILE/ATL::CAtlFile::Create", "ATLFILE/ATL::CAtlFile::Flush", "ATLFILE/ATL::CAtlFile::GetOverlappedResult", "ATLFILE/ATL::CAtlFile::GetPosition", "ATLFILE/ATL::CAtlFile::GetSize", "ATLFILE/ATL::CAtlFile::LockRange", "ATLFILE/ATL::CAtlFile::Read", "ATLFILE/ATL::CAtlFile::Seek", "ATLFILE/ATL::CAtlFile::SetSize", "ATLFILE/ATL::CAtlFile::UnlockRange", "ATLFILE/ATL::CAtlFile::Write", "ATLFILE/ATL::CAtlFile::m_pTM"] helpviewer_keywords: ["CAtlFile class"] -ms.assetid: 93ed160b-af2a-448c-9cbe-e5fa46c199bb --- # CAtlFile Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides a thin wrapper around the Windows file-handling API. > [!IMPORTANT] diff --git a/docs/atl/reference/catlfilemapping-class.md b/docs/atl/reference/catlfilemapping-class.md index 8eebfc290c1..db442ec69fb 100644 --- a/docs/atl/reference/catlfilemapping-class.md +++ b/docs/atl/reference/catlfilemapping-class.md @@ -4,10 +4,11 @@ title: "CAtlFileMapping Class" ms.date: "11/04/2016" f1_keywords: ["CAtlFileMapping", "atlfile/ATL::CAtlFileMapping"] helpviewer_keywords: ["CAtlFileMapping class"] -ms.assetid: 899fc058-e05e-48b5-aca9-340403bb9e26 --- # CAtlFileMapping Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents a memory-mapped file, adding a cast operator to the methods of [CAtlFileMappingBase](../../atl/reference/catlfilemappingbase-class.md). > [!IMPORTANT] diff --git a/docs/atl/reference/catlfilemappingbase-class.md b/docs/atl/reference/catlfilemappingbase-class.md index f7084aa9571..b2bc6e3c4e5 100644 --- a/docs/atl/reference/catlfilemappingbase-class.md +++ b/docs/atl/reference/catlfilemappingbase-class.md @@ -4,10 +4,11 @@ title: "CAtlFileMappingBase Class" ms.date: "11/04/2016" f1_keywords: ["CAtlFileMappingBase", "ATLFILE/ATL::CAtlFileMappingBase", "ATLFILE/ATL::CAtlFileMappingBase::CAtlFileMappingBase", "ATLFILE/ATL::CAtlFileMappingBase::CopyFrom", "ATLFILE/ATL::CAtlFileMappingBase::GetData", "ATLFILE/ATL::CAtlFileMappingBase::GetHandle", "ATLFILE/ATL::CAtlFileMappingBase::GetMappingSize", "ATLFILE/ATL::CAtlFileMappingBase::MapFile", "ATLFILE/ATL::CAtlFileMappingBase::MapSharedMem", "ATLFILE/ATL::CAtlFileMappingBase::OpenMapping", "ATLFILE/ATL::CAtlFileMappingBase::Unmap"] helpviewer_keywords: ["CAtlFileMappingBase class"] -ms.assetid: be555723-2790-4f57-a8fb-be4d68460775 --- # CAtlFileMappingBase Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents a memory-mapped file. > [!IMPORTANT] diff --git a/docs/atl/reference/catllist-class.md b/docs/atl/reference/catllist-class.md index 6b1fc2ce91e..a5cada88bd7 100644 --- a/docs/atl/reference/catllist-class.md +++ b/docs/atl/reference/catllist-class.md @@ -4,10 +4,11 @@ title: "CAtlList Class" ms.date: "11/04/2016" f1_keywords: ["CAtlList", "ATLCOLL/ATL::CAtlList", "ATLCOLL/ATL::CAtlList::INARGTYPE", "ATLCOLL/ATL::CAtlList::CAtlList", "ATLCOLL/ATL::CAtlList::AddHead", "ATLCOLL/ATL::CAtlList::AddHeadList", "ATLCOLL/ATL::CAtlList::AddTail", "ATLCOLL/ATL::CAtlList::AddTailList", "ATLCOLL/ATL::CAtlList::AssertValid", "ATLCOLL/ATL::CAtlList::Find", "ATLCOLL/ATL::CAtlList::FindIndex", "ATLCOLL/ATL::CAtlList::GetAt", "ATLCOLL/ATL::CAtlList::GetCount", "ATLCOLL/ATL::CAtlList::GetHead", "ATLCOLL/ATL::CAtlList::GetHeadPosition", "ATLCOLL/ATL::CAtlList::GetNext", "ATLCOLL/ATL::CAtlList::GetPrev", "ATLCOLL/ATL::CAtlList::GetTail", "ATLCOLL/ATL::CAtlList::GetTailPosition", "ATLCOLL/ATL::CAtlList::InsertAfter", "ATLCOLL/ATL::CAtlList::InsertBefore", "ATLCOLL/ATL::CAtlList::IsEmpty", "ATLCOLL/ATL::CAtlList::MoveToHead", "ATLCOLL/ATL::CAtlList::MoveToTail", "ATLCOLL/ATL::CAtlList::RemoveAll", "ATLCOLL/ATL::CAtlList::RemoveAt", "ATLCOLL/ATL::CAtlList::RemoveHead", "ATLCOLL/ATL::CAtlList::RemoveHeadNoReturn", "ATLCOLL/ATL::CAtlList::RemoveTail", "ATLCOLL/ATL::CAtlList::RemoveTailNoReturn", "ATLCOLL/ATL::CAtlList::SetAt", "ATLCOLL/ATL::CAtlList::SwapElements"] helpviewer_keywords: ["CAtlList class"] -ms.assetid: 09e98053-64b2-4efa-99ab-d0542caaf981 --- # CAtlList Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for creating and managing a list object. ## Syntax diff --git a/docs/atl/reference/catlmap-class.md b/docs/atl/reference/catlmap-class.md index b9273b02c8e..1801355e86b 100644 --- a/docs/atl/reference/catlmap-class.md +++ b/docs/atl/reference/catlmap-class.md @@ -4,10 +4,11 @@ title: "CAtlMap Class" ms.date: "11/04/2016" f1_keywords: ["CAtlMap", "ATLCOLL/ATL::CAtlMap", "ATLCOLL/ATL::CAtlMap::KINARGTYPE", "ATLCOLL/ATL::CAtlMap::KOUTARGTYPE", "ATLCOLL/ATL::CAtlMap::VINARGTYPE", "ATLCOLL/ATL::CAtlMap::VOUTARGTYPE", "ATLCOLL/ATL::CPair::m_key", "ATLCOLL/ATL::CPair::m_value", "ATLCOLL/ATL::CAtlMap::CAtlMap", "ATLCOLL/ATL::CAtlMap::AssertValid", "ATLCOLL/ATL::CAtlMap::DisableAutoRehash", "ATLCOLL/ATL::CAtlMap::EnableAutoRehash", "ATLCOLL/ATL::CAtlMap::GetAt", "ATLCOLL/ATL::CAtlMap::GetCount", "ATLCOLL/ATL::CAtlMap::GetHashTableSize", "ATLCOLL/ATL::CAtlMap::GetKeyAt", "ATLCOLL/ATL::CAtlMap::GetNext", "ATLCOLL/ATL::CAtlMap::GetNextAssoc", "ATLCOLL/ATL::CAtlMap::GetNextKey", "ATLCOLL/ATL::CAtlMap::GetNextValue", "ATLCOLL/ATL::CAtlMap::GetStartPosition", "ATLCOLL/ATL::CAtlMap::GetValueAt", "ATLCOLL/ATL::CAtlMap::InitHashTable", "ATLCOLL/ATL::CAtlMap::IsEmpty", "ATLCOLL/ATL::CAtlMap::Lookup", "ATLCOLL/ATL::CAtlMap::Rehash", "ATLCOLL/ATL::CAtlMap::RemoveAll", "ATLCOLL/ATL::CAtlMap::RemoveAtPos", "ATLCOLL/ATL::CAtlMap::RemoveKey", "ATLCOLL/ATL::CAtlMap::SetAt", "ATLCOLL/ATL::CAtlMap::SetOptimalLoad", "ATLCOLL/ATL::CAtlMap::SetValueAt"] helpviewer_keywords: ["CAtlMap class"] -ms.assetid: 5e2fe028-8e6d-4686-93df-1433d2080ec3 --- # CAtlMap Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for creating and managing a map object. ## Syntax diff --git a/docs/atl/reference/catlmodule-class.md b/docs/atl/reference/catlmodule-class.md index 637193f3c88..2136b7f2d94 100644 --- a/docs/atl/reference/catlmodule-class.md +++ b/docs/atl/reference/catlmodule-class.md @@ -4,10 +4,11 @@ title: "CAtlModule Class" ms.date: "11/04/2016" f1_keywords: ["CAtlModule", "ATLBASE/ATL::CAtlModule", "ATLBASE/ATL::CAtlModule::CAtlModule", "ATLBASE/ATL::CAtlModule::AddCommonRGSReplacements", "ATLBASE/ATL::CAtlModule::AddTermFunc", "ATLBASE/ATL::CAtlModule::GetGITPtr", "ATLBASE/ATL::CAtlModule::GetLockCount", "ATLBASE/ATL::CAtlModule::Lock", "ATLBASE/ATL::CAtlModule::Term", "ATLBASE/ATL::CAtlModule::Unlock", "ATLBASE/ATL::CAtlModule::UpdateRegistryFromResourceD", "ATLBASE/ATL::CAtlModule::UpdateRegistryFromResourceDHelper", "ATLBASE/ATL::CAtlModule::UpdateRegistryFromResourceS", "ATLBASE/ATL::CAtlModule::m_libid", "ATLBASE/ATL::CAtlModule::m_pGIT"] helpviewer_keywords: ["CAtlModule class"] -ms.assetid: 63fe02f1-4c4b-4e7c-ae97-7ad7b4252415 --- # CAtlModule Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods used by several ATL module classes. ## Syntax diff --git a/docs/atl/reference/catlmodulet-class.md b/docs/atl/reference/catlmodulet-class.md index aeddee3c887..d8cc2b1db58 100644 --- a/docs/atl/reference/catlmodulet-class.md +++ b/docs/atl/reference/catlmodulet-class.md @@ -4,10 +4,11 @@ title: "CAtlModuleT Class" ms.date: "11/04/2016" f1_keywords: ["CAtlModuleT", "ATLBASE/ATL::CAtlModuleT", "ATLBASE/ATL::CAtlModuleT::CAtlModuleT", "ATLBASE/ATL::CAtlModuleT::InitLibId", "ATLBASE/ATL::CAtlModuleT::RegisterAppId", "ATLBASE/ATL::CAtlModuleT::RegisterServer", "ATLBASE/ATL::CAtlModuleT::UnregisterAppId", "ATLBASE/ATL::CAtlModuleT::UnregisterServer", "ATLBASE/ATL::CAtlModuleT::UpdateRegistryAppId"] helpviewer_keywords: ["CAtlModuleT class"] -ms.assetid: 9b74d02f-9117-47b1-a05e-c5945f83dd2b --- # CAtlModuleT Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements an ATL module. ## Syntax diff --git a/docs/atl/reference/catlpreviewctrlimpl-class.md b/docs/atl/reference/catlpreviewctrlimpl-class.md index 2f2fc09617b..c5e24db6ba6 100644 --- a/docs/atl/reference/catlpreviewctrlimpl-class.md +++ b/docs/atl/reference/catlpreviewctrlimpl-class.md @@ -4,10 +4,11 @@ title: "CAtlPreviewCtrlImpl Class" ms.date: "11/04/2016" f1_keywords: ["CAtlPreviewCtrlImpl", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl::CAtlPreviewCtrlImpl", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl::Create", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl::Destroy", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl::Focus", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl::OnPaint", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl::Redraw", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl::SetHost", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl::SetPreviewVisuals", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl::SetRect", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl::DoPaint", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl::m_plf", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl::m_clrBack", "ATLPREVIEWCTRLIMPL/ATL::CAtlPreviewCtrlImpl::m_clrText"] helpviewer_keywords: ["CAtlPreviewCtrlImpl class"] -ms.assetid: 39b3299e-07e4-4abc-9b6e-b54bfa3b0802 --- # CAtlPreviewCtrlImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is an ATL implementation of a window that is placed on a host window provided by the Shell for Rich Preview. > [!IMPORTANT] diff --git a/docs/atl/reference/catlservicemodulet-class.md b/docs/atl/reference/catlservicemodulet-class.md index 8931b815121..19c51da62bc 100644 --- a/docs/atl/reference/catlservicemodulet-class.md +++ b/docs/atl/reference/catlservicemodulet-class.md @@ -4,10 +4,11 @@ title: "CAtlServiceModuleT Class" ms.date: "05/06/2019" f1_keywords: ["CAtlServiceModuleT", "ATLBASE/ATL::CAtlServiceModuleT", "ATLBASE/ATL::CAtlServiceModuleT::CAtlServiceModuleT", "ATLBASE/ATL::CAtlServiceModuleT::Handler", "ATLBASE/ATL::CAtlServiceModuleT::InitializeSecurity", "ATLBASE/ATL::CAtlServiceModuleT::Install", "ATLBASE/ATL::CAtlServiceModuleT::IsInstalled", "ATLBASE/ATL::CAtlServiceModuleT::LogEvent", "ATLBASE/ATL::CAtlServiceModuleT::OnContinue", "ATLBASE/ATL::CAtlServiceModuleT::OnInterrogate", "ATLBASE/ATL::CAtlServiceModuleT::OnPause", "ATLBASE/ATL::CAtlServiceModuleT::OnShutdown", "ATLBASE/ATL::CAtlServiceModuleT::OnStop", "ATLBASE/ATL::CAtlServiceModuleT::OnUnknownRequest", "ATLBASE/ATL::CAtlServiceModuleT::ParseCommandLine", "ATLBASE/ATL::CAtlServiceModuleT::PreMessageLoop", "ATLBASE/ATL::CAtlServiceModuleT::RegisterAppId", "ATLBASE/ATL::CAtlServiceModuleT::Run", "ATLBASE/ATL::CAtlServiceModuleT::ServiceMain", "ATLBASE/ATL::CAtlServiceModuleT::SetServiceStatus", "ATLBASE/ATL::CAtlServiceModuleT::Start", "ATLBASE/ATL::CAtlServiceModuleT::Uninstall", "ATLBASE/ATL::CAtlServiceModuleT::Unlock", "ATLBASE/ATL::CAtlServiceModuleT::UnregisterAppId", "ATLBASE/ATL::CAtlServiceModuleT::WinMain", "ATLBASE/ATL::CAtlServiceModuleT::m_bService", "ATLBASE/ATL::CAtlServiceModuleT::m_dwThreadID", "ATLBASE/ATL::CAtlServiceModuleT::m_hServiceStatus", "ATLBASE/ATL::CAtlServiceModuleT::m_status", "ATLBASE/ATL::CAtlServiceModuleT::m_szServiceName"] helpviewer_keywords: ["CAtlServiceModuleT class"] -ms.assetid: 8fc753ce-4a50-402b-9b4a-0a4ce5dd496c --- # CAtlServiceModuleT Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements a service. > [!IMPORTANT] diff --git a/docs/atl/reference/catltemporaryfile-class.md b/docs/atl/reference/catltemporaryfile-class.md index 9878d4a0d93..597aaba7e09 100644 --- a/docs/atl/reference/catltemporaryfile-class.md +++ b/docs/atl/reference/catltemporaryfile-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["CAtlTemporaryFile class"] --- # CAtlTemporaryFile Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for the creation and use of a temporary file. > [!IMPORTANT] diff --git a/docs/atl/reference/catltransactionmanager-class.md b/docs/atl/reference/catltransactionmanager-class.md index 4c4430bf45b..4eec9cfe549 100644 --- a/docs/atl/reference/catltransactionmanager-class.md +++ b/docs/atl/reference/catltransactionmanager-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["CAtlTransactionManager class"] --- # CAtlTransactionManager Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + CAtlTransactionManager class provides a wrapper to Kernel Transaction Manager (KTM) functions. > [!IMPORTANT] diff --git a/docs/atl/reference/catlwinmodule-class.md b/docs/atl/reference/catlwinmodule-class.md index fe46bab7a8f..dfd3f356a9a 100644 --- a/docs/atl/reference/catlwinmodule-class.md +++ b/docs/atl/reference/catlwinmodule-class.md @@ -4,10 +4,11 @@ title: "CAtlWinModule Class" ms.date: "11/04/2016" f1_keywords: ["CAtlWinModule", "ATLBASE/ATL::CAtlWinModule", "ATLBASE/ATL::CAtlWinModule::CAtlWinModule", "ATLBASE/ATL::CAtlWinModule::AddCreateWndData", "ATLBASE/ATL::CAtlWinModule::ExtractCreateWndData"] helpviewer_keywords: ["CAtlWinModule class"] -ms.assetid: 7ec844af-0f68-4a34-b0c8-9de50a025df0 --- # CAtlWinModule Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides support for ATL windowing components. > [!IMPORTANT] diff --git a/docs/atl/reference/cautoptr-class.md b/docs/atl/reference/cautoptr-class.md index ec51839b4b2..69c6edfac9f 100644 --- a/docs/atl/reference/cautoptr-class.md +++ b/docs/atl/reference/cautoptr-class.md @@ -4,10 +4,11 @@ title: "CAutoPtr class" ms.date: "11/04/2016" f1_keywords: ["CAutoPtr", "ATLBASE/ATL::CAutoPtr", "ATLBASE/ATL::CAutoPtr::CAutoPtr", "ATLBASE/ATL::CAutoPtr::Attach", "ATLBASE/ATL::CAutoPtr::Detach", "ATLBASE/ATL::CAutoPtr::Free", "ATLBASE/ATL::CAutoPtr::m_p"] helpviewer_keywords: ["CAutoPtr class"] -ms.assetid: 08988d53-4fb0-4711-bdfc-8ac29c63f410 --- # `CAutoPtr` class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents a smart pointer object. > [!IMPORTANT] diff --git a/docs/atl/reference/cautoptrarray-class.md b/docs/atl/reference/cautoptrarray-class.md index cadb53e14a1..ab3616b4920 100644 --- a/docs/atl/reference/cautoptrarray-class.md +++ b/docs/atl/reference/cautoptrarray-class.md @@ -4,10 +4,11 @@ title: "CAutoPtrArray Class" ms.date: "11/04/2016" f1_keywords: ["CAutoPtrArray", "ATLCOLL/ATL::CAutoPtrArray", "ATLCOLL/ATL::CAutoPtrArray::CAutoPtrArray"] helpviewer_keywords: ["CAutoPtrArray class"] -ms.assetid: 880a70da-8c81-4427-8ac6-49aa8d424244 --- # CAutoPtrArray Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods useful when constructing an array of smart pointers. > [!IMPORTANT] diff --git a/docs/atl/reference/cautoptrelementtraits-class.md b/docs/atl/reference/cautoptrelementtraits-class.md index 90b8dbbea8c..5d2f5125152 100644 --- a/docs/atl/reference/cautoptrelementtraits-class.md +++ b/docs/atl/reference/cautoptrelementtraits-class.md @@ -4,10 +4,11 @@ title: "CAutoPtrElementTraits Class" ms.date: "11/04/2016" f1_keywords: ["CAutoPtrElementTraits", "ATLCOLL/ATL::CAutoPtrElementTraits", "ATLCOLL/ATL::CAutoPtrElementTraits::INARGTYPE", "ATLCOLL/ATL::CAutoPtrElementTraits::OUTARGTYPE"] helpviewer_keywords: ["CAutoPtrElementTraits class"] -ms.assetid: 777c1b14-6ab7-491f-b9a5-be149e71d4a2 --- # CAutoPtrElementTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods, static functions, and typedefs useful when creating collections of smart pointers. > [!IMPORTANT] diff --git a/docs/atl/reference/cautoptrlist-class.md b/docs/atl/reference/cautoptrlist-class.md index c2b8e2a7d2a..9f1ae599de9 100644 --- a/docs/atl/reference/cautoptrlist-class.md +++ b/docs/atl/reference/cautoptrlist-class.md @@ -4,10 +4,11 @@ title: "CAutoPtrList Class" ms.date: "11/04/2016" f1_keywords: ["CAutoPtrList", "ATLCOLL/ATL::CAutoPtrList", "ATLCOLL/ATL::CAutoPtrList::CAutoPtrList"] helpviewer_keywords: ["CAutoPtrList class"] -ms.assetid: 11de4aca-28b0-4ff2-a74a-cb602312ffbd --- # CAutoPtrList Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods useful when constructing a list of smart pointers. > [!IMPORTANT] diff --git a/docs/atl/reference/cautorevertimpersonation-class.md b/docs/atl/reference/cautorevertimpersonation-class.md index 6f63d124513..0999a258299 100644 --- a/docs/atl/reference/cautorevertimpersonation-class.md +++ b/docs/atl/reference/cautorevertimpersonation-class.md @@ -4,10 +4,11 @@ title: "CAutoRevertImpersonation Class" ms.date: "11/04/2016" f1_keywords: ["CAutoRevertImpersonation", "ATLSECURITY/ATL::CAutoRevertImpersonation", "ATLSECURITY/ATL::CAutoRevertImpersonation::CAutoRevertImpersonation", "ATLSECURITY/ATL::CAutoRevertImpersonation::Attach", "ATLSECURITY/ATL::CAutoRevertImpersonation::Detach", "ATLSECURITY/ATL::CAutoRevertImpersonation::GetAccessToken"] helpviewer_keywords: ["CAutoRevertImpersonation class"] -ms.assetid: 43732849-1940-4bd4-9d52-7a5698bb8838 --- # CAutoRevertImpersonation Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class reverts [CAccessToken](../../atl/reference/caccesstoken-class.md) objects to a nonimpersonating state when it goes out of scope. ## Syntax diff --git a/docs/atl/reference/cautovectorptr-class.md b/docs/atl/reference/cautovectorptr-class.md index be4c474bcce..e53ebac6abb 100644 --- a/docs/atl/reference/cautovectorptr-class.md +++ b/docs/atl/reference/cautovectorptr-class.md @@ -4,10 +4,11 @@ title: "CAutoVectorPtr Class" ms.date: "11/04/2016" f1_keywords: ["CAutoVectorPtr", "ATLBASE/ATL::CAutoVectorPtr", "ATLBASE/ATL::CAutoVectorPtr::CAutoVectorPtr", "ATLBASE/ATL::CAutoVectorPtr::Allocate", "ATLBASE/ATL::CAutoVectorPtr::Attach", "ATLBASE/ATL::CAutoVectorPtr::Detach", "ATLBASE/ATL::CAutoVectorPtr::Free", "ATLBASE/ATL::CAutoVectorPtr::m_p"] helpviewer_keywords: ["CAutoVectorPtr class"] -ms.assetid: 0030362b-6bc4-4a47-9b5b-3c3899dceab4 --- # CAutoVectorPtr Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents a smart pointer object using vector new and delete operators. > [!IMPORTANT] diff --git a/docs/atl/reference/cautovectorptrelementtraits-class.md b/docs/atl/reference/cautovectorptrelementtraits-class.md index 86e766db0b2..7a18d053716 100644 --- a/docs/atl/reference/cautovectorptrelementtraits-class.md +++ b/docs/atl/reference/cautovectorptrelementtraits-class.md @@ -4,10 +4,11 @@ title: "CAutoVectorPtrElementTraits Class" ms.date: "11/04/2016" f1_keywords: ["CAutoVectorPtrElementTraits", "ATLCOLL/ATL::CAutoVectorPtrElementTraits", "ATLCOLL/ATL::CAutoVectorPtrElementTraits::INARGTYPE", "ATLCOLL/ATL::CAutoVectorPtrElementTraits::OUTARGTYPE"] helpviewer_keywords: ["CAutoVectorPtrElementTraits class"] -ms.assetid: 16b81a56-55fb-46ca-b376-66a1884231a6 --- # CAutoVectorPtrElementTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods, static functions, and typedefs useful when creating collections of smart pointers using vector new and delete operators. > [!IMPORTANT] diff --git a/docs/atl/reference/caxdialogimpl-class.md b/docs/atl/reference/caxdialogimpl-class.md index 76937ed12b0..8e536aadf64 100644 --- a/docs/atl/reference/caxdialogimpl-class.md +++ b/docs/atl/reference/caxdialogimpl-class.md @@ -4,10 +4,11 @@ title: "CAxDialogImpl Class" ms.date: "11/04/2016" f1_keywords: ["CAxDialogImpl", "ATLWIN/ATL::CAxDialogImpl", "ATLWIN/ATL::CAxDialogImpl::AdviseSinkMap", "ATLWIN/ATL::CAxDialogImpl::Create", "ATLWIN/ATL::CAxDialogImpl::DestroyWindow", "ATLWIN/ATL::CAxDialogImpl::DoModal", "ATLWIN/ATL::CAxDialogImpl::EndDialog", "ATLWIN/ATL::CAxDialogImpl::GetDialogProc", "ATLWIN/ATL::CAxDialogImpl::GetIDD", "ATLWIN/ATL::CAxDialogImpl::IsDialogMessage", "ATLWIN/ATL::CAxDialogImpl::m_bModal"] helpviewer_keywords: ["CAxDialogImpl class", "ATL, dialog boxes"] -ms.assetid: 817df483-3fa8-44e7-8487-72ba0881cd27 --- # CAxDialogImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements a dialog box (modal or modeless) that hosts ActiveX controls. > [!IMPORTANT] diff --git a/docs/atl/reference/caxwindow-class.md b/docs/atl/reference/caxwindow-class.md index 1817a66fc3c..6a8268eb678 100644 --- a/docs/atl/reference/caxwindow-class.md +++ b/docs/atl/reference/caxwindow-class.md @@ -4,7 +4,6 @@ title: "CAxWindow Class" ms.date: "11/04/2016" f1_keywords: ["CAxWindow", "ATLWIN/ATL::CAxWindow", "ATLWIN/ATL::AttachControl", "ATLWIN/ATL::CreateControl", "ATLWIN/ATL::CreateControlEx", "ATLWIN/ATL::GetWndClassName", "ATLWIN/ATL::QueryControl", "ATLWIN/ATL::QueryHost", "ATLWIN/ATL::SetExternalDispatch", "ATLWIN/ATL::SetExternalUIHandler"] helpviewer_keywords: ["CAxWindow class", "ATL, hosting ActiveX controls"] -ms.assetid: 85e79261-43e4-4770-bde0-1ff87f222b0f api_type: - DllExport api_location: @@ -14,6 +13,8 @@ api_name: --- # CAxWindow Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for manipulating a window hosting an ActiveX control. > [!IMPORTANT] diff --git a/docs/atl/reference/caxwindow2t-class.md b/docs/atl/reference/caxwindow2t-class.md index 866f52ad95f..b8ed27afc15 100644 --- a/docs/atl/reference/caxwindow2t-class.md +++ b/docs/atl/reference/caxwindow2t-class.md @@ -4,10 +4,11 @@ title: "CAxWindow2T Class" ms.date: "11/04/2016" f1_keywords: ["CAxWindow2T", "ATLWIN/ATL::CAxWindow2T", "ATLWIN/ATL::CAxWindow2T::CAxWindow2T", "ATLWIN/ATL::CAxWindow2T::Create", "ATLWIN/ATL::CAxWindow2T::CreateControlLic", "ATLWIN/ATL::CAxWindow2T::CreateControlLicEx", "ATLWIN/ATL::CAxWindow2T::GetWndClassName"] helpviewer_keywords: ["CAxWindow2 class"] -ms.assetid: b87bc943-7991-4537-b902-2138d7f4d837 --- # CAxWindow2T Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for manipulating a window that hosts an ActiveX control, and also has support for hosting licensed ActiveX controls. > [!IMPORTANT] diff --git a/docs/atl/reference/cbindstatuscallback-class.md b/docs/atl/reference/cbindstatuscallback-class.md index 1de6349c0cc..795c96c8517 100644 --- a/docs/atl/reference/cbindstatuscallback-class.md +++ b/docs/atl/reference/cbindstatuscallback-class.md @@ -4,10 +4,11 @@ title: "CBindStatusCallback Class" ms.date: "11/04/2016" f1_keywords: ["CBindStatusCallback", "ATLCTL/ATL::CBindStatusCallback", "ATLCTL/ATL::CBindStatusCallback::CBindStatusCallback", "ATLCTL/ATL::CBindStatusCallback::Download", "ATLCTL/ATL::CBindStatusCallback::GetBindInfo", "ATLCTL/ATL::CBindStatusCallback::GetPriority", "ATLCTL/ATL::CBindStatusCallback::OnDataAvailable", "ATLCTL/ATL::CBindStatusCallback::OnLowResource", "ATLCTL/ATL::CBindStatusCallback::OnObjectAvailable", "ATLCTL/ATL::CBindStatusCallback::OnProgress", "ATLCTL/ATL::CBindStatusCallback::OnStartBinding", "ATLCTL/ATL::CBindStatusCallback::OnStopBinding", "ATLCTL/ATL::CBindStatusCallback::StartAsyncDownload", "ATLCTL/ATL::CBindStatusCallback::m_dwAvailableToRead", "ATLCTL/ATL::CBindStatusCallback::m_dwTotalRead", "ATLCTL/ATL::CBindStatusCallback::m_pFunc", "ATLCTL/ATL::CBindStatusCallback::m_pT", "ATLCTL/ATL::CBindStatusCallback::m_spBindCtx", "ATLCTL/ATL::CBindStatusCallback::m_spBinding", "ATLCTL/ATL::CBindStatusCallback::m_spMoniker", "ATLCTL/ATL::CBindStatusCallback::m_spStream"] helpviewer_keywords: ["asynchronous data transfer [C++]", "data transfer [C++]", "data transfer [C++], asynchronous", "CBindStatusCallback class"] -ms.assetid: 0f5da276-6031-4418-b2a9-a4750ef29e77 --- # CBindStatusCallback Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements the `IBindStatusCallback` interface. > [!IMPORTANT] diff --git a/docs/atl/reference/ccomaggobject-class.md b/docs/atl/reference/ccomaggobject-class.md index b6eefe72330..f3401c8642f 100644 --- a/docs/atl/reference/ccomaggobject-class.md +++ b/docs/atl/reference/ccomaggobject-class.md @@ -4,10 +4,11 @@ title: "CComAggObject Class" ms.date: "11/04/2016" f1_keywords: ["CComAggObject", "ATLCOM/ATL::CComAggObject", "ATLCOM/ATL::CComAggObject::CComAggObject", "ATLCOM/ATL::CComAggObject::AddRef", "ATLCOM/ATL::CComAggObject::CreateInstance", "ATLCOM/ATL::CComAggObject::FinalConstruct", "ATLCOM/ATL::CComAggObject::FinalRelease", "ATLCOM/ATL::CComAggObject::QueryInterface", "ATLCOM/ATL::CComAggObject::Release", "ATLCOM/ATL::CComAggObject::m_contained"] helpviewer_keywords: ["aggregate objects [C++], in ATL", "aggregation [C++], ATL objects", "CComAggObject class"] -ms.assetid: 7aa90d69-d399-477b-880d-e2cdf0ef7881 --- # CComAggObject Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements the [IUnknown](/windows/win32/api/unknwn/nn-unknwn-iunknown) interface for an aggregated object. By definition, an aggregated object is contained within an outer object. The `CComAggObject` class is similar to the [CComObject Class](../../atl/reference/ccomobject-class.md), except that it exposes an interface that is directly accessible to external clients. ## Syntax diff --git a/docs/atl/reference/ccomallocator-class.md b/docs/atl/reference/ccomallocator-class.md index c29ebdbe019..83af39f1631 100644 --- a/docs/atl/reference/ccomallocator-class.md +++ b/docs/atl/reference/ccomallocator-class.md @@ -4,10 +4,11 @@ title: "CComAllocator Class" ms.date: "11/04/2016" f1_keywords: ["CComAllocator", "ATLBASE/ATL::CComAllocator", "ATLBASE/ATL::CComAllocator::Allocate", "ATLBASE/ATL::CComAllocator::Free", "ATLBASE/ATL::CComAllocator::Reallocate"] helpviewer_keywords: ["CComAllocator class"] -ms.assetid: 0cd706fd-0c7b-42d3-9054-febe2966fc8e --- # CComAllocator Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for managing memory using COM memory routines. ## Syntax diff --git a/docs/atl/reference/ccomapartment-class.md b/docs/atl/reference/ccomapartment-class.md index b49417cff84..f1b11e286b0 100644 --- a/docs/atl/reference/ccomapartment-class.md +++ b/docs/atl/reference/ccomapartment-class.md @@ -4,10 +4,11 @@ title: "CComApartment Class" ms.date: "11/04/2016" f1_keywords: ["CComApartment", "ATLBASE/ATL::CComApartment", "ATLBASE/ATL::CComApartment::CComApartment", "ATLBASE/ATL::CComApartment::Apartment", "ATLBASE/ATL::CComApartment::GetLockCount", "ATLBASE/ATL::CComApartment::Lock", "ATLBASE/ATL::CComApartment::Unlock", "ATLBASE/ATL::CComApartment::m_dwThreadID", "ATLBASE/ATL::CComApartment::m_hThread", "ATLBASE/ATL::CComApartment::m_nLockCnt"] helpviewer_keywords: ["apartments in ATL EXE modules", "CComApartment class"] -ms.assetid: dbc177d7-7ee4-45f2-b563-d578a467ca93 --- # CComApartment Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides support for managing an apartment in a thread-pooled EXE module. > [!IMPORTANT] diff --git a/docs/atl/reference/ccomautocriticalsection-class.md b/docs/atl/reference/ccomautocriticalsection-class.md index 1307f3e999d..a2f558a71ac 100644 --- a/docs/atl/reference/ccomautocriticalsection-class.md +++ b/docs/atl/reference/ccomautocriticalsection-class.md @@ -4,10 +4,11 @@ title: "CComAutoCriticalSection Class" ms.date: "11/04/2016" f1_keywords: ["CComAutoCriticalSection", "ATLCORE/ATL::CComAutoCriticalSection", "ATLCORE/ATL::CComAutoCriticalSection::CComAutoCriticalSection"] helpviewer_keywords: ["CComAutoCriticalSection class"] -ms.assetid: 491a9d90-3398-4f90-88f5-fd2172a46b30 --- # CComAutoCriticalSection Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + `CComAutoCriticalSection` provides methods for obtaining and releasing ownership of a critical section object. ## Syntax diff --git a/docs/atl/reference/ccomautodeletecriticalsection-class.md b/docs/atl/reference/ccomautodeletecriticalsection-class.md index b7ab596a45f..61c39b5626b 100644 --- a/docs/atl/reference/ccomautodeletecriticalsection-class.md +++ b/docs/atl/reference/ccomautodeletecriticalsection-class.md @@ -4,10 +4,11 @@ title: "CComAutoDeleteCriticalSection Class" ms.date: "11/04/2016" f1_keywords: ["CComAutoDeleteCriticalSection", "atlcore/ATL::CComAutoDeleteCriticalSection"] helpviewer_keywords: ["CComAutoDeleteCriticalSection class"] -ms.assetid: 2396dbea-1c60-4841-b50e-c4e18af311a3 --- # CComAutoDeleteCriticalSection Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for obtaining and releasing ownership of a critical section object. ## Syntax From 4717f4da6e09553e8d536e51764828bdca90d849 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 25 Feb 2026 15:03:40 -0800 Subject: [PATCH 335/619] ATL batch 3: docs updates (files 195-294) --- docs/atl/reference/ccomautothreadmodule-class.md | 3 ++- docs/atl/reference/ccombstr-class.md | 3 ++- docs/atl/reference/ccomcachedtearoffobject-class.md | 3 ++- docs/atl/reference/ccomclassfactory-class.md | 3 ++- docs/atl/reference/ccomclassfactory2-class.md | 3 ++- docs/atl/reference/ccomclassfactoryautothread-class.md | 3 ++- docs/atl/reference/ccomclassfactorysingleton-class.md | 3 ++- docs/atl/reference/ccomcoclass-class.md | 2 ++ docs/atl/reference/ccomcompositecontrol-class.md | 3 ++- docs/atl/reference/ccomcontainedobject-class.md | 3 ++- docs/atl/reference/ccomcontrol-class.md | 3 ++- docs/atl/reference/ccomcontrolbase-class.md | 3 ++- docs/atl/reference/ccomcriticalsection-class.md | 3 ++- docs/atl/reference/ccomcritseclock-class.md | 3 ++- docs/atl/reference/ccomcurrency-class.md | 2 ++ docs/atl/reference/ccomdynamicunkarray-class.md | 2 ++ docs/atl/reference/ccomenum-class.md | 3 ++- docs/atl/reference/ccomenumimpl-class.md | 3 ++- docs/atl/reference/ccomenumonstl-class.md | 3 ++- docs/atl/reference/ccomfakecriticalsection-class.md | 3 ++- docs/atl/reference/ccomgitptr-class.md | 3 ++- docs/atl/reference/ccomheap-class.md | 3 ++- docs/atl/reference/ccomheapptr-class.md | 3 ++- docs/atl/reference/ccommodule-class.md | 3 ++- docs/atl/reference/ccommultithreadmodel-class.md | 2 ++ docs/atl/reference/ccommultithreadmodelnocs-class.md | 3 ++- docs/atl/reference/ccomobject-class.md | 3 ++- docs/atl/reference/ccomobjectglobal-class.md | 3 ++- docs/atl/reference/ccomobjectnolock-class.md | 3 ++- docs/atl/reference/ccomobjectroot-class.md | 3 ++- docs/atl/reference/ccomobjectrootex-class.md | 3 ++- docs/atl/reference/ccomobjectstack-class.md | 3 ++- docs/atl/reference/ccompolyobject-class.md | 3 ++- docs/atl/reference/ccomptr-class.md | 3 ++- docs/atl/reference/ccomptrbase-class.md | 3 ++- docs/atl/reference/ccomqiptr-class.md | 3 ++- docs/atl/reference/ccomqiptrelementtraits-class.md | 3 ++- docs/atl/reference/ccomsafearray-class.md | 2 ++ docs/atl/reference/ccomsafearraybound-class.md | 3 ++- docs/atl/reference/ccomsafedeletecriticalsection-class.md | 3 ++- docs/atl/reference/ccomsimplethreadallocator-class.md | 3 ++- docs/atl/reference/ccomsinglethreadmodel-class.md | 3 ++- docs/atl/reference/ccomtearoffobject-class.md | 3 ++- docs/atl/reference/ccomunkarray-class.md | 3 ++- docs/atl/reference/ccomvariant-class.md | 2 ++ docs/atl/reference/ccontainedwindowt-class.md | 3 ++- docs/atl/reference/ccrtallocator-class.md | 3 ++- docs/atl/reference/ccrtheap-class.md | 3 ++- docs/atl/reference/cdacl-class.md | 3 ++- docs/atl/reference/cdebugreporthook-class.md | 3 ++- docs/atl/reference/cdefaultchartraits-class.md | 3 ++- docs/atl/reference/cdefaultcomparetraits-class.md | 3 ++- docs/atl/reference/cdefaultelementtraits-class.md | 3 ++- docs/atl/reference/cdefaulthashtraits-class.md | 3 ++- docs/atl/reference/cdialogimpl-class.md | 3 ++- docs/atl/reference/cdynamicchain-class.md | 3 ++- docs/atl/reference/celementtraits-class.md | 3 ++- docs/atl/reference/celementtraitsbase-class.md | 3 ++- docs/atl/reference/cfirepropnotifyevent-class.md | 3 ++- docs/atl/reference/cglobalheap-class.md | 3 ++- docs/atl/reference/chandle-class.md | 3 ++- docs/atl/reference/cheapptr-class.md | 3 ++- docs/atl/reference/cheapptrbase-class.md | 3 ++- docs/atl/reference/cheapptrelementtraits-class.md | 3 ++- docs/atl/reference/cheapptrlist-class.md | 3 ++- docs/atl/reference/cinterfacearray-class.md | 3 ++- docs/atl/reference/cinterfacelist-class.md | 3 ++- docs/atl/reference/clocalheap-class.md | 3 ++- docs/atl/reference/cmessagemap-class.md | 3 ++- docs/atl/reference/cnonstatelessworker-class.md | 3 ++- docs/atl/reference/cnoworkerthread-class.md | 3 ++- docs/atl/reference/com-interface-entry-macros.md | 3 ++- docs/atl/reference/com-map-global-functions.md | 3 ++- docs/atl/reference/com-map-macros.md | 3 ++- .../com-plus-1-0-atl-com-plus-1-0-component-wizard.md | 3 ++- docs/atl/reference/com-plus-1-0-support-in-atl-projects.md | 3 ++- docs/atl/reference/compiler-options-macros.md | 2 ++ docs/atl/reference/composite-control-global-functions.md | 3 ++- docs/atl/reference/composite-control-macros.md | 3 ++- docs/atl/reference/connection-point-global-functions.md | 3 ++- docs/atl/reference/connection-point-macros.md | 3 ++- docs/atl/reference/cpatht-class.md | 3 ++- docs/atl/reference/cprimitiveelementtraits-class.md | 3 ++- docs/atl/reference/cprivateobjectsecuritydesc-class.md | 3 ++- docs/atl/reference/crbmap-class.md | 3 ++- docs/atl/reference/crbmultimap-class.md | 3 ++- docs/atl/reference/crbtree-class.md | 3 ++- docs/atl/reference/creating-an-atl-project.md | 3 ++- docs/atl/reference/cregkey-class.md | 2 ++ docs/atl/reference/crtthreadtraits-class.md | 3 ++- docs/atl/reference/csacl-class.md | 3 ++- docs/atl/reference/csecurityattributes-class.md | 3 ++- docs/atl/reference/csecuritydesc-class.md | 3 ++- docs/atl/reference/csid-class.md | 3 ++- docs/atl/reference/csimplearray-class.md | 3 ++- docs/atl/reference/csimplearrayequalhelper-class.md | 3 ++- docs/atl/reference/csimplearrayequalhelperfalse-class.md | 3 ++- docs/atl/reference/csimpledialog-class.md | 3 ++- docs/atl/reference/csimplemap-class.md | 3 ++- docs/atl/reference/csimplemapequalhelper-class.md | 3 ++- 100 files changed, 200 insertions(+), 92 deletions(-) diff --git a/docs/atl/reference/ccomautothreadmodule-class.md b/docs/atl/reference/ccomautothreadmodule-class.md index 4cff4d76b9d..2c6e947a2fe 100644 --- a/docs/atl/reference/ccomautothreadmodule-class.md +++ b/docs/atl/reference/ccomautothreadmodule-class.md @@ -4,10 +4,11 @@ title: "CComAutoThreadModule Class" ms.date: "11/04/2016" f1_keywords: ["CComAutoThreadModule", "ATLBASE/ATL::CComAutoThreadModule", "ATLBASE/ATL::CreateInstance", "ATLBASE/ATL::GetDefaultThreads", "ATLBASE/ATL::Init", "ATLBASE/ATL::Lock", "ATLBASE/ATL::Unlock", "ATLBASE/ATL::dwThreadID", "ATLBASE/ATL::m_Allocator", "ATLBASE/ATL::m_nThreads", "ATLBASE/ATL::m_pApartments"] helpviewer_keywords: ["CComAutoThreadModule class", "apartment model modules"] -ms.assetid: 13063ea5-a57e-4aac-97d3-227137262811 --- # CComAutoThreadModule Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + As of ATL 7.0, `CComAutoThreadModule` is obsolete: see [ATL Module Classes](../../atl/atl-module-classes.md) for more details. > [!IMPORTANT] diff --git a/docs/atl/reference/ccombstr-class.md b/docs/atl/reference/ccombstr-class.md index 14c7a7e8d83..7062d1d7d9c 100644 --- a/docs/atl/reference/ccombstr-class.md +++ b/docs/atl/reference/ccombstr-class.md @@ -4,10 +4,11 @@ title: "CComBSTR Class" ms.date: "11/04/2016" f1_keywords: ["CComBSTR", "ATLBASE/ATL::CComBSTR", "ATLBASE/ATL::CComBSTR::CComBSTR", "ATLBASE/ATL::CComBSTR::Append", "ATLBASE/ATL::CComBSTR::AppendBSTR", "ATLBASE/ATL::CComBSTR::AppendBytes", "ATLBASE/ATL::CComBSTR::ArrayToBSTR", "ATLBASE/ATL::CComBSTR::AssignBSTR", "ATLBASE/ATL::CComBSTR::Attach", "ATLBASE/ATL::CComBSTR::BSTRToArray", "ATLBASE/ATL::CComBSTR::ByteLength", "ATLBASE/ATL::CComBSTR::Copy", "ATLBASE/ATL::CComBSTR::CopyTo", "ATLBASE/ATL::CComBSTR::Detach", "ATLBASE/ATL::CComBSTR::Empty", "ATLBASE/ATL::CComBSTR::Length", "ATLBASE/ATL::CComBSTR::LoadString", "ATLBASE/ATL::CComBSTR::ReadFromStream", "ATLBASE/ATL::CComBSTR::ToLower", "ATLBASE/ATL::CComBSTR::ToUpper", "ATLBASE/ATL::CComBSTR::WriteToStream", "ATLBASE/ATL::CComBSTR::m_str"] helpviewer_keywords: ["BSTRs, wrapper", "CComBSTR class", "CComBSTR"] -ms.assetid: 8fea1879-a05e-47a5-a803-8dec60eaa534 --- # `CComBSTR` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a wrapper for [`BSTR`](/previous-versions/windows/desktop/automat/bstr)s. ## Syntax diff --git a/docs/atl/reference/ccomcachedtearoffobject-class.md b/docs/atl/reference/ccomcachedtearoffobject-class.md index 26e8f9526df..bfeda509925 100644 --- a/docs/atl/reference/ccomcachedtearoffobject-class.md +++ b/docs/atl/reference/ccomcachedtearoffobject-class.md @@ -4,10 +4,11 @@ title: "CComCachedTearOffObject Class" ms.date: "11/04/2016" f1_keywords: ["CComCachedTearOffObject", "ATLCOM/ATL::CComCachedTearOffObject", "ATLCOM/ATL::CComCachedTearOffObject::CComCachedTearOffObject", "ATLCOM/ATL::CComCachedTearOffObject::AddRef", "ATLCOM/ATL::CComCachedTearOffObject::FinalConstruct", "ATLCOM/ATL::CComCachedTearOffObject::FinalRelease", "ATLCOM/ATL::CComCachedTearOffObject::QueryInterface", "ATLCOM/ATL::CComCachedTearOffObject::Release", "ATLCOM/ATL::CComCachedTearOffObject::m_contained"] helpviewer_keywords: ["cache, ATL cached tear-off objects", "CComCachedTearOffObject class"] -ms.assetid: ae19507d-a1de-4dbc-a988-da9f75a50c95 --- # CComCachedTearOffObject Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements [IUnknown](/windows/win32/api/unknwn/nn-unknwn-iunknown) for a tear-off interface. ## Syntax diff --git a/docs/atl/reference/ccomclassfactory-class.md b/docs/atl/reference/ccomclassfactory-class.md index 02636d54b19..8ffc9ddddb9 100644 --- a/docs/atl/reference/ccomclassfactory-class.md +++ b/docs/atl/reference/ccomclassfactory-class.md @@ -4,10 +4,11 @@ title: "CComClassFactory Class" ms.date: "11/04/2016" f1_keywords: ["CComClassFactory", "ATLCOM/ATL::CComClassFactory", "ATLCOM/ATL::CComClassFactory::CreateInstance", "ATLCOM/ATL::CComClassFactory::LockServer"] helpviewer_keywords: ["CComClassFactory class"] -ms.assetid: e56dacf7-d5c4-4c42-aef4-a86d91981a1b --- # CComClassFactory Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements the [IClassFactory](/windows/win32/api/unknwnbase/nn-unknwnbase-iclassfactory) interface. ## Syntax diff --git a/docs/atl/reference/ccomclassfactory2-class.md b/docs/atl/reference/ccomclassfactory2-class.md index 6a40fbd71ed..b96614dc260 100644 --- a/docs/atl/reference/ccomclassfactory2-class.md +++ b/docs/atl/reference/ccomclassfactory2-class.md @@ -4,10 +4,11 @@ title: "CComClassFactory2 Class" ms.date: "11/04/2016" f1_keywords: ["CComClassFactory2", "ATLCOM/ATL::CComClassFactory2", "ATLCOM/ATL::CComClassFactory2::CreateInstance", "ATLCOM/ATL::CComClassFactory2::CreateInstanceLic", "ATLCOM/ATL::CComClassFactory2::GetLicInfo", "ATLCOM/ATL::CComClassFactory2::LockServer", "ATLCOM/ATL::CComClassFactory2::RequestLicKey"] helpviewer_keywords: ["CComClassFactory2 class"] -ms.assetid: 19b66fd6-b9ed-47a0-822c-8132184f5a3e --- # CComClassFactory2 Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements the [IClassFactory2](/windows/win32/api/ocidl/nn-ocidl-iclassfactory2) interface. ## Syntax diff --git a/docs/atl/reference/ccomclassfactoryautothread-class.md b/docs/atl/reference/ccomclassfactoryautothread-class.md index af076db252a..39c4c45f686 100644 --- a/docs/atl/reference/ccomclassfactoryautothread-class.md +++ b/docs/atl/reference/ccomclassfactoryautothread-class.md @@ -4,10 +4,11 @@ title: "CComClassFactoryAutoThread Class" ms.date: "11/04/2016" f1_keywords: ["CComClassFactoryAutoThread", "ATLCOM/ATL::CComClassFactoryAutoThread", "ATLCOM/ATL::CComClassFactoryAutoThread::CreateInstance", "ATLCOM/ATL::CComClassFactoryAutoThread::LockServer"] helpviewer_keywords: ["CComClassFactoryAutoThread class"] -ms.assetid: 22008042-533f-4dd9-bf7e-191ee571f9a1 --- # CComClassFactoryAutoThread Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements the [IClassFactory](/windows/win32/api/unknwnbase/nn-unknwnbase-iclassfactory) interface, and allows objects to be created in multiple apartments. > [!IMPORTANT] diff --git a/docs/atl/reference/ccomclassfactorysingleton-class.md b/docs/atl/reference/ccomclassfactorysingleton-class.md index 7559d27a594..a2eb6745545 100644 --- a/docs/atl/reference/ccomclassfactorysingleton-class.md +++ b/docs/atl/reference/ccomclassfactorysingleton-class.md @@ -4,10 +4,11 @@ title: "CComClassFactorySingleton Class" ms.date: "11/04/2016" f1_keywords: ["CComClassFactorySingleton", "ATLCOM/ATL::CComClassFactorySingleton", "ATLCOM/ATL::CComClassFactorySingleton::CreateInstance", "ATLCOM/ATL::CComClassFactorySingleton::m_spObj"] helpviewer_keywords: ["CComClassFactorySingleton class"] -ms.assetid: debb983c-382b-487b-8d42-7ea26dc158b8 --- # CComClassFactorySingleton Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class derives from [CComClassFactory](../../atl/reference/ccomclassfactory-class.md) and uses [CComObjectGlobal](../../atl/reference/ccomobjectglobal-class.md) to construct a single object. > [!IMPORTANT] diff --git a/docs/atl/reference/ccomcoclass-class.md b/docs/atl/reference/ccomcoclass-class.md index 2101a31f892..c9ccbbc5100 100644 --- a/docs/atl/reference/ccomcoclass-class.md +++ b/docs/atl/reference/ccomcoclass-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["CComCoClass class", "aggregation [C++], aggregation model --- # CComCoClass Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for creating instances of a class, and obtaining its properties. ## Syntax diff --git a/docs/atl/reference/ccomcompositecontrol-class.md b/docs/atl/reference/ccomcompositecontrol-class.md index d2899ea4afc..09bdc9f10a2 100644 --- a/docs/atl/reference/ccomcompositecontrol-class.md +++ b/docs/atl/reference/ccomcompositecontrol-class.md @@ -4,10 +4,11 @@ title: "CComCompositeControl Class" ms.date: "11/04/2016" f1_keywords: ["CComCompositeControl", "ATLCTL/ATL::CComCompositeControl", "ATLCTL/ATL::CComCompositeControl::CComCompositeControl", "ATLCTL/ATL::CComCompositeControl::AdviseSinkMap", "ATLCTL/ATL::CComCompositeControl::CalcExtent", "ATLCTL/ATL::CComCompositeControl::Create", "ATLCTL/ATL::CComCompositeControl::CreateControlWindow", "ATLCTL/ATL::CComCompositeControl::SetBackgroundColorFromAmbient", "ATLCTL/ATL::CComCompositeControl::m_hbrBackground", "ATLCTL/ATL::CComCompositeControl::m_hWndFocus"] helpviewer_keywords: ["CComCompositeControl class", "composite controls, CComCompositeControl class"] -ms.assetid: 1304b931-27e8-4fbc-be8e-bb226ad887fb --- # CComCompositeControl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides the methods required to implement a composite control. > [!IMPORTANT] diff --git a/docs/atl/reference/ccomcontainedobject-class.md b/docs/atl/reference/ccomcontainedobject-class.md index 1f6f7008ce7..47a9a11db59 100644 --- a/docs/atl/reference/ccomcontainedobject-class.md +++ b/docs/atl/reference/ccomcontainedobject-class.md @@ -4,10 +4,11 @@ title: "CComContainedObject Class" ms.date: "11/04/2016" f1_keywords: ["CComContainedObject", "ATLCOM/ATL::CComContainedObject", "ATLCOM/ATL::CComContainedObject::CComContainedObject", "ATLCOM/ATL::CComContainedObject::AddRef", "ATLCOM/ATL::CComContainedObject::GetControllingUnknown", "ATLCOM/ATL::CComContainedObject::QueryInterface", "ATLCOM/ATL::CComContainedObject::Release"] helpviewer_keywords: ["aggregate objects [C++], in ATL", "aggregation [C++], ATL objects", "CComContainedObject class"] -ms.assetid: e8616b41-c200-47b8-bf2c-fb9f713ebdad --- # CComContainedObject Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements [IUnknown](/windows/win32/api/unknwn/nn-unknwn-iunknown) by delegating to the owner object's `IUnknown`. > [!IMPORTANT] diff --git a/docs/atl/reference/ccomcontrol-class.md b/docs/atl/reference/ccomcontrol-class.md index 4c3cba00c3e..ef8078200c8 100644 --- a/docs/atl/reference/ccomcontrol-class.md +++ b/docs/atl/reference/ccomcontrol-class.md @@ -4,10 +4,11 @@ title: "CComControl Class" ms.date: "11/04/2016" f1_keywords: ["CComControl", "ATLCTL/ATL::CComControl", "ATLCTL/ATL::CComControl::CComControl", "ATLCTL/ATL::CComControl::ControlQueryInterface", "ATLCTL/ATL::CComControl::CreateControlWindow", "ATLCTL/ATL::CComControl::FireOnChanged", "ATLCTL/ATL::CComControl::FireOnRequestEdit", "ATLCTL/ATL::CComControl::MessageBox"] helpviewer_keywords: ["control flags", "CComControlBase class, CComControl class", "stock properties, ATL", "CComControl class", "controls [ATL], control helper functions", "ambient properties", "controls [ATL], properties"] -ms.assetid: 55368c27-bd16-45a7-b701-edb36157c8e8 --- # CComControl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for creating and managing ATL controls. > [!IMPORTANT] diff --git a/docs/atl/reference/ccomcontrolbase-class.md b/docs/atl/reference/ccomcontrolbase-class.md index f65f6c90ee2..82c638b2f4b 100644 --- a/docs/atl/reference/ccomcontrolbase-class.md +++ b/docs/atl/reference/ccomcontrolbase-class.md @@ -4,10 +4,11 @@ title: "CComControlBase Class" ms.date: "11/04/2016" f1_keywords: ["CComControlBase", "ATLCTL/ATL::CComControlBase", "ATLCTL/ATL::CComControlBase::AppearanceType", "ATLCTL/ATL::CComControlBase::CComControlBase", "ATLCTL/ATL::CComControlBase::ControlQueryInterface", "ATLCTL/ATL::CComControlBase::DoesVerbActivate", "ATLCTL/ATL::CComControlBase::DoesVerbUIActivate", "ATLCTL/ATL::CComControlBase::DoVerbProperties", "ATLCTL/ATL::CComControlBase::FireViewChange", "ATLCTL/ATL::CComControlBase::GetAmbientAppearance", "ATLCTL/ATL::CComControlBase::GetAmbientAutoClip", "ATLCTL/ATL::CComControlBase::GetAmbientBackColor", "ATLCTL/ATL::CComControlBase::GetAmbientCharSet", "ATLCTL/ATL::CComControlBase::GetAmbientCodePage", "ATLCTL/ATL::CComControlBase::GetAmbientDisplayAsDefault", "ATLCTL/ATL::CComControlBase::GetAmbientDisplayName", "ATLCTL/ATL::CComControlBase::GetAmbientFont", "ATLCTL/ATL::CComControlBase::GetAmbientFontDisp", "ATLCTL/ATL::CComControlBase::GetAmbientForeColor", "ATLCTL/ATL::CComControlBase::GetAmbientLocaleID", "ATLCTL/ATL::CComControlBase::GetAmbientMessageReflect", "ATLCTL/ATL::CComControlBase::GetAmbientPalette", "ATLCTL/ATL::CComControlBase::GetAmbientProperty", "ATLCTL/ATL::CComControlBase::GetAmbientRightToLeft", "ATLCTL/ATL::CComControlBase::GetAmbientScaleUnits", "ATLCTL/ATL::CComControlBase::GetAmbientShowGrabHandles", "ATLCTL/ATL::CComControlBase::GetAmbientShowHatching", "ATLCTL/ATL::CComControlBase::GetAmbientSupportsMnemonics", "ATLCTL/ATL::CComControlBase::GetAmbientTextAlign", "ATLCTL/ATL::CComControlBase::GetAmbientTopToBottom", "ATLCTL/ATL::CComControlBase::GetAmbientUIDead", "ATLCTL/ATL::CComControlBase::GetAmbientUserMode", "ATLCTL/ATL::CComControlBase::GetDirty", "ATLCTL/ATL::CComControlBase::GetZoomInfo", "ATLCTL/ATL::CComControlBase::InPlaceActivate", "ATLCTL/ATL::CComControlBase::InternalGetSite", "ATLCTL/ATL::CComControlBase::OnDraw", "ATLCTL/ATL::CComControlBase::OnDrawAdvanced", "ATLCTL/ATL::CComControlBase::OnKillFocus", "ATLCTL/ATL::CComControlBase::OnMouseActivate", "ATLCTL/ATL::CComControlBase::OnPaint", "ATLCTL/ATL::CComControlBase::OnSetFocus", "ATLCTL/ATL::CComControlBase::PreTranslateAccelerator", "ATLCTL/ATL::CComControlBase::SendOnClose", "ATLCTL/ATL::CComControlBase::SendOnDataChange", "ATLCTL/ATL::CComControlBase::SendOnRename", "ATLCTL/ATL::CComControlBase::SendOnSave", "ATLCTL/ATL::CComControlBase::SendOnViewChange", "ATLCTL/ATL::CComControlBase::SetControlFocus", "ATLCTL/ATL::CComControlBase::SetDirty", "ATLCTL/ATL::CComControlBase::m_bAutoSize", "ATLCTL/ATL::CComControlBase::m_bDrawFromNatural", "ATLCTL/ATL::CComControlBase::m_bDrawGetDataInHimetric", "ATLCTL/ATL::CComControlBase::m_bInPlaceActive", "ATLCTL/ATL::CComControlBase::m_bInPlaceSiteEx", "ATLCTL/ATL::CComControlBase::m_bNegotiatedWnd", "ATLCTL/ATL::CComControlBase::m_bRecomposeOnResize", "ATLCTL/ATL::CComControlBase::m_bRequiresSave", "ATLCTL/ATL::CComControlBase::m_bResizeNatural", "ATLCTL/ATL::CComControlBase::m_bUIActive", "ATLCTL/ATL::CComControlBase::m_bUsingWindowRgn", "ATLCTL/ATL::CComControlBase::m_bWasOnceWindowless", "ATLCTL/ATL::CComControlBase::m_bWindowOnly", "ATLCTL/ATL::CComControlBase::m_bWndLess", "ATLCTL/ATL::CComControlBase::m_hWndCD", "ATLCTL/ATL::CComControlBase::m_nFreezeEvents", "ATLCTL/ATL::CComControlBase::m_rcPos", "ATLCTL/ATL::CComControlBase::m_sizeExtent", "ATLCTL/ATL::CComControlBase::m_sizeNatural", "ATLCTL/ATL::CComControlBase::m_spAdviseSink", "ATLCTL/ATL::CComControlBase::m_spAmbientDispatch", "ATLCTL/ATL::CComControlBase::m_spClientSite", "ATLCTL/ATL::CComControlBase::m_spDataAdviseHolder", "ATLCTL/ATL::CComControlBase::m_spInPlaceSite", "ATLCTL/ATL::CComControlBase::m_spOleAdviseHolder"] helpviewer_keywords: ["CComControlBase class"] -ms.assetid: 3d1bf022-acf2-4092-8283-ff8cee6332f3 --- # CComControlBase Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for creating and managing ATL controls. > [!IMPORTANT] diff --git a/docs/atl/reference/ccomcriticalsection-class.md b/docs/atl/reference/ccomcriticalsection-class.md index 7ee8d73ac54..dc63e60f1ee 100644 --- a/docs/atl/reference/ccomcriticalsection-class.md +++ b/docs/atl/reference/ccomcriticalsection-class.md @@ -4,10 +4,11 @@ title: "CComCriticalSection Class" ms.date: "11/04/2016" f1_keywords: ["CComCriticalSection", "ATLCORE/ATL::CComCriticalSection", "ATLCORE/ATL::CComCriticalSection::CComCriticalSection", "ATLCORE/ATL::CComCriticalSection::Init", "ATLCORE/ATL::CComCriticalSection::Lock", "ATLCORE/ATL::CComCriticalSection::Term", "ATLCORE/ATL::CComCriticalSection::Unlock", "ATLCORE/ATL::CComCriticalSection::m_sec"] helpviewer_keywords: ["CComCriticalSection class"] -ms.assetid: 44e1edd2-90be-4bfe-9739-58e8b419e7d1 --- # CComCriticalSection Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for obtaining and releasing ownership of a critical section object. ## Syntax diff --git a/docs/atl/reference/ccomcritseclock-class.md b/docs/atl/reference/ccomcritseclock-class.md index 726f3bc79c4..2b05e7b608c 100644 --- a/docs/atl/reference/ccomcritseclock-class.md +++ b/docs/atl/reference/ccomcritseclock-class.md @@ -4,10 +4,11 @@ title: "CComCritSecLock Class" ms.date: "11/04/2016" f1_keywords: ["CComCritSecLock", "ATLBASE/ATL::CComCritSecLock", "ATLBASE/ATL::CComCritSecLock::CComCritSecLock", "ATLBASE/ATL::CComCritSecLock::Lock", "ATLBASE/ATL::CComCritSecLock::Unlock"] helpviewer_keywords: ["CComCritSecLock class"] -ms.assetid: 223152a1-86c3-4ef9-89a7-f455fe791b0e --- # CComCritSecLock Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for locking and unlocking a critical section object. ## Syntax diff --git a/docs/atl/reference/ccomcurrency-class.md b/docs/atl/reference/ccomcurrency-class.md index cee7bfd016c..ba76d99a06d 100644 --- a/docs/atl/reference/ccomcurrency-class.md +++ b/docs/atl/reference/ccomcurrency-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["CComCurrency class"] --- # `CComCurrency` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + `CComCurrency` has methods and operators for creating and managing a `CURRENCY` object. ## Syntax diff --git a/docs/atl/reference/ccomdynamicunkarray-class.md b/docs/atl/reference/ccomdynamicunkarray-class.md index 682edba8166..f81b285a499 100644 --- a/docs/atl/reference/ccomdynamicunkarray-class.md +++ b/docs/atl/reference/ccomdynamicunkarray-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["connection points [C++], managing", "CComDynamicUnkArray --- # CComDynamicUnkArray Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class stores an array of `IUnknown` pointers. ## Syntax diff --git a/docs/atl/reference/ccomenum-class.md b/docs/atl/reference/ccomenum-class.md index 874c02b84cf..d8c54423b54 100644 --- a/docs/atl/reference/ccomenum-class.md +++ b/docs/atl/reference/ccomenum-class.md @@ -4,10 +4,11 @@ title: "CComEnum Class" ms.date: "11/04/2016" f1_keywords: ["CComEnum", "atlcom/ATL::CComEnum"] helpviewer_keywords: ["CComEnum class"] -ms.assetid: bff7dd7b-eb6e-4d6e-96ed-2706e66c8b3b --- # CComEnum Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class defines a COM enumerator object based on an array. ## Syntax diff --git a/docs/atl/reference/ccomenumimpl-class.md b/docs/atl/reference/ccomenumimpl-class.md index 904acfd49b9..221edcb1d4a 100644 --- a/docs/atl/reference/ccomenumimpl-class.md +++ b/docs/atl/reference/ccomenumimpl-class.md @@ -4,10 +4,11 @@ title: "CComEnumImpl Class" ms.date: "11/04/2016" f1_keywords: ["CComEnumImpl", "ATLCOM/ATL::CComEnumImpl", "ATLCOM/ATL::CComEnumImpl::CComEnumImpl", "ATLCOM/ATL::CComEnumImpl::Clone", "ATLCOM/ATL::CComEnumImpl::Init", "ATLCOM/ATL::CComEnumImpl::Next", "ATLCOM/ATL::CComEnumImpl::Reset", "ATLCOM/ATL::CComEnumImpl::Skip", "ATLCOM/ATL::CComEnumImpl::m_begin", "ATLCOM/ATL::CComEnumImpl::m_dwFlags", "ATLCOM/ATL::CComEnumImpl::m_end", "ATLCOM/ATL::CComEnumImpl::m_iter", "ATLCOM/ATL::CComEnumImpl::m_spUnk"] helpviewer_keywords: ["CComEnumImpl class"] -ms.assetid: cc0d8e76-e608-46db-87cd-4c7161fe32d2 --- # CComEnumImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides the implementation for a COM enumerator interface where the items being enumerated are stored in an array. ## Syntax diff --git a/docs/atl/reference/ccomenumonstl-class.md b/docs/atl/reference/ccomenumonstl-class.md index 7ab682b5062..9d581e4f87c 100644 --- a/docs/atl/reference/ccomenumonstl-class.md +++ b/docs/atl/reference/ccomenumonstl-class.md @@ -4,10 +4,11 @@ title: "CComEnumOnSTL Class" ms.date: "11/04/2016" f1_keywords: ["CComEnumOnSTL", "atlcom/ATL::CComEnumOnSTL"] helpviewer_keywords: ["CComEnumOnSTL class"] -ms.assetid: befe1a44-7a00-4f28-9a2e-cc0fa526643c --- # CComEnumOnSTL Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class defines a COM enumerator object based on a C++ Standard Library collection. ## Syntax diff --git a/docs/atl/reference/ccomfakecriticalsection-class.md b/docs/atl/reference/ccomfakecriticalsection-class.md index 087bc175ffb..9d146470b88 100644 --- a/docs/atl/reference/ccomfakecriticalsection-class.md +++ b/docs/atl/reference/ccomfakecriticalsection-class.md @@ -4,10 +4,11 @@ title: "CComFakeCriticalSection Class" ms.date: "11/04/2016" f1_keywords: ["CComFakeCriticalSection", "ATLCORE/ATL::CComFakeCriticalSection", "ATLCORE/ATL::CComFakeCriticalSection::Init", "ATLCORE/ATL::CComFakeCriticalSection::Lock", "ATLCORE/ATL::CComFakeCriticalSection::Term", "ATLCORE/ATL::CComFakeCriticalSection::Unlock"] helpviewer_keywords: ["CComFakeCriticalSection class"] -ms.assetid: a4811b97-96bb-493b-ab9f-62822aeddb10 --- # CComFakeCriticalSection Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides the same methods as [CComCriticalSection](../../atl/reference/ccomcriticalsection-class.md) but does not provide a critical section. ## Syntax diff --git a/docs/atl/reference/ccomgitptr-class.md b/docs/atl/reference/ccomgitptr-class.md index 1cc42d0b166..e2478fd7faf 100644 --- a/docs/atl/reference/ccomgitptr-class.md +++ b/docs/atl/reference/ccomgitptr-class.md @@ -4,10 +4,11 @@ title: "CComGITPtr Class" ms.date: "11/04/2016" f1_keywords: ["CComGITPtr", "ATLBASE/ATL::CComGITPtr", "ATLBASE/ATL::CComGITPtr::CComGITPtr", "ATLBASE/ATL::CComGITPtr::Attach", "ATLBASE/ATL::CComGITPtr::CopyTo", "ATLBASE/ATL::CComGITPtr::Detach", "ATLBASE/ATL::CComGITPtr::GetCookie", "ATLBASE/ATL::CComGITPtr::Revoke", "ATLBASE/ATL::CComGITPtr::m_dwCookie"] helpviewer_keywords: ["CComGITPtr class"] -ms.assetid: af895acb-525a-4555-bb67-b241b7df515b --- # CComGITPtr Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for dealing with interface pointers and the global interface table (GIT). ## Syntax diff --git a/docs/atl/reference/ccomheap-class.md b/docs/atl/reference/ccomheap-class.md index f561ecf30de..f4446ee0ef4 100644 --- a/docs/atl/reference/ccomheap-class.md +++ b/docs/atl/reference/ccomheap-class.md @@ -4,10 +4,11 @@ title: "CComHeap Class" ms.date: "11/04/2016" f1_keywords: ["CComHeap", "ATLCOMMEM/ATL::CComHeap", "ATLCOMMEM/ATL::CComHeap::Allocate", "ATLCOMMEM/ATL::CComHeap::Free", "ATLCOMMEM/ATL::CComHeap::GetSize", "ATLCOMMEM/ATL::CComHeap::Reallocate"] helpviewer_keywords: ["CComHeap class"] -ms.assetid: c74183ce-98ae-46fb-b186-93ea4cf0222b --- # `CComHeap` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements [`IAtlMemMgr`](../../atl/reference/iatlmemmgr-class.md) using the COM memory allocation functions. > [!IMPORTANT] diff --git a/docs/atl/reference/ccomheapptr-class.md b/docs/atl/reference/ccomheapptr-class.md index 0edb83160e8..16767755ff6 100644 --- a/docs/atl/reference/ccomheapptr-class.md +++ b/docs/atl/reference/ccomheapptr-class.md @@ -4,10 +4,11 @@ title: "CComHeapPtr Class" ms.date: "11/04/2016" f1_keywords: ["CComHeapPtr", "ATLBASE/ATL::CComHeapPtr", "ATLBASE/ATL::CComHeapPtr::CComHeapPtr"] helpviewer_keywords: ["CComHeapPtr class"] -ms.assetid: bd08b53d-da2b-43ab-a79c-e7c8dbbc5994 --- # CComHeapPtr Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + A smart pointer class for managing heap pointers. ## Syntax diff --git a/docs/atl/reference/ccommodule-class.md b/docs/atl/reference/ccommodule-class.md index eb17faf3c4e..0d8c58b4f6f 100644 --- a/docs/atl/reference/ccommodule-class.md +++ b/docs/atl/reference/ccommodule-class.md @@ -4,10 +4,11 @@ title: "CComModule Class" ms.date: "08/19/2019" f1_keywords: ["CComModule", "ATLBASE/ATL::CComModule", "ATLBASE/ATL::CComModule::GetClassObject", "ATLBASE/ATL::CComModule::GetModuleInstance", "ATLBASE/ATL::CComModule::GetResourceInstance", "ATLBASE/ATL::CComModule::GetTypeLibInstance", "ATLBASE/ATL::CComModule::Init", "ATLBASE/ATL::CComModule::RegisterClassHelper", "ATLBASE/ATL::CComModule::RegisterClassObjects", "ATLBASE/ATL::CComModule::RegisterServer", "ATLBASE/ATL::CComModule::RegisterTypeLib", "ATLBASE/ATL::CComModule::RevokeClassObjects", "ATLBASE/ATL::CComModule::Term", "ATLBASE/ATL::CComModule::UnregisterClassHelper", "ATLBASE/ATL::CComModule::UnregisterServer", "ATLBASE/ATL::CComModule::UpdateRegistryClass", "ATLBASE/ATL::CComModule::UpdateRegistryFromResourceD", "ATLBASE/ATL::CComModule::UpdateRegistryFromResourceS", "ATLBASE/ATL::CComModule::m_csObjMap", "ATLBASE/ATL::CComModule::m_csTypeInfoHolder", "ATLBASE/ATL::CComModule::m_csWindowCreate", "ATLBASE/ATL::CComModule::m_hInst", "ATLBASE/ATL::CComModule::m_hInstResource", "ATLBASE/ATL::CComModule::m_hInstTypeLib", "ATLBASE/ATL::CComModule::m_pObjMap"] helpviewer_keywords: ["CComModule class", "DLL modules [C++], ATL"] -ms.assetid: f5face2c-8fd8-40e6-9ec3-54ab74701769 --- # CComModule Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + As of ATL 7.0, `CComModule` is deprecated: see [ATL Module Classes](../../atl/atl-module-classes.md) for more details. > [!IMPORTANT] diff --git a/docs/atl/reference/ccommultithreadmodel-class.md b/docs/atl/reference/ccommultithreadmodel-class.md index 651aa91f662..56e99deb92b 100644 --- a/docs/atl/reference/ccommultithreadmodel-class.md +++ b/docs/atl/reference/ccommultithreadmodel-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["ATL, multithreading", "CComMultiThreadModel class", "thre --- # CComMultiThreadModel Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + `CComMultiThreadModel` provides thread-safe methods for incrementing and decrementing the value of a variable. ## Syntax diff --git a/docs/atl/reference/ccommultithreadmodelnocs-class.md b/docs/atl/reference/ccommultithreadmodelnocs-class.md index 9a116848eab..b5af9c08403 100644 --- a/docs/atl/reference/ccommultithreadmodelnocs-class.md +++ b/docs/atl/reference/ccommultithreadmodelnocs-class.md @@ -4,10 +4,11 @@ title: "CComMultiThreadModelNoCS Class" ms.date: "11/04/2016" f1_keywords: ["CComMultiThreadModelNoCS", "ATLBASE/ATL::CComMultiThreadModelNoCS", "ATLBASE/ATL::CComMultiThreadModelNoCS::AutoCriticalSection", "ATLBASE/ATL::CComMultiThreadModelNoCS::CriticalSection", "ATLBASE/ATL::CComMultiThreadModelNoCS::ThreadModelNoCS", "ATLBASE/ATL::CComMultiThreadModelNoCS::Decrement", "ATLBASE/ATL::CComMultiThreadModelNoCS::Increment"] helpviewer_keywords: ["ATL, multithreading", "CComMultiThreadModelNoCS class", "threading [ATL]"] -ms.assetid: 2b3f7a45-fd72-452c-aaf3-ccdaa621c821 --- # CComMultiThreadModelNoCS Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + `CComMultiThreadModelNoCS` provides thread-safe methods for incrementing and decrementing the value of a variable, without critical section locking or unlocking functionality. ## Syntax diff --git a/docs/atl/reference/ccomobject-class.md b/docs/atl/reference/ccomobject-class.md index 940285715a1..9e209ec6239 100644 --- a/docs/atl/reference/ccomobject-class.md +++ b/docs/atl/reference/ccomobject-class.md @@ -4,10 +4,11 @@ title: "CComObject Class" ms.date: "11/04/2016" f1_keywords: ["CComObject", "ATLCOM/ATL::CComObject", "ATLCOM/ATL::CComObject::CComObject", "ATLCOM/ATL::CComObject::AddRef", "ATLCOM/ATL::CComObject::CreateInstance", "ATLCOM/ATL::CComObject::QueryInterface", "ATLCOM/ATL::CComObject::Release"] helpviewer_keywords: ["CComObject class"] -ms.assetid: e2b6433b-6349-4749-b4bc-acbd7a22c8b0 --- # CComObject Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` for a nonaggregated object. ## Syntax diff --git a/docs/atl/reference/ccomobjectglobal-class.md b/docs/atl/reference/ccomobjectglobal-class.md index 14afcb2e9d4..345291d1d39 100644 --- a/docs/atl/reference/ccomobjectglobal-class.md +++ b/docs/atl/reference/ccomobjectglobal-class.md @@ -4,10 +4,11 @@ title: "CComObjectGlobal Class" ms.date: "11/04/2016" f1_keywords: ["CComObjectGlobal", "ATLCOM/ATL::CComObjectGlobal", "ATLCOM/ATL::CComObjectGlobal::CComObjectGlobal", "ATLCOM/ATL::CComObjectGlobal::AddRef", "ATLCOM/ATL::CComObjectGlobal::QueryInterface", "ATLCOM/ATL::CComObjectGlobal::Release", "ATLCOM/ATL::CComObjectGlobal::m_hResFinalConstruct"] helpviewer_keywords: ["CComObjectGlobal class"] -ms.assetid: 79bdee55-66e4-4536-b5b3-bdf09f78b9a6 --- # CComObjectGlobal Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class manages a reference count on the module containing your `Base` object. ## Syntax diff --git a/docs/atl/reference/ccomobjectnolock-class.md b/docs/atl/reference/ccomobjectnolock-class.md index e98933f3641..91009986913 100644 --- a/docs/atl/reference/ccomobjectnolock-class.md +++ b/docs/atl/reference/ccomobjectnolock-class.md @@ -4,10 +4,11 @@ title: "CComObjectNoLock Class" ms.date: "11/04/2016" f1_keywords: ["CComObjectNoLock", "ATLCOM/ATL::CComObjectNoLock", "ATLCOM/ATL::CComObjectNoLock::CComObjectNoLock", "ATLCOM/ATL::CComObjectNoLock::AddRef", "ATLCOM/ATL::CComObjectNoLock::QueryInterface", "ATLCOM/ATL::CComObjectNoLock::Release"] helpviewer_keywords: ["CComObjectNoLock class"] -ms.assetid: 288c6506-7da8-4127-8d58-7f4bd779539a --- # CComObjectNoLock Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` for a nonaggregated object, but does not increment the module lock count in the constructor. ## Syntax diff --git a/docs/atl/reference/ccomobjectroot-class.md b/docs/atl/reference/ccomobjectroot-class.md index 5a34267e8d9..e12f04a372f 100644 --- a/docs/atl/reference/ccomobjectroot-class.md +++ b/docs/atl/reference/ccomobjectroot-class.md @@ -4,10 +4,11 @@ title: "CComObjectRoot Class" ms.date: "11/04/2016" f1_keywords: ["CComObjectRoot", "atlcom/ATL::CComObjectRoot"] helpviewer_keywords: ["CComObjectRoot class"] -ms.assetid: f8797c38-6e73-4f67-85c2-71654cffa8eb --- # CComObjectRoot Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This typedef of [CComObjectRootEx](../../atl/reference/ccomobjectrootex-class.md) is templatized on the default threading model of the server. ## Syntax diff --git a/docs/atl/reference/ccomobjectrootex-class.md b/docs/atl/reference/ccomobjectrootex-class.md index d28e79d4906..4b7181dd07d 100644 --- a/docs/atl/reference/ccomobjectrootex-class.md +++ b/docs/atl/reference/ccomobjectrootex-class.md @@ -4,10 +4,11 @@ title: "CComObjectRootEx Class" ms.date: "11/04/2016" f1_keywords: ["CComObjectRootEx", "ATLCOM/ATL::CComObjectRootEx", "ATLCOM/ATL::InternalAddRef", "ATLCOM/ATL::InternalRelease", "ATLCOM/ATL::Lock", "ATLCOM/ATL::Unlock", "ATLCOM/ATL::FinalConstruct", "ATLCOM/ATL::FinalRelease", "ATLCOM/ATL::OuterAddRef", "ATLCOM/ATL::OuterQueryInterface", "ATLCOM/ATL::OuterRelease", "ATLCOM/ATL::InternalQueryInterface", "ATLCOM/ATL::ObjectMain", "ATLCOM/ATL::m_dwRef", "ATLCOM/ATL::m_pOuterUnknown"] helpviewer_keywords: ["reference counting"] -ms.assetid: 894a3d7c-2daf-4fd0-8fa4-e6a05bcfb631 --- # CComObjectRootEx Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods to handle object reference count management for both nonaggregated and aggregated objects. ## Syntax diff --git a/docs/atl/reference/ccomobjectstack-class.md b/docs/atl/reference/ccomobjectstack-class.md index 946beb5b66c..3e109aa93a3 100644 --- a/docs/atl/reference/ccomobjectstack-class.md +++ b/docs/atl/reference/ccomobjectstack-class.md @@ -4,10 +4,11 @@ title: "CComObjectStack Class" ms.date: "11/04/2016" f1_keywords: ["CComObjectStack", "ATLCOM/ATL::CComObjectStack", "ATLCOM/ATL::CComObjectStack::CComObjectStack", "ATLCOM/ATL::CComObjectStack::AddRef", "ATLCOM/ATL::CComObjectStack::QueryInterface", "ATLCOM/ATL::CComObjectStack::Release", "ATLCOM/ATL::CComObjectStack::m_hResFinalConstruct"] helpviewer_keywords: ["CComObjectStack class"] -ms.assetid: 3da72c40-c834-45f6-bb76-6ac204028d80 --- # CComObjectStack Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class creates a temporary COM object and provides it with a skeletal implementation of `IUnknown`. ## Syntax diff --git a/docs/atl/reference/ccompolyobject-class.md b/docs/atl/reference/ccompolyobject-class.md index d3632a52837..42991caee8d 100644 --- a/docs/atl/reference/ccompolyobject-class.md +++ b/docs/atl/reference/ccompolyobject-class.md @@ -4,10 +4,11 @@ title: "CComPolyObject Class" ms.date: "11/04/2016" f1_keywords: ["CComPolyObject", "ATLCOM/ATL::CComPolyObject", "ATLCOM/ATL::CComPolyObject::CComPolyObject", "ATLCOM/ATL::CComPolyObject::AddRef", "ATLCOM/ATL::CComPolyObject::CreateInstance", "ATLCOM/ATL::CComPolyObject::FinalConstruct", "ATLCOM/ATL::CComPolyObject::FinalRelease", "ATLCOM/ATL::CComPolyObject::QueryInterface", "ATLCOM/ATL::CComPolyObject::Release", "ATLCOM/ATL::CComPolyObject::m_contained"] helpviewer_keywords: ["aggregate objects [C++], in ATL", "aggregation [C++], ATL objects", "CComPolyObject class"] -ms.assetid: eaf67c18-e855-48ca-9b15-f1df3106121b --- # CComPolyObject Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` for an aggregated or nonaggregated object. ## Syntax diff --git a/docs/atl/reference/ccomptr-class.md b/docs/atl/reference/ccomptr-class.md index 6ccf6090383..9be4578c843 100644 --- a/docs/atl/reference/ccomptr-class.md +++ b/docs/atl/reference/ccomptr-class.md @@ -4,10 +4,11 @@ description: "Reference guide to the Microsoft C++ Active Template Library (ATL) ms.date: "02/07/2020" f1_keywords: ["CComPtr", "ATLBASE/ATL::CComPtr", "ATLBASE/ATL::CComPtr::CComPtr"] helpviewer_keywords: ["CComPtr class"] -ms.assetid: 22d9ea8d-ed66-4c34-940f-141db11e83bd --- # `CComPtr` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + A smart pointer class for managing COM interface pointers. ## Syntax diff --git a/docs/atl/reference/ccomptrbase-class.md b/docs/atl/reference/ccomptrbase-class.md index c2363d848e2..c1653b2a447 100644 --- a/docs/atl/reference/ccomptrbase-class.md +++ b/docs/atl/reference/ccomptrbase-class.md @@ -4,10 +4,11 @@ title: "CComPtrBase Class" ms.date: "11/04/2016" f1_keywords: ["CComPtrBase", "ATLCOMCLI/ATL::CComPtrBase", "ATLCOMCLI/ATL::CComPtrBase::Advise", "ATLCOMCLI/ATL::CComPtrBase::Attach", "ATLCOMCLI/ATL::CComPtrBase::CoCreateInstance", "ATLCOMCLI/ATL::CComPtrBase::CopyTo", "ATLCOMCLI/ATL::CComPtrBase::Detach", "ATLCOMCLI/ATL::CComPtrBase::IsEqualObject", "ATLCOMCLI/ATL::CComPtrBase::QueryInterface", "ATLCOMCLI/ATL::CComPtrBase::Release", "ATLCOMCLI/ATL::CComPtrBase::SetSite", "ATLCOMCLI/ATL::CComPtrBase::p"] helpviewer_keywords: ["CComPtrBase class"] -ms.assetid: 6dbe9543-dee8-4a97-b02f-dd3a25f4a1a0 --- # `CComPtrBase` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides a basis for smart pointer classes using COM-based memory routines. ## Syntax diff --git a/docs/atl/reference/ccomqiptr-class.md b/docs/atl/reference/ccomqiptr-class.md index 03490efe16e..23c87d54f7e 100644 --- a/docs/atl/reference/ccomqiptr-class.md +++ b/docs/atl/reference/ccomqiptr-class.md @@ -4,10 +4,11 @@ title: "CComQIPtr Class" ms.date: "11/04/2016" f1_keywords: ["CComQIPtr", "ATLCOMCLI/ATL::CComQIPtr", "ATLCOMCLI/ATL::CComQIPtr::CComQIPtr"] helpviewer_keywords: ["CComQIPtr class"] -ms.assetid: 969cacb5-05b6-4af4-b683-24911d70242d --- # CComQIPtr Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + A smart pointer class for managing COM interface pointers. ## Syntax diff --git a/docs/atl/reference/ccomqiptrelementtraits-class.md b/docs/atl/reference/ccomqiptrelementtraits-class.md index c81c56e55e6..9d739a9404c 100644 --- a/docs/atl/reference/ccomqiptrelementtraits-class.md +++ b/docs/atl/reference/ccomqiptrelementtraits-class.md @@ -4,10 +4,11 @@ title: "CComQIPtrElementTraits Class" ms.date: "11/04/2016" f1_keywords: ["CComQIPtrElementTraits", "ATLCOLL/ATL::CComQIPtrElementTraits", "ATLCOLL/ATL::CComQIPtrElementTraits::INARGTYPE"] helpviewer_keywords: ["CComQIPtrElementTraits class"] -ms.assetid: 9df9250a-5413-4362-b133-332932a597c4 --- # CComQIPtrElementTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods, static functions, and typedefs useful when creating collections of COM interface pointers. ## Syntax diff --git a/docs/atl/reference/ccomsafearray-class.md b/docs/atl/reference/ccomsafearray-class.md index d9c6729e915..e8b65490485 100644 --- a/docs/atl/reference/ccomsafearray-class.md +++ b/docs/atl/reference/ccomsafearray-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["CComSafeArray class"] --- # `CComSafeArray` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a wrapper for the `SAFEARRAY` structure. ## Syntax diff --git a/docs/atl/reference/ccomsafearraybound-class.md b/docs/atl/reference/ccomsafearraybound-class.md index fa65d7b399d..2d1ea111408 100644 --- a/docs/atl/reference/ccomsafearraybound-class.md +++ b/docs/atl/reference/ccomsafearraybound-class.md @@ -4,10 +4,11 @@ title: "CComSafeArrayBound Class" ms.date: "05/06/2019" f1_keywords: ["CComSafeArrayBound", "ATLSAFE/ATL::CComSafeArrayBound", "ATLSAFE/ATL::GetCount", "ATLSAFE/ATL::GetLowerBound", "ATLSAFE/ATL::GetUpperBound", "ATLSAFE/ATL::SetCount", "ATLSAFE/ATL::SetLowerBound"] helpviewer_keywords: ["CComSafeArrayBound class"] -ms.assetid: dd6299db-5f84-4630-bbf0-f5add5318437 --- # CComSafeArrayBound Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a wrapper for a [SAFEARRAYBOUND](/windows/win32/api/oaidl/ns-oaidl-safearraybound) structure. ## Syntax diff --git a/docs/atl/reference/ccomsafedeletecriticalsection-class.md b/docs/atl/reference/ccomsafedeletecriticalsection-class.md index 1ece1377c38..c4e8ec088ea 100644 --- a/docs/atl/reference/ccomsafedeletecriticalsection-class.md +++ b/docs/atl/reference/ccomsafedeletecriticalsection-class.md @@ -4,10 +4,11 @@ title: "CComSafeDeleteCriticalSection Class" ms.date: "11/04/2016" f1_keywords: ["CComSafeDeleteCriticalSection", "ATLCORE/ATL::CComSafeDeleteCriticalSection", "ATLCORE/ATL::CComSafeDeleteCriticalSection::CComSafeDeleteCriticalSection", "ATLCORE/ATL::CComSafeDeleteCriticalSection::Init", "ATLCORE/ATL::CComSafeDeleteCriticalSection::Lock", "ATLCORE/ATL::CComSafeDeleteCriticalSection::Term", "ATLCORE/ATL::m_bInitialized"] helpviewer_keywords: ["CComSafeDeleteCriticalSection class"] -ms.assetid: 4d2932c4-ba8f-48ec-8664-1db8bed01314 --- # CComSafeDeleteCriticalSection Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for obtaining and releasing ownership of a critical section object. ## Syntax diff --git a/docs/atl/reference/ccomsimplethreadallocator-class.md b/docs/atl/reference/ccomsimplethreadallocator-class.md index 3ba04a9ad2d..1d3b4a19f4b 100644 --- a/docs/atl/reference/ccomsimplethreadallocator-class.md +++ b/docs/atl/reference/ccomsimplethreadallocator-class.md @@ -4,10 +4,11 @@ title: "CComSimpleThreadAllocator Class" ms.date: "11/04/2016" f1_keywords: ["CComSimpleThreadAllocator", "ATLBASE/ATL::CComSimpleThreadAllocator", "ATLBASE/ATL::CComSimpleThreadAllocator::GetThread"] helpviewer_keywords: ["threading [ATL], selecting threads", "ATL threads", "CComSimpleThreadAllocator class", "ATL threads, allocating"] -ms.assetid: 66b2166a-8c50-49fd-b8e4-7f293470327d --- # CComSimpleThreadAllocator Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class manages thread selection for the class `CComAutoThreadModule`. ## Syntax diff --git a/docs/atl/reference/ccomsinglethreadmodel-class.md b/docs/atl/reference/ccomsinglethreadmodel-class.md index 1fdb2f95db5..d81455f0ca3 100644 --- a/docs/atl/reference/ccomsinglethreadmodel-class.md +++ b/docs/atl/reference/ccomsinglethreadmodel-class.md @@ -4,10 +4,11 @@ title: "CComSingleThreadModel Class" ms.date: "2/29/2020" f1_keywords: ["CComSingleThreadModel", "ATLBASE/ATL::CComSingleThreadModel", "ATLBASE/ATL::CComSingleThreadModel::AutoCriticalSection", "ATLBASE/ATL::CComSingleThreadModel::CriticalSection", "ATLBASE/ATL::CComSingleThreadModel::ThreadModelNoCS", "ATLBASE/ATL::CComSingleThreadModel::Decrement", "ATLBASE/ATL::CComSingleThreadModel::Increment"] helpviewer_keywords: ["single-threaded applications", "CComSingleThreadModel class", "single-threaded applications, ATL"] -ms.assetid: e5dc30c7-405a-4ba4-8ae9-51937243fce8 --- # CComSingleThreadModel Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for incrementing and decrementing the value of a variable. ## Syntax diff --git a/docs/atl/reference/ccomtearoffobject-class.md b/docs/atl/reference/ccomtearoffobject-class.md index 42f6daf5171..a1813b71e2d 100644 --- a/docs/atl/reference/ccomtearoffobject-class.md +++ b/docs/atl/reference/ccomtearoffobject-class.md @@ -4,10 +4,11 @@ title: "CComTearOffObject Class" ms.date: "11/04/2016" f1_keywords: ["CComTearOffObject", "ATLCOM/ATL::CComTearOffObject", "ATLCOM/ATL::CComTearOffObject::CComTearOffObject", "ATLCOM/ATL::CComTearOffObject::AddRef", "ATLCOM/ATL::CComTearOffObject::QueryInterface", "ATLCOM/ATL::CComTearOffObject::Release", "ATLCOM/ATL::CComTearOffObjectBase", "ATLCOM/ATL::m_pOwner"] helpviewer_keywords: ["tear-off interfaces, ATL", "tear-off interfaces", "CComTearOffObject class"] -ms.assetid: d974b598-c6b2-42b1-8360-9190d9d0fbf3 --- # CComTearOffObject Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements a tear-off interface. ## Syntax diff --git a/docs/atl/reference/ccomunkarray-class.md b/docs/atl/reference/ccomunkarray-class.md index dcdc5ecd76d..2232eea84ef 100644 --- a/docs/atl/reference/ccomunkarray-class.md +++ b/docs/atl/reference/ccomunkarray-class.md @@ -4,10 +4,11 @@ title: "CComUnkArray Class" ms.date: "11/04/2016" f1_keywords: ["CComUnkArray", "ATLCOM/ATL::CComUnkArray", "ATLCOM/ATL::CComUnkArray::CComUnkArray", "ATLCOM/ATL::CComUnkArray::Add", "ATLCOM/ATL::CComUnkArray::begin", "ATLCOM/ATL::CComUnkArray::end", "ATLCOM/ATL::CComUnkArray::GetCookie", "ATLCOM/ATL::CComUnkArray::GetUnknown", "ATLCOM/ATL::CComUnkArray::Remove"] helpviewer_keywords: ["connection points [C++], managing", "CComUnkArray class"] -ms.assetid: 5fd4b378-a7b5-4cc1-8866-8ab72a73639e --- # CComUnkArray Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class stores `IUnknown` pointers, and is designed to be used as a parameter to the [IConnectionPointImpl](../../atl/reference/iconnectionpointimpl-class.md) template class. ## Syntax diff --git a/docs/atl/reference/ccomvariant-class.md b/docs/atl/reference/ccomvariant-class.md index e3b806e113a..b7387eaed95 100644 --- a/docs/atl/reference/ccomvariant-class.md +++ b/docs/atl/reference/ccomvariant-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["VARIANT macro", "CComVariant class", "VARIANT macro, ATL" --- # `CComVariant` class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class wraps the `VARIANT` type, providing a member indicating the type of data stored. ## Syntax diff --git a/docs/atl/reference/ccontainedwindowt-class.md b/docs/atl/reference/ccontainedwindowt-class.md index 92e55f8f39c..a3bd317fda7 100644 --- a/docs/atl/reference/ccontainedwindowt-class.md +++ b/docs/atl/reference/ccontainedwindowt-class.md @@ -4,10 +4,11 @@ title: "CContainedWindowT Class" ms.date: "11/04/2016" f1_keywords: ["CContainedWindowT", "ATLWIN/ATL::CContainedWindowT", "ATLWIN/ATL::CContainedWindowT::CContainedWindowT", "ATLWIN/ATL::CContainedWindowT::Create", "ATLWIN/ATL::CContainedWindowT::DefWindowProc", "ATLWIN/ATL::CContainedWindowT::GetCurrentMessage", "ATLWIN/ATL::CContainedWindowT::RegisterWndSuperclass", "ATLWIN/ATL::CContainedWindowT::SubclassWindow", "ATLWIN/ATL::CContainedWindowT::SwitchMessageMap", "ATLWIN/ATL::CContainedWindowT::UnsubclassWindow", "ATLWIN/ATL::CContainedWindowT::WindowProc", "ATLWIN/ATL::CContainedWindowT::m_dwMsgMapID", "ATLWIN/ATL::CContainedWindowT::m_lpszClassName", "ATLWIN/ATL::CContainedWindowT::m_pfnSuperWindowProc", "ATLWIN/ATL::CContainedWindowT::m_pObject"] helpviewer_keywords: ["CContainedWindow class", "contained windows", "CContainedWindowT class"] -ms.assetid: cde0ca36-9347-4068-995a-d294dae57ca9 --- # CContainedWindowT Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements a window contained within another object. > [!IMPORTANT] diff --git a/docs/atl/reference/ccrtallocator-class.md b/docs/atl/reference/ccrtallocator-class.md index 782c70f47f4..6df2c1e8ef6 100644 --- a/docs/atl/reference/ccrtallocator-class.md +++ b/docs/atl/reference/ccrtallocator-class.md @@ -4,10 +4,11 @@ title: "CCRTAllocator Class" ms.date: "11/04/2016" f1_keywords: ["CCRTAllocator", "ATLCORE/ATL::CCRTAllocator", "ATLCORE/ATL::CCRTAllocator::Allocate", "ATLCORE/ATL::CCRTAllocator::Free", "ATLCORE/ATL::CCRTAllocator::Reallocate"] helpviewer_keywords: ["CCRTAllocator class"] -ms.assetid: 3e1b8cb0-859a-41ab-8e93-6f0b5ceca49d --- # CCRTAllocator Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for managing memory using CRT memory routines. ## Syntax diff --git a/docs/atl/reference/ccrtheap-class.md b/docs/atl/reference/ccrtheap-class.md index 2c032d979d5..e1437bf729f 100644 --- a/docs/atl/reference/ccrtheap-class.md +++ b/docs/atl/reference/ccrtheap-class.md @@ -4,10 +4,11 @@ title: "CCRTHeap Class" ms.date: "11/04/2016" f1_keywords: ["CCRTHeap", "ATLMEM/ATL::CCRTHeap", "ATLMEM/ATL::CCRTHeap::Allocate", "ATLMEM/ATL::CCRTHeap::Free", "ATLMEM/ATL::CCRTHeap::GetSize", "ATLMEM/ATL::CCRTHeap::Reallocate"] helpviewer_keywords: ["CCRTHeap class"] -ms.assetid: 321bd6c5-1856-4ff7-8590-95044a1209f7 --- # CCRTHeap Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements [IAtlMemMgr](../../atl/reference/iatlmemmgr-class.md) using the CRT heap functions. ## Syntax diff --git a/docs/atl/reference/cdacl-class.md b/docs/atl/reference/cdacl-class.md index dcd93c40d51..d3efde58ccc 100644 --- a/docs/atl/reference/cdacl-class.md +++ b/docs/atl/reference/cdacl-class.md @@ -4,10 +4,11 @@ title: "CDacl Class" ms.date: "11/04/2016" f1_keywords: ["CDacl", "ATLSECURITY/ATL::CDacl", "ATLSECURITY/ATL::CDacl::CDacl", "ATLSECURITY/ATL::CDacl::AddAllowedAce", "ATLSECURITY/ATL::CDacl::AddDeniedAce", "ATLSECURITY/ATL::CDacl::GetAceCount", "ATLSECURITY/ATL::CDacl::RemoveAce", "ATLSECURITY/ATL::CDacl::RemoveAllAces"] helpviewer_keywords: ["CDacl class"] -ms.assetid: 2dc76616-6362-4967-b6cf-e2d39ca37ddd --- # CDacl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a wrapper for a DACL (discretionary access-control list) structure. > [!IMPORTANT] diff --git a/docs/atl/reference/cdebugreporthook-class.md b/docs/atl/reference/cdebugreporthook-class.md index a525a352572..5226a4b5a71 100644 --- a/docs/atl/reference/cdebugreporthook-class.md +++ b/docs/atl/reference/cdebugreporthook-class.md @@ -4,10 +4,11 @@ title: "CDebugReportHook Class" ms.date: "11/04/2016" f1_keywords: ["CDebugReportHook", "ATLUTIL/ATL::CDebugReportHook", "ATLUTIL/ATL::CDebugReportHook::CDebugReportHook", "ATLUTIL/ATL::CDebugReportHook::CDebugReportHookProc", "ATLUTIL/ATL::CDebugReportHook::RemoveHook", "ATLUTIL/ATL::CDebugReportHook::SetHook", "ATLUTIL/ATL::CDebugReportHook::SetPipeName", "ATLUTIL/ATL::CDebugReportHook::SetTimeout"] helpviewer_keywords: ["CDebugReportHook class"] -ms.assetid: 798076c3-6e63-4286-83b8-aa1bbcd0c20c --- # CDebugReportHook Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Use this class to send debug reports to a named pipe. ## Syntax diff --git a/docs/atl/reference/cdefaultchartraits-class.md b/docs/atl/reference/cdefaultchartraits-class.md index 6d941499c6e..af31367ac79 100644 --- a/docs/atl/reference/cdefaultchartraits-class.md +++ b/docs/atl/reference/cdefaultchartraits-class.md @@ -4,10 +4,11 @@ title: "CDefaultCharTraits Class" ms.date: "11/04/2016" f1_keywords: ["CDefaultCharTraits", "ATLCOLL/ATL::CDefaultCharTraits", "ATLCOLL/ATL::CDefaultCharTraits::CharToLower", "ATLCOLL/ATL::CDefaultCharTraits::CharToUpper"] helpviewer_keywords: ["CDefaultCharTraits class"] -ms.assetid: f94a3934-597f-401d-8513-ed6924ae069a --- # CDefaultCharTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides two static functions for converting characters between uppercase and lowercase. ## Syntax diff --git a/docs/atl/reference/cdefaultcomparetraits-class.md b/docs/atl/reference/cdefaultcomparetraits-class.md index ba680d50619..214e82b226e 100644 --- a/docs/atl/reference/cdefaultcomparetraits-class.md +++ b/docs/atl/reference/cdefaultcomparetraits-class.md @@ -4,10 +4,11 @@ title: "CDefaultCompareTraits Class" ms.date: "11/04/2016" f1_keywords: ["CDefaultCompareTraits", "ATLCOLL/ATL::CDefaultCompareTraits", "ATLCOLL/ATL::CDefaultCompareTraits::CompareElements", "ATLCOLL/ATL::CDefaultCompareTraits::CompareElementsOrdered"] helpviewer_keywords: ["CDefaultCompareTraits class"] -ms.assetid: a17e2740-e7b4-48f2-aeb7-c80ce84b63f7 --- # CDefaultCompareTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides default element comparison functions. ## Syntax diff --git a/docs/atl/reference/cdefaultelementtraits-class.md b/docs/atl/reference/cdefaultelementtraits-class.md index ee35bca2b36..7f33e07d8f3 100644 --- a/docs/atl/reference/cdefaultelementtraits-class.md +++ b/docs/atl/reference/cdefaultelementtraits-class.md @@ -4,10 +4,11 @@ title: "CDefaultElementTraits Class" ms.date: "11/04/2016" f1_keywords: ["CDefaultElementTraits", "atlcoll/ATL::CDefaultElementTraits"] helpviewer_keywords: ["CDefaultElementTraits class"] -ms.assetid: ac5ee610-7957-4b7c-92b6-38ff72e4118e --- # CDefaultElementTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides default methods and functions for a collection class. ## Syntax diff --git a/docs/atl/reference/cdefaulthashtraits-class.md b/docs/atl/reference/cdefaulthashtraits-class.md index 8c626840a95..562b6da25a7 100644 --- a/docs/atl/reference/cdefaulthashtraits-class.md +++ b/docs/atl/reference/cdefaulthashtraits-class.md @@ -4,10 +4,11 @@ title: "CDefaultHashTraits Class" ms.date: "11/04/2016" f1_keywords: ["CDefaultHashTraits", "ATLCOLL/ATL::CDefaultHashTraits", "ATLCOLL/ATL::CDefaultHashTraits::Hash"] helpviewer_keywords: ["CDefaultHashTraits class"] -ms.assetid: d8ec4b37-6d58-447b-a0c1-8580c5b1ab85 --- # CDefaultHashTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides a static function for calculating hash values. ## Syntax diff --git a/docs/atl/reference/cdialogimpl-class.md b/docs/atl/reference/cdialogimpl-class.md index 56a1d4713c2..322ce2b5812 100644 --- a/docs/atl/reference/cdialogimpl-class.md +++ b/docs/atl/reference/cdialogimpl-class.md @@ -4,10 +4,11 @@ title: "CDialogImpl Class" ms.date: "11/04/2016" f1_keywords: ["CDialogImpl", "ATLWIN/ATL::CDialogImpl", "ATLWIN/ATL::Create", "ATLWIN/ATL::DestroyWindow", "ATLWIN/ATL::DoModal", "ATLWIN/ATL::EndDialog", "ATLWIN/ATL::GetDialogProc", "ATLWIN/ATL::MapDialogRect", "ATLWIN/ATL::OnFinalMessage", "ATLWIN/ATL::DialogProc", "ATLWIN/ATL::StartDialogProc"] helpviewer_keywords: ["dialog boxes, ATL", "CDialogImpl class"] -ms.assetid: d430bc7b-8a28-4ad3-9507-277bdd2c2c2e --- # CDialogImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for creating a modal or modeless dialog box. > [!IMPORTANT] diff --git a/docs/atl/reference/cdynamicchain-class.md b/docs/atl/reference/cdynamicchain-class.md index 27e0374b8f9..b3095ff263e 100644 --- a/docs/atl/reference/cdynamicchain-class.md +++ b/docs/atl/reference/cdynamicchain-class.md @@ -4,10 +4,11 @@ title: "CDynamicChain Class" ms.date: "11/04/2016" f1_keywords: ["CDynamicChain", "ATLWIN/ATL::CDynamicChain", "ATLWIN/ATL::CDynamicChain::CDynamicChain", "ATLWIN/ATL::CDynamicChain::CallChain", "ATLWIN/ATL::CDynamicChain::RemoveChainEntry", "ATLWIN/ATL::CDynamicChain::SetChainEntry"] helpviewer_keywords: ["message maps, chaining", "chaining message maps", "CDynamicChain class"] -ms.assetid: f084b2be-0e77-4836-973d-ae278a1e9da8 --- # CDynamicChain Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods supporting the dynamic chaining of message maps. > [!IMPORTANT] diff --git a/docs/atl/reference/celementtraits-class.md b/docs/atl/reference/celementtraits-class.md index 067c69927e0..69ba5045e2b 100644 --- a/docs/atl/reference/celementtraits-class.md +++ b/docs/atl/reference/celementtraits-class.md @@ -4,10 +4,11 @@ title: "CElementTraits Class" ms.date: "11/04/2016" f1_keywords: ["CElementTraits", "atlcoll/ATL::CElementTraits"] helpviewer_keywords: ["CElementTraits class"] -ms.assetid: 496528e5-7f80-4b45-be0c-6f646feb43c5 --- # CElementTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is used by collection classes to provide methods and functions for moving, copying, comparison, and hashing operations. ## Syntax diff --git a/docs/atl/reference/celementtraitsbase-class.md b/docs/atl/reference/celementtraitsbase-class.md index 8bf122174c6..569f754e6b2 100644 --- a/docs/atl/reference/celementtraitsbase-class.md +++ b/docs/atl/reference/celementtraitsbase-class.md @@ -4,10 +4,11 @@ title: "CElementTraitsBase Class" ms.date: "11/04/2016" f1_keywords: ["CElementTraitsBase", "ATLCOLL/ATL::CElementTraitsBase", "ATLCOLL/ATL::CElementTraitsBase::INARGTYPE", "ATLCOLL/ATL::CElementTraitsBase::OUTARGTYPE", "ATLCOLL/ATL::CElementTraitsBase::CopyElements", "ATLCOLL/ATL::CElementTraitsBase::RelocateElements"] helpviewer_keywords: ["CElementTraitsBase class"] -ms.assetid: 75284caf-347e-4355-a7d8-efc708dd514a --- # CElementTraitsBase Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides default copy and move methods for a collection class. ## Syntax diff --git a/docs/atl/reference/cfirepropnotifyevent-class.md b/docs/atl/reference/cfirepropnotifyevent-class.md index 76834b9a5ed..a9058036f19 100644 --- a/docs/atl/reference/cfirepropnotifyevent-class.md +++ b/docs/atl/reference/cfirepropnotifyevent-class.md @@ -4,10 +4,11 @@ title: "CFirePropNotifyEvent Class" ms.date: "11/04/2016" f1_keywords: ["CFirePropNotifyEvent", "ATLCTL/ATL::CFirePropNotifyEvent", "ATLCTL/ATL::CFirePropNotifyEvent::FireOnChanged", "ATLCTL/ATL::CFirePropNotifyEvent::FireOnRequestEdit"] helpviewer_keywords: ["sinks, notifying of ATL events", "CFirePropNotifyEvent class", "connection points [C++], notifying of events"] -ms.assetid: eb7a563e-6bce-4cdf-8d20-8c6a5307781b --- # CFirePropNotifyEvent Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for notifying the container's sink regarding control property changes. > [!IMPORTANT] diff --git a/docs/atl/reference/cglobalheap-class.md b/docs/atl/reference/cglobalheap-class.md index 426101159d7..38fe72d252b 100644 --- a/docs/atl/reference/cglobalheap-class.md +++ b/docs/atl/reference/cglobalheap-class.md @@ -4,10 +4,11 @@ title: "CGlobalHeap Class" ms.date: "11/04/2016" f1_keywords: ["CGlobalHeap", "ATLMEM/ATL::CGlobalHeap", "ATLMEM/ATL::CGlobalHeap::Allocate", "ATLMEM/ATL::CGlobalHeap::Free", "ATLMEM/ATL::CGlobalHeap::GetSize", "ATLMEM/ATL::CGlobalHeap::Reallocate"] helpviewer_keywords: ["CGlobalHeap class"] -ms.assetid: e348d838-3aa7-4bee-a1b3-cd000c99f834 --- # CGlobalHeap Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements [IAtlMemMgr](../../atl/reference/iatlmemmgr-class.md) using the Win32 global heap functions. > [!IMPORTANT] diff --git a/docs/atl/reference/chandle-class.md b/docs/atl/reference/chandle-class.md index 237fa0cd883..54f0095d210 100644 --- a/docs/atl/reference/chandle-class.md +++ b/docs/atl/reference/chandle-class.md @@ -4,10 +4,11 @@ title: "CHandle Class" ms.date: "07/09/2019" f1_keywords: ["CHandle", "ATLBASE/ATL::CHandle", "ATLBASE/ATL::CHandle::CHandle", "ATLBASE/ATL::CHandle::Attach", "ATLBASE/ATL::CHandle::Close", "ATLBASE/ATL::CHandle::Detach", "ATLBASE/ATL::CHandle::m_h"] helpviewer_keywords: ["CHandle class"] -ms.assetid: 883e9db5-40ec-4e29-9c74-4dd2ddd2e35d --- # CHandle Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for creating and using a handle object. ## Syntax diff --git a/docs/atl/reference/cheapptr-class.md b/docs/atl/reference/cheapptr-class.md index c7888bfbccd..53580613dcc 100644 --- a/docs/atl/reference/cheapptr-class.md +++ b/docs/atl/reference/cheapptr-class.md @@ -4,10 +4,11 @@ title: "CHeapPtr Class" ms.date: "11/04/2016" f1_keywords: ["CHeapPtr", "ATLCORE/ATL::CHeapPtr", "ATLCORE/ATL::CHeapPtr::CHeapPtr", "ATLCORE/ATL::CHeapPtr::Allocate", "ATLCORE/ATL::CHeapPtr::Reallocate"] helpviewer_keywords: ["CHeapPtr class"] -ms.assetid: e5c5bfd4-9bf1-4164-8a83-8155fe253454 --- # CHeapPtr Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + A smart pointer class for managing heap pointers. > [!IMPORTANT] diff --git a/docs/atl/reference/cheapptrbase-class.md b/docs/atl/reference/cheapptrbase-class.md index 8ba15f0fb65..a756cc99bc3 100644 --- a/docs/atl/reference/cheapptrbase-class.md +++ b/docs/atl/reference/cheapptrbase-class.md @@ -4,10 +4,11 @@ title: "CHeapPtrBase class" ms.date: "11/04/2016" f1_keywords: ["CHeapPtrBase", "ATLCORE/ATL::CHeapPtrBase", "ATLCORE/ATL::CHeapPtrBase::AllocateBytes", "ATLCORE/ATL::CHeapPtrBase::Attach", "ATLCORE/ATL::CHeapPtrBase::Detach", "ATLCORE/ATL::CHeapPtrBase::Free", "ATLCORE/ATL::CHeapPtrBase::ReallocateBytes", "ATLCORE/ATL::CHeapPtrBase::m_pData"] helpviewer_keywords: ["CHeapPtrBase class"] -ms.assetid: 501ac1b2-fb34-4c72-b7e6-a4f1fc8fda21 --- # `CHeapPtrBase` class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class forms the basis for several smart heap pointer classes. > [!IMPORTANT] diff --git a/docs/atl/reference/cheapptrelementtraits-class.md b/docs/atl/reference/cheapptrelementtraits-class.md index 3ff0b3f44d1..5fb6c021ad1 100644 --- a/docs/atl/reference/cheapptrelementtraits-class.md +++ b/docs/atl/reference/cheapptrelementtraits-class.md @@ -4,10 +4,11 @@ title: "CHeapPtrElementTraits Class" ms.date: "11/04/2016" f1_keywords: ["CHeapPtrElementTraits", "ATLCOLL/ATL::CHeapPtrElementTraits", "ATLCOLL/ATL::CHeapPtrElementTraits::INARGTYPE", "ATLCOLL/ATL::CHeapPtrElementTraits::OUTARGTYPE"] helpviewer_keywords: ["CHeapPtrElementTraits class"] -ms.assetid: 910e0e06-3c8b-4242-bf00-b57eb74fbc77 --- # CHeapPtrElementTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods, static functions, and typedefs useful when creating collections of heap pointers. > [!IMPORTANT] diff --git a/docs/atl/reference/cheapptrlist-class.md b/docs/atl/reference/cheapptrlist-class.md index 591c5787727..4513428fcb8 100644 --- a/docs/atl/reference/cheapptrlist-class.md +++ b/docs/atl/reference/cheapptrlist-class.md @@ -4,10 +4,11 @@ title: "CHeapPtrList Class" ms.date: "11/04/2016" f1_keywords: ["CHeapPtrList", "ATLCOLL/ATL::CHeapPtrList", "ATLCOLL/ATL::CHeapPtrList::CHeapPtrList"] helpviewer_keywords: ["CHeapPtrList class"] -ms.assetid: cc70e585-362a-4007-81db-c705eb181226 --- # CHeapPtrList Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods useful when constructing a list of heap pointers. > [!IMPORTANT] diff --git a/docs/atl/reference/cinterfacearray-class.md b/docs/atl/reference/cinterfacearray-class.md index 3a6ec0bc1df..d7c378a72a9 100644 --- a/docs/atl/reference/cinterfacearray-class.md +++ b/docs/atl/reference/cinterfacearray-class.md @@ -4,10 +4,11 @@ title: "CInterfaceArray Class" ms.date: "11/04/2016" f1_keywords: ["CInterfaceArray", "ATLCOLL/ATL::CInterfaceArray", "ATLCOLL/ATL::CInterfaceArray::CInterfaceArray"] helpviewer_keywords: ["CInterfaceArray class"] -ms.assetid: 1f29cf66-a086-4a7b-b6a8-64f73da39f79 --- # CInterfaceArray Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods useful when constructing an array of COM interface pointers. ## Syntax diff --git a/docs/atl/reference/cinterfacelist-class.md b/docs/atl/reference/cinterfacelist-class.md index e5aae7bdce7..f445de12465 100644 --- a/docs/atl/reference/cinterfacelist-class.md +++ b/docs/atl/reference/cinterfacelist-class.md @@ -4,10 +4,11 @@ title: "CInterfaceList Class" ms.date: "11/04/2016" f1_keywords: ["CInterfaceList", "ATLCOLL/ATL::CInterfaceList", "ATLCOLL/ATL::CInterfaceList::CInterfaceList"] helpviewer_keywords: ["CInterfaceList class"] -ms.assetid: 2077764d-25e5-4b3d-96c8-08a287bbcd25 --- # CInterfaceList Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods useful when constructing a list of COM interface pointers. ## Syntax diff --git a/docs/atl/reference/clocalheap-class.md b/docs/atl/reference/clocalheap-class.md index 32ff5c199e4..9d597b0d29c 100644 --- a/docs/atl/reference/clocalheap-class.md +++ b/docs/atl/reference/clocalheap-class.md @@ -4,10 +4,11 @@ title: "CLocalHeap Class" ms.date: "11/04/2016" f1_keywords: ["CLocalHeap", "ATLMEM/ATL::CLocalHeap", "ATLMEM/ATL::CLocalHeap::Allocate", "ATLMEM/ATL::CLocalHeap::Free", "ATLMEM/ATL::CLocalHeap::GetSize", "ATLMEM/ATL::CLocalHeap::Reallocate"] helpviewer_keywords: ["CLocalHeap class"] -ms.assetid: 1ffa87a5-5fc8-4f8d-8809-58e87e963bd2 --- # CLocalHeap Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements [IAtlMemMgr](../../atl/reference/iatlmemmgr-class.md) using the Win32 local heap functions. > [!IMPORTANT] diff --git a/docs/atl/reference/cmessagemap-class.md b/docs/atl/reference/cmessagemap-class.md index 1f8f30e7429..3e9c87e6d8e 100644 --- a/docs/atl/reference/cmessagemap-class.md +++ b/docs/atl/reference/cmessagemap-class.md @@ -4,10 +4,11 @@ title: "CMessageMap Class" ms.date: "11/04/2016" f1_keywords: ["CMessageMap", "ATLWIN/ATL::CMessageMap", "ATLWIN/ATL::CMessageMap::ProcessWindowMessage"] helpviewer_keywords: ["CMessageMap class", "message maps, ATL", "ATL, message handlers"] -ms.assetid: 1f97bc16-a8a0-4cf0-b90f-1778813a5c8e --- # CMessageMap Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class allows an object's message maps to be access by another object. > [!IMPORTANT] diff --git a/docs/atl/reference/cnonstatelessworker-class.md b/docs/atl/reference/cnonstatelessworker-class.md index 014cd170ab8..c11f44e5cf6 100644 --- a/docs/atl/reference/cnonstatelessworker-class.md +++ b/docs/atl/reference/cnonstatelessworker-class.md @@ -4,10 +4,11 @@ title: "CNonStatelessWorker Class" ms.date: "11/04/2016" f1_keywords: ["CNonStatelessWorker", "ATLUTIL/ATL::CNonStatelessWorker", "ATLUTIL/ATL::CNonStatelessWorker::RequestType", "ATLUTIL/ATL::CNonStatelessWorker::Execute", "ATLUTIL/ATL::CNonStatelessWorker::Initialize", "ATLUTIL/ATL::CNonStatelessWorker::Terminate"] helpviewer_keywords: ["CNonStatelessWorker class"] -ms.assetid: d00936c6-9e7d-49fb-b87d-417b963367d1 --- # CNonStatelessWorker Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Receives requests from a thread pool and passes them on to a worker object that is created and destroyed on each request. > [!IMPORTANT] diff --git a/docs/atl/reference/cnoworkerthread-class.md b/docs/atl/reference/cnoworkerthread-class.md index 69c725ddc5e..a46f79dd47f 100644 --- a/docs/atl/reference/cnoworkerthread-class.md +++ b/docs/atl/reference/cnoworkerthread-class.md @@ -4,10 +4,11 @@ title: "CNoWorkerThread Class" ms.date: "11/04/2016" f1_keywords: ["CNoWorkerThread", "ATLUTIL/ATL::CNoWorkerThread", "ATLUTIL/ATL::CNoWorkerThread::AddHandle", "ATLUTIL/ATL::CNoWorkerThread::AddTimer", "ATLUTIL/ATL::CNoWorkerThread::GetThreadHandle", "ATLUTIL/ATL::CNoWorkerThread::GetThreadId", "ATLUTIL/ATL::CNoWorkerThread::Initialize", "ATLUTIL/ATL::CNoWorkerThread::RemoveHandle", "ATLUTIL/ATL::CNoWorkerThread::Shutdown"] helpviewer_keywords: ["CNoWorkerThread class"] -ms.assetid: 29f06bae-b658-4aac-9c14-331e996d25d1 --- # CNoWorkerThread Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Use this class as the argument for the `MonitorClass` template parameter to cache classes if you want to disable dynamic cache maintenance. > [!IMPORTANT] diff --git a/docs/atl/reference/com-interface-entry-macros.md b/docs/atl/reference/com-interface-entry-macros.md index 83a187ec491..dd365f7d09d 100644 --- a/docs/atl/reference/com-interface-entry-macros.md +++ b/docs/atl/reference/com-interface-entry-macros.md @@ -4,10 +4,11 @@ title: "COM Interface Entry Macros" ms.date: "03/28/2017" f1_keywords: ["atlcom/ATL::COM_INTERFACE_ENTRY", "atlcom/ATL::COM_INTERFACE_ENTRY_IID", "atlcom/ATL::COM_INTERFACE_ENTRY_AGGREGATE", "atlcom/ATL::COM_INTERFACE_ENTRY_AGGREGATE_BLIND", "atlcom/ATL::COM_INTERFACE_ENTRY_AUTOAGGREGATE", "atlcom/ATL::COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND", "atlcom/ATL::COM_INTERFACE_ENTRY_BREAK", "atlcom/ATL::COM_INTERFACE_ENTRY_CACHED_TEAR_OFF", "atlcom/ATL::COM_INTERFACE_ENTRY_TEAR_OFF", "atlcom/ATL::COM_INTERFACE_ENTRY_CHAIN", "atlcom/ATL::COM_INTERFACE_ENTRY_FUNC", "atlcom/ATL::COM_INTERFACE_ENTRY_FUNC_BLIND", "atlcom/ATL::COM_INTERFACE_ENTRY_NOINTERFACE"] helpviewer_keywords: ["COM interfaces, COM interface entry macros"] -ms.assetid: 19dcb768-2e1f-4b8d-a618-453a01a4bd00 --- # COM_INTERFACE_ENTRY Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros enter an object's interfaces into its COM map so that they can be accessed by `QueryInterface`. The order of entries in the COM map is the order interfaces will be checked for a matching IID during `QueryInterface`. |Macro|Description| diff --git a/docs/atl/reference/com-map-global-functions.md b/docs/atl/reference/com-map-global-functions.md index 97e19802646..e7ebb9ed76d 100644 --- a/docs/atl/reference/com-map-global-functions.md +++ b/docs/atl/reference/com-map-global-functions.md @@ -4,10 +4,11 @@ title: "COM Map Global Functions" ms.date: "11/04/2016" f1_keywords: ["atlbase/ATL::AtlInternalQueryInterface", "atlbase/ATL::InlineIsEqualIUnknown"] helpviewer_keywords: ["COM interfaces, COM map global functions"] -ms.assetid: b9612d30-eb23-46ef-8093-d56f237d3cf1 --- # COM Map Global Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These functions provide support for COM Map `IUnknown` implementations. |Function|Description| diff --git a/docs/atl/reference/com-map-macros.md b/docs/atl/reference/com-map-macros.md index 6734604721d..93d4b26bb69 100644 --- a/docs/atl/reference/com-map-macros.md +++ b/docs/atl/reference/com-map-macros.md @@ -4,10 +4,11 @@ title: "COM Map Macros" ms.date: "11/04/2016" f1_keywords: ["atlcom/ATL::BEGIN_COM_MAP", "atlcom/ATL::END_COM_MAP", "ATLCOM/BEGIN_COM_MAP", "ATLCOM/END_COM_MAP"] helpviewer_keywords: ["COM interfaces, COM map macros"] -ms.assetid: 0f33656d-321f-4996-90cc-9a7f21ab73c3 --- # COM Map Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros define COM interface maps. |Macro|Description| diff --git a/docs/atl/reference/com-plus-1-0-atl-com-plus-1-0-component-wizard.md b/docs/atl/reference/com-plus-1-0-atl-com-plus-1-0-component-wizard.md index 0a125245518..37826eba5b2 100644 --- a/docs/atl/reference/com-plus-1-0-atl-com-plus-1-0-component-wizard.md +++ b/docs/atl/reference/com-plus-1-0-atl-com-plus-1-0-component-wizard.md @@ -3,10 +3,11 @@ description: "Learn more about: COM+ 1.0, ATL COM+ 1.0 Component Wizard" title: "COM+ 1.0, ATL COM+ 1.0 Component Wizard" ms.date: "05/09/2019" f1_keywords: ["vc.codewiz.class.atl.mts.options"] -ms.assetid: 2fbe259c-6be1-4d0e-9cfe-721c75c97cb1 --- # COM+ 1.0, ATL COM+ 1.0 Component Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" This wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/reference/com-plus-1-0-support-in-atl-projects.md b/docs/atl/reference/com-plus-1-0-support-in-atl-projects.md index ae0f296311b..72d9e7e0ff7 100644 --- a/docs/atl/reference/com-plus-1-0-support-in-atl-projects.md +++ b/docs/atl/reference/com-plus-1-0-support-in-atl-projects.md @@ -4,10 +4,11 @@ title: "COM+ 1.0 Support in ATL Projects" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.ATL.MTS"] helpviewer_keywords: ["ATL projects, COM+ 1.0 support"] -ms.assetid: 51fb08ac-d632-4657-a4e0-d3f989f0b6f8 --- # COM+ 1.0 Support in ATL Projects +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + You can use the [ATL Project Wizard](../../atl/reference/creating-an-atl-project.md) to create a project with basic support for COM+ 1.0 components. COM+ 1.0 is designed for developing distributed component-based applications. It also provides a run-time infrastructure for deploying and managing these applications. diff --git a/docs/atl/reference/compiler-options-macros.md b/docs/atl/reference/compiler-options-macros.md index 4c80bb5d9bf..465fd84fab8 100644 --- a/docs/atl/reference/compiler-options-macros.md +++ b/docs/atl/reference/compiler-options-macros.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["compiler options, macros"] --- # Compiler Options Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros control specific compiler features. |Macro|Description| diff --git a/docs/atl/reference/composite-control-global-functions.md b/docs/atl/reference/composite-control-global-functions.md index b55042bb271..b14dc283be1 100644 --- a/docs/atl/reference/composite-control-global-functions.md +++ b/docs/atl/reference/composite-control-global-functions.md @@ -4,10 +4,11 @@ title: "Composite Control Global Functions" ms.date: "11/04/2016" f1_keywords: ["atlhost/ATL::AtlAxDialogBox", "atlhost/ATL::AtlAxCreateDialog", "atlhost/ATL::AtlAxCreateControl", "atlhost/ATL::AtlAxCreateControlEx", "atlhost/ATL::AtlAxCreateControlLic", "atlhost/ATL::AtlAxCreateControlLicEx", "atlhost/ATL::AtlAxAttachControl", "atlhost/ATL::AtlAxGetHost", "atlhost/ATL::AtlAxGetControl", "atlhost/ATL::AtlSetChildSite", "atlhost/ATL::AtlAxWinInit", "atlhost/ATL::AtlAxWinTerm", "atlhost/ATL::AtlGetObjectSourceInterface"] helpviewer_keywords: ["composite controls, global functions"] -ms.assetid: 536884cd-e863-4c7a-ab0a-604dc60a0bbe --- # Composite Control Global Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These functions provide support for creating dialog boxes, and for creating, hosting and licensing ActiveX controls. > [!IMPORTANT] diff --git a/docs/atl/reference/composite-control-macros.md b/docs/atl/reference/composite-control-macros.md index 9721f16031c..94620901dbc 100644 --- a/docs/atl/reference/composite-control-macros.md +++ b/docs/atl/reference/composite-control-macros.md @@ -4,10 +4,11 @@ title: "Composite Control Macros" ms.date: "05/06/2019" f1_keywords: ["atlcom/ATL::BEGIN_SINK_MAP", "atlcom/ATL::END_SINK_MAP", "atlcom/ATL::SINK_ENTRY", "ATLCOM/BEGIN_SINK_MAP", "ATLCOM/END_SINK_MAP", "ATLCOM/SINK_ENTRY", "ATLCOM/SINK_ENTRY_EX", "ATLCOM/SINK_ENTRY_EX_P", "ATLCOM/SINK_ENTRY_INFO", "ATLCOM/SINK_ENTRY_INFO_P", "BEGIN_SINK_MAP", "END_SINK_MAP", "SINK_ENTRY", "SINK_ENTRY_EX", "SINK_ENTRY_EX_P", "SINK_ENTRY_INFO", "SINK_ENTRY_INFO_P"] helpviewer_keywords: ["composite controls, macros"] -ms.assetid: 17f2dd5e-07e6-4aa6-b965-7a361c78c45e --- # Composite Control Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros define event sink maps and entries. |Macro|Description| diff --git a/docs/atl/reference/connection-point-global-functions.md b/docs/atl/reference/connection-point-global-functions.md index be49a8643a4..27a14e4ca41 100644 --- a/docs/atl/reference/connection-point-global-functions.md +++ b/docs/atl/reference/connection-point-global-functions.md @@ -4,10 +4,11 @@ title: "Connection Point Global Functions" ms.date: "11/04/2016" f1_keywords: ["atlbase/ATL::AtlAdvise", "atlbase/ATL::AtlUnadvise", "atlbase/ATL::AtlAdviseSinkMap"] helpviewer_keywords: ["connection points [C++], global functions"] -ms.assetid: bcb4bf50-2155-4e20-b8bb-f2908b03a6e7 --- # Connection Point Global Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These functions provide support for connection points and sink maps. > [!IMPORTANT] diff --git a/docs/atl/reference/connection-point-macros.md b/docs/atl/reference/connection-point-macros.md index 490abb2c387..5bdfd5b0491 100644 --- a/docs/atl/reference/connection-point-macros.md +++ b/docs/atl/reference/connection-point-macros.md @@ -4,10 +4,11 @@ title: "Connection Point Macros" ms.date: "11/04/2016" f1_keywords: ["atlcom/ATL::BEGIN_CONNECTION_POINT_MAP", "atlcom/ATL::END_CONNECTION_POINT_MAP", "ATLCOM/BEGIN_CONNECTION_POINT_MAP", "ATLCOM/END_CONNECTION_POINT_MAP", "ATLCOM/CONNECTION_POINT_ENTRY", "ATLCOM/CONNECTION_POINT_ENTRY_P", "BEGIN_CONNECTION_POINT_MAP", "END_CONNECTION_POINT_MAP", "CONNECTION_POINT_ENTRY", "CONNECTION_POINT_ENTRY_P"] helpviewer_keywords: ["connection points [C++], macros"] -ms.assetid: cc3a6dd3-5538-45df-b027-1f34963c31e5 --- # Connection Point Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros define connection point maps and entries. |Macro|Description| diff --git a/docs/atl/reference/cpatht-class.md b/docs/atl/reference/cpatht-class.md index 32b31a3db12..93adf44cd29 100644 --- a/docs/atl/reference/cpatht-class.md +++ b/docs/atl/reference/cpatht-class.md @@ -4,10 +4,11 @@ title: "CPathT Class" ms.date: "03/27/2019" f1_keywords: ["CPathT", "ATLPATH/ATL::CPathT", "ATLPATH/ATL::CPathT::PCXSTR", "ATLPATH/ATL::CPathT::PXSTR", "ATLPATH/ATL::CPathT::XCHAR", "ATLPATH/ATL::CPathT::CPathT", "ATLPATH/ATL::CPathT::AddBackslash", "ATLPATH/ATL::CPathT::AddExtension", "ATLPATH/ATL::CPathT::Append", "ATLPATH/ATL::CPathT::BuildRoot", "ATLPATH/ATL::CPathT::Canonicalize", "ATLPATH/ATL::CPathT::Combine", "ATLPATH/ATL::CPathT::CommonPrefix", "ATLPATH/ATL::CPathT::CompactPath", "ATLPATH/ATL::CPathT::CompactPathEx", "ATLPATH/ATL::CPathT::FileExists", "ATLPATH/ATL::CPathT::FindExtension", "ATLPATH/ATL::CPathT::FindFileName", "ATLPATH/ATL::CPathT::GetDriveNumber", "ATLPATH/ATL::CPathT::GetExtension", "ATLPATH/ATL::CPathT::IsDirectory", "ATLPATH/ATL::CPathT::IsFileSpec", "ATLPATH/ATL::CPathT::IsPrefix", "ATLPATH/ATL::CPathT::IsRelative", "ATLPATH/ATL::CPathT::IsRoot", "ATLPATH/ATL::CPathT::IsSameRoot", "ATLPATH/ATL::CPathT::IsUNC", "ATLPATH/ATL::CPathT::IsUNCServer", "ATLPATH/ATL::CPathT::IsUNCServerShare", "ATLPATH/ATL::CPathT::MakePretty", "ATLPATH/ATL::CPathT::MatchSpec", "ATLPATH/ATL::CPathT::QuoteSpaces", "ATLPATH/ATL::CPathT::RelativePathTo", "ATLPATH/ATL::CPathT::RemoveArgs", "ATLPATH/ATL::CPathT::RemoveBackslash", "ATLPATH/ATL::CPathT::RemoveBlanks", "ATLPATH/ATL::CPathT::RemoveExtension", "ATLPATH/ATL::CPathT::RemoveFileSpec", "ATLPATH/ATL::CPathT::RenameExtension", "ATLPATH/ATL::CPathT::SkipRoot", "ATLPATH/ATL::CPathT::StripPath", "ATLPATH/ATL::CPathT::StripToRoot", "ATLPATH/ATL::CPathT::UnquoteSpaces", "ATLPATH/ATL::CPathT::m_strPath"] helpviewer_keywords: ["CPathT class"] -ms.assetid: eba4137d-1fd2-4b44-a2e1-0944db64df3c --- # CPathT Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents a path. > [!IMPORTANT] diff --git a/docs/atl/reference/cprimitiveelementtraits-class.md b/docs/atl/reference/cprimitiveelementtraits-class.md index 7a0da283d47..efbb2c1caff 100644 --- a/docs/atl/reference/cprimitiveelementtraits-class.md +++ b/docs/atl/reference/cprimitiveelementtraits-class.md @@ -4,10 +4,11 @@ title: "CPrimitiveElementTraits Class" ms.date: "11/04/2016" f1_keywords: ["CPrimitiveElementTraits", "ATLCOLL/ATL::CPrimitiveElementTraits", "ATLCOLL/ATL::CPrimitiveElementTraits::INARGTYPE", "ATLCOLL/ATL::CPrimitiveElementTraits::OUTARGTYPE"] helpviewer_keywords: ["CPrimitiveElementTraits class"] -ms.assetid: 21c1cea8-2c5a-486c-b65c-85490f3ed4e6 --- # CPrimitiveElementTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides default methods and functions for a collection class composed of primitive data types. ## Syntax diff --git a/docs/atl/reference/cprivateobjectsecuritydesc-class.md b/docs/atl/reference/cprivateobjectsecuritydesc-class.md index 8d18a4cef84..b3e8123fd32 100644 --- a/docs/atl/reference/cprivateobjectsecuritydesc-class.md +++ b/docs/atl/reference/cprivateobjectsecuritydesc-class.md @@ -4,10 +4,11 @@ title: "CPrivateObjectSecurityDesc Class" ms.date: "11/04/2016" f1_keywords: ["CPrivateObjectSecurityDesc", "ATLSECURITY/ATL::CPrivateObjectSecurityDesc", "ATLSECURITY/ATL::CPrivateObjectSecurityDesc::CPrivateObjectSecurityDesc", "ATLSECURITY/ATL::CPrivateObjectSecurityDesc::ConvertToAutoInherit", "ATLSECURITY/ATL::CPrivateObjectSecurityDesc::Create", "ATLSECURITY/ATL::CPrivateObjectSecurityDesc::Get", "ATLSECURITY/ATL::CPrivateObjectSecurityDesc::Set"] helpviewer_keywords: ["CPrivateObjectSecurityDesc class"] -ms.assetid: 2c4bbb13-bf99-4833-912a-197f6815bb5d --- # CPrivateObjectSecurityDesc Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents a private object security descriptor object. ## Syntax diff --git a/docs/atl/reference/crbmap-class.md b/docs/atl/reference/crbmap-class.md index 4617fc49e3c..3a09ccf6c49 100644 --- a/docs/atl/reference/crbmap-class.md +++ b/docs/atl/reference/crbmap-class.md @@ -4,10 +4,11 @@ title: "CRBMap Class" ms.date: "11/04/2016" f1_keywords: ["CRBMap", "ATLCOLL/ATL::CRBMap", "ATLCOLL/ATL::CRBMap::CRBMap", "ATLCOLL/ATL::CRBMap::Lookup", "ATLCOLL/ATL::CRBMap::RemoveKey", "ATLCOLL/ATL::CRBMap::SetAt"] helpviewer_keywords: ["CRBMap class"] -ms.assetid: 658e94dc-e835-4356-aed1-1513e1f66969 --- # CRBMap Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents a mapping structure, using a Red-Black binary tree. ## Syntax diff --git a/docs/atl/reference/crbmultimap-class.md b/docs/atl/reference/crbmultimap-class.md index 3788491f6d5..c50ea797627 100644 --- a/docs/atl/reference/crbmultimap-class.md +++ b/docs/atl/reference/crbmultimap-class.md @@ -4,10 +4,11 @@ title: "CRBMultiMap Class" ms.date: "11/04/2016" f1_keywords: ["CRBMultiMap", "ATLCOLL/ATL::CRBMultiMap", "ATLCOLL/ATL::CRBMultiMap::CRBMultiMap", "ATLCOLL/ATL::CRBMultiMap::FindFirstWithKey", "ATLCOLL/ATL::CRBMultiMap::GetNextValueWithKey", "ATLCOLL/ATL::CRBMultiMap::GetNextWithKey", "ATLCOLL/ATL::CRBMultiMap::Insert", "ATLCOLL/ATL::CRBMultiMap::RemoveKey"] helpviewer_keywords: ["CRBMultiMap class"] -ms.assetid: 94d3ec0c-3e30-4ab7-a101-d8da4fb8add3 --- # CRBMultiMap Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents a mapping structure that allows each key can be associated with more than one value, using a Red-Black binary tree. ## Syntax diff --git a/docs/atl/reference/crbtree-class.md b/docs/atl/reference/crbtree-class.md index 1b37d5c41ee..d755ed2a10c 100644 --- a/docs/atl/reference/crbtree-class.md +++ b/docs/atl/reference/crbtree-class.md @@ -4,10 +4,11 @@ title: "CRBTree Class" ms.date: "11/04/2016" f1_keywords: ["CRBTree", "ATLCOLL/ATL::CRBTree", "ATLCOLL/ATL::CRBTree::KINARGTYPE", "ATLCOLL/ATL::CRBTree::KOUTARGTYPE", "ATLCOLL/ATL::CRBTree::VINARGTYPE", "ATLCOLL/ATL::CRBTree::VOUTARGTYPE", "ATLCOLL/ATL::CRBTree::FindFirstKeyAfter", "ATLCOLL/ATL::CRBTree::GetAt", "ATLCOLL/ATL::CRBTree::GetCount", "ATLCOLL/ATL::CRBTree::GetHeadPosition", "ATLCOLL/ATL::CRBTree::GetKeyAt", "ATLCOLL/ATL::CRBTree::GetNext", "ATLCOLL/ATL::CRBTree::GetNextAssoc", "ATLCOLL/ATL::CRBTree::GetNextKey", "ATLCOLL/ATL::CRBTree::GetNextValue", "ATLCOLL/ATL::CRBTree::GetPrev", "ATLCOLL/ATL::CRBTree::GetTailPosition", "ATLCOLL/ATL::CRBTree::GetValueAt", "ATLCOLL/ATL::CRBTree::IsEmpty", "ATLCOLL/ATL::CRBTree::RemoveAll", "ATLCOLL/ATL::CRBTree::RemoveAt", "ATLCOLL/ATL::CRBTree::SetValueAt"] helpviewer_keywords: ["CRBTree class"] -ms.assetid: a1b1cb63-38e4-4fc2-bb28-f774d1721760 --- # CRBTree Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for creating and utilizing a Red-Black tree. ## Syntax diff --git a/docs/atl/reference/creating-an-atl-project.md b/docs/atl/reference/creating-an-atl-project.md index 0e82550faf9..2b8d1914bda 100644 --- a/docs/atl/reference/creating-an-atl-project.md +++ b/docs/atl/reference/creating-an-atl-project.md @@ -4,10 +4,11 @@ title: "Creating an ATL Project" ms.date: "05/06/2019" f1_keywords: ["vc.appwiz.ATL.project"] helpviewer_keywords: ["ATL projects, creating", "ATL70.DLL", "_ATL_MIN_CRT macro", "distributing files with ATL components"] -ms.assetid: 061d5f98-f669-440e-9380-42f017a0f9e8 --- # Creating an ATL Project +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + The easiest way to create an ATL project is to use the ATL Project Wizard, located in the **Win32 Projects** folder of the **New Project** dialog box. ## To create an ATL project using the ATL Project Wizard diff --git a/docs/atl/reference/cregkey-class.md b/docs/atl/reference/cregkey-class.md index 175495ad2e4..d2510be3e45 100644 --- a/docs/atl/reference/cregkey-class.md +++ b/docs/atl/reference/cregkey-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["CRegKey class", "ATL, registry", "registry, deleting valu --- # `CRegKey` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for manipulating entries in the system registry. > [!IMPORTANT] diff --git a/docs/atl/reference/crtthreadtraits-class.md b/docs/atl/reference/crtthreadtraits-class.md index de1edbf63f5..3703ee3ee16 100644 --- a/docs/atl/reference/crtthreadtraits-class.md +++ b/docs/atl/reference/crtthreadtraits-class.md @@ -4,10 +4,11 @@ title: "CRTThreadTraits Class" ms.date: "11/04/2016" f1_keywords: ["CRTThreadTraits", "ATLBASE/ATL::CRTThreadTraits", "ATLBASE/ATL::CRTThreadTraits::CreateThread"] helpviewer_keywords: ["CRTThreadTraits class", "threading [ATL], creation functions", "threading [ATL], CRT threads"] -ms.assetid: eb6e20b0-c2aa-4170-8e34-aaeeacc86343 --- # CRTThreadTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides the creation function for a CRT thread. Use this class if the thread will use CRT functions. > [!IMPORTANT] diff --git a/docs/atl/reference/csacl-class.md b/docs/atl/reference/csacl-class.md index 47717cec068..12157beccdf 100644 --- a/docs/atl/reference/csacl-class.md +++ b/docs/atl/reference/csacl-class.md @@ -4,10 +4,11 @@ title: "CSacl Class" ms.date: "11/04/2016" f1_keywords: ["CSacl", "ATLSECURITY/ATL::CSacl", "ATLSECURITY/ATL::CSacl::CSacl", "ATLSECURITY/ATL::CSacl::AddAuditAce", "ATLSECURITY/ATL::CSacl::GetAceCount", "ATLSECURITY/ATL::CSacl::RemoveAce", "ATLSECURITY/ATL::CSacl::RemoveAllAces"] helpviewer_keywords: ["CSacl class"] -ms.assetid: 8624889b-aebc-4183-9d29-a20f07837f05 --- # CSacl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a wrapper for a SACL (system access-control list) structure. > [!IMPORTANT] diff --git a/docs/atl/reference/csecurityattributes-class.md b/docs/atl/reference/csecurityattributes-class.md index 7ba2de9becc..ffb68f7fe43 100644 --- a/docs/atl/reference/csecurityattributes-class.md +++ b/docs/atl/reference/csecurityattributes-class.md @@ -4,10 +4,11 @@ title: "CSecurityAttributes Class" ms.date: "11/04/2016" f1_keywords: ["CSecurityAttributes", "ATLSECURITY/ATL::CSecurityAttributes", "ATLSECURITY/ATL::CSecurityAttributes::CSecurityAttributes", "ATLSECURITY/ATL::CSecurityAttributes::Set"] helpviewer_keywords: ["CSecurityAttributes class"] -ms.assetid: a094880c-52e1-4a28-97ff-752d5869908e --- # CSecurityAttributes Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a thin wrapper for the security attributes structure. > [!IMPORTANT] diff --git a/docs/atl/reference/csecuritydesc-class.md b/docs/atl/reference/csecuritydesc-class.md index d5042907684..67f652293ec 100644 --- a/docs/atl/reference/csecuritydesc-class.md +++ b/docs/atl/reference/csecuritydesc-class.md @@ -4,10 +4,11 @@ title: "CSecurityDesc Class" ms.date: "11/04/2016" f1_keywords: ["CSecurityDesc", "ATLSECURITY/ATL::CSecurityDesc", "ATLSECURITY/ATL::CSecurityDesc::CSecurityDesc", "ATLSECURITY/ATL::CSecurityDesc::FromString", "ATLSECURITY/ATL::CSecurityDesc::GetControl", "ATLSECURITY/ATL::CSecurityDesc::GetDacl", "ATLSECURITY/ATL::CSecurityDesc::GetGroup", "ATLSECURITY/ATL::CSecurityDesc::GetOwner", "ATLSECURITY/ATL::CSecurityDesc::GetPSECURITY_DESCRIPTOR", "ATLSECURITY/ATL::CSecurityDesc::GetSacl", "ATLSECURITY/ATL::CSecurityDesc::IsDaclAutoInherited", "ATLSECURITY/ATL::CSecurityDesc::IsDaclDefaulted", "ATLSECURITY/ATL::CSecurityDesc::IsDaclPresent", "ATLSECURITY/ATL::CSecurityDesc::IsDaclProtected", "ATLSECURITY/ATL::CSecurityDesc::IsGroupDefaulted", "ATLSECURITY/ATL::CSecurityDesc::IsOwnerDefaulted", "ATLSECURITY/ATL::CSecurityDesc::IsSaclAutoInherited", "ATLSECURITY/ATL::CSecurityDesc::IsSaclDefaulted", "ATLSECURITY/ATL::CSecurityDesc::IsSaclPresent", "ATLSECURITY/ATL::CSecurityDesc::IsSaclProtected", "ATLSECURITY/ATL::CSecurityDesc::IsSelfRelative", "ATLSECURITY/ATL::CSecurityDesc::MakeAbsolute", "ATLSECURITY/ATL::CSecurityDesc::MakeSelfRelative", "ATLSECURITY/ATL::CSecurityDesc::SetControl", "ATLSECURITY/ATL::CSecurityDesc::SetDacl", "ATLSECURITY/ATL::CSecurityDesc::SetGroup", "ATLSECURITY/ATL::CSecurityDesc::SetOwner", "ATLSECURITY/ATL::CSecurityDesc::SetSacl", "ATLSECURITY/ATL::CSecurityDesc::ToString"] helpviewer_keywords: ["CSecurityDesc class"] -ms.assetid: 3767a327-378f-4690-ba40-4d9f6a1f5ee4 --- # CSecurityDesc Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a wrapper for the `SECURITY_DESCRIPTOR` structure. > [!IMPORTANT] diff --git a/docs/atl/reference/csid-class.md b/docs/atl/reference/csid-class.md index 49be86aa613..064eaa6ad79 100644 --- a/docs/atl/reference/csid-class.md +++ b/docs/atl/reference/csid-class.md @@ -4,10 +4,11 @@ title: "CSid class" ms.date: "03/27/2019" f1_keywords: ["CSid", "ATLSECURITY/ATL::CSid", "ATLSECURITY/ATL::CSid::CSidArray", "ATLSECURITY/ATL::CSid::CSid", "ATLSECURITY/ATL::CSid::AccountName", "ATLSECURITY/ATL::CSid::Domain", "ATLSECURITY/ATL::CSid::EqualPrefix", "ATLSECURITY/ATL::CSid::GetLength", "ATLSECURITY/ATL::CSid::GetPSID", "ATLSECURITY/ATL::CSid::GetPSID_IDENTIFIER_AUTHORITY", "ATLSECURITY/ATL::CSid::GetSubAuthority", "ATLSECURITY/ATL::CSid::GetSubAuthorityCount", "ATLSECURITY/ATL::CSid::IsValid", "ATLSECURITY/ATL::CSid::LoadAccount", "ATLSECURITY/ATL::CSid::Sid", "ATLSECURITY/ATL::CSid::SidNameUse"] helpviewer_keywords: ["CSid class"] -ms.assetid: be58b7ca-5958-49c3-a833-ca341aaaf753 --- # `CSid` class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a wrapper for a `SID` (security identifier) structure. > [!IMPORTANT] diff --git a/docs/atl/reference/csimplearray-class.md b/docs/atl/reference/csimplearray-class.md index 12a7cd13323..c9393a904da 100644 --- a/docs/atl/reference/csimplearray-class.md +++ b/docs/atl/reference/csimplearray-class.md @@ -4,10 +4,11 @@ title: "CSimpleArray Class" ms.date: "11/04/2016" f1_keywords: ["CSimpleArray", "ATLSIMPCOLL/ATL::CSimpleArray", "ATLSIMPCOLL/ATL::CSimpleArray::CSimpleArray", "ATLSIMPCOLL/ATL::CSimpleArray::Add", "ATLSIMPCOLL/ATL::CSimpleArray::Find", "ATLSIMPCOLL/ATL::CSimpleArray::GetData", "ATLSIMPCOLL/ATL::CSimpleArray::GetSize", "ATLSIMPCOLL/ATL::CSimpleArray::Remove", "ATLSIMPCOLL/ATL::CSimpleArray::RemoveAll", "ATLSIMPCOLL/ATL::CSimpleArray::RemoveAt", "ATLSIMPCOLL/ATL::CSimpleArray::SetAtIndex"] helpviewer_keywords: ["CSimpleArray class"] -ms.assetid: ee0c9f39-b61c-4c18-bc43-4eada21dca3a --- # CSimpleArray Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for managing a simple array. ## Syntax diff --git a/docs/atl/reference/csimplearrayequalhelper-class.md b/docs/atl/reference/csimplearrayequalhelper-class.md index e88c64cd44f..dd20404054a 100644 --- a/docs/atl/reference/csimplearrayequalhelper-class.md +++ b/docs/atl/reference/csimplearrayequalhelper-class.md @@ -4,10 +4,11 @@ title: "CSimpleArrayEqualHelper Class" ms.date: "11/04/2016" f1_keywords: ["CSimpleArrayEqualHelper", "ATLSIMPCOLL/ATL::CSimpleArrayEqualHelper", "ATLSIMPCOLL/ATL::CSimpleArrayEqualHelper::IsEqual"] helpviewer_keywords: ["CSimpleArrayEqualHelper class"] -ms.assetid: a2b55d89-78c9-42ef-842c-5304c6d20ad6 --- # CSimpleArrayEqualHelper Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a helper for the [CSimpleArray](../../atl/reference/csimplearray-class.md) class. ## Syntax diff --git a/docs/atl/reference/csimplearrayequalhelperfalse-class.md b/docs/atl/reference/csimplearrayequalhelperfalse-class.md index 9b66910ec4e..36ad6022a6d 100644 --- a/docs/atl/reference/csimplearrayequalhelperfalse-class.md +++ b/docs/atl/reference/csimplearrayequalhelperfalse-class.md @@ -4,10 +4,11 @@ title: "CSimpleArrayEqualHelperFalse Class" ms.date: "11/04/2016" f1_keywords: ["CSimpleArrayEqualHelperFalse", "ATLSIMPCOLL/ATL::CSimpleArrayEqualHelperFalse", "ATLSIMPCOLL/ATL::CSimpleArrayEqualHelperFalse::IsEqual"] helpviewer_keywords: ["CSimpleArrayEqualHelperFalse class"] -ms.assetid: 6918af6f-d23d-49eb-8482-c44272f5ffeb --- # CSimpleArrayEqualHelperFalse Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a helper for the [CSimpleArray](../../atl/reference/csimplearray-class.md) class. ## Syntax diff --git a/docs/atl/reference/csimpledialog-class.md b/docs/atl/reference/csimpledialog-class.md index 9650d3ce7c3..ea993e768cc 100644 --- a/docs/atl/reference/csimpledialog-class.md +++ b/docs/atl/reference/csimpledialog-class.md @@ -4,10 +4,11 @@ title: "CSimpleDialog Class" ms.date: "11/04/2016" f1_keywords: ["CSimpleDialog", "ATLWIN/ATL::CSimpleDialog", "ATLWIN/ATL::CSimpleDialog::DoModal"] helpviewer_keywords: ["CSimpleDialog class", "CSimpleDialog class, modal dialog boxes in ATL", "dialog boxes, modal", "modal dialog boxes, ATL"] -ms.assetid: 2ae65cc9-4f32-4168-aecd-200b4a480fdf --- # CSimpleDialog Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements a basic modal dialog box. ## Syntax diff --git a/docs/atl/reference/csimplemap-class.md b/docs/atl/reference/csimplemap-class.md index 50f20403759..ce0d4f90990 100644 --- a/docs/atl/reference/csimplemap-class.md +++ b/docs/atl/reference/csimplemap-class.md @@ -4,10 +4,11 @@ title: "CSimpleMap Class" ms.date: "11/04/2016" f1_keywords: ["CSimpleMap", "ATLSIMPCOLL/ATL::CSimpleMap", "ATLSIMPCOLL/ATL::CSimpleMap::_ArrayElementType", "ATLSIMPCOLL/ATL::CSimpleMap::_ArrayKeyType", "ATLSIMPCOLL/ATL::CSimpleMap::CSimpleMap", "ATLSIMPCOLL/ATL::CSimpleMap::Add", "ATLSIMPCOLL/ATL::CSimpleMap::FindKey", "ATLSIMPCOLL/ATL::CSimpleMap::FindVal", "ATLSIMPCOLL/ATL::CSimpleMap::GetKeyAt", "ATLSIMPCOLL/ATL::CSimpleMap::GetSize", "ATLSIMPCOLL/ATL::CSimpleMap::GetValueAt", "ATLSIMPCOLL/ATL::CSimpleMap::Lookup", "ATLSIMPCOLL/ATL::CSimpleMap::Remove", "ATLSIMPCOLL/ATL::CSimpleMap::RemoveAll", "ATLSIMPCOLL/ATL::CSimpleMap::RemoveAt", "ATLSIMPCOLL/ATL::CSimpleMap::ReverseLookup", "ATLSIMPCOLL/ATL::CSimpleMap::SetAt", "ATLSIMPCOLL/ATL::CSimpleMap::SetAtIndex"] helpviewer_keywords: ["CSimpleMap class"] -ms.assetid: 61b06eb4-ae73-44b0-a305-0afb5a33e8b1 --- # CSimpleMap Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides support for a simple mapping array. ## Syntax diff --git a/docs/atl/reference/csimplemapequalhelper-class.md b/docs/atl/reference/csimplemapequalhelper-class.md index 05c3178fdaa..ad384ff61db 100644 --- a/docs/atl/reference/csimplemapequalhelper-class.md +++ b/docs/atl/reference/csimplemapequalhelper-class.md @@ -4,10 +4,11 @@ title: "CSimpleMapEqualHelper Class" ms.date: "11/04/2016" f1_keywords: ["CSimpleMapEqualHelper", "ATLSIMPCOLL/ATL::CSimpleMapEqualHelper", "ATLSIMPCOLL/ATL::CSimpleMapEqualHelper::IsEqualKey", "ATLSIMPCOLL/ATL::CSimpleMapEqualHelper::IsEqualValue"] helpviewer_keywords: ["CSimpleMapEqualHelper class"] -ms.assetid: 9bb2968a-d609-405c-8272-ff3b42df6164 --- # CSimpleMapEqualHelper Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a helper for the [CSimpleMap](../../atl/reference/csimplemap-class.md) class. ## Syntax From 72cd28e08148a86ee9dffd73f88ec05e7343c0c4 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 25 Feb 2026 15:03:48 -0800 Subject: [PATCH 336/619] ATL batch 4: docs updates (files 295-394) --- docs/atl/reference/csimplemapequalhelperfalse-class.md | 3 ++- docs/atl/reference/csnapinitemimpl-class.md | 3 ++- docs/atl/reference/csnapinpropertypageimpl-class.md | 2 ++ docs/atl/reference/csocketaddr-class.md | 3 ++- docs/atl/reference/cstockpropimpl-class.md | 2 ++ docs/atl/reference/cstringelementtraits-class.md | 3 ++- docs/atl/reference/cstringelementtraitsi-class.md | 3 ++- docs/atl/reference/cstringrefelementtraits-class.md | 3 ++- docs/atl/reference/cthreadpool-class.md | 2 ++ docs/atl/reference/ctokengroups-class.md | 3 ++- docs/atl/reference/ctokenprivileges-class.md | 3 ++- docs/atl/reference/curl-class.md | 3 ++- docs/atl/reference/cw2aex-class.md | 2 ++ docs/atl/reference/cw2cwex-class.md | 3 ++- docs/atl/reference/cw2wex-class.md | 2 ++ docs/atl/reference/cwin32heap-class.md | 3 ++- docs/atl/reference/cwindow-class.md | 2 ++ docs/atl/reference/cwindowimpl-class.md | 3 ++- docs/atl/reference/cwintraits-class.md | 3 ++- docs/atl/reference/cwintraitsor-class.md | 3 ++- docs/atl/reference/cwndclassinfo-class.md | 3 ++- docs/atl/reference/cworkerthread-class.md | 3 ++- .../debugging-and-error-reporting-global-functions.md | 3 ++- docs/atl/reference/debugging-and-error-reporting-macros.md | 3 ++- docs/atl/reference/default-atl-project-configurations.md | 3 ++- docs/atl/reference/device-context-global-functions.md | 3 ++- docs/atl/reference/event-handling-global-functions.md | 3 ++- docs/atl/reference/exception-handling-macros.md | 3 ++- docs/atl/reference/iatlautothreadmodule-class.md | 3 ++- docs/atl/reference/iatlmemmgr-class.md | 3 ++- docs/atl/reference/iaxwinambientdispatch-interface.md | 3 ++- docs/atl/reference/iaxwinambientdispatchex-interface.md | 3 ++- docs/atl/reference/iaxwinhostwindow-interface.md | 3 ++- docs/atl/reference/iaxwinhostwindowlic-interface.md | 3 ++- docs/atl/reference/icollectiononstlimpl-class.md | 3 ++- docs/atl/reference/iconnectionpointcontainerimpl-class.md | 3 ++- docs/atl/reference/iconnectionpointimpl-class.md | 3 ++- docs/atl/reference/idataobjectimpl-class.md | 3 ++- docs/atl/reference/idispatchimpl-class.md | 3 ++- docs/atl/reference/idispeventimpl-class.md | 2 ++ docs/atl/reference/idispeventsimpleimpl-class.md | 3 ++- docs/atl/reference/idochostuihandlerdispatch-interface.md | 3 ++- docs/atl/reference/ienumonstlimpl-class.md | 3 ++- docs/atl/reference/interfaces-atl-control-wizard.md | 3 ++- docs/atl/reference/iobjectsafetyimpl-class.md | 3 ++- docs/atl/reference/iobjectwithsiteimpl-class.md | 3 ++- docs/atl/reference/iolecontrolimpl-class.md | 2 ++ docs/atl/reference/ioleinplaceactiveobjectimpl-class.md | 3 ++- docs/atl/reference/ioleinplaceobjectwindowlessimpl-class.md | 3 ++- docs/atl/reference/ioleobjectimpl-class.md | 3 ++- docs/atl/reference/iperpropertybrowsingimpl-class.md | 3 ++- docs/atl/reference/ipersistpropertybagimpl-class.md | 3 ++- docs/atl/reference/ipersiststorageimpl-class.md | 2 ++ docs/atl/reference/ipersiststreaminitimpl-class.md | 3 ++- docs/atl/reference/ipointerinactiveimpl-class.md | 3 ++- docs/atl/reference/ipropertynotifysinkcp-class.md | 3 ++- docs/atl/reference/ipropertypage2impl-class.md | 3 ++- docs/atl/reference/ipropertypageimpl-class.md | 3 ++- docs/atl/reference/iprovideclassinfo2impl-class.md | 3 ++- docs/atl/reference/iquickactivateimpl-class.md | 3 ++- docs/atl/reference/iregistrar-class.md | 3 ++- docs/atl/reference/irunnableobjectimpl-class.md | 3 ++- docs/atl/reference/iserviceproviderimpl-class.md | 3 ++- docs/atl/reference/ispecifypropertypagesimpl-class.md | 3 ++- docs/atl/reference/isupporterrorinfoimpl-class.md | 3 ++- docs/atl/reference/ithreadpoolconfig-interface.md | 3 ++- docs/atl/reference/iviewobjecteximpl-class.md | 3 ++- docs/atl/reference/iworkerthreadclient-interface.md | 3 ++- docs/atl/reference/making-an-atl-object-noncreatable.md | 3 ++- docs/atl/reference/marshaling-global-functions.md | 3 ++- docs/atl/reference/message-map-macros-atl.md | 3 ++- docs/atl/reference/mfc-support-in-atl-projects.md | 3 ++- docs/atl/reference/object-map-macros.md | 3 ++- docs/atl/reference/object-status-macros.md | 3 ++- .../options-atl-active-server-page-component-wizard.md | 3 ++- docs/atl/reference/options-atl-control-wizard.md | 3 ++- docs/atl/reference/options-atl-property-page-wizard.md | 3 ++- docs/atl/reference/options-atl-simple-object-wizard.md | 3 ++- .../reference/pixel-himetric-conversion-global-functions.md | 3 ++- docs/atl/reference/property-map-macros.md | 3 ++- docs/atl/reference/registry-and-typelib-global-functions.md | 3 ++- docs/atl/reference/registry-data-exchange-macros.md | 3 ++- docs/atl/reference/registry-macros.md | 3 ++- docs/atl/reference/security-global-functions.md | 3 ++- docs/atl/reference/security-identifier-global-functions.md | 3 ++- docs/atl/reference/server-registration-global-functions.md | 3 ++- docs/atl/reference/service-map-macros.md | 3 ++- docs/atl/reference/snap-in-object-macros.md | 3 ++- .../specifying-compiler-optimization-for-an-atl-project.md | 3 ++- docs/atl/reference/stock-properties-atl-control-wizard.md | 3 ++- docs/atl/reference/string-conversion-macros.md | 3 ++- docs/atl/reference/strings-atl-property-page-wizard.md | 3 ++- docs/atl/reference/u-menuorid-class.md | 3 ++- docs/atl/reference/u-rect-class.md | 3 ++- docs/atl/reference/u-stringorid-class.md | 3 ++- docs/atl/reference/win32threadtraits-class.md | 3 ++- docs/atl/reference/window-class-macros.md | 3 ++- docs/atl/reference/windows-messages-macros.md | 3 ++- docs/atl/reference/winmodule-global-functions.md | 3 ++- docs/atl/reference/worker-archetype.md | 3 ++- 100 files changed, 200 insertions(+), 91 deletions(-) diff --git a/docs/atl/reference/csimplemapequalhelperfalse-class.md b/docs/atl/reference/csimplemapequalhelperfalse-class.md index 97e43c2e59e..0be6f6a9539 100644 --- a/docs/atl/reference/csimplemapequalhelperfalse-class.md +++ b/docs/atl/reference/csimplemapequalhelperfalse-class.md @@ -4,10 +4,11 @@ title: "CSimpleMapEqualHelperFalse Class" ms.date: "11/04/2016" f1_keywords: ["CSimpleMapEqualHelperFalse", "ATLSIMPCOLL/ATL::CSimpleMapEqualHelperFalse", "ATLSIMPCOLL/ATL::CSimpleMapEqualHelperFalse::IsEqualKey", "ATLSIMPCOLL/ATL::CSimpleMapEqualHelperFalse::IsEqualValue"] helpviewer_keywords: ["CSimpleMapEqualHelperFalse class"] -ms.assetid: a873eea3-e130-45cc-a476-61ee79511c3b --- # CSimpleMapEqualHelperFalse Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a helper for the [CSimpleMap](../../atl/reference/csimplemap-class.md) class. ## Syntax diff --git a/docs/atl/reference/csnapinitemimpl-class.md b/docs/atl/reference/csnapinitemimpl-class.md index b302a376c2c..b9c745e5ff1 100644 --- a/docs/atl/reference/csnapinitemimpl-class.md +++ b/docs/atl/reference/csnapinitemimpl-class.md @@ -4,10 +4,11 @@ title: "CSnapInItemImpl Class" ms.date: "11/04/2016" f1_keywords: ["CSnapInItemImpl", "ATLSNAP/ATL::CSnapInItemImpl", "ATLSNAP/ATL::CSnapInItemImpl::CSnapInItemImpl", "ATLSNAP/ATL::CSnapInItemImpl::AddMenuItems", "ATLSNAP/ATL::CSnapInItemImpl::Command", "ATLSNAP/ATL::CSnapInItemImpl::CreatePropertyPages", "ATLSNAP/ATL::CSnapInItemImpl::FillData", "ATLSNAP/ATL::CSnapInItemImpl::GetResultPaneInfo", "ATLSNAP/ATL::CSnapInItemImpl::GetResultViewType", "ATLSNAP/ATL::CSnapInItemImpl::GetScopePaneInfo", "ATLSNAP/ATL::CSnapInItemImpl::Notify", "ATLSNAP/ATL::CSnapInItemImpl::QueryPagesFor", "ATLSNAP/ATL::CSnapInItemImpl::SetMenuInsertionFlags", "ATLSNAP/ATL::CSnapInItemImpl::SetToolbarButtonInfo", "ATLSNAP/ATL::CSnapInItemImpl::UpdateMenuState", "ATLSNAP/ATL::CSnapInItemImpl::UpdateToolbarButton", "ATLSNAP/ATL::CSnapInItemImpl::m_bstrDisplayName", "ATLSNAP/ATL::CSnapInItemImpl::m_resultDataItem", "ATLSNAP/ATL::CSnapInItemImpl::m_scopeDataItem"] helpviewer_keywords: ["snap-ins, data items", "snap-ins, ATL support for", "CSnapInItemImpl class", "snap-ins"] -ms.assetid: 52caefbd-9eae-49b0-add2-d55524271aa7 --- # CSnapInItemImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for implementing a snap-in node object. > [!IMPORTANT] diff --git a/docs/atl/reference/csnapinpropertypageimpl-class.md b/docs/atl/reference/csnapinpropertypageimpl-class.md index e7cd51b1c78..ab78fc1e15c 100644 --- a/docs/atl/reference/csnapinpropertypageimpl-class.md +++ b/docs/atl/reference/csnapinpropertypageimpl-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["snap-ins, property pages", "snap-ins", "property pages, A --- # CSnapInPropertyPageImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for implementing a snap-in property page object. > [!IMPORTANT] diff --git a/docs/atl/reference/csocketaddr-class.md b/docs/atl/reference/csocketaddr-class.md index de051c6ae62..5a186823dce 100644 --- a/docs/atl/reference/csocketaddr-class.md +++ b/docs/atl/reference/csocketaddr-class.md @@ -4,10 +4,11 @@ title: "CSocketAddr Class" ms.date: "10/22/2018" f1_keywords: ["CSocketAddr", "ATLSOCKET/ATL::CSocketAddr", "ATLSOCKET/ATL::CSocketAddr::CSocketAddr", "ATLSOCKET/ATL::CSocketAddr::FindAddr", "ATLSOCKET/ATL::CSocketAddr::FindINET4Addr", "ATLSOCKET/ATL::CSocketAddr::FindINET6Addr", "ATLSOCKET/ATL::CSocketAddr::GetAddrInfo", "ATLSOCKET/ATL::CSocketAddr::GetAddrInfoList"] helpviewer_keywords: ["CSocketAddr class"] -ms.assetid: 2fb2d8a7-899e-4a36-a342-cc9f4fcdd68c --- # CSocketAddr Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for converting host names to host addresses, supporting both IPv4 and IPV6 formats. ## Syntax diff --git a/docs/atl/reference/cstockpropimpl-class.md b/docs/atl/reference/cstockpropimpl-class.md index 1f4959941f7..0b5fc8d9fc6 100644 --- a/docs/atl/reference/cstockpropimpl-class.md +++ b/docs/atl/reference/cstockpropimpl-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["CStockPropImpl class", "controls [ATL], stock properties" --- # CStockPropImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for supporting stock property values. > [!IMPORTANT] diff --git a/docs/atl/reference/cstringelementtraits-class.md b/docs/atl/reference/cstringelementtraits-class.md index d314865a597..93cb8ccf5a2 100644 --- a/docs/atl/reference/cstringelementtraits-class.md +++ b/docs/atl/reference/cstringelementtraits-class.md @@ -4,10 +4,11 @@ title: "CStringElementTraits Class" ms.date: "11/04/2016" f1_keywords: ["CStringElementTraits", "CSTRINGT/ATL::CStringElementTraits", "CSTRINGT/ATL::CStringElementTraits::INARGTYPE", "CSTRINGT/ATL::CStringElementTraits::OUTARGTYPE", "CSTRINGT/ATL::CStringElementTraits::CompareElements", "CSTRINGT/ATL::CStringElementTraits::CompareElementsOrdered", "CSTRINGT/ATL::CStringElementTraits::CopyElements", "CSTRINGT/ATL::CStringElementTraits::Hash", "CSTRINGT/ATL::CStringElementTraits::RelocateElements"] helpviewer_keywords: ["CStringElementTraits class"] -ms.assetid: 74d7134b-099d-4455-bf91-3e68ccbf95bc --- # CStringElementTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides static functions used by collection classes storing `CString` objects. ## Syntax diff --git a/docs/atl/reference/cstringelementtraitsi-class.md b/docs/atl/reference/cstringelementtraitsi-class.md index 089e89ec285..41f472f6925 100644 --- a/docs/atl/reference/cstringelementtraitsi-class.md +++ b/docs/atl/reference/cstringelementtraitsi-class.md @@ -4,10 +4,11 @@ title: "CStringElementTraitsI Class" ms.date: "11/04/2016" f1_keywords: ["CStringElementTraitsI", "ATLCOLL/ATL::CStringElementTraitsI", "ATLCOLL/ATL::CStringElementTraitsI::INARGTYPE", "ATLCOLL/ATL::CStringElementTraitsI::OUTARGTYPE", "ATLCOLL/ATL::CStringElementTraitsI::CompareElements", "ATLCOLL/ATL::CStringElementTraitsI::CompareElementsOrdered", "ATLCOLL/ATL::CStringElementTraitsI::Hash"] helpviewer_keywords: ["CStringElementTraitsI class"] -ms.assetid: c23f92b1-91e5-400f-96ed-258b02622b7a --- # CStringElementTraitsI Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides static functions related to strings stored in collection class objects. It is similar to [CStringElementTraits](../../atl/reference/cstringelementtraits-class.md), but performs case-insensitive comparisons. ## Syntax diff --git a/docs/atl/reference/cstringrefelementtraits-class.md b/docs/atl/reference/cstringrefelementtraits-class.md index ed14c61490e..1973a6ed2fb 100644 --- a/docs/atl/reference/cstringrefelementtraits-class.md +++ b/docs/atl/reference/cstringrefelementtraits-class.md @@ -4,10 +4,11 @@ title: "CStringRefElementTraits Class" ms.date: "11/04/2016" f1_keywords: ["CStringRefElementTraits", "ATLCOLL/ATL::CStringRefElementTraits", "ATLCOLL/ATL::CStringRefElementTraits::CompareElements", "ATLCOLL/ATL::CStringRefElementTraits::CompareElementsOrdered", "ATLCOLL/ATL::CStringRefElementTraits::Hash"] helpviewer_keywords: ["CStringRefElementTraits class"] -ms.assetid: cc15062d-5627-46cc-ac2b-1744afdc2dbd --- # CStringRefElementTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides static functions related to strings stored in collection class objects. The string objects are dealt with as references. ## Syntax diff --git a/docs/atl/reference/cthreadpool-class.md b/docs/atl/reference/cthreadpool-class.md index 0cca6b473fa..a9760e62914 100644 --- a/docs/atl/reference/cthreadpool-class.md +++ b/docs/atl/reference/cthreadpool-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["CThreadPool class"] --- # CThreadPool Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides a pool of worker threads that process a queue of work items. ## Syntax diff --git a/docs/atl/reference/ctokengroups-class.md b/docs/atl/reference/ctokengroups-class.md index 50ca0053c9b..08dfba3fbf9 100644 --- a/docs/atl/reference/ctokengroups-class.md +++ b/docs/atl/reference/ctokengroups-class.md @@ -4,10 +4,11 @@ title: "CTokenGroups Class" ms.date: "11/04/2016" f1_keywords: ["CTokenGroups", "ATLSECURITY/ATL::CTokenGroups", "ATLSECURITY/ATL::CTokenGroups::CTokenGroups", "ATLSECURITY/ATL::CTokenGroups::Add", "ATLSECURITY/ATL::CTokenGroups::Delete", "ATLSECURITY/ATL::CTokenGroups::DeleteAll", "ATLSECURITY/ATL::CTokenGroups::GetCount", "ATLSECURITY/ATL::CTokenGroups::GetLength", "ATLSECURITY/ATL::CTokenGroups::GetPTOKEN_GROUPS", "ATLSECURITY/ATL::CTokenGroups::GetSidsAndAttributes", "ATLSECURITY/ATL::CTokenGroups::LookupSid"] helpviewer_keywords: ["CTokenGroups class"] -ms.assetid: 2ab08076-4b08-4487-bc70-ec6dee304190 --- # CTokenGroups Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a wrapper for the `TOKEN_GROUPS` structure. > [!IMPORTANT] diff --git a/docs/atl/reference/ctokenprivileges-class.md b/docs/atl/reference/ctokenprivileges-class.md index df23437d13c..43abc2e7c6c 100644 --- a/docs/atl/reference/ctokenprivileges-class.md +++ b/docs/atl/reference/ctokenprivileges-class.md @@ -4,10 +4,11 @@ title: "CTokenPrivileges Class" ms.date: "11/04/2016" f1_keywords: ["CTokenPrivileges", "ATLSECURITY/ATL::CTokenPrivileges", "ATLSECURITY/ATL::CTokenPrivileges::CTokenPrivileges", "ATLSECURITY/ATL::CTokenPrivileges::Add", "ATLSECURITY/ATL::CTokenPrivileges::Delete", "ATLSECURITY/ATL::CTokenPrivileges::DeleteAll", "ATLSECURITY/ATL::CTokenPrivileges::GetCount", "ATLSECURITY/ATL::CTokenPrivileges::GetDisplayNames", "ATLSECURITY/ATL::CTokenPrivileges::GetLength", "ATLSECURITY/ATL::CTokenPrivileges::GetLuidsAndAttributes", "ATLSECURITY/ATL::CTokenPrivileges::GetNamesAndAttributes", "ATLSECURITY/ATL::CTokenPrivileges::GetPTOKEN_PRIVILEGES", "ATLSECURITY/ATL::CTokenPrivileges::LookupPrivilege"] helpviewer_keywords: ["CTokenPrivileges class"] -ms.assetid: 89590105-f001-4014-870d-142926091231 --- # CTokenPrivileges Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is a wrapper for the `TOKEN_PRIVILEGES` structure. > [!IMPORTANT] diff --git a/docs/atl/reference/curl-class.md b/docs/atl/reference/curl-class.md index ff1a201f3fc..1676b7244ed 100644 --- a/docs/atl/reference/curl-class.md +++ b/docs/atl/reference/curl-class.md @@ -4,10 +4,11 @@ title: "CUrl Class" ms.date: "05/06/2019" f1_keywords: ["CUrl", "ATLUTIL/ATL::CUrl", "ATLUTIL/ATL::CUrl::CUrl", "ATLUTIL/ATL::CUrl::Canonicalize", "ATLUTIL/ATL::CUrl::Clear", "ATLUTIL/ATL::CUrl::CrackUrl", "ATLUTIL/ATL::CUrl::CreateUrl", "ATLUTIL/ATL::CUrl::GetExtraInfo", "ATLUTIL/ATL::CUrl::GetExtraInfoLength", "ATLUTIL/ATL::CUrl::GetHostName", "ATLUTIL/ATL::CUrl::GetHostNameLength", "ATLUTIL/ATL::CUrl::GetPassword", "ATLUTIL/ATL::CUrl::GetPasswordLength", "ATLUTIL/ATL::CUrl::GetPortNumber", "ATLUTIL/ATL::CUrl::GetScheme", "ATLUTIL/ATL::CUrl::GetSchemeName", "ATLUTIL/ATL::CUrl::GetSchemeNameLength", "ATLUTIL/ATL::CUrl::GetUrlLength", "ATLUTIL/ATL::CUrl::GetUrlPath", "ATLUTIL/ATL::CUrl::GetUrlPathLength", "ATLUTIL/ATL::CUrl::GetUserName", "ATLUTIL/ATL::CUrl::GetUserNameLength", "ATLUTIL/ATL::CUrl::SetExtraInfo", "ATLUTIL/ATL::CUrl::SetHostName", "ATLUTIL/ATL::CUrl::SetPassword", "ATLUTIL/ATL::CUrl::SetPortNumber", "ATLUTIL/ATL::CUrl::SetScheme", "ATLUTIL/ATL::CUrl::SetSchemeName", "ATLUTIL/ATL::CUrl::SetUrlPath", "ATLUTIL/ATL::CUrl::SetUserName"] helpviewer_keywords: ["CUrl class"] -ms.assetid: b3894d34-47b9-4961-9719-4197153793da --- # CUrl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents a URL. It allows you to manipulate each element of the URL independently of the others whether parsing an existing URL string or building a string from scratch. > [!IMPORTANT] diff --git a/docs/atl/reference/cw2aex-class.md b/docs/atl/reference/cw2aex-class.md index 9029cccbe76..ef2b3d63263 100644 --- a/docs/atl/reference/cw2aex-class.md +++ b/docs/atl/reference/cw2aex-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["CW2AEX class"] --- # `CW2AEX` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is used by the string conversion macros `CT2AEX`, `CW2TEX`, `CW2CTEX`, and `CT2CAEX`, and the typedef `CW2A`. > [!IMPORTANT] diff --git a/docs/atl/reference/cw2cwex-class.md b/docs/atl/reference/cw2cwex-class.md index 58df28f8f63..c00e6ef2143 100644 --- a/docs/atl/reference/cw2cwex-class.md +++ b/docs/atl/reference/cw2cwex-class.md @@ -4,10 +4,11 @@ title: "CW2CWEX Class" ms.date: "11/04/2016" f1_keywords: ["CW2CWEX", "ATLCONV/ATL::CW2CWEX", "ATLCONV/ATL::CW2CWEX::CW2CWEX", "ATLCONV/ATL::CW2CWEX::m_psz"] helpviewer_keywords: ["CW2CWEX class"] -ms.assetid: d654b22b-05a6-410f-a0ec-9a2cbbb4cca7 --- # CW2CWEX Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is used by the string conversion macros CW2CTEX and CT2CWEX, and the typedef CW2W. > [!IMPORTANT] diff --git a/docs/atl/reference/cw2wex-class.md b/docs/atl/reference/cw2wex-class.md index d5c15f69f2e..7148e484e49 100644 --- a/docs/atl/reference/cw2wex-class.md +++ b/docs/atl/reference/cw2wex-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["CW2WEX class"] --- # CW2WEX Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class is used by the string conversion macros CW2TEX and CT2WEX, and the typedef CW2W. > [!IMPORTANT] diff --git a/docs/atl/reference/cwin32heap-class.md b/docs/atl/reference/cwin32heap-class.md index 8c69f91f153..0076ab7e2c0 100644 --- a/docs/atl/reference/cwin32heap-class.md +++ b/docs/atl/reference/cwin32heap-class.md @@ -4,10 +4,11 @@ title: "CWin32Heap Class" ms.date: "11/04/2016" f1_keywords: ["CWin32Heap", "ATLMEM/ATL::CWin32Heap", "ATLMEM/ATL::CWin32Heap::CWin32Heap", "ATLMEM/ATL::CWin32Heap::Allocate", "ATLMEM/ATL::CWin32Heap::Attach", "ATLMEM/ATL::CWin32Heap::Detach", "ATLMEM/ATL::CWin32Heap::Free", "ATLMEM/ATL::CWin32Heap::GetSize", "ATLMEM/ATL::CWin32Heap::Reallocate", "ATLMEM/ATL::CWin32Heap::m_bOwnHeap", "ATLMEM/ATL::CWin32Heap::m_hHeap"] helpviewer_keywords: ["CWin32Heap class"] -ms.assetid: 69176022-ed98-4e3b-96d8-116b0c58ac95 --- # CWin32Heap Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements [IAtlMemMgr](../../atl/reference/iatlmemmgr-class.md) using the Win32 heap allocation functions. > [!IMPORTANT] diff --git a/docs/atl/reference/cwindow-class.md b/docs/atl/reference/cwindow-class.md index c91fae3db68..99016859b08 100644 --- a/docs/atl/reference/cwindow-class.md +++ b/docs/atl/reference/cwindow-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["CWindow class"] --- # `CWindow` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for manipulating a window. > [!IMPORTANT] diff --git a/docs/atl/reference/cwindowimpl-class.md b/docs/atl/reference/cwindowimpl-class.md index d2041bc669a..bfd4e676f0c 100644 --- a/docs/atl/reference/cwindowimpl-class.md +++ b/docs/atl/reference/cwindowimpl-class.md @@ -4,10 +4,11 @@ title: "CWindowImpl Class" ms.date: "11/04/2016" f1_keywords: ["CWindowImpl", "ATLWIN/ATL::CWindowImpl", "ATLWIN/ATL::CWindowImpl::Create", "ATLWIN/ATL::CWindowImpl::DefWindowProc", "ATLWIN/ATL::CWindowImpl::GetCurrentMessage", "ATLWIN/ATL::CWindowImpl::GetWindowProc", "ATLWIN/ATL::CWindowImpl::OnFinalMessage", "ATLWIN/ATL::CWindowImpl::SubclassWindow", "ATLWIN/ATL::CWindowImpl::UnsubclassWindow", "ATLWIN/ATL::CWindowImpl::GetWndClassInfo", "ATLWIN/ATL::CWindowImpl::WindowProc", "ATLWIN/ATL::CWindowImpl::m_pfnSuperWindowProc"] helpviewer_keywords: ["CWindowImpl class", "subclassing windows, ATL"] -ms.assetid: 02eefd45-a0a6-4d1b-99f6-dbf627e2cc2f --- # CWindowImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Provides methods for creating or subclassing a window. > [!IMPORTANT] diff --git a/docs/atl/reference/cwintraits-class.md b/docs/atl/reference/cwintraits-class.md index e7d7b65eabc..123d908d88a 100644 --- a/docs/atl/reference/cwintraits-class.md +++ b/docs/atl/reference/cwintraits-class.md @@ -4,10 +4,11 @@ title: "CWinTraits Class" ms.date: "11/04/2016" f1_keywords: ["CWinTraits", "ATLWIN/ATL::CWinTraits", "ATLWIN/ATL::CWinTraits::GetWndExStyle", "ATLWIN/ATL::CWinTraits::GetWndStyle"] helpviewer_keywords: ["CMDIChildWinTraits class", "window styles, default values for ATL", "CWinTraits class", "CFrameWinTraits class", "CControlWinTraits class"] -ms.assetid: f78f486e-6d9c-42c6-8e86-371e05aa7e59 --- # CWinTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides a method for standardizing the styles used when creating a window object. > [!IMPORTANT] diff --git a/docs/atl/reference/cwintraitsor-class.md b/docs/atl/reference/cwintraitsor-class.md index fbc54c0034a..8f6c147d330 100644 --- a/docs/atl/reference/cwintraitsor-class.md +++ b/docs/atl/reference/cwintraitsor-class.md @@ -4,10 +4,11 @@ title: "CWinTraitsOR Class" ms.date: "11/04/2016" f1_keywords: ["CWinTraitsOR", "ATLWIN/ATL::CWinTraitsOR", "ATLWIN/ATL::CWinTraitsOR::GetWndExStyle", "ATLWIN/ATL::CWinTraitsOR::GetWndStyle"] helpviewer_keywords: ["CWinTraitsOR class", "window styles, default values for ATL"] -ms.assetid: 1eb7b1e8-a9bd-411b-a30a-35a8a10af989 --- # CWinTraitsOR Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides a method for standardizing the styles used when creating a window object. > [!IMPORTANT] diff --git a/docs/atl/reference/cwndclassinfo-class.md b/docs/atl/reference/cwndclassinfo-class.md index 0ac47624556..4cbf31cfbf4 100644 --- a/docs/atl/reference/cwndclassinfo-class.md +++ b/docs/atl/reference/cwndclassinfo-class.md @@ -4,10 +4,11 @@ title: "CWndClassInfo Class" ms.date: "11/04/2016" f1_keywords: ["CWndClassInfo", "ATLWIN/ATL::CWndClassInfo", "ATLWIN/ATL::Register", "ATLWIN/ATL::m_atom", "ATLWIN/ATL::m_bSystemCursor", "ATLWIN/ATL::m_lpszCursorID", "ATLWIN/ATL::m_lpszOrigName", "ATLWIN/ATL::m_szAutoName", "ATLWIN/ATL::m_wc", "ATLWIN/ATL::pWndProc"] helpviewer_keywords: ["CWndClassInfo class"] -ms.assetid: c36fe7e1-75f1-4cf5-a06f-9f59c43fe6fb --- # CWndClassInfo Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for registering information for a window class. > [!IMPORTANT] diff --git a/docs/atl/reference/cworkerthread-class.md b/docs/atl/reference/cworkerthread-class.md index a0171833ba9..8e3c4e5cbb1 100644 --- a/docs/atl/reference/cworkerthread-class.md +++ b/docs/atl/reference/cworkerthread-class.md @@ -4,10 +4,11 @@ title: "CWorkerThread Class" ms.date: "11/04/2016" f1_keywords: ["CWorkerThread", "ATLUTIL/ATL::CWorkerThread", "ATLUTIL/ATL::CWorkerThread::CWorkerThread", "ATLUTIL/ATL::CWorkerThread::AddHandle", "ATLUTIL/ATL::CWorkerThread::AddTimer", "ATLUTIL/ATL::CWorkerThread::GetThreadHandle", "ATLUTIL/ATL::CWorkerThread::GetThreadId", "ATLUTIL/ATL::CWorkerThread::Initialize", "ATLUTIL/ATL::CWorkerThread::RemoveHandle", "ATLUTIL/ATL::CWorkerThread::Shutdown"] helpviewer_keywords: ["CWorkerThread class"] -ms.assetid: be79a832-1345-4a36-a13e-a406cc65286f --- # CWorkerThread Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class creates a worker thread or uses an existing one, waits on one or more kernel object handles, and executes a specified client function when one of the handles is signaled. > [!IMPORTANT] diff --git a/docs/atl/reference/debugging-and-error-reporting-global-functions.md b/docs/atl/reference/debugging-and-error-reporting-global-functions.md index defba9ea3c3..0d293887fd6 100644 --- a/docs/atl/reference/debugging-and-error-reporting-global-functions.md +++ b/docs/atl/reference/debugging-and-error-reporting-global-functions.md @@ -4,10 +4,11 @@ title: "Debugging and Error Reporting Global Functions" ms.date: "11/04/2016" f1_keywords: ["atlcomcli/ATL::AtlHresultFromLastError", "atlcom/ATL::AtlReportError", "atldef/ATL::AtlThrow"] helpviewer_keywords: ["functions [ATL], error reporting"] -ms.assetid: 11339c02-98cd-428d-b3b9-7deeb155a6a3 --- # Debugging and Error Reporting Global Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These functions provide useful debugging and trace facilities. |Name|Description| diff --git a/docs/atl/reference/debugging-and-error-reporting-macros.md b/docs/atl/reference/debugging-and-error-reporting-macros.md index 463ef4c0072..c5d43762cfc 100644 --- a/docs/atl/reference/debugging-and-error-reporting-macros.md +++ b/docs/atl/reference/debugging-and-error-reporting-macros.md @@ -4,10 +4,11 @@ title: "Debugging and Error Reporting Macros" ms.date: "05/06/2019" f1_keywords: ["atldef/ATL::_ATL_DEBUG_INTERFACES", "atldef/ATL::_ATL_DEBUG_QI", "atldef/ATL::ATLASSERT", "afx/ATL::ATLENSURE", "atltrace/ATL::ATLTRACENOTIMPL", "atltrace/ATL::ATLTRACE", "ATLDEF/_ATL_DEBUG_INTERFACES", "ATLDEF/_ATL_DEBUG_QI", "ATLDEF/ATLASSERT", "AFX/ATLENSURE", "ATLTRACE/ATLTRACENOTIMPL", "ATLTRACE/ATLTRACE", "ATLDEF/ATLSTATIC_ASSERT"] helpviewer_keywords: ["macros, error reporting"] -ms.assetid: 4da9b87f-ec5c-4a32-ab93-637780909b9d --- # Debugging and Error Reporting Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros provide useful debugging and trace facilities. |Name|Description| diff --git a/docs/atl/reference/default-atl-project-configurations.md b/docs/atl/reference/default-atl-project-configurations.md index 0b8caec7af5..bca92e9bb53 100644 --- a/docs/atl/reference/default-atl-project-configurations.md +++ b/docs/atl/reference/default-atl-project-configurations.md @@ -3,10 +3,11 @@ description: "Learn more about: Default ATL Project Configurations" title: "Default ATL Project Configurations" ms.date: "10/20/2017" helpviewer_keywords: ["ATL projects, default configurations"] -ms.assetid: 7e272722-41af-4330-b965-a6d74ec16880 --- # Default ATL Project Configurations +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + The ATL Project Wizard creates two project configurations by default: |Configuration|Character set|Use of ATL| diff --git a/docs/atl/reference/device-context-global-functions.md b/docs/atl/reference/device-context-global-functions.md index 7ef43f0431e..0720fd8042b 100644 --- a/docs/atl/reference/device-context-global-functions.md +++ b/docs/atl/reference/device-context-global-functions.md @@ -3,10 +3,11 @@ description: "Learn more about: Device Context Global Functions" title: "Device Context Global Functions" ms.date: "11/04/2016" f1_keywords: ["atlwin/ATL::AtlCreateTargetDC"] -ms.assetid: 08ec28f6-daff-4882-9544-e8a4639d05c4 --- # Device Context Global Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This function creates a device context for a given device. |Name|Description| diff --git a/docs/atl/reference/event-handling-global-functions.md b/docs/atl/reference/event-handling-global-functions.md index 69c6f619b65..f5948e23c2d 100644 --- a/docs/atl/reference/event-handling-global-functions.md +++ b/docs/atl/reference/event-handling-global-functions.md @@ -4,10 +4,11 @@ title: "Event Handling Global Functions" ms.date: "11/04/2016" f1_keywords: ["atlbase/ATL::AtlWaitWithMessageLoop"] helpviewer_keywords: ["event handling, global functions", "global functions, event handling"] -ms.assetid: fd674470-3def-47c3-be1c-894fa85f13e8 --- # Event Handling Global Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This function provides an event handler. > [!IMPORTANT] diff --git a/docs/atl/reference/exception-handling-macros.md b/docs/atl/reference/exception-handling-macros.md index 44f99934523..fe201b9e3a1 100644 --- a/docs/atl/reference/exception-handling-macros.md +++ b/docs/atl/reference/exception-handling-macros.md @@ -4,10 +4,11 @@ title: "Exception Handling Macros" ms.date: "11/04/2016" f1_keywords: ["atldef/ATL::_ATLCATCH", "atldef/ATL::_ATLCATCHALL", "atldef/ATL::_ATLTRY", "ATLDEF/_ATLCATCH", "ATLDEF/_ATLCATCHALL", "ATLDEF/_ATLTRY"] helpviewer_keywords: ["exception handling, macros", "C++ exception handling, macros"] -ms.assetid: a8385d34-3fb0-4006-a42a-de045cacf0f4 --- # Exception Handling Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros provide support for exception handling. |Name|Description| diff --git a/docs/atl/reference/iatlautothreadmodule-class.md b/docs/atl/reference/iatlautothreadmodule-class.md index 42df620330a..f83105ba786 100644 --- a/docs/atl/reference/iatlautothreadmodule-class.md +++ b/docs/atl/reference/iatlautothreadmodule-class.md @@ -4,10 +4,11 @@ title: "IAtlAutoThreadModule Class" ms.date: "11/04/2016" f1_keywords: ["IAtlAutoThreadModule", "atlbase/ATL::IAtlAutoThreadModule"] helpviewer_keywords: ["IAtlAutoThreadModule class"] -ms.assetid: fcb58cf9-a427-4be9-89eb-04e1ab5cc3a1 --- # IAtlAutoThreadModule Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents an interface to a `CreateInstance` method. > [!IMPORTANT] diff --git a/docs/atl/reference/iatlmemmgr-class.md b/docs/atl/reference/iatlmemmgr-class.md index 46acd301740..5df51a5cfc1 100644 --- a/docs/atl/reference/iatlmemmgr-class.md +++ b/docs/atl/reference/iatlmemmgr-class.md @@ -4,10 +4,11 @@ title: "IAtlMemMgr Class" ms.date: "11/04/2016" f1_keywords: ["IAtlMemMgr", "ATLMEM/ATL::IAtlMemMgr", "ATLMEM/ATL::Allocate", "ATLMEM/ATL::Free", "ATLMEM/ATL::GetSize", "ATLMEM/ATL::Reallocate"] helpviewer_keywords: ["IAtlMemMgr class", "memory, managing", "memory, memory manager"] -ms.assetid: 18b2c569-25fe-4464-bdb6-3b1abef7154a --- # IAtlMemMgr Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents the interface to a memory manager. ## Syntax diff --git a/docs/atl/reference/iaxwinambientdispatch-interface.md b/docs/atl/reference/iaxwinambientdispatch-interface.md index f1799cf5b26..4810d037297 100644 --- a/docs/atl/reference/iaxwinambientdispatch-interface.md +++ b/docs/atl/reference/iaxwinambientdispatch-interface.md @@ -4,10 +4,11 @@ title: "IAxWinAmbientDispatch Interface" ms.date: "11/04/2016" f1_keywords: ["IAxWinAmbientDispatch", "ATLIFACE/ATL::IAxWinAmbientDispatch", "ATLIFACE/ATL::get_AllowContextMenu", "ATLIFACE/ATL::get_AllowShowUI", "ATLIFACE/ATL::get_AllowWindowlessActivation", "ATLIFACE/ATL::get_BackColor", "ATLIFACE/ATL::get_DisplayAsDefault", "ATLIFACE/ATL::get_DocHostDoubleClickFlags", "ATLIFACE/ATL::get_DocHostFlags", "ATLIFACE/ATL::get_Font", "ATLIFACE/ATL::get_ForeColor", "ATLIFACE/ATL::get_LocaleID", "ATLIFACE/ATL::get_MessageReflect", "ATLIFACE/ATL::get_OptionKeyPath", "ATLIFACE/ATL::get_ShowGrabHandles", "ATLIFACE/ATL::get_ShowHatching", "ATLIFACE/ATL::get_UserMode", "ATLIFACE/ATL::put_AllowContextMenu", "ATLIFACE/ATL::put_AllowShowUI", "ATLIFACE/ATL::put_AllowWindowlessActivation", "ATLIFACE/ATL::put_BackColor", "ATLIFACE/ATL::put_DisplayAsDefault", "ATLIFACE/ATL::put_DocHostDoubleClickFlags", "ATLIFACE/ATL::put_DocHostFlags", "ATLIFACE/ATL::put_Font", "ATLIFACE/ATL::put_ForeColor", "ATLIFACE/ATL::put_LocaleID", "ATLIFACE/ATL::put_MessageReflect", "ATLIFACE/ATL::put_OptionKeyPath", "ATLIFACE/ATL::put_UserMode"] helpviewer_keywords: ["IAxWinAmbientDispatch interface"] -ms.assetid: 55ba6f7b-7a3c-4792-ae47-c8a84b683ca9 --- # IAxWinAmbientDispatch Interface +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This interface provides methods for specifying characteristics of the hosted control or container. > [!IMPORTANT] diff --git a/docs/atl/reference/iaxwinambientdispatchex-interface.md b/docs/atl/reference/iaxwinambientdispatchex-interface.md index 4df19f4e982..45190ff5ecb 100644 --- a/docs/atl/reference/iaxwinambientdispatchex-interface.md +++ b/docs/atl/reference/iaxwinambientdispatchex-interface.md @@ -4,10 +4,11 @@ title: "IAxWinAmbientDispatchEx Interface" ms.date: "11/04/2016" f1_keywords: ["IAxWinAmbientDispatchEx", "ATLIFACE/ATL::IAxWinAmbientDispatchEx", "ATLIFACE/ATL::SetAmbientDispatch"] helpviewer_keywords: ["IAxWinAmbientDispatchEx interface"] -ms.assetid: 2c25e079-6128-4278-bc72-b2c6195ba7ef --- # IAxWinAmbientDispatchEx Interface +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This interface implements supplemental ambient properties for a hosted control. > [!IMPORTANT] diff --git a/docs/atl/reference/iaxwinhostwindow-interface.md b/docs/atl/reference/iaxwinhostwindow-interface.md index 38ea65043d6..9b981a96ee3 100644 --- a/docs/atl/reference/iaxwinhostwindow-interface.md +++ b/docs/atl/reference/iaxwinhostwindow-interface.md @@ -4,10 +4,11 @@ title: "IAxWinHostWindow Interface" ms.date: "11/04/2016" f1_keywords: ["IAxWinHostWindow", "ATLIFACE/ATL::IAxWinHostWindow", "ATLIFACE/ATL::AttachControl", "ATLIFACE/ATL::CreateControl", "ATLIFACE/ATL::CreateControlEx", "ATLIFACE/ATL::QueryControl", "ATLIFACE/ATL::SetExternalDispatch", "ATLIFACE/ATL::SetExternalUIHandler"] helpviewer_keywords: ["IAxWinHostWindow interface"] -ms.assetid: 9821c035-cd52-4c46-b58a-9278064f09b4 --- # IAxWinHostWindow Interface +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This interface provides methods for manipulating a control and its host object. > [!IMPORTANT] diff --git a/docs/atl/reference/iaxwinhostwindowlic-interface.md b/docs/atl/reference/iaxwinhostwindowlic-interface.md index e2d65671f24..49479516988 100644 --- a/docs/atl/reference/iaxwinhostwindowlic-interface.md +++ b/docs/atl/reference/iaxwinhostwindowlic-interface.md @@ -4,10 +4,11 @@ title: "IAxWinHostWindowLic Interface" ms.date: "11/04/2016" f1_keywords: ["IAxWinHostWindowLic", "ATLIFACE/ATL::IAxWinHostWindowLic", "ATLIFACE/ATL::CreateControlLic", "ATLIFACE/ATL::CreateControlLicEx"] helpviewer_keywords: ["IAxWinHostWindowLic interface"] -ms.assetid: 750f1520-6bce-428c-aca0-fccbe3f063c7 --- # IAxWinHostWindowLic Interface +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This interface provides methods for manipulating a licensed control and its host object. ## Syntax diff --git a/docs/atl/reference/icollectiononstlimpl-class.md b/docs/atl/reference/icollectiononstlimpl-class.md index 58c7584c398..54377d23a95 100644 --- a/docs/atl/reference/icollectiononstlimpl-class.md +++ b/docs/atl/reference/icollectiononstlimpl-class.md @@ -4,10 +4,11 @@ title: "ICollectionOnSTLImpl Class" ms.date: "11/04/2016" f1_keywords: ["ICollectionOnSTLImpl", "ATLCOM/ATL::ICollectionOnSTLImpl", "ATLCOM/ATL::ICollectionOnSTLImpl::get__NewEnum", "ATLCOM/ATL::ICollectionOnSTLImpl::getcount", "ATLCOM/ATL::ICollectionOnSTLImpl::get_Item", "ATLCOM/ATL::ICollectionOnSTLImpl::m_coll"] helpviewer_keywords: ["ICollectionOnSTLImpl class"] -ms.assetid: 683c88b0-0d97-4779-a762-e493334ba7f9 --- # ICollectionOnSTLImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods used by a collection class. ## Syntax diff --git a/docs/atl/reference/iconnectionpointcontainerimpl-class.md b/docs/atl/reference/iconnectionpointcontainerimpl-class.md index fd6e2362ee3..e7575eb5862 100644 --- a/docs/atl/reference/iconnectionpointcontainerimpl-class.md +++ b/docs/atl/reference/iconnectionpointcontainerimpl-class.md @@ -4,10 +4,11 @@ title: "IConnectionPointContainerImpl Class" ms.date: "11/04/2016" f1_keywords: ["IConnectionPointContainerImpl", "ATLCOM/ATL::IConnectionPointContainerImpl", "ATLCOM/ATL::IConnectionPointContainerImpl::EnumConnectionPoints", "ATLCOM/ATL::IConnectionPointContainerImpl::FindConnectionPoint"] helpviewer_keywords: ["connectable objects", "connection points [C++], container", "IConnectionPointContainerImpl class"] -ms.assetid: 10db5a8d-8be9-4d9d-8a82-8ab9ffe3e9d6 --- # IConnectionPointContainerImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements a connection point container to manage a collection of [IConnectionPointImpl](../../atl/reference/iconnectionpointimpl-class.md) objects. ## Syntax diff --git a/docs/atl/reference/iconnectionpointimpl-class.md b/docs/atl/reference/iconnectionpointimpl-class.md index 2b51b7bc46c..01653837946 100644 --- a/docs/atl/reference/iconnectionpointimpl-class.md +++ b/docs/atl/reference/iconnectionpointimpl-class.md @@ -4,10 +4,11 @@ title: "IConnectionPointImpl Class" ms.date: "11/04/2016" f1_keywords: ["IConnectionPointImpl", "ATLCOM/ATL::IConnectionPointImpl", "ATLCOM/ATL::IConnectionPointImpl::Advise", "ATLCOM/ATL::IConnectionPointImpl::EnumConnections", "ATLCOM/ATL::IConnectionPointImpl::GetConnectionInterface", "ATLCOM/ATL::IConnectionPointImpl::GetConnectionPointContainer", "ATLCOM/ATL::IConnectionPointImpl::Unadvise", "ATLCOM/ATL::IConnectionPointImpl::m_vec"] helpviewer_keywords: ["connection points [C++], implementing", "IConnectionPointImpl class"] -ms.assetid: 27992115-3b86-45dd-bc9e-54f32876c557 --- # IConnectionPointImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements a connection point. ## Syntax diff --git a/docs/atl/reference/idataobjectimpl-class.md b/docs/atl/reference/idataobjectimpl-class.md index 3ebc3c44024..66da64d27e2 100644 --- a/docs/atl/reference/idataobjectimpl-class.md +++ b/docs/atl/reference/idataobjectimpl-class.md @@ -4,10 +4,11 @@ title: "IDataObjectImpl Class" ms.date: "11/04/2016" f1_keywords: ["IDataObjectImpl", "ATLCTL/ATL::IDataObjectImpl", "ATLCTL/ATL::IDataObjectImpl::DAdvise", "ATLCTL/ATL::IDataObjectImpl::DUnadvise", "ATLCTL/ATL::IDataObjectImpl::EnumDAdvise", "ATLCTL/ATL::IDataObjectImpl::EnumFormatEtc", "ATLCTL/ATL::IDataObjectImpl::FireDataChange", "ATLCTL/ATL::IDataObjectImpl::GetCanonicalFormatEtc", "ATLCTL/ATL::IDataObjectImpl::GetData", "ATLCTL/ATL::IDataObjectImpl::GetDataHere", "ATLCTL/ATL::IDataObjectImpl::QueryGetData", "ATLCTL/ATL::IDataObjectImpl::SetData"] helpviewer_keywords: ["data transfer [C++]", "data transfer [C++], Uniform Data Transfer", "IDataObjectImpl class", "IDataObject, ATL implementation"] -ms.assetid: b680f0f7-7795-40a1-a0f6-f48768201c89 --- # IDataObjectImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for supporting Uniform Data Transfer and managing connections. > [!IMPORTANT] diff --git a/docs/atl/reference/idispatchimpl-class.md b/docs/atl/reference/idispatchimpl-class.md index e44623c7625..ee9891c47fb 100644 --- a/docs/atl/reference/idispatchimpl-class.md +++ b/docs/atl/reference/idispatchimpl-class.md @@ -4,10 +4,11 @@ title: "IDispatchImpl Class" ms.date: "11/04/2016" f1_keywords: ["IDispatchImpl", "ATLCOM/ATL::IDispatchImpl", "ATLCOM/ATL::IDispatchImpl::IDispatchImpl", "ATLCOM/ATL::IDispatchImpl::GetIDsOfNames", "ATLCOM/ATL::IDispatchImpl::GetTypeInfo", "ATLCOM/ATL::IDispatchImpl::GetTypeInfoCount", "ATLCOM/ATL::IDispatchImpl::Invoke"] helpviewer_keywords: ["dual interfaces, classes", "IDispatchImpl class", "IDispatch class support in ATL"] -ms.assetid: 8108eb36-1228-4127-a203-3ab5ba488892 --- # IDispatchImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Provides a default implementation for the `IDispatch` part of a dual interface. > [!IMPORTANT] diff --git a/docs/atl/reference/idispeventimpl-class.md b/docs/atl/reference/idispeventimpl-class.md index ef54c3c7b5c..fe3cb6578ab 100644 --- a/docs/atl/reference/idispeventimpl-class.md +++ b/docs/atl/reference/idispeventimpl-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["IDispEventImpl class"] --- # `IDispEventImpl` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides implementations of the `IDispatch` methods. > [!IMPORTANT] diff --git a/docs/atl/reference/idispeventsimpleimpl-class.md b/docs/atl/reference/idispeventsimpleimpl-class.md index c76ceee1297..4224ca90998 100644 --- a/docs/atl/reference/idispeventsimpleimpl-class.md +++ b/docs/atl/reference/idispeventsimpleimpl-class.md @@ -4,10 +4,11 @@ title: "IDispEventSimpleImpl Class" ms.date: "11/04/2016" f1_keywords: ["IDispEventSimpleImpl", "ATLCOM/ATL::IDispEventSimpleImpl", "ATLCOM/ATL::IDispEventSimpleImpl::Advise", "ATLCOM/ATL::IDispEventSimpleImpl::DispEventAdvise", "ATLCOM/ATL::IDispEventSimpleImpl::DispEventUnadvise", "ATLCOM/ATL::IDispEventSimpleImpl::GetIDsOfNames", "ATLCOM/ATL::IDispEventSimpleImpl::GetTypeInfo", "ATLCOM/ATL::IDispEventSimpleImpl::GetTypeInfoCount", "ATLCOM/ATL::IDispEventSimpleImpl::Invoke", "ATLCOM/ATL::IDispEventSimpleImpl::Unadvise"] helpviewer_keywords: ["IDispEventSimpleImpl class"] -ms.assetid: 971d82b7-a921-47fa-a4d8-909bed377ab0 --- # IDispEventSimpleImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides implementations of the `IDispatch` methods, without getting type information from a type library. > [!IMPORTANT] diff --git a/docs/atl/reference/idochostuihandlerdispatch-interface.md b/docs/atl/reference/idochostuihandlerdispatch-interface.md index d748d3e3df2..35749bfb535 100644 --- a/docs/atl/reference/idochostuihandlerdispatch-interface.md +++ b/docs/atl/reference/idochostuihandlerdispatch-interface.md @@ -4,10 +4,11 @@ title: "IDocHostUIHandlerDispatch Interface" ms.date: "07/02/2019" f1_keywords: ["IDocHostUIHandlerDispatch", "atlbase/ATL::IDocHostUIHandlerDispatch"] helpviewer_keywords: ["IDocHostUIHandlerDispatch interface"] -ms.assetid: 6963a301-601a-4ac3-8bef-f7b252ea2fc6 --- # IDocHostUIHandlerDispatch Interface +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + An interface to the Microsoft HTML parsing and rendering engine. > [!IMPORTANT] diff --git a/docs/atl/reference/ienumonstlimpl-class.md b/docs/atl/reference/ienumonstlimpl-class.md index c8c694372a0..99b2f3ab0b2 100644 --- a/docs/atl/reference/ienumonstlimpl-class.md +++ b/docs/atl/reference/ienumonstlimpl-class.md @@ -4,10 +4,11 @@ title: "IEnumOnSTLImpl Class" ms.date: "11/04/2016" f1_keywords: ["IEnumOnSTLImpl", "ATLCOM/ATL::IEnumOnSTLImpl", "ATLCOM/ATL::IEnumOnSTLImpl::Clone", "ATLCOM/ATL::IEnumOnSTLImpl::Init", "ATLCOM/ATL::IEnumOnSTLImpl::Next", "ATLCOM/ATL::IEnumOnSTLImpl::Reset", "ATLCOM/ATL::IEnumOnSTLImpl::Skip", "ATLCOM/ATL::IEnumOnSTLImpl::m_iter", "ATLCOM/ATL::IEnumOnSTLImpl::m_pcollection", "ATLCOM/ATL::IEnumOnSTLImpl::m_spUnk"] helpviewer_keywords: ["IEnumOnSTLImpl class"] -ms.assetid: 1789e77b-88b8-447d-a490-806b918912ce --- # IEnumOnSTLImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class defines an enumerator interface based on a C++ Standard Library collection. ## Syntax diff --git a/docs/atl/reference/interfaces-atl-control-wizard.md b/docs/atl/reference/interfaces-atl-control-wizard.md index 97794e03f9b..f27b167effe 100644 --- a/docs/atl/reference/interfaces-atl-control-wizard.md +++ b/docs/atl/reference/interfaces-atl-control-wizard.md @@ -4,10 +4,11 @@ title: "Interfaces, ATL Control Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.class.atl.control.interfaces"] helpviewer_keywords: ["ATL Control Wizard, interfaces"] -ms.assetid: 971eadcd-6a1e-46f2-b8fe-ee6b53dfe3ea --- # Interfaces, ATL Control Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This page of the wizard identifies the interfaces that the control supports. By default, the supported interfaces are those typically used by most containers. > [!NOTE] diff --git a/docs/atl/reference/iobjectsafetyimpl-class.md b/docs/atl/reference/iobjectsafetyimpl-class.md index dee092995fc..61f7cf4f394 100644 --- a/docs/atl/reference/iobjectsafetyimpl-class.md +++ b/docs/atl/reference/iobjectsafetyimpl-class.md @@ -4,10 +4,11 @@ title: "IObjectSafetyImpl Class" ms.date: "11/04/2016" f1_keywords: ["IObjectSafetyImpl", "ATLCTL/ATL::IObjectSafetyImpl", "ATLCTL/ATL::IObjectSafetyImpl::GetInterfaceSafetyOptions", "ATLCTL/ATL::IObjectSafetyImpl::SetInterfaceSafetyOptions", "ATLCTL/ATL::IObjectSafetyImpl::m_dwCurrentSafety"] helpviewer_keywords: ["controls [ATL], safe", "safe for scripting and initialization (controls)", "IObjectSafety, ATL implementation", "IObjectSafetyImpl class"] -ms.assetid: 64e32082-d910-4a8a-a5bf-ebed9145359d --- # IObjectSafetyImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides a default implementation of the `IObjectSafety` interface to allow a client to retrieve and set an object's safety levels. > [!IMPORTANT] diff --git a/docs/atl/reference/iobjectwithsiteimpl-class.md b/docs/atl/reference/iobjectwithsiteimpl-class.md index 5ae9a4b8d7c..3d686a03d63 100644 --- a/docs/atl/reference/iobjectwithsiteimpl-class.md +++ b/docs/atl/reference/iobjectwithsiteimpl-class.md @@ -4,10 +4,11 @@ title: "IObjectWithSiteImpl Class" ms.date: "11/04/2016" f1_keywords: ["IObjectWithSiteImpl", "ATLCOM/ATL::IObjectWithSiteImpl", "ATLCOM/ATL::IObjectWithSiteImpl::GetSite", "ATLCOM/ATL::IObjectWithSiteImpl::SetChildSite", "ATLCOM/ATL::IObjectWithSiteImpl::SetSite", "ATLCOM/ATL::IObjectWithSiteImpl::m_spUnkSite"] helpviewer_keywords: ["IObjectWithSiteImpl class"] -ms.assetid: 4e1f774f-bc3d-45ee-9a1c-c3533a511588 --- # IObjectWithSiteImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods allowing an object to communicate with its site. ## Syntax diff --git a/docs/atl/reference/iolecontrolimpl-class.md b/docs/atl/reference/iolecontrolimpl-class.md index 6c3430e9ceb..d1e7e97f595 100644 --- a/docs/atl/reference/iolecontrolimpl-class.md +++ b/docs/atl/reference/iolecontrolimpl-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["IOleControlImpl class"] --- # IOleControlImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides a default implementation of the `IOleControl` interface and implements `IUnknown`. > [!IMPORTANT] diff --git a/docs/atl/reference/ioleinplaceactiveobjectimpl-class.md b/docs/atl/reference/ioleinplaceactiveobjectimpl-class.md index 64fcdcd25bf..b275380a09b 100644 --- a/docs/atl/reference/ioleinplaceactiveobjectimpl-class.md +++ b/docs/atl/reference/ioleinplaceactiveobjectimpl-class.md @@ -4,10 +4,11 @@ title: "IOleInPlaceActiveObjectImpl Class" ms.date: "11/04/2016" f1_keywords: ["IOleInPlaceActiveObjectImpl", "ATLCTL/ATL::IOleInPlaceActiveObjectImpl", "ATLCTL/ATL::IOleInPlaceActiveObjectImpl::ContextSensitiveHelp", "ATLCTL/ATL::IOleInPlaceActiveObjectImpl::EnableModeless", "ATLCTL/ATL::IOleInPlaceActiveObjectImpl::GetWindow", "ATLCTL/ATL::IOleInPlaceActiveObjectImpl::OnDocWindowActivate", "ATLCTL/ATL::IOleInPlaceActiveObjectImpl::OnFrameWindowActivate", "ATLCTL/ATL::IOleInPlaceActiveObjectImpl::ResizeBorder", "ATLCTL/ATL::IOleInPlaceActiveObjectImpl::TranslateAccelerator"] helpviewer_keywords: ["IOleInPlaceActiveObjectImpl class", "ActiveX controls [C++], communication between container and control", "IOleInPlaceActiveObject, ATL implementation"] -ms.assetid: 44e6cc6d-a2dc-4187-98e3-73cf0320dea9 --- # IOleInPlaceActiveObjectImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for assisting communication between an in-place control and its container. > [!IMPORTANT] diff --git a/docs/atl/reference/ioleinplaceobjectwindowlessimpl-class.md b/docs/atl/reference/ioleinplaceobjectwindowlessimpl-class.md index d34f0d80b9b..d4307e69f4c 100644 --- a/docs/atl/reference/ioleinplaceobjectwindowlessimpl-class.md +++ b/docs/atl/reference/ioleinplaceobjectwindowlessimpl-class.md @@ -4,10 +4,11 @@ title: "IOleInPlaceObjectWindowlessImpl Class" ms.date: "11/04/2016" f1_keywords: ["IOleInPlaceObjectWindowlessImpl", "ATLCTL/ATL::IOleInPlaceObjectWindowlessImpl", "ATLCTL/ATL::IOleInPlaceObjectWindowlessImpl::ContextSensitiveHelp", "ATLCTL/ATL::IOleInPlaceObjectWindowlessImpl::GetDropTarget", "ATLCTL/ATL::IOleInPlaceObjectWindowlessImpl::GetWindow", "ATLCTL/ATL::IOleInPlaceObjectWindowlessImpl::InPlaceDeactivate", "ATLCTL/ATL::IOleInPlaceObjectWindowlessImpl::OnWindowMessage", "ATLCTL/ATL::IOleInPlaceObjectWindowlessImpl::ReactivateAndUndo", "ATLCTL/ATL::IOleInPlaceObjectWindowlessImpl::SetObjectRects", "ATLCTL/ATL::IOleInPlaceObjectWindowlessImpl::UIDeactivate"] helpviewer_keywords: ["IOleInPlaceObjectWindowless, ATL implementation", "activation [C++], ATL", "IOleInPlaceObjectWindowlessImpl class", "ActiveX controls [C++], communication between container and control", "controls [ATL], windowless", "deactivating ATL"] -ms.assetid: a2e0feb4-bc59-4adf-aab2-105457bbdbb4 --- # IOleInPlaceObjectWindowlessImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` and provides methods that enable a windowless control to receive window messages and to participate in drag-and-drop operations. > [!IMPORTANT] diff --git a/docs/atl/reference/ioleobjectimpl-class.md b/docs/atl/reference/ioleobjectimpl-class.md index 888f9c0db98..42349e85a20 100644 --- a/docs/atl/reference/ioleobjectimpl-class.md +++ b/docs/atl/reference/ioleobjectimpl-class.md @@ -4,10 +4,11 @@ title: "IOleObjectImpl Class" ms.date: "11/04/2016" f1_keywords: ["IOleObjectImpl", "ATLCTL/ATL::IOleObjectImpl", "ATLCTL/ATL::IOleObjectImpl::Advise", "ATLCTL/ATL::IOleObjectImpl::Close", "ATLCTL/ATL::IOleObjectImpl::DoVerb", "ATLCTL/ATL::IOleObjectImpl::DoVerbDiscardUndo", "ATLCTL/ATL::IOleObjectImpl::DoVerbHide", "ATLCTL/ATL::IOleObjectImpl::DoVerbInPlaceActivate", "ATLCTL/ATL::IOleObjectImpl::DoVerbOpen", "ATLCTL/ATL::IOleObjectImpl::DoVerbPrimary", "ATLCTL/ATL::IOleObjectImpl::DoVerbShow", "ATLCTL/ATL::IOleObjectImpl::DoVerbUIActivate", "ATLCTL/ATL::IOleObjectImpl::EnumAdvise", "ATLCTL/ATL::IOleObjectImpl::EnumVerbs", "ATLCTL/ATL::IOleObjectImpl::GetClientSite", "ATLCTL/ATL::IOleObjectImpl::GetClipboardData", "ATLCTL/ATL::IOleObjectImpl::GetExtent", "ATLCTL/ATL::IOleObjectImpl::GetMiscStatus", "ATLCTL/ATL::IOleObjectImpl::GetMoniker", "ATLCTL/ATL::IOleObjectImpl::GetUserClassID", "ATLCTL/ATL::IOleObjectImpl::GetUserType", "ATLCTL/ATL::IOleObjectImpl::InitFromData", "ATLCTL/ATL::IOleObjectImpl::IsUpToDate", "ATLCTL/ATL::IOleObjectImpl::OnPostVerbDiscardUndo", "ATLCTL/ATL::IOleObjectImpl::OnPostVerbHide", "ATLCTL/ATL::IOleObjectImpl::OnPostVerbInPlaceActivate", "ATLCTL/ATL::IOleObjectImpl::OnPostVerbOpen", "ATLCTL/ATL::IOleObjectImpl::OnPostVerbShow", "ATLCTL/ATL::IOleObjectImpl::OnPostVerbUIActivate", "ATLCTL/ATL::IOleObjectImpl::OnPreVerbDiscardUndo", "ATLCTL/ATL::IOleObjectImpl::OnPreVerbHide", "ATLCTL/ATL::IOleObjectImpl::OnPreVerbInPlaceActivate", "ATLCTL/ATL::IOleObjectImpl::OnPreVerbOpen", "ATLCTL/ATL::IOleObjectImpl::OnPreVerbShow", "ATLCTL/ATL::IOleObjectImpl::OnPreVerbUIActivate", "ATLCTL/ATL::IOleObjectImpl::SetClientSite", "ATLCTL/ATL::IOleObjectImpl::SetColorScheme", "ATLCTL/ATL::IOleObjectImpl::SetExtent", "ATLCTL/ATL::IOleObjectImpl::SetHostNames", "ATLCTL/ATL::IOleObjectImpl::SetMoniker", "ATLCTL/ATL::IOleObjectImpl::Unadvise", "ATLCTL/ATL::IOleObjectImpl::Update"] helpviewer_keywords: ["ActiveX controls [C++], communication between container and control", "IOleObject, ATL implementation", "IOleObjectImpl class"] -ms.assetid: 59750b2d-1633-4a51-a4c2-6455b6b90c45 --- # IOleObjectImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` and is the principal interface through which a container communicates with a control. > [!IMPORTANT] diff --git a/docs/atl/reference/iperpropertybrowsingimpl-class.md b/docs/atl/reference/iperpropertybrowsingimpl-class.md index c5f0e2678ed..c1ca3e087dc 100644 --- a/docs/atl/reference/iperpropertybrowsingimpl-class.md +++ b/docs/atl/reference/iperpropertybrowsingimpl-class.md @@ -4,10 +4,11 @@ title: "IPerPropertyBrowsingImpl Class" ms.date: "11/04/2016" f1_keywords: ["IPerPropertyBrowsingImpl", "ATLCTL/ATL::IPerPropertyBrowsingImpl", "ATLCTL/ATL::IPerPropertyBrowsingImpl::GetDisplayString", "ATLCTL/ATL::IPerPropertyBrowsingImpl::GetPredefinedStrings", "ATLCTL/ATL::IPerPropertyBrowsingImpl::GetPredefinedValue", "ATLCTL/ATL::IPerPropertyBrowsingImpl::MapPropertyToPage"] helpviewer_keywords: ["IPerPropertyBrowsingImpl class", "property pages, accessing information", "IPerPropertyBrowsing, ATL implementation"] -ms.assetid: 0b1a9be3-d242-4767-be69-663a21e4b728 --- # IPerPropertyBrowsingImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` and allows a client to access the information in an object's property pages. > [!IMPORTANT] diff --git a/docs/atl/reference/ipersistpropertybagimpl-class.md b/docs/atl/reference/ipersistpropertybagimpl-class.md index b9029c339df..84fb6c38136 100644 --- a/docs/atl/reference/ipersistpropertybagimpl-class.md +++ b/docs/atl/reference/ipersistpropertybagimpl-class.md @@ -4,10 +4,11 @@ title: "IPersistPropertyBagImpl Class" ms.date: "11/04/2016" f1_keywords: ["IPersistPropertyBagImpl", "ATLCOM/ATL::IPersistPropertyBagImpl", "ATLCOM/ATL::IPersistPropertyBagImpl::GetClassID", "ATLCOM/ATL::IPersistPropertyBagImpl::InitNew", "ATLCOM/ATL::IPersistPropertyBagImpl::Load", "ATLCOM/ATL::IPersistPropertyBagImpl::Save"] helpviewer_keywords: ["IPersistPropertyBagImpl class"] -ms.assetid: 712af24d-99f8-40f2-9811-53b3ff6e5b19 --- # IPersistPropertyBagImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` and allows an object to save its properties to a client-supplied property bag. > [!IMPORTANT] diff --git a/docs/atl/reference/ipersiststorageimpl-class.md b/docs/atl/reference/ipersiststorageimpl-class.md index a5396bee533..ae95395147b 100644 --- a/docs/atl/reference/ipersiststorageimpl-class.md +++ b/docs/atl/reference/ipersiststorageimpl-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["storage, ATL", "IPersistStorageImpl class"] --- # IPersistStorageImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements the [IPersistStorage](/windows/win32/api/objidl/nn-objidl-ipersiststorage) interface. > [!IMPORTANT] diff --git a/docs/atl/reference/ipersiststreaminitimpl-class.md b/docs/atl/reference/ipersiststreaminitimpl-class.md index 3eab5ba63c0..cf426de9552 100644 --- a/docs/atl/reference/ipersiststreaminitimpl-class.md +++ b/docs/atl/reference/ipersiststreaminitimpl-class.md @@ -4,10 +4,11 @@ title: "IPersistStreamInitImpl Class" ms.date: "11/04/2016" f1_keywords: ["IPersistStreamInitImpl", "ATLCOM/ATL::IPersistStreamInitImpl", "ATLCOM/ATL::IPersistStreamInitImpl::GetClassID", "ATLCOM/ATL::IPersistStreamInitImpl::GetSizeMax", "ATLCOM/ATL::IPersistStreamInitImpl::InitNew", "ATLCOM/ATL::IPersistStreamInitImpl::IsDirty", "ATLCOM/ATL::IPersistStreamInitImpl::Load", "ATLCOM/ATL::IPersistStreamInitImpl::Save"] helpviewer_keywords: ["IPersistStreamInit ATL implementation", "IPersistStreamInitImpl class", "streams, ATL"] -ms.assetid: ef217c3c-020f-4cf8-871e-ef68e57865b8 --- # IPersistStreamInitImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` and provides a default implementation of the [IPersistStreamInit](/windows/win32/api/ocidl/nn-ocidl-ipersiststreaminit) interface. > [!IMPORTANT] diff --git a/docs/atl/reference/ipointerinactiveimpl-class.md b/docs/atl/reference/ipointerinactiveimpl-class.md index 71189491246..ed5fa3495e3 100644 --- a/docs/atl/reference/ipointerinactiveimpl-class.md +++ b/docs/atl/reference/ipointerinactiveimpl-class.md @@ -4,10 +4,11 @@ title: "IPointerInactiveImpl Class" ms.date: "11/04/2016" f1_keywords: ["IPointerInactiveImpl", "ATLCTL/ATL::IPointerInactiveImpl", "ATLCTL/ATL::IPointerInactiveImpl::GetActivationPolicy", "ATLCTL/ATL::IPointerInactiveImpl::OnInactiveMouseMove", "ATLCTL/ATL::IPointerInactiveImpl::OnInactiveSetCursor"] helpviewer_keywords: ["IPointerInactive ATL implementation", "inactive objects", "IPointerInactiveImpl class"] -ms.assetid: e1fe9ea6-d38a-4527-9112-eb344771e0b7 --- # IPointerInactiveImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` and the [IPointerInactive](/windows/win32/api/ocidl/nn-ocidl-ipointerinactive) interface methods. > [!IMPORTANT] diff --git a/docs/atl/reference/ipropertynotifysinkcp-class.md b/docs/atl/reference/ipropertynotifysinkcp-class.md index b02d41d33b0..d4a74b402a9 100644 --- a/docs/atl/reference/ipropertynotifysinkcp-class.md +++ b/docs/atl/reference/ipropertynotifysinkcp-class.md @@ -4,10 +4,11 @@ title: "IPropertyNotifySinkCP Class" ms.date: "11/04/2016" f1_keywords: ["IPropertyNotifySinkCP", "atlctl/ATL::IPropertyNotifySinkCP"] helpviewer_keywords: ["connection points [C++], managing", "sinks, notifying of changes", "IPropertyNotifySinkCP class"] -ms.assetid: 1b41445e-bc88-4fa6-bb62-d68aacec2bd5 --- # IPropertyNotifySinkCP Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class exposes [IPropertyNotifySink](/windows/win32/api/ocidl/nn-ocidl-ipropertynotifysink) interface as an outgoing interface on a connectable object. > [!IMPORTANT] diff --git a/docs/atl/reference/ipropertypage2impl-class.md b/docs/atl/reference/ipropertypage2impl-class.md index f39eac4e87e..412048f8778 100644 --- a/docs/atl/reference/ipropertypage2impl-class.md +++ b/docs/atl/reference/ipropertypage2impl-class.md @@ -4,10 +4,11 @@ title: "IPropertyPage2Impl Class" ms.date: "11/04/2016" f1_keywords: ["IPropertyPage2Impl", "ATLCTL/ATL::IPropertyPage2Impl", "ATLCTL/ATL::IPropertyPage2Impl::EditProperty"] helpviewer_keywords: ["property pages", "IPropertyPage2 ATL implementation", "IPropertyPage2Impl class"] -ms.assetid: e89fbe90-203a-47f0-a5de-23616697e1ce --- # IPropertyPage2Impl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` and inherits the default implementation of [IPropertyPageImpl](../../atl/reference/ipropertypageimpl-class.md). > [!IMPORTANT] diff --git a/docs/atl/reference/ipropertypageimpl-class.md b/docs/atl/reference/ipropertypageimpl-class.md index 8b217ed0d02..0cd5e4d87bf 100644 --- a/docs/atl/reference/ipropertypageimpl-class.md +++ b/docs/atl/reference/ipropertypageimpl-class.md @@ -4,10 +4,11 @@ title: "IPropertyPageImpl Class" ms.date: "11/04/2016" f1_keywords: ["IPropertyPageImpl", "ATLCTL/ATL::IPropertyPageImpl", "ATLCTL/ATL::IPropertyPageImpl::IPropertyPageImpl", "ATLCTL/ATL::IPropertyPageImpl::Activate", "ATLCTL/ATL::IPropertyPageImpl::Apply", "ATLCTL/ATL::IPropertyPageImpl::Deactivate", "ATLCTL/ATL::IPropertyPageImpl::GetPageInfo", "ATLCTL/ATL::IPropertyPageImpl::Help", "ATLCTL/ATL::IPropertyPageImpl::IsPageDirty", "ATLCTL/ATL::IPropertyPageImpl::Move", "ATLCTL/ATL::IPropertyPageImpl::SetDirty", "ATLCTL/ATL::IPropertyPageImpl::SetObjects", "ATLCTL/ATL::IPropertyPageImpl::SetPageSite", "ATLCTL/ATL::IPropertyPageImpl::Show", "ATLCTL/ATL::IPropertyPageImpl::TranslateAccelerator", "ATLCTL/ATL::IPropertyPageImpl::m_bDirty", "ATLCTL/ATL::IPropertyPageImpl::m_dwDocString", "ATLCTL/ATL::IPropertyPageImpl::m_dwHelpContext", "ATLCTL/ATL::IPropertyPageImpl::m_dwHelpFile", "ATLCTL/ATL::IPropertyPageImpl::m_dwTitle", "ATLCTL/ATL::IPropertyPageImpl::m_nObjects", "ATLCTL/ATL::IPropertyPageImpl::m_pPageSite", "ATLCTL/ATL::IPropertyPageImpl::m_ppUnk", "ATLCTL/ATL::IPropertyPageImpl::m_size"] helpviewer_keywords: ["property pages", "IPropertyPage ATL implementation", "IPropertyPageImpl class"] -ms.assetid: f9b7c8b1-7a04-4eab-aa63-63efddb740fa --- # IPropertyPageImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` and provides a default implementation of the [IPropertyPage](/windows/win32/api/ocidl/nn-ocidl-ipropertypage) interface. > [!IMPORTANT] diff --git a/docs/atl/reference/iprovideclassinfo2impl-class.md b/docs/atl/reference/iprovideclassinfo2impl-class.md index c700c6a2809..3115d96f8e1 100644 --- a/docs/atl/reference/iprovideclassinfo2impl-class.md +++ b/docs/atl/reference/iprovideclassinfo2impl-class.md @@ -4,10 +4,11 @@ title: "IProvideClassInfo2Impl Class" ms.date: "11/04/2016" f1_keywords: ["IProvideClassInfo2Impl", "ATLCOM/ATL::IProvideClassInfo2Impl", "ATLCOM/ATL::IProvideClassInfo2Impl::IProvideClassInfo2Impl", "ATLCOM/ATL::IProvideClassInfo2Impl::GetClassInfo", "ATLCOM/ATL::IProvideClassInfo2Impl::GetGUID", "ATLCOM/ATL::IProvideClassInfo2Impl::_tih"] helpviewer_keywords: ["IProvideClassInfo2Impl class", "IProvideClassInfo2 ATL implementation", "class information, ATL"] -ms.assetid: d74956e8-9c69-4cba-b99d-ca1ac031bb9d --- # IProvideClassInfo2Impl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides a default implementation of the [IProvideClassInfo](/windows/win32/api/ocidl/nn-ocidl-iprovideclassinfo) and [IProvideClassInfo2](/windows/win32/api/ocidl/nn-ocidl-iprovideclassinfo2) methods. ## Syntax diff --git a/docs/atl/reference/iquickactivateimpl-class.md b/docs/atl/reference/iquickactivateimpl-class.md index 55d408feadc..88ea87bc8d8 100644 --- a/docs/atl/reference/iquickactivateimpl-class.md +++ b/docs/atl/reference/iquickactivateimpl-class.md @@ -4,10 +4,11 @@ title: "IQuickActivateImpl Class" ms.date: "11/04/2016" f1_keywords: ["IQuickActivateImpl", "ATLCTL/ATL::IQuickActivateImpl", "ATLCTL/ATL::IQuickActivateImpl::GetContentExtent", "ATLCTL/ATL::IQuickActivateImpl::QuickActivate", "ATLCTL/ATL::IQuickActivateImpl::SetContentExtent"] helpviewer_keywords: ["activating ATL controls", "controls [ATL], activating", "IQuickActivateImpl class", "IQuickActivate ATL implementation"] -ms.assetid: aa80c056-1041-494e-b21d-2acca7dc27ea --- # IQuickActivateImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class combines containers' control initialization into a single call. > [!IMPORTANT] diff --git a/docs/atl/reference/iregistrar-class.md b/docs/atl/reference/iregistrar-class.md index 9c3ca2a9805..5f8c8909e23 100644 --- a/docs/atl/reference/iregistrar-class.md +++ b/docs/atl/reference/iregistrar-class.md @@ -4,10 +4,11 @@ title: "IRegistrar Interface" ms.date: "02/01/2017" f1_keywords: ["IRegistrar", "ATLIFASE/ATL::IRegistrar", "ATLIFASE/ATL::IRegistrar::ResourceRegisterSz", "ATLIFASE/ATL::IRegistrar::ResourceUnregisterSz", "ATLIFASE/ATL::IRegistrar::FileRegister", "ATLIFASE/ATL::IRegistrar::FileUnregister", "ATLIFASE/ATL::IRegistrar::StringRegister", "ATLIFASE/ATL::IRegistrar::StringUnregister", "ATLIFASE/ATL::IRegistrar::ResourceRegister", "ATLIFASE/ATL::IRegistrar::ResourceUnregister"] helpviewer_keywords: ["Iregistrar Interface"] -ms.assetid: e88c04b7-0c93-4ae8-aeb9-ecd78f87421e --- # IRegistrar Interface +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This interface is defined in atliface.h and is used internally by CAtlModule member functions such as [UpdateRegistryFromResourceD](catlmodule-class.md#updateregistryfromresourced). ## Syntax diff --git a/docs/atl/reference/irunnableobjectimpl-class.md b/docs/atl/reference/irunnableobjectimpl-class.md index 77b26a50729..ad0058aeb3c 100644 --- a/docs/atl/reference/irunnableobjectimpl-class.md +++ b/docs/atl/reference/irunnableobjectimpl-class.md @@ -4,10 +4,11 @@ title: "IRunnableObjectImpl Class" ms.date: "11/04/2016" f1_keywords: ["IRunnableObjectImpl", "ATLCTL/ATL::IRunnableObjectImpl", "ATLCTL/ATL::IRunnableObjectImpl::GetRunningClass", "ATLCTL/ATL::IRunnableObjectImpl::IsRunning", "ATLCTL/ATL::IRunnableObjectImpl::LockRunning", "ATLCTL/ATL::IRunnableObjectImpl::Run", "ATLCTL/ATL::IRunnableObjectImpl::SetContainedObject"] helpviewer_keywords: ["containers, running controls", "IRunnableObjectImpl class", "IRunnableObject, ATL implementation", "controls [ATL], running", "controls [C++], container running in ATL"] -ms.assetid: 305c7c3b-889e-49dd-aca1-34379c1b9931 --- # IRunnableObjectImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` and provides a default implementation of the [IRunnableObject](/windows/win32/api/objidl/nn-objidl-irunnableobject) interface. > [!IMPORTANT] diff --git a/docs/atl/reference/iserviceproviderimpl-class.md b/docs/atl/reference/iserviceproviderimpl-class.md index 6cd8822fddc..682901b2c7d 100644 --- a/docs/atl/reference/iserviceproviderimpl-class.md +++ b/docs/atl/reference/iserviceproviderimpl-class.md @@ -4,10 +4,11 @@ title: "IServiceProviderImpl Class" ms.date: "11/04/2016" f1_keywords: ["IServiceProviderImpl", "ATLCOM/ATL::IServiceProviderImpl", "ATLCOM/ATL::IServiceProviderImpl::QueryService"] helpviewer_keywords: ["IServiceProviderImpl class", "IServiceProvider interface, ATL implementation"] -ms.assetid: 251254d3-c4ce-40d7-aee0-3d676d1d72f2 --- # IServiceProviderImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides a default implementation of the `IServiceProvider` interface. ## Syntax diff --git a/docs/atl/reference/ispecifypropertypagesimpl-class.md b/docs/atl/reference/ispecifypropertypagesimpl-class.md index ae7b4481938..5549949feed 100644 --- a/docs/atl/reference/ispecifypropertypagesimpl-class.md +++ b/docs/atl/reference/ispecifypropertypagesimpl-class.md @@ -4,10 +4,11 @@ title: "ISpecifyPropertyPagesImpl Class" ms.date: "11/04/2016" f1_keywords: ["ISpecifyPropertyPagesImpl", "ATLCOM/ATL::ISpecifyPropertyPagesImpl", "ATLCOM/ATL::ISpecifyPropertyPagesImpl::GetPages"] helpviewer_keywords: ["property pages, CLSIDs associated with", "ISpecifyPropertyPages", "ISpecifyPropertyPagesImpl class"] -ms.assetid: 4e4b9795-b656-4d56-9b8c-85941e7731f9 --- # ISpecifyPropertyPagesImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` and provides a default implementation of the [ISpecifyPropertyPages](/windows/win32/api/ocidl/nn-ocidl-ispecifypropertypages) interface. > [!IMPORTANT] diff --git a/docs/atl/reference/isupporterrorinfoimpl-class.md b/docs/atl/reference/isupporterrorinfoimpl-class.md index b9146cc6cf8..b9b4bcdb872 100644 --- a/docs/atl/reference/isupporterrorinfoimpl-class.md +++ b/docs/atl/reference/isupporterrorinfoimpl-class.md @@ -4,10 +4,11 @@ title: "ISupportErrorInfoImpl Class" ms.date: "06/13/2019" f1_keywords: ["ISupportErrorInfoImpl", "ATLCOM/ATL::ISupportErrorInfoImpl", "ATLCOM/ATL::ISupportErrorInfoImpl::InterfaceSupportsErrorInfo"] helpviewer_keywords: ["ISupportErrorInfo ATL implementation", "ISupportErrorInfoImpl class", "error information, ATL"] -ms.assetid: e33a4b11-a123-41cf-bcea-7b19743902af --- # ISupportErrorInfoImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides a default implementation of the [ISupportErrorInfo Interface](/windows/win32/api/oaidl/nn-oaidl-isupporterrorinfo) and can be used when only a single interface generates errors on an object. > [!IMPORTANT] diff --git a/docs/atl/reference/ithreadpoolconfig-interface.md b/docs/atl/reference/ithreadpoolconfig-interface.md index 3a3411e1366..1061b138d72 100644 --- a/docs/atl/reference/ithreadpoolconfig-interface.md +++ b/docs/atl/reference/ithreadpoolconfig-interface.md @@ -4,10 +4,11 @@ title: "IThreadPoolConfig Interface" ms.date: "11/04/2016" f1_keywords: ["IThreadPoolConfig", "ATLUTIL/ATL::IThreadPoolConfig", "ATLUTIL/ATL::GetSize", "ATLUTIL/ATL::GetTimeout", "ATLUTIL/ATL::SetSize", "ATLUTIL/ATL::SetTimeout"] helpviewer_keywords: ["IThreadPoolConfig interface"] -ms.assetid: 69e642bf-6925-46e6-9a37-cce52231b1cc --- # IThreadPoolConfig Interface +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This interface provides methods for configuring a thread pool. > [!IMPORTANT] diff --git a/docs/atl/reference/iviewobjecteximpl-class.md b/docs/atl/reference/iviewobjecteximpl-class.md index ad03e3ac103..b2faac4bb81 100644 --- a/docs/atl/reference/iviewobjecteximpl-class.md +++ b/docs/atl/reference/iviewobjecteximpl-class.md @@ -4,10 +4,11 @@ title: "IViewObjectExImpl Class" ms.date: "11/04/2016" f1_keywords: ["IViewObjectExImpl", "ATLCTL/ATL::IViewObjectExImpl", "ATLCTL/ATL::IViewObjectExImpl::Draw", "ATLCTL/ATL::IViewObjectExImpl::Freeze", "ATLCTL/ATL::IViewObjectExImpl::GetAdvise", "ATLCTL/ATL::IViewObjectExImpl::GetColorSet", "ATLCTL/ATL::IViewObjectExImpl::GetExtent", "ATLCTL/ATL::IViewObjectExImpl::GetNaturalExtent", "ATLCTL/ATL::IViewObjectExImpl::GetRect", "ATLCTL/ATL::IViewObjectExImpl::GetViewStatus", "ATLCTL/ATL::IViewObjectExImpl::QueryHitPoint", "ATLCTL/ATL::IViewObjectExImpl::QueryHitRect", "ATLCTL/ATL::IViewObjectExImpl::SetAdvise", "ATLCTL/ATL::IViewObjectExImpl::Unfreeze"] helpviewer_keywords: ["ActiveX controls [C++], drawing", "IViewObjectEx ATL implementation", "advise sinks", "IViewObjectExImpl class"] -ms.assetid: ad6de760-1ee5-4883-b033-ae57beffc369 --- # IViewObjectExImpl Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class implements `IUnknown` and provides default implementations of the [IViewObject](/windows/win32/api/oleidl/nn-oleidl-iviewobject), [IViewObject2](/windows/win32/api/oleidl/nn-oleidl-iviewobject2), and [IViewObjectEx](/windows/win32/api/ocidl/nn-ocidl-iviewobjectex) interfaces. > [!IMPORTANT] diff --git a/docs/atl/reference/iworkerthreadclient-interface.md b/docs/atl/reference/iworkerthreadclient-interface.md index c962eb0cdf8..46cf241e897 100644 --- a/docs/atl/reference/iworkerthreadclient-interface.md +++ b/docs/atl/reference/iworkerthreadclient-interface.md @@ -4,10 +4,11 @@ title: "IWorkerThreadClient Interface" ms.date: "11/04/2016" f1_keywords: ["IWorkerThreadClient", "ATLUTIL/ATL::IWorkerThreadClient", "ATLUTIL/ATL::CloseHandle", "ATLUTIL/ATL::Execute"] helpviewer_keywords: ["IWorkerThreadClient interface"] -ms.assetid: 56f4a2f5-007e-4a33-9e20-05187629f715 --- # IWorkerThreadClient Interface +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + `IWorkerThreadClient` is the interface implemented by clients of the [CWorkerThread](../../atl/reference/cworkerthread-class.md) class. > [!IMPORTANT] diff --git a/docs/atl/reference/making-an-atl-object-noncreatable.md b/docs/atl/reference/making-an-atl-object-noncreatable.md index 6a144323321..cda5e5b2a71 100644 --- a/docs/atl/reference/making-an-atl-object-noncreatable.md +++ b/docs/atl/reference/making-an-atl-object-noncreatable.md @@ -4,10 +4,11 @@ title: "Making an ATL Object Noncreatable" ms.date: "11/04/2016" f1_keywords: ["vc.appwiz.ATL.objects"] helpviewer_keywords: ["noncreatable ATL objects", "ATL projects, noncreatable objects"] -ms.assetid: 80d0bca2-dea0-4801-9a85-6243124437f6 --- # Making an ATL Object Noncreatable +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + You can change the attributes of an ATL-based COM object so that a client cannot directly create the object. In this case, the object would be returned through a method call on another object rather than created directly. ## To make an object noncreatable diff --git a/docs/atl/reference/marshaling-global-functions.md b/docs/atl/reference/marshaling-global-functions.md index 74ec8bf7143..721a8e52101 100644 --- a/docs/atl/reference/marshaling-global-functions.md +++ b/docs/atl/reference/marshaling-global-functions.md @@ -3,10 +3,11 @@ description: "Learn more about: Marshaling Global Functions" title: "Marshaling Global Functions" ms.date: "11/04/2016" f1_keywords: ["atlbase/ATL::AtlFreeMarshalStream", "atlbase/ATL::AtlMarshalPtrInProc", "atlbase/ATL::AtlUnmarshalPtr"] -ms.assetid: 877100b5-6ad9-44c5-a2e0-09414f1720d0 --- # Marshaling Global Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These functions provide support for marshaling and converting marshaling data into interface pointers. > [!IMPORTANT] diff --git a/docs/atl/reference/message-map-macros-atl.md b/docs/atl/reference/message-map-macros-atl.md index 99775caee56..b94fb021afd 100644 --- a/docs/atl/reference/message-map-macros-atl.md +++ b/docs/atl/reference/message-map-macros-atl.md @@ -3,10 +3,11 @@ description: "Learn more about: Message Map Macros (ATL)" title: "Message Map Macros (ATL)" ms.date: "11/04/2016" f1_keywords: ["atlwin/ATL::ALT_MSG_MAP", "atlwin/ATL::BEGIN_MSG_MAP", "atlwin/ATL::CHAIN_MSG_MAP_ALT", "atlwin/ATL::CHAIN_MSG_MAP_ALT_MEMBER", "atlwin/ATL::CHAIN_MSG_MAP", "atlwin/ATL::CHAIN_MSG_MAP_DYNAMIC", "atlwin/ATL::CHAIN_MSG_MAP_MEMBER", "atlwin/ATL::COMMAND_CODE_HANDLER", "atlwin/ATL::COMMAND_HANDLER", "atlwin/ATL::COMMAND_ID_HANDLER", "atlwin/ATL::COMMAND_RANGE_CODE_HANDLER", "atlwin/ATL::COMMAND_RANGE_HANDLER", "atlwin/ATL::DECLARE_EMPTY_MSG_MAP", "atlwin/ATL::DEFAULT_REFLECTION_HANDLER", "atlwin/ATL::END_MSG_MAP", "atlwin/ATL::FORWARD_NOTIFICATIONS", "atlwin/ATL::MESSAGE_HANDLER", "atlwin/ATL::MESSAGE_RANGE_HANDLER", "atlwin/ATL::NOTIFY_CODE_HANDLER", "atlwin/ATL::NOTIFY_HANDLER", "atlwin/ATL::NOTIFY_ID_HANDLER", "atlwin/ATL::NOTIFY_RANGE_CODE_HANDLER", "atlwin/ATL::NOTIFY_RANGE_HANDLER", "atlwin/ATL::REFLECT_NOTIFICATIONS", "atlwin/ATL::REFLECTED_COMMAND_CODE_HANDLER", "atlwin/ATL::REFLECTED_COMMAND_HANDLER", "atlwin/ATL::REFLECTED_COMMAND_ID_HANDLER", "atlwin/ATL::REFLECTED_COMMAND_RANGE_CODE_HANDLER", "atlwin/ATL::REFLECTED_COMMAND_RANGE_HANDLER", "atlwin/ATL::REFLECTED_NOTIFY_CODE_HANDLER", "atlwin/ATL::REFLECTED_NOTIFY_HANDLER", "atlwin/ATL::REFLECTED_NOTIFY_ID_HANDLER", "atlwin/ATL::REFLECTED_NOTIFY_RANGE_CODE_HANDLER", "atlwin/ATL::REFLECTED_NOTIFY_RANGE_HANDLER", "ATLWIN/ALT_MSG_MAP", "ATLWIN/BEGIN_MSG_MAP", "ATLWIN/CHAIN_MSG_MAP_ALT", "ATLWIN/CHAIN_MSG_MAP_ALT_MEMBER", "ATLWIN/CHAIN_MSG_MAP", "ATLWIN/CHAIN_MSG_MAP_DYNAMIC", "ATLWIN/CHAIN_MSG_MAP_MEMBER", "ATLWIN/COMMAND_CODE_HANDLER", "ATLWIN/COMMAND_HANDLER", "ATLWIN/COMMAND_ID_HANDLER", "ATLWIN/COMMAND_RANGE_CODE_HANDLER", "ATLWIN/COMMAND_RANGE_HANDLER", "ATLWIN/DECLARE_EMPTY_MSG_MAP", "ATLWIN/DEFAULT_REFLECTION_HANDLER", "ATLWIN/END_MSG_MAP", "ATLWIN/FORWARD_NOTIFICATIONS", "ATLWIN/MESSAGE_HANDLER", "ATLWIN/MESSAGE_RANGE_HANDLER", "ATLWIN/NOTIFY_CODE_HANDLER", "ATLWIN/NOTIFY_HANDLER", "ATLWIN/NOTIFY_ID_HANDLER", "ATLWIN/NOTIFY_RANGE_CODE_HANDLER", "ATLWIN/NOTIFY_RANGE_HANDLER", "ATLWIN/REFLECT_NOTIFICATIONS", "ATLWIN/REFLECTED_COMMAND_CODE_HANDLER", "ATLWIN/REFLECTED_COMMAND_HANDLER", "ATLWIN/REFLECTED_COMMAND_ID_HANDLER", "ATLWIN/REFLECTED_COMMAND_RANGE_CODE_HANDLER", "ATLWIN/REFLECTED_COMMAND_RANGE_HANDLER", "ATLWIN/REFLECTED_NOTIFY_CODE_HANDLER", "ATLWIN/REFLECTED_NOTIFY_HANDLER", "ATLWIN/REFLECTED_NOTIFY_ID_HANDLER", "ATLWIN/REFLECTED_NOTIFY_RANGE_CODE_HANDLER", "ATLWIN/REFLECTED_NOTIFY_RANGE_HANDLER"] -ms.assetid: eefdd546-8934-4a30-b263-9c06a8addcbd --- # Message Map Macros (ATL) +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros define message maps and entries. |Name|Description| diff --git a/docs/atl/reference/mfc-support-in-atl-projects.md b/docs/atl/reference/mfc-support-in-atl-projects.md index c02e7ad566b..b3b28f91baa 100644 --- a/docs/atl/reference/mfc-support-in-atl-projects.md +++ b/docs/atl/reference/mfc-support-in-atl-projects.md @@ -4,10 +4,11 @@ title: "MFC Support in ATL Projects" ms.date: "11/04/2016" f1_keywords: ["vc.atl.addmfc"] helpviewer_keywords: ["ATL projects, MFC support"] -ms.assetid: f90b4276-cb98-4c11-902c-9ebcfe6f954b --- # MFC Support in ATL Projects +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + If you select **Support MFC** in the ATL Project Wizard, your project declares the application as an MFC application object (class). The project initializes the MFC library and instantiates a class (class *ProjName*) that is derived from [CWinApp](../../mfc/reference/cwinapp-class.md). This option is available for nonattributed ATL DLL projects only. diff --git a/docs/atl/reference/object-map-macros.md b/docs/atl/reference/object-map-macros.md index e0d53e8236d..aec214fd6db 100644 --- a/docs/atl/reference/object-map-macros.md +++ b/docs/atl/reference/object-map-macros.md @@ -3,10 +3,11 @@ description: "Learn more about: Object Map Macros" title: "Object Map Macros" ms.date: "11/04/2016" f1_keywords: ["atlcom/ATL::DECLARE_OBJECT_DESCRIPTION", "atlcom/ATL::OBJECT_ENTRY_AUTO", "atlcom/ATL::OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO", "ATLCOM/DECLARE_OBJECT_DESCRIPTION", "ATLCOM/OBJECT_ENTRY_AUTO", "ATLCOM/OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO"] -ms.assetid: 680087f4-9894-41dd-a79c-6f337e1f13c1 --- # Object Map Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros define object maps and entries. |Name|Description| diff --git a/docs/atl/reference/object-status-macros.md b/docs/atl/reference/object-status-macros.md index 06a9bdb39fc..124d32d8e17 100644 --- a/docs/atl/reference/object-status-macros.md +++ b/docs/atl/reference/object-status-macros.md @@ -3,10 +3,11 @@ description: "Learn more about: Object Status Macros" title: "Object Status Macros" ms.date: "11/04/2016" f1_keywords: ["atlcom/ATL::DECLARE_OLEMISC_STATUS", "ATLCOM/DECLARE_OLEMISC_STATUS"] -ms.assetid: 727dbef2-a342-4157-9d64-a421805d9747 --- # Object Status Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This macro sets flags belonging to ActiveX controls. |Name|Description| diff --git a/docs/atl/reference/options-atl-active-server-page-component-wizard.md b/docs/atl/reference/options-atl-active-server-page-component-wizard.md index ee4d74799fe..7def4310f65 100644 --- a/docs/atl/reference/options-atl-active-server-page-component-wizard.md +++ b/docs/atl/reference/options-atl-active-server-page-component-wizard.md @@ -4,10 +4,11 @@ title: "Options, ATL Active Server Page Component Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.class.atl.asp.options"] helpviewer_keywords: ["ATL Active Server Page Component Wizard, options"] -ms.assetid: 54f34e26-53c7-4456-9675-cb86e356bde0 --- # Options, ATL Active Server Page Component Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Use this page of the ATL Active Server Page Component Wizard to design for increased efficiency and error support for the object. For more information on ATL projects and ATL COM classes, see [ATL COM Desktop Components](../../atl/atl-com-desktop-components.md). diff --git a/docs/atl/reference/options-atl-control-wizard.md b/docs/atl/reference/options-atl-control-wizard.md index b6ec7ec9d06..b2656d02218 100644 --- a/docs/atl/reference/options-atl-control-wizard.md +++ b/docs/atl/reference/options-atl-control-wizard.md @@ -4,10 +4,11 @@ title: "Options, ATL Control Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.class.atl.control.options"] helpviewer_keywords: ["ATL Control Wizard, options"] -ms.assetid: 4607c51a-992d-433e-9281-919c6f519a3d --- # Options, ATL Control Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Use this page of the wizard to define the type of control you are creating and the level of interface support it contains. ## UIElement List diff --git a/docs/atl/reference/options-atl-property-page-wizard.md b/docs/atl/reference/options-atl-property-page-wizard.md index a49caf9d072..cbf30f158dc 100644 --- a/docs/atl/reference/options-atl-property-page-wizard.md +++ b/docs/atl/reference/options-atl-property-page-wizard.md @@ -4,10 +4,11 @@ title: "Options, ATL Property Page Wizard" ms.date: "05/09/2019" f1_keywords: ["vc.codewiz.class.atl.ppg.options"] helpviewer_keywords: ["ATL Property Page Wizard, options"] -ms.assetid: a7107779-b2ea-4f99-b84b-7f3e0c504bc8 --- # Options, ATL Property Page Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" The ATL Property Page wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/reference/options-atl-simple-object-wizard.md b/docs/atl/reference/options-atl-simple-object-wizard.md index a15ab0eccc0..b3e62ebf15c 100644 --- a/docs/atl/reference/options-atl-simple-object-wizard.md +++ b/docs/atl/reference/options-atl-simple-object-wizard.md @@ -4,10 +4,11 @@ title: "Options, ATL Simple Object Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.class.atl.simple.options"] helpviewer_keywords: ["ATL Simple Object Wizard, options"] -ms.assetid: 125fe179-942d-4181-8b82-33e92e1fd779 --- # Options, ATL Simple Object Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Use this page of the ATL Simple Object Wizard to design for increased efficiency and error support for the object. For more information on ATL projects and ATL COM classes, see [ATL COM Desktop Components](../../atl/atl-com-desktop-components.md). diff --git a/docs/atl/reference/pixel-himetric-conversion-global-functions.md b/docs/atl/reference/pixel-himetric-conversion-global-functions.md index 3e1c7e9264d..19634eccdff 100644 --- a/docs/atl/reference/pixel-himetric-conversion-global-functions.md +++ b/docs/atl/reference/pixel-himetric-conversion-global-functions.md @@ -3,10 +3,11 @@ description: "Learn more about: Pixel/HIMETRIC Conversion Global Functions" title: "Pixel-HIMETRIC Conversion Global Functions" ms.date: "11/04/2016" f1_keywords: ["atlwin/ATL::AtlHiMetricToPixel", "atlwin/ATL::AtlPixelToHiMetric"] -ms.assetid: ecb1b1b2-7e9d-4fbc-a855-16252d2d794c --- # Pixel/HIMETRIC Conversion Global Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These functions provide support for converting to and from pixel and HIMETRIC units. > [!IMPORTANT] diff --git a/docs/atl/reference/property-map-macros.md b/docs/atl/reference/property-map-macros.md index c0e785543db..1556a46baaf 100644 --- a/docs/atl/reference/property-map-macros.md +++ b/docs/atl/reference/property-map-macros.md @@ -4,10 +4,11 @@ title: "Property Map Macros" ms.date: "11/04/2016" f1_keywords: ["atlcom/ATL::BEGIN_PROP_MAP", "atlcom/ATL::PROP_DATA_ENTRY", "atlcom/ATL::PROP_ENTRY_TYPE", "atlcom/ATL::PROP_ENTRY_TYPE_EX", "atlcom/ATL::PROP_PAGE", "atlcom/ATL::END_PROP_MAP", "ATLCOM/BEGIN_PROP_MAP", "ATLCOM/PROP_DATA_ENTRY", "ATLCOM/PROP_ENTRY_TYPE", "ATLCOM/PROP_ENTRY_TYPE_EX", "ATLCOM/PROP_PAGE", "ATLCOM/END_PROP_MAP"] helpviewer_keywords: ["property maps"] -ms.assetid: 128bc742-2b98-4b97-a243-684dbb83db77 --- # Property Map Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros define property maps and entries. |Name|Description| diff --git a/docs/atl/reference/registry-and-typelib-global-functions.md b/docs/atl/reference/registry-and-typelib-global-functions.md index c97812f48d0..74287bfd26f 100644 --- a/docs/atl/reference/registry-and-typelib-global-functions.md +++ b/docs/atl/reference/registry-and-typelib-global-functions.md @@ -4,10 +4,11 @@ title: "Registry and TypeLib Global Functions" ms.date: "03/27/2019" f1_keywords: ["atlbase/ATL::AtlGetPerUserRegistration", "afxpriv/ATL::AfxRegCreateKey", "afxpriv/ATL::AfxRegDeleteKey", "atlbase/ATL::AtlRegisterTypeLib", "afxpriv/ATL::AfxRegOpenKey", "afxpriv/ATL::AfxRegOpenKeyEx", "afxdisp/ATL::AfxUnregisterPreviewHandler", "atlbase/ATL::AtlSetPerUserRegistration", "atlbase/ATL::AtlUnRegisterTypeLib", "atlbase/ATL::AtlLoadTypeLib", "atlbase/ATL::AtlUpdateRegistryFromResourceD", "atlbase/ATL::RegistryDataExchange"] helpviewer_keywords: ["RegistryDataExchange function, global functions"] -ms.assetid: d58b8a4e-975c-4417-8b34-d3c847f679b3 --- # Registry and TypeLib Global Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These functions provide support for loading and registering a type library. > [!IMPORTANT] diff --git a/docs/atl/reference/registry-data-exchange-macros.md b/docs/atl/reference/registry-data-exchange-macros.md index 98857707a31..76afbece908 100644 --- a/docs/atl/reference/registry-data-exchange-macros.md +++ b/docs/atl/reference/registry-data-exchange-macros.md @@ -4,10 +4,11 @@ title: "Registry Data Exchange Macros" ms.date: "11/04/2016" f1_keywords: ["atlplus/ATL::BEGIN_RDX_MAP", "atlplus/ATL::END_RDX_MAP", "atlplus/ATL::RDX_BINARY", "atlplus/ATL::RDX_CSTRING_TEXT", "atlplus/ATL::RDX_DWORD", "atlplus/ATL::RDX_TEXT", "ATLPLUS/BEGIN_RDX_MAP", "ATLPLUS/END_RDX_MAP", "ATLPLUS/RDX_BINARY", "ATLPLUS/RDX_CSTRING_TEXT", "ATLPLUS/RDX_DWORD", "ATLPLUS/RDX_TEXT"] helpviewer_keywords: ["RegistryDataExchange function, macros"] -ms.assetid: c1bc5e79-2307-43d2-9d10-3a62ffadf473 --- # Registry Data Exchange Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros perform Registry Data Exchange operations. |Name|Description| diff --git a/docs/atl/reference/registry-macros.md b/docs/atl/reference/registry-macros.md index f18617f0fe5..1d5b75f746f 100644 --- a/docs/atl/reference/registry-macros.md +++ b/docs/atl/reference/registry-macros.md @@ -4,10 +4,11 @@ title: "Registry Macros" ms.date: "08/19/2019" f1_keywords: ["ATLBASE/_ATL_STATIC_REGISTRY", "ATLBASE/DECLARE_LIBID", "ATLBASE/DECLARE_NO_REGISTRY", "ATLBASE/DECLARE_REGISTRY", "ATLBASE/DECLARE_REGISTRY_APPID_RESOURCEID", "ATLBASE/DECLARE_REGISTRY_RESOURCE", "ATLBASE/DECLARE_REGISTRY_RESOURCEID", "_ATL_STATIC_REGISTRY", "DECLARE_LIBID", "DECLARE_NO_REGISTRY", "DECLARE_REGISTRY", "DECLARE_REGISTRY_APPID_RESOURCEID", "DECLARE_REGISTRY_RESOURCE", "DECLARE_REGISTRY_RESOURCEID"] helpviewer_keywords: ["registry, ATL macros"] -ms.assetid: 3ee041da-c63b-42a4-89cf-2a4b2a6f81ae --- # Registry Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros define useful type library and registry facilities. |Name|Description| diff --git a/docs/atl/reference/security-global-functions.md b/docs/atl/reference/security-global-functions.md index e42bcb30f72..25ea04d962f 100644 --- a/docs/atl/reference/security-global-functions.md +++ b/docs/atl/reference/security-global-functions.md @@ -4,10 +4,11 @@ title: "Security Global Functions" ms.date: "11/04/2016" f1_keywords: ["atlsecurity/ATL::AtlGetDacl", "atlsecurity/ATL::AtlSetDacl", "atlsecurity/ATL::AtlGetGroupSid", "atlsecurity/ATL::AtlSetGroupSid", "atlsecurity/ATL::AtlGetOwnerSid", "atlsecurity/ATL::AtlSetOwnerSid", "atlsecurity/ATL::AtlGetSacl", "atlsecurity/ATL::AtlSetSacl", "atlsecurity/ATL::AtlGetSecurityDescriptor"] helpviewer_keywords: ["SIDs [C++], modifying SID objects", "ACL object global functions", "security IDs [C++]"] -ms.assetid: 6a584bfe-16b7-47f4-8439-9c789c41567a --- # Security Global Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These functions provide support for modifying SID and ACL objects. > [!IMPORTANT] diff --git a/docs/atl/reference/security-identifier-global-functions.md b/docs/atl/reference/security-identifier-global-functions.md index d429e27b2a4..c390c7f3951 100644 --- a/docs/atl/reference/security-identifier-global-functions.md +++ b/docs/atl/reference/security-identifier-global-functions.md @@ -4,10 +4,11 @@ title: "Security Identifier Global Functions" ms.date: "11/04/2016" f1_keywords: ["atlsecurity/ATL::Sids::AccountOps", "atlsecurity/ATL::Sids::Admins", "atlsecurity/ATL::Sids::AnonymousLogon", "atlsecurity/ATL::Sids::AuthenticatedUser", "atlsecurity/ATL::Sids::BackupOps", "atlsecurity/ATL::Sids::Batch", "atlsecurity/ATL::Sids::CreatorGroup", "atlsecurity/ATL::Sids::CreatorGroupServer", "atlsecurity/ATL::Sids::CreatorOwner", "atlsecurity/ATL::Sids::CreatorOwnerServer", "atlsecurity/ATL::Sids::Dialup", "atlsecurity/ATL::Sids::Guests", "atlsecurity/ATL::Sids::Interactive", "atlsecurity/ATL::Sids::Local", "atlsecurity/ATL::Sids::Network", "atlsecurity/ATL::Sids::NetworkService", "atlsecurity/ATL::Sids::Null", "atlsecurity/ATL::Sids::PowerUsers", "atlsecurity/ATL::Sids::PrintOps", "atlsecurity/ATL::Sids::Proxy", "atlsecurity/ATL::Sids::RasServers", "atlsecurity/ATL::Sids::Replicator", "atlsecurity/ATL::Sids::RestrictedCode", "atlsecurity/ATL::Sids::Self", "atlsecurity/ATL::Sids::ServerLogon", "atlsecurity/ATL::Sids::Service", "atlsecurity/ATL::Sids::System", "atlsecurity/ATL::Sids::SystemOps", "atlsecurity/ATL::Sids::TerminalServer", "atlsecurity/ATL::Sids::Users", "atlsecurity/ATL::Sids::World"] helpviewer_keywords: ["security IDs [C++]", "SIDs [C++], returning SID objects"] -ms.assetid: 85404dcb-c59b-4535-ab3d-66cfa37e87de --- # Security Identifier Global Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These functions return common well-known SID objects. > [!IMPORTANT] diff --git a/docs/atl/reference/server-registration-global-functions.md b/docs/atl/reference/server-registration-global-functions.md index 4277c7c13a8..084c2b5257e 100644 --- a/docs/atl/reference/server-registration-global-functions.md +++ b/docs/atl/reference/server-registration-global-functions.md @@ -3,10 +3,11 @@ description: "Learn more about: Server Registration Global Functions" title: "Server Registration Global Functions" ms.date: "11/04/2016" f1_keywords: ["atlbase/ATL::AtlComModuleRegisterServer", "atlbase/ATL::AtlComModuleUnregisterServer", "atlbase/ATL::AtlComModuleRegisterClassObjects", "atlbase/ATL::AtlComModuleRevokeClassObjects", "atlbase/ATL::AtlComModuleGetClassObject"] -ms.assetid: c2f0a35d-857c-4538-a44d-c4ea0db63b06 --- # Server Registration Global Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These functions provide support for registering and unregistering server objects in the object map. > [!IMPORTANT] diff --git a/docs/atl/reference/service-map-macros.md b/docs/atl/reference/service-map-macros.md index b42010306af..923b3b80708 100644 --- a/docs/atl/reference/service-map-macros.md +++ b/docs/atl/reference/service-map-macros.md @@ -3,10 +3,11 @@ description: "Learn more about: Service Map Macros" title: "Service Map Macros" ms.date: "11/04/2016" f1_keywords: ["atlcom/ATL::BEGIN_SERVICE_MAP", "atlcom/ATL::END_SERVICE_MAP", "atlcom/ATL::SERVICE_ENTRY", "atlcom/ATL::SERVICE_ENTRY_CHAIN", "ATLCOM/BEGIN_SERVICE_MAP", "ATLCOM/END_SERVICE_MAP", "ATLCOM/SERVICE_ENTRY", "ATLCOM/SERVICE_ENTRY_CHAIN"] -ms.assetid: ca02a125-454a-4cf6-aac2-1c5585025ed4 --- # Service Map Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros define service maps and entries. |Name|Description| diff --git a/docs/atl/reference/snap-in-object-macros.md b/docs/atl/reference/snap-in-object-macros.md index 380f4cf1169..d4a210f6777 100644 --- a/docs/atl/reference/snap-in-object-macros.md +++ b/docs/atl/reference/snap-in-object-macros.md @@ -3,10 +3,11 @@ description: "Learn more about: Snap-In Object Macros" title: "Snap-In Object Macros" ms.date: "11/04/2016" f1_keywords: ["atlsnap/ATL::BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP", "atlsnap/ATL::BEGIN_SNAPINTOOLBARID_MAP", "atlsnap/ATL::END_EXTENSION_SNAPIN_NODEINFO_MAP", "atlsnap/ATL::END_SNAPINTOOLBARID_MAP", "atlsnap/ATL::EXTENSION_SNAPIN_DATACLASS", "atlsnap/ATL::EXTENSION_SNAPIN_NODEINFO_ENTRY", "atlsnap/ATL::SNAPINMENUID", "atlsnap/ATL::SNAPINTOOLBARID_ENTRY", "ATLSNAP/BEGIN_EXTENSION_SNAPIN_NODEINFO_MAP", "ATLSNAP/BEGIN_SNAPINTOOLBARID_MAP", "ATLSNAP/END_EXTENSION_SNAPIN_NODEINFO_MAP", "ATLSNAP/END_SNAPINTOOLBARID_MAP", "ATLSNAP/EXTENSION_SNAPIN_DATACLASS", "ATLSNAP/EXTENSION_SNAPIN_NODEINFO_ENTRY", "ATLSNAP/SNAPINMENUID", "ATLSNAP/SNAPINTOOLBARID_ENTRY"] -ms.assetid: 4e9850c0-e395-4929-86c9-584a81828053 --- # Snap-In Object Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros provide support for snap-in extensions. |Name|Description| diff --git a/docs/atl/reference/specifying-compiler-optimization-for-an-atl-project.md b/docs/atl/reference/specifying-compiler-optimization-for-an-atl-project.md index c59923486a7..faaa0a50052 100644 --- a/docs/atl/reference/specifying-compiler-optimization-for-an-atl-project.md +++ b/docs/atl/reference/specifying-compiler-optimization-for-an-atl-project.md @@ -4,10 +4,11 @@ title: "Specifying Compiler Optimization for an ATL Project" ms.date: "08/19/2019" f1_keywords: ["vc.appwiz.ATL.optimization", "vc.appwiz.ATL.vtable"] helpviewer_keywords: ["ATL_DISABLE_NO_VTABLE macro", "ATL projects, compiler optimization", "ATL_NO_VTABLE macro"] -ms.assetid: 7f379318-66d5-43dd-a53d-530758d3a228 --- # Specifying Compiler Optimization for an ATL Project +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + By default, the [ATL Control Wizard](../../atl/reference/atl-control-wizard.md) generates new classes with the ATL_NO_VTABLE macro, as follows: ``` diff --git a/docs/atl/reference/stock-properties-atl-control-wizard.md b/docs/atl/reference/stock-properties-atl-control-wizard.md index d71b29f1d24..b5e748c87a7 100644 --- a/docs/atl/reference/stock-properties-atl-control-wizard.md +++ b/docs/atl/reference/stock-properties-atl-control-wizard.md @@ -3,10 +3,11 @@ description: "Learn more about: Stock Properties, ATL Control Wizard" title: "Stock Properties, ATL Control Wizard" ms.date: "11/04/2016" f1_keywords: ["vc.codewiz.class.atl.control.stockprops"] -ms.assetid: b27b0e60-08a6-43f4-ba6e-0a4e45147693 --- # Stock Properties, ATL Control Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This page of the wizard identifies the stock properties supported for the control. By default, no properties are identified. - **Not supported** diff --git a/docs/atl/reference/string-conversion-macros.md b/docs/atl/reference/string-conversion-macros.md index 9b67e45e5f2..34e484087c7 100644 --- a/docs/atl/reference/string-conversion-macros.md +++ b/docs/atl/reference/string-conversion-macros.md @@ -3,10 +3,11 @@ description: "Learn more about: String Conversion Macros" title: "String Conversion Macros" ms.date: "11/04/2016" f1_keywords: ["atlconv/ATL::DEVMODEA2W", "atlconv/ATL::TEXTMETRICA2W", "atlconv/ATL::DEVMODEOLE2T", "atlconv/ATL::TEXTMETRICOLE2T", "atlconv/ATL::DEVMODET2OLE", "atlconv/ATL::TEXTMETRICT2OLE", "atlconv/ATL::DEVMODEW2A", "atlconv/ATL::TEXTMETRICW2A", "ATLCONV/DEVMODEA2W", "ATLCONV/TEXTMETRICA2W", "ATLCONV/DEVMODEOLE2T", "ATLCONV/TEXTMETRICOLE2T", "ATLCONV/DEVMODET2OLE", "ATLCONV/TEXTMETRICT2OLE", "ATLCONV/DEVMODEW2A", "ATLCONV/TEXTMETRICW2A"] -ms.assetid: 2ff7c0b6-2bde-45fe-897f-6128e18e0c27 --- # String Conversion Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros provide string conversion features. ## ATL and MFC String Conversion Macros diff --git a/docs/atl/reference/strings-atl-property-page-wizard.md b/docs/atl/reference/strings-atl-property-page-wizard.md index af7682dd9f2..c9ed6e81a2a 100644 --- a/docs/atl/reference/strings-atl-property-page-wizard.md +++ b/docs/atl/reference/strings-atl-property-page-wizard.md @@ -4,10 +4,11 @@ title: "Strings, ATL Property Page Wizard" ms.date: "05/09/2019" f1_keywords: ["vc.codewiz.class.atl.ppg.strings"] helpviewer_keywords: ["ATL Property Page Wizard, strings"] -ms.assetid: 00547db6-911f-49eb-92e1-2ba67079d4df --- # Strings, ATL Property Page Wizard +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + ::: moniker range=">=msvc-160" The ATL Property Page wizard is not available in Visual Studio 2019 and later. diff --git a/docs/atl/reference/u-menuorid-class.md b/docs/atl/reference/u-menuorid-class.md index cd2b60ec3e5..f20de6ecfa3 100644 --- a/docs/atl/reference/u-menuorid-class.md +++ b/docs/atl/reference/u-menuorid-class.md @@ -4,10 +4,11 @@ title: "_U_MENUorID Class" ms.date: "11/04/2016" f1_keywords: ["ATL._U_MENUorID", "ATL::_U_MENUorID", "_U_MENUorID"] helpviewer_keywords: ["U_MENUorID class", "_U_MENUorID class"] -ms.assetid: cfc8032b-61b4-4a68-ba3a-92b82500ccae --- # _U_MENUorID Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides wrappers for `CreateWindow` and `CreateWindowEx`. > [!IMPORTANT] diff --git a/docs/atl/reference/u-rect-class.md b/docs/atl/reference/u-rect-class.md index 515c8add351..2a86016dd22 100644 --- a/docs/atl/reference/u-rect-class.md +++ b/docs/atl/reference/u-rect-class.md @@ -4,10 +4,11 @@ title: "_U_RECT Class" ms.date: "11/04/2016" f1_keywords: ["ATL::_U_RECT", "_U_RECT", "ATL._U_RECT"] helpviewer_keywords: ["U_RECT class", "_U_RECT class"] -ms.assetid: 5f880a2d-09cf-4327-bf32-a3519c4dcd63 --- # _U_RECT Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This argument adapter class allows either `RECT` pointers or references to be passed to a function that is implemented in terms of pointers. > [!IMPORTANT] diff --git a/docs/atl/reference/u-stringorid-class.md b/docs/atl/reference/u-stringorid-class.md index d7148ff89ca..84488cd8aea 100644 --- a/docs/atl/reference/u-stringorid-class.md +++ b/docs/atl/reference/u-stringorid-class.md @@ -4,10 +4,11 @@ title: "_U_STRINGorID Class" ms.date: "11/04/2016" f1_keywords: ["ATL._U_STRINGorID", "ATL::_U_STRINGorID", "_U_STRINGorID"] helpviewer_keywords: ["_U_STRINGorID class", "U_STRINGorID class"] -ms.assetid: 443cdc00-d265-4b27-8ef3-2feb95f3e5e3 --- # _U_STRINGorID Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This argument adapter class allows either resource names (LPCTSTRs) or resource IDs (UINTs) to be passed to a function without requiring the caller to convert the ID to a string using the MAKEINTRESOURCE macro. > [!IMPORTANT] diff --git a/docs/atl/reference/win32threadtraits-class.md b/docs/atl/reference/win32threadtraits-class.md index 2d4f1fa008f..321d51e832c 100644 --- a/docs/atl/reference/win32threadtraits-class.md +++ b/docs/atl/reference/win32threadtraits-class.md @@ -4,10 +4,11 @@ title: "Win32ThreadTraits Class" ms.date: "11/04/2016" f1_keywords: ["Win32ThreadTraits", "ATLBASE/ATL::Win32ThreadTraits", "ATLBASE/ATL::Win32ThreadTraits::CreateThread"] helpviewer_keywords: ["threading [ATL], Windows threads", "threading [ATL], creation functions", "Win32ThreadTraits class"] -ms.assetid: 50279c38-eae1-4301-9ea6-97ccea580f3e --- # Win32ThreadTraits Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides the creation function for a Windows thread. Use this class if the thread will not use CRT functions. > [!IMPORTANT] diff --git a/docs/atl/reference/window-class-macros.md b/docs/atl/reference/window-class-macros.md index 4804e4b723c..13224f77bbc 100644 --- a/docs/atl/reference/window-class-macros.md +++ b/docs/atl/reference/window-class-macros.md @@ -3,10 +3,11 @@ description: "Learn more about: Window Class Macros" title: "Window Class Macros" ms.date: "11/04/2016" f1_keywords: ["atlwin/ATL::DECLARE_WND_CLASS", "atlwin/ATL::DECLARE_WND_SUPERCLASS", "atlwin/ATL::DECLARE_WND_CLASS_EX", "ATLWIN/DECLARE_WND_CLASS", "ATLWIN/DECLARE_WND_SUPERCLASS", "ATLWIN/DECLARE_WND_CLASS_EX"] -ms.assetid: ce18681a-2bab-4453-9895-0f3ea47c2b24 --- # Window Class Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These macros define window class utilities. |Name|Description| diff --git a/docs/atl/reference/windows-messages-macros.md b/docs/atl/reference/windows-messages-macros.md index 06753053208..222363698ed 100644 --- a/docs/atl/reference/windows-messages-macros.md +++ b/docs/atl/reference/windows-messages-macros.md @@ -3,10 +3,11 @@ description: "Learn more about: Windows Messages Macros" title: "Windows Messages Macros" ms.date: "11/04/2016" f1_keywords: ["atlbase/ATL::WM_FORWARDMSG", "ATLBASE/WM_FORWARDMSG"] -ms.assetid: 63abd22c-372d-4148-bb04-c605950ae64f --- # Windows Messages Macros +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This macro forwards window messages. |Name|Description| diff --git a/docs/atl/reference/winmodule-global-functions.md b/docs/atl/reference/winmodule-global-functions.md index c0708a6a568..2523f806fc7 100644 --- a/docs/atl/reference/winmodule-global-functions.md +++ b/docs/atl/reference/winmodule-global-functions.md @@ -3,10 +3,11 @@ description: "Learn more about: WinModule Global Functions" title: "WinModule Global Functions" ms.date: "11/04/2016" f1_keywords: ["atlbase/ATL::AtlWinModuleAddCreateWndData", "atlbase/ATL::AtlWinModuleExtractCreateWndData"] -ms.assetid: 8ce45a5b-26a7-491f-9096-c09ceca5f2c2 --- # WinModule Global Functions +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + These functions provide support for `_AtlCreateWndData` structure operations. > [!IMPORTANT] diff --git a/docs/atl/reference/worker-archetype.md b/docs/atl/reference/worker-archetype.md index e4a36e9702a..ec8e422243c 100644 --- a/docs/atl/reference/worker-archetype.md +++ b/docs/atl/reference/worker-archetype.md @@ -3,10 +3,11 @@ description: "Learn more about: Worker Archetype" title: "Worker Archetype" ms.date: "11/04/2016" helpviewer_keywords: ["Worker archetype"] -ms.assetid: 834145cd-09d3-4149-bc99-620e1871cbfb --- # Worker Archetype +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Classes that conform to the *worker* archetype provide the code to process work items queued on a thread pool. **Implementation** From 414b1e0eb4f0d20dba71bdbc5116eed1d8161943 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Wed, 25 Feb 2026 15:03:57 -0800 Subject: [PATCH 337/619] ATL batch 5: docs updates (files 395-426) --- docs/atl/registry-entries.md | 3 ++- docs/atl/registry-scripting-examples.md | 3 ++- docs/atl/registry-support-classes.md | 3 ++- docs/atl/running-objects-classes.md | 3 ++- docs/atl/running-the-program-as-a-local-server.md | 3 ++- docs/atl/scope-of-atl.md | 3 ++- docs/atl/security-classes.md | 3 ++- docs/atl/service-provider-support-classes.md | 3 ++- .../setting-up-a-static-link-to-the-registrar-code-cpp-only.md | 3 ++- docs/atl/site-information-classes.md | 3 ++- docs/atl/specifying-property-pages.md | 3 ++- docs/atl/specifying-the-threading-model-for-a-project-atl.md | 3 ++- docs/atl/string-and-text-classes.md | 3 ++- docs/atl/supporting-idispatch-and-ierrorinfo.md | 3 ++- docs/atl/supporting-idispeventimpl.md | 3 ++- docs/atl/testing-the-atl-dhtml-control.md | 3 ++- docs/atl/testing-the-modified-atl-dhtml-control.md | 3 ++- docs/atl/thread-pooling-classes.md | 3 ++- docs/atl/threading-models-and-critical-sections-classes.md | 3 ++- docs/atl/ui-support-classes.md | 3 ++- docs/atl/understanding-backus-naur-form-bnf-syntax.md | 3 ++- docs/atl/understanding-parse-trees.md | 2 ++ docs/atl/understanding-window-traits.md | 3 ++- docs/atl/using-a-template-library.md | 3 ++- docs/atl/using-a-window.md | 3 ++- docs/atl/using-contained-windows.md | 3 ++- docs/atl/using-idispeventimpl.md | 3 ++- docs/atl/using-idispeventsimpleimpl.md | 3 ++- ...sing-replaceable-parameters-the-registrar-s-preprocessor.md | 3 ++- docs/atl/using-task-manager.md | 3 ++- docs/atl/utility-classes.md | 3 ++- docs/atl/windows-support-classes.md | 3 ++- 32 files changed, 64 insertions(+), 31 deletions(-) diff --git a/docs/atl/registry-entries.md b/docs/atl/registry-entries.md index 30fd6299398..2f59a898775 100644 --- a/docs/atl/registry-entries.md +++ b/docs/atl/registry-entries.md @@ -3,10 +3,11 @@ description: "Learn more about: Registry Entries" title: "Registry Entries (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["registry, ATL services entries", "registry, application IDs"] -ms.assetid: 881989b7-61bb-459a-a13e-3bfcb33e184e --- # Registry Entries +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + DCOM introduced the concept of Application IDs (AppIDs), which group configuration options for one or more DCOM objects into a centralized location in the registry. You specify an AppID by indicating its value in the AppID named value under the object's CLSID. By default, an ATL-generated service uses its CLSID as the GUID for its AppID. Under `HKEY_CLASSES_ROOT\AppID`, you can specify DCOM-specific entries. Initially, two entries exist: diff --git a/docs/atl/registry-scripting-examples.md b/docs/atl/registry-scripting-examples.md index 605b92f0df0..55053c58db8 100644 --- a/docs/atl/registry-scripting-examples.md +++ b/docs/atl/registry-scripting-examples.md @@ -3,10 +3,11 @@ description: "Learn more about: Registry Scripting Examples" title: "Registry Scripting Examples" ms.date: "11/04/2016" helpviewer_keywords: ["scripting, examples", "registrar scripts [ATL]", "scripts, Registrar scripts", "registry, Registrar"] -ms.assetid: b6df80e1-e08b-40ee-9243-9b381b172460 --- # Registry Scripting Examples +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The scripting examples in this topic demonstrate how to add a key to the system registry, register the Registrar COM server, and specify multiple parse trees. ## Add a Key to HKEY_CURRENT_USER diff --git a/docs/atl/registry-support-classes.md b/docs/atl/registry-support-classes.md index 1aafad7ccfc..2e0b86bd46e 100644 --- a/docs/atl/registry-support-classes.md +++ b/docs/atl/registry-support-classes.md @@ -4,10 +4,11 @@ title: "Registry Support Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["registry support classes, ATL", "ATL, registry", "registry support classes"] -ms.assetid: 4203c346-77a9-42bf-8683-a3c3351cc490 --- # Registry Support Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following class provides registry support: - [CRegKey](../atl/reference/cregkey-class.md) Contains methods for manipulating values in the system registry. diff --git a/docs/atl/running-objects-classes.md b/docs/atl/running-objects-classes.md index 8d7c92b99fe..f621bae5721 100644 --- a/docs/atl/running-objects-classes.md +++ b/docs/atl/running-objects-classes.md @@ -4,10 +4,11 @@ title: "Running Objects Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["object classes, running", "objects [C++], running objects classes"] -ms.assetid: b4d63c41-81fd-4000-96c5-ea0a011f4308 --- # Running Objects Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following class provides support for running objects: - [IRunnableObjectImpl](../atl/reference/irunnableobjectimpl-class.md) Determines if an object is running, forces it to run, or locks it into the running state. diff --git a/docs/atl/running-the-program-as-a-local-server.md b/docs/atl/running-the-program-as-a-local-server.md index 647555b4552..4d1bc97c64e 100644 --- a/docs/atl/running-the-program-as-a-local-server.md +++ b/docs/atl/running-the-program-as-a-local-server.md @@ -3,11 +3,12 @@ description: "Learn more about: Running the Program as a Local Server" title: "Running the Program as a Local Server" ms.date: "11/04/2016" helpviewer_keywords: ["debugging [ATL], running services as local server", "ATL services, running as local servers"] -ms.assetid: eb9701e6-e2a8-4666-897f-0c893aec8ac7 ms.topic: concept-article --- # Running the Program as a Local Server +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + If running the program as a service is inconvenient, you can temporarily change the registry so that the program is run as a normal local server. Simply rename the `LocalService` value under your AppID to `_LocalService` and ensure the `LocalServer32` key under your CLSID is set correctly. (Note that using DCOMCNFG to specify that your application should be run on a different computer renames your `LocalServer32` key to `_LocalServer32`.) Running your program as a local server takes a few more seconds on startup because the call to `StartServiceCtrlDispatcher` in `CAtlServiceModuleT::Start` takes a few seconds before it fails. ## See also diff --git a/docs/atl/scope-of-atl.md b/docs/atl/scope-of-atl.md index bf84207f3b3..34b054cdbb3 100644 --- a/docs/atl/scope-of-atl.md +++ b/docs/atl/scope-of-atl.md @@ -3,10 +3,11 @@ description: "Learn more about: Scope of ATL" title: "Scope of ATL" ms.date: "11/04/2016" helpviewer_keywords: ["ATL, scope"] -ms.assetid: 381adf50-3cb0-4d0f-a79a-07da093bc280 --- # Scope of ATL +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ATL allows you to easily create COM objects, Automation servers, and ActiveX controls. ATL provides built-in support for many of the fundamental COM interfaces. ATL is shipped as source code which you include in your application. ATL also makes a DLL available (atl90.dll), which contains code that can be shared across components. However, this DLL is not necessary. diff --git a/docs/atl/security-classes.md b/docs/atl/security-classes.md index c4d3e1acab7..e44ab3c8040 100644 --- a/docs/atl/security-classes.md +++ b/docs/atl/security-classes.md @@ -4,10 +4,11 @@ title: "Security Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["security classes [C++]"] -ms.assetid: 0477f1a4-c1af-4c4f-bbca-08f7b844e028 --- # Security Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + These classes are wrappers for common Win32 security classes and objects. - [CAccessToken](../atl/reference/caccesstoken-class.md) This class is a wrapper for an access token. diff --git a/docs/atl/service-provider-support-classes.md b/docs/atl/service-provider-support-classes.md index 9cce29b4cd7..a46d539dbf4 100644 --- a/docs/atl/service-provider-support-classes.md +++ b/docs/atl/service-provider-support-classes.md @@ -4,10 +4,11 @@ title: "Service Provider Support Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["service provider support classes"] -ms.assetid: 190f598e-fb32-4d37-adf1-21de395b04d9 --- # Service Provider Support Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following class provides support for service providers: - [IServiceProviderImpl](../atl/reference/iserviceproviderimpl-class.md) Locates a service specified by its GUID and returns the interface pointer for the requested interface on the service. diff --git a/docs/atl/setting-up-a-static-link-to-the-registrar-code-cpp-only.md b/docs/atl/setting-up-a-static-link-to-the-registrar-code-cpp-only.md index e5797ef152c..6b56f346110 100644 --- a/docs/atl/setting-up-a-static-link-to-the-registrar-code-cpp-only.md +++ b/docs/atl/setting-up-a-static-link-to-the-registrar-code-cpp-only.md @@ -3,11 +3,12 @@ title: "Setting up a static link to the Registrar code (C++ only)" description: "How to statically link C++ code to the ATL Registrar code." ms.date: 09/03/2020 helpviewer_keywords: ["statically linking to ATL Registrar code", "linking [C++], to ATL Registrar code"] -ms.assetid: 835f5885-87a6-48fa-91e6-60988ee65538 ms.topic: how-to --- # Setting up a static link to the Registrar code (C++ Only) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + C++ clients can create a static link to the Registrar's code. Static linking of the Registrar's parser adds approximately 5K to a release build. The simplest way to set up static linking assumes you have specified [`DECLARE_REGISTRY_RESOURCEID`](reference/registry-macros.md#declare_registry_resourceid) in your object's declaration. (It's the default specification used by the ATL.) diff --git a/docs/atl/site-information-classes.md b/docs/atl/site-information-classes.md index 4ece835b060..620d587be46 100644 --- a/docs/atl/site-information-classes.md +++ b/docs/atl/site-information-classes.md @@ -4,10 +4,11 @@ title: "Site Information Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["site information classes"] -ms.assetid: 102eae20-7953-4efb-b27b-409885c9c064 --- # Site Information Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes allow an object to communicate with its site: - [IObjectWithSiteImpl](../atl/reference/iobjectwithsiteimpl-class.md) Retrieves and sets a pointer to an object's site. Used for objects that are not controls. diff --git a/docs/atl/specifying-property-pages.md b/docs/atl/specifying-property-pages.md index 0213211d07c..507024c56c7 100644 --- a/docs/atl/specifying-property-pages.md +++ b/docs/atl/specifying-property-pages.md @@ -3,11 +3,12 @@ description: "Learn more about: Specifying Property Pages" title: "Specifying Property Pages (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["ISpecifyPropertyPages method", "property pages, specifying"] -ms.assetid: ee8678cf-c708-49ab-b0ad-fc2db31f1ac3 ms.topic: how-to --- # Specifying Property Pages +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + When you create an ActiveX control, you will often want to associate it with property pages that can be used to set the properties of your control. Control containers use the `ISpecifyPropertyPages` interface to find out which property pages can be used to set your control's properties. You will need to implement this interface on your control. To implement `ISpecifyPropertyPages` using ATL, take the following steps: diff --git a/docs/atl/specifying-the-threading-model-for-a-project-atl.md b/docs/atl/specifying-the-threading-model-for-a-project-atl.md index f9d9ebeb3aa..690bb8c1a1e 100644 --- a/docs/atl/specifying-the-threading-model-for-a-project-atl.md +++ b/docs/atl/specifying-the-threading-model-for-a-project-atl.md @@ -3,11 +3,12 @@ description: "Learn more about: Specifying the Threading Model for a Project (AT title: "Specifying the Threading Model for a Project (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["_ATL_FREE_THREADED macro", "_ATL_APARTMENT_THREADED macro", "ATL, multithreading", "threading [ATL], models", "_ATL_SINGLE_THREADED macro"] -ms.assetid: 6b571078-521c-4f3e-9f08-482aa235a822 ms.topic: concept-article --- # Specifying the Threading Model for a Project (ATL) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following macros are available to specify the threading model of an ATL project: |Macro|Guidelines for using| diff --git a/docs/atl/string-and-text-classes.md b/docs/atl/string-and-text-classes.md index 3810a64d0d8..01bf9dde0e9 100644 --- a/docs/atl/string-and-text-classes.md +++ b/docs/atl/string-and-text-classes.md @@ -4,10 +4,11 @@ title: "ATL String and Text Classes" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["string conversion, ATL", "string classes [ATL]"] -ms.assetid: aa0cdc41-c953-4b17-82b6-59b908545571 --- # String and Text Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + These classes provide support for strings and text string conversions. - [CA2AEX](../atl/reference/ca2aex-class.md) This class is used by the string conversion macros CA2TEX and CT2AEX, and the typedef CA2A. diff --git a/docs/atl/supporting-idispatch-and-ierrorinfo.md b/docs/atl/supporting-idispatch-and-ierrorinfo.md index 97c49084358..97d5c06785d 100644 --- a/docs/atl/supporting-idispatch-and-ierrorinfo.md +++ b/docs/atl/supporting-idispatch-and-ierrorinfo.md @@ -3,11 +3,12 @@ description: "Learn more about: Supporting IDispatch and IErrorInfo" title: "Supporting IDispatch and IErrorInfo" ms.date: "11/04/2016" helpviewer_keywords: ["ISupportErrorInfoImpl method", "IErrorInfo class suppor in ATL", "IDispatchImpl class", "IDispatch class support in ATL"] -ms.assetid: 7db2220f-319d-4ce9-9382-d340019f14f7 ms.topic: concept-article --- # Supporting IDispatch and IErrorInfo +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + You can use the template class [IDispatchImpl](../atl/reference/idispatchimpl-class.md) to provide a default implementation of the `IDispatch Interface` portion of any dual interfaces on your object. If your object uses the `IErrorInfo` interface to report errors back to the client, then your object must support the `ISupportErrorInfo` interface. The template class [ISupportErrorInfoImpl](../atl/reference/isupporterrorinfoimpl-class.md) provides an easy way to implement this if you only have a single interface that generates errors on your object. diff --git a/docs/atl/supporting-idispeventimpl.md b/docs/atl/supporting-idispeventimpl.md index 261ffa445cd..dde4fa8ab69 100644 --- a/docs/atl/supporting-idispeventimpl.md +++ b/docs/atl/supporting-idispeventimpl.md @@ -3,11 +3,12 @@ description: "Learn more about: Supporting IDispEventImpl" title: "Supporting IDispEventImpl" ms.date: "11/04/2016" helpviewer_keywords: ["event sink maps, declaring", "IDispEventImpl class, advising and unadvising", "SINK_ENTRY macro", "type libraries, importing", "ATL, IDispEventImpl support in COM objects", "BEGIN_SINK_MAP macro", "IDispEventImpl class, declaring"] -ms.assetid: b957f930-6a5b-4598-8e4d-8027759957e7 ms.topic: concept-article --- # Supporting IDispEventImpl +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The template class [IDispEventImpl](../atl/reference/idispeventimpl-class.md) can be used to provide support for connection point sinks in your ATL class. A connection point sink allows your class to handle events fired from external COM objects. These connection point sinks are mapped with an event sink map, provided by your class. To properly implement a connection point sink for your class, the following steps must be completed: diff --git a/docs/atl/testing-the-atl-dhtml-control.md b/docs/atl/testing-the-atl-dhtml-control.md index 1d223e24d1d..32fe9fae2ff 100644 --- a/docs/atl/testing-the-atl-dhtml-control.md +++ b/docs/atl/testing-the-atl-dhtml-control.md @@ -3,11 +3,12 @@ description: "Learn more about: Testing the ATL DHTML Control" title: "Testing the ATL DHTML Control" ms.date: "11/04/2016" helpviewer_keywords: ["HTML controls, testing", "testing controls", "DHTML controls", "DHTML controls, testing"] -ms.assetid: 0e4b4358-80ce-4505-8b06-ef4f30b1d1f0 ms.topic: how-to --- # Testing the ATL DHTML Control +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Once you have created your project, you can build and test the sample control. Before you do this, use **Class View** and **Solution Explorer** to examine the project. The elements of your project are described in greater detail in [Identifying the Elements of the DHTML Control Project](../atl/identifying-the-elements-of-the-dhtml-control-project.md). ## To build and test the ATL DHTML control diff --git a/docs/atl/testing-the-modified-atl-dhtml-control.md b/docs/atl/testing-the-modified-atl-dhtml-control.md index fe0809b88b7..b120c2d27bf 100644 --- a/docs/atl/testing-the-modified-atl-dhtml-control.md +++ b/docs/atl/testing-the-modified-atl-dhtml-control.md @@ -3,11 +3,12 @@ description: "Learn more about: Testing the Modified ATL DHTML Control" title: "Testing the Modified ATL DHTML Control" ms.date: "11/06/2018" helpviewer_keywords: ["HTML controls, testing", "testing controls", "DHTML controls, testing"] -ms.assetid: 42316118-9433-410f-9d8a-0efcc1eff824 ms.topic: how-to --- # Testing the Modified ATL DHTML Control +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Try out your new control to see how it works now. ## To build and test the modified control diff --git a/docs/atl/thread-pooling-classes.md b/docs/atl/thread-pooling-classes.md index ff62fdc9f8c..d78f5b29aa5 100644 --- a/docs/atl/thread-pooling-classes.md +++ b/docs/atl/thread-pooling-classes.md @@ -4,10 +4,11 @@ title: "Thread Pooling Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["thread pooling, classes", "threading [ATL], pooling", "pooling worker threads"] -ms.assetid: 01fa2c1c-12ae-4781-b772-0a74b6365a8c --- # Thread Pooling Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes support thread pooling: - [CComAutoThreadModule](../atl/reference/ccomautothreadmodule-class.md) Implements an EXE module, with support for multiple thread-pooled apartments. diff --git a/docs/atl/threading-models-and-critical-sections-classes.md b/docs/atl/threading-models-and-critical-sections-classes.md index 1bc26034ca9..21ebb6aafcb 100644 --- a/docs/atl/threading-models-and-critical-sections-classes.md +++ b/docs/atl/threading-models-and-critical-sections-classes.md @@ -3,11 +3,12 @@ description: "Learn more about: Threading Models and Critical Sections Classes" title: "Threading Models and Critical Sections Classes (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["ATL, critical sections", "ATL, multithreading", "threading [ATL], models", "critical sections"] -ms.assetid: 759f05ef-6285-4be6-a2cc-78572dd75146 ms.topic: concept-article --- # Threading Models and Critical Sections Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes define a threading model and critical section: - [CAtlAutoThreadModule](../atl/reference/catlautothreadmodule-class.md) Implements a thread-pooled, apartment-model COM server. diff --git a/docs/atl/ui-support-classes.md b/docs/atl/ui-support-classes.md index 8e5f56f4c4c..53a4941d0a5 100644 --- a/docs/atl/ui-support-classes.md +++ b/docs/atl/ui-support-classes.md @@ -4,10 +4,11 @@ title: "UI Support Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["user interfaces, support classes", "user interfaces, ATL classes"] -ms.assetid: 313dfc95-308a-4118-b919-5a3c3673b865 --- # UI Support Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes provide general UI support: - [IDocHostUIHandlerDispatch](../atl/reference/idochostuihandlerdispatch-interface.md) An interface to the Microsoft HTML parsing and rendering engine. diff --git a/docs/atl/understanding-backus-naur-form-bnf-syntax.md b/docs/atl/understanding-backus-naur-form-bnf-syntax.md index 7e5295bf9ec..3e218f2ade2 100644 --- a/docs/atl/understanding-backus-naur-form-bnf-syntax.md +++ b/docs/atl/understanding-backus-naur-form-bnf-syntax.md @@ -3,11 +3,12 @@ description: "Learn more about: Understanding Backus-Naur form (BNF) syntax" title: "ATL Registrar and Backus-Naur form (BNF) syntax" ms.date: "05/14/2019" helpviewer_keywords: ["BNF notation", "Backus-Naur form (BNF) syntax"] -ms.assetid: 994bbef0-9077-4aa8-bdfe-b7e830af9acc ms.topic: concept-article --- # Understanding Backus-Naur form (BNF) syntax +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The scripts used by the ATL Registrar are described in this topic using BNF syntax, which uses the notation shown in the following table. |Convention/symbol|Meaning| diff --git a/docs/atl/understanding-parse-trees.md b/docs/atl/understanding-parse-trees.md index a0eea7d823a..75544ab3c4e 100644 --- a/docs/atl/understanding-parse-trees.md +++ b/docs/atl/understanding-parse-trees.md @@ -7,6 +7,8 @@ ms.topic: concept-article --- # Understanding parse trees +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + You can define one or more parse trees in your registrar script, where each parse tree has the following form: > \{\}+ diff --git a/docs/atl/understanding-window-traits.md b/docs/atl/understanding-window-traits.md index df7884f8624..a6a391133f6 100644 --- a/docs/atl/understanding-window-traits.md +++ b/docs/atl/understanding-window-traits.md @@ -3,11 +3,12 @@ description: "Learn more about: Understanding Window Traits" title: "ATL Window Traits" ms.date: "11/04/2016" helpviewer_keywords: ["window traits"] -ms.assetid: c90cf850-9e91-49da-9cf3-ad4efb30347d ms.topic: concept-article --- # Understanding Window Traits +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Window traits classes provide a simple method for standardizing the styles used for the creation of an ATL window object. Window traits are accepted as template parameters by [CWindowImpl](../atl/reference/cwindowimpl-class.md) and other ATL window classes as a way of providing default window styles at the class level. If the creator of a window instance doesn't provide styles explicitly in the call to [Create](../atl/reference/cwindowimpl-class.md#create), you can use a traits class to ensure that the window is still created with the correct styles. You can even ensure that certain styles are set for all instances of that window class while permitting other styles to be set on a per-instance basis. diff --git a/docs/atl/using-a-template-library.md b/docs/atl/using-a-template-library.md index 11bd456ff96..7fae7aa5932 100644 --- a/docs/atl/using-a-template-library.md +++ b/docs/atl/using-a-template-library.md @@ -3,11 +3,12 @@ description: "Learn more about: Using a Template Library" title: "Using a Template Library (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["template libraries"] -ms.assetid: 5e80ec6e-a61c-41ce-b34b-9a6252c46265 ms.topic: concept-article --- # Using a Template Library +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + A template is somewhat like a macro. As with a macro, invoking a template causes it to expand (with appropriate parameter substitution) to code you have written. However, a template goes further than this to allow the creation of new classes based on types that you pass as parameters. These new classes implement type-safe ways of performing the operation expressed in your template code. Template libraries such as ATL differ from traditional C++ class libraries in that they are typically supplied only as source code (or as source code with a little, supporting run time) and are not inherently or necessarily hierarchical in nature. Rather than deriving from a class to get the functionality you desire, you instantiate a class from a template. diff --git a/docs/atl/using-a-window.md b/docs/atl/using-a-window.md index 69488133ae5..99a3e945018 100644 --- a/docs/atl/using-a-window.md +++ b/docs/atl/using-a-window.md @@ -3,11 +3,12 @@ description: "Learn more about: Using a Window" title: "Using a Window (ATL)" ms.date: "11/04/2016" helpviewer_keywords: ["ATL, windows", "CWindow class, about CWindow class", "windows [C++], ATL"] -ms.assetid: b3b9cc8e-4287-486b-b080-38852bc2943a ms.topic: concept-article --- # Using a Window +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Class [CWindow](../atl/reference/cwindow-class.md) allows you to use a window. Once you attach a window to a `CWindow` object, you can then call `CWindow` methods to manipulate the window. `CWindow` also contains an HWND operator to convert a `CWindow` object to an HWND. Thus you can pass a `CWindow` object to any function that requires a handle to a window. You can easily mix `CWindow` method calls and Win32 function calls, without creating any temporary objects. Because `CWindow` has only two data member (a window handle and the default dimensions), it does not impose an overhead on your code. In addition, many of the `CWindow` methods simply wrap corresponding Win32 API functions. By using `CWindow`, the HWND member is automatically passed to the Win32 function. diff --git a/docs/atl/using-contained-windows.md b/docs/atl/using-contained-windows.md index 82894f8eeae..9de7cffd6db 100644 --- a/docs/atl/using-contained-windows.md +++ b/docs/atl/using-contained-windows.md @@ -3,11 +3,12 @@ description: "Learn more about: Using Contained Windows" title: "Using Contained Windows" ms.date: "11/04/2016" helpviewer_keywords: ["ATL, windows", "windows [C++], ATL", "contained windows in ATL"] -ms.assetid: 7b3d79e5-b569-413f-9b98-df4f14efbe2b ms.topic: concept-article --- # Using Contained Windows +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + ATL implements contained windows with [CContainedWindowT](../atl/reference/ccontainedwindowt-class.md). A contained window represents a window that delegates its messages to a container object instead of handling them in its own class. > [!NOTE] diff --git a/docs/atl/using-idispeventimpl.md b/docs/atl/using-idispeventimpl.md index 9e9c1537f24..10a6ef481e5 100644 --- a/docs/atl/using-idispeventimpl.md +++ b/docs/atl/using-idispeventimpl.md @@ -3,11 +3,12 @@ description: "Learn more about: Using IDispEventImpl" title: "Using IDispEventImpl (ATL)" ms.date: "08/19/2019" helpviewer_keywords: ["IDispEventImpl class, using"] -ms.assetid: 82d53b61-9d0d-45c5-aff9-2fafa468a9ca ms.topic: how-to --- # Using IDispEventImpl +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + When using `IDispEventImpl` to handle events, you will need to: - Derive your class from [IDispEventImpl](../atl/reference/idispeventimpl-class.md). diff --git a/docs/atl/using-idispeventsimpleimpl.md b/docs/atl/using-idispeventsimpleimpl.md index 3f50230f72c..875fb0cd26c 100644 --- a/docs/atl/using-idispeventsimpleimpl.md +++ b/docs/atl/using-idispeventsimpleimpl.md @@ -3,11 +3,12 @@ description: "Learn more about: Using IDispEventSimpleImpl" title: "Using IDispEventSimpleImpl (ATL)" ms.date: "08/19/2019" helpviewer_keywords: ["IDispEventSimpleImpl class, using"] -ms.assetid: 8640ad1a-4bd0-40a5-b5e4-7322685d7aab ms.topic: concept-article --- # Using IDispEventSimpleImpl +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + When using `IDispEventSimpleImpl` to handle events, you will need to: - Derive your class from [IDispEventSimpleImpl](../atl/reference/idispeventsimpleimpl-class.md). diff --git a/docs/atl/using-replaceable-parameters-the-registrar-s-preprocessor.md b/docs/atl/using-replaceable-parameters-the-registrar-s-preprocessor.md index 5541235e127..ea68a8f0ef7 100644 --- a/docs/atl/using-replaceable-parameters-the-registrar-s-preprocessor.md +++ b/docs/atl/using-replaceable-parameters-the-registrar-s-preprocessor.md @@ -3,11 +3,12 @@ description: "Learn more about: Using Replaceable Parameters (The Registrar's Pr title: "Using Replaceable Parameters (ATL Registrar)" ms.date: "11/04/2016" helpviewer_keywords: ["%MODULE%"] -ms.assetid: 0b376994-84a6-4967-8d97-8c01dfc94efe ms.topic: concept-article --- # Using Replaceable Parameters (The Registrar's Preprocessor) +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + Replaceable parameters allow a Registrar's client to specify run-time data. To do this, the Registrar maintains a replacement map into which it enters the values associated with the replaceable parameters in your script. The Registrar makes these entries at run time. ## Using %MODULE% diff --git a/docs/atl/using-task-manager.md b/docs/atl/using-task-manager.md index 31747f62825..37a86152888 100644 --- a/docs/atl/using-task-manager.md +++ b/docs/atl/using-task-manager.md @@ -3,11 +3,12 @@ description: "Learn more about: Using Task Manager" title: "Using Task Manager" ms.date: "11/04/2016" helpviewer_keywords: ["Task Manager", "breakpoints, Task Manager", "debugging [ATL], using Task Manager"] -ms.assetid: 773fccd5-308d-42c2-a17f-60ae94989062 ms.topic: how-to --- # Using Task Manager +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + One of the simplest ways to debug a service is through the use of the Task Manager. While the service is running, start the Task Manager and click the **Processes** tab. Right-click the name of the EXE and then click **Debug**. This launches Visual C++ attached to that running process. Now, click **Break** on the **Debug** menu to allow you to set breakpoints in your code. Click **Run** to run to your selected breakpoints. ## See also diff --git a/docs/atl/utility-classes.md b/docs/atl/utility-classes.md index df1f4375949..b454bb01a80 100644 --- a/docs/atl/utility-classes.md +++ b/docs/atl/utility-classes.md @@ -4,10 +4,11 @@ title: "Utility Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["utility classes"] -ms.assetid: 33d5da9d-89a5-49f9-a873-a26499299d17 --- # Utility Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following MFC-independent utility classes are provided: - [CImage](../atl-mfc-shared/reference/cimage-class.md) Provides enhanced bitmap support, including the ability to load and save images in JPEG, GIF, BMP, and Portable Network Graphics (PNG) formats. diff --git a/docs/atl/windows-support-classes.md b/docs/atl/windows-support-classes.md index caa906a9fb4..a8f615fa208 100644 --- a/docs/atl/windows-support-classes.md +++ b/docs/atl/windows-support-classes.md @@ -4,10 +4,11 @@ title: "Windows Support Classes (ATL)" ms.date: "11/04/2016" ms.topic: "reference" helpviewer_keywords: ["ATL, windows", "windows [C++], ATL"] -ms.assetid: 750b14d5-d787-4d2b-9728-ac199ccad489 --- # Windows Support Classes +[!INCLUDE[product-lifecycle-status](includes/lifecycle-note.md)] + The following classes provide support for windows: - [_U_MENUorID](../atl/reference/u-menuorid-class.md) Provides wrappers for `CreateWindow` and `CreateWindowEx`. From 847ff2a52a7bedae7f3aae16bd42b906a9b75e5d Mon Sep 17 00:00:00 2001 From: paulth1 <42621139+paulth1@users.noreply.github.com> Date: Wed, 25 Feb 2026 15:45:21 -0800 Subject: [PATCH 338/619] edit pass: redistributing-microsoft-c++-files --- docs/windows/redist-version-auditing.md | 30 +++---- ...-vc-redistributable-installation-issues.md | 82 +++++++++---------- 2 files changed, 55 insertions(+), 57 deletions(-) diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index 2e09b9c1607..b48363f1375 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -20,16 +20,16 @@ For more information about the versions of VC Runtime that are no longer support ## Enable NTFS file auditing to determine VC Runtime usage -This article provides the steps to manually enable NTFS file auditing and review audit events to determine which applications are calling the unsupported versions of the VC Runtime. Because there are several files that can be used by an application, this article also shows how to use the PowerShell [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl) and [`Set-Acl`](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update auditing permissions. For more information about how to configure audit policies for a file, see [Apply a basic audit policy on a file or folder](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder). +This article provides the steps to manually enable NTFS file auditing and review audit events to determine which applications are calling the unsupported versions of the VC Runtime. Because there are several files that an application can use, this article also shows how to use the PowerShell [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl) and [`Set-Acl`](/powershell/module/microsoft.powershell.security/set-acl) cmdlets to update auditing permissions. For more information about how to configure audit policies for a file, see [Apply a basic audit policy on a file or folder](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/apply-a-basic-audit-policy-on-a-file-or-folder). ### Manually enable object access auditing on the system -Object access must be enabled before you enable file level auditing: +Object access must be enabled before you enable file-level auditing: -1. Open the **Local Group Policy Editor** by pressing `Windows` + `R` to open the **Run** dialog. Then type `gpedit.msc` and press **Enter**. +1. Select **Windows**+**R** to open the **Run** dialog. Then enter **gpedit.msc** and select **Enter** to open **Local Group Policy Editor**. 1. Go to **Computer Configuration** > **Windows Settings** > **Security Settings** > **Advanced Audit Policy Configuration** > **System Audit Policies** > **Object Access**. 1. Double-click **Audit File System**. In the **Audit File System Properties** dialog, select **Configure the following audit events** > **Success** > **OK**. -1. Close the **Local Group Policy Editor**. +1. Close **Local Group Policy Editor**. Alternatively, you can use `auditpol.exe` to enable object access: @@ -43,27 +43,27 @@ To monitor which process accesses a VC Runtime file, enable auditing on the VC R 1. Right-click the file that you want to audit, select **Properties**, and then select the **Security** tab. For more information about finding installed VC Runtime files, see [VC Runtime installed locations](#vcruntime_install_location). 1. Select **Advanced**. 1. In the **Advanced Security Settings** dialog, select the **Auditing** tab and then select **Continue**. -1. To add a new auditing rule, select **Add**. In the **Auditing Entry** dialog, select a principal, and then enter the name of the user or group you want to add, such as **(Everyone)**. Then select **OK**. +1. To add a new auditing rule, select **Add**. In the **Auditing Entry** dialog, select a principal, and then enter the name of the user or group that you want to add, such as **(Everyone)**. Then select **OK**. 1. In **Type**, ensure that **Success** is selected. 1. Select **Show advance permissions** > **Clear all** > **Traverse folder / execute file** > **OK**. -1. There should now be a new row in the **Auditing** entries matching what you selected. Select **OK**. +1. Observe that a new row in the **Auditing** entries matches what you selected. Select **OK**. 1. In the **Properties** dialog, select **OK**. The audit rule is now enabled for the file. ### Manually review audit logs -NTFS file auditing generates ["Event 4663: An attempt was made to access an object"](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) for each file that includes the audit permission and is accessed by a process. +NTFS file auditing generates [Event 4663: An attempt was made to access an object](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) for each file that includes the audit permission and is accessed by a process. -1. Open the **Event Viewer** by selecting **Windows** + **R** to open the **Run** dialog. Then enter **eventvwr.msc** and select **Enter**. +1. Select **Windows**+**R** to open the **Run** dialog. Then enter **eventvwr.msc** and select **Enter** to open **Event Viewer**. 1. Go to the **Security** logs in the **Event Viewer** by expanding **Windows Logs** > **Security**. The results pane lists security events. -1. Find the audit events by choosing **Filter Current Log...** in the **Actions** pane. Narrow down the events to **Event ID 4663 (Audit Success for the File System Category)** by entering **4663** into the **Includes/Excludes Event IDs** text box. +1. Find the audit events by choosing **Filter Current Log...** in the **Actions** pane. To narrow down the events to **Event ID 4663 (Audit Success for the File System Category)**, enter **4663** in the **Includes/Excludes Event IDs** text box. -For an example of a File Access Auditing Event 4663, see ["4663(S): An attempt was made to access an object."](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663). +For a File Access Auditing Event 4663 example, see [4663(S): An attempt was made to access an object.](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663). ### Use PowerShell to audit VC Runtime usage -To update File Auditing Permissions with PowerShell, follow these steps: +To update file auditing permissions with PowerShell, follow these steps: 1. Define the [file system audit rule](/dotnet/api/system.security.accesscontrol.filesystemauditrule.-ctor) to apply to the files. 1. Obtain a file's security descriptor with [`Get-Acl`](/powershell/module/microsoft.powershell.security/get-acl). @@ -122,7 +122,7 @@ ForEach-Object { ### PowerShell: View file audit events -PowerShell provides `Get-WinEvent` to get event records for various event logs, as shown in the following PowerShell code that lists all of the Auditing Event 4663 records over the past 24 hours: +PowerShell provides `Get-WinEvent` to get event records for various event logs, as shown in the following PowerShell code that lists all of the File Access Auditing Event 4663 records over the past 24 hours: ```powershell function Get-AuditEntries { @@ -171,15 +171,15 @@ ResourceAttributes : S:AI ### Next steps after auditing VC Runtime usage -After you determine which processes use the VC Runtime files, or which applications installed the VC Redistributable, uninstall those applications or upgrade them to newer versions that don't depend on unsupported VC Runtimes. +After you determine which processes use the VC Runtime files, or which applications installed the Visual C++ Redistributable, uninstall those applications or upgrade them to newer versions that don't depend on unsupported VC Runtimes. -Some Microsoft applications require legacy versions of the VC Runtime. For details, see [Visual C++ Redistributable and Runtime Libraries FAQ | Microsoft Learn](/lifecycle/faq/visual-c-faq). +Some Microsoft applications require legacy versions of the VC Runtime. For more information, see the [Visual C++ Redistributable and Runtime Libraries FAQ](/lifecycle/faq/visual-c-faq). ## VC Runtime installation locations -Here is where each version of the VC Runtime is installed: +The following table lists where each version of the VC Runtime is installed. | Visual Studio version| Installed locations| | ------------- | ------------- | diff --git a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md index 9698ba5a3ff..c9a71b5909d 100644 --- a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md +++ b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md @@ -1,6 +1,6 @@ --- -title: "Troubleshoot Visual C++ Redistributable installation issues" -description: "Provide steps to diagnose and resolve issues when installing the Visual C++ Redistributable." +title: Troubleshoot Visual C++ Redistributable Installation Issues +description: This article provides steps to help you diagnose and resolve issues when you install the Visual C++ Redistributable. author: vicroms ms.author: viromer ms.date: 02/12/2026 @@ -9,9 +9,9 @@ helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC --- # Troubleshoot Visual C++ Redistributable installation issues -This guide is for users experiencing issues installing Visual C++ Runtime components using the Visual Studio (VS) Installer or the Visual C++ Redistributable (VC Redist) installer. +This article is for users who experience issues when they install Visual C++ Runtime components by using the Visual Studio (VS) Installer or the Visual C++ Redistributable (VC Redist) installer. -If you experience any issues, start by ensuring you're installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). +If you experience any issues, make sure that you're installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). ## Collect failure logs @@ -21,9 +21,9 @@ The first step to diagnose an issue with the Visual C++ Redistributable installe 1. Run `Collect.exe`. 1. Extract the contents of `%TEMP%/vscollect.zip`. -Once you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. +After you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. -Search the VC Redist logs for terms like "Error", "Failed", or "System Error" and consult the [Common Errors](#common-errors-at-a-glance) to identify the issue. +Search the VC Redist logs for terms like "Error," "Failed," or "System Error" and consult the [Common errors at a glance](#common-errors-at-a-glance) section to identify the issue. ### Other log locations @@ -31,9 +31,9 @@ The VC Redist installer is often executed as a prerequisite of other products. I For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option that overrides the default log location. -In such cases, the path to the logs can be found by reading that product's own logs: +In such cases, you can find the path to the logs by reading that product's own logs. -**Example: Configuration Manager logs** +#### Example: Configuration Manager logs `\Logs\cmupdate.log` @@ -47,20 +47,19 @@ In such cases, the path to the logs can be found by reading that product's own l ## General troubleshooting steps when using the Visual C++ Redistributable installer -This section describes general troubleshooting methods you can try to resolve issues with the VC Redist installer. +This section describes general troubleshooting methods that you can try to resolve issues with the VC Redist installer. ### Disable antivirus software temporarily Antivirus software often blocks installation of VC Redist components. 1. Turn off Windows Defender real-time protection. -1. Disable any corporate endpoint protection temporarily (Symantec, McAfee, etc.). +1. Disable any corporate endpoint protection temporarily (such as Symantec or McAfee). 1. Retry the installation. 1. Reenable any disabled protection software. > [!WARNING] -> Re-enable any disabled protection software after completing these steps. - +> Reenable any disabled protection software after you finish these steps. ### Run the Visual C++ Redistributable installer as administrator @@ -74,8 +73,8 @@ File-access failures are heavily correlated with insufficient permissions. On rare occasions, outdated system components can cause installation issues. 1. Go to Windows Update and install all pending updates. -2. Reboot your PC. -3. Retry the installation. +1. Reboot your PC. +1. Retry the installation. ## General troubleshooting steps when using Visual Studio Installer @@ -93,25 +92,24 @@ If the manual installation fails, follow the [general troubleshooting steps for ### Clear the Visual Studio Installer cache 1. Open `%ProgramData%\Microsoft\VisualStudio\Packages`. -1. Delete all files inside the folder to force the Visual Studio Installer to regenerate them. +1. Delete all the files inside the folder to force the Visual Studio Installer to regenerate them. 1. Retry the Visual Studio Installer. ### Repair the Visual Studio Installer 1. Open the **Settings** app. -1. Search for **Installed Apps** using the search bar at the top of the window. +1. Enter **Installed Apps** in the search bar at the top of the window. 1. Search for **Visual Studio Installer**. -1. Click on the "**...**" button and select **Modify**. -1. Select the option to **Repair** the Visual Studio Installer. -1. Retry the VS installation. +1. Select the elipsis (**...**), and then select **Modify**. +1. Select the **Repair** option to repair the Visual Studio Installer. +1. Retry the Visual Studio installation. ### Delete the Visual Studio Installer folder > [!WARNING] -> This method requires that you have the Visual Studio Installer Setup downloaded (VisualStudioSetup.exe). -> You can download the Visual Studio Installer Setup from . +> This method requires that you have the Visual Studio Installer Setup downloaded (`VisualStudioSetup.exe`). You can download the Visual Studio Installer Setup from . -This method helps in case the installer metadata is corrupted, deleting the installer folder forces the Visual Studio Installer to regenerate it. +This method helps ifthe installer metadata is corrupted. Deleting the installer folder forces the Visual Studio Installer to regenerate it. 1. Download `VisualStudioSetup.exe` from . 1. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`, you might be prompted to run this operation as administrator. @@ -141,7 +139,7 @@ If your issue isn't found here, then follow the instructions to [report an issue Installation fails with error code 5. This error code typically indicates a permissions issue; specifically, an access denied issue. -**Steps to resolve** +#### Steps to resolve 1. Disable antivirus, group policies, and firewalls temporarily. 1. Run the VC Redist installer. @@ -153,7 +151,7 @@ If the installation fails, try to run the VC Redist installer as administrator. Installation fails with error code 32. Files in use by another process, interference from antivirus software, group policies, or corrupted files are common causes. -**Steps to resolve** +#### Steps to resolve 1. Close any running software in your PC. 1. Try the methods in [General troubleshooting steps](#general-troubleshooting-steps-when-using-the-visual-c-redistributable-installer). @@ -170,7 +168,7 @@ The presence of these error messages indicates a corrupted cache. - Error code 0x80091007: several payloads failed verification due to hash mismatches. - Error code 0x80070654: occurs when an MSI package fails to execute. -**Steps to resolve** +#### Steps to resolve Try the steps in the [General troubleshooting steps when using Visual Studio Installer](#general-troubleshooting-steps-when-using-visual-studio-installer). @@ -209,20 +207,20 @@ In `VSSetupEvents.txt` Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612.] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [] ``` -**Steps to resolve** +#### Steps to resolve -From the log files, take note of the VC Redist version causing the issue. +From the log files, take note of the VC Redist version causing the issue. Two methods are available to resolve the issue: -Method 1: Use the Windows Installer. +- **Method 1:** Use the Windows Installer. -1. Try using the Windows Installer to manually remove the old VC Redist version. If prompted, let the Windows Installer Troubleshooter attempt to fix the issue. -1. Retry the installation. + 1. Try using the Windows Installer to manually remove the old VC Redist version. If prompted, let the Windows Installer Troubleshooter attempt to fix the issue. + 1. Retry the installation. -Method 2: Manually remove the old version. +- **Method 2:** Manually remove the old version. -1. Download the VC Redist installer for the old version. Follow the [steps to download and old version of the VC Redist installer](#old-vcredist-versions) -1. Run the installer to uninstall the old VC Redist. -1. Retry the installation. + 1. Download the VC Redist installer for the old version. Follow the [steps to download and old version of the VC Redist installer](#old-vcredist-versions) + 1. Run the installer to uninstall the old VC Redist. + 1. Retry the installation. ## Download old versions of the Visual C++ Redistributable installer @@ -232,7 +230,7 @@ Method 2: Manually remove the old version. Download the VC Redist installer from [my.visualstudio.com](). Search for Visual C++ Redistributable on the downloads page. -The latest supported VC Redist version for each version of Visual Studio can be found in [this article](/cpp/windows/latest-supported-vc-redist). +For the latest supported VC Redist version for each version of Visual Studio, see [Microsoft Redistributable Visual C++ latest supported downloads](/cpp/windows/latest-supported-vc-redist). Links for older or legacy versions: @@ -248,7 +246,7 @@ Only download VC Redist installers from a Microsoft site. Only install packages ## Report a Visual C++ Redistributable installation problem -The list of [common issues](#common-issues) was collected from feedback reported to Microsoft through [Developer Community](). +The list of [common issues](#common-issues) was collected from feedback reported to Microsoft through the [Developer Community](). If you encounter an issue not found in that section, or if the steps in this troubleshooting guide don't resolve your issue, use the [Report a Problem]() form to create a new feedback item. @@ -259,11 +257,11 @@ Your report must include the following information about your environment: - If installing through the Visual Studio Installer, version of the VS Installer. - Logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. -Feedback without this information, especially without logs, is nonactionable and may be closed if additional information isn't submitted promptly. +Feedback without this information, especially without logs, is nonactionable and might be closed if more information isn't submitted promptly. -## See also +## Related content -[Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md)\ -[C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md)\ -[How to audit Visual C++ Runtime version usage](redist-version-auditing.md)\ -[Lifecycle FAQ - Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) +- [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md)\ +- [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md)\ +- [Audit Visual C++ Runtime version usage](redist-version-auditing.md)\ +- [Lifecycle FAQ: Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) From ae3877092e5247ead0886c2695fea9e39b01efd8 Mon Sep 17 00:00:00 2001 From: paulth1 <42621139+paulth1@users.noreply.github.com> Date: Thu, 26 Feb 2026 14:42:29 -0800 Subject: [PATCH 339/619] edit pass: redistributing-microsoft-c++-files --- ...-vc-redistributable-installation-issues.md | 73 +++++++++---------- 1 file changed, 35 insertions(+), 38 deletions(-) diff --git a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md index c9a71b5909d..aaf81ea5b4a 100644 --- a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md +++ b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md @@ -9,7 +9,7 @@ helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC --- # Troubleshoot Visual C++ Redistributable installation issues -This article is for users who experience issues when they install Visual C++ Runtime components by using the Visual Studio (VS) Installer or the Visual C++ Redistributable (VC Redist) installer. +This article is for users who experience issues when they install Visual C++ Runtime components by using the Visual Studio Installer or the Visual C++ Redistributable (VC Redist) installer. If you experience any issues, make sure that you're installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). @@ -23,11 +23,11 @@ The first step to diagnose an issue with the Visual C++ Redistributable installe After you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. -Search the VC Redist logs for terms like "Error," "Failed," or "System Error" and consult the [Common errors at a glance](#common-errors-at-a-glance) section to identify the issue. +Search the VC Redist logs for terms like "Error," "Failed," or "System Error," and consult the [Common errors at a glance](#common-errors-at-a-glance) section to identify the issue. ### Other log locations -The VC Redist installer is often executed as a prerequisite of other products. In such cases, the installation log might be found in a different path. +The VC Redist installer is often executed as a prerequisite of other products. In such cases, you might find the installation log in a different path. For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option that overrides the default log location. @@ -81,7 +81,7 @@ On rare occasions, outdated system components can cause installation issues. ### Manually install Visual C++ Redistributable > [!NOTE] -> The VS Installer might prompt for a reboot when VC Redist is installed separately. +> The Visual Studio Installer might prompt for a reboot when VC Redist is installed separately. 1. Download the [latest VC Redist installer](latest-supported-vc-redist.md). 1. Run the VC Redist installer. @@ -100,7 +100,7 @@ If the manual installation fails, follow the [general troubleshooting steps for 1. Open the **Settings** app. 1. Enter **Installed Apps** in the search bar at the top of the window. 1. Search for **Visual Studio Installer**. -1. Select the elipsis (**...**), and then select **Modify**. +1. Select the ellipsis (**...**), and then select **Modify**. 1. Select the **Repair** option to repair the Visual Studio Installer. 1. Retry the Visual Studio installation. @@ -109,10 +109,10 @@ If the manual installation fails, follow the [general troubleshooting steps for > [!WARNING] > This method requires that you have the Visual Studio Installer Setup downloaded (`VisualStudioSetup.exe`). You can download the Visual Studio Installer Setup from . -This method helps ifthe installer metadata is corrupted. Deleting the installer folder forces the Visual Studio Installer to regenerate it. +This method helps if the installer metadata is corrupted. Deleting the installer folder forces the Visual Studio Installer to regenerate it. -1. Download `VisualStudioSetup.exe` from . -1. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`, you might be prompted to run this operation as administrator. +1. Download `VisualStudioSetup.exe` from the [Welcome to Dev Essentials](https://my.visualstudio.com) page. +1. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`. You might be prompted to run this operation as an administrator. 1. Run `VisualStudioSetup.exe`. ## Common issues @@ -122,30 +122,29 @@ This method helps ifthe installer metadata is corrupted. Deleting the installer * [Generic installation failure (return code 1603)](#generic-installation-failure) * [Access denied (return code 5)](#access-denied) * [File is locked (return code 32)](#file-is-locked) -* [Corrupt or invliad installer package (return code 1620)](#corrupt-or-invalid-installer-package) +* [Corrupt or invalid installer package (return code 1620)](#corrupt-or-invalid-installer-package) * [Older version can't be removed (return code 1714)](#older-version-cant-be-removed) ### Generic installation failure Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. -Because many factors can produce a 1603 code, the code by itself doesn't provide enough information to diagnose the cause of the issue. -Often, the log files produced by the VC Redist installer contain relevant information that might lead to a solution or workaround. +Because many factors can produce a 1603 code, the code by itself doesn't provide enough information to diagnose the cause of the issue. Often, the log files produced by the VC Redist installer contain relevant information that might lead to a solution or workaround. The [Common issues](#common-issues) section describes examples of how to diagnose common installation errors and steps that might resolve them. -If your issue isn't found here, then follow the instructions to [report an issue in the Visual C++ Redistributable installer](#report-a-visual-c-redistributable-installation-problem). +If your issue isn't found here, follow the instructions to [report an issue in the Visual C++ Redistributable installer](#report-a-visual-c-redistributable-installation-problem). ### Access denied -Installation fails with error code 5. This error code typically indicates a permissions issue; specifically, an access denied issue. +Installation fails with error code 5. This error code typically indicates a permissions issue. Specifically, the issue is access denied. #### Steps to resolve 1. Disable antivirus, group policies, and firewalls temporarily. 1. Run the VC Redist installer. -1. Re-enable any disabled protection software. +1. Reenable any disabled protection software. -If the installation fails, try to run the VC Redist installer as administrator. +If the installation fails, try to run the VC Redist installer as an administrator. ### File is locked @@ -154,19 +153,19 @@ Installation fails with error code 32. Files in use by another process, interfer #### Steps to resolve 1. Close any running software in your PC. -1. Try the methods in [General troubleshooting steps](#general-troubleshooting-steps-when-using-the-visual-c-redistributable-installer). +1. Try the methods in the [General troubleshooting steps when using Visual Studio Installer](#general-troubleshooting-steps-when-using-the-visual-c-redistributable-installer) section. If the installation fails, try to restart your PC to release any locked files. ### Corrupt or invalid installer package -Installation fails with error code 1620. This error code indicates that a Windows Installer package (MSI) couldn't be opened, likely due to corruption or invalid files. +Installation fails with error code 1620. This error code indicates that a Windows Installer package (MSI) couldn't be opened. The issue is likely because of corruption or invalid files. The presence of these error messages indicates a corrupted cache. -- Error code 1620: indicates that the Windows Installer package couldn't be opened. -- Error code 0x80091007: several payloads failed verification due to hash mismatches. -- Error code 0x80070654: occurs when an MSI package fails to execute. +- **Error code 1620**: Indicates that the Windows Installer package couldn't be opened. +- **Error code 0x80091007**: Indicates that several payloads failed verification because of hash mismatches. +- **Error code 0x80070654**: Occurs when an MSI package fails to execute. #### Steps to resolve @@ -178,7 +177,7 @@ Installation fails with the error code 1714. This error code indicates a corrupt The presence of these error messages indicates a corrupted cache. -In `dd_vcredist__.log` +In `dd_vcredist__.log`: ```log Error 0x80070003: Failed to get size of pseudo bundle: C:\ProgramData\Package Cache\{43d1ce82-6f55-4860-a938-20e5deb28b98}\VC_redist.x64.exe @@ -201,7 +200,7 @@ Product: Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 -- Error 17 Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612. ``` -In `VSSetupEvents.txt` +In `VSSetupEvents.txt`: ```log Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - 14.40.33816 cannot be removed. Contact your technical support group. System Error 1612.] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [(NULL)] [] @@ -209,7 +208,7 @@ Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - #### Steps to resolve -From the log files, take note of the VC Redist version causing the issue. Two methods are available to resolve the issue: +From the log files, make a note of the VC Redist version causing the issue. Two methods are available to resolve the issue: - **Method 1:** Use the Windows Installer. @@ -218,21 +217,20 @@ From the log files, take note of the VC Redist version causing the issue. Two me - **Method 2:** Manually remove the old version. - 1. Download the VC Redist installer for the old version. Follow the [steps to download and old version of the VC Redist installer](#old-vcredist-versions) + 1. Download the VC Redist installer for the old version. Follow the [steps to download an old version of the VC Redist installer](#old-vcredist-versions). 1. Run the installer to uninstall the old VC Redist. 1. Retry the installation. ## Download old versions of the Visual C++ Redistributable installer > [!WARNING] -> Never install a Visual C++ Redistributable installer that wasn't downloaded from a Microsoft site. -> Never install a Visual C++ Redistributable installer that isn't signed by Microsoft. +> Never install a Visual C++ Redistributable installer that wasn't downloaded from a Microsoft site. Never install a Visual C++ Redistributable installer that isn't signed by Microsoft. -Download the VC Redist installer from [my.visualstudio.com](). Search for Visual C++ Redistributable on the downloads page. +Download the VC Redist installer from [Welcome to Dev Essentials](https://my.visualstudio.com/Downloads) page. Search for Visual C++ Redistributable on the downloads page. For the latest supported VC Redist version for each version of Visual Studio, see [Microsoft Redistributable Visual C++ latest supported downloads](/cpp/windows/latest-supported-vc-redist). -Links for older or legacy versions: +The following table lists links for older or legacy versions. | Version range | Download link template | Example | |----------------|---------------------------------------------------------------|----------------------------------------------------------------| @@ -241,8 +239,7 @@ Links for older or legacy versions: | 14.20 to 14.29 | `https://aka.ms/vs/16/release//VC_redist..exe` | | | 14.10 to 14.19 | `https://aka.ms/vs/15/release//VC_redist..exe` | | -You might be able to find installers for older versions through a Bing search. -Only download VC Redist installers from a Microsoft site. Only install packages signed by Microsoft. +You might be able to find installers for older versions through a Bing search. Only download VC Redist installers from a Microsoft site. Only install packages signed by Microsoft. ## Report a Visual C++ Redistributable installation problem @@ -252,16 +249,16 @@ If you encounter an issue not found in that section, or if the steps in this tro Your report must include the following information about your environment: -- Version of VC Redist you're trying to install. -- If upgrading, version of previously installed VC Redist installations. -- If installing through the Visual Studio Installer, version of the VS Installer. -- Logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. +- The version of VC Redist you're trying to install. +- If you're upgrading, the version of previously installed VC Redist installations. +- If you're installing through the Visual Studio Installer, the version of the Visual Studio Installer. +- The logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. Feedback without this information, especially without logs, is nonactionable and might be closed if more information isn't submitted promptly. ## Related content -- [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md)\ -- [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md)\ -- [Audit Visual C++ Runtime version usage](redist-version-auditing.md)\ -- [Lifecycle FAQ: Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) +- [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) +- [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) +- [Audit Visual C++ Runtime version usage](redist-version-auditing.md) +- [Lifecycle FAQ: Visual C++ Redistributable and Runtime Libraries](/lifecycle/faq/visual-c-faq) From 30ab1e83991c04940ad59337e26f3c04677554ec Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 26 Feb 2026 15:45:14 -0800 Subject: [PATCH 340/619] Add lifecycle note --- .../allocating-and-releasing-memory-for-a-bstr.md | 3 ++- docs/atl-mfc-shared/atl-mfc-concepts.md | 5 +++-- docs/atl-mfc-shared/atl-mfc-shared-classes.md | 3 ++- docs/atl-mfc-shared/avoidance-of-heap-contention.md | 3 ++- docs/atl-mfc-shared/basic-cstring-operations.md | 2 ++ .../cfixedstringt-example-of-a-custom-string-manager.md | 3 ++- docs/atl-mfc-shared/cstring-argument-passing.md | 2 ++ docs/atl-mfc-shared/cstring-exception-cleanup.md | 3 ++- .../cstring-operations-relating-to-c-style-strings.md | 3 ++- docs/atl-mfc-shared/cstring-semantics.md | 3 ++- docs/atl-mfc-shared/date-and-time.md | 2 ++ docs/atl-mfc-shared/date-type.md | 3 ++- .../exporting-string-classes-using-cstringt.md | 3 ++- ...lementation-of-a-custom-string-manager-advanced-method.md | 3 ++- ...implementation-of-a-custom-string-manager-basic-method.md | 3 ++- docs/atl-mfc-shared/includes/lifecycle-note.md | 2 ++ docs/atl-mfc-shared/memory-management-with-cstringt.md | 3 ++- docs/atl-mfc-shared/reference/cfiletime-class.md | 3 ++- docs/atl-mfc-shared/reference/cfiletimespan-class.md | 3 ++- docs/atl-mfc-shared/reference/cfixedstringt-class.md | 3 ++- docs/atl-mfc-shared/reference/cimage-class.md | 2 ++ .../reference/classes-shared-by-mfc-and-atl.md | 3 ++- docs/atl-mfc-shared/reference/coledatetime-class.md | 2 ++ docs/atl-mfc-shared/reference/coledatetimespan-class.md | 3 ++- docs/atl-mfc-shared/reference/cpoint-class.md | 2 ++ docs/atl-mfc-shared/reference/crect-class.md | 2 ++ docs/atl-mfc-shared/reference/csimplestringt-class.md | 2 ++ docs/atl-mfc-shared/reference/csize-class.md | 2 ++ docs/atl-mfc-shared/reference/cstrbuft-class.md | 3 ++- docs/atl-mfc-shared/reference/cstringdata-class.md | 3 ++- docs/atl-mfc-shared/reference/cstringt-class.md | 2 ++ docs/atl-mfc-shared/reference/ctime-class.md | 3 ++- docs/atl-mfc-shared/reference/ctimespan-class.md | 2 ++ docs/atl-mfc-shared/reference/iatlstringmgr-class.md | 3 ++- docs/atl-mfc-shared/string-data-management.md | 2 ++ docs/atl-mfc-shared/strings-atl-mfc.md | 2 ++ .../unicode-and-multibyte-character-set-mbcs-support.md | 2 ++ docs/atl-mfc-shared/using-cstring.md | 3 ++- docs/atl-mfc-shared/using-cstringt.md | 3 ++- docs/mfc/activex-controls.md | 3 +-- 40 files changed, 80 insertions(+), 27 deletions(-) create mode 100644 docs/atl-mfc-shared/includes/lifecycle-note.md diff --git a/docs/atl-mfc-shared/allocating-and-releasing-memory-for-a-bstr.md b/docs/atl-mfc-shared/allocating-and-releasing-memory-for-a-bstr.md index b257f105f93..d1c1db36c70 100644 --- a/docs/atl-mfc-shared/allocating-and-releasing-memory-for-a-bstr.md +++ b/docs/atl-mfc-shared/allocating-and-releasing-memory-for-a-bstr.md @@ -4,10 +4,11 @@ title: "Allocating and Releasing Memory for a BSTR" ms.date: "11/04/2016" f1_keywords: ["bstr"] helpviewer_keywords: ["BSTRs, memory allocation", "memory deallocation, string memory", "memory [C++], releasing", "memory allocation, BSTRs", "memory deallocation, BSTR memory", "strings [C++], releasing"] -ms.assetid: 98041e29-3442-4a02-b425-7a4a13e9cc84 --- # Allocating and Releasing Memory for a `BSTR` +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + When you create `BSTR`s and pass them between COM objects, you must take care in treating the memory they use in order to avoid memory leaks. When a `BSTR` stays within an interface, you must free its memory when you are done with it. However, when a `BSTR` passes out of an interface, the receiving object takes responsibility for its memory management. In general, the rules for allocating and releasing memory allocated for `BSTR`s are as follows: diff --git a/docs/atl-mfc-shared/atl-mfc-concepts.md b/docs/atl-mfc-shared/atl-mfc-concepts.md index 6227696c2bb..c2d4845da77 100644 --- a/docs/atl-mfc-shared/atl-mfc-concepts.md +++ b/docs/atl-mfc-shared/atl-mfc-concepts.md @@ -3,15 +3,16 @@ description: "Learn more about: ATL/MFC Concepts" title: "ATL-MFC Concepts" ms.date: "11/04/2016" helpviewer_keywords: ["MFC", "ATL"] -ms.assetid: 4d973f56-8730-4e0b-9522-b5f43bc4548d --- # ATL/MFC Concepts +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + This section provides conceptual and task-based topics to help you program using the classes shared between Active Template Library (ATL) and Microsoft Foundation Class (MFC) Library. ## In This Section -[Strings (ATL/MFC)](../atl-mfc-shared/strings-atl-mfc.md)
+[Strings (ATL/MFC)](../atl-mfc-shared/strings-atl-mfc.md)\ Describes how to manage string data in applications. ## See also diff --git a/docs/atl-mfc-shared/atl-mfc-shared-classes.md b/docs/atl-mfc-shared/atl-mfc-shared-classes.md index 564d03df38f..52b69d1e957 100644 --- a/docs/atl-mfc-shared/atl-mfc-shared-classes.md +++ b/docs/atl-mfc-shared/atl-mfc-shared-classes.md @@ -6,10 +6,11 @@ ms.date: "11/04/2016" ms.topic: "concept-article" f1_keywords: ["vc.classes.shared"] helpviewer_keywords: ["CPoint class, shared class", "CFileTimeSpan class, shared class", "COleDateTime class, shared class", "CFixedStringT class, shared class", "CStrBufT class, shared class", "CFileTime class, shared class", "CRect class, shared class", "CSimpleStringT class, shared class", "CStringT class, shared class", "CSize class, shared class", "CStringData class, shared class", "IAtlStringMgr class, shared class", "shared classes, MFC and ATL", "COleDateTimeSpan class, shared class", "CString objects, shared class", "shared classes"] -ms.assetid: e13aaac3-21ec-4f4d-8834-432b40fde544 --- # ATL/MFC Shared Classes +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + These utility classes can be used in any native C++ project without requiring any MFC DLL. ## In This Section diff --git a/docs/atl-mfc-shared/avoidance-of-heap-contention.md b/docs/atl-mfc-shared/avoidance-of-heap-contention.md index 6639bbbe493..aec032124dc 100644 --- a/docs/atl-mfc-shared/avoidance-of-heap-contention.md +++ b/docs/atl-mfc-shared/avoidance-of-heap-contention.md @@ -3,10 +3,11 @@ description: "Learn more about: Avoidance of Heap Contention" title: "Avoidance of Heap Contention" ms.date: "11/04/2016" helpviewer_keywords: ["heap contention"] -ms.assetid: 797129d7-5f8c-4b0e-8974-bb93217e9ab5 --- # Avoidance of Heap Contention +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + The default string managers provided by MFC and ATL are simple wrappers on top of a global heap. This global heap is fully thread-safe, meaning that multiple threads can allocate and free memory from it simultaneously without corrupting the heap. To help provide thread safety, the heap has to serialize access to itself. This is usually accomplished with a critical section or similar locking mechanism. Whenever two threads try to access the heap simultaneously, one thread is blocked until the other thread's request is finished. For many applications, this situation rarely occurs and the performance impact of the heap's locking mechanism is negligible. However, for applications that frequently access the heap from multiple threads contention for the heap's lock can cause the application to run slower than if it were single-threaded (even on machines with multiple CPUs). Applications that use [CStringT](../atl-mfc-shared/reference/cstringt-class.md) are especially susceptible to heap contention because operations on `CStringT` objects frequently require reallocation of the string buffer. diff --git a/docs/atl-mfc-shared/basic-cstring-operations.md b/docs/atl-mfc-shared/basic-cstring-operations.md index 047bd978b28..243f52b3271 100644 --- a/docs/atl-mfc-shared/basic-cstring-operations.md +++ b/docs/atl-mfc-shared/basic-cstring-operations.md @@ -6,6 +6,8 @@ helpviewer_keywords: ["CString objects, basic operations", "string literals, CSt --- # Basic CString Operations +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + This topic explains the following basic [CString](../atl-mfc-shared/reference/cstringt-class.md) operations: - [Creating CString objects from standard C literal strings](#_core_creating_cstring_objects_from_standard_c_literal_strings) diff --git a/docs/atl-mfc-shared/cfixedstringt-example-of-a-custom-string-manager.md b/docs/atl-mfc-shared/cfixedstringt-example-of-a-custom-string-manager.md index 11094716d1b..b525fdae33f 100644 --- a/docs/atl-mfc-shared/cfixedstringt-example-of-a-custom-string-manager.md +++ b/docs/atl-mfc-shared/cfixedstringt-example-of-a-custom-string-manager.md @@ -3,10 +3,11 @@ description: "Learn more about: CFixedStringT: Example of a Custom String Manage title: "CFixedStringT: Example of a Custom String Manager" ms.date: "11/04/2016" helpviewer_keywords: ["CFixedStringT class, using a custom string manager"] -ms.assetid: 1cf11fd7-51b8-4b94-87af-02bc25f47dd6 --- # CFixedStringT: Example of a Custom String Manager +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + The ATL library implements one example of a custom string manager used by class [CFixedStringT](../atl-mfc-shared/reference/cfixedstringt-class.md), called **CFixedStringMgr**. `CFixedStringT` is derived from [CStringT](../atl-mfc-shared/reference/cstringt-class.md) and implements a string that allocates its character data as part of the `CFixedStringT` object itself as long as the string is less than the length specified by the `t_nChars` template parameter of `CFixedStringT`. With this approach, the string does not need the heap at all, unless the length of the string grows beyond the size of the fixed buffer. Because `CFixedStringT` does not always use a heap to allocate its string data, it cannot use `CAtlStringMgr` as its string manager. It uses a custom string manager (`CFixedStringMgr`), implementing the [IAtlStringMgr](../atl-mfc-shared/reference/iatlstringmgr-class.md) interface. This interface is discussed in [Implementation of a Custom String Manager (Advanced Method)](../atl-mfc-shared/implementation-of-a-custom-string-manager-advanced-method.md). The constructor for `CFixedStringMgr` takes three parameters: diff --git a/docs/atl-mfc-shared/cstring-argument-passing.md b/docs/atl-mfc-shared/cstring-argument-passing.md index 68ff5addc65..23f1483655f 100644 --- a/docs/atl-mfc-shared/cstring-argument-passing.md +++ b/docs/atl-mfc-shared/cstring-argument-passing.md @@ -6,6 +6,8 @@ helpviewer_keywords: ["strings [C++], as function input/output", "argument passi --- # `CString` Argument Passing +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + This article explains how to pass [`CString`](../atl-mfc-shared/reference/cstringt-class.md) objects to functions and how to return `CString` objects from functions. ## `CString` Argument-Passing Conventions diff --git a/docs/atl-mfc-shared/cstring-exception-cleanup.md b/docs/atl-mfc-shared/cstring-exception-cleanup.md index f9571eb6993..3a5273217b2 100644 --- a/docs/atl-mfc-shared/cstring-exception-cleanup.md +++ b/docs/atl-mfc-shared/cstring-exception-cleanup.md @@ -3,10 +3,11 @@ description: "Learn more about: CString Exception Cleanup" title: "CString Exception Cleanup" ms.date: "11/04/2016" helpviewer_keywords: ["CString objects, exceptions", "exception handling, cleanup code"] -ms.assetid: 28b9ce70-be63-4a0d-92a8-44bbfbc95e83 --- # CString Exception Cleanup +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + In previous versions of MFC, it was important that you clean up [CString](../atl-mfc-shared/reference/cstringt-class.md) objects after use. With MFC version 3.0 and later, explicit cleanup is no longer necessary. Under the C++ exception handling mechanism that MFC now uses, you do not have to worry about cleanup after an exception. For a description of how C++ "unwinds" the stack after an exception is caught, see [the try, catch, and throw statements](../cpp/try-throw-and-catch-statements-cpp.md). Even if you use the MFC **TRY**/**CATCH** macros instead of the C++ keywords **`try`** and **`catch`**, MFC uses the C++ exception mechanism underneath, so you still do not need to clean up explicitly. diff --git a/docs/atl-mfc-shared/cstring-operations-relating-to-c-style-strings.md b/docs/atl-mfc-shared/cstring-operations-relating-to-c-style-strings.md index c90c04bf1b1..8629690cd0a 100644 --- a/docs/atl-mfc-shared/cstring-operations-relating-to-c-style-strings.md +++ b/docs/atl-mfc-shared/cstring-operations-relating-to-c-style-strings.md @@ -3,10 +3,11 @@ description: "Learn more about: CString Operations Relating to C-Style Strings" title: "CString Operations Relating to C-Style Strings" ms.date: "11/04/2016" helpviewer_keywords: ["CString objects, basic operations", "MFC [C++], string handling class", "string conversion [C++], C-style strings", "strings [C++], string operations", "standard run-time library string functions", "null values, Null-terminated string conversion", "string functions", "strings [C++], in C", "string arguments", "C-style strings", "strings [C++], class CString", "casting CString objects"] -ms.assetid: 5048de8a-5298-4891-b8a0-c554b5a3ac1b --- # `CString` Operations Relating to C-Style Strings +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + A [`CString`](../atl-mfc-shared/using-cstring.md) object contains character string data. `CString` inherits the set of the [methods and operators](../atl-mfc-shared/reference/cstringt-class.md) that are defined in the class template [`CStringT`](../atl-mfc-shared/reference/cstringt-class.md) to work with string data. (`CString` is a **`typedef`** that specializes `CStringT` to work with the kind of character data that `CString` supports.) `CString` does not store character data internally as a C-style null-terminated string. Instead, `CString` tracks the length of character data so that it can more securely watch the data and the space it requires. diff --git a/docs/atl-mfc-shared/cstring-semantics.md b/docs/atl-mfc-shared/cstring-semantics.md index a8b283511b6..a978cc1e251 100644 --- a/docs/atl-mfc-shared/cstring-semantics.md +++ b/docs/atl-mfc-shared/cstring-semantics.md @@ -3,10 +3,11 @@ description: "Learn more about: CString Semantics" title: "CString Semantics" ms.date: "11/04/2016" helpviewer_keywords: ["semantics in Cstring", "CString objects, assignment semantics", "assignment statements, assigning CString objects"] -ms.assetid: d4023480-526f-499a-85f6-324b4de5b85f --- # CString Semantics +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + Even though [CString](../atl-mfc-shared/reference/cstringt-class.md) objects are dynamic objects that can grow, they act like built-in primitive types and simple classes. Each `CString` object represents a unique value. `CString` objects should be thought of as the actual strings rather than as pointers to strings. You can assign one `CString` object to another. However, when you modify one of the two `CString` objects, the other `CString` object is not modified, as shown by the following example: diff --git a/docs/atl-mfc-shared/date-and-time.md b/docs/atl-mfc-shared/date-and-time.md index 6285d86cb2f..9f7eec080cc 100644 --- a/docs/atl-mfc-shared/date-and-time.md +++ b/docs/atl-mfc-shared/date-and-time.md @@ -6,6 +6,8 @@ helpviewer_keywords: ["time, MFC programming", "time", "MFC, date and time", "da --- # Date and Time +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + MFC supports several different ways of working with dates and times: - Support for the Automation [`DATE` data type](../atl-mfc-shared/date-type.md). `DATE` supports date, time, and date/time values. The [`COleDateTime`](../atl-mfc-shared/reference/coledatetime-class.md) and [`COleDateTimeSpan`](../atl-mfc-shared/reference/coledatetimespan-class.md) classes encapsulate this functionality. They work with the [`COleVariant`](../mfc/reference/colevariant-class.md) class using Automation support. diff --git a/docs/atl-mfc-shared/date-type.md b/docs/atl-mfc-shared/date-type.md index 51909869c5b..6c9e9c6c7fb 100644 --- a/docs/atl-mfc-shared/date-type.md +++ b/docs/atl-mfc-shared/date-type.md @@ -4,10 +4,11 @@ title: "DATE Type" ms.date: "11/04/2016" f1_keywords: ["DATE"] helpviewer_keywords: ["Date data type, implementing", "Date data type", "DATE type", "Date data type, about Date data type", "MFC, date and time", "hour values representation"] -ms.assetid: 695853ed-b614-4575-b793-b8c287372038 --- # DATE Type +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + The DATE type is implemented using an 8-byte floating-point number. Days are represented by whole number increments starting with 30 December 1899, midnight as time zero. Hour values are expressed as the absolute value of the fractional part of the number. The following table illustrates several dates along with their DATE type numeric equivalent: |Date and time|Representation| diff --git a/docs/atl-mfc-shared/exporting-string-classes-using-cstringt.md b/docs/atl-mfc-shared/exporting-string-classes-using-cstringt.md index 3e5b794a885..c8e98da7fe7 100644 --- a/docs/atl-mfc-shared/exporting-string-classes-using-cstringt.md +++ b/docs/atl-mfc-shared/exporting-string-classes-using-cstringt.md @@ -3,10 +3,11 @@ description: "Learn more about: Exporting String Classes Using CStringT" title: "Exporting String Classes Using CStringT" ms.date: "11/04/2016" helpviewer_keywords: ["CStringT class, exporting strings"] -ms.assetid: bdfc441e-8d2a-461c-9885-46178066c09f --- # Exporting String Classes Using CStringT +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + In the past, MFC developers have derived from `CString` to specialize their own string classes. In Microsoft Visual C++.NET (MFC 8.0), the [CString](../atl-mfc-shared/using-cstring.md) class was superseded by a template class called [CStringT](../atl-mfc-shared/reference/cstringt-class.md). This provided several benefits: - It allowed the MFC `CString` class to be used in ATL projects without linking in the larger MFC static library or DLL. diff --git a/docs/atl-mfc-shared/implementation-of-a-custom-string-manager-advanced-method.md b/docs/atl-mfc-shared/implementation-of-a-custom-string-manager-advanced-method.md index 55fe40e157f..0ea1922d71c 100644 --- a/docs/atl-mfc-shared/implementation-of-a-custom-string-manager-advanced-method.md +++ b/docs/atl-mfc-shared/implementation-of-a-custom-string-manager-advanced-method.md @@ -3,10 +3,11 @@ description: "Learn more about: Implementation of a Custom String Manager (Advan title: "Implementation of a Custom String Manager (Advanced Method)" ms.date: "11/04/2016" helpviewer_keywords: ["IAtlStringMgr class, using"] -ms.assetid: 64ab7da9-47c1-4c4a-9cd7-4cc37e7f3f57 --- # Implementation of a Custom String Manager (Advanced Method) +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + In specialized situations, you might want to implement a custom string manager that does more than just change which heap is used to allocate memory. In this situation, you must manually implement the [IAtlStringMgr](../atl-mfc-shared/reference/iatlstringmgr-class.md) interface as your custom string manager. In order to do this, it is important to first understand how [CStringT](../atl-mfc-shared/reference/cstringt-class.md) uses that interface to manage its string data. Every instance of `CStringT` has a pointer to a [CStringData](../atl-mfc-shared/reference/cstringdata-class.md) structure. This variable-length structure contains important information about the string (such as length), as well as the actual character data for the string. Every custom string manager is responsible for allocating and freeing these structures at the request of `CStringT`. diff --git a/docs/atl-mfc-shared/implementation-of-a-custom-string-manager-basic-method.md b/docs/atl-mfc-shared/implementation-of-a-custom-string-manager-basic-method.md index 2e91251aaa2..ff0ead0d8cd 100644 --- a/docs/atl-mfc-shared/implementation-of-a-custom-string-manager-basic-method.md +++ b/docs/atl-mfc-shared/implementation-of-a-custom-string-manager-basic-method.md @@ -3,10 +3,11 @@ description: "Learn more about: Implementation of a Custom String Manager (Basic title: "Implementation of a Custom String Manager (Basic Method)" ms.date: "11/04/2016" helpviewer_keywords: ["IAtlStringMgr class, using"] -ms.assetid: eac5d13e-cbb4-4e82-b01e-f5f2dbcb962a --- # Implementation of a Custom String Manager (Basic Method) +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + The easiest way to customize the memory allocation scheme for string data is to use the ATL-provided `CAtlStringMgr` class but provide your own memory allocation routines. The constructor for `CAtlStringMgr` takes a single parameter: a pointer to an `IAtlMemMgr` object. `IAtlMemMgr` is an abstract base class that provides a generic interface to a heap. Using the `IAtlMemMgr` interface, the `CAtlStringMgr` allocates, reallocates, and frees the memory used to store string data. You can either implement the `IAtlMemMgr` interface yourself, or use one of the five ATL-provided memory manager classes. The ATL-provided memory managers simply wrap existing memory allocation facilities: - [CCRTHeap](../atl/reference/ccrtheap-class.md) Wraps the standard CRT heap functions ([malloc](../c-runtime-library/reference/malloc.md), [free](../c-runtime-library/reference/free.md), and [realloc](../c-runtime-library/reference/realloc.md)) diff --git a/docs/atl-mfc-shared/includes/lifecycle-note.md b/docs/atl-mfc-shared/includes/lifecycle-note.md new file mode 100644 index 00000000000..6725bfc524e --- /dev/null +++ b/docs/atl-mfc-shared/includes/lifecycle-note.md @@ -0,0 +1,2 @@ +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library and Active Template Library (ATL) continue to be supported. However, we're no longer adding features or updating the documentation. \ No newline at end of file diff --git a/docs/atl-mfc-shared/memory-management-with-cstringt.md b/docs/atl-mfc-shared/memory-management-with-cstringt.md index c0df6f2ceb3..104e67a46e7 100644 --- a/docs/atl-mfc-shared/memory-management-with-cstringt.md +++ b/docs/atl-mfc-shared/memory-management-with-cstringt.md @@ -3,10 +3,11 @@ description: "Learn more about: Memory Management with CStringT" title: "Memory Management with CStringT" ms.date: "11/04/2016" helpviewer_keywords: ["CString objects, memory management", "memory [C++], usage", "IAtlStringMgr class, using", "strings [C++], custom memory management", "CFixedStringT class, description of", "strings [C++], memory management", "CStringT class, memory management"] -ms.assetid: 88b8342d-19b5-48c4-9cf6-e4c44cece21e --- # Memory Management with CStringT +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + Class [CStringT](../atl-mfc-shared/reference/cstringt-class.md) is a template class used to manipulate variable-length character strings. The memory to hold these strings is allocated and released through a string manager object, associated with each instance of `CStringT`. MFC and ATL provide default instantiations of `CStringT`, called `CString`, `CStringA`, and `CStringW`, which manipulate strings of different character types. These character types are of type TCHAR, **`char`**, and **`wchar_t`**, respectively. These default string types use a string manager that allocates memory from the process heap (in ATL) or the CRT heap (in MFC). For typical applications, this memory allocation scheme is sufficient. However, for code making intensive use of strings (or multithreaded code) the default memory managers may not perform optimally. This topic describes how to override the default memory management behavior of `CStringT`, creating allocators specifically optimized for the task at hand. - [Implementation of a Custom String Manager (Basic Method)](../atl-mfc-shared/implementation-of-a-custom-string-manager-basic-method.md) diff --git a/docs/atl-mfc-shared/reference/cfiletime-class.md b/docs/atl-mfc-shared/reference/cfiletime-class.md index 35d7d8dc48e..abc271c7199 100644 --- a/docs/atl-mfc-shared/reference/cfiletime-class.md +++ b/docs/atl-mfc-shared/reference/cfiletime-class.md @@ -4,10 +4,11 @@ title: "CFileTime class" ms.date: "10/18/2018" f1_keywords: ["CFileTime", "ATLTIME/ATL::CFileTime", "ATLTIME/ATL::CFileTime::CFileTime", "ATLTIME/ATL::CFileTime::GetCurrentTime", "ATLTIME/ATL::CFileTime::GetTime", "ATLTIME/ATL::CFileTime::LocalToUTC", "ATLTIME/ATL::CFileTime::SetTime", "ATLTIME/ATL::CFileTime::UTCToLocal", "ATLTIME/ATL::CFileTime::Day", "ATLTIME/ATL::CFileTime::Hour", "ATLTIME/ATL::CFileTime::Millisecond", "ATLTIME/ATL::CFileTime::Minute", "ATLTIME/ATL::CFileTime::Second", "ATLTIME/ATL::CFileTime::Week"] helpviewer_keywords: ["CFileTime class", "shared classes, CFileTime"] -ms.assetid: 1a358a65-1383-4124-b0d4-59b026e6860f --- # `CFileTime` class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for managing the date and time values associated with a file. ## Syntax diff --git a/docs/atl-mfc-shared/reference/cfiletimespan-class.md b/docs/atl-mfc-shared/reference/cfiletimespan-class.md index 62a26f382ec..b972803f581 100644 --- a/docs/atl-mfc-shared/reference/cfiletimespan-class.md +++ b/docs/atl-mfc-shared/reference/cfiletimespan-class.md @@ -4,10 +4,11 @@ description: "The Active Template Library (ATL) and Microsoft Foundation Classes ms.date: "01/10/2020" f1_keywords: ["CFileTimeSpan", "ATLTIME/ATL::CFileTimeSpan", "ATLTIME/ATL::CFileTimeSpan::CFileTimeSpan", "ATLTIME/ATL::CFileTimeSpan::GetTimeSpan", "ATLTIME/ATL::CFileTimeSpan::SetTimeSpan"] helpviewer_keywords: ["shared classes, CFileTimeSpan", "CFileTimeSpan class"] -ms.assetid: 5856fb39-9c82-4027-8ccf-8760890491ec --- # `CFileTimeSpan` class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides methods for managing relative date and time values associated with a file. ## Syntax diff --git a/docs/atl-mfc-shared/reference/cfixedstringt-class.md b/docs/atl-mfc-shared/reference/cfixedstringt-class.md index c236dcb8d4d..6109dc0c1a6 100644 --- a/docs/atl-mfc-shared/reference/cfixedstringt-class.md +++ b/docs/atl-mfc-shared/reference/cfixedstringt-class.md @@ -4,10 +4,11 @@ title: "CFixedStringT Class" ms.date: "03/27/2019" f1_keywords: ["CFixedStringT", "CSTRINGT/ATL::CFixedStringT", "CSTRINGT/ATL::CFixedStringT::CFixedStringT"] helpviewer_keywords: ["CFixedStringT class", "shared classes, CFixedStringT"] -ms.assetid: 6d4171ba-3104-493a-a6cc-d515f4ba9a4b --- # CFixedStringT Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents a string object with a fixed character buffer. ## Syntax diff --git a/docs/atl-mfc-shared/reference/cimage-class.md b/docs/atl-mfc-shared/reference/cimage-class.md index d355d0f27a4..311a44e2811 100644 --- a/docs/atl-mfc-shared/reference/cimage-class.md +++ b/docs/atl-mfc-shared/reference/cimage-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["jpeg files", "bitmaps [C++], ATL and MFC support for", "i --- # `CImage` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + `CImage` provides enhanced bitmap support, including the ability to load and save images in JPEG, GIF, BMP, and Portable Network Graphics (PNG) formats. > [!IMPORTANT] diff --git a/docs/atl-mfc-shared/reference/classes-shared-by-mfc-and-atl.md b/docs/atl-mfc-shared/reference/classes-shared-by-mfc-and-atl.md index bbcb2af0790..6fb01f6e90c 100644 --- a/docs/atl-mfc-shared/reference/classes-shared-by-mfc-and-atl.md +++ b/docs/atl-mfc-shared/reference/classes-shared-by-mfc-and-atl.md @@ -3,10 +3,11 @@ description: "Learn more about: Classes Shared by MFC and ATL" title: "Classes Shared by MFC and ATL" ms.date: "11/04/2016" helpviewer_keywords: ["shared classes, classes"] -ms.assetid: ca8b4b6b-744d-430b-b31f-d5b2f17bf210 --- # Classes Shared by MFC and ATL +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + The following table lists the classes shared between MFC and ATL. |Class|Description|Header file| diff --git a/docs/atl-mfc-shared/reference/coledatetime-class.md b/docs/atl-mfc-shared/reference/coledatetime-class.md index 5da193d9b93..98a888a14f1 100644 --- a/docs/atl-mfc-shared/reference/coledatetime-class.md +++ b/docs/atl-mfc-shared/reference/coledatetime-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["shared classes, COleDateTime", "time-only values", "Date --- # COleDateTime Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Encapsulates the `DATE` data type that is used in OLE automation. ## Syntax diff --git a/docs/atl-mfc-shared/reference/coledatetimespan-class.md b/docs/atl-mfc-shared/reference/coledatetimespan-class.md index 491074bbae3..04701fb7ddc 100644 --- a/docs/atl-mfc-shared/reference/coledatetimespan-class.md +++ b/docs/atl-mfc-shared/reference/coledatetimespan-class.md @@ -4,10 +4,11 @@ title: "COleDateTimeSpan Class" ms.date: "03/27/2019" f1_keywords: ["COleDateTimeSpan", "ATLCOMTIME/ATL::COleDateTimeSpan", "ATLCOMTIME/ATL::COleDateTimeSpan::COleDateTimeSpan", "ATLCOMTIME/ATL::COleDateTimeSpan::Format", "ATLCOMTIME/ATL::COleDateTimeSpan::GetDays", "ATLCOMTIME/ATL::COleDateTimeSpan::GetHours", "ATLCOMTIME/ATL::COleDateTimeSpan::GetMinutes", "ATLCOMTIME/ATL::COleDateTimeSpan::GetSeconds", "ATLCOMTIME/ATL::COleDateTimeSpan::GetStatus", "ATLCOMTIME/ATL::COleDateTimeSpan::GetTotalDays", "ATLCOMTIME/ATL::COleDateTimeSpan::GetTotalHours", "ATLCOMTIME/ATL::COleDateTimeSpan::GetTotalMinutes", "ATLCOMTIME/ATL::COleDateTimeSpan::GetTotalSeconds", "ATLCOMTIME/ATL::COleDateTimeSpan::SetDateTimeSpan", "ATLCOMTIME/ATL::COleDateTimeSpan::SetStatus", "ATLCOMTIME/ATL::COleDateTimeSpan::m_span", "ATLCOMTIME/ATL::COleDateTimeSpan::m_status"] helpviewer_keywords: ["timespan", "time span", "shared classes, COleDateTimeSpan", "Date data type, MFC encapsulation of", "COleDateTimeSpan class"] -ms.assetid: 7441526d-a30a-4019-8fb3-3fee6f897cbe --- # COleDateTimeSpan Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Represents a relative time, a time span. ## Syntax diff --git a/docs/atl-mfc-shared/reference/cpoint-class.md b/docs/atl-mfc-shared/reference/cpoint-class.md index 1636a18f6dd..d153efe18e5 100644 --- a/docs/atl-mfc-shared/reference/cpoint-class.md +++ b/docs/atl-mfc-shared/reference/cpoint-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["LPPOINT structure", "POINT structure", "CPoint class"] --- # `CPoint` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Similar to the Windows `POINT` structure. ## Syntax diff --git a/docs/atl-mfc-shared/reference/crect-class.md b/docs/atl-mfc-shared/reference/crect-class.md index a213a9fcb66..2ccae83333a 100644 --- a/docs/atl-mfc-shared/reference/crect-class.md +++ b/docs/atl-mfc-shared/reference/crect-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["LPCRECT data type", "CRect class", "LPRECT operator", "RE --- # `CRect` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Similar to a Windows [`RECT`](/windows/win32/api/windef/ns-windef-rect) structure. ## Syntax diff --git a/docs/atl-mfc-shared/reference/csimplestringt-class.md b/docs/atl-mfc-shared/reference/csimplestringt-class.md index b62a850efa1..cda69f67bea 100644 --- a/docs/atl-mfc-shared/reference/csimplestringt-class.md +++ b/docs/atl-mfc-shared/reference/csimplestringt-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["shared classes, CSimpleStringT", "strings [C++], ATL clas --- # `CSimpleStringT` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents a `CSimpleStringT` object. ## Syntax diff --git a/docs/atl-mfc-shared/reference/csize-class.md b/docs/atl-mfc-shared/reference/csize-class.md index f398b5055da..458de4f0ed0 100644 --- a/docs/atl-mfc-shared/reference/csize-class.md +++ b/docs/atl-mfc-shared/reference/csize-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["SIZE", "dimensions, MFC", "dimensions", "CSize class"] --- # CSize Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Similar to the Windows [SIZE](/windows/win32/api/windef/ns-windef-size) structure, which implements a relative coordinate or position. ## Syntax diff --git a/docs/atl-mfc-shared/reference/cstrbuft-class.md b/docs/atl-mfc-shared/reference/cstrbuft-class.md index 4cc53bfee59..ed385faa03d 100644 --- a/docs/atl-mfc-shared/reference/cstrbuft-class.md +++ b/docs/atl-mfc-shared/reference/cstrbuft-class.md @@ -4,10 +4,11 @@ title: "CStrBufT Class" ms.date: "10/18/2018" f1_keywords: ["CStrBufT", "ATLSIMPSTR/ATL::CStrBufT", "ATLSIMPSTR/ATL::CStrBufT::CStrBufT", "ATLSIMPSTR/ATL::CStrBufT::SetLength", "ATLSIMPSTR/ATL::CStrBufT::AUTO_LENGTH", "ATLSIMPSTR/ATL::CStrBufT::SET_LENGTH"] helpviewer_keywords: ["strings [C++], custom memory management", "CStrBufT class", "shared classes, CStrBufT"] -ms.assetid: 6b50fa8f-87e8-4ed4-a229-157ce128710f --- # CStrBufT Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class provides automatic resource cleanup for `GetBuffer` and `ReleaseBuffer` calls on an existing `CStringT` object. ## Syntax diff --git a/docs/atl-mfc-shared/reference/cstringdata-class.md b/docs/atl-mfc-shared/reference/cstringdata-class.md index 2755f5e8ab1..8db5939672f 100644 --- a/docs/atl-mfc-shared/reference/cstringdata-class.md +++ b/docs/atl-mfc-shared/reference/cstringdata-class.md @@ -4,10 +4,11 @@ title: "CStringData Class" ms.date: "11/04/2016" f1_keywords: ["CStringData", "ATLSIMPSTR/ATL::CStringData", "ATLSIMPSTR/ATL::AddRef", "ATLSIMPSTR/ATL::data", "ATLSIMPSTR/ATL::IsLocked", "ATLSIMPSTR/ATL::IsShared", "ATLSIMPSTR/ATL::Lock", "ATLSIMPSTR/ATL::Release", "ATLSIMPSTR/ATL::Unlock", "ATLSIMPSTR/ATL::nAllocLength", "ATLSIMPSTR/ATL::nDataLength", "ATLSIMPSTR/ATL::nRefs", "ATLSIMPSTR/ATL::pStringMgr"] helpviewer_keywords: ["CStringData class", "shared classes, CStringData"] -ms.assetid: 4e31b5ca-3dbe-4fd5-b692-8211fbfb2593 --- # CStringData Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents the data of a string object. ## Syntax diff --git a/docs/atl-mfc-shared/reference/cstringt-class.md b/docs/atl-mfc-shared/reference/cstringt-class.md index a47c9ad9a69..d22cac3373a 100644 --- a/docs/atl-mfc-shared/reference/cstringt-class.md +++ b/docs/atl-mfc-shared/reference/cstringt-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["strings [C++], in ATL", "shared classes, CStringT", "CStr --- # `CStringT` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents a **`CStringT`** object. ## Syntax diff --git a/docs/atl-mfc-shared/reference/ctime-class.md b/docs/atl-mfc-shared/reference/ctime-class.md index 067db91b524..9c5623b02f3 100644 --- a/docs/atl-mfc-shared/reference/ctime-class.md +++ b/docs/atl-mfc-shared/reference/ctime-class.md @@ -4,10 +4,11 @@ title: "CTime Class" ms.date: "10/18/2018" f1_keywords: ["ATLTIME/ATL::CTime", "ATLTIME/ATL::CTime::CTime", "ATLTIME/ATL::CTime::Format", "ATLTIME/ATL::CTime::FormatGmt", "ATLTIME/ATL::CTime::GetAsDBTIMESTAMP", "ATLTIME/ATL::CTime::GetAsSystemTime", "ATLTIME/ATL::CTime::GetCurrentTime", "ATLTIME/ATL::CTime::GetDay", "ATLTIME/ATL::CTime::GetDayOfWeek", "ATLTIME/ATL::CTime::GetGmtTm", "ATLTIME/ATL::CTime::GetHour", "ATLTIME/ATL::CTime::GetLocalTm", "ATLTIME/ATL::CTime::GetMinute", "ATLTIME/ATL::CTime::GetMonth", "ATLTIME/ATL::CTime::GetSecond", "ATLTIME/ATL::CTime::GetTime", "ATLTIME/ATL::CTime::GetYear", "ATLTIME/ATL::CTime::Serialize64"] helpviewer_keywords: ["CTime class", "shared classes, CTime"] -ms.assetid: 0a299544-485b-48dc-9d3c-fdc30f57d612 --- # CTime Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + Represents an absolute time and date. ## Syntax diff --git a/docs/atl-mfc-shared/reference/ctimespan-class.md b/docs/atl-mfc-shared/reference/ctimespan-class.md index ae10bdba1cf..df669d06353 100644 --- a/docs/atl-mfc-shared/reference/ctimespan-class.md +++ b/docs/atl-mfc-shared/reference/ctimespan-class.md @@ -7,6 +7,8 @@ helpviewer_keywords: ["elapsed time, CTimeSpan object", "timespan", "time span", --- # `CTimeSpan` Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + An amount of time, which is internally stored as the number of seconds in the time span. ## Syntax diff --git a/docs/atl-mfc-shared/reference/iatlstringmgr-class.md b/docs/atl-mfc-shared/reference/iatlstringmgr-class.md index 9eb991ca286..c94ac02b615 100644 --- a/docs/atl-mfc-shared/reference/iatlstringmgr-class.md +++ b/docs/atl-mfc-shared/reference/iatlstringmgr-class.md @@ -4,10 +4,11 @@ title: "IAtlStringMgr Class" ms.date: "10/18/2018" f1_keywords: ["IAtlStringMgr", "ATLSIMPSTR/ATL::IAtlStringMgr", "ATLSIMPSTR/ATL::Allocate", "ATLSIMPSTR/ATL::Clone", "ATLSIMPSTR/ATL::Free", "ATLSIMPSTR/ATL::GetNilString", "ATLSIMPSTR/ATL::Reallocate"] helpviewer_keywords: ["shared classes, IAtlStringMgr", "memory, managing", "IAtlStringMgr class"] -ms.assetid: 722f0346-a770-4aa7-8f94-177be8dba823 --- # IAtlStringMgr Class +[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] + This class represents the interface to a `CStringT` memory manager. ## Syntax diff --git a/docs/atl-mfc-shared/string-data-management.md b/docs/atl-mfc-shared/string-data-management.md index b48c6a636da..c30b096c6ec 100644 --- a/docs/atl-mfc-shared/string-data-management.md +++ b/docs/atl-mfc-shared/string-data-management.md @@ -6,6 +6,8 @@ helpviewer_keywords: ["Unicode, string objects"] --- # String Data Management +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + Visual C++ provides several ways to manage string data: - [String Manipulation](../c-runtime-library/string-manipulation-crt.md) for working with C-style `NULL`-terminated strings diff --git a/docs/atl-mfc-shared/strings-atl-mfc.md b/docs/atl-mfc-shared/strings-atl-mfc.md index 1c0b4515fa4..a497b8ec3a7 100644 --- a/docs/atl-mfc-shared/strings-atl-mfc.md +++ b/docs/atl-mfc-shared/strings-atl-mfc.md @@ -6,6 +6,8 @@ helpviewer_keywords: ["const char pointers", "strings [C++], in ATL", "MFC [C++] --- # Strings (ATL/MFC) +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + Nearly all programs work with string data. Visual C++ provides several ways to manage this string data. ## In This Section diff --git a/docs/atl-mfc-shared/unicode-and-multibyte-character-set-mbcs-support.md b/docs/atl-mfc-shared/unicode-and-multibyte-character-set-mbcs-support.md index 2ba1928aa64..b6ca21a7e14 100644 --- a/docs/atl-mfc-shared/unicode-and-multibyte-character-set-mbcs-support.md +++ b/docs/atl-mfc-shared/unicode-and-multibyte-character-set-mbcs-support.md @@ -6,6 +6,8 @@ helpviewer_keywords: ["MFC [C++], character set support", "MBCS [C++], strings a --- # Unicode and Multibyte Character Set (MBCS) Support +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + Some languages, for example, Japanese and Chinese, have large character sets. To support programming for these markets, the Microsoft Foundation Class Library (MFC) enables two different approaches to handling large character sets: - [Unicode](#mfc-support-for-unicode-strings), **`wchar_t`** based wide-characters, and strings encoded as UTF-16. diff --git a/docs/atl-mfc-shared/using-cstring.md b/docs/atl-mfc-shared/using-cstring.md index f6a99466fcc..829888fc125 100644 --- a/docs/atl-mfc-shared/using-cstring.md +++ b/docs/atl-mfc-shared/using-cstring.md @@ -3,10 +3,11 @@ description: "Learn more about: Using CString" title: "Using CString" ms.date: "06/18/2018" helpviewer_keywords: ["CString objects, C++ string manipulation", "CString objects, reference counting", "CString class (Visual C++)"] -ms.assetid: ed018aaf-8b10-46f9-828c-f9c092dc7609 --- # Using `CString` +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + The topics in this section describe how to program with `CString`. For reference documentation about the `CString` class, see the documentation for [`CStringT`](../atl-mfc-shared/reference/cstringt-class.md). To use `CString`, include the `atlstr.h` header. diff --git a/docs/atl-mfc-shared/using-cstringt.md b/docs/atl-mfc-shared/using-cstringt.md index e7232579f8a..6e322077aef 100644 --- a/docs/atl-mfc-shared/using-cstringt.md +++ b/docs/atl-mfc-shared/using-cstringt.md @@ -3,10 +3,11 @@ description: "Learn more about: Using CStringT" title: "Using CStringT" ms.date: "11/04/2016" helpviewer_keywords: ["CStringT class, using"] -ms.assetid: 3a9fffb1-6f90-482a-ab69-4003e6084cb5 --- # Using CStringT +[!INCLUDE[product-lifecycle-status](./includes/lifecycle-note.md)] + The topics in this section describe programming using the template class [CStringT](../atl-mfc-shared/reference/cstringt-class.md). ## In This Section diff --git a/docs/mfc/activex-controls.md b/docs/mfc/activex-controls.md index 6dcea4cccbb..936df4c4773 100644 --- a/docs/mfc/activex-controls.md +++ b/docs/mfc/activex-controls.md @@ -7,7 +7,7 @@ helpviewer_keywords: ["ActiveX controls [MFC]"] # ActiveX Controls >[!NOTE] -> The Microsoft Foundation Classes (MFC) library continues to be supported. However, we're no longer adding features or updating the documentation. +> The Microsoft Foundation Classes (MFC) library and Active Template Library (ATL) continue to be supported. However, we're no longer adding features or updating the documentation. In Visual Studio you can create ActiveX controls using MFC or ATL. @@ -15,7 +15,6 @@ In Visual Studio you can create ActiveX controls using MFC or ATL. > ActiveX is a legacy technology that should not be used for new development. Many capabilities of ActiveX controls can be performed in a simpler and much more secure way with modern technologies such as HTML5 and JavaScript, modern browser extensions, or WebAssembly modules. For more information, see [A break from the past, part 2: Saying goodbye to ActiveX, VBScript, attachEvent](https://blogs.windows.com/msedgedev/2015/05/06/a-break-from-the-past-part-2-saying-goodbye-to-activex-vbscript-attachevent/) and [Native Messaging](/microsoft-edge/extensions/guides/native-messaging) and [Microsoft Edge extensions](/microsoft-edge/extensions) and [WebAssembly](https://webassembly.org/). - [MFC ActiveX Controls](mfc-activex-controls.md) - - [ATL](../atl/active-template-library-atl-concepts.md) ## See also From 5637f543393dbae4cde1a1af0f18f91999a8c1d6 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 26 Feb 2026 16:22:58 -0800 Subject: [PATCH 341/619] add hybrid msg --- docs/atl/reference/mfc-support-in-atl-projects.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/atl/reference/mfc-support-in-atl-projects.md b/docs/atl/reference/mfc-support-in-atl-projects.md index b3b28f91baa..faa1b174097 100644 --- a/docs/atl/reference/mfc-support-in-atl-projects.md +++ b/docs/atl/reference/mfc-support-in-atl-projects.md @@ -7,7 +7,8 @@ helpviewer_keywords: ["ATL projects, MFC support"] --- # MFC Support in ATL Projects -[!INCLUDE[product-lifecycle-status](../includes/lifecycle-note.md)] +>[!NOTE] +> The Microsoft Foundation Classes (MFC) library and Active Template Library (ATL) continue to be supported. However, we're no longer adding features or updating the documentation. If you select **Support MFC** in the ATL Project Wizard, your project declares the application as an MFC application object (class). The project initializes the MFC library and instantiates a class (class *ProjName*) that is derived from [CWinApp](../../mfc/reference/cwinapp-class.md). From 928993083976a0cd5da6855feb285c5d6de76886 Mon Sep 17 00:00:00 2001 From: Hulon Jenkins <109993038+HulonJenkins@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:08:28 -0800 Subject: [PATCH 342/619] Update compiler warning doc with C4737 unable to tail call --- .../compiler-warnings/compiler-warnings-c4600-through-c4799.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md index 073da826414..230df86670f 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md @@ -134,6 +134,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |Compiler warning C4734|More than 64k line numbers in a COFF debug info section; stop emitting COFF debug line numbers for module 'module'| |Compiler warning C4735|`align_function` attribute argument '*argument*' is not a power of two and is not positive. Ignoring attribute| |Compiler warning C4736|`align_function` attribute ignored because `/Gy` was not specified| +|Compiler warning C4737| Unable to perform required tail call. Performance may be degraded. See [`[[msvc::musttail]]`](https://learn.microsoft.com/cpp/cpp/attributes#msvcmusttail)| |[Compiler warning (Level 3) C4738](compiler-warning-level-3-c4738.md)|storing 32-bit float result in memory, possible loss of performance| |[Compiler warning (level 1) C4739](compiler-warning-level-1-c4739.md)|reference to variable 'var' exceeds its storage space| |[Compiler warning (Level 4) C4740](compiler-warning-level-4-c4740.md)|flow in or out of inline asm code suppresses global optimization| From b3edfccb9001edd1e681ec44460f4ed74167767a Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 27 Feb 2026 14:25:59 -0800 Subject: [PATCH 343/619] Update link for Compiler warning C4737 --- .../compiler-warnings-c4600-through-c4799.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md index 230df86670f..26ff337deb2 100644 --- a/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md +++ b/docs/error-messages/compiler-warnings/compiler-warnings-c4600-through-c4799.md @@ -134,7 +134,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages |Compiler warning C4734|More than 64k line numbers in a COFF debug info section; stop emitting COFF debug line numbers for module 'module'| |Compiler warning C4735|`align_function` attribute argument '*argument*' is not a power of two and is not positive. Ignoring attribute| |Compiler warning C4736|`align_function` attribute ignored because `/Gy` was not specified| -|Compiler warning C4737| Unable to perform required tail call. Performance may be degraded. See [`[[msvc::musttail]]`](https://learn.microsoft.com/cpp/cpp/attributes#msvcmusttail)| +|Compiler warning C4737| Unable to perform required tail call. Performance may be degraded. See [`[[msvc::musttail]]`](../../cpp/attributes.md#msvcmusttail)| |[Compiler warning (Level 3) C4738](compiler-warning-level-3-c4738.md)|storing 32-bit float result in memory, possible loss of performance| |[Compiler warning (level 1) C4739](compiler-warning-level-1-c4739.md)|reference to variable 'var' exceeds its storage space| |[Compiler warning (Level 4) C4740](compiler-warning-level-4-c4740.md)|flow in or out of inline asm code suppresses global optimization| @@ -176,4 +176,4 @@ The articles in this section describe Microsoft C/C++ compiler warning messages ## See also [C/C++ Compiler and build tools errors and warnings](../compiler-errors-1/c-cpp-build-errors.md)\ -[Compiler warnings C4000 - C5999](compiler-warnings-c4000-c5999.md) \ No newline at end of file +[Compiler warnings C4000 - C5999](compiler-warnings-c4000-c5999.md) From 6df32516b739831d1b9e7de5c2919b828fbb8755 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 27 Feb 2026 15:08:45 -0800 Subject: [PATCH 344/619] Fix date and clarify 'new' operator usage for C2469 Updated remark and removed the extra error that was produced so the reader can focus on C2469 --- .../compiler-errors-1/compiler-error-c2469.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md index 836e2ea2623..1a340f4bf07 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md @@ -1,7 +1,7 @@ --- title: "Compiler Error C2469" description: "Learn more about: Compiler Error C2469" -ms.date: 07/23/2025 +ms.date: 2/27/2026 f1_keywords: ["C2469"] helpviewer_keywords: ["C2469"] --- @@ -11,29 +11,25 @@ helpviewer_keywords: ["C2469"] ## Remarks -The [`new` operator](../../cpp/new-operator-cpp.md) was passed an invalid type. +The [`new` operator](../../cpp/new-operator-cpp.md) allocates memory and constructs an object of the specified type. Since `void` isn't a constructible type, use `::operator new(size)` to allocate raw memory without object construction. ## Example: Wrong allocation type -Check if you meant to allocate `void` or some other type, such as `int`: - ```cpp -// C2469_wrong_allocation_type.cpp - +// compile with /c int main() { - int* ptr1 = new void; // C2469 - int* ptr2 = new int; // OK + void* ptr1 = new void; // C2469 + int* ptr2 = new int; // OK } ``` ## Example: Allocate untyped memory -If you meant to allocate untyped memory, use `::operator new` instead: +To allocate untyped memory, use `::operator new`: ```cpp -// C2469_allocate_untyped_memory.cpp - +// compile with /c int main() { void* ptr1 = new void; // C2469 From 917032bc35b765033db0c76c621e23605c94b665 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 27 Feb 2026 15:27:49 -0800 Subject: [PATCH 345/619] Clarify floating-point predecrement behavior --- docs/build/arm64-exception-handling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/arm64-exception-handling.md b/docs/build/arm64-exception-handling.md index 6c82d44da4c..3742b4cef7b 100644 --- a/docs/build/arm64-exception-handling.md +++ b/docs/build/arm64-exception-handling.md @@ -401,7 +401,7 @@ Step 6: Allocate remaining stack, including local area, `` pair, and out \* If **CR** == 01 and **RegI** is an odd number, step 3 and the last `save_reg` in step 2 are merged into one `save_regp`. -\*\* If **RegI** == 0, **CR** != 01, and **RegF** != 0, the first `stp` for the floating-point does the predecrement. +\*\* If **RegI** == 0, **CR** != 01, and **RegF** != 0, the first `stp` for the floating-point does the predecrement (that is, it accounts for the FP/SIMD save area). \*\*\* No instruction corresponding to `mov x29,sp` is present in the epilog. Packed unwind data can't be used if a function requires restoration of `sp` from `x29`. From 6ee11267f4bd6d2037d894e284c93b53d6f494fc Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 27 Feb 2026 15:31:04 -0800 Subject: [PATCH 346/619] Update ARM64 exception handling documentation Clarify the description of the floating-point predecrement behavior --- docs/build/arm64-exception-handling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/arm64-exception-handling.md b/docs/build/arm64-exception-handling.md index 3742b4cef7b..1ff68237edf 100644 --- a/docs/build/arm64-exception-handling.md +++ b/docs/build/arm64-exception-handling.md @@ -401,7 +401,7 @@ Step 6: Allocate remaining stack, including local area, `` pair, and out \* If **CR** == 01 and **RegI** is an odd number, step 3 and the last `save_reg` in step 2 are merged into one `save_regp`. -\*\* If **RegI** == 0, **CR** != 01, and **RegF** != 0, the first `stp` for the floating-point does the predecrement (that is, it accounts for the FP/SIMD save area). +\*\* If **RegI** == 0, **CR** != 01, and **RegF** != 0, the first `stp` for the floating-point does the predecrement to allocate space for the FP/SIMD save area. \*\*\* No instruction corresponding to `mov x29,sp` is present in the epilog. Packed unwind data can't be used if a function requires restoration of `sp` from `x29`. From 5dca165413c231af257cd66a6daeef06d7738b50 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Fri, 27 Feb 2026 15:32:48 -0800 Subject: [PATCH 347/619] Update explanation for floating-point save area allocation Clarify the predecrement description --- docs/build/arm64-exception-handling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/arm64-exception-handling.md b/docs/build/arm64-exception-handling.md index 1ff68237edf..dc383c44181 100644 --- a/docs/build/arm64-exception-handling.md +++ b/docs/build/arm64-exception-handling.md @@ -401,7 +401,7 @@ Step 6: Allocate remaining stack, including local area, `` pair, and out \* If **CR** == 01 and **RegI** is an odd number, step 3 and the last `save_reg` in step 2 are merged into one `save_regp`. -\*\* If **RegI** == 0, **CR** != 01, and **RegF** != 0, the first `stp` for the floating-point does the predecrement to allocate space for the FP/SIMD save area. +\*\* If **RegI** == 0, **CR** != 01, and **RegF** != 0, the first `stp` for the floating-point does the predecrement to adjust sp to allocate space for the FP/SIMD save area. \*\*\* No instruction corresponding to `mov x29,sp` is present in the epilog. Packed unwind data can't be used if a function requires restoration of `sp` from `x29`. From 5802ffcc8743bcf622cc650d332cd0d0da19c05e Mon Sep 17 00:00:00 2001 From: paulth1 <42621139+paulth1@users.noreply.github.com> Date: Fri, 27 Feb 2026 16:23:06 -0800 Subject: [PATCH 348/619] edit pass: redistributing-microsoft-c++-files --- docs/windows/latest-supported-vc-redist.md | 6 +++--- docs/windows/redistributing-an-atl-application.md | 6 +++--- .../troubleshoot-vc-redistributable-installation-issues.md | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 18bb356f080..d4a5991c943 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -63,7 +63,7 @@ Download other versions, including long-term servicing release channel versions, - Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Sign in by using a Visual Studio subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or to create a free account. select [No account? Create one!](https://my.visualstudio.com/). - The Visual C++ v14 Redistributable doesn't have separate packages for different languages. License terms for different languages are available at [Microsoft Software License Terms](https://aka.ms/VCRedistLicense). -- Visual Studio 2017 and later share the same redistributable files. Any apps built by Microsoft Visual C++ (MSVC) Build Tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ v14 Redistributable. The version of the Redistributable installed on the machine must be the same or later than the version of the MSVC Build Tools used to create your application. For more information about which version of the Redistributable to install, see [Determine which dynamic-link-libraries (DLLs) to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). +- Visual Studio 2017 and later share the same redistributable files. Any apps built by MSVC Build Tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ v14 Redistributable. The version of the Redistributable installed on the machine must be the same or later than the version of the MSVC Build Tools used to create your application. For more information about which version of the Redistributable to install, see [Determine which dynamic-link libraries (DLLs) to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). - The latest version of the Visual C++ v14 Redistributable included with Visual Studio 2026 supports only the following operating systems: * Windows 10 and 11 * Windows Server 2016, 2019, 2022, and 2025 @@ -76,14 +76,14 @@ When Visual Studio 2015 support ended, the v14 runtime was binary compatible wit ### Visual Studio 2015 (VC++ 14.0) (no longer supported) -To download the latest available version of Visual C++ Redistributable for Visual Studio 2015, see the [Visual Studio Subscriptions](https://my.visualstudio.com/) website. On the **Downloads** tab, search for **Visual C++ Redistributable for Visual Studio 2015**. +To download the latest available version of Visual C++ Redistributable for Visual Studio 2015, see the [Welcome to Dev Essentials](https://my.visualstudio.com/) page. On the **Downloads** tab, search for **Visual C++ Redistributable for Visual Studio 2015**. The latest version of Visual C++ Redistributable for Visual Studio 2015 is `14.0.24212.0` and is available for ARM64, X86, and X64 architectures. ### Visual Studio 2013 (VC++ 12.0) (no longer supported) These links download the latest available en-US Microsoft Visual C++ Redistributable Packages for Visual Studio 2013. -You can download other versions and languages from [Update for Visual C++ 2013 Redistributable Package](https://support.microsoft.com/topic/update-for-visual-c-2013-redistributable-package-d8ccd6a5-4e26-c290-517b-8da6cfdf4f10) or from the [Visual Studio Subscriptions](https://my.visualstudio.com/) website. +You can download other versions and languages from [Update for Visual C++ 2013 Redistributable Package](https://support.microsoft.com/topic/update-for-visual-c-2013-redistributable-package-d8ccd6a5-4e26-c290-517b-8da6cfdf4f10) or from the [Welcome to Dev Essentials](https://my.visualstudio.com/) page. | Architecture | Version | Link | | ------------ | :----------: | ------------------------------------------------------: | diff --git a/docs/windows/redistributing-an-atl-application.md b/docs/windows/redistributing-an-atl-application.md index a226fc8848b..17248946533 100644 --- a/docs/windows/redistributing-an-atl-application.md +++ b/docs/windows/redistributing-an-atl-application.md @@ -8,7 +8,7 @@ ms.topic: concept-article --- # Redistribute an ATL application -Starting in Visual Studio 2012, Active Template Library (ATL) is a header-only library. ATL projects don't have a dynamic link to an ATL option. No redistributable ATL library is required. +Beginning with Visual Studio 2012, Active Template Library (ATL) is a header-only library. ATL projects don't have a dynamic link to an ATL option. No redistributable ATL library is required. If you redistribute an ATL executable application, you must register the `.exe` file (and any controls inside it). Use the following command: @@ -16,7 +16,7 @@ If you redistribute an ATL executable application, you must register the `.exe` filename /regserver ``` -where `filename` is the name of the executable file. +Where `filename` is the name of the executable file. In Visual Studio 2010, you can build an ATL project for a `MinDependency` or a `MinSize` configuration: @@ -33,7 +33,7 @@ If you redistribute an ATL executable application, you must register the `.exe` filename /regserver ``` -where `filename` is the name of the executable file. +Where `filename` is the name of the executable file. ## Related content diff --git a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md index aaf81ea5b4a..f0f3195aff1 100644 --- a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md +++ b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md @@ -224,9 +224,9 @@ From the log files, make a note of the VC Redist version causing the issue. Two ## Download old versions of the Visual C++ Redistributable installer > [!WARNING] -> Never install a Visual C++ Redistributable installer that wasn't downloaded from a Microsoft site. Never install a Visual C++ Redistributable installer that isn't signed by Microsoft. +> Never install a Visual C++ Redistributable installer that wasn't downloaded from a Microsoft site. Never install a Visual C++ Redistributable installer that Microsoft didn't sign. -Download the VC Redist installer from [Welcome to Dev Essentials](https://my.visualstudio.com/Downloads) page. Search for Visual C++ Redistributable on the downloads page. +Download the VC Redist installer from the [Welcome to Dev Essentials](https://my.visualstudio.com/Downloads) page. Search for Visual C++ Redistributable on the downloads page. For the latest supported VC Redist version for each version of Visual Studio, see [Microsoft Redistributable Visual C++ latest supported downloads](/cpp/windows/latest-supported-vc-redist). From 7c5ddb9b018fd888e7a46260e1f557ed2911ddf3 Mon Sep 17 00:00:00 2001 From: paulth1 <42621139+paulth1@users.noreply.github.com> Date: Fri, 27 Feb 2026 16:53:21 -0800 Subject: [PATCH 349/619] edit pass: redistributing-microsoft-c++-files --- docs/windows/latest-supported-vc-redist.md | 7 +++++-- docs/windows/redistributing-the-mfc-library.md | 4 ++-- docs/windows/redistributing-visual-cpp-files.md | 4 +++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index d4a5991c943..88f43722b4e 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -63,12 +63,15 @@ Download other versions, including long-term servicing release channel versions, - Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Sign in by using a Visual Studio subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or to create a free account. select [No account? Create one!](https://my.visualstudio.com/). - The Visual C++ v14 Redistributable doesn't have separate packages for different languages. License terms for different languages are available at [Microsoft Software License Terms](https://aka.ms/VCRedistLicense). -- Visual Studio 2017 and later share the same redistributable files. Any apps built by MSVC Build Tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ v14 Redistributable. The version of the Redistributable installed on the machine must be the same or later than the version of the MSVC Build Tools used to create your application. For more information about which version of the Redistributable to install, see [Determine which dynamic-link libraries (DLLs) to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). +- Visual Studio 2017 and later share the same redistributable files. Any apps built by MSVC Build Tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ v14 Redistributable. + + The version of the Redistributable installed on the machine must be the same or later than the version of the MSVC Build Tools used to create your application. For more information about which version of the Redistributable to install, see [Determine which dynamic-link libraries (DLLs) to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). - The latest version of the Visual C++ v14 Redistributable included with Visual Studio 2026 supports only the following operating systems: * Windows 10 and 11 * Windows Server 2016, 2019, 2022, and 2025 - Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which it first ships, support for Visual C++ 2015 Redistributable (version 14.0.24212) also ended October 15, 2025. For the latest available version, see the [Visual Studio 2015 (Visual C++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section.
-When Visual Studio 2015 support ended, the v14 runtime was binary compatible with applications built by using the Visual Studio 2015 MSVC Build Tools. Since Visual Studio 2015 is no longer supported, we recommend that you update your projects to use a supported MSVC Build Tools version and the latest v14 runtime. The Visual C++ Redistributable for 2017, and later, in-place upgrade the Visual C++ 2015 Redistributable (14.0.24212.0). Redistributables for 2013 and earlier remain installed side by side. + + When Visual Studio 2015 support ended, the v14 runtime was binary compatible with applications built by using the Visual Studio 2015 MSVC Build Tools. Since Visual Studio 2015 is no longer supported, we recommend that you update your projects to use a supported MSVC Build Tools version and the latest v14 runtime. The Visual C++ Redistributable for 2017, and later, in-place upgrade the Visual C++ 2015 Redistributable (14.0.24212.0). Redistributables for 2013 and earlier remain installed side by side. - The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). diff --git a/docs/windows/redistributing-the-mfc-library.md b/docs/windows/redistributing-the-mfc-library.md index 470fa794f85..324a3c400f6 100644 --- a/docs/windows/redistributing-the-mfc-library.md +++ b/docs/windows/redistributing-the-mfc-library.md @@ -20,7 +20,7 @@ For information on how to redistribute the Universal CRT as an operating system You can find redistributable architecture-specific versions of `ucrtbase.dll` for local deployment in the Windows SDK. By default, Visual Studio installs these versions in `C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\` in an architecture-specific subdirectory. -If your app is built by using an earlier version of the MFC Library, you must redistribute the matching CRT DLL from the redistributable files directory. For example, if your MFC application is built by using the Visual Studio 2013 (vc120) toolset, you must redistribute the `msvcr120.dll`. You also have to redistribute the matching `mfc``u.dll` or `mfc``.dll`. +If your app is built by using an earlier version of the MFC Library, you must redistribute the matching CRT DLL from the redistributable files directory. For example, if your MFC application is built by using the Visual Studio 2013 (vc120) toolset, you must redistribute the `msvcr120.dll`. You also have to redistribute the matching `mfcu.dll` or `mfc.dll`. If you statically link your application to MFC (in the **Property Pages** dialog, on the **General** tab, select **Use MFC in a Static Library**), you don't have to redistribute an MFC DLL. Although static linking might work for testing and internal deployment of applications, we recommend that you don't use it to redistribute MFC. For more information about the recommended strategies for deploying Visual C++ libraries, see [Choose a deployment method](choosing-a-deployment-method.md). @@ -36,7 +36,7 @@ You can redistribute MFC by using either `VCRedist_*architecture*.exe` or merge ## Installation of localized MFC components -If you decide to localize your application by installing an MFC localization DLL, you must use the redistributable merge files (`.msm`). For example, if you want to localize your application on an x86 computer, you must merge `Microsoft_VC``_MFCLOC_x86.msm` into the installation package for an x86 computer. +If you decide to localize your application by installing an MFC localization DLL, you must use the redistributable merge files (`.msm`). For example, if you want to localize your application on an x86 computer, you must merge `Microsoft_VC_MFCLOC_x86.msm` into the installation package for an x86 computer. The redistributable `.msm` files contain the DLLs that are used for localization. There's one DLL for each supported language. The installation process installs these DLLs in the `%windir%\system32\` folder on the target computer. diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index 7e802ee221e..0cc082395f7 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -48,7 +48,9 @@ To deploy redistributable files, you can use the redistributable packages instal The easiest way to locate the redistributable files is by using environment variables set in a developer command prompt. In Visual Studio 2022, the redistributable files are in the `%VCINSTALLDIR%Redist\MSVC\v143` folder. In the latest version of Visual Studio 2019, you can find the redistributable files in the `%VCINSTALLDIR%Redist\MSVC\v142` folder. In both Visual Studio 2017 and Visual Studio 2019, the files are also found in `%VCToolsRedistDir%`. In Visual Studio 2015, you can find these files in `%VCINSTALLDIR%redist\`, where `` is the locale of the redistributable packages. -In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named Visual C++ \ Redistributable MSMs in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When they're installed in Visual Studio 2022, you can find the redistributable merge modules in `%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`. In the latest version of Visual Studio 2019, the redistributable merge modules are found in `%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`. In both Visual Studio 2019 and Visual Studio 2017, they're also found in `%VCToolsRedistDir%MergeModules`. In Visual Studio 2015, they're found in `Program Files [(x86)]\Common Files\Merge Modules`. +In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named Visual C++ \ Redistributable MSMs in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When they're installed in Visual Studio 2022, you can find the redistributable merge modules in `%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`. + +In the latest version of Visual Studio 2019, the redistributable merge modules are found in `%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`. In both Visual Studio 2019 and Visual Studio 2017, they're also found in `%VCToolsRedistDir%MergeModules`. In Visual Studio 2015, they're found in `Program Files [(x86)]\Common Files\Merge Modules`. ## Install the redistributable packages From b3d455742cafd203c5c68ab0cab25002e65bf1b8 Mon Sep 17 00:00:00 2001 From: paulth1 <42621139+paulth1@users.noreply.github.com> Date: Fri, 27 Feb 2026 17:04:59 -0800 Subject: [PATCH 350/619] edit pass: redistributing-microsoft-c++-files --- docs/windows/redistributing-the-mfc-library.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/redistributing-the-mfc-library.md b/docs/windows/redistributing-the-mfc-library.md index 324a3c400f6..35a09bf7b97 100644 --- a/docs/windows/redistributing-the-mfc-library.md +++ b/docs/windows/redistributing-the-mfc-library.md @@ -14,7 +14,7 @@ If you dynamically link your application to the Microsoft Foundation Class (MFC) > [!NOTE] > The `mfc140.dll` files were omitted from the redistributable files directory in Visual Studio 2015 RTM. You can use the versions installed by Visual Studio 2015 in the `Windows\system32 and Windows\syswow64` directories instead. -Because all MFC DLLs use the shared version of the Microsoft C Runtime Library (CRT), you might also need to redistribute the CRT. The version of MFC that ships with Visual Studio 2015 uses the Universal CRT Library, which is distributed as part of Windows 10 and Windows 11. To run an MFC application built by using Visual Studio 2015 on earlier versions of Windows, you must redistribute the Universal CRT. +Because all MFC DLLs use the shared version of the Microsoft C Runtime (CRT) Library, you might also need to redistribute the CRT. The version of MFC that ships with Visual Studio 2015 uses the Universal CRT Library, which is distributed as part of Windows 10 and Windows 11. To run an MFC application built by using Visual Studio 2015 on earlier versions of Windows, you must redistribute the Universal CRT. For information on how to redistribute the Universal CRT as an operating system component or by using local deployment, see [Introducing the Universal CRT](https://devblogs.microsoft.com/cppblog/introducing-the-universal-crt/). To download the Universal CRT for central deployment on supported versions of Windows, see [Windows 10 Universal C Runtime](https://www.microsoft.com/download/details.aspx?id=48234). From eb03e20193249c8f43eed39a9864ef5be89f6472 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 27 Feb 2026 17:34:35 -0800 Subject: [PATCH 351/619] add info about which directive to use --- docs/cpp/attributes.md | 20 ++++++++++++++------ docs/preprocessor/warning.md | 10 +++++++++- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md index 9a45ef04e6f..2ed22d9e6e1 100644 --- a/docs/cpp/attributes.md +++ b/docs/cpp/attributes.md @@ -79,9 +79,11 @@ The `[[noreturn]]` attribute specifies that a function never returns; in other w ### `[[gsl::suppress( [, justification: ])]]` -`` is a string that specifies the name of the rule to suppress. The optional `justification` field allows you to explain why a warning is being disabled or suppressed. This value will appear in the SARIF output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. The `[[gsl::suppress]]` attribute is available in Visual Studio 2022 version 17.14 and later versions. +This Microsoft-specific attribute, introduced in Visual Studio 2022 version 17.14, suppresses warnings from checkers that enforce [Guidelines Support Library (GSL)](https://github.com/Microsoft/GSL) rules in code. The attribute can be applied to a statement, a block, or a declaration. -The Microsoft-specific `[[gsl::suppress]]` attribute is used to suppress warnings from checkers that enforce [Guidelines Support Library (GSL)](https://github.com/Microsoft/GSL) rules in code. For example, consider this code snippet: +`` is a string that specifies the name of the rule to suppress. The optional `justification` field allows you to explain why a warning is being disabled or suppressed. This value will appear in the SARIF output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. + +Example: ```cpp int main() @@ -96,15 +98,21 @@ int main() } ``` -The example raises these warnings: +This example raises these warnings: - [C26494](../code-quality/c26494.md) (Type Rule 5: Always initialize an object.) - - [C26485](../code-quality/c26485.md) (Bounds Rule 3: No array to pointer decay.) - - [C26481](../code-quality/c26481.md) (Bounds Rule 1: Don't use pointer arithmetic. Use span instead.) -The first two warnings fire when you compile this code with the CppCoreCheck code analysis tool installed and activated. But the third warning doesn't fire because of the attribute. You can suppress the entire bounds profile by writing `[[gsl::suppress("bounds")]]` without including a specific rule number. The C++ Core Guidelines are designed to help you write better and safer code. The suppress attribute makes it easy to turn off the warnings when they aren't wanted. +The first two warnings occur when you compile this code with the CppCoreCheck code analysis tool installed and activated. But the third warning doesn't fire because of the attribute. You can suppress the entire bounds profile by writing `[[gsl::suppress("bounds")]]` without including a specific rule number. The C++ Core Guidelines are designed to help you write better and safer code. The suppress attribute makes it easy to turn off the warnings when they aren't wanted. + +**Choosing between `#pragma warning` and `[[gsl::suppress]]`** + +Both `#pragma warning(suppress)` and `[[gsl::suppress]]` offer fine-grained control over warning suppression: +- `[[gsl::suppress]]` only suppresses warnings emitted by Microsoft C++ Code Analysis. Use it with the C++ Core Guidelines checks which can be applied to a scope or a specific declaration. +- `#pragma warning(suppress)` can be used for any compiler warning. It’s particularly useful when you need to suppress a warning in a specific code block without altering the code’s structure significantly. + +Whenever possible, we recommend using `[[gsl::suppress]]` for suppressing Microsoft C++ Code Analysis warnings. ### `[[msvc::flatten]]` diff --git a/docs/preprocessor/warning.md b/docs/preprocessor/warning.md index 8d6d994f0ad..6c647e34e09 100644 --- a/docs/preprocessor/warning.md +++ b/docs/preprocessor/warning.md @@ -114,8 +114,16 @@ When you write header files, you can use `push` and `pop` to guarantee that warn #pragma warning( pop ) ``` +**Choosing between `#pragma warning` and `[[gsl::suppress]]`** + +Both `#pragma warning(suppress)` and `[[gsl::suppress]]` offer fine-grained control over warning suppression: +- `[[gsl::suppress]]` only suppresses warnings emitted by Microsoft C++ Code Analysis. Use it with the C++ Core Guidelines checks which can be applied to a scope or a specific declaration. +- `#pragma warning(suppress)` can be used for any compiler warning. It’s particularly useful when you need to suppress a warning in a specific code block without altering the code’s structure significantly. + +Whenever possible, we recommend using [`[[gsl::suppress]]`](../cpp/attributes.md#gslsuppresstag--justification-narrow-string-literal) for suppressing Microsoft C++ Code Analysis warnings. + For more information about compiler options that help you suppress warnings, see [`/FI`](../build/reference/fi-name-forced-include-file.md) and [`/w`](../build/reference/compiler-option-warning-level.md). ## See also -[Pragma directives and the `__pragma` and `_Pragma` keywords](./pragma-directives-and-the-pragma-keyword.md) +[Pragma directives and the `__pragma` and `_Pragma` keywords](./pragma-directives-and-the-pragma-keyword.md) \ No newline at end of file From bc2681feacdb6ca79fcf190c385d3665a0fe8e20 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 27 Feb 2026 18:02:01 -0800 Subject: [PATCH 352/619] add info about SARIF --- docs/cpp/attributes.md | 2 +- docs/preprocessor/warning.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md index 2ed22d9e6e1..1792c65fc67 100644 --- a/docs/cpp/attributes.md +++ b/docs/cpp/attributes.md @@ -81,7 +81,7 @@ The `[[noreturn]]` attribute specifies that a function never returns; in other w This Microsoft-specific attribute, introduced in Visual Studio 2022 version 17.14, suppresses warnings from checkers that enforce [Guidelines Support Library (GSL)](https://github.com/Microsoft/GSL) rules in code. The attribute can be applied to a statement, a block, or a declaration. -`` is a string that specifies the name of the rule to suppress. The optional `justification` field allows you to explain why a warning is being disabled or suppressed. This value will appear in the SARIF output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. +`` is a string that specifies the name of the rule to suppress. The optional `justification` field allows you to explain why a warning is being disabled or suppressed. This value will appear in the Static Analysis Results Interchange Format ([SARIF](https://sarif.info/)) output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. To generate a SARIF file, use the `/analyze:log:format:sarif` compiler option. Example: diff --git a/docs/preprocessor/warning.md b/docs/preprocessor/warning.md index 6c647e34e09..965301e3e93 100644 --- a/docs/preprocessor/warning.md +++ b/docs/preprocessor/warning.md @@ -44,7 +44,7 @@ However, when the **`justification`** field is present, only one warning number ``` The **`justification`** fields allows you to explain why a warning is being disable or -suppressed. The **`justification`** field is only supported for the **`disable`** and **`suppress`** *`warning-specifier`*. This value will appear in the SARIF output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. +suppressed. The **`justification`** field is only supported for the **`disable`** and **`suppress`** *`warning-specifier`*. This value will appear in the Static Analysis Results Interchange Format ([SARIF](https://sarif.info/)) output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. To generate a SARIF file, use the `/analyze:log:format:sarif` compiler option. This directive is functionally equivalent to the following code: From 754b414cf25c98db87a24bf9967a889de8bfb339 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 27 Feb 2026 18:09:26 -0800 Subject: [PATCH 353/619] edits --- docs/cpp/attributes.md | 2 +- docs/preprocessor/warning.md | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md index 1792c65fc67..08eac4cfefb 100644 --- a/docs/cpp/attributes.md +++ b/docs/cpp/attributes.md @@ -79,7 +79,7 @@ The `[[noreturn]]` attribute specifies that a function never returns; in other w ### `[[gsl::suppress( [, justification: ])]]` -This Microsoft-specific attribute, introduced in Visual Studio 2022 version 17.14, suppresses warnings from checkers that enforce [Guidelines Support Library (GSL)](https://github.com/Microsoft/GSL) rules in code. The attribute can be applied to a statement, a block, or a declaration. +This Microsoft-specific attribute, introduced in Visual Studio 2022 version 17.14, suppresses warnings from checkers that enforce [Guidelines Support Library (GSL)](https://github.com/Microsoft/GSL) rules. The attribute can be applied to a statement, a block, or a declaration. It's only available for C++. For C code, use [`#pragma warning(suppress)`](../preprocessor/warning.md) instead. `` is a string that specifies the name of the rule to suppress. The optional `justification` field allows you to explain why a warning is being disabled or suppressed. This value will appear in the Static Analysis Results Interchange Format ([SARIF](https://sarif.info/)) output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. To generate a SARIF file, use the `/analyze:log:format:sarif` compiler option. diff --git a/docs/preprocessor/warning.md b/docs/preprocessor/warning.md index 965301e3e93..bf27aa6d461 100644 --- a/docs/preprocessor/warning.md +++ b/docs/preprocessor/warning.md @@ -29,7 +29,8 @@ The following warning-specifier parameters are available. | `disable` | Don't issue the specified warning messages. The optional **`justification`** property is allowed. | | `error` | Report the specified warnings as errors. | | `once` | Display the specified message(s) only one time. | -| `suppress` | Pushes the current state of the pragma on the stack, disables the specified warning for the next line, and then pops the warning stack so that the pragma state is reset. The optional **`justification`** property is allowed. | +| `suppress` | Pushes the current state of the pragma on the stack, disables the specified warning for the next line, and then pops the warning stack so that the pragma state is reset. | +| **`justification`** is optional and was introduced in Visual Studio 2022 version 17.14. | The following code statement illustrates that a *`warning-number-list`* parameter can contain multiple warning numbers, and that multiple *`warning-specifier`* parameters can be specified in the same pragma directive. @@ -43,7 +44,7 @@ However, when the **`justification`** field is present, only one warning number #pragma warning( disable : 4507, justification : "This warning is disabled" ) ``` -The **`justification`** fields allows you to explain why a warning is being disable or +The **`justification`** fields allows you to explain why a warning is being disabled or suppressed. The **`justification`** field is only supported for the **`disable`** and **`suppress`** *`warning-specifier`*. This value will appear in the Static Analysis Results Interchange Format ([SARIF](https://sarif.info/)) output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. To generate a SARIF file, use the `/analyze:log:format:sarif` compiler option. This directive is functionally equivalent to the following code: From b509f4b96eeb29c0ef8df54c1b5b63bcc4367b9f Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 27 Feb 2026 18:16:47 -0800 Subject: [PATCH 354/619] Acrolinx --- docs/cpp/attributes.md | 14 +++++++------- docs/preprocessor/warning.md | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md index 08eac4cfefb..d52e5575048 100644 --- a/docs/cpp/attributes.md +++ b/docs/cpp/attributes.md @@ -46,7 +46,7 @@ The `[[carries_dependency]]` attribute specifies that the function propagates da ### `[[likely]]` -**Visual Studio 2019 version 16.6 and later:** (Available with [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) and later.) The `[[likely]]` attribute specifies a hint to the compiler that the code path for the attributed label or statement is more likely to execute than alternatives. In the Microsoft compiler, the `[[likely]]` attribute marks blocks as "hot code", which increments an internal optimization score. The score is incremented more when optimizing for speed, and not as much when optimizing for size. The net score affects the likelihood of inlining, loop unrolling, and vectorizing optimizations. The effect of `[[likely]]` and `[[unlikely]]` is similar to [Profile-guided optimization](../build/profile-guided-optimizations.md), but limited in scope to the current translation unit. The block reordering optimization isn't implemented yet for this attribute. +**Visual Studio 2019 version 16.6 and later:** (Available with [`/std:c++20`](../build/reference/std-specify-language-standard-version.md) and later.) The `[[likely]]` attribute specifies a hint to the compiler that the code path for the attributed label or statement is more likely to execute than alternatives. In the Microsoft compiler, the `[[likely]]` attribute marks blocks as "hot code," which increments an internal optimization score. The score is incremented more when optimizing for speed, and not as much when optimizing for size. The net score affects the likelihood of inlining, loop unrolling, and vectorizing optimizations. The effect of `[[likely]]` and `[[unlikely]]` is similar to [Profile-guided optimization](../build/profile-guided-optimizations.md), but limited in scope to the current translation unit. The block reordering optimization isn't implemented yet for this attribute. ### `[[maybe_unused]]` @@ -81,7 +81,7 @@ The `[[noreturn]]` attribute specifies that a function never returns; in other w This Microsoft-specific attribute, introduced in Visual Studio 2022 version 17.14, suppresses warnings from checkers that enforce [Guidelines Support Library (GSL)](https://github.com/Microsoft/GSL) rules. The attribute can be applied to a statement, a block, or a declaration. It's only available for C++. For C code, use [`#pragma warning(suppress)`](../preprocessor/warning.md) instead. -`` is a string that specifies the name of the rule to suppress. The optional `justification` field allows you to explain why a warning is being disabled or suppressed. This value will appear in the Static Analysis Results Interchange Format ([SARIF](https://sarif.info/)) output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. To generate a SARIF file, use the `/analyze:log:format:sarif` compiler option. +`` is a string that specifies the name of the rule to suppress. The optional `justification` field allows you to explain why a warning is being disabled or suppressed. This value appears in the Static Analysis Results Interchange Format ([SARIF](https://sarif.info/)) output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. To generate a SARIF file, use the `/analyze:log:format:sarif` compiler option. Example: @@ -109,14 +109,14 @@ The first two warnings occur when you compile this code with the CppCoreCheck co **Choosing between `#pragma warning` and `[[gsl::suppress]]`** Both `#pragma warning(suppress)` and `[[gsl::suppress]]` offer fine-grained control over warning suppression: -- `[[gsl::suppress]]` only suppresses warnings emitted by Microsoft C++ Code Analysis. Use it with the C++ Core Guidelines checks which can be applied to a scope or a specific declaration. -- `#pragma warning(suppress)` can be used for any compiler warning. It’s particularly useful when you need to suppress a warning in a specific code block without altering the code’s structure significantly. +- `[[gsl::suppress]]` only suppresses warnings emitted by Microsoft C++ Code Analysis. Use it with the C++ Core Guidelines checks, which can be applied to a scope or a specific declaration. +- `#pragma warning(suppress)` can be used for any compiler warning. It’s useful when you need to suppress a warning in a specific code block without altering the code’s structure significantly. Whenever possible, we recommend using `[[gsl::suppress]]` for suppressing Microsoft C++ Code Analysis warnings. ### `[[msvc::flatten]]` -The Microsoft-specific attribute `[[msvc::flatten]]` is very similar to `[[msvc::forceinline_calls]]`, and can be used in the same places and in the same way. The difference is that `[[msvc::flatten]]` will `[[msvc::forceinline_calls]]` all calls in the scope it's applied to recursively, until no calls are left. This may have consequences for the resulting code size growth of the function or the throughput of the compiler, which you must manage manually. +The Microsoft-specific attribute `[[msvc::flatten]]` is similar to `[[msvc::forceinline_calls]]`, and can be used in the same places and in the same way. The difference is that `[[msvc::flatten]]` will `[[msvc::forceinline_calls]]` all calls in the scope it's applied to recursively, until no calls are left. This may have consequences for the resulting code size growth of the function or the throughput of the compiler, which you must manage manually. ### `[[msvc::forceinline]]` @@ -176,12 +176,12 @@ The `[[msvc::musttail]]` attribute, introduced in [MSVC Build Tools version 14.5 - The calling conventions must be compatible. - The tail call must be the final action in the calling function. - The callee can't use more stack space than the calling function. -- If more than four integer parameters are passed, the calling function must allocate enough stack space for those additional arguments. +- If more than four integer parameters are passed, the calling function must allocate enough stack space for the other arguments. - Compile with `/O2` or `/O2 /GL` optimization level. #### Example -Tail calls are a compiler optimization that is possible when a function call is the last action performed before returning. Instead of creating a new stack frame to call the function, the current function's stack frame is reused. This reduces stack usage and improves performance—especially in recursive scenarios. +Tail calls are a compiler optimization that's possible when a function call is the last action performed before returning. Instead of creating a new stack frame to call the function, the current function's stack frame is reused. This reduces stack usage and improves performance—especially in recursive scenarios. In the following code, the `[[msvc::musttail]]` attribute applied to `return increment(x)` causes control to transfer directly to `increment`. When `increment` reaches the `return x+1;` statement, its result is provided directly to the caller of `incrementIfPositive`, that is `main`. This replaces inlining `increment` into `incrementIfPositive` or calling `increment` from `incrementIfPositive` and returning to `incrementIfPositive` before returning to `main`. The tail call optimization eliminates the need for `incrementIfPositive` to regain control after `increment` finishes. This is a performance optimization that reduces stack usage, especially useful in recursive scenarios. diff --git a/docs/preprocessor/warning.md b/docs/preprocessor/warning.md index bf27aa6d461..995801d066b 100644 --- a/docs/preprocessor/warning.md +++ b/docs/preprocessor/warning.md @@ -44,8 +44,8 @@ However, when the **`justification`** field is present, only one warning number #pragma warning( disable : 4507, justification : "This warning is disabled" ) ``` -The **`justification`** fields allows you to explain why a warning is being disabled or -suppressed. The **`justification`** field is only supported for the **`disable`** and **`suppress`** *`warning-specifier`*. This value will appear in the Static Analysis Results Interchange Format ([SARIF](https://sarif.info/)) output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. To generate a SARIF file, use the `/analyze:log:format:sarif` compiler option. +Use the **`justification`** field to explain why a warning is being disabled or +suppressed. The **`justification`** field is only supported for the **`disable`** and **`suppress`** *`warning-specifier`*. The justification appears in the Static Analysis Results Interchange Format ([SARIF](https://sarif.info/)) output when the `/analyze:log:includesuppressed` option is specified. Its value is a UTF-8 encoded narrow string literal. To generate a SARIF file, use the `/analyze:log:format:sarif` compiler option. This directive is functionally equivalent to the following code: @@ -118,8 +118,8 @@ When you write header files, you can use `push` and `pop` to guarantee that warn **Choosing between `#pragma warning` and `[[gsl::suppress]]`** Both `#pragma warning(suppress)` and `[[gsl::suppress]]` offer fine-grained control over warning suppression: -- `[[gsl::suppress]]` only suppresses warnings emitted by Microsoft C++ Code Analysis. Use it with the C++ Core Guidelines checks which can be applied to a scope or a specific declaration. -- `#pragma warning(suppress)` can be used for any compiler warning. It’s particularly useful when you need to suppress a warning in a specific code block without altering the code’s structure significantly. +- `[[gsl::suppress]]` only suppresses warnings emitted by Microsoft C++ Code Analysis. Use it with the C++ Core Guidelines checks, which can be applied to a scope or a specific declaration. +- `#pragma warning(suppress)` can be used for any compiler warning. It’s useful when you need to suppress a warning in a specific code block without altering the code’s structure significantly. Whenever possible, we recommend using [`[[gsl::suppress]]`](../cpp/attributes.md#gslsuppresstag--justification-narrow-string-literal) for suppressing Microsoft C++ Code Analysis warnings. From 798895c3379882a8da75af67445a4c00132bf746 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 27 Feb 2026 18:44:22 -0800 Subject: [PATCH 355/619] edits --- docs/cpp/attributes.md | 2 +- docs/preprocessor/warning.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md index d52e5575048..84be79ffc4b 100644 --- a/docs/cpp/attributes.md +++ b/docs/cpp/attributes.md @@ -112,7 +112,7 @@ Both `#pragma warning(suppress)` and `[[gsl::suppress]]` offer fine-grained cont - `[[gsl::suppress]]` only suppresses warnings emitted by Microsoft C++ Code Analysis. Use it with the C++ Core Guidelines checks, which can be applied to a scope or a specific declaration. - `#pragma warning(suppress)` can be used for any compiler warning. It’s useful when you need to suppress a warning in a specific code block without altering the code’s structure significantly. -Whenever possible, we recommend using `[[gsl::suppress]]` for suppressing Microsoft C++ Code Analysis warnings. +Whenever possible, use `[[gsl::suppress]]` for suppressing Microsoft C++ Code Analysis warnings. ### `[[msvc::flatten]]` diff --git a/docs/preprocessor/warning.md b/docs/preprocessor/warning.md index 995801d066b..4a731996c3e 100644 --- a/docs/preprocessor/warning.md +++ b/docs/preprocessor/warning.md @@ -30,7 +30,7 @@ The following warning-specifier parameters are available. | `error` | Report the specified warnings as errors. | | `once` | Display the specified message(s) only one time. | | `suppress` | Pushes the current state of the pragma on the stack, disables the specified warning for the next line, and then pops the warning stack so that the pragma state is reset. | -| **`justification`** is optional and was introduced in Visual Studio 2022 version 17.14. | +| `justification` | Optional string describing the reason for disabling or suppressing the warning. Introduced in Visual Studio 2022 version 17.14. | The following code statement illustrates that a *`warning-number-list`* parameter can contain multiple warning numbers, and that multiple *`warning-specifier`* parameters can be specified in the same pragma directive. @@ -121,10 +121,10 @@ Both `#pragma warning(suppress)` and `[[gsl::suppress]]` offer fine-grained cont - `[[gsl::suppress]]` only suppresses warnings emitted by Microsoft C++ Code Analysis. Use it with the C++ Core Guidelines checks, which can be applied to a scope or a specific declaration. - `#pragma warning(suppress)` can be used for any compiler warning. It’s useful when you need to suppress a warning in a specific code block without altering the code’s structure significantly. -Whenever possible, we recommend using [`[[gsl::suppress]]`](../cpp/attributes.md#gslsuppresstag--justification-narrow-string-literal) for suppressing Microsoft C++ Code Analysis warnings. +Whenever possible, use [`[[gsl::suppress]]`](../cpp/attributes.md#gslsuppresstag--justification-narrow-string-literal) for suppressing Microsoft C++ Code Analysis warnings. For more information about compiler options that help you suppress warnings, see [`/FI`](../build/reference/fi-name-forced-include-file.md) and [`/w`](../build/reference/compiler-option-warning-level.md). ## See also -[Pragma directives and the `__pragma` and `_Pragma` keywords](./pragma-directives-and-the-pragma-keyword.md) \ No newline at end of file +[Pragma directives and the `__pragma` and `_Pragma` keywords](pragma-directives-and-the-pragma-keyword.md) \ No newline at end of file From 8eacd332b24ae3bf6d80b2eb39240f4c1b4f33ed Mon Sep 17 00:00:00 2001 From: paulth1 <42621139+paulth1@users.noreply.github.com> Date: Wed, 4 Mar 2026 11:27:01 -0800 Subject: [PATCH 356/619] edit pass: redistributing-microsoft-c++-files --- docs/windows/latest-supported-vc-redist.md | 2 +- docs/windows/redist-version-auditing.md | 4 ++-- docs/windows/redistributing-the-mfc-library.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 88f43722b4e..a70485b2089 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -57,7 +57,7 @@ Unlike older versions of Visual Studio that have infrequent redistributable upda | X86 | [https://aka.ms/vc14/vc_redist.x86.exe](https://aka.ms/vc14/vc_redist.x86.exe) | Permalink for latest supported x86 version. | | X64 | [https://aka.ms/vc14/vc_redist.x64.exe](https://aka.ms/vc14/vc_redist.x64.exe) | Permalink for latest supported x64 version. The X64 Redistributable Package contains both ARM64 and X64 binaries. This package makes it easy to install required Visual C++ ARM64 binaries when the X64 Redistributable is installed on an ARM64 device. | -Download other versions, including long-term servicing release channel versions, from [my.visualstudio.com](https://my.visualstudio.com/). +Download other versions, including long-term servicing channel (LTSC) versions, from [my.visualstudio.com](https://my.visualstudio.com/). ### Notes diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index b48363f1375..909849f681a 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -26,7 +26,7 @@ This article provides the steps to manually enable NTFS file auditing and review Object access must be enabled before you enable file-level auditing: -1. Select **Windows**+**R** to open the **Run** dialog. Then enter **gpedit.msc** and select **Enter** to open **Local Group Policy Editor**. +1. Select **Windows**+**R** to open the **Run** dialog. Then enter `gpedit.msc` and select **Enter** to open **Local Group Policy Editor**. 1. Go to **Computer Configuration** > **Windows Settings** > **Security Settings** > **Advanced Audit Policy Configuration** > **System Audit Policies** > **Object Access**. 1. Double-click **Audit File System**. In the **Audit File System Properties** dialog, select **Configure the following audit events** > **Success** > **OK**. 1. Close **Local Group Policy Editor**. @@ -55,7 +55,7 @@ The audit rule is now enabled for the file. NTFS file auditing generates [Event 4663: An attempt was made to access an object](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663) for each file that includes the audit permission and is accessed by a process. -1. Select **Windows**+**R** to open the **Run** dialog. Then enter **eventvwr.msc** and select **Enter** to open **Event Viewer**. +1. Select **Windows**+**R** to open the **Run** dialog. Then enter `eventvwr.msc` and select **Enter** to open **Event Viewer**. 1. Go to the **Security** logs in the **Event Viewer** by expanding **Windows Logs** > **Security**. The results pane lists security events. 1. Find the audit events by choosing **Filter Current Log...** in the **Actions** pane. To narrow down the events to **Event ID 4663 (Audit Success for the File System Category)**, enter **4663** in the **Includes/Excludes Event IDs** text box. diff --git a/docs/windows/redistributing-the-mfc-library.md b/docs/windows/redistributing-the-mfc-library.md index 35a09bf7b97..b069e2558c4 100644 --- a/docs/windows/redistributing-the-mfc-library.md +++ b/docs/windows/redistributing-the-mfc-library.md @@ -24,13 +24,13 @@ If your app is built by using an earlier version of the MFC Library, you must re If you statically link your application to MFC (in the **Property Pages** dialog, on the **General** tab, select **Use MFC in a Static Library**), you don't have to redistribute an MFC DLL. Although static linking might work for testing and internal deployment of applications, we recommend that you don't use it to redistribute MFC. For more information about the recommended strategies for deploying Visual C++ libraries, see [Choose a deployment method](choosing-a-deployment-method.md). -If your application uses the MFC classes that implement the WebBrowser control (for example, [CHtmlView class](../mfc/reference/chtmlview-class.md) or [CHtmlEditView class](../mfc/reference/chtmleditview-class.md)), we recommend that you also install the most current version of Internet Explorer so that the target computer has the most current common control files. (At a minimum, Internet Explorer 4.0 is required.) Information about how to install Internet Explorer components is available in "Article 185375: How to Create a Single EXE Install of Internet Explorer" on the Microsoft Support website. +If your application uses the MFC classes that implement the WebBrowser control (for example, [CHtmlView class](../mfc/reference/chtmlview-class.md) or [CHtmlEditView class](../mfc/reference/chtmleditview-class.md)), we recommend that you also install the most current version of Internet Explorer so that the target computer has the most current common control files. (At a minimum, Internet Explorer 4.0 is required.) Information about how to install Internet Explorer components is available in [Article 185375: How to Create a Single EXE Install of Internet Explorer](https://helparchive.huntertur.net/document/95742). If your application uses the MFC database classes (for example, [CRecordset class](../mfc/reference/crecordset-class.md) and [CRecordView class](../mfc/reference/crecordview-class.md)), you must redistribute Open Database Connectivity (ODBC) and any ODBC drivers that your application uses. If your MFC application uses Windows Forms controls, you must redistribute `mfcmifc80.dll` with your application. This DLL is a strong-name-signed .NET assembly. You can redistribute it with an application in its application local folder. You can also deploy it to the Global Assembly Cache (GAC) by using the [Gacutil.exe (Global Assembly Cache Tool)](/dotnet/framework/tools/gacutil-exe-gac-tool). -If you redistribute an MFC DLL, make sure to redistribute the retail version and not the debug version. Debug versions of the DLLs aren't redistributable. The names of debug versions of the MFC DLLs end with a "d," for example, `Mfc140d.dll`. +If you redistribute an MFC DLL, make sure to redistribute the retail version and not the debug version. Debug versions of the DLLs aren't redistributable. The names of debug versions of the MFC DLLs end with a "d", for example, `Mfc140d.dll`. You can redistribute MFC by using either `VCRedist_*architecture*.exe` or merge modules that are installed with Visual Studio. You can also deploy the MFC DLL to the same folder as your application. For more information about how to redistribute MFC, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). From cb62204dee003d096b51f86c17e916a0200b4304 Mon Sep 17 00:00:00 2001 From: "Michael B. Price" Date: Thu, 5 Mar 2026 08:45:43 -0600 Subject: [PATCH 357/619] Implementing the branding changes for the Copilot modernization feature, which drops the 'app' portion of the name. --- ...on-cpp.md => copilot-modernization-cpp.md} | 30 +++++++++--------- ...=> copilot-modernization-context-menu.png} | Bin ...g => enable-copilot-modernization-cpp.png} | Bin ...ng => modernization-cmake-ice-breaker.png} | Bin ... => modernization-msbuild-ice-breaker.png} | Bin docs/porting/toc.yml | 4 +-- .../visual-cpp-porting-and-upgrading-guide.md | 2 +- 7 files changed, 18 insertions(+), 18 deletions(-) rename docs/porting/{copilot-app-modernization-cpp.md => copilot-modernization-cpp.md} (65%) rename docs/porting/media/{copilot-app-modernization-context-menu.png => copilot-modernization-context-menu.png} (100%) rename docs/porting/media/{enable-copilot-app-modernization-cpp.png => enable-copilot-modernization-cpp.png} (100%) rename docs/porting/media/{app-modernization-cmake-ice-breaker.png => modernization-cmake-ice-breaker.png} (100%) rename docs/porting/media/{app-modernization-msbuild-ice-breaker.png => modernization-msbuild-ice-breaker.png} (100%) diff --git a/docs/porting/copilot-app-modernization-cpp.md b/docs/porting/copilot-modernization-cpp.md similarity index 65% rename from docs/porting/copilot-app-modernization-cpp.md rename to docs/porting/copilot-modernization-cpp.md index 9d8ab2b609b..aed4b2a0eac 100644 --- a/docs/porting/copilot-app-modernization-cpp.md +++ b/docs/porting/copilot-modernization-cpp.md @@ -1,7 +1,7 @@ --- -title: "Modernize your C++ project with GitHub Copilot app modernization" -description: "Instructions on effectively using GitHub Copilot app modernization in your C++ projects" -ms.date: 01/23/2026 +title: "Modernize your C++ project with GitHub Copilot modernization" +description: "Instructions on effectively using GitHub Copilot modernization in your C++ projects" +ms.date: 03/12/2026 ms.topic: upgrade-and-migration-article author: michaelbprice ms.author: miprice @@ -9,10 +9,10 @@ ms.author: miprice # Using GitHub Copilot app modernization for C++ -GitHub Copilot app modernization for C++ helps you upgrade C++ projects to newer MSVC Build Tools versions. If necessary, Copilot will upgrade your project's settings to use the latest MSVC, and then conduct a thorough assessment of the impact of those changes after executing a build. It develops a plan on how to address each identified problem. Once you approve the plan, the agent completes a sequence of tasks and validates that any changes resolved the identified problems. If there remains work to be done, the agent continues iterating until the problems are resolved or you discontinue the conversation. +GitHub Copilot modernization for C++ helps you upgrade C++ projects to newer MSVC Build Tools versions. If necessary, Copilot will upgrade your project's settings to use the latest MSVC, and then conduct a thorough assessment of the impact of those changes after executing a build. It develops a plan on how to address each identified problem. Once you approve the plan, the agent completes a sequence of tasks and validates that any changes resolved the identified problems. If there remains work to be done, the agent continues iterating until the problems are resolved or you discontinue the conversation. > [!NOTE] -> GitHub Copilot app modernization for C++ is currently in preview. +> GitHub Copilot modernization for C++ is currently in preview. ## Requirements @@ -20,28 +20,28 @@ GitHub Copilot app modernization for C++ helps you upgrade C++ projects to newer - A GitHub Copilot account - A MSBuild-based codebase (`.sln`, `.vcxproj`) OR a CMake-based codebase -## Enable GitHub Copilot app modernization for C++ +## Enable GitHub Copilot modernization for C++ -GitHub Copilot app modernization for C++ is enabled by default. To disable or explicitly enable the feature, follow these steps. +GitHub Copilot modernization for C++ is enabled by default. To disable or explicitly enable the feature, follow these steps. 1. From Visual Studio, select **Tools > Options...** to open the **Options** window. 1. Navigate to **All Settings > GitHub > Copilot > C/C++**. -1. Select (to enable) or clear (to disable) the checkbox for **Enable GitHub Copilot app modernization for C++ (preview)**. +1. Select (to enable) or clear (to disable) the checkbox for **Enable GitHub Copilot modernization for C++ (preview)**. 1. Restart Visual Studio for the setting change to take effect. -:::image type="content" source="media/enable-copilot-app-modernization-cpp.png" alt-text="Screenshot of Visual Studio Options dialog. GitHub > Copilot > C/C++ settings are visible. The app modernization for C++ checkbox is enabled."::: +:::image type="content" source="media/enable-copilot-modernization-cpp.png" alt-text="Screenshot of Visual Studio Options dialog. GitHub > Copilot > C/C++ settings are visible. The modernization for C++ checkbox is enabled."::: -## Upgrade your codebase by using GitHub Copilot app modernization for C++ +## Upgrade your codebase by using GitHub Copilot modernization for C++ This section describes how to start the Modernize agent and the stages it goes through to upgrade your codebase. ### Start the Modernize agent -GitHub Copilot app modernization is an agent that operates inside the GitHub Copilot Chat window. You can start the agent in any of the following ways: +GitHub Copilot modernization is an agent that operates inside the GitHub Copilot Chat window. You can start the agent in any of the following ways: - **From the Solution Explorer context menu**: Right-click on the solution or a loaded project in the Solution Explorer, and choose **Modernize** from the context menu. This automatically launches a GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. -:::image type="content" source="media/copilot-app-modernization-context-menu.png" alt-text="Screenshot of Visual Studio Solution Explorer showing a right-click context menu with Modernize selected to start the Copilot agent."::: +:::image type="content" source="media/copilot-modernization-context-menu.png" alt-text="Screenshot of Visual Studio Solution Explorer showing a right-click context menu with Modernize selected to start the Copilot agent."::: - **From GitHub Copilot Chat**: Open the GitHub Copilot Chat Window by selecting **View > GitHub Copilot Chat**. After the GitHub Copilot Chat window opens, mention `@Modernize` in a prompt to activate the Modernize agent. For example, type this prompt: @@ -49,7 +49,7 @@ GitHub Copilot app modernization is an agent that operates inside the GitHub Cop #### For MSBuild-based codebases targeting an earlier version of MSVC Build Tools -The first time that you load a `.vcxproj` project that targets an earlier version of the MSVC Build Tools, you see an option to [upgrade project settings to use a newer version of the MSVC Build Tools](/visualstudio/install/setup-assistant). If you retarget any of your projects to a new version of MSVC Build Tools and GitHub Copilot app modernization for C++ is enabled, you receive an infobar in Visual Studio prompting you to use GitHub Copilot app modernization for C++ to resolve any newly introduced build problems. Selecting **Run GitHub Copilot app modernization for C++** launches the GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. +The first time that you load a `.vcxproj` project that targets an earlier version of the MSVC Build Tools, you see an option to [upgrade project settings to use a newer version of the MSVC Build Tools](/visualstudio/install/setup-assistant). If you retarget any of your projects to a new version of MSVC Build Tools and GitHub Copilot app modernization for C++ is enabled, you receive an infobar in Visual Studio prompting you to use GitHub Copilot modernization for C++ to resolve any newly introduced build problems. Selecting **Run GitHub Copilot modernization for C++** launches the GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. ### Start the upgrade @@ -70,12 +70,12 @@ Once the Modernize agent is active, you can instruct it via a prompt to upgrade :::row::: :::column::: -:::image type="content" source="media/app-modernization-msbuild-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to App Modernization experience and Upgrade MSVC Build Tools to the latest version is highlighted."::: +:::image type="content" source="media/modernization-msbuild-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to Modernize experience and Upgrade MSVC Build Tools to the latest version is highlighted."::: :::column-end::: :::column::: -:::image type="content" source="media/app-modernization-cmake-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to App Modernization experience and Resolve build issues by migrating to modern alternatives is highlighted"::: +:::image type="content" source="media/modernization-cmake-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to Modernize experience and Resolve build issues by migrating to modern alternatives is highlighted"::: :::column-end::: :::row-end::: diff --git a/docs/porting/media/copilot-app-modernization-context-menu.png b/docs/porting/media/copilot-modernization-context-menu.png similarity index 100% rename from docs/porting/media/copilot-app-modernization-context-menu.png rename to docs/porting/media/copilot-modernization-context-menu.png diff --git a/docs/porting/media/enable-copilot-app-modernization-cpp.png b/docs/porting/media/enable-copilot-modernization-cpp.png similarity index 100% rename from docs/porting/media/enable-copilot-app-modernization-cpp.png rename to docs/porting/media/enable-copilot-modernization-cpp.png diff --git a/docs/porting/media/app-modernization-cmake-ice-breaker.png b/docs/porting/media/modernization-cmake-ice-breaker.png similarity index 100% rename from docs/porting/media/app-modernization-cmake-ice-breaker.png rename to docs/porting/media/modernization-cmake-ice-breaker.png diff --git a/docs/porting/media/app-modernization-msbuild-ice-breaker.png b/docs/porting/media/modernization-msbuild-ice-breaker.png similarity index 100% rename from docs/porting/media/app-modernization-msbuild-ice-breaker.png rename to docs/porting/media/modernization-msbuild-ice-breaker.png diff --git a/docs/porting/toc.yml b/docs/porting/toc.yml index 934a9ad9859..1c743b4bc3d 100644 --- a/docs/porting/toc.yml +++ b/docs/porting/toc.yml @@ -9,8 +9,8 @@ items: href: ../porting/overview-of-potential-upgrade-issues-visual-cpp.md - name: Upgrade your code to the Universal CRT href: ../porting/upgrade-your-code-to-the-universal-crt.md - - name: Modernize your C++ project with GitHub Copilot app modernization - href: ../porting/copilot-app-modernization-cpp.md + - name: Modernize your C++ project with GitHub Copilot modernization + href: ../porting/copilot-modernization-cpp.md - name: Update WINVER and _WIN32_WINNT href: ../porting/modifying-winver-and-win32-winnt.md - name: Fix your dependencies on library internals diff --git a/docs/porting/visual-cpp-porting-and-upgrading-guide.md b/docs/porting/visual-cpp-porting-and-upgrading-guide.md index 64aa8a53e5e..3035453a01a 100644 --- a/docs/porting/visual-cpp-porting-and-upgrading-guide.md +++ b/docs/porting/visual-cpp-porting-and-upgrading-guide.md @@ -61,7 +61,7 @@ ms.author: twhitney - [⬆️ Upgrading C++ Projects to Visual Studio 2026](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/) - [⬆️ Upgrade projects from earlier versions](upgrading-projects-from-earlier-versions-of-visual-cpp.md) -- [🤖 Upgrade with an AI agent (preview)](copilot-app-modernization-cpp.md) +- [🤖 Upgrade with an AI agent (preview)](copilot-modernization-cpp.md) - [🛠️ IDE tools for upgrading C++ code](ide-tools-for-upgrading-code.md) - [🔄 Upgrade to Universal CRT](upgrade-your-code-to-the-universal-crt.md) - [🔧 Update WINVER and _WIN32_WINNT](modifying-winver-and-win32-winnt.md) From 0ad07422acefa9b2aec755d606772d495f065a22 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Thu, 5 Mar 2026 14:33:00 -0800 Subject: [PATCH 358/619] Update C++ standard library header files documentation Removed the headers that we haven't implemented yet so that we don't convey the impression that they are in the product. --- .../cpp-standard-library-header-files.md | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/docs/standard-library/cpp-standard-library-header-files.md b/docs/standard-library/cpp-standard-library-header-files.md index 0f56590a4ea..969be33da60 100644 --- a/docs/standard-library/cpp-standard-library-header-files.md +++ b/docs/standard-library/cpp-standard-library-header-files.md @@ -1,7 +1,7 @@ --- title: "C++ standard library header files" description: "C++ standard library header files, categorized" -ms.date: 06/22/2025 +ms.date: 03/05/2026 helpviewer_keywords: ["header files, C++ Standard Library", "C++ Standard Library, header files"] --- # C++ standard library header files @@ -18,25 +18,25 @@ Header files for the C++ standard library and extensions, by category. | Atomic operations | [``](atomic.md)11 | | C library wrappers | [``](cassert.md), [``](ccomplex.md)11 a b, [``](cctype.md), [``](cerrno.md), [``](cfenv.md)11, [``](cfloat.md), [``](cinttypes.md)11, [``](ciso646.md)b, [``](climits.md), [``](clocale.md), [``](cmath.md), [``](csetjmp.md), [``](csignal.md), [``](cstdalign.md)11 a b, [``](cstdarg.md), [``](cstdbool.md)11 a b, [``](cstddef.md), [``](cstdint.md)11, [``](cstdio.md), [``](cstdlib.md), [``](cstring.md), [``](ctgmath.md)11 a b, [``](ctime.md), [``](cuchar.md)11, [``](cwchar.md), [``](cwctype.md) | | Concepts | ``20 | -| [Containers](stl-containers.md) | ``26 | -| Sequence containers | [``](array.md)11, [``](deque.md), [``](forward-list.md)11, ``26, [``](list.md), [``](vector.md) | +| [Containers](stl-containers.md) | | +| Sequence containers | [``](array.md)11, [``](deque.md), [``](forward-list.md)11, [``](list.md), [``](vector.md) | | Ordered associative containers| [``](map.md), [``](set.md) | | Unordered associative containers | [``](unordered-map.md)11, [``](unordered-set.md)11 | -| Container adaptors | ``23, ``23, [``](queue.md), [``](stack.md) | +| Container adaptors | [``](queue.md), [``](stack.md) | | Container views | ``23, [``](span.md)20 | -| Diagnostics | ``26, ``23 | +| Diagnostics | ``23 | | [Errors and exception handling](../cpp/errors-and-exception-handling-modern-cpp.md) | [``](cassert.md), [``](exception.md), [``](stdexcept.md), [``](system-error.md)11 | | General utilities | [``](any.md)17, [``](bit.md)20, [``](bitset.md), [``](cstdlib.md), [``](execution.md)17, ``23, [``](functional.md), [``](memory.md), [``](memory-resource.md)17, [``](optional.md)17, [``](ratio.md)11, [``](scoped-allocator.md)11, [``](tuple.md)11, [``](type-traits.md)11, [``](typeindex.md)11, [``](utility.md), [``](variant.md)17 | | [I/O and formatting](../text/string-and-i-o-formatting-modern-cpp.md) | [``](cinttypes.md)11, [``](cstdio.md), [``](filesystem.md)17, ``20, [``](fstream.md), [``](iomanip.md), [``](ios.md), [``](iosfwd.md), [``](iostream.md), [``](istream.md), [``](ostream.md), ``23, ``23, [``](sstream.md), [``](streambuf.md), [``](strstream.md)c, ``20 | | Iterators | [``](iterator.md) | -| Language support | [``](cfloat.md), [``](climits.md), [``](codecvt.md)11 a, ``20, ``26, ``20, [``](csetjmp.md), [``](csignal.md), [``](cstdarg.md), [``](cstddef.md), [``](cstdint.md)11, [``](cstdlib.md), [``](exception.md), [``](initializer-list.md)11, [``](limits.md), [``](new.md), ``20, ``23, [``](typeinfo.md), ``20 | +| Language support | [``](cfloat.md), [``](climits.md), [``](codecvt.md)11 a, ``20, ``20, [``](csetjmp.md), [``](csignal.md), [``](cstdarg.md), [``](cstddef.md), [``](cstdint.md)11, [``](cstdlib.md), [``](exception.md), [``](initializer-list.md)11, [``](limits.md), [``](new.md), ``20, ``23, [``](typeinfo.md), ``20 | | Localization | [``](clocale.md), [``](codecvt.md)11 a, [``](cvt-wbuffer.md), [``](cvt-wstring.md), [``](locale.md) | -| Math and numerics | [``](bit.md)20, [``](cfenv.md)11, [``](cmath.md), [``](complex.md), [``](cstdlib.md), [``](limits.md), ``26, ``20, [``](numeric.md), [``](random.md)11, [``](ratio.md)11, ``26, [``](valarray.md) | -| [Memory management](../cpp/smart-pointers-modern-cpp.md) | [``](allocators-header.md), ``26, [``](memory.md), [``](memory-resource.md)17, [``](new.md), [``](scoped-allocator.md)11 | -| Multithreading | [``](atomic.md)11, ``20, [``](condition-variable.md)11, [``](future.md)11, ``20, [``](mutex.md)11, ``26, ``20, [``](shared-mutex.md)14, ``20, [``](thread.md)11 | +| Math and numerics | [``](bit.md)20, [``](cfenv.md)11, [``](cmath.md), [``](complex.md), [``](cstdlib.md), [``](limits.md), ``20, [``](numeric.md), [``](random.md)11, [``](ratio.md)11, [``](valarray.md) | +| [Memory management](../cpp/smart-pointers-modern-cpp.md) | [``](allocators-header.md), [``](memory.md), [``](memory-resource.md)17, [``](new.md), [``](scoped-allocator.md)11 | +| Multithreading | [``](atomic.md)11, ``20, [``](condition-variable.md)11, [``](future.md)11, ``20, [``](mutex.md)11, ``20, [``](shared-mutex.md)14, ``20, [``](thread.md)11 | | Ranges | ``23, [``](ranges.md)20 | | Regular expressions | [``](regex.md)11 | -| Strings and character data | [``](charconv.md)17, [``](cctype.md), [``](cstdlib.md), [``](cstring.md), [``](cuchar.md)11, [``](cwchar.md), [``](cwctype.md), [``](regex.md)11, [``](string.md), [``](string-view.md)17, ``26 | +| Strings and character data | [``](charconv.md)17, [``](cctype.md), [``](cstdlib.md), [``](cstring.md), [``](cuchar.md)11, [``](cwchar.md), [``](cwctype.md), [``](regex.md)11, [``](string.md), [``](string-view.md)17 | | Time | [``](chrono.md)11, [``](ctime.md) | 11 Added in the C++11 standard.\ @@ -44,7 +44,6 @@ Header files for the C++ standard library and extensions, by category. 17 Added in the C++17 standard.\ 20 Added in the C++20 standard.\ 23 Added in the C++23 standard.\ -26 Added in the draft C++26 standard.\ a Deprecated in the C++17 standard.\ b Removed in the C++20 standard.\ c Deprecated in the C++98 standard. From 4c2d3569c1bb3893bbcad1cfd14a511f2d4c82c7 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Mar 2026 16:16:35 -0800 Subject: [PATCH 359/619] removing low value content --- .openpublishing.redirection.json | 65 ++++++++++++++ .../standard-library/container-class-begin.md | 4 - .../standard-library/container-class-clear.md | 4 - .../container-class-const-iterator.md | 4 - .../container-class-const-reference.md | 4 - .../container-class-const-reverse-iterator.md | 4 - .../container-class-difference-type.md | 4 - .../standard-library/container-class-empty.md | 4 - docs/standard-library/container-class-end.md | 4 - .../standard-library/container-class-erase.md | 4 - .../container-class-iterator.md | 4 - .../container-class-max-size.md | 4 - .../container-class-rbegin.md | 4 - .../container-class-reference.md | 4 - docs/standard-library/container-class-rend.md | 4 - .../container-class-reverse-iterator.md | 4 - .../container-class-size-type.md | 4 - docs/standard-library/container-class-size.md | 4 - docs/standard-library/container-class-swap.md | 4 - .../container-class-value-type.md | 4 - .../operator-equality-sample-container.md | 31 ------- .../operator-greater-or-equal.md | 2 +- .../operator-greater-than-sample-container.md | 31 ------- docs/standard-library/operator-inequality.md | 2 +- ...operator-less-or-equal-sample-container.md | 31 ------- .../operator-less-than-sample-container.md | 33 ------- .../sample-container-class.md | 73 --------------- .../sample-container-classes.md | 9 -- .../sample-container-member-functions.md | 9 -- .../sample-container-members.md | 42 --------- .../sample-container-operators.md | 9 -- ...ontainer-specialized-template-functions.md | 9 -- .../sample-container-typedefs.md | 9 -- docs/standard-library/sample-container.md | 19 ---- docs/standard-library/stl-containers.md | 1 - .../standard-library/swap-sample-container.md | 27 ------ docs/standard-library/toc.yml | 89 ------------------- 37 files changed, 67 insertions(+), 500 deletions(-) delete mode 100644 docs/standard-library/operator-equality-sample-container.md delete mode 100644 docs/standard-library/operator-greater-than-sample-container.md delete mode 100644 docs/standard-library/operator-less-or-equal-sample-container.md delete mode 100644 docs/standard-library/operator-less-than-sample-container.md delete mode 100644 docs/standard-library/sample-container-class.md delete mode 100644 docs/standard-library/sample-container-classes.md delete mode 100644 docs/standard-library/sample-container-member-functions.md delete mode 100644 docs/standard-library/sample-container-members.md delete mode 100644 docs/standard-library/sample-container-operators.md delete mode 100644 docs/standard-library/sample-container-specialized-template-functions.md delete mode 100644 docs/standard-library/sample-container-typedefs.md delete mode 100644 docs/standard-library/sample-container.md delete mode 100644 docs/standard-library/swap-sample-container.md diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index dc663314250..325a1fbbfe8 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -13764,6 +13764,71 @@ "source_path": "docs/overview/whats-new-cpp-docs.md", "redirect_url": "../../cpp/overview/what-s-new-for-visual-cpp-in-visual-studio", "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/sample-container.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/sample-container-class.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/sample-container-classes.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/sample-container-member-functions.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/sample-container-members.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/sample-container-operators.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/sample-container-specialized-template-functions.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/sample-container-typedefs.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/operator-equality-sample-container.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/operator-greater-than-sample-container.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/operator-less-or-equal-sample-container.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/operator-less-than-sample-container.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/swap-sample-container.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false } ] } \ No newline at end of file diff --git a/docs/standard-library/container-class-begin.md b/docs/standard-library/container-class-begin.md index 18f29cf3dc1..c000652ac6a 100644 --- a/docs/standard-library/container-class-begin.md +++ b/docs/standard-library/container-class-begin.md @@ -19,7 +19,3 @@ const_iterator begin() const; iterator begin(); ``` - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-clear.md b/docs/standard-library/container-class-clear.md index ff6627e9ed9..f737e316df8 100644 --- a/docs/standard-library/container-class-clear.md +++ b/docs/standard-library/container-class-clear.md @@ -17,7 +17,3 @@ Calls [erase](../standard-library/container-class-erase.md)([begin](../standard- ```cpp void clear(); ``` - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-const-iterator.md b/docs/standard-library/container-class-const-iterator.md index b54276698fb..5c9a22e01be 100644 --- a/docs/standard-library/container-class-const-iterator.md +++ b/docs/standard-library/container-class-const-iterator.md @@ -21,7 +21,3 @@ typedef T6 const_iterator; ## Remarks It is described here as a synonym for the unspecified type `T6`. - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-const-reference.md b/docs/standard-library/container-class-const-reference.md index 9c926215247..a135635ad5b 100644 --- a/docs/standard-library/container-class-const-reference.md +++ b/docs/standard-library/container-class-const-reference.md @@ -21,7 +21,3 @@ typedef T3 const_reference; ## Remarks It is described here as a synonym for the unspecified type `T3` (typically `Alloc::const_reference`). - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-const-reverse-iterator.md b/docs/standard-library/container-class-const-reverse-iterator.md index 274c0dae9c9..7a2d24653b4 100644 --- a/docs/standard-library/container-class-const-reverse-iterator.md +++ b/docs/standard-library/container-class-const-reverse-iterator.md @@ -21,7 +21,3 @@ typedef T8 const_reverse_iterator; ## Remarks It is described here as a synonym for the unspecified type `T8` (typically [reverse_iterator](../standard-library/container-class-reverse-iterator.md) <[const_iterator](../standard-library/container-class-const-iterator.md)`>`). - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-difference-type.md b/docs/standard-library/container-class-difference-type.md index 3a271d8bfd4..5321f438d6e 100644 --- a/docs/standard-library/container-class-difference-type.md +++ b/docs/standard-library/container-class-difference-type.md @@ -21,7 +21,3 @@ typedef T1 difference_type; ## Remarks It is described here as a synonym for the unspecified type `T1` (typically `Alloc::difference_type`). - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-empty.md b/docs/standard-library/container-class-empty.md index f4064bbd769..9c418bc5a3e 100644 --- a/docs/standard-library/container-class-empty.md +++ b/docs/standard-library/container-class-empty.md @@ -17,7 +17,3 @@ Returns **`true`** for an empty controlled sequence. ```cpp bool empty() const; ``` - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-end.md b/docs/standard-library/container-class-end.md index b5da84d78d4..9cbc722f31e 100644 --- a/docs/standard-library/container-class-end.md +++ b/docs/standard-library/container-class-end.md @@ -19,7 +19,3 @@ const_iterator end() const; iterator end(); ``` - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-erase.md b/docs/standard-library/container-class-erase.md index 2101b201e4d..8a5a329c95c 100644 --- a/docs/standard-library/container-class-erase.md +++ b/docs/standard-library/container-class-erase.md @@ -28,7 +28,3 @@ iterator erase( The first member function removes the element of the controlled sequence pointed to by *_Where*. The second member function removes the elements of the controlled sequence in the range [`first`, `last`). Both return an iterator that designates the first element remaining beyond any elements removed, or [end](../standard-library/container-class-end.md) if no such element exists. The member functions throw an exception only if a copy operation throws an exception. - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-iterator.md b/docs/standard-library/container-class-iterator.md index 1b778bdd2a4..96bc0358f8d 100644 --- a/docs/standard-library/container-class-iterator.md +++ b/docs/standard-library/container-class-iterator.md @@ -21,7 +21,3 @@ typedef T5 iterator; ## Remarks It is described here as a synonym for the unspecified type `T5`. An object of type `iterator` can be cast to an object of type [const_iterator](../standard-library/container-class-const-iterator.md). - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-max-size.md b/docs/standard-library/container-class-max-size.md index 7cf4e3fa353..65467c16766 100644 --- a/docs/standard-library/container-class-max-size.md +++ b/docs/standard-library/container-class-max-size.md @@ -17,7 +17,3 @@ Returns the length of the longest sequence that the object can control, in const ```cpp size_type max_size() const; ``` - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-rbegin.md b/docs/standard-library/container-class-rbegin.md index b4fb7e06e48..0bfc8015d79 100644 --- a/docs/standard-library/container-class-rbegin.md +++ b/docs/standard-library/container-class-rbegin.md @@ -19,7 +19,3 @@ const_reverse_iterator rbegin() const; reverse_iterator rbegin(); ``` - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-reference.md b/docs/standard-library/container-class-reference.md index d595948cd5b..4c8c14bcc39 100644 --- a/docs/standard-library/container-class-reference.md +++ b/docs/standard-library/container-class-reference.md @@ -21,7 +21,3 @@ typedef T2 reference; ## Remarks It is described here as a synonym for the unspecified type `T2` (typically `Alloc::reference`). An object of type `reference` can be cast to an object of type [const_reference](../standard-library/container-class-const-reference.md). - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-rend.md b/docs/standard-library/container-class-rend.md index 82a170fc152..8177b3c9d62 100644 --- a/docs/standard-library/container-class-rend.md +++ b/docs/standard-library/container-class-rend.md @@ -19,7 +19,3 @@ const_reverse_iterator rend() const; reverse_iterator rend(); ``` - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-reverse-iterator.md b/docs/standard-library/container-class-reverse-iterator.md index 73a36729007..e745d77b961 100644 --- a/docs/standard-library/container-class-reverse-iterator.md +++ b/docs/standard-library/container-class-reverse-iterator.md @@ -21,7 +21,3 @@ typedef T7 reverse_iterator; ## Remarks It is described here as a synonym for the unspecified type `T7` (typically `reverse_iterator` **\<**[iterator](../standard-library/container-class-iterator.md)**>**). - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-size-type.md b/docs/standard-library/container-class-size-type.md index 458b57a0582..abc51b7b873 100644 --- a/docs/standard-library/container-class-size-type.md +++ b/docs/standard-library/container-class-size-type.md @@ -21,7 +21,3 @@ typedef T0 size_type; ## Remarks It is described here as a synonym for the unspecified type `T0` (typically `Alloc::size_type`). - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-size.md b/docs/standard-library/container-class-size.md index 07a0e4ea210..cf379937eb4 100644 --- a/docs/standard-library/container-class-size.md +++ b/docs/standard-library/container-class-size.md @@ -17,7 +17,3 @@ Returns the length of the controlled sequence, in constant time regardless of th ```cpp size_type size() const; ``` - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-swap.md b/docs/standard-library/container-class-swap.md index 1e976af3713..afd4d7b166a 100644 --- a/docs/standard-library/container-class-swap.md +++ b/docs/standard-library/container-class-swap.md @@ -23,7 +23,3 @@ void swap(Container& right); ## Remarks If `*this.get_allocator == right.get_allocator`, it does a swap in constant time. Otherwise, it performs element assignments and constructor calls proportional to the number of elements in the two controlled sequences. - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/container-class-value-type.md b/docs/standard-library/container-class-value-type.md index 9ff7647669d..512f0d9ba0b 100644 --- a/docs/standard-library/container-class-value-type.md +++ b/docs/standard-library/container-class-value-type.md @@ -21,7 +21,3 @@ typedef T4 value_type; ## Remarks It is described here as a synonym for the unspecified type `T4` (typically `Alloc::value_type`). - -## See also - -[Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/operator-equality-sample-container.md b/docs/standard-library/operator-equality-sample-container.md deleted file mode 100644 index 63715e0da1d..00000000000 --- a/docs/standard-library/operator-equality-sample-container.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -description: "Learn more about: operator== ()" -title: "operator== ()" -ms.date: "11/04/2016" -f1_keywords: ["std.==", "std::==", "operator==", "std.operator==", "std::operator==", "=="] -helpviewer_keywords: ["operator ==, containers", "operator==, containers", "== operator, with specific standard C++ objects"] -ms.assetid: d3d8754e-5157-4b8b-bf9c-da41856f5eed ---- -# `operator==` (``) - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Overloads `operator==` to compare two objects of class template [Container](../standard-library/sample-container-class.md). - -## Syntax - -```cpp -template -bool operator==( - const Container & left, - const Container & right); -``` - -## Return Value - -Returns `left.`[size](../standard-library/container-class-size.md) `== right.size && equal(left.`[begin](../standard-library/container-class-begin.md)`, left.`[end](../standard-library/container-class-end.md)`, right.begin)`. - -## See also - -[\](../standard-library/sample-container.md) diff --git a/docs/standard-library/operator-greater-or-equal.md b/docs/standard-library/operator-greater-or-equal.md index 13d31d815af..57abc266e5c 100644 --- a/docs/standard-library/operator-greater-or-equal.md +++ b/docs/standard-library/operator-greater-or-equal.md @@ -11,7 +11,7 @@ ms.assetid: 14fbebf5-8b75-4afa-a51b-3112d31c07cf > [!NOTE] > This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). -Overloads **operator>=** to compare two objects of class template [Container](../standard-library/sample-container-class.md). +Overloads **operator>=** to compare two objects of class template Container. ## Syntax diff --git a/docs/standard-library/operator-greater-than-sample-container.md b/docs/standard-library/operator-greater-than-sample-container.md deleted file mode 100644 index a6bf41df1d3..00000000000 --- a/docs/standard-library/operator-greater-than-sample-container.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -description: "Learn more about: operator> ()" -title: "operator> ()" -ms.date: "11/04/2016" -f1_keywords: ["std::operator>", "operator>", "std::>", ">"] -helpviewer_keywords: ["> operator, comparing specific objects", "operator >"] -ms.assetid: 49bd417a-3305-4ffa-9884-39d3904ed87d ---- -# `operator>` (``) - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Overloads **operator>** to compare two objects of class template [Container](../standard-library/sample-container-class.md). - -## Syntax - -```cpp -template -bool operator*gt( - const Container & left, - const Container & right); -``` - -## Return Value - -Returns `right < left`. - -## See also - -[\](../standard-library/sample-container.md) diff --git a/docs/standard-library/operator-inequality.md b/docs/standard-library/operator-inequality.md index 1416a3f3cc3..be77e52f530 100644 --- a/docs/standard-library/operator-inequality.md +++ b/docs/standard-library/operator-inequality.md @@ -11,7 +11,7 @@ ms.assetid: ef2be7f0-1c94-4edc-b65c-731fddd519f4 > [!NOTE] > This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). -Overloads `operator!=` to compare two objects of class template [Container](../standard-library/sample-container-class.md). +Overloads `operator!=` to compare two objects of class template Container. ## Syntax diff --git a/docs/standard-library/operator-less-or-equal-sample-container.md b/docs/standard-library/operator-less-or-equal-sample-container.md deleted file mode 100644 index db35e24ec91..00000000000 --- a/docs/standard-library/operator-less-or-equal-sample-container.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -description: "Learn more about: operator<= ()" -title: "operator<= ()" -ms.date: "11/04/2016" -f1_keywords: ["std::<=", "std.operator<=", "operator<=", "std.<=", "std::operator<=", "<="] -helpviewer_keywords: ["operator<=", "operator <=", "<= operator, with specific objects", "<= operator"] -ms.assetid: 338577dd-dc88-4a2b-9e12-0379c54fc8a2 ---- -# `operator<=` (``) - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Overloads **operator<=** to compare two objects of class template [Container](../standard-library/sample-container-class.md). - -## Syntax - -```cpp -template -bool operator<=( - const Container & left, - const Container & right); -``` - -## Return Value - -Returns `!(right < left)`. - -## See also - -[\](../standard-library/sample-container.md) diff --git a/docs/standard-library/operator-less-than-sample-container.md b/docs/standard-library/operator-less-than-sample-container.md deleted file mode 100644 index cab25748e00..00000000000 --- a/docs/standard-library/operator-less-than-sample-container.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -description: "Learn more about: operator< ()" -title: "operator< ()" -ms.date: "11/04/2016" -f1_keywords: ["std::operator<", "operator<", "std.<", "<", "std.operator<", "std::<"] -helpviewer_keywords: ["< operator, comparing specific objects", "operator<, valarrays", "< operator", "operator <, valarrays"] -ms.assetid: 31027dd6-53be-428b-b950-1dcb25393597 ---- -# `operator<` (``) - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Overloads **operator<** to compare two objects of class template [Container](../standard-library/sample-container-class.md). - -## Syntax - -```cpp -template -bool operator<( - const Container & left, - const Container & right); -``` - -## Return Value - -Returns `lexicographical_compare(left.begin, left.end, right.begin, right.end)`. - -## See also - -[\](../standard-library/sample-container.md)\ -[begin](../standard-library/container-class-begin.md)\ -[end](../standard-library/container-class-end.md) diff --git a/docs/standard-library/sample-container-class.md b/docs/standard-library/sample-container-class.md deleted file mode 100644 index a55cb14fa1a..00000000000 --- a/docs/standard-library/sample-container-class.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -description: "Learn more about: Sample Container Class" -title: "Sample Container Class" -ms.date: "11/04/2016" -helpviewer_keywords: ["container classes [C++]"] -ms.assetid: 5b1451f2-c708-45da-bbf0-9e42fd687a1a ---- -# Sample Container Class - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Describes an object that controls a varying-length sequence of elements, typically of type `Ty`. The sequence is stored in different ways, depending on the actual container. - -A container constructor or member function may find occasion to call the constructor **Ty**(**const Ty&**) or the function **Ty::operator=**(**const Ty&**). If such a call throws an exception, the container object is obliged to maintain its integrity, and to rethrow any exception it catches. You can safely swap, assign to, erase, or destroy a container object after it throws one of these exceptions. In general, however, you cannot otherwise predict the state of the sequence controlled by the container object. - -A few additional caveats: - -- If the expression `~Ty` throws an exception, the resulting state of the container object is undefined. - -- If the container stores an allocator object *al*, and *al* throws an exception other than as a result of a call to `al.allocate`, the resulting state of the container object is undefined. - -- If the container stores a function object *comp*, to determine how to order the controlled sequence, and *comp* throws an exception of any kind, the resulting state of the container object is undefined. - -The container classes defined by C++ Standard Library satisfy several additional requirements, as described in the following paragraphs. - -Container class template [list](../standard-library/list-class.md) provides deterministic, and useful, behavior even in the presence of the exceptions described above. For example, if an exception is thrown during the insertion of one or more elements, the container is left unaltered and the exception is rethrown. - -For *all* the container classes defined by C++ Standard Library, if an exception is thrown during calls to the following member functions, `insert`, `push_back`, or `push_front`, the container is left unaltered and the exception is rethrown. - -For *all* the container classes defined by C++ Standard Library, no exception is thrown during calls to the following member functions: `pop_back`, `pop_front`. - -The member function [erase](../standard-library/container-class-erase.md) throws an exception only if a copy operation (assignment or copy construction) throws an exception. - -Moreover, no exception is thrown while copying an iterator returned by a member function. - -The member function [swap](../standard-library/container-class-swap.md) makes additional promises for *all* container classes defined by C++ Standard Library: - -- The member function throws an exception only if the container stores an allocator object al, and `al` throws an exception when copied. - -- References, pointers, and iterators that designate elements of the controlled sequences being swapped remain valid. - -An object of a container class defined by C++ Standard Library allocates and frees storage for the sequence it controls through a stored object of type `Alloc`, which is typically a template parameter. Such an allocator object must have the same external interface as an object of class `allocator`. In particular, `Alloc` must be the same type as `Alloc::rebind::other` - -For *all* container classes defined by C++ Standard Library, the member function `Alloc get_allocator const;` returns a copy of the stored allocator object. Note that the stored allocator object is *not* copied when the container object is assigned. All constructors initialize the value stored in `allocator`, to `Alloc` if the constructor contains no allocator parameter. - -According to the C++ Standard, a container class defined by the C++ Standard Library can assume that: - -- All objects of class `Alloc` compare equal. - -- Type `Alloc::const_pointer` is the same as `const Ty *`. - -- Type `Alloc::const_reference` is the same as `const Ty&`. - -- Type `Alloc::pointer` is the same as `Ty *`. - -- Type `Alloc::reference` is the same as `Ty&`. - -In this implementation, however, containers do not make such simplifying assumptions. Thus, they work properly with allocator objects that are more ambitious: - -- All objects of class `Alloc` does not need to compare equal. (You can maintain multiple pools of storage.) - -- Type `Alloc::const_pointer` does not need to be the same as `const Ty *`. (A const pointer can be a class.) - -- Type `Alloc::pointer` does not need to be the same as `Ty *`. (A pointer can be a class.) - -## Requirements - -**Header**: \ - -## See also - -[\](../standard-library/sample-container.md) diff --git a/docs/standard-library/sample-container-classes.md b/docs/standard-library/sample-container-classes.md deleted file mode 100644 index 4208b28a6f6..00000000000 --- a/docs/standard-library/sample-container-classes.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -description: "Learn more about: Classes" -title: " Classes" -ms.date: "11/04/2016" -ms.assetid: ac63ed42-5ae5-4008-99fb-89e045bf98af ---- -# `` Classes - -For more information about the classes in \, see [\](../standard-library/sample-container.md). diff --git a/docs/standard-library/sample-container-member-functions.md b/docs/standard-library/sample-container-member-functions.md deleted file mode 100644 index 8385eee0068..00000000000 --- a/docs/standard-library/sample-container-member-functions.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -description: "Learn more about: Sample Container Member Functions" -title: "Sample Container Member Functions" -ms.date: "11/04/2016" -ms.assetid: fbd88c16-57e6-435d-ad70-7a195c0103ab ---- -# Sample Container Member Functions - -For more information about the member functions in the sample container class, see [Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/sample-container-members.md b/docs/standard-library/sample-container-members.md deleted file mode 100644 index 18b77c70c3a..00000000000 --- a/docs/standard-library/sample-container-members.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -description: "Learn more about: Sample Container Members" -title: "Sample Container Members" -ms.date: "11/04/2016" -helpviewer_keywords: ["container classes"] -ms.assetid: dc5a1998-a31b-4adf-b888-8abe5b87a4e0 ---- -# Sample Container Members - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -## Reference - -## Typedefs - -|Name|Description| -|-|-| -|[const_iterator](../standard-library/container-class-const-iterator.md)|Describes an object that can serve as a constant iterator for the controlled sequence.| -|[const_reference](../standard-library/container-class-const-reference.md)|Describes an object that can serve as a constant reference to an element of the controlled sequence.| -|[const_reverse_iterator](../standard-library/container-class-const-reverse-iterator.md)|Describes an object that can serve as a constant reverse iterator for the controlled sequence.| -|[difference_type](../standard-library/container-class-difference-type.md)|Describes an object that can represent the difference between the addresses of any two elements in the controlled sequence.| -|[iterator](../standard-library/container-class-iterator.md)|Describes an object that can serve as an iterator for the controlled sequence.| -|[reference](../standard-library/container-class-reference.md)|Describes an object that can serve as a reference to an element of the controlled sequence.| -|[reverse_iterator](../standard-library/container-class-reverse-iterator.md)|Describes an object that can serve as a reverse iterator for the controlled sequence.| -|[size_type](../standard-library/container-class-size-type.md)|Describes an object that can represent the length of any controlled sequence.| -|[value_type](../standard-library/container-class-value-type.md)|Acts a synonym for the template parameter `Ty`.| - -## Member Functions - -|Name|Description| -|-|-| -|[begin](../standard-library/container-class-begin.md)|Returns an iterator that points at the first element of the sequence (or just beyond the end of an empty sequence).| -|[clear](../standard-library/container-class-clear.md)|Calls [erase](../standard-library/container-class-erase.md)( [begin](../standard-library/container-class-begin.md), [end](../standard-library/container-class-end.md)).| -|[empty](../standard-library/container-class-empty.md)|Returns **`true`** for an empty controlled sequence.| -|[end](../standard-library/container-class-end.md)|Returns an iterator that points just beyond the end of the sequence.| -|[erase](../standard-library/container-class-erase.md)|Erases an element.| -|[max_size](../standard-library/container-class-max-size.md)|Returns the length of the longest sequence that the object can control, in constant time regardless of the length of the controlled sequence.| -|[rbegin](../standard-library/container-class-rbegin.md)|Returns a reverse iterator that points just beyond the end of the controlled sequence, designating the beginning of the reverse sequence.| -|[rend](../standard-library/container-class-rend.md)|The member function returns a reverse iterator that points at the first element of the sequence (or just beyond the end of an empty sequence), designating the end of the reverse sequence.| -|[size](../standard-library/container-class-size.md)|Returns the length of the controlled sequence, in constant time regardless of the length of the controlled sequence.| -|[swap](../standard-library/container-class-swap.md) diff --git a/docs/standard-library/sample-container-operators.md b/docs/standard-library/sample-container-operators.md deleted file mode 100644 index e5f5f0aa9f4..00000000000 --- a/docs/standard-library/sample-container-operators.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -description: "Learn more about: Operators" -title: " Operators" -ms.date: "11/04/2016" -ms.assetid: 6cd28cdc-8318-4941-a06c-2c32758383fd ---- -# `` Operators - -For more information about the operators in \, see [\](../standard-library/sample-container.md). diff --git a/docs/standard-library/sample-container-specialized-template-functions.md b/docs/standard-library/sample-container-specialized-template-functions.md deleted file mode 100644 index eda14ad7267..00000000000 --- a/docs/standard-library/sample-container-specialized-template-functions.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -description: "Learn more about: Specialized Template Functions" -title: " Specialized Template Functions" -ms.date: "11/04/2016" -ms.assetid: 853d4b30-167a-471b-8325-86a868943568 ---- -# `` Specialized Template Functions - -For more information about the specialized template functions in \, see [\](../standard-library/sample-container.md). diff --git a/docs/standard-library/sample-container-typedefs.md b/docs/standard-library/sample-container-typedefs.md deleted file mode 100644 index 8122280f8aa..00000000000 --- a/docs/standard-library/sample-container-typedefs.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -description: "Learn more about: Sample Container Typedefs" -title: "Sample Container Typedefs" -ms.date: "11/04/2016" -ms.assetid: 9fc02c4c-d835-4266-a391-f12b40ba43fa ---- -# Sample Container Typedefs - -For more information about the typedefs in the sample container class, see [Sample Container Class](../standard-library/sample-container-class.md) diff --git a/docs/standard-library/sample-container.md b/docs/standard-library/sample-container.md deleted file mode 100644 index 667dcef38dc..00000000000 --- a/docs/standard-library/sample-container.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -description: "Learn more about: " -title: "" -ms.date: "11/04/2016" -helpviewer_keywords: ["headers, C++ sample container", "sample container", "container headers"] -ms.assetid: 4ab3dcf9-49c3-4e49-b5d6-1ec573e2aee4 ---- -# `` - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Shows you the structure of the container headers in the C++ Standard Library. - -## Syntax - -```cpp -#include // Nonfunctional header -``` diff --git a/docs/standard-library/stl-containers.md b/docs/standard-library/stl-containers.md index 0b8ce549317..be656d73146 100644 --- a/docs/standard-library/stl-containers.md +++ b/docs/standard-library/stl-containers.md @@ -163,5 +163,4 @@ In C++14 and later, you can compare dissimilar containers and/or dissimilar elem ## See also [Parallel Containers](../parallel/concrt/parallel-containers-and-objects.md)\ -[``](../standard-library/sample-container.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md) diff --git a/docs/standard-library/swap-sample-container.md b/docs/standard-library/swap-sample-container.md deleted file mode 100644 index b90bffdd488..00000000000 --- a/docs/standard-library/swap-sample-container.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -description: "Learn more about: swap ()" -title: "swap ()" -ms.date: "11/04/2016" -f1_keywords: ["std.swap", "std::swap", "swap"] -helpviewer_keywords: ["swap function"] -ms.assetid: d8dd6436-fb97-46ed-bec5-052cfd710462 ---- -# `swap` (``) - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Executes `left.`[swap](../standard-library/container-class-swap.md)`(right)`. - -## Syntax - -```cpp -template -void swap( - Container & left, - Container & right); -``` - -## See also - -[\](../standard-library/sample-container.md) diff --git a/docs/standard-library/toc.yml b/docs/standard-library/toc.yml index 9573b45f054..9ff0efac2ed 100644 --- a/docs/standard-library/toc.yml +++ b/docs/standard-library/toc.yml @@ -1557,95 +1557,6 @@ items: items: - name: C++ Standard Library containers href: stl-containers.md - - name: - expanded: false - items: - - name: - href: sample-container.md - - name: operators - expanded: false - items: - - name: operators - href: sample-container-operators.md - - name: operator!= - href: operator-inequality.md - - name: operator== () - href: operator-equality-sample-container.md - - name: operator< () - href: operator-less-than-sample-container.md - - name: operator<= () - href: operator-less-or-equal-sample-container.md - - name: operator> () - href: operator-greater-than-sample-container.md - - name: operator>= - href: operator-greater-or-equal.md - - name: specialized template functions - expanded: false - items: - - name: specialized template functions - href: sample-container-specialized-template-functions.md - - name: swap () - href: swap-sample-container.md - - name: classes - expanded: false - items: - - name: classes - href: sample-container-classes.md - - name: Sample container class - expanded: false - items: - - name: Sample container class - href: sample-container-class.md - - name: Sample container members - href: sample-container-members.md - - name: Sample container typedefs - expanded: false - items: - - name: Sample container typedefs - href: sample-container-typedefs.md - - name: "Container class::const_iterator" - href: container-class-const-iterator.md - - name: "Container class::const_reference" - href: container-class-const-reference.md - - name: "Container class::const_reverse_iterator" - href: container-class-const-reverse-iterator.md - - name: "Container class::difference_type" - href: container-class-difference-type.md - - name: "Container class::iterator" - href: container-class-iterator.md - - name: "Container class::reference" - href: container-class-reference.md - - name: "Container class::reverse_iterator" - href: container-class-reverse-iterator.md - - name: "Container class::size_type" - href: container-class-size-type.md - - name: "Container class::value_type" - href: container-class-value-type.md - - name: Sample container member functions - expanded: false - items: - - name: Sample container member functions - href: sample-container-member-functions.md - - name: "Container class::begin" - href: container-class-begin.md - - name: "Container class::clear" - href: container-class-clear.md - - name: "Container class::empty" - href: container-class-empty.md - - name: "Container class::end" - href: container-class-end.md - - name: "Container class::erase" - href: container-class-erase.md - - name: "Container class::max_size" - href: container-class-max-size.md - - name: "Container class::rbegin" - href: container-class-rbegin.md - - name: "Container class::rend" - href: container-class-rend.md - - name: "Container class::size" - href: container-class-size.md - - name: "Container class::swap" - href: container-class-swap.md - name: Iterators href: iterators.md - name: Algorithms From ee96e72bef8ae34578f211f84ab697f4c6878bf1 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Thu, 5 Mar 2026 16:34:52 -0800 Subject: [PATCH 360/619] curate more files --- .openpublishing.redirection.json | 105 ++++++++++++++++++ .../standard-library/container-class-begin.md | 21 ---- .../standard-library/container-class-clear.md | 19 ---- .../container-class-const-iterator.md | 23 ---- .../container-class-const-reference.md | 23 ---- .../container-class-const-reverse-iterator.md | 23 ---- .../container-class-difference-type.md | 23 ---- .../standard-library/container-class-empty.md | 19 ---- docs/standard-library/container-class-end.md | 21 ---- .../standard-library/container-class-erase.md | 30 ----- .../container-class-iterator.md | 23 ---- .../container-class-max-size.md | 19 ---- .../container-class-rbegin.md | 21 ---- .../container-class-reference.md | 23 ---- docs/standard-library/container-class-rend.md | 21 ---- .../container-class-reverse-iterator.md | 23 ---- .../container-class-size-type.md | 23 ---- docs/standard-library/container-class-size.md | 19 ---- docs/standard-library/container-class-swap.md | 25 ----- .../container-class-value-type.md | 23 ---- .../operator-greater-or-equal.md | 31 ------ docs/standard-library/operator-inequality.md | 31 ------ 22 files changed, 105 insertions(+), 484 deletions(-) delete mode 100644 docs/standard-library/container-class-begin.md delete mode 100644 docs/standard-library/container-class-clear.md delete mode 100644 docs/standard-library/container-class-const-iterator.md delete mode 100644 docs/standard-library/container-class-const-reference.md delete mode 100644 docs/standard-library/container-class-const-reverse-iterator.md delete mode 100644 docs/standard-library/container-class-difference-type.md delete mode 100644 docs/standard-library/container-class-empty.md delete mode 100644 docs/standard-library/container-class-end.md delete mode 100644 docs/standard-library/container-class-erase.md delete mode 100644 docs/standard-library/container-class-iterator.md delete mode 100644 docs/standard-library/container-class-max-size.md delete mode 100644 docs/standard-library/container-class-rbegin.md delete mode 100644 docs/standard-library/container-class-reference.md delete mode 100644 docs/standard-library/container-class-rend.md delete mode 100644 docs/standard-library/container-class-reverse-iterator.md delete mode 100644 docs/standard-library/container-class-size-type.md delete mode 100644 docs/standard-library/container-class-size.md delete mode 100644 docs/standard-library/container-class-swap.md delete mode 100644 docs/standard-library/container-class-value-type.md delete mode 100644 docs/standard-library/operator-greater-or-equal.md delete mode 100644 docs/standard-library/operator-inequality.md diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index 325a1fbbfe8..585f812c4b4 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -13829,6 +13829,111 @@ "source_path": "docs/standard-library/swap-sample-container.md", "redirect_url": "/cpp/standard-library/stl-containers", "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/operator-greater-or-equal.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/operator-inequality.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-begin.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-clear.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-const-iterator.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-const-reference.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-const-reverse-iterator.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-difference-type.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-empty.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-end.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-erase.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-iterator.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-max-size.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-rbegin.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-reference.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-rend.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-reverse-iterator.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-size.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-size-type.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-swap.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false + }, + { + "source_path": "docs/standard-library/container-class-value-type.md", + "redirect_url": "/cpp/standard-library/stl-containers", + "redirect_document_id": false } ] } \ No newline at end of file diff --git a/docs/standard-library/container-class-begin.md b/docs/standard-library/container-class-begin.md deleted file mode 100644 index c000652ac6a..00000000000 --- a/docs/standard-library/container-class-begin.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -description: "Learn more about: Container Class::begin" -title: "Container Class::begin" -ms.date: "05/07/2019" -helpviewer_keywords: ["begin method"] -ms.assetid: 633708cb-17fe-488b-9fb1-1b5f2da0f46c ---- -# Container Class::begin - -> [!NOTE] -> This topic is in the Visual Studio C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Returns an iterator that points at the first element of the sequence (or just beyond the end of an empty sequence). - -## Syntax - -```cpp -const_iterator begin() const; - -iterator begin(); -``` diff --git a/docs/standard-library/container-class-clear.md b/docs/standard-library/container-class-clear.md deleted file mode 100644 index f737e316df8..00000000000 --- a/docs/standard-library/container-class-clear.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -description: "Learn more about: Container Class::clear" -title: "Container Class::clear" -ms.date: "11/04/2016" -helpviewer_keywords: ["clear method"] -ms.assetid: 725f2717-5dc2-428f-a19a-05f046aafb2b ---- -# Container Class::clear - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Calls [erase](../standard-library/container-class-erase.md)([begin](../standard-library/container-class-begin.md), [end](../standard-library/container-class-end.md)). - -## Syntax - -```cpp -void clear(); -``` diff --git a/docs/standard-library/container-class-const-iterator.md b/docs/standard-library/container-class-const-iterator.md deleted file mode 100644 index 5c9a22e01be..00000000000 --- a/docs/standard-library/container-class-const-iterator.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -description: "Learn more about: Container Class::const_iterator" -title: "Container Class::const_iterator" -ms.date: "11/04/2016" -helpviewer_keywords: ["const_iterator method"] -ms.assetid: e68c9e30-fc4c-4c2e-8724-06d1fe8b8ccb ---- -# Container Class::const_iterator - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Describes an object that can serve as a constant iterator for the controlled sequence. - -## Syntax - -```cpp -typedef T6 const_iterator; -``` - -## Remarks - -It is described here as a synonym for the unspecified type `T6`. diff --git a/docs/standard-library/container-class-const-reference.md b/docs/standard-library/container-class-const-reference.md deleted file mode 100644 index a135635ad5b..00000000000 --- a/docs/standard-library/container-class-const-reference.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -description: "Learn more about: Container Class::const_reference" -title: "Container Class::const_reference" -ms.date: "11/04/2016" -helpviewer_keywords: ["const_reference method"] -ms.assetid: 7a5cfddb-3abf-4c98-b4ad-bbe4da9a5c1b ---- -# Container Class::const_reference - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Describes an object that can serve as a constant reference to an element of the controlled sequence. - -## Syntax - -```cpp -typedef T3 const_reference; -``` - -## Remarks - -It is described here as a synonym for the unspecified type `T3` (typically `Alloc::const_reference`). diff --git a/docs/standard-library/container-class-const-reverse-iterator.md b/docs/standard-library/container-class-const-reverse-iterator.md deleted file mode 100644 index 7a2d24653b4..00000000000 --- a/docs/standard-library/container-class-const-reverse-iterator.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -description: "Learn more about: Container Class::const_reverse_iterator" -title: "Container Class::const_reverse_iterator" -ms.date: "11/04/2016" -helpviewer_keywords: ["const_reverse_iterator method"] -ms.assetid: ceac84d5-a40f-4bbf-81e0-a96aa2bd8ee8 ---- -# Container Class::const_reverse_iterator - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Describes an object that can serve as a constant reverse iterator for the controlled sequence. - -## Syntax - -```cpp -typedef T8 const_reverse_iterator; -``` - -## Remarks - -It is described here as a synonym for the unspecified type `T8` (typically [reverse_iterator](../standard-library/container-class-reverse-iterator.md) <[const_iterator](../standard-library/container-class-const-iterator.md)`>`). diff --git a/docs/standard-library/container-class-difference-type.md b/docs/standard-library/container-class-difference-type.md deleted file mode 100644 index 5321f438d6e..00000000000 --- a/docs/standard-library/container-class-difference-type.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -description: "Learn more about: Container Class::difference_type" -title: "Container Class::difference_type" -ms.date: "11/04/2016" -helpviewer_keywords: ["difference_type typedef"] -ms.assetid: fae52485-d424-484e-9856-13505cfe528c ---- -# Container Class::difference_type - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Describes an object that can represent the difference between the addresses of any two elements in the controlled sequence. - -## Syntax - -```cpp -typedef T1 difference_type; -``` - -## Remarks - -It is described here as a synonym for the unspecified type `T1` (typically `Alloc::difference_type`). diff --git a/docs/standard-library/container-class-empty.md b/docs/standard-library/container-class-empty.md deleted file mode 100644 index 9c418bc5a3e..00000000000 --- a/docs/standard-library/container-class-empty.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -description: "Learn more about: Container Class::empty" -title: "Container Class::empty" -ms.date: "11/04/2016" -helpviewer_keywords: ["empty method"] -ms.assetid: 2055418d-3c42-4d28-a7db-111586119ed9 ---- -# Container Class::empty - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Returns **`true`** for an empty controlled sequence. - -## Syntax - -```cpp -bool empty() const; -``` diff --git a/docs/standard-library/container-class-end.md b/docs/standard-library/container-class-end.md deleted file mode 100644 index 9cbc722f31e..00000000000 --- a/docs/standard-library/container-class-end.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -description: "Learn more about: Container Class::end" -title: "Container Class::end" -ms.date: "11/04/2016" -helpviewer_keywords: ["end method"] -ms.assetid: 6fa38a20-3798-4387-9c6e-20fc3e90d813 ---- -# Container Class::end - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Returns an iterator that points just beyond the end of the sequence. - -## Syntax - -```cpp -const_iterator end() const; - -iterator end(); -``` diff --git a/docs/standard-library/container-class-erase.md b/docs/standard-library/container-class-erase.md deleted file mode 100644 index 8a5a329c95c..00000000000 --- a/docs/standard-library/container-class-erase.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -description: "Learn more about: Container Class::erase" -title: "Container Class::erase" -ms.date: "11/04/2016" -helpviewer_keywords: ["erase method"] -ms.assetid: abc091c5-5a80-4bd8-93a8-a2d9bde2efec ---- -# Container Class::erase - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Erases an element. - -## Syntax - -```cpp -iterator erase( - iterator _Where); - -iterator erase( - iterator first, - iterator last); -``` - -## Remarks - -The first member function removes the element of the controlled sequence pointed to by *_Where*. The second member function removes the elements of the controlled sequence in the range [`first`, `last`). Both return an iterator that designates the first element remaining beyond any elements removed, or [end](../standard-library/container-class-end.md) if no such element exists. - -The member functions throw an exception only if a copy operation throws an exception. diff --git a/docs/standard-library/container-class-iterator.md b/docs/standard-library/container-class-iterator.md deleted file mode 100644 index 96bc0358f8d..00000000000 --- a/docs/standard-library/container-class-iterator.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -description: "Learn more about: Container Class::iterator" -title: "Container Class::iterator" -ms.date: "11/04/2016" -helpviewer_keywords: ["iterator method"] -ms.assetid: f9c49d1c-17cb-4b17-8e54-09e3ea41ca26 ---- -# Container Class::iterator - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Describes an object that can serve as an iterator for the controlled sequence. - -## Syntax - -```cpp -typedef T5 iterator; -``` - -## Remarks - -It is described here as a synonym for the unspecified type `T5`. An object of type `iterator` can be cast to an object of type [const_iterator](../standard-library/container-class-const-iterator.md). diff --git a/docs/standard-library/container-class-max-size.md b/docs/standard-library/container-class-max-size.md deleted file mode 100644 index 65467c16766..00000000000 --- a/docs/standard-library/container-class-max-size.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -description: "Learn more about: Container Class::max_size" -title: "Container Class::max_size" -ms.date: "11/04/2016" -helpviewer_keywords: ["max_size method"] -ms.assetid: 56754753-9911-48fd-b463-ac06b2fa1aab ---- -# Container Class::max_size - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Returns the length of the longest sequence that the object can control, in constant time regardless of the length of the controlled sequence. - -## Syntax - -```cpp -size_type max_size() const; -``` diff --git a/docs/standard-library/container-class-rbegin.md b/docs/standard-library/container-class-rbegin.md deleted file mode 100644 index 0bfc8015d79..00000000000 --- a/docs/standard-library/container-class-rbegin.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -description: "Learn more about: Container Class::rbegin" -title: "Container Class::rbegin" -ms.date: "11/04/2016" -helpviewer_keywords: ["rbegin method"] -ms.assetid: c1f0d60c-93aa-4313-81b9-04e3f9c796c2 ---- -# Container Class::rbegin - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Returns a reverse iterator that points just beyond the end of the controlled sequence, designating the beginning of the reverse sequence. - -## Syntax - -```cpp -const_reverse_iterator rbegin() const; - -reverse_iterator rbegin(); -``` diff --git a/docs/standard-library/container-class-reference.md b/docs/standard-library/container-class-reference.md deleted file mode 100644 index 4c8c14bcc39..00000000000 --- a/docs/standard-library/container-class-reference.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -description: "Learn more about: Container Class::reference" -title: "Container Class::reference" -ms.date: "11/04/2016" -helpviewer_keywords: ["reference method"] -ms.assetid: ab85a9fb-c628-4761-9a5f-a0231fad7690 ---- -# Container Class::reference - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Describes an object that can serve as a reference to an element of the controlled sequence. - -## Syntax - -```cpp -typedef T2 reference; -``` - -## Remarks - -It is described here as a synonym for the unspecified type `T2` (typically `Alloc::reference`). An object of type `reference` can be cast to an object of type [const_reference](../standard-library/container-class-const-reference.md). diff --git a/docs/standard-library/container-class-rend.md b/docs/standard-library/container-class-rend.md deleted file mode 100644 index 8177b3c9d62..00000000000 --- a/docs/standard-library/container-class-rend.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -description: "Learn more about: Container Class::rend" -title: "Container Class::rend" -ms.date: "11/04/2016" -helpviewer_keywords: ["rend method"] -ms.assetid: 80f3dd04-dd2c-4b52-b0ed-d567ec5d186c ---- -# Container Class::rend - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -The member function returns a reverse iterator that points at the first element of the sequence (or just beyond the end of an empty sequence), designating the end of the reverse sequence. - -## Syntax - -```cpp -const_reverse_iterator rend() const; - -reverse_iterator rend(); -``` diff --git a/docs/standard-library/container-class-reverse-iterator.md b/docs/standard-library/container-class-reverse-iterator.md deleted file mode 100644 index e745d77b961..00000000000 --- a/docs/standard-library/container-class-reverse-iterator.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -description: "Learn more about: Container Class::reverse_iterator" -title: "Container Class::reverse_iterator" -ms.date: "11/04/2016" -helpviewer_keywords: ["reverse_iterator method"] -ms.assetid: 1d190c41-56b1-462e-b564-793b2a883c26 ---- -# Container Class::reverse_iterator - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Describes an object that can serve as a reverse iterator for the controlled sequence. - -## Syntax - -```cpp -typedef T7 reverse_iterator; -``` - -## Remarks - -It is described here as a synonym for the unspecified type `T7` (typically `reverse_iterator` **\<**[iterator](../standard-library/container-class-iterator.md)**>**). diff --git a/docs/standard-library/container-class-size-type.md b/docs/standard-library/container-class-size-type.md deleted file mode 100644 index abc51b7b873..00000000000 --- a/docs/standard-library/container-class-size-type.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -description: "Learn more about: Container Class::size_type" -title: "Container Class::size_type" -ms.date: "11/04/2016" -helpviewer_keywords: ["size_type typedef"] -ms.assetid: e02de8af-e175-45a2-b006-835814a40e68 ---- -# Container Class::size_type - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Describes an object that can represent the length of any controlled sequence. - -## Syntax - -```cpp -typedef T0 size_type; -``` - -## Remarks - -It is described here as a synonym for the unspecified type `T0` (typically `Alloc::size_type`). diff --git a/docs/standard-library/container-class-size.md b/docs/standard-library/container-class-size.md deleted file mode 100644 index cf379937eb4..00000000000 --- a/docs/standard-library/container-class-size.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -description: "Learn more about: Container Class::size" -title: "Container Class::size" -ms.date: "11/04/2016" -helpviewer_keywords: ["size method"] -ms.assetid: 67073661-2699-4534-ad3b-31a906658dc5 ---- -# Container Class::size - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Returns the length of the controlled sequence, in constant time regardless of the length of the controlled sequence. - -## Syntax - -```cpp -size_type size() const; -``` diff --git a/docs/standard-library/container-class-swap.md b/docs/standard-library/container-class-swap.md deleted file mode 100644 index afd4d7b166a..00000000000 --- a/docs/standard-library/container-class-swap.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -description: "Learn more about: Container Class::swap" -title: "Container Class::swap" -ms.date: 06/10/2022 -helpviewer_keywords: ["swap method"] -ms.assetid: 898c219c-bc8e-4d14-a149-6240426c693f -ms.custom: devdivchpfy22 ---- - -# Container Class::swap - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Swaps the controlled sequences between `*this` and its argument. - -## Syntax - -```cpp -void swap(Container& right); -``` - -## Remarks - -If `*this.get_allocator == right.get_allocator`, it does a swap in constant time. Otherwise, it performs element assignments and constructor calls proportional to the number of elements in the two controlled sequences. diff --git a/docs/standard-library/container-class-value-type.md b/docs/standard-library/container-class-value-type.md deleted file mode 100644 index 512f0d9ba0b..00000000000 --- a/docs/standard-library/container-class-value-type.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -description: "Learn more about: Container Class::value_type" -title: "Container Class::value_type" -ms.date: "11/04/2016" -helpviewer_keywords: ["value_type typedef"] -ms.assetid: e89d5a71-b48c-47fa-aa78-682243e6e97f ---- -# Container Class::value_type - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Acts a synonym for the template parameter *Ty*. - -## Syntax - -```cpp -typedef T4 value_type; -``` - -## Remarks - -It is described here as a synonym for the unspecified type `T4` (typically `Alloc::value_type`). diff --git a/docs/standard-library/operator-greater-or-equal.md b/docs/standard-library/operator-greater-or-equal.md deleted file mode 100644 index 57abc266e5c..00000000000 --- a/docs/standard-library/operator-greater-or-equal.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -description: "Learn more about: operator>=" -title: "operator>=" -ms.date: "11/04/2016" -f1_keywords: ["operator>=", "std::>=", "std.operator>=", ">=", "std.>=", "std::operator>="] -helpviewer_keywords: [">= operator, comparing specific objects", "operator >=", "operator>="] -ms.assetid: 14fbebf5-8b75-4afa-a51b-3112d31c07cf ---- -# `operator>=` - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Overloads **operator>=** to compare two objects of class template Container. - -## Syntax - -```cpp -template -bool operator>=( - const Container & left, - const Container & right); -``` - -## Return Value - -Returns `!(left < right)`. - -## See also - -[\](../standard-library/sample-container.md) diff --git a/docs/standard-library/operator-inequality.md b/docs/standard-library/operator-inequality.md deleted file mode 100644 index be77e52f530..00000000000 --- a/docs/standard-library/operator-inequality.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -description: "Learn more about: operator!=" -title: "operator!=" -ms.date: "11/04/2016" -f1_keywords: ["std::!=", "!=", "std::operator!=", "std.operator!=", "std.!=", "operator!="] -helpviewer_keywords: ["!= operator", "operator!=", "operator !="] -ms.assetid: ef2be7f0-1c94-4edc-b65c-731fddd519f4 ---- -# operator!= - -> [!NOTE] -> This topic is in the Microsoft C++ documentation as a nonfunctional example of containers used in the C++ Standard Library. For more information, see [C++ Standard Library Containers](../standard-library/stl-containers.md). - -Overloads `operator!=` to compare two objects of class template Container. - -## Syntax - -```cpp -template -bool operator!=( - const Container & left, - const Container & right); -``` - -## Return Value - -Returns `!(left == right)`. - -## See also - -[\](../standard-library/sample-container.md) From 5cf57b3f10aed7fef456974a8c9eb8a510b1263e Mon Sep 17 00:00:00 2001 From: paulth1 <42621139+paulth1@users.noreply.github.com> Date: Thu, 5 Mar 2026 18:30:41 -0800 Subject: [PATCH 361/619] edit pass: redistributing-microsoft-c++-files --- docs/windows/latest-supported-vc-redist.md | 22 ++++---- docs/windows/redist-version-auditing.md | 12 ++--- .../redistributing-an-atl-application.md | 4 +- ...uting-components-by-using-merge-modules.md | 4 +- .../windows/redistributing-the-mfc-library.md | 8 +-- ...istributing-visual-cpp-activex-controls.md | 4 +- .../redistributing-visual-cpp-files.md | 16 +++--- ...-vc-redistributable-installation-issues.md | 54 +++++++++---------- 8 files changed, 62 insertions(+), 62 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index a70485b2089..3b39b50097b 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -20,7 +20,7 @@ ms.author: msaleh > [!NOTE] > Are you here to download Visual Studio? Go to [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/). -This article is for developers who need to install the Visual C++ Runtime Libraries with their app. If you're trying to fix an app by updating the Visual C++ Runtime Libraries, contact the app vendor for instructions. +This article is for developers who need to install the Visual C++ runtime libraries with their app. If you're trying to fix an app by updating the Visual C++ runtime libraries, contact the app vendor for instructions. To find the download you need, choose your version of Visual Studio from the following table. Each link takes you to the appropriate download section. @@ -39,13 +39,13 @@ To find the download you need, choose your version of Visual Studio from the fol Redistribution is permitted only for licensed Visual Studio users, as described in the [Visual Studio license terms](https://visualstudio.microsoft.com/license-terms/). For details on redistributing Visual C++ files, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). -A Visual C++ Redistributable installs Microsoft C and C++ Runtime Libraries. Many applications built by using Microsoft Visual C++ (MSVC) Build Tools require these libraries. If your app is built by using those libraries, a Microsoft Visual C++ Redistributable Package at least as recent as the build tools used to build your app must be installed on the target system along with the app. +A Visual C++ Redistributable installs Microsoft C and C++ runtime libraries. Many applications built by using Microsoft Visual C++ Build Tools require these libraries. If your app is built by using those libraries, a Microsoft Visual C++ Redistributable Package at least as recent as the build tools used to build your app must be installed on the target system along with the app. The Redistributable package architecture must match your app's target architecture. (You can't install an ARM64 Redistributable on an x86 system or an x64 Redistributable on an x86 system, for example.) We recommend that you use the latest Redistributable available for your version of Visual Studio. ## Visual C++ v14 Redistributable -The following table lists the latest supported Microsoft Visual C++ v14 Redistributable Packages. The latest supported version has the most recently implemented C++ features, security, reliability, and performance improvements. It also includes the latest C++ standard language and library standards conformance updates. We recommend that you install this version for all applications created by using MSVC C and C++ Build Tools available in Visual Studio 2017, 2019, 2022, or 2026. +The following table lists the latest supported Microsoft Visual C++ v14 Redistributable Packages. The latest supported version has the most recently implemented C++ features, security, reliability, and performance improvements. It also includes the latest C++ standard language and library standards conformance updates. We recommend that you install this version for all applications created by using Microsoft C and C++ Build Tools available in Visual Studio 2017, 2019, 2022, or 2026. Unlike older versions of Visual Studio that have infrequent redistributable updates, the version number isn't listed in the following table for the Visual C++ v14 Redistributable because it's updated frequently. To find the version number of the latest redistributable, download the one you're interested in by using one of the following links. Then, look at its properties by using Windows File Explorer. On the **Details** pane, **File version** contains the version of the redistributable. @@ -57,21 +57,21 @@ Unlike older versions of Visual Studio that have infrequent redistributable upda | X86 | [https://aka.ms/vc14/vc_redist.x86.exe](https://aka.ms/vc14/vc_redist.x86.exe) | Permalink for latest supported x86 version. | | X64 | [https://aka.ms/vc14/vc_redist.x64.exe](https://aka.ms/vc14/vc_redist.x64.exe) | Permalink for latest supported x64 version. The X64 Redistributable Package contains both ARM64 and X64 binaries. This package makes it easy to install required Visual C++ ARM64 binaries when the X64 Redistributable is installed on an ARM64 device. | -Download other versions, including long-term servicing channel (LTSC) versions, from [my.visualstudio.com](https://my.visualstudio.com/). +Download other versions, including long-term servicing channel (LTSC) versions, from [Welcome to Dev Essentials](https://my.visualstudio.com/). ### Notes -- Some of the downloads that are mentioned in this article are currently available on [my.visualstudio.com](https://my.visualstudio.com/). Sign in by using a Visual Studio subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or to create a free account. select [No account? Create one!](https://my.visualstudio.com/). +- Some of the downloads that are mentioned in this article are currently available on [Welcome to Dev Essentials](https://my.visualstudio.com/). Sign in by using a Visual Studio subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or to create a free account. select [No account? Create one!](https://my.visualstudio.com/). - The Visual C++ v14 Redistributable doesn't have separate packages for different languages. License terms for different languages are available at [Microsoft Software License Terms](https://aka.ms/VCRedistLicense). -- Visual Studio 2017 and later share the same redistributable files. Any apps built by MSVC Build Tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ v14 Redistributable. +- Visual Studio 2017 and later share the same redistributable files. Any apps built by Microsoft Visual C++ Build Tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ v14 Redistributable. - The version of the Redistributable installed on the machine must be the same or later than the version of the MSVC Build Tools used to create your application. For more information about which version of the Redistributable to install, see [Determine which dynamic-link libraries (DLLs) to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). + The version of the Redistributable installed on the machine must be the same or later than the version of the Microsoft Visual C++ Build Tools used to create your application. For more information about which version of the Redistributable to install, see [Determine which dynamic-link libraries (DLLs) to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). - The latest version of the Visual C++ v14 Redistributable included with Visual Studio 2026 supports only the following operating systems: * Windows 10 and 11 * Windows Server 2016, 2019, 2022, and 2025 - Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which it first ships, support for Visual C++ 2015 Redistributable (version 14.0.24212) also ended October 15, 2025. For the latest available version, see the [Visual Studio 2015 (Visual C++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section.
- When Visual Studio 2015 support ended, the v14 runtime was binary compatible with applications built by using the Visual Studio 2015 MSVC Build Tools. Since Visual Studio 2015 is no longer supported, we recommend that you update your projects to use a supported MSVC Build Tools version and the latest v14 runtime. The Visual C++ Redistributable for 2017, and later, in-place upgrade the Visual C++ 2015 Redistributable (14.0.24212.0). Redistributables for 2013 and earlier remain installed side by side. + When Visual Studio 2015 support ended, the v14 runtime was binary compatible with applications built by using the Visual Studio 2015 Microsoft Visual C++ Build Tools. Because Visual Studio 2015 is no longer supported, we recommend that you update your projects to use a supported Microsoft Visual C++ Build Tools version and the latest v14 runtime, the Visual C++ Redistributable for 2017, and later, and perform an in-place upgrade to the Visual C++ 2015 Redistributable (14.0.24212.0). Redistributables for 2013 and earlier remain installed side by side. - The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). @@ -96,7 +96,7 @@ You can download other versions and languages from [Update for Visual C++ 2013 R ### Other 2013 versions - [Multibyte Microsoft Foundation Class (MFC) Library for Visual Studio 2013](https://my.visualstudio.com/Downloads?pid=1430). This MFC add-on for Visual Studio 2013 contains the multibyte character set (MBCS) version of the MFC Library. -- [Visual C++ 2013 Runtime for sideloaded Windows 8.1 apps](https://download.microsoft.com/download/5/f/0/5f0f8404-9329-44a9-8176-ed6f7f746f25/vclibs_redist_packages.zip). For more information, see [C++ Runtime for sideloaded Windows 8.1 apps](https://devblogs.microsoft.com/cppblog/c-runtime-for-sideloaded-windows-8-1-apps/) on the C++ Team Blog. +- [Visual C++ 2013 Runtime for Sideloaded Windows 8.1 Apps](https://download.microsoft.com/download/5/f/0/5f0f8404-9329-44a9-8176-ed6f7f746f25/vclibs_redist_packages.zip). For more information, see [C++ Runtime for Sideloaded Windows 8.1 Apps](https://devblogs.microsoft.com/cppblog/c-runtime-for-sideloaded-windows-8-1-apps/) on the C++ Team Blog. ### Visual Studio 2012 (VC++ 11.0) Update 4 (no longer supported) @@ -144,8 +144,8 @@ Redistributable files for X86, X64, and IA64 architectures are available from [M ## Related content - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) -- [Audit Visual C++ Runtime version usage](redist-version-auditing.md) -- [Lifecycle FAQ: Visual C++ Redistributable and Runtime Libraries](/lifecycle/faq/visual-c-faq) +- [Audit Visual C++ runtime version usage](redist-version-auditing.md) +- [Lifecycle FAQ: Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) - [Troubleshoot Visual C++ Redistributable installation issues](troubleshoot-vc-redistributable-installation-issues.md) ### Release notes diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index 909849f681a..065744b4685 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -14,7 +14,7 @@ ms.topic: how-to # Audit Visual C++ Runtime version usage -The Microsoft Visual C++ Redistributable and the Visual Studio C++ Runtime (collectively, "VC Runtime") are critical components of many applications. Across your network, machines might still be running applications that install and use an out-of-support version of the VC Runtime. You can use NTFS file auditing to identify such usage as a step toward replacing those applications with ones that use a supported version of the VC Runtime. This article walks you through setting up NTFS file auditing, provides troubleshooting tips, and highlights the benefits of regular audits. +The Microsoft Visual C++ Redistributable and the Visual Studio C++ runtime (collectively, "VC Runtime") are critical components of many applications. Across your network, machines might still be running applications that install and use an out-of-support version of the VC Runtime. You can use NTFS file auditing to identify such usage as a step toward replacing those applications with ones that use a supported version of the VC Runtime. This article walks you through setting up NTFS file auditing, provides troubleshooting tips, and highlights the benefits of regular audits. For more information about the versions of VC Runtime that are no longer supported, see [Microsoft Visual C++ Redistributable latest supported downloads](latest-supported-vc-redist.md). @@ -59,7 +59,7 @@ NTFS file auditing generates [Event 4663: An attempt was made to access an objec 1. Go to the **Security** logs in the **Event Viewer** by expanding **Windows Logs** > **Security**. The results pane lists security events. 1. Find the audit events by choosing **Filter Current Log...** in the **Actions** pane. To narrow down the events to **Event ID 4663 (Audit Success for the File System Category)**, enter **4663** in the **Includes/Excludes Event IDs** text box. -For a File Access Auditing Event 4663 example, see [4663(S): An attempt was made to access an object.](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663). +For a File Access Auditing Event 4663 example, see [4663(S): An attempt was made to access an object](/previous-versions/windows/it-pro/windows-10/security/threat-protection/auditing/event-4663). ### Use PowerShell to audit VC Runtime usage @@ -173,7 +173,7 @@ ResourceAttributes : S:AI After you determine which processes use the VC Runtime files, or which applications installed the Visual C++ Redistributable, uninstall those applications or upgrade them to newer versions that don't depend on unsupported VC Runtimes. -Some Microsoft applications require legacy versions of the VC Runtime. For more information, see the [Visual C++ Redistributable and Runtime Libraries FAQ](/lifecycle/faq/visual-c-faq). +Some Microsoft applications require legacy versions of the VC Runtime. For more information, see the [Visual C++ Redistributable and runtime libraries FAQ](/lifecycle/faq/visual-c-faq). @@ -191,7 +191,7 @@ The following table lists where each version of the VC Runtime is installed. ## Related content -- [Redistribute Visual C++ files](redistributing-visual-cpp-files.md)\ -- [The latest supported Visual C++ downloads](latest-supported-vc-redist.md)\ -- [Lifecycle FAQ: Visual C++ Redistributable and Runtime Libraries](/lifecycle/faq/visual-c-faq)\ +- [Redistribute Visual C++ files](redistributing-visual-cpp-files.md) +- [The latest supported Visual C++ downloads](latest-supported-vc-redist.md) +- [Lifecycle FAQ: Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) diff --git a/docs/windows/redistributing-an-atl-application.md b/docs/windows/redistributing-an-atl-application.md index 17248946533..4159e2fc0b1 100644 --- a/docs/windows/redistributing-an-atl-application.md +++ b/docs/windows/redistributing-an-atl-application.md @@ -16,7 +16,7 @@ If you redistribute an ATL executable application, you must register the `.exe` filename /regserver ``` -Where `filename` is the name of the executable file. +The name of the executable file is `filename`. In Visual Studio 2010, you can build an ATL project for a `MinDependency` or a `MinSize` configuration: @@ -33,7 +33,7 @@ If you redistribute an ATL executable application, you must register the `.exe` filename /regserver ``` -Where `filename` is the name of the executable file. +The name of the executable file is `filename`. ## Related content diff --git a/docs/windows/redistributing-components-by-using-merge-modules.md b/docs/windows/redistributing-components-by-using-merge-modules.md index 814fdfb1822..2313d2bb5d1 100644 --- a/docs/windows/redistributing-components-by-using-merge-modules.md +++ b/docs/windows/redistributing-components-by-using-merge-modules.md @@ -11,7 +11,7 @@ ms.topic: concept-article > [!IMPORTANT] > In Visual Studio 2019 and later, merge modules for Visual C++ Redistributable files are deprecated. We don't recommend that you use them for application deployment. Windows Update can't update redistributable files installed by using merge modules because the detection mechanism depends on knowing details of the installing package. > -> The Visual C++ Redistributable Packages are known for each release, but packages that use MSMs are user generated. Microsoft can't know the details of user-generated packages. Instead, we recommend that you use central deployment of the Visual C++ Redistributable Package. Central deployment installs the redistributable files in the Windows `%SYSTEMROOT%\system32\` folder for use by all applications and users. Central deployment by a redistributable package makes it possible for Microsoft to service runtime library files independently. An uninstall of your app can't break other applications that also use central deployment. +> The Visual C++ Redistributable packages are known for each release, but packages that use merge modules are user generated. Microsoft can't know the details of user-generated packages. Instead, we recommend that you use central deployment of the Visual C++ Redistributable package. Central deployment installs the redistributable files in the Windows `%SYSTEMROOT%\system32\` folder for use by all applications and users. Central deployment by a redistributable package makes it possible for Microsoft to service runtime library files independently. An uninstall of your app can't break other applications that also use central deployment. > > When you use a redistributable package for central deployment, you aren't responsible for tracking and updating the runtime libraries as part of your application maintenance. The Microsoft Update service updates these libraries for you. Otherwise, an update to the runtime library files requires you to update and redeploy your `.msi` installer. Your app could be vulnerable to bugs or security issues until you do. @@ -38,7 +38,7 @@ When you use merge modules, you must track and regularly service your applicatio ## Where to find merge module files -In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named C++ \ Redistributable MSMs in the Visual Studio Installer. The merge modules are installed by default as part of a C++ installation in Visual Studio 2017 and Visual Studio 2015. When the merge modules are installed in Visual Studio 2022, you can find the Visual C++ Redistributable merge modules in `%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`. +In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named *C++ \ Redistributable merge modules* in the Visual Studio Installer. The merge modules are installed by default as part of a C++ installation in Visual Studio 2017 and Visual Studio 2015. When the merge modules are installed in Visual Studio 2022, you can find the Visual C++ Redistributable merge modules in `%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`. In the latest version of Visual Studio 2019, the merge modules are in `%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`. In both Visual Studio 2019 and Visual Studio 2017, they're also found in `%VCToolsRedistDir%MergeModules`. In Visual Studio 2015, they're found in `Program Files [(x86)]\Common Files\Merge Modules`. For more information and a link to a list of redistributable merge modules, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). diff --git a/docs/windows/redistributing-the-mfc-library.md b/docs/windows/redistributing-the-mfc-library.md index b069e2558c4..801828f66f9 100644 --- a/docs/windows/redistributing-the-mfc-library.md +++ b/docs/windows/redistributing-the-mfc-library.md @@ -14,13 +14,13 @@ If you dynamically link your application to the Microsoft Foundation Class (MFC) > [!NOTE] > The `mfc140.dll` files were omitted from the redistributable files directory in Visual Studio 2015 RTM. You can use the versions installed by Visual Studio 2015 in the `Windows\system32 and Windows\syswow64` directories instead. -Because all MFC DLLs use the shared version of the Microsoft C Runtime (CRT) Library, you might also need to redistribute the CRT. The version of MFC that ships with Visual Studio 2015 uses the Universal CRT Library, which is distributed as part of Windows 10 and Windows 11. To run an MFC application built by using Visual Studio 2015 on earlier versions of Windows, you must redistribute the Universal CRT. +Because all MFC DLLs use the shared version of the Microsoft C runtime library, you might also need to redistribute the C runtime. The version of MFC that ships with Visual Studio 2015 uses the Universal C runtime library, which is distributed as part of Windows 10 and Windows 11. To run an MFC application built by using Visual Studio 2015 on earlier versions of Windows, you must redistribute the Universal C runtime. -For information on how to redistribute the Universal CRT as an operating system component or by using local deployment, see [Introducing the Universal CRT](https://devblogs.microsoft.com/cppblog/introducing-the-universal-crt/). To download the Universal CRT for central deployment on supported versions of Windows, see [Windows 10 Universal C Runtime](https://www.microsoft.com/download/details.aspx?id=48234). +For information on how to redistribute the Universal C runtime as an operating system component or by using local deployment, see [Introducing the Universal C runtime](https://devblogs.microsoft.com/cppblog/introducing-the-universal-crt/). To download the Universal C runtime for central deployment on supported versions of Windows, see [Windows 10 Universal C runtime](https://www.microsoft.com/download/details.aspx?id=48234). You can find redistributable architecture-specific versions of `ucrtbase.dll` for local deployment in the Windows SDK. By default, Visual Studio installs these versions in `C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\` in an architecture-specific subdirectory. -If your app is built by using an earlier version of the MFC Library, you must redistribute the matching CRT DLL from the redistributable files directory. For example, if your MFC application is built by using the Visual Studio 2013 (vc120) toolset, you must redistribute the `msvcr120.dll`. You also have to redistribute the matching `mfcu.dll` or `mfc.dll`. +If your app is built by using an earlier version of the MFC Library, you must redistribute the matching C runtime DLL from the redistributable files directory. For example, if your MFC application is built by using the Visual Studio 2013 (vc120) toolset, you must redistribute the `msvcr120.dll`. You also have to redistribute the matching `mfcu.dll` or `mfc.dll`. If you statically link your application to MFC (in the **Property Pages** dialog, on the **General** tab, select **Use MFC in a Static Library**), you don't have to redistribute an MFC DLL. Although static linking might work for testing and internal deployment of applications, we recommend that you don't use it to redistribute MFC. For more information about the recommended strategies for deploying Visual C++ libraries, see [Choose a deployment method](choosing-a-deployment-method.md). @@ -30,7 +30,7 @@ If your application uses the MFC database classes (for example, [CRecordset clas If your MFC application uses Windows Forms controls, you must redistribute `mfcmifc80.dll` with your application. This DLL is a strong-name-signed .NET assembly. You can redistribute it with an application in its application local folder. You can also deploy it to the Global Assembly Cache (GAC) by using the [Gacutil.exe (Global Assembly Cache Tool)](/dotnet/framework/tools/gacutil-exe-gac-tool). -If you redistribute an MFC DLL, make sure to redistribute the retail version and not the debug version. Debug versions of the DLLs aren't redistributable. The names of debug versions of the MFC DLLs end with a "d", for example, `Mfc140d.dll`. +If you redistribute an MFC DLL, make sure to redistribute the retail version and not the debug version. Debug versions of the DLLs aren't redistributable. The names of debug versions of the MFC DLLs end with a "d"; for example, `Mfc140d.dll`. You can redistribute MFC by using either `VCRedist_*architecture*.exe` or merge modules that are installed with Visual Studio. You can also deploy the MFC DLL to the same folder as your application. For more information about how to redistribute MFC, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). diff --git a/docs/windows/redistributing-visual-cpp-activex-controls.md b/docs/windows/redistributing-visual-cpp-activex-controls.md index 93b6d3156bf..f28e3df2398 100644 --- a/docs/windows/redistributing-visual-cpp-activex-controls.md +++ b/docs/windows/redistributing-visual-cpp-activex-controls.md @@ -15,7 +15,7 @@ Visual C++ 6.0 supplies ActiveX controls that you can use in applications that y For a list of the redistributable Visual C++ 6.0 ActiveX controls, see `Common\Redist\Redist.txt` on Disc 1 of the Visual C++ 6.0 product CD. -When you distribute applications, you must install and register the `.ocx` for the ActiveX control (by using `Regsvr32.exe`). The target computer also must have current versions of the following system files (an asterisk indicates that the file must be registered): +When you distribute applications, you must install and register the `.ocx` for the ActiveX control (by using `Regsvr32.exe`). The target computer also must have current versions of the following system files. (An asterisk indicates that the file must be registered.) - `Asycfilt.dll` - `Comcat.dll`\* @@ -29,7 +29,7 @@ When you use an ActiveX control that connects to a database, you also need to re Some redistributable ActiveX controls have more dependencies. For each `.ocx` file in the Os\System folder on the Visual C++ 6.0 product CD, there's also a `.dep` file. For each `.ocx` file that you want to redistribute, look for one or more USES entries in the corresponding `.dep` file. -If a file is listed, you must ensure that the file is on the target computer. Any DLLs directly supporting an `.ocx` file must be registered. (For `Regsvr32.exe` to succeed, the target computer must first contain all the DLLs that the control statically loads.) Furthermore, if a DLL that's listed as a dependency also has a `.dep` file in the Os\System folder on the Visual C++ 6.0 CD, you must also investigate that `.dep` file for USES entries. +If a file is listed, you must ensure that the file is on the target computer. Any DLLs directly supporting an `.ocx` file must be registered. (For `Regsvr32.exe` to succeed, the target computer must first contain all the DLLs that the control statically loads.) Also, if a DLL that's listed as a dependency also has a `.dep` file in the Os\System folder on the Visual C++ 6.0 CD, you must also investigate that `.dep` file for USES entries. ## Related content diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index 0cc082395f7..348b9d564ad 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -8,13 +8,13 @@ ms.topic: concept-article # Redistribute Visual C++ files > [!NOTE] -> Are you here because you're looking for a download of one of the Visual C++ Runtime files? Go to the [latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) page. +> Are you here because you're looking for a download of one of the Visual C++ runtime files? Go to the [latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) page. ## Redistributable files and licensing -Distribution of the Visual C++ Runtime Redistributable Package, merge modules, and individual binaries is limited to licensed Visual Studio users and is subject to Microsoft Software License Terms. +Distribution of the Visual C++ Runtime Redistributable package, merge modules, and individual binaries is limited to licensed Visual Studio users and is subject to Microsoft Software License Terms. -When you deploy an application, you must also deploy the files that are required to support it. If any of these files are provided by Microsoft, check whether you're permitted to redistribute them. You can find a link to the Visual Studio license terms in the IDE. In the **About Microsoft Visual Studio** dialog, select the **License Terms** link. You can also download the relevant Microsoft Software License Terms and licenses from the Visual Studio [License Directory](https://visualstudio.microsoft.com/license-terms/). +When you deploy an application, you must also deploy the files that are required to support it. If Microsoft provides any of these files, check whether you're permitted to redistribute them. You can find a link to the Visual Studio license terms in the IDE. In the **About Microsoft Visual Studio** dialog, select the **License Terms** link. You can also download the relevant Microsoft Software License Terms and licenses from the Visual Studio [License Directory](https://visualstudio.microsoft.com/license-terms/). ::: moniker range="msvc-170" @@ -48,15 +48,15 @@ To deploy redistributable files, you can use the redistributable packages instal The easiest way to locate the redistributable files is by using environment variables set in a developer command prompt. In Visual Studio 2022, the redistributable files are in the `%VCINSTALLDIR%Redist\MSVC\v143` folder. In the latest version of Visual Studio 2019, you can find the redistributable files in the `%VCINSTALLDIR%Redist\MSVC\v142` folder. In both Visual Studio 2017 and Visual Studio 2019, the files are also found in `%VCToolsRedistDir%`. In Visual Studio 2015, you can find these files in `%VCINSTALLDIR%redist\`, where `` is the locale of the redistributable packages. -In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named Visual C++ \ Redistributable MSMs in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When they're installed in Visual Studio 2022, you can find the redistributable merge modules in `%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`. - +In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named Visual C++ \ Redistributable merge modules in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When they're installed in Visual Studio 2022, you can find the redistributable merge modules in `%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`. +` In the latest version of Visual Studio 2019, the redistributable merge modules are found in `%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`. In both Visual Studio 2019 and Visual Studio 2017, they're also found in `%VCToolsRedistDir%MergeModules`. In Visual Studio 2015, they're found in `Program Files [(x86)]\Common Files\Merge Modules`. ## Install the redistributable packages -The Visual C++ Redistributable Packages install and register all Visual C++ libraries. If you use one, run it as a prerequisite on the target system before you install your application. We recommend that you use these packages for your deployments because they enable automatic updating of the Visual C++ libraries. For an example that shows how to use these packages, see [Walkthrough: Deploy a Visual C++ application by using the Visual C++ Redistributable Package](deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md). +The Visual C++ Redistributable packages install and register all Visual C++ libraries. If you use one, run it as a prerequisite on the target system before you install your application. We recommend that you use these packages for your deployments because they enable automatic updating of the Visual C++ libraries. For an example that shows how to use these packages, see [Walkthrough: Deploy a Visual C++ application by using the Visual C++ Redistributable package](deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md). -Each Visual C++ Redistributable Package checks for the existence of a more recent version on the machine. If a more recent version is found, the package isn't installed. In Visual Studio 2015 or later, redistributable packages display an error message stating that setup failed. If a package uses the `/quiet` flag to run, no error message appears. In either case, the Microsoft installer logs the error, and an error result is returned to the caller. +Each Visual C++ Redistributable package checks for the existence of a more recent version on the machine. If a more recent version is found, the package isn't installed. In Visual Studio 2015 or later, redistributable packages display an error message stating that setup failed. If a package uses the `/quiet` flag to run, no error message appears. In either case, the Microsoft installer logs the error, and an error result is returned to the caller. In Visual Studio 2015 and later, you can avoid this error by checking the registry to find out if a more recent version is installed. The current installed version number is stored in the `HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\{x86|x64|arm64}` key. @@ -79,7 +79,7 @@ vc_redist.x64.exe /install /passive /norestart ## Install the redistributable merge modules > [!IMPORTANT] -> Merge modules (`.msm` files) for Visual C++ Redistributable files are deprecated. We don't recommend that you use them for application deployment. Instead, we recommend central deployment of the Visual C++ Redistributable Package. Central deployment by a redistributable package makes it possible for Microsoft to service runtime library files independently. An uninstall of your app can't affect other applications that also use central deployment. +> Merge modules (`.msm` files) for Visual C++ Redistributable files are deprecated. We don't recommend that you use them for application deployment. Instead, we recommend central deployment of the Visual C++ Redistributable package. Central deployment by a redistributable package makes it possible for Microsoft to service runtime library files independently. An uninstall of your app can't affect other applications that also use central deployment. > > When you use a redistributable package for central deployment, you aren't responsible for tracking and maintaining the runtime libraries. Otherwise, an update to the runtime library files requires you to update and redeploy your *`.msi`* installer. Your app could be vulnerable to bugs or security issues until you do. diff --git a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md index f0f3195aff1..0fb42c9dad1 100644 --- a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md +++ b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md @@ -1,21 +1,21 @@ --- -title: Troubleshoot Visual C++ Redistributable Installation Issues -description: This article provides steps to help you diagnose and resolve issues when you install the Visual C++ Redistributable. +title: Troubleshoot Visual C++ Redistributable Installation Problems +description: This article provides steps to help you diagnose and resolve problems when you install the Visual C++ Redistributable. author: vicroms ms.author: viromer ms.date: 02/12/2026 ms.topic: troubleshooting-general helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC Redist" ] --- -# Troubleshoot Visual C++ Redistributable installation issues +# Troubleshoot Visual C++ Redistributable installation problems -This article is for users who experience issues when they install Visual C++ Runtime components by using the Visual Studio Installer or the Visual C++ Redistributable (VC Redist) installer. +This article is for users who experience problems when they install Visual C++ runtime components by using the Visual Studio Installer or the Visual C++ Redistributable (VC Redist) installer. -If you experience any issues, make sure that you're installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). +If you experience any problems, make sure that you're installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). ## Collect failure logs -The first step to diagnose an issue with the Visual C++ Redistributable installer is to collect its failure logs. +The first step to diagnose an problem with the Visual C++ Redistributable installer is to collect its failure logs. 1. Download the [Microsoft Visual Studio and .NET Log Collection Tool](). 1. Run `Collect.exe`. @@ -23,11 +23,11 @@ The first step to diagnose an issue with the Visual C++ Redistributable installe After you extract `vscollect.zip`, the VC Redist logs are located inside the `Temp` folder. The relevant log files are prefixed with the pattern `dd_vcredist__yyyyMMddHHmmss`. -Search the VC Redist logs for terms like "Error," "Failed," or "System Error," and consult the [Common errors at a glance](#common-errors-at-a-glance) section to identify the issue. +Search the VC Redist logs for terms like "Error," "Failed," or "System Error," and consult the [Common errors at a glance](#common-errors-at-a-glance) section to identify the problem. ### Other log locations -The VC Redist installer is often executed as a prerequisite of other products. In such cases, you might find the installation log in a different path. +The VC Redist installer is often run as a prerequisite of other products. In such cases, you might find the installation log in a different path. For example, [Configuration Manager](/intune/configmgr/core/understand/introduction) upgrades VC Redist as part of its own upgrade process by running `vcredist_x64.exe` with the `/l` option that overrides the default log location. @@ -47,7 +47,7 @@ In such cases, you can find the path to the logs by reading that product's own l ## General troubleshooting steps when using the Visual C++ Redistributable installer -This section describes general troubleshooting methods that you can try to resolve issues with the VC Redist installer. +This section describes general troubleshooting methods that you can try to resolve problems with the VC Redist installer. ### Disable antivirus software temporarily @@ -70,7 +70,7 @@ File-access failures are heavily correlated with insufficient permissions. ### Check for Windows updates -On rare occasions, outdated system components can cause installation issues. +On rare occasions, outdated system components can cause installation problems. 1. Go to Windows Update and install all pending updates. 1. Reboot your PC. @@ -81,7 +81,7 @@ On rare occasions, outdated system components can cause installation issues. ### Manually install Visual C++ Redistributable > [!NOTE] -> The Visual Studio Installer might prompt for a reboot when VC Redist is installed separately. +> The Visual Studio Installer might prompt for a restart when VC Redist is installed separately. 1. Download the [latest VC Redist installer](latest-supported-vc-redist.md). 1. Run the VC Redist installer. @@ -115,7 +115,7 @@ This method helps if the installer metadata is corrupted. Deleting the installer 1. Delete the folder `C:\Program Files (x86)\Microsoft Visual Studio\Installer`. You might be prompted to run this operation as an administrator. 1. Run `VisualStudioSetup.exe`. -## Common issues +## Common problems ### Common errors at a glance @@ -127,16 +127,16 @@ This method helps if the installer metadata is corrupted. Deleting the installer ### Generic installation failure -Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. +Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ runtime components. -Because many factors can produce a 1603 code, the code by itself doesn't provide enough information to diagnose the cause of the issue. Often, the log files produced by the VC Redist installer contain relevant information that might lead to a solution or workaround. +Because many factors can produce a 1603 code, the code by itself doesn't provide enough information to diagnose the cause of the problem. Often, the log files produced by the VC Redist installer contain relevant information that might lead to a solution or workaround. -The [Common issues](#common-issues) section describes examples of how to diagnose common installation errors and steps that might resolve them. -If your issue isn't found here, follow the instructions to [report an issue in the Visual C++ Redistributable installer](#report-a-visual-c-redistributable-installation-problem). +The [Common problems](#common-problems) section describes examples of how to diagnose common installation errors and steps that might resolve them. +If your problem isn't found here, follow the instructions to [report a problem in the Visual C++ Redistributable installer](#report-a-visual-c-redistributable-installation-problem). ### Access denied -Installation fails with error code 5. This error code typically indicates a permissions issue. Specifically, the issue is access denied. +Installation fails with error code 5. This error code typically indicates a permissions problem. Specifically, the problem is access denied. #### Steps to resolve @@ -159,13 +159,13 @@ If the installation fails, try to restart your PC to release any locked files. ### Corrupt or invalid installer package -Installation fails with error code 1620. This error code indicates that a Windows Installer package (MSI) couldn't be opened. The issue is likely because of corruption or invalid files. +Installation fails with error code 1620. This error code indicates that a Windows Installer package (MSI) couldn't be opened. The problem is likely because of corruption or invalid files. The presence of these error messages indicates a corrupted cache. - **Error code 1620**: Indicates that the Windows Installer package couldn't be opened. - **Error code 0x80091007**: Indicates that several payloads failed verification because of hash mismatches. -- **Error code 0x80070654**: Occurs when an MSI package fails to execute. +- **Error code 0x80070654**: Occurs when an MSI package fails to run. #### Steps to resolve @@ -208,11 +208,11 @@ Error 1714. The older version of Microsoft Visual C++ 2022 X64 Minimum Runtime - #### Steps to resolve -From the log files, make a note of the VC Redist version causing the issue. Two methods are available to resolve the issue: +From the log files, make a note of the VC Redist version causing the problem. Two methods are available to resolve the problem: - **Method 1:** Use the Windows Installer. - 1. Try using the Windows Installer to manually remove the old VC Redist version. If prompted, let the Windows Installer Troubleshooter attempt to fix the issue. + 1. Try using the Windows Installer to manually remove the old VC Redist version. If prompted, let the Windows Installer Troubleshooter attempt to fix the problem. 1. Retry the installation. - **Method 2:** Manually remove the old version. @@ -243,22 +243,22 @@ You might be able to find installers for older versions through a Bing search. O ## Report a Visual C++ Redistributable installation problem -The list of [common issues](#common-issues) was collected from feedback reported to Microsoft through the [Developer Community](). +The list of [common problems](#common-problems) was collected from feedback reported to Microsoft through the [Developer Community](). -If you encounter an issue not found in that section, or if the steps in this troubleshooting guide don't resolve your issue, use the [Report a Problem]() form to create a new feedback item. +If you encounter an problem not found in that section, or if the steps in this troubleshooting guide don't resolve your problem, use the [Report a Problem]() form to create a new feedback item. Your report must include the following information about your environment: - The version of VC Redist you're trying to install. - If you're upgrading, the version of previously installed VC Redist installations. - If you're installing through the Visual Studio Installer, the version of the Visual Studio Installer. -- The logs collected by following the steps in the [Collect failure logs](#collect-failure-logs) section. +- The logs collected when you follow the steps in the [Collect failure logs](#collect-failure-logs) section. -Feedback without this information, especially without logs, is nonactionable and might be closed if more information isn't submitted promptly. +Feedback without this information, especially without logs, is non-actionable and might be closed if more information isn't submitted promptly. ## Related content - [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) -- [Audit Visual C++ Runtime version usage](redist-version-auditing.md) -- [Lifecycle FAQ: Visual C++ Redistributable and Runtime Libraries](/lifecycle/faq/visual-c-faq) +- [Audit Visual C++ runtime version usage](redist-version-auditing.md) +- [Lifecycle FAQ: Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) From 45d8529b190b2439a66618167583243b07fd7a93 Mon Sep 17 00:00:00 2001 From: ChanPark Date: Thu, 5 Mar 2026 22:37:22 -0800 Subject: [PATCH 362/619] Revise screenshots --- docs/embedded/media/serial-monitor-vscode.png | Bin 30294 -> 45810 bytes docs/embedded/media/serial-monitor.png | Bin 28291 -> 27462 bytes docs/embedded/serial-monitor.md | 41 ++++++------------ 3 files changed, 14 insertions(+), 27 deletions(-) diff --git a/docs/embedded/media/serial-monitor-vscode.png b/docs/embedded/media/serial-monitor-vscode.png index 29a6c931e11e5f04eda11626da1373f233ce1fe1..08c640ae17ed27357af7fc4b09b15d96fb3db95b 100644 GIT binary patch literal 45810 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 r0TfNXdsd)RoOjHl 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 RlHUS8FI2RZYZPC-|9?jNNlO3# literal 30294 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 diff --git a/docs/embedded/media/serial-monitor.png b/docs/embedded/media/serial-monitor.png index e247eef5e74d46d6d2facf694a69ae6b056546d6..633e19edd21760ad590724eb663020b659ae916f 100644 GIT binary patch literal 27462 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 literal 28291 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%0Df|>ST^x_-EN$+!ktA4RPfj|MbDilidKu`Rom{X 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 **Manage Extensions**. Search for **Serial Monitor 2** in the extensions marketplace. Select **Install** and then restart Visual Studio to complete the installation. -:::image type="complex" source="./media/serial-monitor.png" alt-text="Screenshot of the Visual Studio Serial Monitor window."::: -The window is split into two sections. The top section shows the monitoring mode (serial), Port (virtual COM port COM3), baud rate (115200), line ending (None), and a Stop monitoring button. The bottom section shows the messages, consisting of four lines of the text Hello, World! -:::image-end::: +To activate the Serial Monitor window, select **Tools** from the menu bar and then choose **Serial Monitor 2**. + +:::image type="content" source="media/serial-monitor.png" alt-text="Screenshot of the Visual Studio Serial Monitor window."::: ## Capabilities -- **Monitor a serial port**: Choose the **Start Monitoring** or **Stop Monitoring** button to control whether to monitor data coming from the port. -- **Send data to a serial port**: Enter text into the text field at the bottom of the view. Use the **Enter** key or choose the **Send Message** arrow button to send the data. -- **Clear the Serial Monitor output**: Choose the **Clear Output** button to clear the incoming data text field. -- **Send preset control signals**: Use the split-button next to the input field to send preset control signals (Ctrl+C, Ctrl+D, Ctrl+X, and Ctrl+Z). +- **Send data to a serial port**: Enter text into the **Command** text field at the bottom of the view. Select **Send** to send the data. - **Configure Serial Monitor and port connection settings**: See the following table to learn about the settings that the Serial Monitor provides. ## Configurable settings @@ -33,28 +30,20 @@ The window is split into two sections. The top section shows the monitoring mode | Settings | Description | Usage | Available options | |--|--|--|--| | **Port** | Ports that are actively connected to a device | Use the **Port** dropdown | Serial port compatible devices connected to the machine | -| **Baud Rate** | Frequency at which the monitor attempts to communicate with the connected device | Use the **Baud Rate** dropdown | 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230000, 250000 | -| **Line Ending** | The line ending to use in messages sent to the connected device | Use the **Line Ending** dropdown | None, LF, CR, CRLF | -| **Timestamp** | Adds timestamps to the output of data received from the connected port | Use the **timestamp** toggle button | On/Off | -| **Autoscroll** | Whether to auto-scroll new content that comes from the connected port | Use the **autoscroll** toggle button | On/Off | -| **Automatic Reconnection** | Allows for automatic reconnection and monitoring of disconnected selected ports | Use the **automatic reconnection** toggle button in **Serial** mode | On/Off | -| **Message Encoding** | Can select type of encoding for messages sent to serial port | Use the **message encoding** dropdown in **Serial** mode | Text (utf8), Hex, Binary | +| **Baud rate** | Frequency at which the monitor attempts to communicate with the connected device | Use the **Baud Rate** dropdown | 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230000, 250000 | +| **Encoding** | Can select type of encoding for messages sent to serial port | Use the **Encoding** dropdown in **Serial** mode | Text (utf8), Hex, Binary | | **Data bits** | Can select how many data bits are used for the serial port connection | Use the **Data bits** dropdown in the **additional settings** | 5, 6, 7, 8 | | **Stop bits** | Can select how many stop bits are used for the serial port connection | Use the **Stop bits** dropdown in the **additional settings** | 1, 1.5, 2 | | **Parity** | Can select what parity is used for the serial port connection | Use the **Parity** dropdown in the **additional settings** | None, Odd, Even, Mark, Space | -| **File Logging** | Allows the ability to log output to a file | Use the **file logging** toggle button, as well as the **Choose Log File Directory** button to choose the desired directory in the **additional settings** | On/Off | +| **File Logging** | Allows the ability to log output to a file | Use the **file logging** toggle button, as well as the **Record file path** button to choose the desired directory | On/Off | # [Visual Studio Code](#tab/visual-studio-code) To install Serial Monitor in Visual Studio Code, open the extensions marketplace and then search for **Serial Monitor**. Select **Install**. -:::image type="complex" source="./media/serial-monitor-vscode.png" alt-text="Screenshot of the VS Code Serial Monitor window."::: -The window is split into two sections. The top section shows the monitoring mode (serial), Port (virtual COM port COM3), baud rate (115200), line ending (None), and a Stop monitoring button. The bottom section where messages are displayed is empty. -:::image-end::: +To activate the Serial Monitor window, select **Terminal** from the menu bar and choose **New Terminal**. Then select **Serial Monitor** from the tabs. -:::image type="complex" source="./media/serial-monitor-vscode-tcp.png" alt-text="Screenshot of the VS Code TCP Serial Monitor window."::: -The window is split into two sections. The top section shows the monitoring mode (TCP), Host (::1), Port (1234), and a Start monitoring button. The bottom section shows the messages, starting with "Opening the TCP connection on ::1:1234. Then Connected to ::1:1234. Then five lines of the text Hello, World!. Then Closed the TCP connection ::1:1234. -:::image-end::: +:::image type="content" source="media/media/serial-monitor-vscode.png" alt-text="Screenshot of the VS Code Serial Monitor window."::: ## Capabilities @@ -65,15 +54,13 @@ The window is split into two sections. The top section shows the monitoring mode - **Clear the Serial Monitor output**: Choose the **Clear Output** button to clear the incoming data text field. - **Send preset control signals**: Use the split-button next to the input field to send preset control signals (Ctrl+C, Ctrl+D, Ctrl+X, and Ctrl+Z). - **Configure Serial Monitor and connection settings**: See the following table to learn about the settings that the Serial Monitor provides. -- **Clear the Serial Monitor output**: Choose the **Clear Output** button to clear the incoming data text field. -- **Send preset control signals**: Use the split-button next to the input field to send preset control signals (Ctrl+C, Ctrl+D, Ctrl+X, and Ctrl+Z). ## Configurable settings | Settings | Description | Usage | Available options | |--|--|--|--| | **Port** | Ports that are actively connected to a device | Use the **Port** dropdown in **Serial** mode | Serial port compatible devices connected to the machine | -| **Baud Rate** | Frequency at which the monitor attempts to communicate with the connected device | Use the **Baud Rate** dropdown in **Serial** mode | 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230000, 250000 | +| **Baud rate** | Frequency at which the monitor attempts to communicate with the connected device | Use the **Baud rate** dropdown in **Serial** mode | 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 74880, 115200, 230000, 250000 | | **Host** | Name of your host address | Use the **Host** text box to enter your host name in **TCP** mode | Any string that matches a valid host | | **Port** | The port number of your address | Use the **Port** text box in **TCP** mode | Any valid TCP port | | **Line Ending** | The line ending to use in messages sent to the connected device | Use the **Line Ending** dropdown in **Serial** mode | None, LF, CR, CRLF | @@ -81,13 +68,13 @@ The window is split into two sections. The top section shows the monitoring mode | **RTS** | Allows the RTS COM output line to be manually set | Use the **RTS** checkbox | True/False | | **Timestamp** | Adds timestamps to the output of data received from the connected port | Use the **timestamp** toggle button | On/Off | | **Autoscroll** | Whether to auto-scroll new content that comes from the connected port | Use the **autoscroll** toggle button | On/Off | -| **Automatic Reconnection** | Allows for automatic reconnection and monitoring of disconnected selected ports | Use the **automatic reconnection** toggle button | On/Off| -| **Message Echoing** | Allows the ability to echo/not echo messages you send | Use the **message echoing** toggle button | On/Off | -| **Message Encoding** | Can select type of encoding for messages sent to serial port | Use the **message encoding** dropdown | Text (utf8), Hex, Binary | +| **Automatic reconnection** | Allows for automatic reconnection and monitoring of disconnected selected ports | Use the **automatic reconnection** toggle button | On/Off| +| **Message echoing** | Allows the ability to echo/not echo messages you send | Use the **message echoing** toggle button | On/Off | +| **Message encoding** | Can select type of encoding for messages sent to serial port | Use the **message encoding** dropdown | Text (utf8), Hex, Binary | | **Data bits** | Can select how many data bits are used for the serial port connection | Use the **Data bits** dropdown in the **additional settings** | 5, 6, 7, 8 | | **Stop bits** | Can select how many stop bits are used for the serial port connection | Use the **Stop bits** dropdown in the **additional settings** | 1, 1.5, 2 | | **Parity** | Can select what parity is used for the serial port connection | Use the **Parity** dropdown in the **additional settings** | None, Odd, Even, Mark, Space | -| **File Logging** | Allows the ability to log output to a file | Use the **file logging** toggle button, as well as the **Choose Log File Directory** button to choose the desired directory in the **additional settings** | On/Off | +| **File logging** | Allows the ability to log output to a file | Use the **file logging** toggle button, as well as the **Choose Log File Directory** button to choose the desired directory in the **additional settings** | On/Off | | **Serial Wire Output (SWO)** | Can enable Serial Wire Output (SWO) decoding | Use the **Serial Wire Output** toggle in the **additional settings** in **TCP** mode | On/Off | --- From 1806c960ad63b76881bae14c4a1b029b10a8be8e Mon Sep 17 00:00:00 2001 From: Michael Price Date: Fri, 6 Mar 2026 10:18:56 -0600 Subject: [PATCH 363/619] Fixing a couple more instances where 'app' appeared in the text. --- docs/porting/copilot-modernization-cpp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/porting/copilot-modernization-cpp.md b/docs/porting/copilot-modernization-cpp.md index aed4b2a0eac..d220de274d8 100644 --- a/docs/porting/copilot-modernization-cpp.md +++ b/docs/porting/copilot-modernization-cpp.md @@ -7,7 +7,7 @@ author: michaelbprice ms.author: miprice --- -# Using GitHub Copilot app modernization for C++ +# Using GitHub Copilot modernization for C++ GitHub Copilot modernization for C++ helps you upgrade C++ projects to newer MSVC Build Tools versions. If necessary, Copilot will upgrade your project's settings to use the latest MSVC, and then conduct a thorough assessment of the impact of those changes after executing a build. It develops a plan on how to address each identified problem. Once you approve the plan, the agent completes a sequence of tasks and validates that any changes resolved the identified problems. If there remains work to be done, the agent continues iterating until the problems are resolved or you discontinue the conversation. @@ -49,7 +49,7 @@ GitHub Copilot modernization is an agent that operates inside the GitHub Copilot #### For MSBuild-based codebases targeting an earlier version of MSVC Build Tools -The first time that you load a `.vcxproj` project that targets an earlier version of the MSVC Build Tools, you see an option to [upgrade project settings to use a newer version of the MSVC Build Tools](/visualstudio/install/setup-assistant). If you retarget any of your projects to a new version of MSVC Build Tools and GitHub Copilot app modernization for C++ is enabled, you receive an infobar in Visual Studio prompting you to use GitHub Copilot modernization for C++ to resolve any newly introduced build problems. Selecting **Run GitHub Copilot modernization for C++** launches the GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. +The first time that you load a `.vcxproj` project that targets an earlier version of the MSVC Build Tools, you see an option to [upgrade project settings to use a newer version of the MSVC Build Tools](/visualstudio/install/setup-assistant). If you retarget any of your projects to a new version of MSVC Build Tools and GitHub Copilot modernization for C++ is enabled, you receive an infobar in Visual Studio prompting you to use GitHub Copilot modernization for C++ to resolve any newly introduced build problems. Selecting **Run GitHub Copilot modernization for C++** launches the GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. ### Start the upgrade From d7497dd1ab8da51fd1cca7309243b80a9ff565a9 Mon Sep 17 00:00:00 2001 From: ChanPark Date: Fri, 6 Mar 2026 09:46:07 -0800 Subject: [PATCH 364/619] Fix typo --- docs/embedded/serial-monitor.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/embedded/serial-monitor.md b/docs/embedded/serial-monitor.md index 0479a785f13..8f396f4e72c 100644 --- a/docs/embedded/serial-monitor.md +++ b/docs/embedded/serial-monitor.md @@ -41,9 +41,9 @@ To activate the Serial Monitor window, select **Tools** from the menu bar and th To install Serial Monitor in Visual Studio Code, open the extensions marketplace and then search for **Serial Monitor**. Select **Install**. -To activate the Serial Monitor window, select **Terminal** from the menu bar and choose **New Terminal**. Then select **Serial Monitor** from the tabs. +To activate the Serial Monitor window, select **Terminal** from the menu bar and choose **New Terminal**. Then, select **Serial Monitor** from the tabs. -:::image type="content" source="media/media/serial-monitor-vscode.png" alt-text="Screenshot of the VS Code Serial Monitor window."::: +:::image type="content" source="media/serial-monitor-vscode.png" alt-text="Screenshot of the VS Code Serial Monitor window."::: ## Capabilities From bc511250ff125d722ac9530cc4ffcf5c57822f75 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 6 Mar 2026 11:19:16 -0800 Subject: [PATCH 365/619] cleanup --- .../ostream-iterator-class.md | 76 ++++++----- .../ostreambuf-iterator-class.md | 124 +++++++++--------- 2 files changed, 105 insertions(+), 95 deletions(-) diff --git a/docs/standard-library/ostream-iterator-class.md b/docs/standard-library/ostream-iterator-class.md index d3979aaccf5..ba6eb7c7afc 100644 --- a/docs/standard-library/ostream-iterator-class.md +++ b/docs/standard-library/ostream-iterator-class.md @@ -35,31 +35,31 @@ The ostream_iterator class must satisfy the requirements for an output iterator. |Constructor|Description| |-|-| -|[ostream_iterator](#ostream_iterator)|Constructs an `ostream_iterator` that is initialized and delimited to write to the output stream.| +|[`ostream_iterator`](#ostream_iterator)|Constructs an `ostream_iterator` that is initialized and delimited to write to the output stream.| ### Typedefs |Type name|Description| |-|-| -|[char_type](#char_type)|A type that provides for the character type of the `ostream_iterator`.| -|[ostream_type](#ostream_type)|A type that provides for the stream type of the `ostream_iterator`.| -|[traits_type](#traits_type)|A type that provides for the character traits type of the `ostream_iterator`.| +|[`char_type`](#char_type)|A type that provides for the character type of the `ostream_iterator`.| +|[`ostream_type`](#ostream_type)|A type that provides for the stream type of the `ostream_iterator`.| +|[`traits_type`](#traits_type)|A type that provides for the character traits type of the `ostream_iterator`.| ### Operators |Operator|Description| |-|-| -|[operator*](#op_star)|Dereferencing operator used to implement the output iterator expression \* `i` = `x`.| -|[operator++](#op_add_add)|A nonfunctional increment operator that returns an `ostream_iterator` to the same object it addressed before the operation was called.| -|[operator=](#op_eq)|Assignment operator used to implement the output iterator expression \* `i` = `x` for writing to an output stream.| +|[`operator*`](#op_star)|Dereferencing operator used to implement the output iterator expression `*i = x`.| +|[`operator++`](#op_add_add)|A nonfunctional increment operator that returns an `ostream_iterator` to the same object it addressed before the operation was called.| +|[`operator=`](#op_eq)|Assignment operator used to implement the output iterator expression `*i = x` for writing to an output stream.| ## Requirements **Header:** \ -**Namespace:** std +**Namespace:** `std` -## ostream_iterator::char_type +## `ostream_iterator::char_type` A type that provides for the character type of the iterator. @@ -108,9 +108,9 @@ by intOut are: */ ``` -## ostream_iterator::operator* +## `ostream_iterator::operator*` -Dereferencing operator used to implement the output iterator expression \* *ii* = *x*. +Dereferencing operator used to implement the output iterator expression `*ii = x`. ```cpp ostream_iterator& operator*(); @@ -149,15 +149,16 @@ int main( ) *intOut = 20; *intOut = 30; } -/* Output: +``` + +```output Elements written to output stream: 10 20 30 -*/ ``` -## ostream_iterator::operator++ +## `ostream_iterator::operator++` A nonfunctional increment operator that returns an `ostream_iterator` to the same object it addressed before the operation was called. @@ -199,17 +200,18 @@ int main( ) *intOut = 20; *intOut = 30; } -/* Output: +``` + +```output Elements written to output stream: 10 20 30 -*/ ``` -## ostream_iterator::operator= +## `ostream_iterator::operator=` -Assignment operator used to implement the output_iterator expression \* `i` = `x` for writing to an output stream. +Assignment operator used to implement the output_iterator expression `*i = x` for writing to an output stream. ```cpp ostream_iterator& operator=(const Type& val); @@ -217,16 +219,16 @@ ostream_iterator& operator=(const Type& val); ### Parameters -*val*\ +*`val`*\ The value of the object of type `Type` to be inserted into the output stream. ### Return Value -The operator inserts *val* into the output stream associated with the object, followed by the delimiter specified in the [ostream_iterator constructor](#ostream_iterator) (if any), and then returns a reference to the `ostream_iterator`. +The operator inserts *`val`* into the output stream associated with the object, followed by the delimiter specified in the [`ostream_iterator` constructor](#ostream_iterator) (if any), and then returns a reference to the `ostream_iterator`. ### Remarks -The requirements for an output iterator that the `ostream_iterator` must satisfy require only the expression \* `ii` = `t` be valid and says nothing about the operator or the operator= on their own. This member operator returns **`*this`**. +The requirements for an output iterator that the `ostream_iterator` must satisfy require only the expression `*ii = t` be valid and says nothing about the `operator*` or the `operator=` on their own. This member operator returns **`*this`**. ### Example @@ -253,15 +255,16 @@ int main( ) *intOut = 20; *intOut = 30; } -/* Output: +``` + +```output Elements written to output stream: 10 20 30 -*/ ``` -## ostream_iterator::ostream_iterator +## `ostream_iterator::ostream_iterator` Constructs an `ostream_iterator` that is initialized and delimited to write to the output stream. @@ -276,17 +279,17 @@ ostream_iterator( ### Parameters -*_Ostr*\ -The output stream of type [ostream_iterator::ostream_type](#ostream_type) to be iterated over. +*`_Ostr`*\ +The output stream of type [`ostream_iterator::ostream_type`](#ostream_type) to be iterated over. -*_Delimiter*\ +*`_Delimiter`*\ The delimiter that is inserted into the output stream between values. ### Remarks The first constructor initializes the output stream pointer with `&_Ostr`. The delimiter string pointer designates an empty string. -The second constructor initializes the output stream pointer with `&_Ostr` and the delimiter string pointer with *_Delimiter*. +The second constructor initializes the output stream pointer with `&_Ostr` and the delimiter string pointer with *`_Delimiter`*. ### Example @@ -327,15 +330,15 @@ int main( ) ostream_iterator ( cout, " : " ) ); cout << endl; } -/* Output: +``` +```output 10 20 Elements output without delimiter: 123456 Elements output with delimiter: 1 : 2 : 3 : 4 : 5 : 6 : -*/ ``` -## ostream_iterator::ostream_type +## `ostream_iterator::ostream_type` A type that provides for the stream type of the iterator. @@ -345,13 +348,13 @@ typedef basic_ostream ostream_type; ### Remarks -The type is a synonym for [basic_ostream](../standard-library/basic-ostream-class.md)< `CharType`, `Traits`>, a stream class of the iostream hierarchy that defines objects that can be used for writing. +The type is a synonym for [`basic_ostream`](../standard-library/basic-ostream-class.md)< `CharType`, `Traits`>, a stream class of the iostream hierarchy that defines objects that can be used for writing. ### Example -See [ostream_iterator](#ostream_iterator) for an example of how to declare and use `ostream_type`. +See [`ostream_iterator`](#ostream_iterator) for an example of how to declare and use `ostream_type`. -## ostream_iterator::traits_type +## `ostream_iterator::traits_type` A type that provides for the character traits type of the iterator. @@ -392,13 +395,14 @@ int main( ) *intOut = 10; *intOut = 100; } -/* Output: +``` + +```output The integers written to output stream by intOut are: 1 10 100 -*/ ``` ## See also diff --git a/docs/standard-library/ostreambuf-iterator-class.md b/docs/standard-library/ostreambuf-iterator-class.md index dfe0546ad27..dd59e727723 100644 --- a/docs/standard-library/ostreambuf-iterator-class.md +++ b/docs/standard-library/ostreambuf-iterator-class.md @@ -5,9 +5,9 @@ ms.date: 11/04/2016 f1_keywords: ["streambuf/std::ostreambuf_iterator", "iterator/std::ostreambuf_iterator::char_type", "iterator/std::ostreambuf_iterator::ostream_type", "iterator/std::ostreambuf_iterator::streambuf_type", "iterator/std::ostreambuf_iterator::traits_type", "iterator/std::ostreambuf_iterator::failed"] helpviewer_keywords: ["std::ostreambuf_iterator [C++]", "std::ostreambuf_iterator [C++], char_type", "std::ostreambuf_iterator [C++], ostream_type", "std::ostreambuf_iterator [C++], streambuf_type", "std::ostreambuf_iterator [C++], traits_type", "std::ostreambuf_iterator [C++], failed"] --- -# ostreambuf_iterator Class +# `ostreambuf_iterator` class -The class template ostreambuf_iterator describes an output iterator object that writes successive character elements onto the output stream with the extraction **operator>>**. The `ostreambuf_iterator`s differ from those of the [ostream_iterator Class](../standard-library/ostream-iterator-class.md) in having characters instead of a generic type at the type of object being inserted into the output stream. +The class template `ostreambuf_iterator` describes an output iterator object that writes successive character elements onto the output stream with the extraction `operator>>`. The `ostreambuf_iterator`s differ from those of the [`ostream_iterator` Class](../standard-library/ostream-iterator-class.md) in having characters instead of a generic type at the type of object being inserted into the output stream. ## Syntax @@ -17,11 +17,11 @@ template > ### Parameters -*CharType*\ +*`CharType`*\ The type that represents the character type for the ostreambuf_iterator. This argument is optional and the default value is **`char`**. -*Traits*\ -The type that represents the character type for the ostreambuf_iterator. This argument is optional and the default value is `char_traits`\< *CharType>.* +*`Traits`*\ +The type that represents the character type for the ostreambuf_iterator. This argument is optional and the default value is `char_traits`. ## Remarks @@ -31,38 +31,38 @@ The ostreambuf_iterator class must satisfy the requirements for an output iterat |Constructor|Description| |-|-| -|[ostreambuf_iterator](#ostreambuf_iterator_ostreambuf_iterator)|Constructs an `ostreambuf_iterator` that is initialized to write characters to the output stream.| +|[`ostreambuf_iterator`](#ostreambuf_iterator_ostreambuf_iterator)|Constructs an `ostreambuf_iterator` that is initialized to write characters to the output stream.| ### Typedefs |Type name|Description| |-|-| -|[char_type](#char_type)|A type that provides for the character type of the `ostreambuf_iterator`.| -|[ostream_type](#ostreambuf_iterator_ostream_type)|A type that provides for the stream type of the `ostream_iterator`.| -|[streambuf_type](#streambuf_type)|A type that provides for the stream type of the `ostreambuf_iterator`.| -|[traits_type](#traits_type)|A type that provides for the character traits type of the `ostream_iterator`.| +|[`char_type`](#char_type)|A type that provides for the character type of the `ostreambuf_iterator`.| +|[`ostream_type`](#ostreambuf_iterator_ostream_type)|A type that provides for the stream type of the `ostream_iterator`.| +|[`streambuf_type`](#streambuf_type)|A type that provides for the stream type of the `ostreambuf_iterator`.| +|[`traits_type`](#traits_type)|A type that provides for the character traits type of the `ostream_iterator`.| ### Member functions |Member function|Description| |-|-| -|[failed](#failed)|Tests for failure of an insertion into the output stream buffer.| +|[`failed`](#failed)|Tests for failure of an insertion into the output stream buffer.| ### Operators |Operator|Description| |-|-| -|[operator*](#op_star)|Dereferencing operator used to implement the output iterator expression \* `i` = `x`.| -|[operator++](#op_add_add)|A nonfunctional increment operator that returns an `ostreambuf_iterator` to the same object it addressed before the operation was called.| -|[operator=](#op_eq)|The operator inserts a character into the associated stream buffer.| +|[`operator*`](#op_star)|Dereferencing operator used to implement the output iterator expression `*i = x`.| +|[`operator++`](#op_add_add)|A nonfunctional increment operator that returns an `ostreambuf_iterator` to the same object it addressed before the operation was called.| +|[`operator=`](#op_eq)|The operator inserts a character into the associated stream buffer.| ## Requirements -**Header:** \ +**Header:** `` -**Namespace:** std +**Namespace:** `std` -## ostreambuf_iterator::char_type +## `ostreambuf_iterator::char_type` A type that provides for the character type of the `ostreambuf_iterator`. @@ -106,13 +106,13 @@ int main( ) charOutBuf++; cout << "." << endl; } -/* Output: -The characters written to the output stream -by charOutBuf are: OUT. -*/ ``` -## ostreambuf_iterator::failed +```output +OUT. +``` + +## `ostreambuf_iterator::failed` Tests for failure of an insertion into the output stream buffer. @@ -126,7 +126,7 @@ bool failed() const throw(); ### Remarks -The member function returns **`true`** if, in any prior use of member `operator=`, the call to **subf**_-> `sputc` returned **eof**. +The member function returns **`true`** if any prior attempt to insert a character into the output stream buffer was unsuccessful. ### Example @@ -157,15 +157,16 @@ int main( ) else cout << "No insertions failed." << endl; } -/* Output: +``` + +```output abc are characters output individually. No insertions failed. -*/ ``` -## ostreambuf_iterator::operator\* +## `ostreambuf_iterator::operator*` -A nonfunctional dereferencing operator used to implement the output iterator expression \* *i* = *x*. +A nonfunctional dereferencing operator used to implement the output iterator expression `*i = x`. ```cpp ostreambuf_iterator& operator*(); @@ -177,7 +178,7 @@ The ostreambuf iterator object. ### Remarks -This operator functions only in the output iterator expression \* *i* = *x* to output characters to stream buffer. Applied to an ostreambuf iterator, it returns the iterator; **\*iter** returns **iter**, +This operator functions only in the output iterator expression `*i = x` to output characters to stream buffer. Applied to an `ostreambuf_iterator`, it returns the iterator; `*iter` returns `iter`. ### Example @@ -188,7 +189,7 @@ This operator functions only in the output iterator expression \* *i* = *x* to o #include #include -int main( ) +int main() { using namespace std; @@ -204,15 +205,16 @@ int main( ) *charOutBuf = 'U'; *charOutBuf = 'T'; } -/* Output: +``` + +```output Elements written to output stream: OUT -*/ ``` -## ostreambuf_iterator::operator++ +## `ostreambuf_iterator::operator++` -A nonfunctional increment operator that returns an ostream iterator to the same character it addressed before the operation was called. +A nonfunctional increment operator that returns an `ostreambuf_iterator` to the same character it addressed before the operation was called. ```cpp ostreambuf_iterator& operator++(); @@ -221,11 +223,11 @@ ostreambuf_iterator& operator++(int); ### Return Value -A reference to the character originally addressed or to an implementation-defined object that is convertible to `ostreambuf_iterator`\< **CharType**, **Traits**>. +A reference to the character originally addressed or to an implementation-defined object that is convertible to `ostreambuf_iterator< CharType, Traits>`. ### Remarks -The operator is used to implement the output iterator expression \* *i* = *x*. +The operator is used to implement the output iterator expression `*i = x`. ### Example @@ -252,13 +254,14 @@ int main( ) *charOutBuf = 'U'; *charOutBuf = 'T'; } -/* Output: +``` + +```output Elements written to output stream: OUT -*/ ``` -## ostreambuf_iterator::operator= +## `ostreambuf_iterator::operator=` The operator inserts a character into the associated stream buffer. @@ -268,7 +271,7 @@ ostreambuf_iterator& operator=(CharType _Char); ### Parameters -*_Char*\ +*`_Char`*\ The character to be inserted into the stream buffer. ### Return Value @@ -277,7 +280,7 @@ A reference to the character inserted into the stream buffer. ### Remarks -Assignment operator used to implement the output iterator expression \* *i* = *x* for writing to an output stream. +Assignment operator used to implement the output iterator expression `*i = x` for writing to an output stream. ### Example @@ -304,13 +307,14 @@ int main( ) *charOutBuf = 'U'; *charOutBuf = 'T'; } -/* Output: +``` + +```output Elements written to output stream: OUT -*/ ``` -## ostreambuf_iterator::ostreambuf_iterator +## `ostreambuf_iterator::ostreambuf_iterator` Constructs an `ostreambuf_iterator` that is initialized to write characters to the output stream. @@ -321,17 +325,17 @@ ostreambuf_iterator(ostream_type& Ostr) throw(); ### Parameters -*strbuf*\ +*`strbuf`*\ The output streambuf object used to initialize the output stream-buffer pointer. -*Ostr*\ +*`Ostr`*\ The output stream object used to initialize the output stream-buffer pointer. ### Remarks -The first constructor initializes the output stream-buffer pointer with *strbuf*. +The first constructor initializes the output stream-buffer pointer with *`strbuf`*. -The second constructor initializes the output stream-buffer pointer with `Ostr`. `rdbuf`. The stored pointer must not be a null pointer. +The second constructor initializes the output stream-buffer pointer with *`Ostr.rdbuf`. The stored pointer must not be a null pointer. ### Example @@ -342,7 +346,7 @@ The second constructor initializes the output stream-buffer pointer with `Ostr`. #include #include -int main( ) +int main() { using namespace std; @@ -360,13 +364,14 @@ int main( ) string str = "These characters are being written to the output stream.\n "; copy ( str.begin ( ), str. end ( ), strOut ); } -/* Output: +``` + +```output OUT are characters output individually. These characters are being written to the output stream. -*/ ``` -## ostreambuf_iterator::ostream_type +## `ostreambuf_iterator::ostream_type` A type that provides for the stream type of the `ostream_iterator`. @@ -376,13 +381,13 @@ typedef basicOstream ostream_type; ### Remarks -The type is a synonym for `basicOstream`\< **CharType**, **Traits**> +The type is a synonym for `basicOstream< CharType, Traits>` ### Example -See [ostreambuf_iterator](#ostreambuf_iterator_ostreambuf_iterator) for an example of how to declare and use `ostream_type`. +See [`ostreambuf_iterator`](#ostreambuf_iterator_ostreambuf_iterator) for an example of how to declare and use `ostream_type`. -## ostreambuf_iterator::streambuf_type +## `ostreambuf_iterator::streambuf_type` A type that provides for the stream type of the `ostreambuf_iterator`. @@ -392,13 +397,13 @@ typedef basic_streambuf streambuf_type; ### Remarks -The type is a synonym for `basic_streambuf`\< **CharType**, **Traits**>, a stream class for I/O buffers that becomes `streambuf` when specialized to character type **`char`**. +The type is a synonym for `basic_streambuf< CharType, Traits>`, a stream class for I/O buffers that becomes `streambuf` when specialized to character type **`char`**. ### Example -See [ostreambuf_iterator](#ostreambuf_iterator_ostreambuf_iterator) for an example of how to declare and use `streambuf_type`. +See [`ostreambuf_iterator`](#ostreambuf_iterator_ostreambuf_iterator) for an example of how to declare and use `streambuf_type`. -## ostreambuf_iterator::traits_type +## `ostreambuf_iterator::traits_type` A type that provides for the character traits type of the `ostream_iterator`. @@ -442,10 +447,11 @@ int main( ) charOutBuf++; cout << "." << endl; } -/* Output: +``` + +```output The characters written to the output stream by charOutBuf are: OUT. -*/ ``` ## See also From 50cfcca68ef3297c0de26f58ad54c2a33b935df5 Mon Sep 17 00:00:00 2001 From: paulth1 <42621139+paulth1@users.noreply.github.com> Date: Fri, 6 Mar 2026 11:27:05 -0800 Subject: [PATCH 366/619] edit pass: redistributing-microsoft-c++-files --- docs/windows/latest-supported-vc-redist.md | 36 +++++++++---------- docs/windows/redist-version-auditing.md | 6 ++-- .../windows/redistributing-the-mfc-library.md | 6 ++-- .../redistributing-visual-cpp-files.md | 12 +++---- ...-vc-redistributable-installation-issues.md | 10 +++--- 5 files changed, 35 insertions(+), 35 deletions(-) diff --git a/docs/windows/latest-supported-vc-redist.md b/docs/windows/latest-supported-vc-redist.md index 3b39b50097b..9e2e4b234e0 100644 --- a/docs/windows/latest-supported-vc-redist.md +++ b/docs/windows/latest-supported-vc-redist.md @@ -1,6 +1,6 @@ --- title: Latest Supported Visual C++ Redistributable Downloads -description: This article provides download links for the latest Visual C++ Redistributable Packages. +description: This article provides download links for the latest Visual C++ Redistributable packages. ms.date: 12/03/2025 helpviewer_keywords: [ @@ -20,7 +20,7 @@ ms.author: msaleh > [!NOTE] > Are you here to download Visual Studio? Go to [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/). -This article is for developers who need to install the Visual C++ runtime libraries with their app. If you're trying to fix an app by updating the Visual C++ runtime libraries, contact the app vendor for instructions. +This article is for developers who need to install the Visual C++ Runtime libraries with their app. If you're trying to fix an app by updating the Visual C++ Runtime libraries, contact the app vendor for instructions. To find the download you need, choose your version of Visual Studio from the following table. Each link takes you to the appropriate download section. @@ -39,13 +39,13 @@ To find the download you need, choose your version of Visual Studio from the fol Redistribution is permitted only for licensed Visual Studio users, as described in the [Visual Studio license terms](https://visualstudio.microsoft.com/license-terms/). For details on redistributing Visual C++ files, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). -A Visual C++ Redistributable installs Microsoft C and C++ runtime libraries. Many applications built by using Microsoft Visual C++ Build Tools require these libraries. If your app is built by using those libraries, a Microsoft Visual C++ Redistributable Package at least as recent as the build tools used to build your app must be installed on the target system along with the app. +A Visual C++ Redistributable installs Microsoft C and C++ Runtime libraries. Many applications built by using Microsoft Visual C++ (MSVC) Build Tools require these libraries. If your app is built by using those libraries, a Microsoft Visual C++ Redistributable package at least as recent as the build tools used to build your app must be installed on the target system along with the app. -The Redistributable package architecture must match your app's target architecture. (You can't install an ARM64 Redistributable on an x86 system or an x64 Redistributable on an x86 system, for example.) We recommend that you use the latest Redistributable available for your version of Visual Studio. +The redistributable package architecture must match your app's target architecture. (You can't install an ARM64 Redistributable on an x86 system or an x64 Redistributable on an x86 system, for example.) We recommend that you use the latest Redistributable available for your version of Visual Studio. ## Visual C++ v14 Redistributable -The following table lists the latest supported Microsoft Visual C++ v14 Redistributable Packages. The latest supported version has the most recently implemented C++ features, security, reliability, and performance improvements. It also includes the latest C++ standard language and library standards conformance updates. We recommend that you install this version for all applications created by using Microsoft C and C++ Build Tools available in Visual Studio 2017, 2019, 2022, or 2026. +The following table lists the latest supported Microsoft Visual C++ v14 Redistributable packages. The latest supported version has the most recently implemented C++ features, security, reliability, and performance improvements. It also includes the latest C++ standard language and library standards conformance updates. We recommend that you install this version for all applications created by using MSVC Build Tools available in Visual Studio 2017, 2019, 2022, or 2026. Unlike older versions of Visual Studio that have infrequent redistributable updates, the version number isn't listed in the following table for the Visual C++ v14 Redistributable because it's updated frequently. To find the version number of the latest redistributable, download the one you're interested in by using one of the following links. Then, look at its properties by using Windows File Explorer. On the **Details** pane, **File version** contains the version of the redistributable. @@ -55,7 +55,7 @@ Unlike older versions of Visual Studio that have infrequent redistributable upda |--|--|--| | ARM64 | [https://aka.ms/vc14/vc_redist.arm64.exe](https://aka.ms/vc14/vc_redist.arm64.exe) | Permalink for latest supported ARM64 version. | | X86 | [https://aka.ms/vc14/vc_redist.x86.exe](https://aka.ms/vc14/vc_redist.x86.exe) | Permalink for latest supported x86 version. | -| X64 | [https://aka.ms/vc14/vc_redist.x64.exe](https://aka.ms/vc14/vc_redist.x64.exe) | Permalink for latest supported x64 version. The X64 Redistributable Package contains both ARM64 and X64 binaries. This package makes it easy to install required Visual C++ ARM64 binaries when the X64 Redistributable is installed on an ARM64 device. | +| X64 | [https://aka.ms/vc14/vc_redist.x64.exe](https://aka.ms/vc14/vc_redist.x64.exe) | Permalink for latest supported x64 version. The X64 Redistributable package contains both ARM64 and X64 binaries. This package makes it easy to install required Visual C++ ARM64 binaries when the X64 Redistributable is installed on an ARM64 device. | Download other versions, including long-term servicing channel (LTSC) versions, from [Welcome to Dev Essentials](https://my.visualstudio.com/). @@ -63,15 +63,15 @@ Download other versions, including long-term servicing channel (LTSC) versions, - Some of the downloads that are mentioned in this article are currently available on [Welcome to Dev Essentials](https://my.visualstudio.com/). Sign in by using a Visual Studio subscription account so that you can access the download links. If you're asked for credentials, use your existing Visual Studio subscription account. Or to create a free account. select [No account? Create one!](https://my.visualstudio.com/). - The Visual C++ v14 Redistributable doesn't have separate packages for different languages. License terms for different languages are available at [Microsoft Software License Terms](https://aka.ms/VCRedistLicense). -- Visual Studio 2017 and later share the same redistributable files. Any apps built by Microsoft Visual C++ Build Tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ v14 Redistributable. +- Visual Studio 2017 and later share the same redistributable files. Any apps built by MSVC Build Tools v14.* available in Visual Studio 2017, 2019, 2022, or 2026 can use the latest Visual C++ v14 Redistributable. - The version of the Redistributable installed on the machine must be the same or later than the version of the Microsoft Visual C++ Build Tools used to create your application. For more information about which version of the Redistributable to install, see [Determine which dynamic-link libraries (DLLs) to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). + The version of the Redistributable installed on the machine must be the same or later than the version of the MSVC Build Tools used to create your application. For more information about which version of the redistributable to install, see [Determine which dynamic-link libraries (DLLs) to redistribute](determining-which-dlls-to-redistribute.md). For more information about binary compatibility, see [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md). - The latest version of the Visual C++ v14 Redistributable included with Visual Studio 2026 supports only the following operating systems: * Windows 10 and 11 * Windows Server 2016, 2019, 2022, and 2025 - Support for Visual Studio 2015 ended on October 15, 2025. Because support for the Visual C++ Redistributable is connected to the version of Visual Studio in which it first ships, support for Visual C++ 2015 Redistributable (version 14.0.24212) also ended October 15, 2025. For the latest available version, see the [Visual Studio 2015 (Visual C++ 14.0)](#visual-studio-2015-vc-140-no-longer-supported) section.
- When Visual Studio 2015 support ended, the v14 runtime was binary compatible with applications built by using the Visual Studio 2015 Microsoft Visual C++ Build Tools. Because Visual Studio 2015 is no longer supported, we recommend that you update your projects to use a supported Microsoft Visual C++ Build Tools version and the latest v14 runtime, the Visual C++ Redistributable for 2017, and later, and perform an in-place upgrade to the Visual C++ 2015 Redistributable (14.0.24212.0). Redistributables for 2013 and earlier remain installed side by side. + When Visual Studio 2015 support ended, the v14 Runtime was binary compatible with applications built by using the Visual Studio 2015 MSVC Build Tools. Because Visual Studio 2015 is no longer supported, we recommend that you update your projects to use a supported MSVC Build Tools version and the latest v14 Runtime, the Visual C++ Redistributable for 2017, and later, and perform an in-place upgrade to the Visual C++ 2015 Redistributable (14.0.24212.0). Redistributables for 2013 and earlier remain installed side by side. - The Visual C++ Redistributable supports several command-line options. For more information, see [Command-line options for the Redistributable packages](./redistributing-visual-cpp-files.md#command-line-options-for-the-redistributable-packages). @@ -85,8 +85,8 @@ The latest version of Visual C++ Redistributable for Visual Studio 2015 is `14.0 ### Visual Studio 2013 (VC++ 12.0) (no longer supported) -These links download the latest available en-US Microsoft Visual C++ Redistributable Packages for Visual Studio 2013. -You can download other versions and languages from [Update for Visual C++ 2013 Redistributable Package](https://support.microsoft.com/topic/update-for-visual-c-2013-redistributable-package-d8ccd6a5-4e26-c290-517b-8da6cfdf4f10) or from the [Welcome to Dev Essentials](https://my.visualstudio.com/) page. +These links download the latest available en-US Microsoft Visual C++ Redistributable packages for Visual Studio 2013. +You can download other versions and languages from [Update for Visual C++ 2013 Redistributable package](https://support.microsoft.com/topic/update-for-visual-c-2013-redistributable-package-d8ccd6a5-4e26-c290-517b-8da6cfdf4f10) or from the [Welcome to Dev Essentials](https://my.visualstudio.com/) page. | Architecture | Version | Link | | ------------ | :----------: | ------------------------------------------------------: | @@ -96,14 +96,14 @@ You can download other versions and languages from [Update for Visual C++ 2013 R ### Other 2013 versions - [Multibyte Microsoft Foundation Class (MFC) Library for Visual Studio 2013](https://my.visualstudio.com/Downloads?pid=1430). This MFC add-on for Visual Studio 2013 contains the multibyte character set (MBCS) version of the MFC Library. -- [Visual C++ 2013 Runtime for Sideloaded Windows 8.1 Apps](https://download.microsoft.com/download/5/f/0/5f0f8404-9329-44a9-8176-ed6f7f746f25/vclibs_redist_packages.zip). For more information, see [C++ Runtime for Sideloaded Windows 8.1 Apps](https://devblogs.microsoft.com/cppblog/c-runtime-for-sideloaded-windows-8-1-apps/) on the C++ Team Blog. +- [Visual C++ 2013 Runtime for sideloaded Windows 8.1 apps](https://download.microsoft.com/download/5/f/0/5f0f8404-9329-44a9-8176-ed6f7f746f25/vclibs_redist_packages.zip). For more information, see [C++ Runtime for sideloaded Windows 8.1 apps](https://devblogs.microsoft.com/cppblog/c-runtime-for-sideloaded-windows-8-1-apps/) on the C++ Team Blog. ### Visual Studio 2012 (VC++ 11.0) Update 4 (no longer supported) > [!NOTE] > Visual Studio 2012 [reached the end of extended support on January 10, 2023](/lifecycle/products/visual-studio-2012). -These links download the latest available en-US Microsoft Visual C++ Redistributable Packages for Visual Studio 2012 Update 4. You can download other versions and languages from [Microsoft Visual C++ Redistributable Packages for Visual Studio 2012 Update 4](https://www.microsoft.com/download/details.aspx?id=30679) or from the [Visual Studio Subscriptions](https://my.visualstudio.com/Downloads?pid=1452) website. +These links download the latest available en-US Microsoft Visual C++ Redistributable packages for Visual Studio 2012 Update 4. You can download other versions and languages from [Microsoft Visual C++ Redistributable packages for Visual Studio 2012 Update 4](https://www.microsoft.com/download/details.aspx?id=30679) or from the [Visual Studio Subscriptions](https://my.visualstudio.com/Downloads?pid=1452) website. | Architecture | Version | Link | |--|:-:|-:| @@ -120,7 +120,7 @@ These links download the latest available en-US Microsoft Visual C++ Redistribut | X86 | 10.0.40219.325 | [vcredist_x86.exe](https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe) | | X64 | 10.0.40219.325 | [vcredist_x64.exe](https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x64.exe) | -Download Redistributable files for other languages and architectures from [Microsoft Visual C++ 2010 SP1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26999). +Download redistributable files for other languages and architectures from [Microsoft Visual C++ 2010 SP1 Redistributable package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26999). ### Visual Studio 2008 (VC++ 9.0) SP1 (no longer supported) @@ -132,20 +132,20 @@ Download Redistributable files for other languages and architectures from [Micro | X86 | 9.0.30729.5677 | [vcredist_x86.exe](https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe) | | X64 | 9.0.30729.5677 | [vcredist_x64.exe](https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe) | -Download redistributable files for other languages and architectures from [Microsoft Visual C++ 2008 Service Pack 1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26368). +Download redistributable files for other languages and architectures from [Microsoft Visual C++ 2008 Service Pack 1 Redistributable package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26368). ### Visual Studio 2005 (VC++ 8.0) SP1 (no longer supported) > [!NOTE] > Visual Studio 2005 [reached the end of extended support on April 12, 2016](/lifecycle/products/microsoft-visual-studio-2005). -Redistributable files for X86, X64, and IA64 architectures are available from [Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26347). +Redistributable files for X86, X64, and IA64 architectures are available from [Microsoft Visual C++ 2005 Service Pack 1 Redistributable package MFC Security Update](https://www.microsoft.com/download/details.aspx?id=26347). ## Related content - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) -- [Audit Visual C++ runtime version usage](redist-version-auditing.md) -- [Lifecycle FAQ: Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) +- [Audit Visual C++ Runtime version usage](redist-version-auditing.md) +- [Lifecycle FAQ: Visual C++ Redistributable and Runtime libraries](/lifecycle/faq/visual-c-faq) - [Troubleshoot Visual C++ Redistributable installation issues](troubleshoot-vc-redistributable-installation-issues.md) ### Release notes diff --git a/docs/windows/redist-version-auditing.md b/docs/windows/redist-version-auditing.md index 065744b4685..410b12d1ee3 100644 --- a/docs/windows/redist-version-auditing.md +++ b/docs/windows/redist-version-auditing.md @@ -14,7 +14,7 @@ ms.topic: how-to # Audit Visual C++ Runtime version usage -The Microsoft Visual C++ Redistributable and the Visual Studio C++ runtime (collectively, "VC Runtime") are critical components of many applications. Across your network, machines might still be running applications that install and use an out-of-support version of the VC Runtime. You can use NTFS file auditing to identify such usage as a step toward replacing those applications with ones that use a supported version of the VC Runtime. This article walks you through setting up NTFS file auditing, provides troubleshooting tips, and highlights the benefits of regular audits. +Microsoft Visual C++ Redistributable and Visual Studio C++ Runtime (collectively, "VC Runtime") are critical components of many applications. Across your network, machines might still be running applications that install and use an out-of-support version of the VC Runtime. You can use NTFS file auditing to identify such usage as a step toward replacing those applications with ones that use a supported version of the VC Runtime. This article walks you through setting up NTFS file auditing, provides troubleshooting tips, and highlights the benefits of regular audits. For more information about the versions of VC Runtime that are no longer supported, see [Microsoft Visual C++ Redistributable latest supported downloads](latest-supported-vc-redist.md). @@ -173,7 +173,7 @@ ResourceAttributes : S:AI After you determine which processes use the VC Runtime files, or which applications installed the Visual C++ Redistributable, uninstall those applications or upgrade them to newer versions that don't depend on unsupported VC Runtimes. -Some Microsoft applications require legacy versions of the VC Runtime. For more information, see the [Visual C++ Redistributable and runtime libraries FAQ](/lifecycle/faq/visual-c-faq). +Some Microsoft applications require legacy versions of the VC Runtime. For more information, see the [Visual C++ Redistributable and Runtime libraries FAQ](/lifecycle/faq/visual-c-faq). @@ -193,5 +193,5 @@ The following table lists where each version of the VC Runtime is installed. - [Redistribute Visual C++ files](redistributing-visual-cpp-files.md) - [The latest supported Visual C++ downloads](latest-supported-vc-redist.md) -- [Lifecycle FAQ: Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) +- [Lifecycle FAQ: Visual C++ Redistributable and Runtime libraries](/lifecycle/faq/visual-c-faq) - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) diff --git a/docs/windows/redistributing-the-mfc-library.md b/docs/windows/redistributing-the-mfc-library.md index 801828f66f9..2584fad3b84 100644 --- a/docs/windows/redistributing-the-mfc-library.md +++ b/docs/windows/redistributing-the-mfc-library.md @@ -14,13 +14,13 @@ If you dynamically link your application to the Microsoft Foundation Class (MFC) > [!NOTE] > The `mfc140.dll` files were omitted from the redistributable files directory in Visual Studio 2015 RTM. You can use the versions installed by Visual Studio 2015 in the `Windows\system32 and Windows\syswow64` directories instead. -Because all MFC DLLs use the shared version of the Microsoft C runtime library, you might also need to redistribute the C runtime. The version of MFC that ships with Visual Studio 2015 uses the Universal C runtime library, which is distributed as part of Windows 10 and Windows 11. To run an MFC application built by using Visual Studio 2015 on earlier versions of Windows, you must redistribute the Universal C runtime. +Because all MFC DLLs use the shared version of the Microsoft C Runtime (CRT) library, you might also need to redistribute the CRT. The version of MFC that ships with Visual Studio 2015 uses the Universal CRT library, which is distributed as part of Windows 10 and Windows 11. To run an MFC application built by using Visual Studio 2015 on earlier versions of Windows, you must redistribute the Universal CRT. -For information on how to redistribute the Universal C runtime as an operating system component or by using local deployment, see [Introducing the Universal C runtime](https://devblogs.microsoft.com/cppblog/introducing-the-universal-crt/). To download the Universal C runtime for central deployment on supported versions of Windows, see [Windows 10 Universal C runtime](https://www.microsoft.com/download/details.aspx?id=48234). +For information on how to redistribute the Universal CRT as an operating system component or by using local deployment, see [Introducing the Universal CRT](https://devblogs.microsoft.com/cppblog/introducing-the-universal-crt/). To download the Universal CRT for central deployment on supported versions of Windows, see [Windows 10 Universal CRT](https://www.microsoft.com/download/details.aspx?id=48234). You can find redistributable architecture-specific versions of `ucrtbase.dll` for local deployment in the Windows SDK. By default, Visual Studio installs these versions in `C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\` in an architecture-specific subdirectory. -If your app is built by using an earlier version of the MFC Library, you must redistribute the matching C runtime DLL from the redistributable files directory. For example, if your MFC application is built by using the Visual Studio 2013 (vc120) toolset, you must redistribute the `msvcr120.dll`. You also have to redistribute the matching `mfcu.dll` or `mfc.dll`. +If your app is built by using an earlier version of the MFC Library, you must redistribute the matching CRT DLL from the redistributable files directory. For example, if your MFC application is built by using the Visual Studio 2013 (vc120) toolset, you must redistribute the `msvcr120.dll`. You also have to redistribute the matching `mfcu.dll` or `mfc.dll`. If you statically link your application to MFC (in the **Property Pages** dialog, on the **General** tab, select **Use MFC in a Static Library**), you don't have to redistribute an MFC DLL. Although static linking might work for testing and internal deployment of applications, we recommend that you don't use it to redistribute MFC. For more information about the recommended strategies for deploying Visual C++ libraries, see [Choose a deployment method](choosing-a-deployment-method.md). diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index 348b9d564ad..329239ff8ca 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -1,6 +1,6 @@ --- title: Redistribute Visual C++ Files -description: Learn about Visual Studio redistributable libraries and components that you can deploy with your app. +description: Learn about Visual Studio Redistributable libraries and components that you can deploy with your app. ms.date: 01/15/2025 helpviewer_keywords: ["application deployment [C++], file redistributing", "redistributing applications [C++]", "deploying applications [C++], file redistributing", "file redistribution [C++]", "redistributing applications [C++], about redistributing applications"] ms.topic: concept-article @@ -8,7 +8,7 @@ ms.topic: concept-article # Redistribute Visual C++ files > [!NOTE] -> Are you here because you're looking for a download of one of the Visual C++ runtime files? Go to the [latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) page. +> Are you here because you're looking for a download of one of the Visual C++ Runtime files? Go to the [latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) page. ## Redistributable files and licensing @@ -48,7 +48,7 @@ To deploy redistributable files, you can use the redistributable packages instal The easiest way to locate the redistributable files is by using environment variables set in a developer command prompt. In Visual Studio 2022, the redistributable files are in the `%VCINSTALLDIR%Redist\MSVC\v143` folder. In the latest version of Visual Studio 2019, you can find the redistributable files in the `%VCINSTALLDIR%Redist\MSVC\v142` folder. In both Visual Studio 2017 and Visual Studio 2019, the files are also found in `%VCToolsRedistDir%`. In Visual Studio 2015, you can find these files in `%VCINSTALLDIR%redist\`, where `` is the locale of the redistributable packages. -In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named Visual C++ \ Redistributable merge modules in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When they're installed in Visual Studio 2022, you can find the redistributable merge modules in `%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`. +In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named *Visual C++ \ Redistributable merge modules* in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When they're installed in Visual Studio 2022, you can find the redistributable merge modules in `%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`. ` In the latest version of Visual Studio 2019, the redistributable merge modules are found in `%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`. In both Visual Studio 2019 and Visual Studio 2017, they're also found in `%VCToolsRedistDir%MergeModules`. In Visual Studio 2015, they're found in `Program Files [(x86)]\Common Files\Merge Modules`. @@ -93,13 +93,13 @@ It's also possible to directly install the Redistributable DLLs in the *applicat If Windows can't find one of the Redistributable DLLs required by your application, it might display a message similar to this one: "This application has failed to start because *library*.dll was not found. Reinstalling the application may fix this problem." -To resolve this kind of error, make sure that your application installer builds correctly. Verify that the Redistributable libraries get deployed correctly on the target system. For more information, see [Understand the dependencies of a Visual C++ application](understanding-the-dependencies-of-a-visual-cpp-application.md). +To resolve this kind of error, make sure that your application installer builds correctly. Verify that the redistributable libraries get deployed correctly on the target system. For more information, see [Understand the dependencies of a Visual C++ application](understanding-the-dependencies-of-a-visual-cpp-application.md). ## Related content -- [Redistribute by using merge modules](redistributing-components-by-using-merge-modules.md) describes how to use Visual C++ Redistributable merge modules to install the Visual C++ runtime libraries as shared DLLs in the `%windir%\system32\` folder. +- [Redistribute by using merge modules](redistributing-components-by-using-merge-modules.md) describes how to use Visual C++ Redistributable merge modules to install the Visual C++ Runtime libraries as shared DLLs in the `%windir%\system32\` folder. - [Redistribute Visual C++ ActiveX controls](redistributing-visual-cpp-activex-controls.md) describes how to redistribute an application that uses ActiveX controls. -- [Redistribute the Microsoft Foundation Class (MFC) library](redistributing-the-mfc-library.md) describes how to redistribute an application that uses MFC. +- [Redistribute the Microsoft Foundation Class (MFC) Library](redistributing-the-mfc-library.md) describes how to redistribute an application that uses MFC. - [Redistribute an Active Template Library (ATL) application](redistributing-an-atl-application.md) describes how to redistribute an application that uses an ATL. In Visual Studio 2012 and later, no ATL library is required. - [Deployment examples](deployment-examples.md) links to examples that demonstrate how to deploy Visual C++ applications. - [Deploy desktop applications](deploying-native-desktop-applications-visual-cpp.md) introduces Visual C++ deployment concepts and technologies. diff --git a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md index 0fb42c9dad1..4f01ac6c7a9 100644 --- a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md +++ b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md @@ -9,7 +9,7 @@ helpviewer_keywords: [ "redist", "vcredist", "Visual [C++] redistributable", "VC --- # Troubleshoot Visual C++ Redistributable installation problems -This article is for users who experience problems when they install Visual C++ runtime components by using the Visual Studio Installer or the Visual C++ Redistributable (VC Redist) installer. +This article is for users who experience problems when they install Visual C++ Runtime components by using the Visual Studio Installer or the Visual C++ Redistributable (VC Redist) installer. If you experience any problems, make sure that you're installing the [latest version of the Visual C++ Redistributable](latest-supported-vc-redist.md). @@ -127,7 +127,7 @@ This method helps if the installer metadata is corrupted. Deleting the installer ### Generic installation failure -Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ runtime components. +Return code 1603 indicates a generic installation failure produced by the Windows Installer during the installation of the Visual C++ Runtime components. Because many factors can produce a 1603 code, the code by itself doesn't provide enough information to diagnose the cause of the problem. Often, the log files produced by the VC Redist installer contain relevant information that might lead to a solution or workaround. @@ -254,11 +254,11 @@ Your report must include the following information about your environment: - If you're installing through the Visual Studio Installer, the version of the Visual Studio Installer. - The logs collected when you follow the steps in the [Collect failure logs](#collect-failure-logs) section. -Feedback without this information, especially without logs, is non-actionable and might be closed if more information isn't submitted promptly. +Feedback without this information, especially without logs, is nonactionable and might be closed if more information isn't submitted promptly. ## Related content - [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) - [C++ binary compatibility between Visual Studio versions](../porting/binary-compat-2015-2017.md) -- [Audit Visual C++ runtime version usage](redist-version-auditing.md) -- [Lifecycle FAQ: Visual C++ Redistributable and runtime libraries](/lifecycle/faq/visual-c-faq) +- [Audit Visual C++ Runtime version usage](redist-version-auditing.md) +- [Lifecycle FAQ: Visual C++ Redistributable and Runtime libraries](/lifecycle/faq/visual-c-faq) From 728a58812f4f709f1321b3637521882b4d6f2c42 Mon Sep 17 00:00:00 2001 From: paulth1 <42621139+paulth1@users.noreply.github.com> Date: Fri, 6 Mar 2026 11:50:01 -0800 Subject: [PATCH 367/619] edit pass: redistributing-microsoft-c++-files --- .../windows/redistributing-components-by-using-merge-modules.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/windows/redistributing-components-by-using-merge-modules.md b/docs/windows/redistributing-components-by-using-merge-modules.md index 2313d2bb5d1..4bd201dad02 100644 --- a/docs/windows/redistributing-components-by-using-merge-modules.md +++ b/docs/windows/redistributing-components-by-using-merge-modules.md @@ -38,7 +38,7 @@ When you use merge modules, you must track and regularly service your applicatio ## Where to find merge module files -In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named *C++ \ Redistributable merge modules* in the Visual Studio Installer. The merge modules are installed by default as part of a C++ installation in Visual Studio 2017 and Visual Studio 2015. When the merge modules are installed in Visual Studio 2022, you can find the Visual C++ Redistributable merge modules in `%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`. +In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named **C++ \ Redistributable MSM** in the Visual Studio Installer. The merge modules are installed by default as part of a C++ installation in Visual Studio 2017 and Visual Studio 2015. When the merge modules are installed in Visual Studio 2022, you can find the Visual C++ Redistributable merge modules in `%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`. In the latest version of Visual Studio 2019, the merge modules are in `%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`. In both Visual Studio 2019 and Visual Studio 2017, they're also found in `%VCToolsRedistDir%MergeModules`. In Visual Studio 2015, they're found in `Program Files [(x86)]\Common Files\Merge Modules`. For more information and a link to a list of redistributable merge modules, see [Redistribute Visual C++ files](redistributing-visual-cpp-files.md). From 188dd74bc61935533101bff52f20fe8ebed976ec Mon Sep 17 00:00:00 2001 From: Shawn Jackson <9558114+ShawnJackson@users.noreply.github.com> Date: Fri, 6 Mar 2026 14:52:35 -0600 Subject: [PATCH 368/619] Typo fix --- .../troubleshoot-vc-redistributable-installation-issues.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md index 4f01ac6c7a9..77102136786 100644 --- a/docs/windows/troubleshoot-vc-redistributable-installation-issues.md +++ b/docs/windows/troubleshoot-vc-redistributable-installation-issues.md @@ -15,7 +15,7 @@ If you experience any problems, make sure that you're installing the [latest ver ## Collect failure logs -The first step to diagnose an problem with the Visual C++ Redistributable installer is to collect its failure logs. +The first step to diagnose a problem with the Visual C++ Redistributable installer is to collect its failure logs. 1. Download the [Microsoft Visual Studio and .NET Log Collection Tool](). 1. Run `Collect.exe`. @@ -245,7 +245,7 @@ You might be able to find installers for older versions through a Bing search. O The list of [common problems](#common-problems) was collected from feedback reported to Microsoft through the [Developer Community](). -If you encounter an problem not found in that section, or if the steps in this troubleshooting guide don't resolve your problem, use the [Report a Problem]() form to create a new feedback item. +If you encounter a problem not found in that section, or if the steps in this troubleshooting guide don't resolve your problem, use the [Report a Problem]() form to create a new feedback item. Your report must include the following information about your environment: From 340189b3d0e703405b255b2d0aef3ffff5664935 Mon Sep 17 00:00:00 2001 From: Shawn Jackson <9558114+ShawnJackson@users.noreply.github.com> Date: Fri, 6 Mar 2026 15:09:02 -0600 Subject: [PATCH 369/619] Typo fix --- docs/windows/redistributing-visual-cpp-files.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/windows/redistributing-visual-cpp-files.md b/docs/windows/redistributing-visual-cpp-files.md index 329239ff8ca..afeae969425 100644 --- a/docs/windows/redistributing-visual-cpp-files.md +++ b/docs/windows/redistributing-visual-cpp-files.md @@ -49,7 +49,7 @@ To deploy redistributable files, you can use the redistributable packages instal The easiest way to locate the redistributable files is by using environment variables set in a developer command prompt. In Visual Studio 2022, the redistributable files are in the `%VCINSTALLDIR%Redist\MSVC\v143` folder. In the latest version of Visual Studio 2019, you can find the redistributable files in the `%VCINSTALLDIR%Redist\MSVC\v142` folder. In both Visual Studio 2017 and Visual Studio 2019, the files are also found in `%VCToolsRedistDir%`. In Visual Studio 2015, you can find these files in `%VCINSTALLDIR%redist\`, where `` is the locale of the redistributable packages. In Visual Studio 2022 and 2019, merge module files are part of an optional installable component named *Visual C++ \ Redistributable merge modules* in the Visual Studio Installer. The merge modules are installed by default as part of a C++ install in Visual Studio 2017 and Visual Studio 2015. When they're installed in Visual Studio 2022, you can find the redistributable merge modules in `%VCINSTALLDIR%Redist\MSVC\v143\MergeModules`. -` + In the latest version of Visual Studio 2019, the redistributable merge modules are found in `%VCINSTALLDIR%Redist\MSVC\v142\MergeModules`. In both Visual Studio 2019 and Visual Studio 2017, they're also found in `%VCToolsRedistDir%MergeModules`. In Visual Studio 2015, they're found in `Program Files [(x86)]\Common Files\Merge Modules`. ## Install the redistributable packages @@ -103,4 +103,4 @@ To resolve this kind of error, make sure that your application installer builds - [Redistribute an Active Template Library (ATL) application](redistributing-an-atl-application.md) describes how to redistribute an application that uses an ATL. In Visual Studio 2012 and later, no ATL library is required. - [Deployment examples](deployment-examples.md) links to examples that demonstrate how to deploy Visual C++ applications. - [Deploy desktop applications](deploying-native-desktop-applications-visual-cpp.md) introduces Visual C++ deployment concepts and technologies. -- [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) links to the latest supported Visual C++ Redistributable downloads. \ No newline at end of file +- [Latest supported Visual C++ Redistributable downloads](latest-supported-vc-redist.md) links to the latest supported Visual C++ Redistributable downloads. From 81e5c1da9778941e57724222b86421bc2bfb1e48 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 6 Mar 2026 13:12:36 -0800 Subject: [PATCH 370/619] adjust containers location --- docs/standard-library/toc.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/docs/standard-library/toc.yml b/docs/standard-library/toc.yml index 9ff0efac2ed..bfb970bf6fa 100644 --- a/docs/standard-library/toc.yml +++ b/docs/standard-library/toc.yml @@ -1524,6 +1524,8 @@ items: href: using-cpp-library-headers.md - name: C++ Library conventions href: cpp-library-conventions.md + - name: C++ Standard Library containers + href: stl-containers.md - name: C++ program startup and termination href: cpp-program-startup-and-termination.md - name: "Safe libraries: C++ Standard Library" @@ -1552,11 +1554,6 @@ items: href: thread-safety-in-the-cpp-standard-library.md - name: stdext namespace href: stdext-namespace.md -- name: C++ Standard Library containers - expanded: false - items: - - name: C++ Standard Library containers - href: stl-containers.md - name: Iterators href: iterators.md - name: Algorithms From eba19389e0c1f9aa30931a7a9688292ca67079bc Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Fri, 6 Mar 2026 14:23:03 -0800 Subject: [PATCH 371/619] edits --- .../ostream-iterator-class.md | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/docs/standard-library/ostream-iterator-class.md b/docs/standard-library/ostream-iterator-class.md index ba6eb7c7afc..aff05930b8f 100644 --- a/docs/standard-library/ostream-iterator-class.md +++ b/docs/standard-library/ostream-iterator-class.md @@ -20,14 +20,14 @@ class ostream_iterator ### Parameters -*Type*\ +*`Type`*\ The type of object to be inserted into the output stream. -*CharType*\ +*`CharType`*\ The type that represents the character type for the `ostream_iterator`. This argument is optional and the default value is **`char`**. -*Traits*\ -The type that represents the character type for the `ostream_iterator`. This argument is optional and the default value is `char_traits`\< *CharType>.* +*`Traits`*\ +The type that represents the character type for the `ostream_iterator`. This argument is optional and the default value is `char_traits`.* The ostream_iterator class must satisfy the requirements for an output iterator. Algorithms can be written directly to output streams using an `ostream_iterator`. @@ -55,7 +55,7 @@ The ostream_iterator class must satisfy the requirements for an output iterator. ## Requirements -**Header:** \ +**Header:** `` **Namespace:** `std` @@ -99,16 +99,17 @@ int main( ) *intOut = 20; *intOut = 30; } -/* Output: +``` + +```output The integers written to the output stream by intOut are: 10 20 30 -*/ ``` -## `ostream_iterator::operator*` +## ostream_iterator::operator* Dereferencing operator used to implement the output iterator expression `*ii = x`. @@ -122,7 +123,7 @@ A reference to the `ostream_iterator`. ### Remarks -The requirements for an output iterator that the `ostream_iterator` must satisfy require only the expression \* *ii* = *t* be valid and says nothing about the **`operator`** or the `operator=` on their own. The member operator in this implementation returns **`*this`**. +The requirements for an output iterator that the `ostream_iterator` must satisfy require only the expression `*ii = t` be valid and says nothing about the **`operator`** or the `operator=` on their own. The member operator in this implementation returns `*this`. ### Example @@ -150,7 +151,6 @@ int main( ) *intOut = 30; } ``` - ```output Elements written to output stream: 10 @@ -173,7 +173,7 @@ A reference to the `ostream_iterator`. ### Remarks -These member operators both return **`*this`**. +These member operators both return `*this`. ### Example @@ -224,11 +224,11 @@ The value of the object of type `Type` to be inserted into the output stream. ### Return Value -The operator inserts *`val`* into the output stream associated with the object, followed by the delimiter specified in the [`ostream_iterator` constructor](#ostream_iterator) (if any), and then returns a reference to the `ostream_iterator`. +The operator inserts *`val`* into the output stream associated with the object, followed by the delimiter specified in the [`ostream_iterator constructor`](#ostream_iterator) (if any), and then returns a reference to the `ostream_iterator`. ### Remarks -The requirements for an output iterator that the `ostream_iterator` must satisfy require only the expression `*ii = t` be valid and says nothing about the `operator*` or the `operator=` on their own. This member operator returns **`*this`**. +The requirements for an output iterator that the `ostream_iterator` must satisfy require only the expression `*ii = t` be valid and says nothing about the operator or the operator= on their own. This member operator returns `*this`. ### Example @@ -256,7 +256,6 @@ int main( ) *intOut = 30; } ``` - ```output Elements written to output stream: 10 @@ -269,8 +268,7 @@ Elements written to output stream: Constructs an `ostream_iterator` that is initialized and delimited to write to the output stream. ```cpp -ostream_iterator( - ostream_type& _Ostr); +ostream_iterator(ostream_type& _Ostr); ostream_iterator( ostream_type& _Ostr, @@ -331,7 +329,8 @@ int main( ) cout << endl; } ``` -```output + +```ouput 10 20 Elements output without delimiter: 123456 @@ -348,7 +347,7 @@ typedef basic_ostream ostream_type; ### Remarks -The type is a synonym for [`basic_ostream`](../standard-library/basic-ostream-class.md)< `CharType`, `Traits`>, a stream class of the iostream hierarchy that defines objects that can be used for writing. +The type is a synonym for [`basic_ostream`](../standard-library/basic-ostream-class.md)``, a stream class of the iostream hierarchy that defines objects that can be used for writing. ### Example @@ -407,6 +406,6 @@ by intOut are: ## See also -[\](../standard-library/iterator.md)\ +[``](../standard-library/iterator.md)\ [Thread Safety in the C++ Standard Library](../standard-library/thread-safety-in-the-cpp-standard-library.md)\ [C++ Standard Library Reference](../standard-library/cpp-standard-library-reference.md) From 402e5e5963c3f9ba93ef60f13023c3f5bc27c8ff Mon Sep 17 00:00:00 2001 From: Michael Price Date: Tue, 10 Mar 2026 16:12:05 -0500 Subject: [PATCH 372/619] Revert filename changes from cb62204dee while keeping text content changes This reverts the file renames that removed 'app' from filenames, restoring the original names while preserving the text content changes that updated references from 'app modernization' to 'modernization'. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- ...tion-cpp.md => copilot-app-modernization-cpp.md} | 8 ++++---- ....png => app-modernization-cmake-ice-breaker.png} | Bin ...ng => app-modernization-msbuild-ice-breaker.png} | Bin ...g => copilot-app-modernization-context-menu.png} | Bin ...png => enable-copilot-app-modernization-cpp.png} | Bin docs/porting/toc.yml | 2 +- .../visual-cpp-porting-and-upgrading-guide.md | 2 +- 7 files changed, 6 insertions(+), 6 deletions(-) rename docs/porting/{copilot-modernization-cpp.md => copilot-app-modernization-cpp.md} (87%) rename docs/porting/media/{modernization-cmake-ice-breaker.png => app-modernization-cmake-ice-breaker.png} (100%) rename docs/porting/media/{modernization-msbuild-ice-breaker.png => app-modernization-msbuild-ice-breaker.png} (100%) rename docs/porting/media/{copilot-modernization-context-menu.png => copilot-app-modernization-context-menu.png} (100%) rename docs/porting/media/{enable-copilot-modernization-cpp.png => enable-copilot-app-modernization-cpp.png} (100%) diff --git a/docs/porting/copilot-modernization-cpp.md b/docs/porting/copilot-app-modernization-cpp.md similarity index 87% rename from docs/porting/copilot-modernization-cpp.md rename to docs/porting/copilot-app-modernization-cpp.md index d220de274d8..972ac4df976 100644 --- a/docs/porting/copilot-modernization-cpp.md +++ b/docs/porting/copilot-app-modernization-cpp.md @@ -29,7 +29,7 @@ GitHub Copilot modernization for C++ is enabled by default. To disable or explic 1. Select (to enable) or clear (to disable) the checkbox for **Enable GitHub Copilot modernization for C++ (preview)**. 1. Restart Visual Studio for the setting change to take effect. -:::image type="content" source="media/enable-copilot-modernization-cpp.png" alt-text="Screenshot of Visual Studio Options dialog. GitHub > Copilot > C/C++ settings are visible. The modernization for C++ checkbox is enabled."::: +:::image type="content" source="media/enable-copilot-app-modernization-cpp.png" alt-text="Screenshot of Visual Studio Options dialog. GitHub > Copilot > C/C++ settings are visible. The modernization for C++ checkbox is enabled."::: ## Upgrade your codebase by using GitHub Copilot modernization for C++ @@ -41,7 +41,7 @@ GitHub Copilot modernization is an agent that operates inside the GitHub Copilot - **From the Solution Explorer context menu**: Right-click on the solution or a loaded project in the Solution Explorer, and choose **Modernize** from the context menu. This automatically launches a GitHub Copilot Chat window, activates the Modernize agent, and provides you with relevant prompts to choose from to get you started. -:::image type="content" source="media/copilot-modernization-context-menu.png" alt-text="Screenshot of Visual Studio Solution Explorer showing a right-click context menu with Modernize selected to start the Copilot agent."::: +:::image type="content" source="media/copilot-app-modernization-context-menu.png" alt-text="Screenshot of Visual Studio Solution Explorer showing a right-click context menu with Modernize selected to start the Copilot agent."::: - **From GitHub Copilot Chat**: Open the GitHub Copilot Chat Window by selecting **View > GitHub Copilot Chat**. After the GitHub Copilot Chat window opens, mention `@Modernize` in a prompt to activate the Modernize agent. For example, type this prompt: @@ -70,12 +70,12 @@ Once the Modernize agent is active, you can instruct it via a prompt to upgrade :::row::: :::column::: -:::image type="content" source="media/modernization-msbuild-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to Modernize experience and Upgrade MSVC Build Tools to the latest version is highlighted."::: +:::image type="content" source="media/app-modernization-msbuild-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to Modernize experience and Upgrade MSVC Build Tools to the latest version is highlighted."::: :::column-end::: :::column::: -:::image type="content" source="media/modernization-cmake-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to Modernize experience and Resolve build issues by migrating to modern alternatives is highlighted"::: +:::image type="content" source="media/app-modernization-cmake-ice-breaker.png" alt-text="Screenshot of GitHub Copilot Chat window. The dropdown is set to Modernize experience and Resolve build issues by migrating to modern alternatives is highlighted"::: :::column-end::: :::row-end::: diff --git a/docs/porting/media/modernization-cmake-ice-breaker.png b/docs/porting/media/app-modernization-cmake-ice-breaker.png similarity index 100% rename from docs/porting/media/modernization-cmake-ice-breaker.png rename to docs/porting/media/app-modernization-cmake-ice-breaker.png diff --git a/docs/porting/media/modernization-msbuild-ice-breaker.png b/docs/porting/media/app-modernization-msbuild-ice-breaker.png similarity index 100% rename from docs/porting/media/modernization-msbuild-ice-breaker.png rename to docs/porting/media/app-modernization-msbuild-ice-breaker.png diff --git a/docs/porting/media/copilot-modernization-context-menu.png b/docs/porting/media/copilot-app-modernization-context-menu.png similarity index 100% rename from docs/porting/media/copilot-modernization-context-menu.png rename to docs/porting/media/copilot-app-modernization-context-menu.png diff --git a/docs/porting/media/enable-copilot-modernization-cpp.png b/docs/porting/media/enable-copilot-app-modernization-cpp.png similarity index 100% rename from docs/porting/media/enable-copilot-modernization-cpp.png rename to docs/porting/media/enable-copilot-app-modernization-cpp.png diff --git a/docs/porting/toc.yml b/docs/porting/toc.yml index 1c743b4bc3d..6f05b7a6724 100644 --- a/docs/porting/toc.yml +++ b/docs/porting/toc.yml @@ -10,7 +10,7 @@ items: - name: Upgrade your code to the Universal CRT href: ../porting/upgrade-your-code-to-the-universal-crt.md - name: Modernize your C++ project with GitHub Copilot modernization - href: ../porting/copilot-modernization-cpp.md + href: ../porting/copilot-app-modernization-cpp.md - name: Update WINVER and _WIN32_WINNT href: ../porting/modifying-winver-and-win32-winnt.md - name: Fix your dependencies on library internals diff --git a/docs/porting/visual-cpp-porting-and-upgrading-guide.md b/docs/porting/visual-cpp-porting-and-upgrading-guide.md index 3035453a01a..64aa8a53e5e 100644 --- a/docs/porting/visual-cpp-porting-and-upgrading-guide.md +++ b/docs/porting/visual-cpp-porting-and-upgrading-guide.md @@ -61,7 +61,7 @@ ms.author: twhitney - [⬆️ Upgrading C++ Projects to Visual Studio 2026](https://devblogs.microsoft.com/cppblog/upgrading-c-projects-to-visual-studio-2026/) - [⬆️ Upgrade projects from earlier versions](upgrading-projects-from-earlier-versions-of-visual-cpp.md) -- [🤖 Upgrade with an AI agent (preview)](copilot-modernization-cpp.md) +- [🤖 Upgrade with an AI agent (preview)](copilot-app-modernization-cpp.md) - [🛠️ IDE tools for upgrading C++ code](ide-tools-for-upgrading-code.md) - [🔄 Upgrade to Universal CRT](upgrade-your-code-to-the-universal-crt.md) - [🔧 Update WINVER and _WIN32_WINNT](modifying-winver-and-win32-winnt.md) From 9887e500c42f14912d7b697f551167741134dc7c Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 10 Mar 2026 17:33:58 -0700 Subject: [PATCH 373/619] add conformance update --- docs/overview/visual-cpp-language-conformance.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index ed623aaf45c..5173801df0e 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -1,7 +1,7 @@ --- title: "Microsoft C/C++ language conformance" description: "Microsoft C and C++ conformance updates by Visual Studio version." -ms.date: 11/10/2025 +ms.date: 03/10/2026 ms.service: "visual-cpp" ms.subservice: "cpp-lang" --- @@ -21,6 +21,8 @@ For details on conformance improvements, see [C++ conformance improvements in Vi | **C++03/11 Core language features** | **Supported** | |  Everything else | VS 2015 [A](#note_A) | |  Two-phase name lookup | VS 2017 15.7 [B](#note_B) | +|  [`CN2634 Expression SFINAE`](https://wg21.link/N2634) | VS 2017 15.7 | +|  [`CWG 1213 Value category of arrays and subscripts`](https://cplusplus.github.io/CWG/issues/1213.html) | VS 2022 17.14 | |  [`N2634 Expression SFINAE`](https://wg21.link/N2634) | VS 2017 15.7 | |  [`N1653 C99 preprocessor`](https://wg21.link/N1653) | VS 2019 16.6 [C](#note_C) | | **C++03/11 Core language features (Defect reports)** | **Supported** | @@ -219,6 +221,7 @@ For details on conformance improvements, see [C++ conformance improvements in Vi |  [`P2513R4 char8_t Compatibility and Portability Fix`](https://wg21.link/p2513r4) | VS 2022 17.4 [DR](#note_DR) | |  [`P2579R0 Mitigation strategies for P2036 "Changing scope for lambda trailing-return-type"`](https://wg21.link/p2579r0) | MSVC Build Tools version 14.50 [24](#note_24) | |  [`P2582R1 Wording for class template argument deduction from inherited constructors`](https://wg21.link/p2582r1) | no | +|  [`P2589R1 static operator[]`](https://wg21.link/p2589r1) | VS 2022 17.14 [23](#note_23) | ## C++ Standard library features From d7e3b64284455bb06e2a860f8725197db17b7941 Mon Sep 17 00:00:00 2001 From: TylerMSFT Date: Tue, 10 Mar 2026 17:35:37 -0700 Subject: [PATCH 374/619] typo --- docs/overview/visual-cpp-language-conformance.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/overview/visual-cpp-language-conformance.md b/docs/overview/visual-cpp-language-conformance.md index 5173801df0e..698a03e2b9f 100644 --- a/docs/overview/visual-cpp-language-conformance.md +++ b/docs/overview/visual-cpp-language-conformance.md @@ -21,7 +21,6 @@ For details on conformance improvements, see [C++ conformance improvements in Vi | **C++03/11 Core language features** | **Supported** | |  Everything else | VS 2015 [A](#note_A) | |  Two-phase name lookup | VS 2017 15.7 [B](#note_B) | -|  [`CN2634 Expression SFINAE`](https://wg21.link/N2634) | VS 2017 15.7 | |  [`CWG 1213 Value category of arrays and subscripts`](https://cplusplus.github.io/CWG/issues/1213.html) | VS 2022 17.14 | |  [`N2634 Expression SFINAE`](https://wg21.link/N2634) | VS 2017 15.7 | |  [`N1653 C99 preprocessor`](https://wg21.link/N1653) | VS 2019 16.6 [C](#note_C) | From 53928db56bd795ad2c65a83e3288c0fcf0f9f40d Mon Sep 17 00:00:00 2001 From: Michael Price Date: Wed, 11 Mar 2026 08:25:35 -0500 Subject: [PATCH 375/619] Updating the image for the setting since the string in the product changed. Now it matches what the text in the doc says. --- .../enable-copilot-app-modernization-cpp.png | Bin 59288 -> 68520 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/porting/media/enable-copilot-app-modernization-cpp.png b/docs/porting/media/enable-copilot-app-modernization-cpp.png index 3e0047e42ccd7aa583274f07eae9a1ae0534886b..2a9c96019132beb8948d909e566dfcea76d1a052 100644 GIT binary patch literal 68520 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 @zB?m`i)qGGmh>ezZ^>?b@a5y{=H)pqsUKI2 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 jG-_kc9S?av+(VJncVF)*WNotE6g}9 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 literal 25659 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 diff --git a/docs/build/reference/media/file-new-project.png b/docs/build/reference/media/file-new-project.png index 6e6767d5d8ffc3b3e39837c1c1c0df6a95208fa3..df61ed8476eba4e3b2e0145eced1ef092585915d 100644 GIT binary patch literal 13011 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 WuYGbI0)MUmypdLxDwi<)_`d*O8V6DU literal 27281 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 From f3f9e594fa68e6335a23d47a25dcc43543e4f5f0 Mon Sep 17 00:00:00 2001 From: Nick Bassett Date: Mon, 12 Jan 2026 15:29:20 -0800 Subject: [PATCH 206/619] Update signing guidance for /INTEGRITYCHECK files (#5875) * Update signing guidance for /INTEGRITYCHECK files The trusted signing service has a new name. * Update docs/build/reference/integritycheck-require-signature-check.md --------- Co-authored-by: Regan Downer --- docs/build/reference/integritycheck-require-signature-check.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/reference/integritycheck-require-signature-check.md b/docs/build/reference/integritycheck-require-signature-check.md index 2e154fe9607..0820e55c26c 100644 --- a/docs/build/reference/integritycheck-require-signature-check.md +++ b/docs/build/reference/integritycheck-require-signature-check.md @@ -17,7 +17,7 @@ The **`/INTEGRITYCHECK`** linker option sets a flag, `IMAGE_DLLCHARACTERISTICS_F ### Signing `/INTEGRITYCHECK` files -Microsoft has new signing guidance for DLL and executable files linked by using **`/INTEGRITYCHECK`**. The guidance used to recommend a cross-signed certificate from the [cross-signing program](/windows-hardware/drivers/install/cross-certificates-for-kernel-mode-code-signing). However, the [cross-signing program is now deprecated](/windows-hardware/drivers/install/deprecation-of-software-publisher-certificates-and-commercial-release-certificates). You must now sign your **`/INTEGRITYCHECK`** files by using the Microsoft [Trusted Signing service](/azure/trusted-signing/) program instead. +Microsoft has new signing guidance for DLL and executable files linked by using **`/INTEGRITYCHECK`**. The guidance used to recommend a cross-signed certificate from the [cross-signing program](/windows-hardware/drivers/install/cross-certificates-for-kernel-mode-code-signing). However, the [cross-signing program is now deprecated](/windows-hardware/drivers/install/deprecation-of-software-publisher-certificates-and-commercial-release-certificates). You must now sign your **`/INTEGRITYCHECK`** files by using the [Azure Artifact Signing service](https://azure.microsoft.com/products/artifact-signing) program instead. ### To set this linker option in Visual Studio From e9723d2064a8cad446d7c232799bc0a87b772b1b Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 12 Jan 2026 17:06:03 -0800 Subject: [PATCH 207/619] Enhance command-line warning messages with details Added explanations for Command-Line Warnings D9014 and D9024. --- .../tool-errors/command-line-errors-d8000-through-d9999.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md index d36c18a179d..95eb607c2b7 100644 --- a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md +++ b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md @@ -27,8 +27,8 @@ The articles in this section provide a reference to the command-line errors and | Warning | Message | |--|--| -| Command-Line Warning D9014 | invalid value for 'processMax' | -| [Command-Line Warning D9024](command-line-warning-d9024.md) | unrecognized source file type 'filename', object file assumed | +| Command-Line Warning D9014 | invalid value for 'processMax' | The compiler ignores the invalid value and assumes a value of 1.| +| [Command-Line Warning D9024](command-line-warning-d9024.md) | unrecognized source file type 'filename', object file assumed. Occurs when a command‑line argument looks like a filename but doesn’t match a recognized source or object file extension. The compiler assumes it's an object file and passes it to the linker. | | [Command-Line Warning D9025](command-line-warning-d9025.md) | overriding 'option1' with 'option2' | | [Command-Line Warning D9026](command-line-warning-d9026.md) | options apply to entire command line | | [Command-Line Warning D9027](command-line-warning-d9027.md) | source file '\' ignored | From 80eec8691568d8dfcb80af4dd8249baf7112e704 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 12 Jan 2026 17:07:24 -0800 Subject: [PATCH 208/619] Fix formatting of Command-Line Warning D9014 message --- .../tool-errors/command-line-errors-d8000-through-d9999.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md index 95eb607c2b7..14a992e335f 100644 --- a/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md +++ b/docs/error-messages/tool-errors/command-line-errors-d8000-through-d9999.md @@ -27,7 +27,7 @@ The articles in this section provide a reference to the command-line errors and | Warning | Message | |--|--| -| Command-Line Warning D9014 | invalid value for 'processMax' | The compiler ignores the invalid value and assumes a value of 1.| +| Command-Line Warning D9014 | invalid value for 'processMax'. The compiler ignores the invalid value and assumes a value of 1.| | [Command-Line Warning D9024](command-line-warning-d9024.md) | unrecognized source file type 'filename', object file assumed. Occurs when a command‑line argument looks like a filename but doesn’t match a recognized source or object file extension. The compiler assumes it's an object file and passes it to the linker. | | [Command-Line Warning D9025](command-line-warning-d9025.md) | overriding 'option1' with 'option2' | | [Command-Line Warning D9026](command-line-warning-d9026.md) | options apply to entire command line | From ede29fabe4eac5649aaff3e17f35ca55e14100b7 Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 12 Jan 2026 17:32:07 -0800 Subject: [PATCH 209/619] Enhance documentation for disabling warning C6200 Updated the section on disabling warning C6200 with additional details and code examples. --- docs/code-quality/c6200.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/code-quality/c6200.md b/docs/code-quality/c6200.md index 40c81ae3a9c..9ec6fc83017 100644 --- a/docs/code-quality/c6200.md +++ b/docs/code-quality/c6200.md @@ -71,12 +71,15 @@ void f() Code analysis doesn't warn with just `rand()` because it doesn't have any information about its return value. On the other hand, `rand() % 15` and `rand() % 14` provide hints as to the range of the return value of `rand()` and code analysis can use that information to determine that the index is out of bounds in the first case but not the second. -### Disable warning +## Disable warning C6200 -You can modify the behavior of a warning message by using one of the following pragma directives. +You can disable this warning project-wide by passing the compiler switch `/wd6200`. If you want a more targeted solution, surround the code that generates the warning with: -- `#pragma warning(disable : 6200)` -- `#pragma warning( push [ , n ] )` -- `#pragma warning( pop )` +`cpp + #pragma warning(push) // save which warnings are enabled/disabled + #pragma warning(disable: 6200) // suppress this warning only in this block + // ... code that intentionally generates C6200 + #pragma warning(pop) // restore the warning state saved with the previous push +``` To learn more about pragma directives, see [warning pragma](../preprocessor/warning.md). From 36a1da921af5fc148ca039ebacd2f3fe0baa576a Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Mon, 12 Jan 2026 17:35:52 -0800 Subject: [PATCH 210/619] Fix code block formatting for warning C6200 Corrected the formatting of code block for disabling warning C6200. --- docs/code-quality/c6200.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/code-quality/c6200.md b/docs/code-quality/c6200.md index 9ec6fc83017..945df12b0be 100644 --- a/docs/code-quality/c6200.md +++ b/docs/code-quality/c6200.md @@ -75,7 +75,7 @@ Code analysis doesn't warn with just `rand()` because it doesn't have any inform You can disable this warning project-wide by passing the compiler switch `/wd6200`. If you want a more targeted solution, surround the code that generates the warning with: -`cpp +```cpp #pragma warning(push) // save which warnings are enabled/disabled #pragma warning(disable: 6200) // suppress this warning only in this block // ... code that intentionally generates C6200 From dfa0c167dd647b57506452e0f2a1ca96325877ab Mon Sep 17 00:00:00 2001 From: cdpark <15152924+cdpark@users.noreply.github.com> Date: Tue, 13 Jan 2026 14:30:05 -0800 Subject: [PATCH 211/619] Use vs2026 --- docs/build/customize-cmake-settings.md | 4 ++-- .../media/options-configuration-file.png | Bin 28009 -> 34449 bytes .../vs2026-cmake-manage-configurations.png | Bin 0 -> 10542 bytes 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 docs/build/media/vs2026-cmake-manage-configurations.png diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index 4634014ab9d..5312290a772 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -15,7 +15,7 @@ If you maintain projects that use a *`CMakeSettings.json`* file for CMake build To open the CMake settings editor, select the **Configuration** drop-down in the main toolbar and choose **Manage Configurations**. -![Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.](media/vs2019-cmake-manage-configurations.png) +![Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.](media/vs2026-cmake-manage-configurations.png) Now you see the **Settings Editor** with the installed configurations on the left. @@ -24,7 +24,7 @@ The left pane shows the installed configurations (x86-Debug). The right pane sho :::image-end::: > [!NOTE] -> If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. Under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. +> If a JSON editor opens instead of the **Settings Editor** when you select **Manage Configurations**, you need to enable the CMakeSettings mode. In Visual Studio 2026, under **Tools** > **Options** > **CMake**, select **Never use CMake Presets**, and then close and reopen your CMake project. Alternatively, you can choose **Use CMake Presets if available, otherwise use CMakeSettings.json**, and then delete the *CMakePresets.json* file from the project folder. > :::image type="content" source="media/options-configuration-file.png" alt-text="Screenshot of the C make options pane."::: Visual Studio provides one `x64-Debug` configuration by default. You can add more configurations by choosing the green plus sign. The settings that you see in the editor might vary depending on which configuration is selected. diff --git a/docs/build/media/options-configuration-file.png b/docs/build/media/options-configuration-file.png index 43f6ec1e6069799475335f9aff5e42a1a621478a..2a22a033a179ce9b580b0a94e87cdf06e20f29be 100644 GIT binary patch literal 34449 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 a+}zEMKESSae#HO*o6Ji^SgH8i5C0GL)4SpT literal 28009 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 NQc=)&RV8N@^gp9A Date: Tue, 13 Jan 2026 14:59:24 -0800 Subject: [PATCH 212/619] Change image name --- docs/build/customize-cmake-settings.md | 2 +- ....png => vs-2026-cmake-manage-configurations.png} | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/build/media/{vs2026-cmake-manage-configurations.png => vs-2026-cmake-manage-configurations.png} (100%) diff --git a/docs/build/customize-cmake-settings.md b/docs/build/customize-cmake-settings.md index 5312290a772..abcbfa224fc 100644 --- a/docs/build/customize-cmake-settings.md +++ b/docs/build/customize-cmake-settings.md @@ -15,7 +15,7 @@ If you maintain projects that use a *`CMakeSettings.json`* file for CMake build To open the CMake settings editor, select the **Configuration** drop-down in the main toolbar and choose **Manage Configurations**. -![Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.](media/vs2026-cmake-manage-configurations.png) +![Screenshot of the CMake configuration drop-down. Manage Configurations is highlighted.](media/vs-2026-cmake-manage-configurations.png) Now you see the **Settings Editor** with the installed configurations on the left. diff --git a/docs/build/media/vs2026-cmake-manage-configurations.png b/docs/build/media/vs-2026-cmake-manage-configurations.png similarity index 100% rename from docs/build/media/vs2026-cmake-manage-configurations.png rename to docs/build/media/vs-2026-cmake-manage-configurations.png From f300874275d4644f7eedb2ab590974797aa40b10 Mon Sep 17 00:00:00 2001 From: Eve Silfanus Date: Thu, 15 Jan 2026 11:30:05 -0800 Subject: [PATCH 213/619] Getting Started with GitHub Copilot build performance for Windows --- .../copilot_build_performance_windows.md | 193 ++++++++++++++++++ .../media/build-analysis-complete.png | Bin 0 -> 8173 bytes .../media/build-insights-options.png | Bin 0 -> 52877 bytes .../media/build-insights-permission.png | Bin 0 -> 10780 bytes .../media/build-menu-improve.png | Bin 0 -> 20425 bytes docs/build-insights/media/build-summary.png | Bin 0 -> 46290 bytes .../media/copilot-build-perf-select.png | Bin 0 -> 27834 bytes .../media/copilot-build-request.png | Bin 0 -> 17604 bytes .../media/copilot-improve-includes.png | Bin 0 -> 13898 bytes .../media/copilot-improve-prompt.png | Bin 0 -> 12298 bytes docs/build-insights/media/copilot-signin.png | Bin 0 -> 34001 bytes .../media/copilot-subscription.png | Bin 0 -> 28848 bytes .../media/copilot-usage-menu.png | Bin 0 -> 7298 bytes .../media/insights-improve-button.png | Bin 0 -> 13118 bytes docs/build-insights/media/model-select.png | Bin 0 -> 38362 bytes docs/build-insights/media/msvc-elevation.png | Bin 0 -> 15758 bytes .../media/solution-menu-improve.png | Bin 0 -> 6398 bytes .../media/terminal-permission.png | Bin 0 -> 10480 bytes docs/build-insights/media/vs-account-auth.png | Bin 0 -> 13967 bytes .../media/vs-installer-options.png | Bin 0 -> 19853 bytes docs/build-insights/media/windows-uac.png | Bin 0 -> 37564 bytes 21 files changed, 193 insertions(+) create mode 100644 docs/build-insights/copilot_build_performance_windows.md create mode 100644 docs/build-insights/media/build-analysis-complete.png create mode 100644 docs/build-insights/media/build-insights-options.png create mode 100644 docs/build-insights/media/build-insights-permission.png create mode 100644 docs/build-insights/media/build-menu-improve.png create mode 100644 docs/build-insights/media/build-summary.png create mode 100644 docs/build-insights/media/copilot-build-perf-select.png create mode 100644 docs/build-insights/media/copilot-build-request.png create mode 100644 docs/build-insights/media/copilot-improve-includes.png create mode 100644 docs/build-insights/media/copilot-improve-prompt.png create mode 100644 docs/build-insights/media/copilot-signin.png create mode 100644 docs/build-insights/media/copilot-subscription.png create mode 100644 docs/build-insights/media/copilot-usage-menu.png create mode 100644 docs/build-insights/media/insights-improve-button.png create mode 100644 docs/build-insights/media/model-select.png create mode 100644 docs/build-insights/media/msvc-elevation.png create mode 100644 docs/build-insights/media/solution-menu-improve.png create mode 100644 docs/build-insights/media/terminal-permission.png create mode 100644 docs/build-insights/media/vs-account-auth.png create mode 100644 docs/build-insights/media/vs-installer-options.png create mode 100644 docs/build-insights/media/windows-uac.png diff --git a/docs/build-insights/copilot_build_performance_windows.md b/docs/build-insights/copilot_build_performance_windows.md new file mode 100644 index 00000000000..d5024193c4d --- /dev/null +++ b/docs/build-insights/copilot_build_performance_windows.md @@ -0,0 +1,193 @@ +# Getting Started with GitHub Copilot build performance for Windows  + +The GitHub Copilot build performance for Windows analyzes your C++ builds and highlights expensive headers, templates, and functions so you can identify and fix build time bottlenecks. GitHub Copilot integrates seamlessly with Visual Studio, reducing complexity and improving developer productivity. + +## Prerequisites  + +- Windows 10 or later. +- An MSBuild or CMake project. +- MSVC Build Tools version 14.50. + +## Installing Visual Studio 2026 + +To use GitHub Copilot build performance for Windows, you must install the latest available **Visual Studio 2026**. + +[Installation Guide](https://learn.microsoft.com/en-us/visualstudio/install/install-visual-studio?view=visualstudio) + +Visual Studio 2026 supports **side-by-side installation** with older versions. You do not need to uninstall previous versions or other release channels. Installing Visual Studio 2026 will not interfere with your existing development environment.  + +### Before you begin  + +After installing the Visual Studio Installer, ensure the following components are selected under the **Desktop development with C++** [workload](https://learn.microsoft.com/en-us/visualstudio/install/install-visual-studio?view=visualstudio#step-5---choose-individual-components-optional:~:text=proceeding%20with%20installation.-,Step%204%20%2D%20Choose%20workloads,-After%20you%20install) during installation: + +- C++ Build Insights +- C++ profiling tools +- C++ CMake tools for Windows (required for CMake projects)  + +:::image type="complex" source="./media/vs-installer-options.png" alt-text="Screenshot of Visual Studio Installer showing selected options for Desktop development with C++."::: +The list shows C++ Build Insights, C++ profiling tools, and C++ CMake tools for Windows are all selected for installation. +:::image-end::: + +## Verify GitHub Copilot subscription + +GitHub Copilot build performance for Windows is available to users on GitHub Copilot Pro, Pro+, Business, and Enterprise plans.   + +- Verify your subscription  + + - Log in to [https://github.com](https://github.com/) and access the [Copilot features](https://github.com/settings/copilot/features) + + - Your plan type will appear near the top of the page.  + +:::image type="complex" source="./media/copilot-subscription.png" alt-text="Banner in GitHub settings indicating Copilot Enterprise is active."::: +The banner shows buttons for Copilot in IDE, CLI, Mobile, GitHub.com, and more features. +:::image-end::: + +- Authenticate in Visual Studio 2026 +Before proceeding, ensure you are signed in to your GitHub account in Visual Studio. + + - Click on your profile picture in the upper-right corner of Visual Studio to confirm your GitHub login status. + + :::image type="complex" source="./media/vs-account-auth.png" alt-text="Visual Studio account dropdown showing GitHub EMU account."::: + The dropdown displays the GitHub EMU account with active status and sync indicator. + :::image-end::: + + - If you are not signed in, open the GitHub Copilot Chat and follow the sign-in instructions from the pop-up window. + + :::image type="complex" source="./media/copilot-signin.png" alt-text="GitHub Copilot sign-in window with authentication options."::: + The window shows options to continue with GitHub or Google, and links to terms and privacy policy. + :::image-end::: + + - Once authenticated, you can verify your plan by selecting Copilot Usage from the dropdown menu under the GitHub Copilot badge. + + :::image type="complex" source="./media/copilot-usage-menu.png" alt-text="Visual Studio dropdown menu under Copilot badge."::: + The menu lists options like Copilot Usage, Open Chat Window, Settings, Learn More, GitHub Copilot Walkthrough, and Manage Copilot Subscription. + :::image-end::: + +### Enable Template Collection + +Template instantiation time collection is off by default to minimize analysis overhead. To turn it on: + + 1. In Visual Studio, go to **Tools** \> **Options**. + + 2. In the **Options** dialog, expand **Build Insights** in the left navigation. + + 3. Select **Collect Template Instantiation**. + +:::image type="complex" source="./media/build-insights-options.png" alt-text="Visual Studio Build Insights options dialog."::: +The dialog shows trace collection settings with the Collect template instantiation checkbox selected. +:::image-end::: + +*Learn more:* [Troubleshoot template instantiation impact on build time | Microsoft Learn](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/build-insights-template-view?view=msvc-170) + +## Workflow + +GitHub Copilot build performance on Windows is available via the GitHub Copilot chat pane. Users can access this functionality through the Agent feature within the chat interface. + +:::image type="complex" source="./media/copilot-build-perf-select.png" alt-text="GitHub Copilot chat pane showing agent selection."::: +The pane shows GitHub Copilot build performance for Windows selected to optimize C++ build, with other agents listed. +:::image-end::: + +Before submitting a request to the GitHub Copilot, select your preferred model. + +:::image type="complex" source="./media/model-select.png" alt-text="Dropdown menu in Copilot chat for selecting AI models."::: +The menu includes GPT-5, GPT-5.1, Claude, Gemini, and other available AI models. +:::image-end::: + +Instruct GitHub Copilot to improve the build performance of your selected project. You can add additional context and information so that GitHub Copilot can create suggestions that match the needs of your project. + +:::image type="complex" source="./media/copilot-build-request.png" alt-text="Copilot chat window with build performance request."::: +The window shows GitHub Copilot build performance for Windows with user message requesting build performance improvement for the project. +:::image-end::: + +### Enable Build Insights + +To analyze the build performance of the selected project, Visual Studio needs elevated permissions. The Build Insights tool needs to be enabled for a first-time user to kickstart the build performance analysis. + +*Learn more:* [Build Insights needs additional permissions | Microsoft Learn](https://learn.microsoft.com/en-us/cpp/build-insights/elevate-note?view=msvc-170&f1url=%3FappId%3DDev18IDEF1%26l%3DEN-US%26k%3Dk(bi_permissions)%26rd%3Dtrue) + +:::image type="complex" source="./media/build-insights-permission.png" alt-text="Visual Studio dialog asking to run Build Insights tool."::: +The dialog requests permission to analyze build performance, with Confirm and Deny buttons. +:::image-end::: + +A one-time elevated request is then needed to capture the MSVC compiler traces. + +:::image type="complex" source="./media/msvc-elevation.png" alt-text="Microsoft Visual Studio dialog requesting permission to capture MSVC compiler traces."::: +The dialog shows options for Yes and No to allow trace capture. +:::image-end::: + +:::image type="complex" source="./media/windows-uac.png" alt-text="User Account Control dialog for Windows Command Processor."::: +The UAC dialog asks to allow Windows Command Processor to make changes to the device, with Yes and No buttons. +:::image-end::: + +If the one-time elevated request is denied, the Build Insights operation is cancelled due to lack of rights to continue. + + +You will guide GitHub Copilot through the process of improving the build time by providing permission, as needed, to run tools. Additional permissions may be required to run PowerShell scripts. + +:::image type="complex" source="./media/terminal-permission.png" alt-text="Copilot chat window prompting user to confirm running a terminal command."::: +The prompt shows options to always allow or allow in this session. +:::image-end::: + +The GitHub Copilot build performance for Windows goes through multiple iterations of code implementation to make the build faster. + +:::image type="complex" source="./media/build-analysis-complete.png" alt-text="Screenshot showing analysis complete status and performance improvement summary."::: +The display shows build time improved from 78.6 seconds to 70.5 seconds (8.1 seconds faster, ~10.3% improvement), with a note that further improvement is possible. +:::image-end::: + +After GitHub Copilot completes the request, a summary of the changes and build performance impact is displayed. The build performance summary changes depending on each iteration of the agent. + +:::image type="complex" source="./media/build-summary.png" alt-text="Screenshot of build performance summary showing before and after optimization metrics."::: +The summary displays top bottlenecks and quantitative results of the performance improvements. +:::image-end::: + +In this case, build time dropped from **110.7s to 34.1s** after enabling precompiled headers for costly includes, delivering a **69% improvement** and **3.2× faster builds** with near-instant incremental rebuilds. + +### Additional entry points + +The GitHub Copilot build performance for Windows can be accessed through other entry points. + +- Button from build menu + + :::image type="complex" source="./media/build-menu-improve.png" alt-text="Visual Studio Build menu with Improve build performance option highlighted."::: + The menu shows the Improve build performance option under Run Build Insights. + :::image-end::: + +Clicking the Improve build performance button prompts GitHub Copilot chat + + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with Improve Build Performance prompt."::: + The window shows GitHub Copilot build performance for Windows ready to assist with optimization. + :::image-end::: + +- Button from solution context menu + + :::image type="complex" source="./media/solution-menu-improve.png" alt-text="Visual Studio solution context menu showing Improve build performance option."::: + The context menu displays the Improve build performance on Solution option. + :::image-end::: + +Clicking the Improve build performance on Solution button prompts the GitHub Copilot chat + + :::image type="complex" source="./media/copilot-improve-prompt.png" alt-text="Copilot chat window with Improve Build Performance prompt."::: + The window shows GitHub Copilot build performance for Windows ready to assist with optimization. + :::image-end::: + +- Button from Build Insights view + + :::image type="complex" source="./media/insights-improve-button.png" alt-text="Build Insights diagnostics session view with Improve button highlighted."::: + The view shows the diagnostics session with the Improve button available for optimization. + :::image-end::: + +Clicking the Improve button prompts the GitHub Copilot chat. This button uses data from the existing build insights trace results and does not trigger a new build insights tool execution until the current proposed changes have been processed. + + :::image type="complex" source="./media/copilot-improve-includes.png" alt-text="Copilot chat window with GitHub Copilot build performance for Windows focusing on includes optimization."::: + The chat shows a user message focusing on improving build performance of includes. + :::image-end::: + +## See Also + +[Build Insights function view](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/build-insights-function-view?view=msvc-170) + +[Build Insights included files view](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/build-insights-included-files-view?view=msvc-170) + +[vcperf and Windows Performance Analyzer](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/vcperf-and-wpa?view=msvc-170) + +[Windows Performance Analyzer basics](https://learn.microsoft.com/en-us/cpp/build-insights/tutorials/wpa-basics?view=msvc-170) diff --git a/docs/build-insights/media/build-analysis-complete.png b/docs/build-insights/media/build-analysis-complete.png new file mode 100644 index 0000000000000000000000000000000000000000..10bd55a02352caef4752fc5807a83412cfd5f838 GIT binary patch literal 8173 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 j{O@NX|5x+N!X7OCOVPUCGU_W?x9JoK} zr)v#mVd417{2W2~7Q3*ph*j%p-mwUFSjWQyAWNB)Uzqk4Y_;XVt%0o*en~w}M>Taa z(o{1ChFNRgI-WBU+48jVy2D;`aO8X_>WB2YvQdVXNPyFo2fAM4p5yYoAoKmd)?LRwOW0^|p z(e|Uyop9TdVH_Yr8Jt1}N%VtF!YZPXj!dyw^cogH+h5Mh_jQYw?r76KVYqV4Lh*8O zvt6pyn#Igb+Rf!>p3)t5+^V#xGVM1)qznCClSf&eRf{fk?s0|f!*Us%W=*IAGJ~3$ zH)iX@FpL>g(maLU+c3K^K8V8cO;#d!WHVSKMIumS>g77=vf3)yLz~ zN{B_F0c$^Q38)4dg25&pFBCoR%pF>!jdnM*SY5frf4tAcI+lW zsTy=Tlzc63pk||fBk@dn!Nq!5)A(|V>k_E}Tt&o!8^vb$CdD)sRv)}Aq-V!BrygN> z_TEKa8NOFAqeW*}IqpMIAPvyPHRjs0uxJ};zu08(4=AMOOAro9oHMJoj>9x->)ai( zE@aBsLqFe_oZjfU-PWF2+H|m?E7%$~>(saOMNH9Qrl?pxN>}=Di5oYOO1#}2xnAz) z>-?wGRR?|%8?t&z@Y;?R#nH9~R%J`t->(nmwvzgj+ek z??W2yXHQ?w6mfVG0v;*uO8!Q!&-j?S13Pfai~o+xKAe$wBUxMCygyAplb&|B>fzG% zMO4iDgUM}o+vxk~G5brDi0>Ae70vZHs4aaEGiH|z(bw6oS0!ek1HZduw)se08&DJ} z>4-ouA2%7p;q8vEq~d~IEc2ziw>-x8-+;`T!8N|IVik5CY->=As?Z9GtF!VRyB00? zDBth4sp+4q4+bx(g-8(;ztiGWvKuaXjOB(@zmVBHWwBzH^!66Fcq~`b63_RfcvkKX zgd#Ytw6;H!`024ph6DL>eV!B-tR@6!`N4I`YdY83%)r)#?V2;k$_f62Z(zldMst#q z;86LQgwqi>Yr`h+JerZuAFuu$C5+^K%AgSh)cT&7d)~=zZ?fuJ7<==8vtRROEVc&31XOK923_!tMSgadDd!-B&*> zZ?zEQ-ofTH3hsq?-!6y7nT3GhU~9Z)Eu_Xo!Fb-Mh^&MUOr41Sy+>4 zE(cyYkuo%UKr!ezyT^cf`)VE~1!!UDPnR+bE|Z2``zy{Acu#ez5u6hNlcuM0x z(f{V&=aM;$Psu$0s7M%ASFfAwnoc@phF_KR32bkoK~$9*)^zj3GJY+V4zRE+-UY0G z0=`$&0=Sj}KYjfjc>B8aytN|*zFMDUN}=WJrO-F37~kzhybBs*mQ`l>vXX@Fdp;j6 znoTSgiV$`@UVDD=N>E+F&9}ckOx5b~jTCL0Rz6#{v1FUPZVrogHAF-?v^;R$tv0T1 z^C^>m|EXd--X4dOHQ=}FT@D1rhGje#5%bNun|4dsaF6f#hlR_P#$PK=usEIWbN5sC zNGkB^Yv=IEA+jv_niKoED#dfjE#6JTZ=k` zX6KaiNQ)mpLzhjB`j42v8lX7*h|=}_OMuGXa`IuM+icW=Sksk>^-pQJ|e@Xw?r{ytX2{A440Gpc|eQLVd5i57N z$3B^ETb5N+s!+BRpA$X_xGz*g*%#-xOf#d%42~6t<5g|M>kohITwXn!=K0ZZbRtVn zG?d?#eVg;+yUf35i1JC^T5K=H1K*Yj?AnBlofdH0bv3bf@2`Mh8cykO1l=Fv6B~MF z$P;FW8rqK*H@xZA+)whifqDs>OM-|O1X)4DpkpkvN@KILvp+kiqV)|8`bih1Y!)53 z^Qv|_wlJJ+<(wMI!g~878Z<5`2JZAB^(I_l>%ord{x8n>)yAq0ndq>23KAaw*gh>S zeDl@k564*?lX$AC!Szqip%@GsDQyY~)jshoUS}I2m5_y*0KE1mjRC{U zyyN?UmhKM^hX#40Bw3er;{crX*29`}z`Mupr4Mj#n63Dm9< z0;%TGJ1S2!kEiyK*8V02L5P%K**y;+!z&|CFJ>J39DEM|i#>Jar~hDr-nXFt61BZ| z^E$$!e9M-d<%;=#puI0pU_OAB)^Z8|Z`k)=V#5DHrihzJSxD8|sb@4cst3a1mzIyyRC1zISHe#*lHoM&B~ zoNmi>9MlYeckGhizh7Ca#RT%a`l)thbl_IU?tJXY?@WA~aP;}JLc_FNPK^W8PNzX6 zt`q9#L->G6lZ*MxRJd+uvXz6FUML{>RM};<69i!9St6@U5t&B8@=Rnvg>YG{^sDMQ zOlLFlDjS?BcS*IJi8_7Pc}M&N=69CxZ0*|r0nq=Q#rO&Hqc4B-^(2i|;66Qkq3Dgv zA9o1rw`T=j#H$p}pV6^3Y+zI8o~Y4Q1MXMllt4xRKg1n%Z&T8bOy);pyq6+M5|d6fE~*S4Yeg8;EQe!2QNn3`srsPAdUa0&%V!Z-VsU>l2i z$B!OCZ6wM*ZXlCZ#y@|4#>U1rIx~~QhbhK(THk>@woG$D7nm#8)zj{7NPh3i?M{7nBVfK4EB;Ax$I}sQji<$zp^&Em+jze# ztK2ag#a`zN+}zxK7>t#*by{dx7~y4q zM`nwZL95krmp!7`2hhmG>?9B}2UIC)c)zb_Y+3^=Qe+$}fn^)D7m+ahbl<>I-T*?X zYq^4af2yq2STsn_c1>;D9zAMrmHyPH_ST*CrZP)=h*7DGL6vmx2dBIgR(%WG(F?u) zLc9-(7DOfL!dO>Dz6x|4K6lbGc?0^gM?E}jwOE=qeQ#=SRovWXYrlZ)#35zRe@n$8 zOyQ`Abnm#7^;6h6%?N877+~E!tTU_xUnDg}FnIO|_r;6i8XE8)Ru3QMklShGxbGo8 z*7#D1Gt>;WqeqVG$9vf;n;N9vs)f|LVolq(+7w!R8}8S}hy70Dqv`-@A-r43~d z6ug$3V_h|A4K^_D@nY!0;I>qmA-}4ZysDlr&F`fKki!M(K}awA9$2Ok-_?bb!i+3p zDi{1ie+ZaW@dLT=_1){rGcB;PtWcs@#e?d*J5x~1rz&m<%N47R{ba$=m8(02W*3zgomJim6zg@8V_Sm9EZU+vW^O(tFa5|7xP#b4JLKLZdbChaE&D9r@Hh&{ApiU`vRWZHLgZES6+W46A{ zvD$4vzpyi1cbLEScU!J>Lfcg}Z@u~Vf15@=ZJ-KJ5-svq_tMG@{*1^gqo)1Hu8n|C z-AS2v#9cndWdt#^Dw{VUsE5J?+JCEI4p2kkN1tIMC4Bz$w1a&R9=1=k>L_icwA;cr zmEd_TEubKOZ+r^`a3N#sjWcA2}evr{CvVAbVED{Odh#(Ea<5iSkslCp(H*h-7UZBw&mVUwwp`j(fQ z*gQh5N&Rn;WW_r}%+1ZeSX=k?^=<8ws#N{#s*6V=@#US@@gs1=4jA}l2ncUz3{N~*Ob97DDBtVfS5RZLa5w(e6G ziBUPSmr7$HmO^@ye}A`xrq;P;>!GK>qiGkBnA^7{LOnobKlpvAzj4cy}rc?ae?L$w?>O#(lYCx!)*O%0k zXR4ib7G)v^GF6o}7<-!p)Ye}e2ODUcde7vsa_c;=Dx_u7RwJC&c#8FCqU;Cds5h~~ zaQw()TxoLS)5h0c4f%)Tc7R7cxJK}hN*bMR0?>lgcZdVc zH*em6pv!UUj6Do#E=I`G-@m%`Pp0gT<9dHHbi4^|tOOOzZ_@6p(0`jN{O_}j|K2}o znzmGVBipIs>|10AM|WLGC{A9==X8tJ-k2Zi;uE`!0C3x-%FM$7uS3*4_$-i-#Jh6M z@p^NuK9IZmqv^p&A*4(yc72JOu}ifcwgekJzkP+Y&dNyl>kP4_*8RoP2E=p!D1L1F zt0G8av(?q(%sBsJ@&yN|YL6M{Up*Cx!y{hMh6v@8!u>T3n$=lY{!OlJ|f@t3h$v(545;N8D8EZ#_{g9`sQ zgy0I(5Pi2vy7JU0?7su;_3P%*@?ntY4nj1%samSJfHgQws1Bn|CSxSXh&@iOAE_b8U^L z_VbN8ZGo@bW?+WDx>YqdpBfS;=bqfy*_X%3=J-+EhPDQa#)47l?#-#BEBLT0i558U zGLE;99GI>hV9)!54F+w#f<`s!=m8 z({oIN=HW6?ODak)iEa2eZK44?&~Vr@(TEr;M-U~sCb~zp9*0%gSB^h%l*by{GoIud z0>W-zvhSXz)On12&s|3*F8LtTTc-gx+wUKKT?ch8f%aocW5>twLaVwb<9aE1+dmB7 zNc$j+1`CE=!&Gu+o*?YKax4l)3sVx*2`2|W+U7dzH}tQNMAsX_1CePU7&2sRIxu6W z%QnTmnFjJ>s3nDc7I80f@sJ?^S>fiZo*Pa881T2MXemwKS|plEX91ue z+ag}le6^zU?=dNspX*|T$?`R2# zw^g<08oT&c?Ep@Z#NszEap2+wz|XYg$fiIF_xEdZ-ZbUgjBCO^Vay+uj7z0ikY8Bz z#edV?aZbkSRCc1B^Kh!yB5O{7u!DzlLgNhTRlehJ$8KSrb02Gfj-;(_?D*m7X24Jbw zd6|Tk0pv8h1G!9-kk{TW*`;_{JnUM(TehQ7&+JsqDR}^>Zqf&>?nYpW>&qT21>W6j zJ6>v*8h_&64UN#PfZPi_VXd3@?!&)Z8I|ZZa4wlxB|`P$f~hwPjV3)?uT2^@Bm`41 z(X;WQ;uWO$5SEt%CK+i@PZgFahi923Ry)gNRh~OD>Hp^8-*%~B)Cglqeo9g2M+$ku zh7E+q+MK6Rmvu!|bsWgg^Iv)ibGrjBt?kRCq`U_f_5&o6WP?xAv-I7Gc&k5=*fSbA z<(O7AwGNWmh~!Z7mXLH1z+qDhf#mod_z#DOFy`is_b&4G7d?FUaUN z?zwrsH(q7#@KQ_>sOTwKt--2h|Av~|$wvEpKek7jom=zY(DsBcBgmWIBV2_{0#3ZR zC+^J~kFUYrkx#$w;wK$lXkiiT;#=&dwm*NGadc`%aJ6Iu6bgd3jN5`+H>@hmAzPov z{EQDb+^FS==qi4rj2G$TwtxkApSYPlDQg;rO@0OKN zqum3d7EynJa4#XnZcHkfb|tw+c+OSB8$0qo)v9!CW1uId#~wZ0syH%{GVbP^KVH?O zZ9A`)I?}9zB&(j2S&yA7fRcxk%b+O($g`;^>-47+FC*n2zJRs{wNcaB2Ms0fZ@$)s z^LhKuR6W+BmU8A%no`lyw6&^?wW>+nj#80)kY{DW*YE8n0<9^%K(0ofJ*Q{WAW@1^ zBqsm)!NjUEAwu4zMhZ$rUmXYX0(XFoITY9_X$sLAKBCv065CSnR4CspP~_!g!b!!_ z9F>3w9r$rXd_dz8b%JE<=5Ig{q_$8rUwSzPzZ+;au#z6IZrS;w8|-nf%&9(0?bqV& zC00JyFKmRw@REheyN=aO?RR?-j+Kw7?hLvhYFz%+M)?Ku$ydhD{o$E%BBT6>2gL;S zY4y=|$5ybqyKwX7y6WiQ+5z!~5-Kq_gdf}CmDWPi&pguN757=U;OSaPkG1L>&6ksA ziH;mOzFD&4Y-!CWWIF*vxsjf+V49&_Rrz&Xs`?-M)KuJd{^I;vwv*J51P7fj{(2NTr&yW6 zKuJv?#S+@4A^jf6_lUz}Jl}s!Xps#Xy zzpW0tat6SLxMcBRLH+%>=9u^WE!`@Zk};`k0}b!z0jsk%ku@#io%059kV=-cm7 zLfSf|RKYqY+1@SADi7cPwBM`y%m;4on~W`kkIU)^+Bi(>iw$Kb-9(FzbQhL>2yr%N zDkwMeyudrF)rJBQ)Dx-aw{M3?1fjyQX(ft1-@tDhRw8iY(O!jrxla^(ec8--gn#d1 zTf&4c)N5R@r?p??{4^0UFIO`?mb&9zYI+s%V79ilqI${6$z;gSYNv%q$)gv$)NZr5AOKe3?1QTct~X{b&=t}#(?e4` z!J1*$-u+A3#??XyZ{zO|muESJNjZ1Jn_~gzt{$cXoneuEF&loFy`Syvi*R|TD0W5Z z_%zp^I*5et68RVPM!{U~zm7YlC~bM=?5vma6`c)2szJTzy}k11&yGrj1~}@F3kAQf z@b|k>+{yg6A16XN0JOTuqQWeu_{@9ve_CSk|CRgzCn(weGI2%q^^hbBYwJ}9fTOQj zs}h9CbUxVFP{JGB1ynK>d-G*JAI~JAwXJOmDIS&ePu&HRpLaU_DQo~yskY>BT&T6u zwPrDg(3YS79eGN9Y+~Yi!8x9h-?NIl`tO#AgfGp$=t`F(oU(^ug8~MF_o0%Xn|_y_ zJlfJ|u!An!%>@HpPr+jdyi+rydda4BhfSev!%IN@;BDp5Gr`v82UhrldsMDs!e6V5 z9G`aats}jMEqm3GLH;hh%w+WMn}z0_4v=zwC5-7;iH@MG{iRN-Jj38kTzLX3fitAruiUkgS%c(!{dy(?}oalI!AP>s06exT*=L5?g z?gYHBir}i@F5QQTJ(#K4*rFl=SAUvx*SalX&A8~A`?5euefli}R69Jv-Ig;DG$SGS+c8;W|HAho&V<6Mh;@hc zSA9k^ZCf+-fyPhzUck!lD2?gX2hyK@H4~uGsfkmrBwWl^pG3zXI9fY;=iqJ($DwwN zkfi?;;dJKU!0+tIvHBs^6FTlY=~FvBXhwxv0)spxMsY36c8>7Tl~(i z>$V9D-qpj#jrJUfK|z*amm@s@)kJyKpEW+Jah8as`}bd`O5$@7k>IU4pweZl9-^ch z)~Kppd?rkw3C_W<+~f$>+98g4U5-VGG9`I?-Wi0gwi0itlrQ8Nso4lvhsimc30l%lz?u9l=tzjmJ$q4>K;UsPb(dS>+*B z2E=JJwdCGG4gXPi%(3;J0hL1hWNw?~#oSyF$5@8{leVkO!J45`4s6ZjJg(|X;@CG^Tm-}i0kHfa{BF&vMStKS~`@$2{k zH*+t){qjNtUbDx>+&un8<*K{08$Gk?s&6}frI=C**PAIRUQkYGL4r;pBc{dGxLFac za`uPdfyd#z56Y240kGZf=6JQ{#|2{-1+Y8g3dN}8BK7HWK>gUWKf?6C*5mSDmu0Ga z^V;D!Q(6bCF5MzRaaN1o20Mb zH&u4MjgCqob@$8FO~eRogH$K;<>w#K!c$XITdlMPe>+CUv>s=k-vw;562~;?j$DCj zM}HG#;W>a$V>+6d!rI0E_~|Nzq%i_`siC>AoJKvL?f&tp@c*mqZWGYJO|~DK8O~4m ze6pZ%MkU={-~Yo4|5IJ3@^&a|a}%TCn6%Y<1JPu~JO$MK^1&3oYweb~&uFpU!cG#+juO zl}&d6ay`EM?EnYc3>D_ z^#?fBkA0w^U+`Shna)*w2Ua^OFYcr*NdN!< literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/build-menu-improve.png b/docs/build-insights/media/build-menu-improve.png new file mode 100644 index 0000000000000000000000000000000000000000..14fd3cbe2fa457f0ee7d88aa7a4a841391cba13c GIT binary patch literal 20425 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 G9s3V$;Qb%~ literal 0 HcmV?d00001 diff --git a/docs/build-insights/media/build-summary.png b/docs/build-insights/media/build-summary.png new file mode 100644 index 0000000000000000000000000000000000000000..fc7e0a51bffa026ae5b0e644ff964911510f43f0 GIT binary patch literal 46290 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